From e3f5b4cf1a06d0c07476071972f733abd3ad09a5 Mon Sep 17 00:00:00 2001
From: Diego Pasqualin <dpasqualin@c3sl.ufpr.br>
Date: Thu, 15 Aug 2013 10:52:42 -0300
Subject: [PATCH] le-pregao-712010: Using dkms to compile wireless module

Signed-off-by: Diego Pasqualin <dpasqualin@c3sl.ufpr.br>
---
 .gitignore                                    |    1 +
 le-pregao-712010/VERSAO                       |    2 +-
 le-pregao-712010/pacote/DEBIAN/control        |    6 +-
 le-pregao-712010/pacote/DEBIAN/postinst       |   32 +-
 le-pregao-712010/pacote/DEBIAN/postrm         |    4 +
 le-pregao-712010/pacote/DEBIAN/prerm          |   10 +
 le-pregao-712010/pacote/etc/init.d/pregao71   |   30 +
 le-pregao-712010/pacote/etc/rc1.d/S99pregao71 |    1 +
 le-pregao-712010/pacote/etc/rc2.d/S99pregao71 |    1 +
 le-pregao-712010/pacote/etc/rc3.d/S99pregao71 |    1 +
 le-pregao-712010/pacote/etc/rc4.d/S99pregao71 |    1 +
 le-pregao-712010/pacote/etc/rc5.d/S99pregao71 |    1 +
 .../LICENSE ralink-firmware.txt               |   39 +
 .../lepregao712010-2.3.0.0-Alpha-v2/Makefile  |  227 +
 .../README_STA                                |  456 ++
 .../RT3060STA.dat                             |   58 +
 .../RT3060STACard.dat                         |   19 +
 .../chips/.rt30xx.o.cmd                       |  813 ++
 .../chips/.rt35xx.o.cmd                       |  813 ++
 .../chips/rt30xx.c                            |  547 ++
 .../chips/rt35xx.c                            |  249 +
 .../common/.action.o.cmd                      |  814 ++
 .../common/.ba_action.o.cmd                   |  813 ++
 .../common/.cmm_aes.o.cmd                     |  813 ++
 .../common/.cmm_asic.o.cmd                    |  813 ++
 .../common/.cmm_cfg.o.cmd                     |  813 ++
 .../common/.cmm_cmd.o.cmd                     |  813 ++
 .../common/.cmm_data.o.cmd                    |  813 ++
 .../common/.cmm_data_pci.o.cmd                |  813 ++
 .../common/.cmm_info.o.cmd                    |  813 ++
 .../common/.cmm_mac_pci.o.cmd                 |  813 ++
 .../common/.cmm_profile.o.cmd                 |  813 ++
 .../common/.cmm_sanity.o.cmd                  |  813 ++
 .../common/.cmm_sync.o.cmd                    |  813 ++
 .../common/.cmm_tkip.o.cmd                    |  813 ++
 .../common/.cmm_wep.o.cmd                     |  813 ++
 .../common/.cmm_wpa.o.cmd                     |  813 ++
 .../common/.crypt_aes.o.cmd                   |  813 ++
 .../common/.crypt_arc4.o.cmd                  |  813 ++
 .../common/.crypt_hmac.o.cmd                  |  813 ++
 .../common/.crypt_md5.o.cmd                   |  813 ++
 .../common/.crypt_sha2.o.cmd                  |  813 ++
 .../common/.dfs.o.cmd                         |  813 ++
 .../common/.ee_efuse.o.cmd                    |  813 ++
 .../common/.ee_prom.o.cmd                     |  813 ++
 .../common/.eeprom.o.cmd                      |  813 ++
 .../common/.mlme.o.cmd                        |  813 ++
 .../common/.rt_channel.o.cmd                  |  813 ++
 .../common/.rt_rf.o.cmd                       |  813 ++
 .../common/.rtmp_init.o.cmd                   |  813 ++
 .../common/.rtmp_init_inf.o.cmd               |  813 ++
 .../common/.rtmp_mcu.o.cmd                    |  814 ++
 .../common/.rtmp_timer.o.cmd                  |  813 ++
 .../common/.spectrum.o.cmd                    |  814 ++
 .../common/action.c                           | 1134 +++
 .../common/ba_action.c                        | 1798 ++++
 .../common/br_ftph.c                          |  212 +
 .../common/client_wds.c                       |  204 +
 .../common/cmm_aes.c                          | 1145 +++
 .../common/cmm_asic.c                         | 3346 ++++++++
 .../common/cmm_cfg.c                          |  434 +
 .../common/cmm_cmd.c                          |  178 +
 .../common/cmm_data.c                         | 2950 +++++++
 .../common/cmm_data_pci.c                     | 1616 ++++
 .../common/cmm_info.c                         | 3995 +++++++++
 .../common/cmm_mac_pci.c                      | 1680 ++++
 .../common/cmm_profile.c                      | 2309 ++++++
 .../common/cmm_sanity.c                       | 1660 ++++
 .../common/cmm_sync.c                         |  841 ++
 .../common/cmm_tkip.c                         | 1015 +++
 .../common/cmm_wep.c                          |  342 +
 .../common/cmm_wpa.c                          | 4081 +++++++++
 .../common/crypt_aes.c                        | 3504 ++++++++
 .../common/crypt_arc4.c                       |  152 +
 .../common/crypt_hmac.c                       |  142 +
 .../common/crypt_md5.c                        |  756 ++
 .../common/crypt_sha2.c                       |  715 ++
 .../common/dfs.c                              |  483 ++
 .../common/ee_efuse.c                         | 1590 ++++
 .../common/ee_prom.c                          |  272 +
 .../common/eeprom.c                           |  104 +
 .../common/mlme.c                             | 6766 +++++++++++++++
 .../common/netif_block.c                      |  146 +
 .../common/rt2860.bin                         |  Bin 0 -> 8192 bytes
 .../common/rt_channel.c                       | 1353 +++
 .../common/rt_rf.c                            |  216 +
 .../common/rtmp_init.c                        | 4225 ++++++++++
 .../common/rtmp_init_inf.c                    |  374 +
 .../common/rtmp_mcu.c                         |  570 ++
 .../common/rtmp_timer.c                       |  334 +
 .../common/spectrum.c                         | 2298 ++++++
 .../common/vr_ikans.c                         |  335 +
 .../lepregao712010-2.3.0.0-Alpha-v2/dkms.conf |   11 +
 .../include/action.h                          |   68 +
 .../include/ap.h                              |  533 ++
 .../include/cfg80211.h                        |  265 +
 .../include/cfg80211extr.h                    |  156 +
 .../include/chip/mac_pci.h                    |  465 ++
 .../include/chip/rt2860.h                     |   67 +
 .../include/chip/rt30xx.h                     |   49 +
 .../include/chip/rt35xx.h                     |   65 +
 .../include/chip/rtmp_mac.h                   | 2304 ++++++
 .../include/chip/rtmp_phy.h                   |  636 ++
 .../include/chlist.h                          |  118 +
 .../include/client_wds.h                      |   68 +
 .../include/client_wds_cmm.h                  |   55 +
 .../include/crypt_aes.h                       |  235 +
 .../include/crypt_arc4.h                      |   71 +
 .../include/crypt_hmac.h                      |   90 +
 .../include/crypt_md5.h                       |   90 +
 .../include/crypt_sha2.h                      |  158 +
 .../include/dfs.h                             |  138 +
 .../include/dot11i_wpa.h                      |  298 +
 .../include/eeprom.h                          |   82 +
 .../include/firmware.h                        |  558 ++
 .../include/iface/rtmp_pci.h                  |   99 +
 .../include/link_list.h                       |  134 +
 .../include/mlme.h                            | 1360 +++
 .../include/netif_block.h                     |   57 +
 .../include/oid.h                             | 1294 +++
 .../include/os/rt_linux.h                     | 1113 +++
 .../include/rt_ate.h                          |  348 +
 .../include/rt_config.h                       |  156 +
 .../include/rtmp.h                            | 7270 +++++++++++++++++
 .../include/rtmp_chip.h                       |  356 +
 .../include/rtmp_cmd.h                        |   98 +
 .../include/rtmp_def.h                        | 1743 ++++
 .../include/rtmp_dot11.h                      |  146 +
 .../include/rtmp_iface.h                      |   85 +
 .../include/rtmp_mcu.h                        |   55 +
 .../include/rtmp_os.h                         |  104 +
 .../include/rtmp_timer.h                      |  165 +
 .../include/rtmp_type.h                       |  167 +
 .../include/spectrum.h                        |  239 +
 .../include/spectrum_def.h                    |  260 +
 .../include/vr_ikans.h                        |   72 +
 .../include/wpa.h                             |  497 ++
 .../include/wpa_cmm.h                         |  244 +
 .../iwpriv_usage.txt                          |  303 +
 .../os/linux/.pci_main_dev.o.cmd              |  813 ++
 .../os/linux/.rt3562sta.ko.cmd                |    1 +
 .../os/linux/.rt3562sta.mod.o.cmd             |  442 +
 .../os/linux/.rt3562sta.o.cmd                 |    1 +
 .../os/linux/.rt_linux.o.cmd                  |  813 ++
 .../os/linux/.rt_main_dev.o.cmd               |  813 ++
 .../os/linux/.rt_pci_rbus.o.cmd               |  813 ++
 .../os/linux/.rt_profile.o.cmd                |  813 ++
 .../os/linux/.rt_rbus_pci_util.o.cmd          |  813 ++
 .../os/linux/.sta_ioctl.o.cmd                 |  813 ++
 .../os/linux/Makefile.4                       |  171 +
 .../os/linux/Makefile.6                       |  206 +
 .../os/linux/cfg80211.c                       | 2814 +++++++
 .../os/linux/config.mk                        |  386 +
 .../os/linux/pci_main_dev.c                   | 1212 +++
 .../os/linux/pci_main_dev.o                   |  Bin 0 -> 8392 bytes
 .../os/linux/rt3562sta.ko                     |  Bin 0 -> 1008207 bytes
 .../os/linux/rt3562sta.mod.c                  |  149 +
 .../os/linux/rt3562sta.mod.o                  |  Bin 0 -> 9660 bytes
 .../os/linux/rt3562sta.o                      |  Bin 0 -> 999220 bytes
 .../os/linux/rt_ate.c                         | 6992 ++++++++++++++++
 .../os/linux/rt_linux.c                       | 1941 +++++
 .../os/linux/rt_linux.o                       |  Bin 0 -> 21561 bytes
 .../os/linux/rt_main_dev.c                    | 1004 +++
 .../os/linux/rt_main_dev.o                    |  Bin 0 -> 8520 bytes
 .../os/linux/rt_pci_rbus.c                    |  928 +++
 .../os/linux/rt_pci_rbus.o                    |  Bin 0 -> 7739 bytes
 .../os/linux/rt_profile.c                     |  102 +
 .../os/linux/rt_profile.o                     |  Bin 0 -> 2109 bytes
 .../os/linux/rt_rbus_pci_util.c               |  248 +
 .../os/linux/rt_rbus_pci_util.o               |  Bin 0 -> 3896 bytes
 .../os/linux/sta_ioctl.c                      | 6143 ++++++++++++++
 .../os/linux/sta_ioctl.o                      |  Bin 0 -> 79930 bytes
 .../os/linux/vr_ikans.c                       |  352 +
 .../readme.txt                                |   23 +
 .../sta/.assoc.o.cmd                          |  813 ++
 .../sta/.auth.o.cmd                           |  813 ++
 .../sta/.auth_rsp.o.cmd                       |  813 ++
 .../sta/.connect.o.cmd                        |  813 ++
 .../sta/.rtmp_data.o.cmd                      |  813 ++
 .../sta/.sanity.o.cmd                         |  813 ++
 .../sta/.sta_cfg.o.cmd                        |  813 ++
 .../sta/.sync.o.cmd                           |  813 ++
 .../sta/.wpa.o.cmd                            |  813 ++
 .../sta/assoc.c                               | 1784 ++++
 .../sta/auth.c                                |  515 ++
 .../sta/auth_rsp.c                            |  160 +
 .../sta/connect.c                             | 2909 +++++++
 .../lepregao712010-2.3.0.0-Alpha-v2/sta/dls.c | 2235 +++++
 .../sta/rtmp_ckipmic.c                        |  578 ++
 .../sta/rtmp_data.c                           | 3062 +++++++
 .../sta/sanity.c                              |  335 +
 .../sta/sta_cfg.c                             | 1679 ++++
 .../sta/sync.c                                | 2286 ++++++
 .../lepregao712010-2.3.0.0-Alpha-v2/sta/wpa.c |  447 +
 .../sta_ate_iwpriv_usage.txt                  |  445 +
 .../tools/Makefile                            |    6 +
 .../tools/bin2h                               |  Bin 0 -> 14741 bytes
 .../tools/bin2h.c                             |  151 +
 198 files changed, 159072 insertions(+), 6 deletions(-)
 create mode 100644 .gitignore
 mode change 100644 => 100755 le-pregao-712010/pacote/DEBIAN/control
 create mode 100755 le-pregao-712010/pacote/etc/init.d/pregao71
 create mode 120000 le-pregao-712010/pacote/etc/rc1.d/S99pregao71
 create mode 120000 le-pregao-712010/pacote/etc/rc2.d/S99pregao71
 create mode 120000 le-pregao-712010/pacote/etc/rc3.d/S99pregao71
 create mode 120000 le-pregao-712010/pacote/etc/rc4.d/S99pregao71
 create mode 120000 le-pregao-712010/pacote/etc/rc5.d/S99pregao71
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/LICENSE ralink-firmware.txt
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/Makefile
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/README_STA
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/RT3060STA.dat
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/RT3060STACard.dat
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/chips/.rt30xx.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/chips/.rt35xx.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/chips/rt30xx.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/chips/rt35xx.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.action.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.ba_action.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_aes.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_asic.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_cfg.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_cmd.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_data.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_data_pci.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_info.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_mac_pci.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_profile.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_sanity.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_sync.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_tkip.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_wep.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_wpa.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.crypt_aes.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.crypt_arc4.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.crypt_hmac.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.crypt_md5.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.crypt_sha2.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.dfs.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.ee_efuse.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.ee_prom.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.eeprom.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.mlme.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.rt_channel.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.rt_rf.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.rtmp_init.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.rtmp_init_inf.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.rtmp_mcu.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.rtmp_timer.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.spectrum.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/action.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/ba_action.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/br_ftph.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/client_wds.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_aes.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_asic.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_cfg.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_cmd.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_data.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_data_pci.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_info.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_mac_pci.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_profile.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_sanity.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_sync.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_tkip.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_wep.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_wpa.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/crypt_aes.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/crypt_arc4.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/crypt_hmac.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/crypt_md5.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/crypt_sha2.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/dfs.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/ee_efuse.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/ee_prom.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/eeprom.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/mlme.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/netif_block.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/rt2860.bin
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/rt_channel.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/rt_rf.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/rtmp_init.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/rtmp_init_inf.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/rtmp_mcu.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/rtmp_timer.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/spectrum.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/vr_ikans.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/dkms.conf
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/action.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/ap.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/cfg80211.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/cfg80211extr.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/chip/mac_pci.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/chip/rt2860.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/chip/rt30xx.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/chip/rt35xx.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/chip/rtmp_mac.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/chip/rtmp_phy.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/chlist.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/client_wds.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/client_wds_cmm.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/crypt_aes.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/crypt_arc4.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/crypt_hmac.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/crypt_md5.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/crypt_sha2.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/dfs.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/dot11i_wpa.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/eeprom.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/firmware.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/iface/rtmp_pci.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/link_list.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/mlme.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/netif_block.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/oid.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/os/rt_linux.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rt_ate.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rt_config.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rtmp.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rtmp_chip.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rtmp_cmd.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rtmp_def.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rtmp_dot11.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rtmp_iface.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rtmp_mcu.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rtmp_os.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rtmp_timer.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rtmp_type.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/spectrum.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/spectrum_def.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/vr_ikans.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/wpa.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/wpa_cmm.h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/iwpriv_usage.txt
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/.pci_main_dev.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/.rt3562sta.ko.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/.rt3562sta.mod.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/.rt3562sta.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/.rt_linux.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/.rt_main_dev.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/.rt_pci_rbus.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/.rt_profile.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/.rt_rbus_pci_util.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/.sta_ioctl.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/Makefile.4
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/Makefile.6
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/cfg80211.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/config.mk
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/pci_main_dev.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/pci_main_dev.o
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt3562sta.ko
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt3562sta.mod.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt3562sta.mod.o
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt3562sta.o
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt_ate.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt_linux.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt_linux.o
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt_main_dev.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt_main_dev.o
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt_pci_rbus.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt_pci_rbus.o
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt_profile.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt_profile.o
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt_rbus_pci_util.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt_rbus_pci_util.o
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/sta_ioctl.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/sta_ioctl.o
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/vr_ikans.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/readme.txt
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/.assoc.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/.auth.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/.auth_rsp.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/.connect.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/.rtmp_data.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/.sanity.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/.sta_cfg.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/.sync.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/.wpa.o.cmd
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/assoc.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/auth.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/auth_rsp.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/connect.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/dls.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/rtmp_ckipmic.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/rtmp_data.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/sanity.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/sta_cfg.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/sync.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/wpa.c
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta_ate_iwpriv_usage.txt
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/tools/Makefile
 create mode 100755 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/tools/bin2h
 create mode 100644 le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/tools/bin2h.c

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 000000000..f0c5bdabe
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+*deb
diff --git a/le-pregao-712010/VERSAO b/le-pregao-712010/VERSAO
index 3eefcb9dd..af0b7ddbf 100644
--- a/le-pregao-712010/VERSAO
+++ b/le-pregao-712010/VERSAO
@@ -1 +1 @@
-1.0.0
+1.0.6
diff --git a/le-pregao-712010/pacote/DEBIAN/control b/le-pregao-712010/pacote/DEBIAN/control
old mode 100644
new mode 100755
index 0a10dec69..c8d794e54
--- a/le-pregao-712010/pacote/DEBIAN/control
+++ b/le-pregao-712010/pacote/DEBIAN/control
@@ -1,8 +1,8 @@
 Package: le-pregao-712010
-Version: 0.0.12
+Priority: important
+Version:
 Maintainer: LE Maintainer <le-maintainer@c3sl.ufpr.br>
 Architecture: i386
 Section: main
-Priority: important
-Depends: linux-image-2.6.32-29-generic-pae
+Pre-Depends: dkms
 Description: Especific changes to make LE4.0 work on "Pregao 71/2010"
diff --git a/le-pregao-712010/pacote/DEBIAN/postinst b/le-pregao-712010/pacote/DEBIAN/postinst
index 4db0fa2dc..0aab522e7 100755
--- a/le-pregao-712010/pacote/DEBIAN/postinst
+++ b/le-pregao-712010/pacote/DEBIAN/postinst
@@ -20,8 +20,35 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
 # USA.
 
-echo "Running depmod..."
-/sbin/depmod -a 2.6.32-29-generic-pae
+PACKAGE_NAME="lepregao712010"
+PACKAGE_VERSION="2.3.0.0-Alpha-v2"
+KERNEL_VERSION="$(uname -r)"
+
+# Put conflicting modules at /etc/modprobe.d/blacklist.conf 
+echo "# replaced by rt3562sta" >> /etc/modprobe.d/blacklist.conf
+echo "blacklist rt2800pci" >> /etc/modprobe.d/blacklist.conf
+
+# Function to set selections
+setselections() {
+    selfile=$1
+    # Wait until it works
+    while ! dpkg --set-selections < ${selfile} &>/dev/null ; do
+        sleep 1
+    done
+    rm -f ${selfile}
+}
+
+# Hold Kernel
+sels=$(mktemp)
+auxfile=$(mktemp)
+dpkg --get-selections \* > ${sels}
+awk '{if (($1 ~ /^linux-image-generic-pae/) || ($1 ~ /^linux-headers-generic-pae/)) {print $1"\thold"} else { print $0} }' ${sels} >\
+   ${auxfile}
+rm -f ${sels}
+setselections ${auxfile} & disown
+
+echo "Building module for all installed kernels using dkms..."
+/usr/lib/dkms/common.postinst $PACKAGE_NAME $PACKAGE_VERSION
 
 echo "Loading module rt3562sta"
 modprobe rt3562sta || true
@@ -33,4 +60,5 @@ echo "Restarting network interfaces"
 aa-complain cupsd
 /etc/init.d/cups start
 
+echo $KERNEL_VERSION > /var/log/le-oldkernelversion
 exit 0
diff --git a/le-pregao-712010/pacote/DEBIAN/postrm b/le-pregao-712010/pacote/DEBIAN/postrm
index c5da2e30d..4c96da1b0 100755
--- a/le-pregao-712010/pacote/DEBIAN/postrm
+++ b/le-pregao-712010/pacote/DEBIAN/postrm
@@ -20,6 +20,10 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
 # USA.
 
+# removing conflicting modules from blacklist
+sed -i s/'# replaced by rt3562sta'/''/ /etc/modprobe.d/blacklist.conf
+sed -i s/'blacklist rt2800pci'/''/ /etc/modprobe.d/blacklist.conf
+
 echo "Running depmod..."
 /sbin/depmod -a 2.6.32-29-generic-pae
 
diff --git a/le-pregao-712010/pacote/DEBIAN/prerm b/le-pregao-712010/pacote/DEBIAN/prerm
index 9b8ae296c..3646e39ff 100755
--- a/le-pregao-712010/pacote/DEBIAN/prerm
+++ b/le-pregao-712010/pacote/DEBIAN/prerm
@@ -20,7 +20,17 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
 # USA.
 
+PACKAGE_NAME="lepregao712010"
+PACKAGE_VERSION="2.3.0.0-Alpha-v2"
+
 echo "Unloading module rt3562sta"
 rmmod rt3562sta || true
 
+if test "$1" != "upgrade"; then
+    dkms uninstall -m $PACKAGE_NAME -v $PACKAGE_VERSION
+fi
+
+echo "Restarting network interfaces"
+/etc/init.d/networking restart || true
+
 exit 0
diff --git a/le-pregao-712010/pacote/etc/init.d/pregao71 b/le-pregao-712010/pacote/etc/init.d/pregao71
new file mode 100755
index 000000000..4917acdda
--- /dev/null
+++ b/le-pregao-712010/pacote/etc/init.d/pregao71
@@ -0,0 +1,30 @@
+#! /bin/sh
+
+
+if dpkg -l le-pregao-712010 | grep -q ^ii; then
+	if test -f "/var/log/le-oldkernelversion"; then
+		# if we know old kernel version
+		old_version=$(cat "/var/log/le-oldkernelversion")
+		actual_version=$(uname -r)
+		if test ${old_version} != ${actual_version}; then
+			# if kernel was upgraded
+			/usr/lib/dkms/common.postinst lepregao712010 2.3.0.0-Alpha-v2
+		fi
+	else
+		# if we don't know old kernel version
+		/usr/lib/dkms/common.postinst lepregao712010 2.3.0.0-Alpha-v2
+	fi
+	# set kernel version for next upgrade
+	uname -r > "/var/log/le-oldkernelversion"
+
+    # if modprobe fail, will not have problem, this mean that
+    # the driver is already on kernel (I hope)
+    #test -n "`cat /proc/modules | grep rt3562sta`" && rmmod rt3562sta
+	modprobe rt3562sta
+fi
+
+# Verify if the kernel is in hold state
+if test $(dpkg --get-selections | grep linux-image-generic-pae | tr -s [:blank:] | cut -f2) != "hold"; then
+    echo "linux-image-generic-pae hold" | dpkg --set-selections
+    echo "linux-headers-generic-pae hold" | dpkg --set-selections
+fi
diff --git a/le-pregao-712010/pacote/etc/rc1.d/S99pregao71 b/le-pregao-712010/pacote/etc/rc1.d/S99pregao71
new file mode 120000
index 000000000..28afa8977
--- /dev/null
+++ b/le-pregao-712010/pacote/etc/rc1.d/S99pregao71
@@ -0,0 +1 @@
+../init.d/pregao71
\ No newline at end of file
diff --git a/le-pregao-712010/pacote/etc/rc2.d/S99pregao71 b/le-pregao-712010/pacote/etc/rc2.d/S99pregao71
new file mode 120000
index 000000000..28afa8977
--- /dev/null
+++ b/le-pregao-712010/pacote/etc/rc2.d/S99pregao71
@@ -0,0 +1 @@
+../init.d/pregao71
\ No newline at end of file
diff --git a/le-pregao-712010/pacote/etc/rc3.d/S99pregao71 b/le-pregao-712010/pacote/etc/rc3.d/S99pregao71
new file mode 120000
index 000000000..28afa8977
--- /dev/null
+++ b/le-pregao-712010/pacote/etc/rc3.d/S99pregao71
@@ -0,0 +1 @@
+../init.d/pregao71
\ No newline at end of file
diff --git a/le-pregao-712010/pacote/etc/rc4.d/S99pregao71 b/le-pregao-712010/pacote/etc/rc4.d/S99pregao71
new file mode 120000
index 000000000..28afa8977
--- /dev/null
+++ b/le-pregao-712010/pacote/etc/rc4.d/S99pregao71
@@ -0,0 +1 @@
+../init.d/pregao71
\ No newline at end of file
diff --git a/le-pregao-712010/pacote/etc/rc5.d/S99pregao71 b/le-pregao-712010/pacote/etc/rc5.d/S99pregao71
new file mode 120000
index 000000000..28afa8977
--- /dev/null
+++ b/le-pregao-712010/pacote/etc/rc5.d/S99pregao71
@@ -0,0 +1 @@
+../init.d/pregao71
\ No newline at end of file
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/LICENSE ralink-firmware.txt b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/LICENSE ralink-firmware.txt
new file mode 100644
index 000000000..679560278
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/LICENSE ralink-firmware.txt	
@@ -0,0 +1,39 @@
+Copyright (c) 2009, Ralink Technology Corporation 
+All rights reserved.
+
+Redistribution.  Redistribution and use in binary form, without 
+modification, are permitted provided that the following conditions are 
+met:
+
+* Redistributions must reproduce the above copyright notice and the 
+  following disclaimer in the documentation and/or other materials 
+  provided with the distribution. 
+* Neither the name of Ralink Technology Corporation nor the names of its
+  suppliers may be used to endorse or promote products derived from this
+  software without specific prior written permission. 
+* No reverse engineering, decompilation, or disassembly of this software 
+  is permitted.
+
+Limited patent license. Ralink Technology Corporation grants a world-wide, 
+royalty-free, non-exclusive license under patents it now or hereafter 
+owns or controls to make, have made, use, import, offer to sell and 
+sell ("Utilize") this software, but solely to the extent that any 
+such patent is necessary to Utilize the software alone, or in 
+combination with an operating system licensed under an approved Open 
+Source license as listed by the Open Source Initiative at 
+http://opensource.org/licenses.  The patent license shall not apply to 
+any other combinations which include this software.  No hardware per 
+se is licensed hereunder.
+
+DISCLAIMER.  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, 
+BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
+BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 
+OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 
+ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR 
+TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE 
+USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH 
+DAMAGE.
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/Makefile b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/Makefile
new file mode 100644
index 000000000..7b459f245
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/Makefile
@@ -0,0 +1,227 @@
+RT28xx_MODE = STA
+TARGET = LINUX
+CHIPSET = 3562
+OSABL = NO
+
+#RT28xx_DIR = home directory of RT28xx source code
+RT28xx_DIR = $(shell pwd)
+RTMP_SRC_DIR = $(RT28xx_DIR)/RT$(CHIPSET)
+
+#PLATFORM: Target platform
+PLATFORM = PC
+#PLATFORM = 5VT
+#PLATFORM = IKANOS_V160
+#PLATFORM = IKANOS_V180
+#PLATFORM = SIGMA
+#PLATFORM = SIGMA_8622
+#PLATFORM = INIC
+#PLATFORM = STAR
+#PLATFORM = IXP
+#PLATFORM = INF_TWINPASS
+#PLATFORM = INF_DANUBE
+#PLATFORM = INF_AR9
+#PLATFORM = BRCM_6358
+#PLATFORM = INF_AMAZON_SE
+#PLATFORM = CAVM_OCTEON
+#PLATFORM = CMPC
+#PLATFORM = RALINK_2880
+#PLATFORM = RALINK_3052
+#PLATFORM = SMDK
+#PLATFORM = KODAK_DC
+#PLATFORM = DM6446
+#PLATFORM = FREESCALE8377
+
+
+ifeq ($(TARGET),LINUX)
+MAKE = make
+endif
+
+ifeq ($(PLATFORM),5VT)
+LINUX_SRC = /project/stable/5vt/ralink-2860-sdk/linux-2.6.17
+CROSS_COMPILE = /opt/crosstool/uClibc_v5te_le_gcc_4_1_1/bin/arm-linux-
+endif
+
+ifeq ($(PLATFORM),IKANOS_V160)
+LINUX_SRC = /home/sample/projects/LX_2618_RG_5_3_00r4_SRC/linux-2.6.18
+CROSS_COMPILE = mips-linux-
+endif
+
+ifeq ($(PLATFORM),IKANOS_V180)
+LINUX_SRC = /home/sample/projects/LX_BSP_VX180_5_4_0r1_ALPHA_26DEC07/linux-2.6.18
+CROSS_COMPILE = mips-linux-
+endif
+
+ifeq ($(PLATFORM),SIGMA)
+LINUX_SRC = /root/sigma/smp86xx_kernel_source_2.7.172.0/linux-2.6.15
+CROSS_COMPILE = /root/sigma/smp86xx_toolchain_2.7.172.0/build_mipsel_nofpu/staging_dir/bin/mipsel-linux-
+endif
+
+ifeq ($(PLATFORM),SIGMA_8622)
+LINUX_SRC = /home/snowpin/armutils_2.5.120.1/build_arm/linux-2.4.22-em86xx
+CROSS_COMPILE = /home/snowpin/armutils_2.5.120.1/toolchain/bin/arm-elf-
+CROSS_COMPILE_INCLUDE = /home/snowpin/armutils_2.5.120.1/toolchain/lib/gcc-lib/arm-elf/2.95.3
+endif
+
+ifeq ($(PLATFORM),STAR)
+LINUX_SRC = /opt/star/kernel/linux-2.4.27-star
+CROSS_COMPILE = /opt/star/tools/arm-linux/bin/arm-linux-
+endif
+
+ifeq ($(PLATFORM), RALINK_2880)
+LINUX_SRC = /project/stable/RT288x/RT288x_SDK/source/linux-2.4.x
+CROSS_COMPILE = /opt/buildroot-gdb/bin/mipsel-linux-
+endif
+
+ifeq ($(PLATFORM),RALINK_3052)
+LINUX_SRC = /home/peter/ap_soc/SDK_3_3_0_0/RT288x_SDK/source/linux-2.6.21.x
+CROSS_COMPILE = /opt/buildroot-gcc342/bin/mipsel-linux-uclibc-
+endif
+
+ifeq ($(PLATFORM),FREESCALE8377)
+LINUX_SRC = /opt/ltib-mpc8377_rds-20090309/rpm/BUILD/linux-2.6.25 
+CROSS_COMPILE = /opt/freescale/usr/local/gcc-4.2.187-eglibc-2.5.187/powerpc-linux-gnu/bin/powerpc-linux-gnu-
+endif
+
+ifeq ($(PLATFORM),PC)
+# Linux 2.6
+LINUX_SRC = /lib/modules/$(shell uname -r)/build
+# Linux 2.4 Change to your local setting
+#LINUX_SRC = /usr/src/linux-2.4
+LINUX_SRC_MODULE = /lib/modules/$(shell uname -r)/kernel/drivers/net/wireless/
+CROSS_COMPILE = 
+endif
+
+ifeq ($(PLATFORM),IXP)
+LINUX_SRC = /project/stable/Gmtek/snapgear-uclibc/linux-2.6.x
+CROSS_COMPILE = arm-linux-
+endif
+
+ifeq ($(PLATFORM),INF_TWINPASS)
+# Linux 2.6
+#LINUX_SRC = /lib/modules/$(shell uname -r)/build
+# Linux 2.4 Change to your local setting
+LINUX_SRC = /project/stable/twinpass/release/2.0.1/source/kernel/opensource/linux-2.4.31/
+CROSS_COMPILE = mips-linux-
+endif
+
+ifeq ($(PLATFORM),INF_DANUBE)
+LINUX_SRC = /opt/danube/sdk/linux-2.6.16.x
+CROSS_COMPILE = mips-linux-
+ROOTDIR = /opt/danube/sdk
+export ROOTDIR
+endif
+
+ifeq ($(PLATFORM),INF_AR9)
+LINUX_SRC = /root/ar9/xR9_BSP1.2.2.0/source/kernel/opensource/linux-2.6.20/
+CROSS_COMPILE = /root/ar9/ifx-lxdb26-1.0.2/gcc-3.4.4/toolchain-mips/bin/
+endif
+
+ifeq ($(PLATFORM),BRCM_6358)
+LINUX_SRC = 
+CROSS_COMPILE = 
+endif
+
+ifeq ($(PLATFORM),INF_AMAZON_SE)
+# Linux 2.6
+#LINUX_SRC = /lib/modules/$(shell uname -r)/build
+# Linux 2.4 Change to your local setting
+LINUX_SRC = /backup/ifx/3.6.2.2/source/kernel/opensource/linux-2.4.31
+#CROSS_COMPILE = mips-linux-
+#LINUX_SRC = /project/Infineon/3.6.2.2/source/kernel/opensource/linux-2.4.31
+CROSS_COMPILE = /opt/uclibc-toolchain/ifx-lxdb-1-2-3-external/gcc-3.3.6/toolchain-mips/R0208V35/mips-linux-uclibc/bin/
+endif
+
+ifeq ($(PLATFORM),ST)
+LINUX_SRC = /opt/STM/STLinux-2.2/devkit/sources/kernel/linux0039
+CROSS_COMPILE = /opt/STM/STLinux-2.2/devkit/sh4/bin/sh4-linux-
+ARCH := sh
+export ARCH
+endif
+
+ifeq ($(PLATFORM),CAVM_OCTEON)
+OCTEON_ROOT = /usr/local/Cavium_Networks/OCTEON-SDK
+LINUX_SRC = $(OCTEON_ROOT)/linux/kernel_2.6/linux
+CROSS_COMPILE = mips64-octeon-linux-gnu-
+endif
+
+ifeq ($(PLATFORM),CMPC)
+LINUX_SRC = /opt/fvt_11N_SDK_0807/fvt131x_SDK_11n/linux-2.6.17
+CROSS_COMPILE =
+endif
+
+ifeq ($(PLATFORM),SMDK)
+LINUX_SRC = /home/bhushan/itcenter/may28/linux-2.6-samsung
+CROSS_COMPILE = /usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-
+endif
+
+ifeq ($(PLATFORM),KODAK_DC)
+SKD_SRC = C:/SigmaTel/DC1250_SDK_v1-9/sdk
+CROSS_COMPILE = $(cc)
+endif
+
+ifeq ($(PLATFORM),DM6446)
+LINUX_SRC = /home/fonchi/work/soc/ti-davinci
+endif
+
+export OSABL RT28xx_DIR RT28xx_MODE LINUX_SRC CROSS_COMPILE CROSS_COMPILE_INCLUDE PLATFORM RELEASE CHIPSET RTMP_SRC_DIR LINUX_SRC_MODULE TARGET
+
+all: build_tools $(TARGET)
+
+
+build_tools:
+	$(MAKE) -C tools
+	$(RT28xx_DIR)/tools/bin2h
+
+test:
+	$(MAKE) -C tools test
+
+LINUX:
+ifneq (,$(findstring 2.4,$(LINUX_SRC)))
+
+	cp -f os/linux/Makefile.4 $(RT28xx_DIR)/os/linux/Makefile
+	$(MAKE) -C $(RT28xx_DIR)/os/linux/
+
+#	cp -f $(RT28xx_DIR)/os/linux/rt$(CHIPSET)sta.o /tftpboot
+else
+	cp -f os/linux/Makefile.6 $(RT28xx_DIR)/os/linux/Makefile
+ifeq ($(PLATFORM),DM6446)
+	$(MAKE)  ARCH=arm CROSS_COMPILE=arm_v5t_le- -C  $(LINUX_SRC) SUBDIRS=$(RT28xx_DIR)/os/linux modules
+else
+ifeq ($(PLATFORM),FREESCALE8377)
+	$(MAKE) ARCH=powerpc CROSS_COMPILE=$(CROSS_COMPILE) -C  $(LINUX_SRC) SUBDIRS=$(RT28xx_DIR)/os/linux modules
+else
+	$(MAKE) -C $(LINUX_SRC) SUBDIRS=$(RT28xx_DIR)/os/linux modules
+endif
+endif
+
+endif	
+
+clean:
+ifeq ($(TARGET), LINUX)
+ifneq (,$(findstring 2.4,$(LINUX_SRC)))
+	cp -f os/linux/Makefile.4 os/linux/Makefile
+else
+	cp -f os/linux/Makefile.6 os/linux/Makefile
+endif
+	$(MAKE) -C os/linux clean
+	rm -rf os/linux/Makefile
+endif	
+
+uninstall:
+ifeq ($(TARGET), LINUX)
+ifneq (,$(findstring 2.4,$(LINUX_SRC)))
+	$(MAKE) -C $(RT28xx_DIR)/os/linux -f Makefile.4 uninstall
+else
+	$(MAKE) -C $(RT28xx_DIR)/os/linux -f Makefile.6 uninstall
+endif
+endif
+
+install:
+ifeq ($(TARGET), LINUX)
+ifneq (,$(findstring 2.4,$(LINUX_SRC)))
+	$(MAKE) -C $(RT28xx_DIR)/os/linux -f Makefile.4 install
+else
+	$(MAKE) -C $(RT28xx_DIR)/os/linux -f Makefile.6 install
+endif
+endif
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/README_STA b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/README_STA
new file mode 100644
index 000000000..8897402f5
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/README_STA
@@ -0,0 +1,456 @@
+* README
+*
+* Ralink Tech Inc.
+* 
+* http://www.ralinktech.com
+*
+
+=======================================================================
+ModelName:
+===========
+RT2860 Wireless Lan Linux Driver
+
+
+=======================================================================
+Driver lName:
+=============
+rt3562sta.o/rt3562sta.ko
+
+
+=======================================================================
+Supporting Kernel:
+===================
+linux kernel 2.4 and 2.6 series. 
+Tested in Redhat 7.3 or later.
+
+
+=======================================================================
+Ralink Hardware:
+===================
+Ralink 802.11n Wireless LAN Card.
+
+
+=======================================================================
+Description:
+=============
+This is a linux device driver for Ralink RT3562/RT3062/RT2860 PCI ABGN WLAN Card.
+
+
+=======================================================================
+Contents:
+=============
+Makefile	        : Makefile
+*.c					: c files
+*.h					: header files
+
+
+=======================================================================
+Features:
+==========
+   This driver implements basic IEEE802.11. Infrastructure and adhoc mode with 
+   open or shared or WPA-PSK or WPA2-PSK authentication method. 
+   NONE, WEP, TKIP and AES encryption. 
+
+
+=======================================================================
+Build Instructions:  
+====================
+
+1> $tar -xvzf RT3562_Linux_STA_x.x.x.x.tgz
+    go to "./RT3562_Linux_STA_x.x.x.x" directory.
+    
+2> In Makefile
+	 set the "MODE = STA" in Makefile and chose the TARGET to Linux by set "TARGET = LINUX"
+	 define the linux kernel source include file path LINUX_SRC
+	 modify to meet your need.
+
+3> In os/linux/config.mk 
+	define the GCC and LD of the target machine
+	define the compiler flags CFLAGS
+	modify to meet your need.
+	** Build for being controlled by NetworkManager or wpa_supplicant wext functions
+	   Please set 'HAS_WPA_SUPPLICANT=y' and 'HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y'.
+	   => #>cd wpa_supplicant-x.x
+	   => #>./wpa_supplicant -Dwext -ira0 -c wpa_supplicant.conf -d
+	** Build for being controlled by WpaSupplicant with Ralink Driver
+	   Please set 'HAS_WPA_SUPPLICANT=y' and 'HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=n'.
+	   => #>cd wpa_supplicant-0.5.7
+	   => #>./wpa_supplicant -Dralink -ira0 -c wpa_supplicant.conf -d
+
+4> $make			
+	# compile driver source code
+	# To fix "error: too few arguments to function ��iwe_stream_add_event"
+	  => $patch -i os/linux/sta_ioctl.c.patch os/linux/sta_ioctl.c
+
+5> $cp RT2860STA.dat  /etc/Wireless/RT2860STA/RT2860STA.dat       
+    
+6> load driver, go to "os/linux/" directory.
+    #[kernel 2.4]
+    #    $/sbin/insmod rt3562sta.o
+    #    $/sbin/ifconfig ra0 inet YOUR_IP up
+        
+    #[kernel 2.6]
+    #    $/sbin/insmod rt3562sta.ko
+    #    $/sbin/ifconfig ra0 inet YOUR_IP up
+
+7> unload driver    
+    $/sbin/ifconfig ra0 down
+	$/sbin/rmmod rt3562sta
+	
+=======================================================================
+CONFIGURATION:  
+====================
+RT2860 driver can be configured via following interfaces, 
+i.e. (i)"iwconfig" command, (ii)"iwpriv" command, (iii) configuration file
+
+i)  iwconfig comes with kernel.  
+ii) iwpriv usage, please refer to file "iwpriv_usage.txt" for details.
+iii)modify configuration file "RT2860STA.dat" in /etc/Wireless/RT2860STA/RT2860STA.dat.
+           
+Configuration File : RT2860STA.dat
+---------------------------------------
+# Copy this file to /etc/Wireless/RT2860STA/RT2860STA.dat
+# This file is a binary file and will be read on loading rt.o module.
+#
+# Use "vi RT2860STA.dat" to modify settings according to your need.
+# 
+# 1.) set NetworkType to "Adhoc" for using Adhoc-mode, otherwise using Infrastructure
+# 2.) set Channel to "0" for auto-select on Infrastructure mode
+# 3.) set SSID for connecting to your Accss-point.
+# 4.) AuthMode can be "WEPAUTO", "OPEN", "SHARED", "WPAPSK", "WPA2PSK", "WPANONE"
+# 5.) EncrypType can be "NONE", "WEP", "TKIP", "AES"
+# for more information refer to the Readme file.
+# 
+#The word of "Default" must not be removed
+Default
+CountryRegion=5
+CountryRegionABand=7
+CountryCode=
+SSID=Dennis2860AP
+NetworkType=Infra
+WirelessMode=9
+Channel=0
+BeaconPeriod=100
+TxPower=100
+BGProtection=0
+TxPreamble=0
+RTSThreshold=2347
+FragThreshold=2346
+TxBurst=1
+WmmCapable=0
+AckPolicy=0;0;0;0
+AuthMode=OPEN
+EncrypType=NONE
+WPAPSK=
+DefaultKeyID=1
+Key1Type=0
+Key1Str=
+Key2Type=0
+Key2Str=
+Key3Type=0
+Key3Str=
+Key4Type=0
+Key4Str=
+PSMode=CAM
+FastRoaming=0
+RoamThreshold=70
+HT_RDG=1
+HT_EXTCHA=0
+HT_OpMode=1
+HT_MpduDensity=4
+HT_BW=1
+HT_AutoBA=1
+HT_BADecline=0
+HT_AMSDU=0
+HT_BAWinSize=64
+HT_GI=1
+HT_MCS=33
+HT_MIMOPSMode=3
+IEEE80211H=0
+TGnWifiTest=0
+WirelessEvent=0
+CarrierDetect=0
+
+-----------------------------------------------
+*NOTE:
+	WMM parameters
+			WmmCapable			Set it as 1 to turn on WMM Qos support				
+			AckPolicy1~4		Ack policy which support normal Ack or no Ack
+								(AC_BK, AC_BE, AC_VI, AC_VO)		
+	
+	All WMM parameters do not support iwpriv command but ��WmmCapable����, 
+	please store all parameter to RT2860STA.dat, and restart driver. 	
+
+-----------------------------------------------
+syntax is 'Param'='Value' and describes below. 
+
+@> CountryRegion=value                                 
+	value
+		0: use 1 ~ 11 Channel
+		1: use 1 ~ 13 Channel
+		2: use 10 ~ 11 Channel
+		3: use 10 ~ 13 Channel
+		4: use 14 Channel
+		5: use 1 ~ 14 Channel
+		6: use 3 ~ 9 Channel
+		7: use 5 ~ 13 Channel
+	   31: use 1 ~ 14 Channel (ch1-11:active scan, ch12-14 passive scan)
+   	 	                                      
+@> CountryRegionABand=value      							
+	value	
+		0: use 36, 40, 44, 48, 52, 56, 60, 64, 149, 153, 157, 161, 165 Channel
+		1: use 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140 Channel
+		2: use 36, 40, 44, 48, 52, 56, 60, 64 Channel
+		3: use 52, 56, 60, 64, 149, 153, 157, 161 Channel
+		4: use 149, 153, 157, 161, 165 Channel
+		5: use 149, 153, 157, 161 Channel
+		6: use 36, 40, 44, 48 Channel
+		7: use 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 149, 153, 157, 161, 165 Channel
+		8: use 52, 56, 60, 64 Channel
+		9: use 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 132, 136, 140, 149, 153, 157, 161, 165 Channel
+	   10: use 36, 40, 44, 48, 149, 153, 157, 161, 165 Channel
+	   11: use 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 149, 153, 157, 161 Channel
+
+@> CountryCode=value
+	value
+		AG, AR, AW, AU, AT, BS, BB, BM, BR, BE, BG, CA, KY, CL, CN, CO, CR, CY, CZ, DK, DO, EC, SV, FI, FR, DE, 
+		GR, GU, GT, HT, HN, HK, HU, IS, IN, ID, IE, IL, IT, JP, JO, LV, LI, LT, LU, MY, MT, MA, MX, NL, NZ, NO,
+		PE, PT, PL, RO, RU, SA, CS, SG, SK, SI, ZA, KR, ES, SE, CH, TW, TR, GB, UA, AE, US, VE
+		"" => using default setting: 2.4 G - ch 1~11; 5G - ch 52~64, 100~140, 149~165
+                                                           
+@> SSID=value                	
+	value
+		0~z, 1~32 ascii characters.
+                    	
+@> WirelessMode=value
+	value	
+		0: legacy 11b/g mixed 
+		1: legacy 11B only 
+		2: legacy 11A only         //Not support in RfIcType=1(id=RFIC_5225) and RfIcType=2(id=RFIC_5325)
+		3: legacy 11a/b/g mixed     //Not support in RfIcType=1(id=RFIC_5225) and RfIcType=2(id=RFIC_5325)
+		4: legacy 11G only
+		5: 11ABGN mixed
+		6: 11N only
+		7: 11GN mixed
+		8: 11AN mixed
+		9: 11BGN mixed
+	   10: 11AGN mixed	
+                     
+@> Channel=value
+	value
+		depends on CountryRegion or CountryRegionABand
+                    	
+@> BGProtection=value
+	value
+		0: Auto 
+		1: Always on 
+		2: Always off
+                    	
+@> TxPreamble=value
+  	value
+		0:Preamble Long
+		1:Preamble Short 
+		2:Auto
+                    	
+@> RTSThreshold=value
+	value
+		1~2347                                                       
+                    	                                       
+@> FragThreshold=value
+	value       	
+		256~2346
+                    	
+@> TxBurst=value
+	value
+		0: Disable
+		1: Enable
+
+@> NetworkType=value	    		
+	value 
+		Infra: infrastructure mode
+       	Adhoc: adhoc mode
+                                                                                                                                                        	                                                          
+@> AuthMode=value
+	value
+		OPEN	 	For open system	
+		SHARED	  	For shared key system	
+		WEPAUTO     Auto switch between OPEN and SHARED
+		WPAPSK      For WPA pre-shared key  (Infra)
+		WPA2PSK     For WPA2 pre-shared key (Infra)
+		WPANONE		For WPA pre-shared key  (Adhoc)
+		WPA         Use WPA-Supplicant
+		WPA2        Use WPA-Supplicant
+
+@> EncrypType=value
+	value
+		NONE		For AuthMode=OPEN                    
+		WEP			For AuthMode=OPEN or AuthMode=SHARED 
+		TKIP		For AuthMode=WPAPSK or WPA2PSK                    
+		AES			For AuthMode=WPAPSK or WPA2PSK                     
+		
+@> DefaultKeyID=value
+	value
+		1~4
+
+@> Key1=value
+    Key2=value
+    Key3=value
+    Key4=value
+	value
+		10 or 26 hexadecimal characters eg: 012345678
+        5 or 13 ascii characters eg: passd
+    (usage : "iwpriv" only)     
+
+@> Key1Type=vaule
+    Key2Type=value
+    Key3Type=vaule
+    Key4Type=vaule
+    value
+		0   hexadecimal type
+		1   assic type
+    (usage : reading profile only)
+
+@> Key1Str=value
+    Key2Str=value
+    Key3Str=vaule
+    Key4Str=vaule
+    value
+		10 or 26 characters (key type=0)
+		5 or 13 characters  (key type=1)
+    (usage : reading profile only)	
+
+@> WPAPSK=value              	
+	value
+		8~63 ASCII  		or 
+		64 HEX characters
+																                    																		
+@> WmmCapable=value
+	value
+		0: Disable WMM
+		1: Enable WMM
+        
+@> PSMode=value
+    value
+    	CAM			    Constantly Awake Mode
+		Max_PSP		    Max Power Savings
+		Fast_PSP		Power Save Mode
+
+@> FastRoaming=value
+	value
+		0				Disabled
+		1				Enabled
+
+@> RoamThreshold=value
+	value
+		Positive Interger(dBm)
+
+@> HT_RDG=value
+	value
+		0				Disabled
+		1				Enabled
+
+@> HT_EXTCHA=value (Extended Channel Switch Announcement)
+	value
+		0				Below
+		1 				Above
+
+@> HT_OpMode=value
+	value
+		0				HT mixed format
+		1				HT greenfield format
+
+@> HT_MpduDensity=value
+	value (based on 802.11n D2.0)
+		0: no restriction
+		1: 1/4 �gs
+		2: 1/2 �gs
+		3: 1 �gs
+		4: 2 �gs
+		5: 4 �gs
+		6: 8 �gs
+		7: 16 �gs
+
+@> HT_BW=value
+	value
+		0				20MHz
+		1				40MHz
+
+@> HT_AutoBA=value
+	value
+		0				Disabled
+		1				Enabled
+
+@> HT_BADecline
+	value
+		0				Disabled
+		1			    Enabled <Reject BA request from AP>
+
+@> HT_AMSDU=value
+	value
+		0				Disabled
+		1				Enabled
+
+@> HT_BAWinSize=value
+	value
+		1 ~ 64
+
+@> HT_GI=value
+	value
+		0				long GI
+		1				short GI
+
+@> HT_MCS=value
+	value
+		0 ~ 15
+		33: auto
+
+@> HT_MIMOPSMode=value
+	value (based on 802.11n D2.0)
+		0				Static SM Power Save Mode
+		1				Dynamic SM Power Save Mode
+		2				Reserved
+		3				SM enabled
+	(not fully support yet)
+
+@> IEEE80211H=value
+	value
+		0				Disabled
+		1				Enabled
+
+@> TGnWifiTest=value
+	value
+		0				Disabled
+		1				Enabled
+
+@> WirelessEvent=value
+	value
+		0				Disabled
+		1				Enabled <send custom wireless event>
+	    
+@> CarrierDetect=value
+	value
+		0				Disabled
+		1				Enabled
+
+MORE INFORMATION
+=================================================================================
+If you want for rt2860 driver to auto-load at boot time:
+A) choose ra0 for first RT2860 WLAN card, ra1 for second RT2860 WLAN card, etc.
+   
+B) create(edit) 'ifcfg-ra0' file in /etc/sysconfig/network-scripts/,      
+   edit( or add the line) in /etc/modules.conf:
+       alias ra0 rt2860sta
+   
+C) edit(create) the file /etc/sysconfig/network-scripts/ifcfg-ra0  
+   DEVICE='ra0'
+   ONBOOT='yes'     
+
+
+NOTE:
+   if you use dhcp, add this line too .
+    BOOTPROTO='dhcp'
+
+*D) To ease the Default Gateway setting, 
+    add the line
+    GATEWAY=x.x.x.x   
+    in /etc/sysconfig/network
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/RT3060STA.dat b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/RT3060STA.dat
new file mode 100644
index 000000000..9489c2969
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/RT3060STA.dat
@@ -0,0 +1,58 @@
+#The word of "Default" must not be removed
+Default
+CountryRegion=5
+CountryRegionABand=7
+CountryCode=
+ChannelGeography=1
+SSID=Dennis2860AP
+NetworkType=Infra
+WirelessMode=5
+Channel=0
+BeaconPeriod=100
+TxPower=100
+BGProtection=0
+TxPreamble=0
+RTSThreshold=2347
+FragThreshold=2346
+TxBurst=1
+PktAggregate=0
+WmmCapable=1
+AckPolicy=0;0;0;0
+AuthMode=OPEN
+EncrypType=NONE
+WPAPSK=
+DefaultKeyID=1
+Key1Type=0
+Key1Str=
+Key2Type=0
+Key2Str=
+Key3Type=0
+Key3Str=
+Key4Type=0
+Key4Str=
+PSMode=CAM
+AutoRoaming=0
+RoamThreshold=70
+APSDCapable=0
+APSDAC=0;0;0;0
+HT_RDG=1
+HT_EXTCHA=0
+HT_OpMode=0
+HT_MpduDensity=4
+HT_BW=1
+HT_AutoBA=1
+HT_BADecline=0
+HT_AMSDU=0
+HT_BAWinSize=64
+HT_GI=1
+HT_MCS=33
+HT_MIMOPSMode=3
+HT_DisallowTKIP=1
+HT_STBC=0
+IEEE80211H=0
+TGnWifiTest=0
+WirelessEvent=0
+CarrierDetect=0
+AntDiversity=0
+BeaconLostTime=4
+PSP_XLINK_MODE=0
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/RT3060STACard.dat b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/RT3060STACard.dat
new file mode 100644
index 000000000..c3f9d7499
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/RT3060STACard.dat
@@ -0,0 +1,19 @@
+#The word of "Default" must not be removed, maximum 32 cards, 00 ~ 31
+Default
+
+#CARDID, MAC, CARDTYPE
+SELECT=CARDTYPE
+
+00CARDID=/etc/Wireless/RT2860STA/RT2860STA1.dat
+01CARDID=/etc/Wireless/RT2860STA/RT2860STA2.dat
+02CARDID=/etc/Wireless/RT2860STA/RT2860STA3.dat
+
+00MAC00:0E:2E:C3:D0:48=/etc/Wireless/RT2860STA/RT2860STA1.dat
+01MAC00:40:F4:FF:AA:40=/etc/Wireless/RT2860STA/RT2860STA2.dat
+02MAC00:0C:43:10:11:5C=/etc/Wireless/RT2860STA/RT2860STA3.dat
+
+00CARDTYPEbgn=/etc/Wireless/RT2860STA/RT2860STA1.dat
+01CARDTYPEbgn=/etc/Wireless/RT2860STA/RT2860STA2.dat
+02CARDTYPEabgn=/etc/Wireless/RT2860STA/RT2860STA3.dat
+
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/chips/.rt30xx.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/chips/.rt30xx.o.cmd
new file mode 100644
index 000000000..764434eab
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/chips/.rt30xx.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../chips/rt30xx.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../chips/.rt30xx.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(rt30xx)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../chips/.tmp_rt30xx.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../chips/rt30xx.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../chips/rt30xx.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../chips/rt30xx.c \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+    $(wildcard include/config/sta/support.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../chips/rt30xx.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../chips/rt30xx.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../chips/rt30xx.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/chips/.rt35xx.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/chips/.rt35xx.o.cmd
new file mode 100644
index 000000000..71910316e
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/chips/.rt35xx.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../chips/rt35xx.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../chips/.rt35xx.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(rt35xx)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../chips/.tmp_rt35xx.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../chips/rt35xx.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../chips/rt35xx.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../chips/rt35xx.c \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+    $(wildcard include/config/sta/support.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../chips/rt35xx.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../chips/rt35xx.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../chips/rt35xx.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/chips/rt30xx.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/chips/rt30xx.c
new file mode 100644
index 000000000..3ffe626fa
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/chips/rt30xx.c
@@ -0,0 +1,547 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+	Module Name:
+	rt2880.c
+
+	Abstract:
+	Specific funcitons and variables for RT30xx.
+
+	Revision History:
+	Who         When          What
+	--------    ----------    ----------------------------------------------
+*/
+
+
+#ifdef RT30xx
+
+
+#ifndef RTMP_RF_RW_SUPPORT
+#error "You Should Enable compile flag RTMP_RF_RW_SUPPORT for this chip"
+#endif // RTMP_RF_RW_SUPPORT //
+
+#include "rt_config.h"
+
+
+//
+// RF register initialization set
+//
+REG_PAIR   RT30xx_RFRegTable[] = {
+        {RF_R04,          0x40},
+        {RF_R05,          0x03},
+        {RF_R06,          0x02},
+        {RF_R07,          0x70},      
+        {RF_R09,          0x0F},
+        {RF_R10,          0x41},
+        {RF_R11,          0x21},
+        {RF_R12,          0x7B},
+        {RF_R14,          0x90},
+        {RF_R15,          0x58},
+        {RF_R16,          0xB3},
+        {RF_R17,          0x92},
+        {RF_R18,          0x2C},
+        {RF_R19,          0x02},
+        {RF_R20,          0xBA},
+        {RF_R21,          0xDB},
+        {RF_R24,          0x16},      
+        {RF_R25,          0x01},
+        {RF_R29,          0x1F},
+};
+
+UCHAR NUM_RF_REG_PARMS = (sizeof(RT30xx_RFRegTable) / sizeof(REG_PAIR));
+
+
+// Antenna divesity use GPIO3 and EESK pin for control
+// Antenna and EEPROM access are both using EESK pin,
+// Therefor we should avoid accessing EESK at the same time
+// Then restore antenna after EEPROM access
+// The original name of this function is AsicSetRxAnt(), now change to 
+//VOID AsicSetRxAnt(
+VOID RT30xxSetRxAnt(
+	IN PRTMP_ADAPTER	pAd,
+	IN UCHAR			Ant)
+{
+	UINT32	Value;
+#ifdef RTMP_MAC_PCI
+	UINT32	x;
+#endif // RTMP_MAC_PCI //
+
+	if ((pAd->EepromAccess) ||
+		(RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_RESET_IN_PROGRESS))	||
+		(RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_HALT_IN_PROGRESS))	||
+		(RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_RADIO_OFF)) ||
+		(RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_NIC_NOT_EXIST)))
+	{
+		return;
+	}
+
+	// the antenna selection is through firmware and MAC register(GPIO3)
+	if (Ant == 0)
+	{
+		// Main antenna
+#ifdef RTMP_MAC_PCI
+		RTMP_IO_READ32(pAd, E2PROM_CSR, &x);
+		x |= (EESK);
+		RTMP_IO_WRITE32(pAd, E2PROM_CSR, x);
+#else
+		AsicSendCommandToMcu(pAd, 0x73, 0xFF, 0x1, 0x0);
+#endif // RTMP_MAC_PCI //
+
+		RTMP_IO_READ32(pAd, GPIO_CTRL_CFG, &Value);
+		Value &= ~(0x0808);
+		RTMP_IO_WRITE32(pAd, GPIO_CTRL_CFG, Value);
+		DBGPRINT_RAW(RT_DEBUG_TRACE, ("AsicSetRxAnt, switch to main antenna\n"));
+	}
+	else
+	{
+		// Aux antenna
+#ifdef RTMP_MAC_PCI
+		RTMP_IO_READ32(pAd, E2PROM_CSR, &x);
+		x &= ~(EESK);
+		RTMP_IO_WRITE32(pAd, E2PROM_CSR, x);
+#else
+		AsicSendCommandToMcu(pAd, 0x73, 0xFF, 0x0, 0x0);
+#endif // RTMP_MAC_PCI //
+		RTMP_IO_READ32(pAd, GPIO_CTRL_CFG, &Value);
+		Value &= ~(0x0808);
+		Value |= 0x08;
+		RTMP_IO_WRITE32(pAd, GPIO_CTRL_CFG, Value);
+		DBGPRINT_RAW(RT_DEBUG_TRACE, ("AsicSetRxAnt, switch to aux antenna\n"));
+	}
+}
+
+
+/*
+	========================================================================
+
+	Routine Description:
+		For RF filter calibration purpose
+
+	Arguments:
+		pAd                          Pointer to our adapter
+
+	Return Value:
+		None
+
+	IRQL = PASSIVE_LEVEL
+
+	========================================================================
+*/
+VOID RTMPFilterCalibration(
+	IN PRTMP_ADAPTER pAd)
+{
+	UCHAR	R55x = 0, value, FilterTarget = 0x1E, BBPValue=0;
+	UINT	loop = 0, count = 0, loopcnt = 0, ReTry = 0;
+	UCHAR	RF_R24_Value = 0;
+
+	// Give bbp filter initial value
+	pAd->Mlme.CaliBW20RfR24 = 0x1F;
+	pAd->Mlme.CaliBW40RfR24 = 0x2F; //Bit[5] must be 1 for BW 40
+
+	do 
+	{
+		if (loop == 1)	//BandWidth = 40 MHz
+		{
+			// Write 0x27 to RF_R24 to program filter
+			RT30xxReadRFRegister(pAd, RF_R24, (PUCHAR)(&RF_R24_Value));
+			RF_R24_Value = (RF_R24_Value & 0xC0) | 0x27; // <bit 5>:tx_h20M<bit 5> and <bit 4:0>:tx_agc_fc<bit 4:0>
+			RT30xxWriteRFRegister(pAd, RF_R24, RF_R24_Value);
+			if (IS_RT3071(pAd) || IS_RT3572(pAd)|| IS_RT3390(pAd))
+				FilterTarget = 0x15;
+			else
+				FilterTarget = 0x19;
+
+			// when calibrate BW40, BBP mask must set to BW40.
+			RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R4, &BBPValue);
+			BBPValue&= (~0x18);
+			BBPValue|= (0x10);
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R4, BBPValue);
+
+			// set to BW40
+			RT30xxReadRFRegister(pAd, RF_R31, &value);
+			value |= 0x20;
+			RT30xxWriteRFRegister(pAd, RF_R31, value);
+		}
+		else			//BandWidth = 20 MHz
+		{
+			// Write 0x07 to RF_R24 to program filter
+			RT30xxReadRFRegister(pAd, RF_R24, (PUCHAR)(&RF_R24_Value));
+			RF_R24_Value = (RF_R24_Value & 0xC0) | 0x07; // <bit 5>:tx_h20M<bit 5> and <bit 4:0>:tx_agc_fc<bit 4:0>
+			RT30xxWriteRFRegister(pAd, RF_R24, RF_R24_Value);
+			if (IS_RT3071(pAd) || IS_RT3572(pAd)|| IS_RT3390(pAd))
+				FilterTarget = 0x13;
+			else
+				FilterTarget = 0x16;
+
+			// set to BW20
+			RT30xxReadRFRegister(pAd, RF_R31, &value);
+			value &= (~0x20);
+			RT30xxWriteRFRegister(pAd, RF_R31, value);
+		}
+
+		// Write 0x01 to RF_R22 to enable baseband loopback mode
+		RT30xxReadRFRegister(pAd, RF_R22, &value);
+		value |= 0x01;
+		RT30xxWriteRFRegister(pAd, RF_R22, value);
+
+		// Write 0x00 to BBP_R24 to set power & frequency of passband test tone
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R24, 0);
+
+		do
+		{
+			if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_NIC_NOT_EXIST))				
+				return;
+			
+			// Write 0x90 to BBP_R25 to transmit test tone
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R25, 0x90);
+
+			RTMPusecDelay(1000);
+			// Read BBP_R55[6:0] for received power, set R55x = BBP_R55[6:0]
+			RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R55, &value);
+			R55x = value & 0xFF;
+
+		} while ((ReTry++ < 100) && (R55x == 0));
+		
+		// Write 0x06 to BBP_R24 to set power & frequency of stopband test tone
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R24, 0x06);
+
+		while(TRUE)
+		{
+			if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_NIC_NOT_EXIST))				
+				return;
+			
+			// Write 0x90 to BBP_R25 to transmit test tone
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R25, 0x90);
+
+			//We need to wait for calibration
+			RTMPusecDelay(1000);
+			RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R55, &value);
+			value &= 0xFF;
+			if ((R55x - value) < FilterTarget)
+			{
+				RF_R24_Value ++;
+			}
+			else if ((R55x - value) == FilterTarget)
+			{
+				RF_R24_Value ++;
+				count ++;
+			}
+			else
+			{
+				break;
+			}
+
+			// prevent infinite loop cause driver hang.
+			if (loopcnt++ > 100)
+			{
+				DBGPRINT(RT_DEBUG_ERROR, ("RTMPFilterCalibration - can't find a valid value, loopcnt=%d stop calibrating", loopcnt));
+				break;
+			}
+
+			// Write RF_R24 to program filter
+			RT30xxWriteRFRegister(pAd, RF_R24, RF_R24_Value);
+		}
+
+		if (count > 0)
+		{
+			RF_R24_Value = RF_R24_Value - ((count) ? (1) : (0));
+		}
+
+		// Store for future usage
+		if (loopcnt < 100)
+		{
+			if (loop++ == 0)
+			{
+				//BandWidth = 20 MHz
+				pAd->Mlme.CaliBW20RfR24 = (UCHAR)RF_R24_Value;
+			}
+			else
+			{
+				//BandWidth = 40 MHz
+				pAd->Mlme.CaliBW40RfR24 = (UCHAR)RF_R24_Value;
+				break;
+			}
+		}
+		else 
+			break;
+
+		RT30xxWriteRFRegister(pAd, RF_R24, RF_R24_Value);
+
+		// reset count
+		count = 0;
+	} while(TRUE);
+
+	//
+	// Set back to initial state
+	//
+	RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R24, 0);
+
+	RT30xxReadRFRegister(pAd, RF_R22, &value);
+	value &= ~(0x01);
+	RT30xxWriteRFRegister(pAd, RF_R22, value);
+
+	// set BBP back to BW20
+	RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R4, &BBPValue);
+	BBPValue&= (~0x18);
+	RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R4, BBPValue);
+
+	DBGPRINT(RT_DEBUG_TRACE, ("RTMPFilterCalibration - CaliBW20RfR24=0x%x, CaliBW40RfR24=0x%x\n", pAd->Mlme.CaliBW20RfR24, pAd->Mlme.CaliBW40RfR24));
+}
+
+
+// add by johnli, RF power sequence setup
+/*
+	==========================================================================
+	Description:
+
+	Load RF normal operation-mode setup
+	
+	==========================================================================
+ */
+VOID RT30xxLoadRFNormalModeSetup(
+	IN PRTMP_ADAPTER 	pAd)
+{
+	UCHAR RFValue;
+
+	// RX0_PD & TX0_PD, RF R1 register Bit 2 & Bit 3 to 0 and RF_BLOCK_en,RX1_PD & TX1_PD, Bit0, Bit 4 & Bit5 to 1
+	RT30xxReadRFRegister(pAd, RF_R01, &RFValue);
+	RFValue = (RFValue & (~0x0C)) | 0x31;
+	RT30xxWriteRFRegister(pAd, RF_R01, RFValue);
+
+	// TX_LO2_en, RF R15 register Bit 3 to 0
+	RT30xxReadRFRegister(pAd, RF_R15, &RFValue);
+	RFValue &= (~0x08);
+	RT30xxWriteRFRegister(pAd, RF_R15, RFValue);
+
+	/* move to NICInitRT30xxRFRegisters
+	// TX_LO1_en, RF R17 register Bit 3 to 0
+	RT30xxReadRFRegister(pAd, RF_R17, &RFValue);
+	RFValue &= (~0x08);
+	// to fix rx long range issue
+	if (((pAd->MACVersion & 0xffff) >= 0x0211) && (pAd->NicConfig2.field.ExternalLNAForG == 0))
+	{
+		RFValue |= 0x20;
+	}
+	// set RF_R17_bit[2:0] equal to EEPROM setting at 0x48h
+	if (pAd->TxMixerGain24G >= 2)
+	{
+		RFValue &= (~0x7);  // clean bit [2:0]
+		RFValue |= pAd->TxMixerGain24G;
+	}
+	RT30xxWriteRFRegister(pAd, RF_R17, RFValue);
+	*/
+
+	// RX_LO1_en, RF R20 register Bit 3 to 0
+	RT30xxReadRFRegister(pAd, RF_R20, &RFValue);
+	RFValue &= (~0x08);
+	RT30xxWriteRFRegister(pAd, RF_R20, RFValue);
+
+	// RX_LO2_en, RF R21 register Bit 3 to 0
+	RT30xxReadRFRegister(pAd, RF_R21, &RFValue);
+	RFValue &= (~0x08);
+	RT30xxWriteRFRegister(pAd, RF_R21, RFValue);
+
+	/* add by johnli, reset RF_R27 when interface down & up to fix throughput problem*/
+	// LDORF_VC, RF R27 register Bit 2 to 0
+	RT30xxReadRFRegister(pAd, RF_R27, &RFValue);
+	// TX to RX IQ glitch(RF_R27) has been fixed in RT3070(F). 
+	// Raising RF voltage is no longer needed for RT3070(F)
+	if (IS_RT3090(pAd))	// RT309x and RT3071/72
+	{
+		if ((pAd->MACVersion & 0xffff) < 0x0211)
+			RFValue = (RFValue & (~0x77)) | 0x3;
+		else
+			RFValue = (RFValue & (~0x77));
+		RT30xxWriteRFRegister(pAd, RF_R27, RFValue);
+	}
+	/* end johnli */
+}
+
+/*
+	==========================================================================
+	Description:
+
+	Load RF sleep-mode setup
+	
+	==========================================================================
+ */
+VOID RT30xxLoadRFSleepModeSetup(
+	IN PRTMP_ADAPTER 	pAd)
+{
+	UCHAR RFValue;
+	UINT32 MACValue;
+
+#ifdef RT35xx
+	if(IS_RT3572(pAd))
+		RT30xxWriteRFRegister(pAd, RF_R08, 0x00);
+#endif // RT35xx //
+
+	if(!IS_RT3572(pAd))
+	{
+		// RF_BLOCK_en. RF R1 register Bit 0 to 0
+		RT30xxReadRFRegister(pAd, RF_R01, &RFValue);
+		RFValue &= (~0x01);
+		RT30xxWriteRFRegister(pAd, RF_R01, RFValue);
+
+		// VCO_IC, RF R7 register Bit 4 & Bit 5 to 0
+		RT30xxReadRFRegister(pAd, RF_R07, &RFValue);
+		RFValue &= (~0x30);
+		RT30xxWriteRFRegister(pAd, RF_R07, RFValue);
+
+		// Idoh, RF R9 register Bit 1, Bit 2 & Bit 3 to 0
+		RT30xxReadRFRegister(pAd, RF_R09, &RFValue);
+		RFValue &= (~0x0E);
+		RT30xxWriteRFRegister(pAd, RF_R09, RFValue);
+
+		// RX_CTB_en, RF R21 register Bit 7 to 0
+		RT30xxReadRFRegister(pAd, RF_R21, &RFValue);
+		RFValue &= (~0x80);
+		RT30xxWriteRFRegister(pAd, RF_R21, RFValue);
+	}
+
+	if (IS_RT3090(pAd) ||	// IS_RT3090 including RT309x and RT3071/72
+		IS_RT3572(pAd) ||
+		(IS_RT3070(pAd) && ((pAd->MACVersion & 0xffff) < 0x0201)))
+	{
+		if (!IS_RT3572(pAd))
+		{
+			RT30xxReadRFRegister(pAd, RF_R27, &RFValue);
+			RFValue |= 0x77;
+			RT30xxWriteRFRegister(pAd, RF_R27, RFValue);
+		}
+
+		RTMP_IO_READ32(pAd, LDO_CFG0, &MACValue);
+		MACValue |= 0x1D000000;
+		RTMP_IO_WRITE32(pAd, LDO_CFG0, MACValue);
+	}
+}
+
+/*
+	==========================================================================
+	Description:
+
+	Reverse RF sleep-mode setup
+	
+	==========================================================================
+ */
+VOID RT30xxReverseRFSleepModeSetup(
+	IN PRTMP_ADAPTER 	pAd)
+{
+	UCHAR RFValue;
+	UINT32 MACValue;
+
+	if(!IS_RT3572(pAd))
+	{
+		// RF_BLOCK_en, RF R1 register Bit 0 to 1
+		RT30xxReadRFRegister(pAd, RF_R01, &RFValue);
+		RFValue |= 0x01;
+		RT30xxWriteRFRegister(pAd, RF_R01, RFValue);
+
+		// VCO_IC, RF R7 register Bit 4 & Bit 5 to 1
+		RT30xxReadRFRegister(pAd, RF_R07, &RFValue);
+		RFValue |= 0x30;
+		RT30xxWriteRFRegister(pAd, RF_R07, RFValue);
+
+		// Idoh, RF R9 register Bit 1, Bit 2 & Bit 3 to 1
+		RT30xxReadRFRegister(pAd, RF_R09, &RFValue);
+		RFValue |= 0x0E;
+		RT30xxWriteRFRegister(pAd, RF_R09, RFValue);
+
+		// RX_CTB_en, RF R21 register Bit 7 to 1
+		RT30xxReadRFRegister(pAd, RF_R21, &RFValue);
+		RFValue |= 0x80;
+		RT30xxWriteRFRegister(pAd, RF_R21, RFValue);
+	}
+
+	if (IS_RT3090(pAd) ||	// IS_RT3090 including RT309x and RT3071/72
+		IS_RT3572(pAd) ||
+		IS_RT3390(pAd) ||
+		(IS_RT3070(pAd) && ((pAd->MACVersion & 0xffff) < 0x0201)))
+	{
+		if (!IS_RT3572(pAd))
+		{
+			RT30xxReadRFRegister(pAd, RF_R27, &RFValue);
+			if ((pAd->MACVersion & 0xffff) < 0x0211)
+				RFValue = (RFValue & (~0x77)) | 0x3;
+			else
+				RFValue = (RFValue & (~0x77));
+			RT30xxWriteRFRegister(pAd, RF_R27, RFValue);
+		}
+
+		// RT3071 version E has fixed this issue
+		if ((pAd->NicConfig2.field.DACTestBit == 1) && ((pAd->MACVersion & 0xffff) < 0x0211))
+		{
+			// patch tx EVM issue temporarily
+			RTMP_IO_READ32(pAd, LDO_CFG0, &MACValue);
+			MACValue = ((MACValue & 0xE0FFFFFF) | 0x0D000000);
+			RTMP_IO_WRITE32(pAd, LDO_CFG0, MACValue);
+		}
+		else
+		{
+			RTMP_IO_READ32(pAd, LDO_CFG0, &MACValue);
+			MACValue = ((MACValue & 0xE0FFFFFF) | 0x01000000);
+			RTMP_IO_WRITE32(pAd, LDO_CFG0, MACValue);
+		}
+	}
+
+	if(IS_RT3572(pAd))
+		RT30xxWriteRFRegister(pAd, RF_R08, 0x80);
+}
+// end johnli
+
+VOID RT30xxHaltAction(
+	IN PRTMP_ADAPTER 	pAd)
+{
+	UINT32		TxPinCfg = 0x00050F0F;
+
+	//
+	// Turn off LNA_PE or TRSW_POL
+	//
+	if (IS_RT3070(pAd) || IS_RT3071(pAd) || IS_RT3572(pAd))
+	{
+		if ((IS_RT3071(pAd) || IS_RT3572(pAd))
+#ifdef RTMP_EFUSE_SUPPORT
+			&& (pAd->bUseEfuse)
+#endif // RTMP_EFUSE_SUPPORT //
+			)
+		{
+			TxPinCfg &= 0xFFFBF0F0; // bit18 off
+		}
+		else
+		{
+			TxPinCfg &= 0xFFFFF0F0;
+		}
+#ifdef RT35xx
+		if (IS_RT3572(pAd))
+			RT30xxWriteRFRegister(pAd, RF_R08, (UCHAR)0x00);
+#endif // RT35xx //
+
+		RTMP_IO_WRITE32(pAd, TX_PIN_CFG, TxPinCfg);   
+	}
+}
+
+#endif // RT30xx //
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/chips/rt35xx.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/chips/rt35xx.c
new file mode 100644
index 000000000..f40a9e854
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/chips/rt35xx.c
@@ -0,0 +1,249 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+	Module Name:
+	rt35xx.c
+
+	Abstract:
+	Specific funcitons and variables for 
+		RT3062
+		RT3562
+		RT3572
+		RT3592
+
+	Revision History:
+	Who         When          What
+	--------    ----------    ----------------------------------------------
+*/
+
+#ifdef RT35xx
+
+#include "rt_config.h"
+
+
+#ifndef RTMP_RF_RW_SUPPORT
+#error "You Should Enable compile flag RTMP_RF_RW_SUPPORT for this chip"
+#endif // RTMP_RF_RW_SUPPORT //
+
+REG_PAIR   RF3572_RFRegTable[] = {
+	{RF_R00,		0x70},
+	{RF_R01,		0x81},
+	{RF_R02,		0xF1},
+	{RF_R03,		0x02},
+	{RF_R04,		0x4C},
+	{RF_R05,		0x05},
+	{RF_R06,		0x4A},
+	{RF_R07,		0xD8},
+//	{RF_R08,		0x80},
+	{RF_R09,		0xC3},
+
+	{RF_R10,		0xF1},
+	{RF_R11,		0xB9},
+	{RF_R12,		0x70},
+	{RF_R13,		0x65},
+	{RF_R14,		0xA0},
+	{RF_R15,		0x53},
+	{RF_R16,		0x4C},
+	{RF_R17,		0x23},
+	{RF_R18,		0xAC},
+	{RF_R19,		0x93},
+
+	{RF_R20,		0xB3},
+	{RF_R21,		0xD0},
+	{RF_R22,		0x00},	
+	{RF_R23,		0x3C},
+	{RF_R24,		0x16},
+	{RF_R25,		0x15},
+	{RF_R26,		0x85},
+	{RF_R27,		0x00},
+	{RF_R28,		0x00},
+	{RF_R29,		0x9B},
+	{RF_R30,		0x09},
+	{RF_R31,		0x10},
+};
+
+#define	NUM_RF_3572REG_PARMS	(sizeof(RF3572_RFRegTable) / sizeof(REG_PAIR))
+
+VOID NICInitRT3572RFRegisters(IN PRTMP_ADAPTER pAd)
+{
+	INT i;
+	UINT32 RfReg = 0;
+	UINT32 data;
+	
+	/*
+		Driver must read EEPROM to get RfIcType before initial RF registers
+		Initialize RF register to default value
+		Init RF calibration
+		Driver should toggle RF R30 bit7 before init RF registers
+    */
+    RT30xxReadRFRegister(pAd, RF_R30, (PUCHAR)&RfReg);
+    RfReg |= 0x80;
+    RT30xxWriteRFRegister(pAd, RF_R30, (UCHAR)RfReg);
+    RTMPusecDelay(1000);
+    RfReg &= 0x7F;
+    RT30xxWriteRFRegister(pAd, RF_R30, (UCHAR)RfReg);        
+
+	/* Initialize RF register to default value */
+	for (i = 0; i < NUM_RF_3572REG_PARMS; i++)
+	{
+		RT30xxWriteRFRegister(pAd, RF3572_RFRegTable[i].Register, RF3572_RFRegTable[i].Value);
+	}
+
+	/* Driver should set RF R6 bit6 on before init RF registers */
+	RT30xxReadRFRegister(pAd, RF_R06, (PUCHAR)&RfReg);
+	RfReg |= 0x40;
+	RT30xxWriteRFRegister(pAd, RF_R06, (UCHAR)RfReg);
+
+	/* init R31 */
+	//RT30xxWriteRFRegister(pAd, RF_R31, 0x14);
+
+	if ((pAd->NicConfig2.field.DACTestBit == 1) && ((pAd->MACVersion & 0xffff) < 0x0211))
+	{
+		/* patch tx EVM issue temporarily */
+		RTMP_IO_READ32(pAd, LDO_CFG0, &data);
+		data = ((data & 0xF0FFFFFF) | 0x0D000000);
+		RTMP_IO_WRITE32(pAd, LDO_CFG0, data);
+	}
+	else
+	{
+		// Patch for SRAM, increase voltage to 1.35V on core voltage and down to 1.2V after 1 msec
+		RTMP_IO_READ32(pAd, LDO_CFG0, &data);
+		data = ((data & 0xE0FFFFFF) | 0x0D000000);
+		RTMP_IO_WRITE32(pAd, LDO_CFG0, data);
+
+		RTMPusecDelay(1000);
+
+		data = ((data & 0xE0FFFFFF) | 0x01000000);
+		RTMP_IO_WRITE32(pAd, LDO_CFG0, data);
+	}
+
+	/* patch LNA_PE_G1 (toggle GPIO_SWITCH) is not necessary for 3572 */
+	/*
+	RTMP_IO_READ32(pAd, GPIO_SWITCH, &data);
+	data &= ~(0x20);
+	RTMP_IO_WRITE32(pAd, GPIO_SWITCH, data);
+	*/
+	
+	/* For RF filter Calibration */
+	RTMPFilterCalibration(pAd);
+
+	/* save R25, R26 for 2.4GHz */
+	BBP_IO_READ8_BY_REG_ID(pAd, BBP_R25, &pAd->Bbp25);
+	BBP_IO_READ8_BY_REG_ID(pAd, BBP_R26, &pAd->Bbp26);
+
+	/* set led open drain enable */
+	RTMP_IO_READ32(pAd, OPT_14, &data);
+	data |= 0x01;
+	RTMP_IO_WRITE32(pAd, OPT_14, data);
+}
+
+
+/*
+	==========================================================================
+	Description:
+
+	Reverse RF sleep-mode setup
+	
+	==========================================================================
+ */
+VOID RT3572ReverseRFSleepModeSetup(
+	IN PRTMP_ADAPTER 	pAd)
+{
+	UCHAR RFValue;
+
+	// RF_BLOCK_en, RF R1 register Bit 0 to 1
+	RT30xxReadRFRegister(pAd, RF_R01, &RFValue);
+	RFValue |= 0x01;
+	RT30xxWriteRFRegister(pAd, RF_R01, RFValue);
+
+	// VCO_IC, RF R7 register Bit 4 & Bit 5 to 1
+	RT30xxReadRFRegister(pAd, RF_R07, &RFValue);
+	RFValue |= 0x30;
+	RT30xxWriteRFRegister(pAd, RF_R07, RFValue);
+
+	// Idoh, RF R9 register Bit 1, Bit 2 & Bit 3 to 1
+	RT30xxReadRFRegister(pAd, RF_R09, &RFValue);
+	RFValue |= 0x0E;
+	RT30xxWriteRFRegister(pAd, RF_R09, RFValue);
+
+	// RX_CTB_en, RF R21 register Bit 7 to 1
+	RT30xxReadRFRegister(pAd, RF_R21, &RFValue);
+	RFValue |= 0x80;
+	RT30xxWriteRFRegister(pAd, RF_R21, RFValue);
+	RT30xxWriteRFRegister(pAd,RF_R08,(UCHAR)0x80);
+}
+
+/*
+	========================================================================
+	
+	Routine Description: 3572/3592 R66 writing must select BBP_R27
+
+	Arguments:
+
+	Return Value:
+
+	IRQL = 
+	
+	Note:
+	
+	========================================================================
+*/
+NTSTATUS	RT3572WriteBBPR66(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	UCHAR			Value)
+{
+	NTSTATUS NStatus = STATUS_UNSUCCESSFUL;
+	UCHAR	bbpData = 0;
+
+	if (!IS_RT3572(pAd))
+		return NStatus;
+
+	RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R27, &bbpData);
+
+	// R66 controls the gain of Rx0
+	bbpData &= ~(0x60);	//clear bit 5,6
+	{
+#ifdef RTMP_MAC_PCI
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R27, bbpData);
+#endif // RTMP_MAC_PCI //
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R66, Value);
+	}
+
+	// R66 controls the gain of Rx1
+	bbpData |= 0x20;		// set bit 5
+	{
+#ifdef RTMP_MAC_PCI
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R27, bbpData);
+#endif // RTMP_MAC_PCI //
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R66, Value);
+		NStatus = STATUS_SUCCESS;
+	}
+
+	return NStatus;
+}
+
+#endif // RT35xx //
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.action.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.action.o.cmd
new file mode 100644
index 000000000..59eb9a434
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.action.o.cmd
@@ -0,0 +1,814 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/action.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.action.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(action)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.tmp_action.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/action.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/action.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/action.c \
+    $(wildcard include/config/sta/support.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/action.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/action.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/action.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/action.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.ba_action.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.ba_action.o.cmd
new file mode 100644
index 000000000..4c65724e9
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.ba_action.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/ba_action.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.ba_action.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(ba_action)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.tmp_ba_action.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/ba_action.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/ba_action.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/ba_action.c \
+    $(wildcard include/config/sta/support.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/ba_action.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/ba_action.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/ba_action.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_aes.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_aes.o.cmd
new file mode 100644
index 000000000..c57405db1
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_aes.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_aes.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.cmm_aes.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(cmm_aes)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.tmp_cmm_aes.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_aes.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_aes.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_aes.c \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+    $(wildcard include/config/sta/support.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_aes.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_aes.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_aes.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_asic.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_asic.o.cmd
new file mode 100644
index 000000000..f755b3a9a
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_asic.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_asic.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.cmm_asic.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(cmm_asic)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.tmp_cmm_asic.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_asic.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_asic.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_asic.c \
+    $(wildcard include/config/sta/support.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_asic.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_asic.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_asic.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_cfg.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_cfg.o.cmd
new file mode 100644
index 000000000..3041ec24b
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_cfg.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_cfg.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.cmm_cfg.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(cmm_cfg)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.tmp_cmm_cfg.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_cfg.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_cfg.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_cfg.c \
+    $(wildcard include/config/sta/support.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_cfg.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_cfg.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_cfg.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_cmd.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_cmd.o.cmd
new file mode 100644
index 000000000..fc9c1d059
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_cmd.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_cmd.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.cmm_cmd.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(cmm_cmd)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.tmp_cmm_cmd.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_cmd.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_cmd.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_cmd.c \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+    $(wildcard include/config/sta/support.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_cmd.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_cmd.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_cmd.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_data.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_data.o.cmd
new file mode 100644
index 000000000..c729be2af
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_data.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_data.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.cmm_data.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(cmm_data)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.tmp_cmm_data.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_data.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_data.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_data.c \
+    $(wildcard include/config/sta/support.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_data.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_data.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_data.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_data_pci.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_data_pci.o.cmd
new file mode 100644
index 000000000..2dabe0739
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_data_pci.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_data_pci.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.cmm_data_pci.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(cmm_data_pci)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.tmp_cmm_data_pci.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_data_pci.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_data_pci.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_data_pci.c \
+    $(wildcard include/config/sta/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_data_pci.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_data_pci.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_data_pci.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_info.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_info.o.cmd
new file mode 100644
index 000000000..029c251d0
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_info.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_info.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.cmm_info.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(cmm_info)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.tmp_cmm_info.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_info.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_info.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_info.c \
+    $(wildcard include/config/sta/support.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+    $(wildcard include/config/apsta/mixed/support.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_info.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_info.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_info.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_mac_pci.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_mac_pci.o.cmd
new file mode 100644
index 000000000..9335f7832
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_mac_pci.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_mac_pci.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.cmm_mac_pci.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(cmm_mac_pci)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.tmp_cmm_mac_pci.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_mac_pci.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_mac_pci.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_mac_pci.c \
+    $(wildcard include/config/sta/support.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_mac_pci.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_mac_pci.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_mac_pci.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_profile.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_profile.o.cmd
new file mode 100644
index 000000000..a0ed19572
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_profile.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_profile.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.cmm_profile.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(cmm_profile)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.tmp_cmm_profile.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_profile.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_profile.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_profile.c \
+    $(wildcard include/config/sta/support.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_profile.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_profile.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_profile.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_sanity.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_sanity.o.cmd
new file mode 100644
index 000000000..ded35629b
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_sanity.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_sanity.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.cmm_sanity.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(cmm_sanity)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.tmp_cmm_sanity.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_sanity.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_sanity.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_sanity.c \
+    $(wildcard include/config/sta/support.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_sanity.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_sanity.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_sanity.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_sync.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_sync.o.cmd
new file mode 100644
index 000000000..a8104dc1c
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_sync.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_sync.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.cmm_sync.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(cmm_sync)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.tmp_cmm_sync.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_sync.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_sync.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_sync.c \
+    $(wildcard include/config/sta/support.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_sync.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_sync.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_sync.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_tkip.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_tkip.o.cmd
new file mode 100644
index 000000000..e4955e127
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_tkip.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_tkip.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.cmm_tkip.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(cmm_tkip)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.tmp_cmm_tkip.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_tkip.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_tkip.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_tkip.c \
+    $(wildcard include/config/sta/support.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_tkip.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_tkip.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_tkip.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_wep.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_wep.o.cmd
new file mode 100644
index 000000000..a3b89356d
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_wep.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_wep.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.cmm_wep.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(cmm_wep)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.tmp_cmm_wep.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_wep.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_wep.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_wep.c \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+    $(wildcard include/config/sta/support.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_wep.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_wep.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_wep.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_wpa.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_wpa.o.cmd
new file mode 100644
index 000000000..c8a27f975
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.cmm_wpa.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_wpa.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.cmm_wpa.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(cmm_wpa)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.tmp_cmm_wpa.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_wpa.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_wpa.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_wpa.c \
+    $(wildcard include/config/sta/support.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_wpa.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_wpa.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_wpa.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.crypt_aes.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.crypt_aes.o.cmd
new file mode 100644
index 000000000..37b6dd03a
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.crypt_aes.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/crypt_aes.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.crypt_aes.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(crypt_aes)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.tmp_crypt_aes.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/crypt_aes.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/crypt_aes.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/crypt_aes.c \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+    $(wildcard include/config/sta/support.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/crypt_aes.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/crypt_aes.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/crypt_aes.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.crypt_arc4.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.crypt_arc4.o.cmd
new file mode 100644
index 000000000..0f19f6f51
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.crypt_arc4.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/crypt_arc4.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.crypt_arc4.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(crypt_arc4)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.tmp_crypt_arc4.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/crypt_arc4.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/crypt_arc4.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/crypt_arc4.c \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+    $(wildcard include/config/sta/support.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/crypt_arc4.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/crypt_arc4.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/crypt_arc4.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.crypt_hmac.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.crypt_hmac.o.cmd
new file mode 100644
index 000000000..01d51befa
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.crypt_hmac.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/crypt_hmac.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.crypt_hmac.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(crypt_hmac)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.tmp_crypt_hmac.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/crypt_hmac.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/crypt_hmac.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/crypt_hmac.c \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+    $(wildcard include/config/sta/support.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/crypt_hmac.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/crypt_hmac.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/crypt_hmac.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.crypt_md5.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.crypt_md5.o.cmd
new file mode 100644
index 000000000..55144963c
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.crypt_md5.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/crypt_md5.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.crypt_md5.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(crypt_md5)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.tmp_crypt_md5.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/crypt_md5.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/crypt_md5.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/crypt_md5.c \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+    $(wildcard include/config/sta/support.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/crypt_md5.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/crypt_md5.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/crypt_md5.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.crypt_sha2.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.crypt_sha2.o.cmd
new file mode 100644
index 000000000..5a78ad88e
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.crypt_sha2.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/crypt_sha2.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.crypt_sha2.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(crypt_sha2)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.tmp_crypt_sha2.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/crypt_sha2.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/crypt_sha2.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/crypt_sha2.c \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+    $(wildcard include/config/sta/support.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/crypt_sha2.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/crypt_sha2.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/crypt_sha2.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.dfs.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.dfs.o.cmd
new file mode 100644
index 000000000..86e6db728
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.dfs.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/dfs.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.dfs.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(dfs)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.tmp_dfs.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/dfs.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/dfs.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/dfs.c \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+    $(wildcard include/config/sta/support.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/dfs.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/dfs.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/dfs.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.ee_efuse.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.ee_efuse.o.cmd
new file mode 100644
index 000000000..008d43cf5
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.ee_efuse.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/ee_efuse.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.ee_efuse.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(ee_efuse)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.tmp_ee_efuse.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/ee_efuse.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/ee_efuse.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/ee_efuse.c \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+    $(wildcard include/config/sta/support.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/ee_efuse.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/ee_efuse.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/ee_efuse.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.ee_prom.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.ee_prom.o.cmd
new file mode 100644
index 000000000..67ce5d089
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.ee_prom.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/ee_prom.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.ee_prom.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(ee_prom)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.tmp_ee_prom.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/ee_prom.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/ee_prom.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/ee_prom.c \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+    $(wildcard include/config/sta/support.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/ee_prom.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/ee_prom.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/ee_prom.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.eeprom.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.eeprom.o.cmd
new file mode 100644
index 000000000..c183de901
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.eeprom.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/eeprom.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.eeprom.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(eeprom)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.tmp_eeprom.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/eeprom.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/eeprom.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/eeprom.c \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+    $(wildcard include/config/sta/support.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/eeprom.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/eeprom.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/eeprom.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.mlme.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.mlme.o.cmd
new file mode 100644
index 000000000..9905e8d5c
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.mlme.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/mlme.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.mlme.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(mlme)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.tmp_mlme.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/mlme.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/mlme.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/mlme.c \
+    $(wildcard include/config/sta/support.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/mlme.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/mlme.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/mlme.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.rt_channel.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.rt_channel.o.cmd
new file mode 100644
index 000000000..da8c81137
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.rt_channel.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rt_channel.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.rt_channel.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(rt_channel)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.tmp_rt_channel.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rt_channel.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rt_channel.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rt_channel.c \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+    $(wildcard include/config/sta/support.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rt_channel.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rt_channel.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rt_channel.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.rt_rf.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.rt_rf.o.cmd
new file mode 100644
index 000000000..b464627ef
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.rt_rf.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rt_rf.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.rt_rf.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(rt_rf)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.tmp_rt_rf.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rt_rf.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rt_rf.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rt_rf.c \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+    $(wildcard include/config/sta/support.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rt_rf.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rt_rf.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rt_rf.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.rtmp_init.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.rtmp_init.o.cmd
new file mode 100644
index 000000000..a33597039
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.rtmp_init.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rtmp_init.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.rtmp_init.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(rtmp_init)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.tmp_rtmp_init.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rtmp_init.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rtmp_init.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rtmp_init.c \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/sta/support.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/opmode/on/ap.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rtmp_init.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rtmp_init.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rtmp_init.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.rtmp_init_inf.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.rtmp_init_inf.o.cmd
new file mode 100644
index 000000000..055fa2aaa
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.rtmp_init_inf.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rtmp_init_inf.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.rtmp_init_inf.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(rtmp_init_inf)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.tmp_rtmp_init_inf.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rtmp_init_inf.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rtmp_init_inf.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rtmp_init_inf.c \
+    $(wildcard include/config/sta/support.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rtmp_init_inf.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rtmp_init_inf.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rtmp_init_inf.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.rtmp_mcu.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.rtmp_mcu.o.cmd
new file mode 100644
index 000000000..d0b20c2fc
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.rtmp_mcu.o.cmd
@@ -0,0 +1,814 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rtmp_mcu.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.rtmp_mcu.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(rtmp_mcu)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.tmp_rtmp_mcu.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rtmp_mcu.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rtmp_mcu.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rtmp_mcu.c \
+    $(wildcard include/config/sta/support.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/firmware.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rtmp_mcu.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rtmp_mcu.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rtmp_mcu.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.rtmp_timer.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.rtmp_timer.o.cmd
new file mode 100644
index 000000000..a31addbfc
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.rtmp_timer.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rtmp_timer.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.rtmp_timer.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(rtmp_timer)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.tmp_rtmp_timer.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rtmp_timer.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rtmp_timer.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rtmp_timer.c \
+    $(wildcard include/config/sta/support.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rtmp_timer.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rtmp_timer.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rtmp_timer.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.spectrum.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.spectrum.o.cmd
new file mode 100644
index 000000000..bcfc7098d
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/.spectrum.o.cmd
@@ -0,0 +1,814 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/spectrum.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.spectrum.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(spectrum)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/.tmp_spectrum.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/spectrum.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/spectrum.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/spectrum.c \
+    $(wildcard include/config/sta/support.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/action.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/spectrum.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/spectrum.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/spectrum.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/action.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/action.c
new file mode 100644
index 000000000..fecf10b85
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/action.c
@@ -0,0 +1,1134 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+    Module Name:
+	action.c
+ 
+    Abstract:
+    Handle association related requests either from WSTA or from local MLME
+ 
+    Revision History:
+    Who         When          What
+    --------    ----------    ----------------------------------------------
+	Jan Lee		2006	  	created for rt2860
+ */
+
+#include "rt_config.h"
+#include "action.h"
+
+extern UCHAR  ZeroSsid[32];
+
+static VOID ReservedAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem);
+
+
+/*  
+    ==========================================================================
+    Description: 
+        association state machine init, including state transition and timer init
+    Parameters: 
+        S - pointer to the association state machine
+    Note:
+        The state machine looks like the following 
+        
+                                    ASSOC_IDLE             
+        MT2_MLME_DISASSOC_REQ    mlme_disassoc_req_action 
+        MT2_PEER_DISASSOC_REQ    peer_disassoc_action     
+        MT2_PEER_ASSOC_REQ       drop                     
+        MT2_PEER_REASSOC_REQ     drop                     
+        MT2_CLS3ERR              cls3err_action           
+    ==========================================================================
+ */
+VOID ActionStateMachineInit(
+    IN	PRTMP_ADAPTER	pAd, 
+    IN  STATE_MACHINE *S, 
+    OUT STATE_MACHINE_FUNC Trans[]) 
+{
+	StateMachineInit(S, (STATE_MACHINE_FUNC *)Trans, MAX_ACT_STATE, MAX_ACT_MSG, (STATE_MACHINE_FUNC)Drop, ACT_IDLE, ACT_MACHINE_BASE);
+
+	StateMachineSetAction(S, ACT_IDLE, MT2_PEER_SPECTRUM_CATE, (STATE_MACHINE_FUNC)PeerSpectrumAction);
+	StateMachineSetAction(S, ACT_IDLE, MT2_PEER_QOS_CATE, (STATE_MACHINE_FUNC)PeerQOSAction);
+
+	StateMachineSetAction(S, ACT_IDLE, MT2_PEER_DLS_CATE, (STATE_MACHINE_FUNC)ReservedAction);
+#ifdef QOS_DLS_SUPPORT
+		StateMachineSetAction(S, ACT_IDLE, MT2_PEER_DLS_CATE, (STATE_MACHINE_FUNC)PeerDLSAction);
+#endif // QOS_DLS_SUPPORT //
+
+#ifdef DOT11_N_SUPPORT
+	StateMachineSetAction(S, ACT_IDLE, MT2_PEER_BA_CATE, (STATE_MACHINE_FUNC)PeerBAAction);
+	StateMachineSetAction(S, ACT_IDLE, MT2_PEER_HT_CATE, (STATE_MACHINE_FUNC)PeerHTAction);
+	StateMachineSetAction(S, ACT_IDLE, MT2_MLME_ADD_BA_CATE, (STATE_MACHINE_FUNC)MlmeADDBAAction);
+	StateMachineSetAction(S, ACT_IDLE, MT2_MLME_ORI_DELBA_CATE, (STATE_MACHINE_FUNC)MlmeDELBAAction);
+	StateMachineSetAction(S, ACT_IDLE, MT2_MLME_REC_DELBA_CATE, (STATE_MACHINE_FUNC)MlmeDELBAAction);
+#endif // DOT11_N_SUPPORT //
+
+	StateMachineSetAction(S, ACT_IDLE, MT2_PEER_PUBLIC_CATE, (STATE_MACHINE_FUNC)PeerPublicAction);
+	StateMachineSetAction(S, ACT_IDLE, MT2_PEER_RM_CATE, (STATE_MACHINE_FUNC)PeerRMAction);
+	
+	StateMachineSetAction(S, ACT_IDLE, MT2_MLME_QOS_CATE, (STATE_MACHINE_FUNC)MlmeQOSAction);
+	StateMachineSetAction(S, ACT_IDLE, MT2_MLME_DLS_CATE, (STATE_MACHINE_FUNC)MlmeDLSAction);
+	StateMachineSetAction(S, ACT_IDLE, MT2_ACT_INVALID, (STATE_MACHINE_FUNC)MlmeInvalidAction);
+
+
+}
+
+#ifdef DOT11_N_SUPPORT
+VOID MlmeADDBAAction(
+    IN PRTMP_ADAPTER pAd, 
+    IN MLME_QUEUE_ELEM *Elem) 
+
+{
+	MLME_ADDBA_REQ_STRUCT *pInfo;
+	UCHAR           Addr[6];
+	PUCHAR         pOutBuffer = NULL;
+	NDIS_STATUS     NStatus;
+	ULONG		Idx;
+	FRAME_ADDBA_REQ  Frame;
+	ULONG		FrameLen;
+	BA_ORI_ENTRY			*pBAEntry = NULL;
+
+	pInfo = (MLME_ADDBA_REQ_STRUCT *)Elem->Msg;
+	NdisZeroMemory(&Frame, sizeof(FRAME_ADDBA_REQ));
+	
+	if(MlmeAddBAReqSanity(pAd, Elem->Msg, Elem->MsgLen, Addr)) 
+	{
+		NStatus = MlmeAllocateMemory(pAd, &pOutBuffer);  //Get an unused nonpaged memory
+		if(NStatus != NDIS_STATUS_SUCCESS) 
+		{
+			DBGPRINT(RT_DEBUG_TRACE,("BA - MlmeADDBAAction() allocate memory failed \n"));
+			return;
+		}
+		// 1. find entry
+		Idx = pAd->MacTab.Content[pInfo->Wcid].BAOriWcidArray[pInfo->TID];
+		if (Idx == 0)
+		{
+			MlmeFreeMemory(pAd, pOutBuffer);
+			DBGPRINT(RT_DEBUG_ERROR,("BA - MlmeADDBAAction() can't find BAOriEntry \n"));
+			return;
+		} 
+		else
+		{
+			pBAEntry =&pAd->BATable.BAOriEntry[Idx];
+		}
+		
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		{
+			if (ADHOC_ON(pAd)
+#ifdef QOS_DLS_SUPPORT
+				|| (IS_ENTRY_DLS(&pAd->MacTab.Content[pInfo->Wcid]))
+#endif // QOS_DLS_SUPPORT //
+				)
+				ActHeaderInit(pAd, &Frame.Hdr, pInfo->pAddr, pAd->CurrentAddress, pAd->CommonCfg.Bssid);
+			else
+				ActHeaderInit(pAd, &Frame.Hdr, pAd->CommonCfg.Bssid, pAd->CurrentAddress, pInfo->pAddr);
+		}
+#endif // CONFIG_STA_SUPPORT // 
+
+		Frame.Category = CATEGORY_BA;
+		Frame.Action = ADDBA_REQ;
+		Frame.BaParm.AMSDUSupported = 0;
+		Frame.BaParm.BAPolicy = IMMED_BA;
+		Frame.BaParm.TID = pInfo->TID;
+		Frame.BaParm.BufSize = pInfo->BaBufSize;
+		Frame.Token = pInfo->Token;
+		Frame.TimeOutValue = pInfo->TimeOutValue;
+		Frame.BaStartSeq.field.FragNum = 0;
+		Frame.BaStartSeq.field.StartSeq = pAd->MacTab.Content[pInfo->Wcid].TxSeq[pInfo->TID];
+
+		*(USHORT *)(&Frame.BaParm) = cpu2le16(*(USHORT *)(&Frame.BaParm));
+		Frame.TimeOutValue = cpu2le16(Frame.TimeOutValue);
+		Frame.BaStartSeq.word = cpu2le16(Frame.BaStartSeq.word);
+
+		MakeOutgoingFrame(pOutBuffer,		   &FrameLen,
+		              sizeof(FRAME_ADDBA_REQ), &Frame,
+		              END_OF_ARGS);
+
+		MiniportMMRequest(pAd, (MGMT_USE_QUEUE_FLAG | MapUserPriorityToAccessCategory[pInfo->TID]), pOutBuffer, FrameLen);
+
+		MlmeFreeMemory(pAd, pOutBuffer);
+		
+		DBGPRINT(RT_DEBUG_TRACE, ("BA - Send ADDBA request. StartSeq = %x,  FrameLen = %ld. BufSize = %d\n", Frame.BaStartSeq.field.StartSeq, FrameLen, Frame.BaParm.BufSize));
+    }
+}
+
+/*
+    ==========================================================================
+    Description:
+        send DELBA and delete BaEntry if any
+    Parametrs:
+        Elem - MLME message MLME_DELBA_REQ_STRUCT
+        
+	IRQL = DISPATCH_LEVEL
+
+    ==========================================================================
+ */
+VOID MlmeDELBAAction(
+    IN PRTMP_ADAPTER pAd, 
+    IN MLME_QUEUE_ELEM *Elem) 
+{
+	MLME_DELBA_REQ_STRUCT *pInfo;
+	PUCHAR         pOutBuffer = NULL;
+	PUCHAR		   pOutBuffer2 = NULL;
+	NDIS_STATUS     NStatus;
+	ULONG		Idx;
+	FRAME_DELBA_REQ  Frame;
+	ULONG		FrameLen;
+	FRAME_BAR	FrameBar;
+	
+	pInfo = (MLME_DELBA_REQ_STRUCT *)Elem->Msg;	
+	// must send back DELBA 
+	NdisZeroMemory(&Frame, sizeof(FRAME_DELBA_REQ));
+	DBGPRINT(RT_DEBUG_TRACE, ("==> MlmeDELBAAction(), Initiator(%d) \n", pInfo->Initiator));
+	
+	if(MlmeDelBAReqSanity(pAd, Elem->Msg, Elem->MsgLen)) 
+	{
+		NStatus = MlmeAllocateMemory(pAd, &pOutBuffer);  //Get an unused nonpaged memory
+		if(NStatus != NDIS_STATUS_SUCCESS) 
+		{
+			DBGPRINT(RT_DEBUG_ERROR,("BA - MlmeDELBAAction() allocate memory failed 1. \n"));
+			return;
+		}
+
+		NStatus = MlmeAllocateMemory(pAd, &pOutBuffer2);  //Get an unused nonpaged memory
+		if(NStatus != NDIS_STATUS_SUCCESS) 
+		{
+			MlmeFreeMemory(pAd, pOutBuffer);
+			DBGPRINT(RT_DEBUG_ERROR, ("BA - MlmeDELBAAction() allocate memory failed 2. \n"));
+			return;
+		}
+
+		// SEND BAR (Send BAR to refresh peer reordering buffer.)
+		Idx = pAd->MacTab.Content[pInfo->Wcid].BAOriWcidArray[pInfo->TID];
+
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+			BarHeaderInit(pAd, &FrameBar, pAd->MacTab.Content[pInfo->Wcid].Addr, pAd->CurrentAddress);
+#endif // CONFIG_STA_SUPPORT //
+
+		FrameBar.StartingSeq.field.FragNum = 0; // make sure sequence not clear in DEL funciton.
+		FrameBar.StartingSeq.field.StartSeq = pAd->MacTab.Content[pInfo->Wcid].TxSeq[pInfo->TID]; // make sure sequence not clear in DEL funciton.
+		FrameBar.BarControl.TID = pInfo->TID; // make sure sequence not clear in DEL funciton.
+		FrameBar.BarControl.ACKPolicy = IMMED_BA; // make sure sequence not clear in DEL funciton.
+		FrameBar.BarControl.Compressed = 1; // make sure sequence not clear in DEL funciton.
+		FrameBar.BarControl.MTID = 0; // make sure sequence not clear in DEL funciton.
+
+		MakeOutgoingFrame(pOutBuffer2,				&FrameLen,
+					  sizeof(FRAME_BAR),	  &FrameBar,
+					  END_OF_ARGS);
+		MiniportMMRequest(pAd, QID_AC_BE, pOutBuffer2, FrameLen);
+		MlmeFreeMemory(pAd, pOutBuffer2);
+		DBGPRINT(RT_DEBUG_TRACE,("BA - MlmeDELBAAction() . Send BAR to refresh peer reordering buffer \n"));
+
+		// SEND DELBA FRAME
+		FrameLen = 0;
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		{
+			if (ADHOC_ON(pAd)
+#ifdef QOS_DLS_SUPPORT
+				|| (IS_ENTRY_DLS(&pAd->MacTab.Content[pInfo->Wcid]))
+#endif // QOS_DLS_SUPPORT //
+				)
+				ActHeaderInit(pAd, &Frame.Hdr, pAd->MacTab.Content[pInfo->Wcid].Addr, pAd->CurrentAddress, pAd->CommonCfg.Bssid);
+			else
+				ActHeaderInit(pAd, &Frame.Hdr,  pAd->CommonCfg.Bssid, pAd->CurrentAddress, pAd->MacTab.Content[pInfo->Wcid].Addr);
+		}
+#endif // CONFIG_STA_SUPPORT //
+		Frame.Category = CATEGORY_BA;
+		Frame.Action = DELBA;
+		Frame.DelbaParm.Initiator = pInfo->Initiator;
+		Frame.DelbaParm.TID = pInfo->TID;
+		Frame.ReasonCode = 39; // Time Out
+		*(USHORT *)(&Frame.DelbaParm) = cpu2le16(*(USHORT *)(&Frame.DelbaParm));
+		Frame.ReasonCode = cpu2le16(Frame.ReasonCode);
+		
+		MakeOutgoingFrame(pOutBuffer,               &FrameLen,
+		              sizeof(FRAME_DELBA_REQ),    &Frame,
+		              END_OF_ARGS);
+		MiniportMMRequest(pAd, QID_AC_BE, pOutBuffer, FrameLen);
+		MlmeFreeMemory(pAd, pOutBuffer);
+		DBGPRINT(RT_DEBUG_TRACE, ("BA - MlmeDELBAAction() . 3 DELBA sent. Initiator(%d)\n", pInfo->Initiator));
+    	}
+}
+#endif // DOT11_N_SUPPORT //
+
+VOID MlmeQOSAction(
+    IN PRTMP_ADAPTER pAd, 
+    IN MLME_QUEUE_ELEM *Elem) 
+{
+}
+
+VOID MlmeDLSAction(
+    IN PRTMP_ADAPTER pAd, 
+    IN MLME_QUEUE_ELEM *Elem) 
+{
+}
+
+VOID MlmeInvalidAction(
+    IN PRTMP_ADAPTER pAd, 
+    IN MLME_QUEUE_ELEM *Elem) 
+{
+	//PUCHAR		   pOutBuffer = NULL;
+	//Return the receiving frame except the MSB of category filed set to 1.  7.3.1.11
+}
+
+VOID PeerQOSAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+}
+
+#ifdef QOS_DLS_SUPPORT
+VOID PeerDLSAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+	UCHAR	Action = Elem->Msg[LENGTH_802_11+1];
+
+	switch(Action)
+	{
+		case ACTION_DLS_REQUEST:
+#ifdef CONFIG_STA_SUPPORT
+			IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+			PeerDlsReqAction(pAd, Elem);
+#endif // CONFIG_STA_SUPPORT //
+			break;
+
+		case ACTION_DLS_RESPONSE:
+#ifdef CONFIG_STA_SUPPORT
+			IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+			PeerDlsRspAction(pAd, Elem);
+#endif // CONFIG_STA_SUPPORT //
+			break;
+
+		case ACTION_DLS_TEARDOWN:
+#ifdef CONFIG_STA_SUPPORT
+			IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+			PeerDlsTearDownAction(pAd, Elem);
+#endif // CONFIG_STA_SUPPORT //
+			break;
+	}
+}
+#endif // QOS_DLS_SUPPORT //
+
+
+
+#ifdef DOT11_N_SUPPORT
+VOID PeerBAAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+	UCHAR	Action = Elem->Msg[LENGTH_802_11+1];
+	
+	switch(Action)
+	{
+		case ADDBA_REQ:
+			PeerAddBAReqAction(pAd,Elem);
+			break;
+		case ADDBA_RESP:
+			PeerAddBARspAction(pAd,Elem);
+			break;
+		case DELBA:
+			PeerDelBAAction(pAd,Elem);
+			break;
+	}
+}
+
+
+#ifdef DOT11N_DRAFT3
+
+#ifdef CONFIG_STA_SUPPORT
+VOID StaPublicAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN BSS_2040_COEXIST_IE *pBssCoexIE) 
+{
+	MLME_SCAN_REQ_STRUCT ScanReq;
+
+	DBGPRINT(RT_DEBUG_TRACE,("ACTION - StaPeerPublicAction  Bss2040Coexist = %x\n", *((PUCHAR)pBssCoexIE)));
+
+	// AP asks Station to return a 20/40 BSS Coexistence mgmt frame.  So we first starts a scan, then send back 20/40 BSS Coexistence mgmt frame 
+	if ((pBssCoexIE->field.InfoReq == 1) && (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_SCAN_2040)))
+	{
+		// Clear record first.  After scan , will update those bit and send back to transmiter.
+		pAd->CommonCfg.BSSCoexist2040.field.InfoReq = 1;
+		pAd->CommonCfg.BSSCoexist2040.field.Intolerant40 = 0;
+		pAd->CommonCfg.BSSCoexist2040.field.BSS20WidthReq = 0;
+		// Clear Trigger event table
+		TriEventInit(pAd);
+		// Fill out stuff for scan request  and kick to scan
+		ScanParmFill(pAd, &ScanReq, ZeroSsid, 0, BSS_ANY, SCAN_2040_BSS_COEXIST);
+		MlmeEnqueue(pAd, SYNC_STATE_MACHINE, MT2_MLME_SCAN_REQ, sizeof(MLME_SCAN_REQ_STRUCT), &ScanReq, 0);
+		pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_OID_LIST_SCAN;
+		RTMP_MLME_HANDLER(pAd);
+	}
+}
+
+
+/*
+Description : Build Intolerant Channel Rerpot from Trigger event table.
+return : how many bytes copied. 
+*/
+ULONG BuildIntolerantChannelRep(
+	IN	PRTMP_ADAPTER	pAd,
+	IN    PUCHAR  pDest) 
+{
+	ULONG			FrameLen = 0;
+	ULONG			ReadOffset = 0;
+	UCHAR			i, j, k, idx = 0;
+	//UCHAR			LastRegClass = 0xff;
+	UCHAR			ChannelList[MAX_TRIGGER_EVENT];
+	UCHAR			TmpRegClass;
+	UCHAR			RegClassArray[7] = {0, 11,12, 32, 33, 54,55}; // Those regulatory class has channel in 2.4GHz. See Annex J.
+
+
+	RTMPZeroMemory(ChannelList, MAX_TRIGGER_EVENT);
+
+	// Find every regulatory class
+	for ( k = 0;k < 7;k++)
+	{
+		TmpRegClass = RegClassArray[k];
+		
+		idx = 0;
+		// Find Channel report with the same regulatory class in 2.4GHz.
+		for ( i = 0;i < pAd->CommonCfg.TriggerEventTab.EventANo;i++)
+		{
+			if (pAd->CommonCfg.TriggerEventTab.EventA[i].bValid == TRUE)
+			{
+				if (pAd->CommonCfg.TriggerEventTab.EventA[i].RegClass == TmpRegClass)
+				{				
+					for (j = 0;j < idx;j++)
+					{
+						if (ChannelList[j] == (UCHAR)pAd->CommonCfg.TriggerEventTab.EventA[i].Channel)
+							break;
+					}
+					if ((j == idx))
+					{
+						ChannelList[idx] = (UCHAR)pAd->CommonCfg.TriggerEventTab.EventA[i].Channel;
+						idx++;
+					} 
+					pAd->CommonCfg.TriggerEventTab.EventA[i].bValid = FALSE;
+				}
+				DBGPRINT(RT_DEBUG_ERROR,("ACT - BuildIntolerantChannelRep , Total Channel number = %d \n", idx));
+			}
+		}
+
+		// idx > 0 means this regulatory class has some channel report and need to copy to the pDest.
+		if (idx > 0)
+		{
+			// For each regaulatory IE report, contains all channels that has the same regulatory class.
+			*(pDest + ReadOffset) = IE_2040_BSS_INTOLERANT_REPORT;  // IE
+			*(pDest + ReadOffset + 1) = 1+ idx;	// Len = RegClass byte + channel byte.
+			*(pDest + ReadOffset + 2) = TmpRegClass;	// Len = RegClass byte + channel byte.
+			RTMPMoveMemory(pDest + ReadOffset + 3, ChannelList, idx);
+
+			FrameLen += (3 + idx);
+			ReadOffset += (3 + idx);
+		}
+		
+	}
+
+	DBGPRINT(RT_DEBUG_ERROR,("ACT-BuildIntolerantChannelRep(Size=%ld)\n", FrameLen));
+	hex_dump("ACT-pDestMsg", pDest, 12);
+
+	return FrameLen;
+}
+
+/*	
+	==========================================================================
+	Description: 
+	After scan, Update 20/40 BSS Coexistence IE and send out.
+	According to 802.11n D3.03 11.14.10
+		
+	Parameters: 
+	==========================================================================
+ */
+VOID Update2040CoexistFrameAndNotify(
+	IN	PRTMP_ADAPTER	pAd,
+	IN    UCHAR  Wcid,
+	IN	BOOLEAN	bAddIntolerantCha) 
+{
+	BSS_2040_COEXIST_IE		OldValue;
+
+	DBGPRINT(RT_DEBUG_ERROR,("ACT - Update2040CoexistFrameAndNotify.BSSCoex=%x.EventANo=%d,EventBCD=%ld\n",
+					pAd->CommonCfg.BSSCoexist2040.word, 
+					pAd->CommonCfg.TriggerEventTab.EventANo,
+					pAd->CommonCfg.TriggerEventTab.EventBCountDown));
+	OldValue.word = pAd->CommonCfg.BSSCoexist2040.word;
+	// Reset value.
+	pAd->CommonCfg.BSSCoexist2040.word = 0;
+
+	if (pAd->CommonCfg.TriggerEventTab.EventBCountDown > 0)
+		pAd->CommonCfg.BSSCoexist2040.field.BSS20WidthReq = 1;	
+
+	// Need to check !!!!
+	// How STA will set Intolerant40 if implementation dependent. Now we don't set this bit first!!!!!
+	// So Only check BSS20WidthReq change.
+	//if (OldValue.field.BSS20WidthReq != pAd->CommonCfg.BSSCoexist2040.field.BSS20WidthReq)
+	{
+		Send2040CoexistAction(pAd, Wcid, bAddIntolerantCha);
+	}
+}
+
+/*
+Description : Send 20/40 BSS Coexistence Action frame If one trigger event is triggered.
+*/
+VOID Send2040CoexistAction(
+	IN	PRTMP_ADAPTER	pAd,
+	IN    UCHAR  Wcid,
+	IN	BOOLEAN	bAddIntolerantCha) 
+{
+	PUCHAR			pOutBuffer = NULL;
+	NDIS_STATUS 	NStatus;
+	FRAME_ACTION_HDR	Frame;
+	ULONG			FrameLen;
+	ULONG			IntolerantChaRepLen;
+	UCHAR			HtLen = 1;
+
+	IntolerantChaRepLen = 0;
+	NStatus = MlmeAllocateMemory(pAd, &pOutBuffer);  //Get an unused nonpaged memory
+	if(NStatus != NDIS_STATUS_SUCCESS) 
+	{
+		DBGPRINT(RT_DEBUG_ERROR,("ACT - Send2040CoexistAction() allocate memory failed \n"));
+		return;
+	}
+
+	ActHeaderInit(pAd, &Frame.Hdr, pAd->MacTab.Content[Wcid].Addr, pAd->CurrentAddress, pAd->CommonCfg.Bssid);	
+
+	Frame.Category = CATEGORY_PUBLIC;
+	Frame.Action = ACTION_BSS_2040_COEXIST; //COEXIST_2040_ACTION;
+	
+	MakeOutgoingFrame(pOutBuffer,				&FrameLen,
+				  sizeof(FRAME_ACTION_HDR),	  &Frame,
+				  1,                                &BssCoexistIe,
+				  1,                                &HtLen,
+				  1,                                &pAd->CommonCfg.BSSCoexist2040.word,
+				  END_OF_ARGS);
+	
+	if (bAddIntolerantCha == TRUE)
+		IntolerantChaRepLen = BuildIntolerantChannelRep(pAd, pOutBuffer + FrameLen);
+
+	//2009 PF#3: IOT issue with Motorola AP. It will not check the field of BSSCoexist2040.
+	//11.14.12 Switching between 40 MHz and 20 MHz
+	if (!((IntolerantChaRepLen == 0) && (pAd->CommonCfg.BSSCoexist2040.word == 0)))
+		MiniportMMRequest(pAd, QID_AC_BE, pOutBuffer, FrameLen + IntolerantChaRepLen);
+		
+	MlmeFreeMemory(pAd, pOutBuffer);
+	
+	DBGPRINT(RT_DEBUG_TRACE,("ACT - Send2040CoexistAction( BSSCoexist2040 = 0x%x )  \n", pAd->CommonCfg.BSSCoexist2040.word));
+}
+
+VOID UpdateBssScanParm(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	OVERLAP_BSS_SCAN_IE	APBssScan) 
+{									 
+	pAd->CommonCfg.Dot11BssWidthChanTranDelayFactor = le2cpu16(APBssScan.DelayFactor); //APBssScan.DelayFactor[1] * 256 + APBssScan.DelayFactor[0];
+	// out of range defined in MIB... So fall back to default value.
+	if ((pAd->CommonCfg.Dot11BssWidthChanTranDelayFactor <5) || (pAd->CommonCfg.Dot11BssWidthChanTranDelayFactor > 100))
+	{
+		//DBGPRINT(RT_DEBUG_ERROR,("ACT - UpdateBssScanParm( Dot11BssWidthChanTranDelayFactor out of range !!!!)  \n"));
+		pAd->CommonCfg.Dot11BssWidthChanTranDelayFactor = 5;
+	}
+
+	pAd->CommonCfg.Dot11BssWidthTriggerScanInt = le2cpu16(APBssScan.TriggerScanInt); //APBssScan.TriggerScanInt[1] * 256 + APBssScan.TriggerScanInt[0];
+	// out of range defined in MIB... So fall back to default value.
+	if ((pAd->CommonCfg.Dot11BssWidthTriggerScanInt < 10) ||(pAd->CommonCfg.Dot11BssWidthTriggerScanInt > 900))
+	{
+		//DBGPRINT(RT_DEBUG_ERROR,("ACT - UpdateBssScanParm( Dot11BssWidthTriggerScanInt out of range !!!!)  \n"));
+		pAd->CommonCfg.Dot11BssWidthTriggerScanInt = 900;
+	}
+		
+	pAd->CommonCfg.Dot11OBssScanPassiveDwell = le2cpu16(APBssScan.ScanPassiveDwell); //APBssScan.ScanPassiveDwell[1] * 256 + APBssScan.ScanPassiveDwell[0];
+	// out of range defined in MIB... So fall back to default value.
+	if ((pAd->CommonCfg.Dot11OBssScanPassiveDwell < 5) ||(pAd->CommonCfg.Dot11OBssScanPassiveDwell > 1000))
+	{
+		//DBGPRINT(RT_DEBUG_ERROR,("ACT - UpdateBssScanParm( Dot11OBssScanPassiveDwell out of range !!!!)  \n"));
+		pAd->CommonCfg.Dot11OBssScanPassiveDwell = 20;
+	}
+	
+	pAd->CommonCfg.Dot11OBssScanActiveDwell = le2cpu16(APBssScan.ScanActiveDwell); //APBssScan.ScanActiveDwell[1] * 256 + APBssScan.ScanActiveDwell[0];
+	// out of range defined in MIB... So fall back to default value.
+	if ((pAd->CommonCfg.Dot11OBssScanActiveDwell < 10) ||(pAd->CommonCfg.Dot11OBssScanActiveDwell > 1000))
+	{
+		//DBGPRINT(RT_DEBUG_ERROR,("ACT - UpdateBssScanParm( Dot11OBssScanActiveDwell out of range !!!!)  \n"));
+		pAd->CommonCfg.Dot11OBssScanActiveDwell = 10;
+	}
+	
+	pAd->CommonCfg.Dot11OBssScanPassiveTotalPerChannel = le2cpu16(APBssScan.PassiveTalPerChannel); //APBssScan.PassiveTalPerChannel[1] * 256 + APBssScan.PassiveTalPerChannel[0];
+	// out of range defined in MIB... So fall back to default value.
+	if ((pAd->CommonCfg.Dot11OBssScanPassiveTotalPerChannel < 200) ||(pAd->CommonCfg.Dot11OBssScanPassiveTotalPerChannel > 10000))
+	{
+		//DBGPRINT(RT_DEBUG_ERROR,("ACT - UpdateBssScanParm( Dot11OBssScanPassiveTotalPerChannel out of range !!!!)  \n"));
+		pAd->CommonCfg.Dot11OBssScanPassiveTotalPerChannel = 200;
+	}
+	
+	pAd->CommonCfg.Dot11OBssScanActiveTotalPerChannel = le2cpu16(APBssScan.ActiveTalPerChannel); //APBssScan.ActiveTalPerChannel[1] * 256 + APBssScan.ActiveTalPerChannel[0];
+	// out of range defined in MIB... So fall back to default value.
+	if ((pAd->CommonCfg.Dot11OBssScanActiveTotalPerChannel < 20) ||(pAd->CommonCfg.Dot11OBssScanActiveTotalPerChannel > 10000))
+	{
+		//DBGPRINT(RT_DEBUG_ERROR,("ACT - UpdateBssScanParm( Dot11OBssScanActiveTotalPerChannel out of range !!!!)  \n"));
+		pAd->CommonCfg.Dot11OBssScanActiveTotalPerChannel = 20;
+	}
+	
+	pAd->CommonCfg.Dot11OBssScanActivityThre = le2cpu16(APBssScan.ScanActThre); //APBssScan.ScanActThre[1] * 256 + APBssScan.ScanActThre[0];
+	// out of range defined in MIB... So fall back to default value.
+	if (pAd->CommonCfg.Dot11OBssScanActivityThre > 100)
+	{
+		//DBGPRINT(RT_DEBUG_ERROR,("ACT - UpdateBssScanParm( Dot11OBssScanActivityThre out of range !!!!)  \n"));
+		pAd->CommonCfg.Dot11OBssScanActivityThre = 25;
+	}
+
+	pAd->CommonCfg.Dot11BssWidthChanTranDelay = (pAd->CommonCfg.Dot11BssWidthTriggerScanInt * pAd->CommonCfg.Dot11BssWidthChanTranDelayFactor);
+	//DBGPRINT(RT_DEBUG_LOUD,("ACT - UpdateBssScanParm( Dot11BssWidthTriggerScanInt = %d )  \n", pAd->CommonCfg.Dot11BssWidthTriggerScanInt));
+}
+
+#endif // CONFIG_STA_SUPPORT //
+
+
+BOOLEAN ChannelSwitchSanityCheck(
+	IN	PRTMP_ADAPTER	pAd,
+	IN    UCHAR  Wcid,
+	IN    UCHAR  NewChannel,
+	IN    UCHAR  Secondary) 
+{
+	UCHAR		i;
+	
+	if (Wcid >= MAX_LEN_OF_MAC_TABLE)
+		return FALSE;
+
+	if ((NewChannel > 7) && (Secondary == 1))
+		return FALSE;
+
+	if ((NewChannel < 5) && (Secondary == 3))
+		return FALSE;
+
+	// 0. Check if new channel is in the channellist.
+	for (i = 0;i < pAd->ChannelListNum;i++)
+	{
+		if (pAd->ChannelList[i].Channel == NewChannel)
+		{
+			break;
+		}
+	}
+
+	if (i == pAd->ChannelListNum)
+		return FALSE;
+	
+	return TRUE;
+}
+
+
+VOID ChannelSwitchAction(
+	IN	PRTMP_ADAPTER	pAd,
+	IN    UCHAR  Wcid,
+	IN    UCHAR  NewChannel,
+	IN    UCHAR  Secondary) 
+{
+	UCHAR		BBPValue = 0;
+	ULONG		MACValue;
+	
+	DBGPRINT(RT_DEBUG_TRACE,("SPECTRUM - ChannelSwitchAction(NewChannel = %d , Secondary = %d)  \n", NewChannel, Secondary));
+
+	if (ChannelSwitchSanityCheck(pAd, Wcid, NewChannel, Secondary) == FALSE)
+		return;
+	
+	// 1.  Switches to BW = 20.
+	if (Secondary == 0)
+	{
+		RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R4, &BBPValue);
+		BBPValue&= (~0x18);
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R4, BBPValue);
+		if (pAd->MACVersion == 0x28600100)
+		{
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R69, 0x16);
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R70, 0x08);
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R73, 0x11);
+			DBGPRINT(RT_DEBUG_TRACE, ("!!!rt2860C !!! \n" ));
+		}
+		pAd->CommonCfg.BBPCurrentBW = BW_20;
+		pAd->CommonCfg.Channel = NewChannel;
+		pAd->CommonCfg.CentralChannel = pAd->CommonCfg.Channel;
+		AsicSwitchChannel(pAd, pAd->CommonCfg.Channel,FALSE);
+		AsicLockChannel(pAd, pAd->CommonCfg.Channel);
+		pAd->MacTab.Content[Wcid].HTPhyMode.field.BW = 0;
+		DBGPRINT(RT_DEBUG_TRACE, ("!!!20MHz   !!! \n" ));
+	}
+	// 1.  Switches to BW = 40 And Station supports BW = 40.
+	else if (((Secondary == 1) || (Secondary == 3)) && (pAd->CommonCfg.HtCapability.HtCapInfo.ChannelWidth == 1))
+	{
+		pAd->CommonCfg.Channel = NewChannel;
+
+		if (Secondary == 1)
+		{
+			// Secondary above.
+			pAd->CommonCfg.CentralChannel = pAd->CommonCfg.Channel + 2;
+			RTMP_IO_READ32(pAd, TX_BAND_CFG, &MACValue);
+			MACValue &= 0xfe;
+			RTMP_IO_WRITE32(pAd, TX_BAND_CFG, MACValue);
+			RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R4, &BBPValue);
+			BBPValue&= (~0x18);
+			BBPValue|= (0x10);
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R4, BBPValue);
+			RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R3, &BBPValue);
+			BBPValue&= (~0x20);
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R3, BBPValue);
+			DBGPRINT(RT_DEBUG_TRACE, ("!!!40MHz Lower LINK UP !!! Control Channel at Below. Central = %d \n", pAd->CommonCfg.CentralChannel ));
+		}
+		else
+		{
+			// Secondary below.
+			pAd->CommonCfg.CentralChannel = pAd->CommonCfg.Channel - 2;
+			RTMP_IO_READ32(pAd, TX_BAND_CFG, &MACValue);
+			MACValue &= 0xfe;
+			MACValue |= 0x1;
+			RTMP_IO_WRITE32(pAd, TX_BAND_CFG, MACValue);
+			RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R4, &BBPValue);
+			BBPValue&= (~0x18);
+			BBPValue|= (0x10);
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R4, BBPValue);
+			RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R3, &BBPValue);
+			BBPValue&= (~0x20);
+			BBPValue|= (0x20);
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R3, BBPValue);
+			DBGPRINT(RT_DEBUG_TRACE, ("!!!40MHz Upper LINK UP !!! Control Channel at UpperCentral = %d \n", pAd->CommonCfg.CentralChannel ));
+		}
+		pAd->CommonCfg.BBPCurrentBW = BW_40;
+		AsicSwitchChannel(pAd, pAd->CommonCfg.CentralChannel, FALSE);
+		AsicLockChannel(pAd, pAd->CommonCfg.CentralChannel);
+		pAd->MacTab.Content[Wcid].HTPhyMode.field.BW = 1;
+	}
+}
+#endif // DOT11N_DRAFT3 //
+#endif // DOT11_N_SUPPORT //
+
+VOID PeerPublicAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+#ifdef DOT11_N_SUPPORT
+#ifdef DOT11N_DRAFT3
+	UCHAR	Action = Elem->Msg[LENGTH_802_11+1];
+#endif // DOT11N_DRAFT3 //
+#endif // DOT11_N_SUPPORT //	
+	if (Elem->Wcid >= MAX_LEN_OF_MAC_TABLE)
+		return;
+
+#ifdef DOT11_N_SUPPORT
+#ifdef DOT11N_DRAFT3
+	switch(Action)
+	{
+		case ACTION_BSS_2040_COEXIST:	// Format defined in IEEE 7.4.7a.1 in 11n Draf3.03
+			{
+				//UCHAR	BssCoexist;
+				BSS_2040_COEXIST_ELEMENT		*pCoexistInfo;
+				BSS_2040_COEXIST_IE 			*pBssCoexistIe;
+				BSS_2040_INTOLERANT_CH_REPORT	*pIntolerantReport = NULL;
+				
+				if (Elem->MsgLen <= (LENGTH_802_11 + sizeof(BSS_2040_COEXIST_ELEMENT)) )
+				{
+					DBGPRINT(RT_DEBUG_ERROR, ("ACTION - 20/40 BSS Coexistence Management Frame length too short! len = %ld!\n", Elem->MsgLen));
+					break;
+				}			
+				DBGPRINT(RT_DEBUG_TRACE, ("ACTION - 20/40 BSS Coexistence Management action----> \n"));
+				hex_dump("CoexistenceMgmtFrame", Elem->Msg, Elem->MsgLen);
+
+				
+				pCoexistInfo = (BSS_2040_COEXIST_ELEMENT *) &Elem->Msg[LENGTH_802_11+2];
+				//hex_dump("CoexistInfo", (PUCHAR)pCoexistInfo, sizeof(BSS_2040_COEXIST_ELEMENT));
+				if (Elem->MsgLen >= (LENGTH_802_11 + sizeof(BSS_2040_COEXIST_ELEMENT) + sizeof(BSS_2040_INTOLERANT_CH_REPORT)))
+				{
+					pIntolerantReport = (BSS_2040_INTOLERANT_CH_REPORT *)((PUCHAR)pCoexistInfo + sizeof(BSS_2040_COEXIST_ELEMENT));
+				}
+				//hex_dump("IntolerantReport ", (PUCHAR)pIntolerantReport, sizeof(BSS_2040_INTOLERANT_CH_REPORT));
+				
+				if(pAd->CommonCfg.bBssCoexEnable == FALSE || (pAd->CommonCfg.bForty_Mhz_Intolerant == TRUE))
+				{
+					DBGPRINT(RT_DEBUG_TRACE, ("20/40 BSS CoexMgmt=%d, bForty_Mhz_Intolerant=%d, ignore this action!!\n", 
+												pAd->CommonCfg.bBssCoexEnable,
+												pAd->CommonCfg.bForty_Mhz_Intolerant));
+					break;
+				}
+
+				pBssCoexistIe = (BSS_2040_COEXIST_IE *)(&pCoexistInfo->BssCoexistIe);
+
+#ifdef CONFIG_STA_SUPPORT
+				IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+				{
+					if (INFRA_ON(pAd))
+					{
+						StaPublicAction(pAd, pBssCoexistIe);
+					}
+				}
+#endif // CONFIG_STA_SUPPORT //
+
+			}
+			break;
+	}
+
+#endif // DOT11N_DRAFT3 //
+#endif // DOT11_N_SUPPORT //
+
+}	
+
+
+static VOID ReservedAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem)
+{
+	UCHAR Category;
+
+	if (Elem->MsgLen <= LENGTH_802_11)
+	{
+		return;
+	}
+
+	Category = Elem->Msg[LENGTH_802_11];
+	DBGPRINT(RT_DEBUG_TRACE,("Rcv reserved category(%d) Action Frame\n", Category));
+	hex_dump("Reserved Action Frame", &Elem->Msg[0], Elem->MsgLen);
+}
+
+VOID PeerRMAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+
+{
+	return;
+}
+
+#ifdef DOT11_N_SUPPORT
+static VOID respond_ht_information_exchange_action(
+	IN PRTMP_ADAPTER pAd,
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+	PUCHAR			pOutBuffer = NULL;
+	NDIS_STATUS		NStatus;
+	ULONG			FrameLen;
+	FRAME_HT_INFO	HTINFOframe, *pFrame;
+	UCHAR   		*pAddr;
+
+
+	// 2. Always send back ADDBA Response 
+	NStatus = MlmeAllocateMemory(pAd, &pOutBuffer);	 //Get an unused nonpaged memory
+
+	if (NStatus != NDIS_STATUS_SUCCESS)
+	{
+		DBGPRINT(RT_DEBUG_TRACE,("ACTION - respond_ht_information_exchange_action() allocate memory failed \n"));
+		return;
+	}
+
+	// get RA
+	pFrame = (FRAME_HT_INFO *) &Elem->Msg[0];
+	pAddr = pFrame->Hdr.Addr2;
+
+	NdisZeroMemory(&HTINFOframe, sizeof(FRAME_HT_INFO));
+	// 2-1. Prepare ADDBA Response frame.
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+		if (ADHOC_ON(pAd))
+			ActHeaderInit(pAd, &HTINFOframe.Hdr, pAddr, pAd->CurrentAddress, pAd->CommonCfg.Bssid);
+		else
+		ActHeaderInit(pAd, &HTINFOframe.Hdr, pAd->CommonCfg.Bssid, pAd->CurrentAddress, pAddr);
+	}
+#endif // CONFIG_STA_SUPPORT //
+
+	HTINFOframe.Category = CATEGORY_HT;
+	HTINFOframe.Action = HT_INFO_EXCHANGE;
+	HTINFOframe.HT_Info.Request = 0;
+	HTINFOframe.HT_Info.Forty_MHz_Intolerant = pAd->CommonCfg.HtCapability.HtCapInfo.Forty_Mhz_Intolerant;
+	HTINFOframe.HT_Info.STA_Channel_Width	 = pAd->CommonCfg.AddHTInfo.AddHtInfo.RecomWidth;	
+
+	MakeOutgoingFrame(pOutBuffer,					&FrameLen,
+					  sizeof(FRAME_HT_INFO),	&HTINFOframe,
+					  END_OF_ARGS);
+
+	MiniportMMRequest(pAd, QID_AC_BE, pOutBuffer, FrameLen);
+	MlmeFreeMemory(pAd, pOutBuffer);
+}
+
+
+
+
+VOID PeerHTAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+	UCHAR	Action = Elem->Msg[LENGTH_802_11+1];
+	
+	if (Elem->Wcid >= MAX_LEN_OF_MAC_TABLE)
+		return;
+	
+	switch(Action)
+	{
+		case NOTIFY_BW_ACTION:
+			DBGPRINT(RT_DEBUG_TRACE,("ACTION - HT Notify Channel bandwidth action----> \n"));
+#ifdef CONFIG_STA_SUPPORT
+			if(pAd->StaActive.SupportedPhyInfo.bHtEnable == FALSE)
+			{
+				// Note, this is to patch DIR-1353 AP. When the AP set to Wep, it will use legacy mode. But AP still keeps 
+				// sending BW_Notify Action frame, and cause us to linkup and linkdown. 
+				// In legacy mode, don't need to parse HT action frame.
+				DBGPRINT(RT_DEBUG_TRACE,("ACTION -Ignore HT Notify Channel BW when link as legacy mode. BW = %d---> \n", 
+								Elem->Msg[LENGTH_802_11+2] ));
+				break;
+			}
+#endif // CONFIG_STA_SUPPORT //
+
+			if (Elem->Msg[LENGTH_802_11+2] == 0)	// 7.4.8.2. if value is 1, keep the same as supported channel bandwidth. 
+				pAd->MacTab.Content[Elem->Wcid].HTPhyMode.field.BW = 0;
+			else 
+			{
+				pAd->MacTab.Content[Elem->Wcid].HTPhyMode.field.BW = 
+					pAd->MacTab.Content[Elem->Wcid].MaxHTPhyMode.field.BW & pAd->CommonCfg.HtCapability.HtCapInfo.ChannelWidth;
+			}
+			
+			break;
+
+		case SMPS_ACTION:
+			// 7.3.1.25
+ 			DBGPRINT(RT_DEBUG_TRACE,("ACTION - SMPS action----> \n"));
+			if (((Elem->Msg[LENGTH_802_11+2]&0x1) == 0))
+			{
+				pAd->MacTab.Content[Elem->Wcid].MmpsMode = MMPS_ENABLE;
+			}
+			else if (((Elem->Msg[LENGTH_802_11+2]&0x2) == 0))
+			{
+				pAd->MacTab.Content[Elem->Wcid].MmpsMode = MMPS_STATIC;
+			}
+			else
+			{			
+				pAd->MacTab.Content[Elem->Wcid].MmpsMode = MMPS_DYNAMIC;
+			}
+
+			DBGPRINT(RT_DEBUG_TRACE,("Aid(%d) MIMO PS = %d\n", Elem->Wcid, pAd->MacTab.Content[Elem->Wcid].MmpsMode));
+			// rt2860c : add something for smps change.
+			break;
+ 
+		case SETPCO_ACTION:
+			break;
+			
+		case MIMO_CHA_MEASURE_ACTION:
+			break;
+			
+		case HT_INFO_EXCHANGE:
+			{			
+				HT_INFORMATION_OCTET	*pHT_info;
+
+				pHT_info = (HT_INFORMATION_OCTET *) &Elem->Msg[LENGTH_802_11+2];
+    				// 7.4.8.10
+    				DBGPRINT(RT_DEBUG_TRACE,("ACTION - HT Information Exchange action----> \n"));
+    				if (pHT_info->Request)
+    				{
+    					respond_ht_information_exchange_action(pAd, Elem);
+    				}
+			}
+    		break;
+	}
+}
+
+
+/*
+	==========================================================================
+	Description:
+		Retry sending ADDBA Reqest.
+		
+	IRQL = DISPATCH_LEVEL
+	
+	Parametrs:
+	p8023Header: if this is already 802.3 format, p8023Header is NULL
+	
+	Return	: TRUE if put into rx reordering buffer, shouldn't indicaterxhere.
+				FALSE , then continue indicaterx at this moment.
+	==========================================================================
+ */
+VOID ORIBATimerTimeout(
+	IN	PRTMP_ADAPTER	pAd) 
+{
+	MAC_TABLE_ENTRY	*pEntry;
+	INT			i, total;
+//	FRAME_BAR			FrameBar;
+//	ULONG			FrameLen;
+//	NDIS_STATUS 	NStatus;
+//	PUCHAR			pOutBuffer = NULL;
+//	USHORT			Sequence;
+	UCHAR			TID;
+
+#ifdef RALINK_ATE
+	if (ATE_ON(pAd))
+		return;
+#endif // RALINK_ATE //
+
+	total = pAd->MacTab.Size * NUM_OF_TID;
+
+	for (i = 1; ((i <MAX_LEN_OF_BA_ORI_TABLE) && (total > 0)) ; i++)
+	{
+		if  (pAd->BATable.BAOriEntry[i].ORI_BA_Status == Originator_Done)
+		{
+			pEntry = &pAd->MacTab.Content[pAd->BATable.BAOriEntry[i].Wcid];
+			TID = pAd->BATable.BAOriEntry[i].TID;
+
+			ASSERT(pAd->BATable.BAOriEntry[i].Wcid < MAX_LEN_OF_MAC_TABLE);
+		}
+		total --;
+	}
+}
+
+
+VOID SendRefreshBAR(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	MAC_TABLE_ENTRY	*pEntry) 
+{
+	FRAME_BAR		FrameBar;
+	ULONG			FrameLen;
+	NDIS_STATUS 	NStatus;
+	PUCHAR			pOutBuffer = NULL;
+	USHORT			Sequence;
+	UCHAR			i, TID;
+	USHORT			idx;
+	BA_ORI_ENTRY	*pBAEntry;
+
+	for (i = 0; i <NUM_OF_TID; i++)
+	{
+		idx = pEntry->BAOriWcidArray[i];
+		if (idx == 0)
+		{
+			continue;
+		}
+		pBAEntry = &pAd->BATable.BAOriEntry[idx];
+
+		if  (pBAEntry->ORI_BA_Status == Originator_Done)
+		{
+			TID = pBAEntry->TID;
+
+			ASSERT(pBAEntry->Wcid < MAX_LEN_OF_MAC_TABLE);
+
+			NStatus = MlmeAllocateMemory(pAd, &pOutBuffer);  //Get an unused nonpaged memory
+			if(NStatus != NDIS_STATUS_SUCCESS) 
+			{
+				DBGPRINT(RT_DEBUG_ERROR,("BA - MlmeADDBAAction() allocate memory failed \n"));
+				return;
+			}
+				
+			Sequence = pEntry->TxSeq[TID];
+
+
+#ifdef CONFIG_STA_SUPPORT
+			IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+				BarHeaderInit(pAd, &FrameBar, pEntry->Addr, pAd->CurrentAddress);
+#endif // CONFIG_STA_SUPPORT //
+
+			FrameBar.StartingSeq.field.FragNum = 0; // make sure sequence not clear in DEL function.
+			FrameBar.StartingSeq.field.StartSeq = Sequence; // make sure sequence not clear in DEL funciton.
+			FrameBar.BarControl.TID = TID; // make sure sequence not clear in DEL funciton.
+
+			MakeOutgoingFrame(pOutBuffer,				&FrameLen,
+							  sizeof(FRAME_BAR),	  &FrameBar,
+							  END_OF_ARGS);
+			//if (!(CLIENT_STATUS_TEST_FLAG(pEntry, fCLIENT_STATUS_RALINK_CHIPSET)))
+			if (1)	// Now we always send BAR.
+			{
+				//MiniportMMRequestUnlock(pAd, 0, pOutBuffer, FrameLen);
+				MiniportMMRequest(pAd, (MGMT_USE_QUEUE_FLAG | MapUserPriorityToAccessCategory[TID]), pOutBuffer, FrameLen);				
+
+			}
+			MlmeFreeMemory(pAd, pOutBuffer);
+		}
+	}
+}
+#endif // DOT11_N_SUPPORT //
+
+VOID ActHeaderInit(
+    IN	PRTMP_ADAPTER	pAd, 
+    IN OUT PHEADER_802_11 pHdr80211, 
+    IN PUCHAR Addr1, 
+    IN PUCHAR Addr2,
+    IN PUCHAR Addr3) 
+{
+    NdisZeroMemory(pHdr80211, sizeof(HEADER_802_11));
+    pHdr80211->FC.Type = BTYPE_MGMT;
+    pHdr80211->FC.SubType = SUBTYPE_ACTION;
+
+    COPY_MAC_ADDR(pHdr80211->Addr1, Addr1);
+	COPY_MAC_ADDR(pHdr80211->Addr2, Addr2);
+    COPY_MAC_ADDR(pHdr80211->Addr3, Addr3);
+}
+
+VOID BarHeaderInit(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN OUT PFRAME_BAR pCntlBar, 
+	IN PUCHAR pDA,
+	IN PUCHAR pSA) 
+{
+//	USHORT	Duration;
+
+	NdisZeroMemory(pCntlBar, sizeof(FRAME_BAR));
+	pCntlBar->FC.Type = BTYPE_CNTL;
+	pCntlBar->FC.SubType = SUBTYPE_BLOCK_ACK_REQ;
+   	pCntlBar->BarControl.MTID = 0;
+	pCntlBar->BarControl.Compressed = 1;
+	pCntlBar->BarControl.ACKPolicy = 0;
+
+
+	pCntlBar->Duration = 16 + RTMPCalcDuration(pAd, RATE_1, sizeof(FRAME_BA));
+
+	COPY_MAC_ADDR(pCntlBar->Addr1, pDA);
+	COPY_MAC_ADDR(pCntlBar->Addr2, pSA);
+}
+
+
+/*
+	==========================================================================
+	Description:
+		Insert Category and action code into the action frame.
+		
+	Parametrs:
+		1. frame buffer pointer.
+		2. frame length.
+		3. category code of the frame.
+		4. action code of the frame.
+	
+	Return	: None.
+	==========================================================================
+ */
+VOID InsertActField(
+	IN PRTMP_ADAPTER pAd,
+	OUT PUCHAR pFrameBuf,
+	OUT PULONG pFrameLen,
+	IN UINT8 Category,
+	IN UINT8 ActCode)
+{
+	ULONG TempLen;
+
+	MakeOutgoingFrame(	pFrameBuf,		&TempLen,
+						1,				&Category,
+						1,				&ActCode,
+						END_OF_ARGS);
+
+	*pFrameLen = *pFrameLen + TempLen;
+
+	return;
+}
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/ba_action.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/ba_action.c
new file mode 100644
index 000000000..7d9ede9a0
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/ba_action.c
@@ -0,0 +1,1798 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+ */
+
+
+#ifdef DOT11_N_SUPPORT
+
+#include "rt_config.h"
+
+
+
+#define BA_ORI_INIT_SEQ		(pEntry->TxSeq[TID]) //1			// inital sequence number of BA session
+
+#define ORI_SESSION_MAX_RETRY	8
+#define ORI_BA_SESSION_TIMEOUT	(2000)	// ms
+#define REC_BA_SESSION_IDLE_TIMEOUT	(1000)	// ms
+
+#define REORDERING_PACKET_TIMEOUT		((100 * OS_HZ)/1000)	// system ticks -- 100 ms
+#define MAX_REORDERING_PACKET_TIMEOUT	((3000 * OS_HZ)/1000)	// system ticks -- 100 ms
+
+#define RESET_RCV_SEQ		(0xFFFF)
+
+static void ba_mpdu_blk_free(PRTMP_ADAPTER pAd, struct reordering_mpdu *mpdu_blk);
+
+
+BA_ORI_ENTRY *BATableAllocOriEntry(
+								  IN  PRTMP_ADAPTER   pAd,
+								  OUT USHORT          *Idx);
+
+BA_REC_ENTRY *BATableAllocRecEntry(
+								  IN  PRTMP_ADAPTER   pAd,
+								  OUT USHORT          *Idx);
+
+VOID BAOriSessionSetupTimeout(
+    IN PVOID SystemSpecific1, 
+    IN PVOID FunctionContext, 
+    IN PVOID SystemSpecific2, 
+    IN PVOID SystemSpecific3);
+
+VOID BARecSessionIdleTimeout(
+    IN PVOID SystemSpecific1, 
+    IN PVOID FunctionContext, 
+    IN PVOID SystemSpecific2, 
+    IN PVOID SystemSpecific3);
+
+
+BUILD_TIMER_FUNCTION(BAOriSessionSetupTimeout);
+BUILD_TIMER_FUNCTION(BARecSessionIdleTimeout);
+
+#define ANNOUNCE_REORDERING_PACKET(_pAd, _mpdu_blk)	\
+			Announce_Reordering_Packet(_pAd, _mpdu_blk);
+
+VOID BA_MaxWinSizeReasign(
+	IN PRTMP_ADAPTER	pAd,
+	IN MAC_TABLE_ENTRY  *pEntryPeer,
+	OUT UCHAR			*pWinSize)
+{
+	UCHAR MaxSize;
+
+
+	if (pAd->MACVersion >= RALINK_2883_VERSION) // 3*3
+	{
+		if (pAd->MACVersion >= RALINK_3070_VERSION)
+		{
+			if (pEntryPeer->WepStatus != Ndis802_11EncryptionDisabled)
+				MaxSize = 7; // for non-open mode
+			else
+				MaxSize = 13;
+		}
+		else
+			MaxSize = 31;
+	}
+	else if (pAd->MACVersion >= RALINK_2880E_VERSION) // 2880 e
+	{
+		if (pEntryPeer->WepStatus != Ndis802_11EncryptionDisabled)
+			MaxSize = 7; // for non-open mode
+		else
+			MaxSize = 13;
+	}
+	else
+		MaxSize = 7;
+
+	DBGPRINT(RT_DEBUG_TRACE, ("ba> Win Size = %d, Max Size = %d\n", 
+			*pWinSize, MaxSize));
+
+	if ((*pWinSize) > MaxSize)
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("ba> reassign max win size from %d to %d\n", 
+				*pWinSize, MaxSize));
+
+		*pWinSize = MaxSize;
+	}
+}
+
+void Announce_Reordering_Packet(IN PRTMP_ADAPTER			pAd,
+								IN struct reordering_mpdu	*mpdu)
+{
+	PNDIS_PACKET    pPacket;
+
+	pPacket = mpdu->pPacket;
+
+	if (mpdu->bAMSDU)
+	{
+		//ASSERT(0);
+		BA_Reorder_AMSDU_Annnounce(pAd, pPacket);
+	}
+	else
+	{
+		//
+		// pass this 802.3 packet to upper layer or forward this packet to WM directly
+		// 
+
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+			ANNOUNCE_OR_FORWARD_802_3_PACKET(pAd, pPacket, RTMP_GET_PACKET_IF(pPacket));
+#endif // CONFIG_STA_SUPPORT //
+	}
+}
+
+/*
+ * Insert a reordering mpdu into sorted linked list by sequence no.
+ */
+BOOLEAN ba_reordering_mpdu_insertsorted(struct reordering_list *list, struct reordering_mpdu *mpdu)
+{
+
+	struct reordering_mpdu **ppScan = &list->next;
+
+	while (*ppScan != NULL)
+	{
+		if (SEQ_SMALLER((*ppScan)->Sequence, mpdu->Sequence, MAXSEQ))
+		{
+			ppScan = &(*ppScan)->next;          
+		}
+		else if ((*ppScan)->Sequence == mpdu->Sequence)
+		{
+			/* give up this duplicated frame */
+			return(FALSE);         
+		}
+		else
+		{
+			/* find position */
+			break;
+		}
+	}
+
+	mpdu->next = *ppScan;
+	*ppScan = mpdu;
+	list->qlen++;
+	return TRUE;
+}
+
+
+/*
+ * caller lock critical section if necessary
+ */
+static inline void ba_enqueue(struct reordering_list *list, struct reordering_mpdu *mpdu_blk)
+{
+	list->qlen++;
+	mpdu_blk->next = list->next;
+	list->next = mpdu_blk;
+}
+
+/*
+ * caller lock critical section if necessary
+ */
+static inline struct reordering_mpdu * ba_dequeue(struct reordering_list *list)
+{
+	struct reordering_mpdu *mpdu_blk = NULL;
+
+	ASSERT(list);
+
+		if (list->qlen)
+		{
+			list->qlen--;
+			mpdu_blk = list->next;
+			if (mpdu_blk)
+			{
+				list->next = mpdu_blk->next;
+				mpdu_blk->next = NULL;
+			}
+		}
+	return mpdu_blk;
+}
+
+
+static inline struct reordering_mpdu  *ba_reordering_mpdu_dequeue(struct reordering_list *list)
+{
+	return(ba_dequeue(list));
+}
+
+
+static inline struct reordering_mpdu  *ba_reordering_mpdu_probe(struct reordering_list *list)
+	{
+	ASSERT(list);
+
+		return(list->next);
+	}
+
+
+/* 
+ * free all resource for reordering mechanism 
+ */
+void ba_reordering_resource_release(PRTMP_ADAPTER pAd) 
+{
+	BA_TABLE        *Tab;
+	PBA_REC_ENTRY   pBAEntry;
+	struct reordering_mpdu *mpdu_blk;
+	int i;
+
+	Tab = &pAd->BATable;
+
+	/* I.  release all pending reordering packet */
+	NdisAcquireSpinLock(&pAd->BATabLock);
+	for (i = 0; i < MAX_LEN_OF_BA_REC_TABLE; i++)
+	{
+		pBAEntry = &Tab->BARecEntry[i];
+		if (pBAEntry->REC_BA_Status != Recipient_NONE)
+		{
+			while ((mpdu_blk = ba_reordering_mpdu_dequeue(&pBAEntry->list)))
+			{
+				ASSERT(mpdu_blk->pPacket);
+				RELEASE_NDIS_PACKET(pAd, mpdu_blk->pPacket, NDIS_STATUS_FAILURE);
+				ba_mpdu_blk_free(pAd, mpdu_blk);
+			}           
+		}
+	}
+	NdisReleaseSpinLock(&pAd->BATabLock);
+
+	ASSERT(pBAEntry->list.qlen == 0);
+	/* II. free memory of reordering mpdu table */
+	NdisAcquireSpinLock(&pAd->mpdu_blk_pool.lock);
+	os_free_mem(pAd, pAd->mpdu_blk_pool.mem);
+	NdisReleaseSpinLock(&pAd->mpdu_blk_pool.lock);
+}
+
+
+
+/* 
+ * Allocate all resource for reordering mechanism 
+ */
+BOOLEAN ba_reordering_resource_init(PRTMP_ADAPTER pAd, int num)
+{
+	int     i;
+	PUCHAR  mem;
+	struct reordering_mpdu *mpdu_blk;
+	struct reordering_list *freelist;
+
+	/* allocate spinlock */
+	NdisAllocateSpinLock(&pAd->mpdu_blk_pool.lock);
+
+	/* initialize freelist */
+	freelist = &pAd->mpdu_blk_pool.freelist;
+	freelist->next = NULL;
+	freelist->qlen = 0;
+
+	DBGPRINT(RT_DEBUG_TRACE, ("Allocate %d memory for BA reordering\n", (UINT32)(num*sizeof(struct reordering_mpdu))));
+
+	/* allocate number of mpdu_blk memory */
+	os_alloc_mem(pAd, (PUCHAR *)&mem, (num*sizeof(struct reordering_mpdu)));
+
+	pAd->mpdu_blk_pool.mem = mem;
+
+	if (mem == NULL)
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("Can't Allocate Memory for BA Reordering\n"));
+		return(FALSE);
+	}
+
+	/* build mpdu_blk free list */
+	for (i=0; i<num; i++)
+	{
+		/* get mpdu_blk */
+		mpdu_blk = (struct reordering_mpdu *) mem;
+		/* initial mpdu_blk */
+		NdisZeroMemory(mpdu_blk, sizeof(struct reordering_mpdu));
+		/* next mpdu_blk */
+		mem += sizeof(struct reordering_mpdu);
+		/* insert mpdu_blk into freelist */
+		ba_enqueue(freelist, mpdu_blk);
+	}
+
+	return(TRUE);
+}
+
+//static int blk_count=0; // sample take off, no use
+
+static struct reordering_mpdu *ba_mpdu_blk_alloc(PRTMP_ADAPTER pAd)
+{
+	struct reordering_mpdu *mpdu_blk;
+
+	NdisAcquireSpinLock(&pAd->mpdu_blk_pool.lock);
+	mpdu_blk = ba_dequeue(&pAd->mpdu_blk_pool.freelist);
+	if (mpdu_blk)
+	{
+//		blk_count++;
+		/* reset mpdu_blk */
+		NdisZeroMemory(mpdu_blk, sizeof(struct reordering_mpdu));
+	}
+	NdisReleaseSpinLock(&pAd->mpdu_blk_pool.lock);
+	return mpdu_blk;
+}
+
+static void ba_mpdu_blk_free(PRTMP_ADAPTER pAd, struct reordering_mpdu *mpdu_blk)
+{
+	ASSERT(mpdu_blk);
+
+	NdisAcquireSpinLock(&pAd->mpdu_blk_pool.lock);
+//	blk_count--;
+	ba_enqueue(&pAd->mpdu_blk_pool.freelist, mpdu_blk);
+	NdisReleaseSpinLock(&pAd->mpdu_blk_pool.lock);
+}
+
+
+static USHORT ba_indicate_reordering_mpdus_in_order(
+												   IN PRTMP_ADAPTER    pAd, 
+												   IN PBA_REC_ENTRY    pBAEntry,
+												   IN USHORT           StartSeq)
+{
+	struct reordering_mpdu *mpdu_blk;
+	USHORT  LastIndSeq = RESET_RCV_SEQ;
+
+	NdisAcquireSpinLock(&pBAEntry->RxReRingLock);
+
+	while ((mpdu_blk = ba_reordering_mpdu_probe(&pBAEntry->list)))
+		{
+			/* find in-order frame */
+		if (!SEQ_STEPONE(mpdu_blk->Sequence, StartSeq, MAXSEQ))
+			{
+				break;
+			}
+			/* dequeue in-order frame from reodering list */
+			mpdu_blk = ba_reordering_mpdu_dequeue(&pBAEntry->list);
+			/* pass this frame up */
+		ANNOUNCE_REORDERING_PACKET(pAd, mpdu_blk);
+		/* move to next sequence */
+			StartSeq = mpdu_blk->Sequence;
+		LastIndSeq = StartSeq;
+		/* free mpdu_blk */
+			ba_mpdu_blk_free(pAd, mpdu_blk);
+	}
+
+	NdisReleaseSpinLock(&pBAEntry->RxReRingLock);
+
+	/* update last indicated sequence */
+	return LastIndSeq;
+}
+
+static void ba_indicate_reordering_mpdus_le_seq(
+											   IN PRTMP_ADAPTER    pAd, 
+											   IN PBA_REC_ENTRY    pBAEntry,
+											   IN USHORT           Sequence)
+{
+	struct reordering_mpdu *mpdu_blk;
+
+	NdisAcquireSpinLock(&pBAEntry->RxReRingLock);
+	while ((mpdu_blk = ba_reordering_mpdu_probe(&pBAEntry->list)))
+		{
+			/* find in-order frame */
+		if ((mpdu_blk->Sequence == Sequence) || SEQ_SMALLER(mpdu_blk->Sequence, Sequence, MAXSEQ))
+		{
+			/* dequeue in-order frame from reodering list */
+			mpdu_blk = ba_reordering_mpdu_dequeue(&pBAEntry->list);
+			/* pass this frame up */
+			ANNOUNCE_REORDERING_PACKET(pAd, mpdu_blk);
+			/* free mpdu_blk */
+			ba_mpdu_blk_free(pAd, mpdu_blk);            
+		}
+		else
+			{
+				break;
+			}
+	}
+	NdisReleaseSpinLock(&pBAEntry->RxReRingLock);   
+}
+
+
+static void ba_refresh_reordering_mpdus(
+									   IN PRTMP_ADAPTER    pAd, 
+									   PBA_REC_ENTRY       pBAEntry)
+{
+	struct reordering_mpdu *mpdu_blk;
+
+	NdisAcquireSpinLock(&pBAEntry->RxReRingLock);
+
+			/* dequeue in-order frame from reodering list */
+	while ((mpdu_blk = ba_reordering_mpdu_dequeue(&pBAEntry->list)))
+	{
+			/* pass this frame up */
+		ANNOUNCE_REORDERING_PACKET(pAd, mpdu_blk);
+
+		pBAEntry->LastIndSeq = mpdu_blk->Sequence;
+			ba_mpdu_blk_free(pAd, mpdu_blk);
+			
+		/* update last indicated sequence */                    
+	}
+	ASSERT(pBAEntry->list.qlen == 0);
+	pBAEntry->LastIndSeq = RESET_RCV_SEQ;
+	NdisReleaseSpinLock(&pBAEntry->RxReRingLock);   
+}
+
+
+//static 
+void ba_flush_reordering_timeout_mpdus(
+									IN PRTMP_ADAPTER    pAd, 
+									IN PBA_REC_ENTRY    pBAEntry,
+									IN ULONG            Now32)
+
+{
+	USHORT Sequence;
+
+//	if ((RTMP_TIME_AFTER((unsigned long)Now32, (unsigned long)(pBAEntry->LastIndSeqAtTimer+REORDERING_PACKET_TIMEOUT)) &&
+//		 (pBAEntry->list.qlen > ((pBAEntry->BAWinSize*7)/8))) //||
+//		(RTMP_TIME_AFTER((unsigned long)Now32, (unsigned long)(pBAEntry->LastIndSeqAtTimer+(10*REORDERING_PACKET_TIMEOUT))) &&
+//		 (pBAEntry->list.qlen > (pBAEntry->BAWinSize/8)))
+	if (RTMP_TIME_AFTER((unsigned long)Now32, (unsigned long)(pBAEntry->LastIndSeqAtTimer+(MAX_REORDERING_PACKET_TIMEOUT/6))) 
+		 &&(pBAEntry->list.qlen > 1)
+		)
+	{
+		DBGPRINT(RT_DEBUG_TRACE,("timeout[%d] (%08lx-%08lx = %d > %d): %x, flush all!\n ", pBAEntry->list.qlen, Now32, (pBAEntry->LastIndSeqAtTimer), 
+			   (int)((long) Now32 - (long)(pBAEntry->LastIndSeqAtTimer)), MAX_REORDERING_PACKET_TIMEOUT,
+			   pBAEntry->LastIndSeq));
+		ba_refresh_reordering_mpdus(pAd, pBAEntry);
+		pBAEntry->LastIndSeqAtTimer = Now32;
+	}
+	else
+	if (RTMP_TIME_AFTER((unsigned long)Now32, (unsigned long)(pBAEntry->LastIndSeqAtTimer+(REORDERING_PACKET_TIMEOUT)))
+		&& (pBAEntry->list.qlen > 0)
+	   )
+		{
+//		DBGPRINT(RT_DEBUG_OFF, ("timeout[%d] (%lx-%lx = %d > %d): %x, ", pBAEntry->list.qlen, Now32, (pBAEntry->LastIndSeqAtTimer), 
+//			   (int)((long) Now32 - (long)(pBAEntry->LastIndSeqAtTimer)), REORDERING_PACKET_TIMEOUT,
+//			   pBAEntry->LastIndSeq));
+    		//
+		// force LastIndSeq to shift to LastIndSeq+1
+    		// 
+    		Sequence = (pBAEntry->LastIndSeq+1) & MAXSEQ;
+    		ba_indicate_reordering_mpdus_le_seq(pAd, pBAEntry, Sequence);
+    		pBAEntry->LastIndSeqAtTimer = Now32;
+			pBAEntry->LastIndSeq = Sequence;
+    		//
+    		// indicate in-order mpdus
+    		// 
+    		Sequence = ba_indicate_reordering_mpdus_in_order(pAd, pBAEntry, Sequence);
+    		if (Sequence != RESET_RCV_SEQ)
+    		{
+    			pBAEntry->LastIndSeq = Sequence;
+    		}
+
+		DBGPRINT(RT_DEBUG_OFF, ("%x, flush one!\n", pBAEntry->LastIndSeq));
+
+	}
+}
+
+
+/* 
+ * generate ADDBA request to 
+ * set up BA agreement
+ */
+VOID BAOriSessionSetUp(
+					  IN PRTMP_ADAPTER    pAd, 
+					  IN MAC_TABLE_ENTRY  *pEntry,
+					  IN UCHAR            TID,
+					  IN USHORT           TimeOut,
+					  IN ULONG            DelayTime,
+					  IN BOOLEAN          isForced)
+
+{
+	//MLME_ADDBA_REQ_STRUCT	AddbaReq;
+	BA_ORI_ENTRY            *pBAEntry = NULL;
+	USHORT                  Idx;
+	BOOLEAN                 Cancelled;
+
+	ASSERT(TID < NUM_OF_TID);
+    
+	if ((pAd->CommonCfg.BACapability.field.AutoBA != TRUE)  &&  (isForced == FALSE))
+		return;
+
+	// if this entry is limited to use legacy tx mode, it doesn't generate BA.  
+	if (RTMPStaFixedTxMode(pAd, pEntry) != FIXED_TXMODE_HT)
+		return;
+
+	if ((pEntry->BADeclineBitmap & (1<<TID)) && (isForced == FALSE))
+	{
+		// try again after 3 secs
+		DelayTime = 3000; 
+//		DBGPRINT(RT_DEBUG_TRACE, ("DeCline BA from Peer\n"));
+//		return;
+	}
+
+	
+	Idx = pEntry->BAOriWcidArray[TID];  
+	if (Idx == 0)
+	{
+		// allocate a BA session
+		pBAEntry = BATableAllocOriEntry(pAd, &Idx);     
+		if (pBAEntry == NULL)
+		{
+			DBGPRINT(RT_DEBUG_TRACE,("ADDBA - MlmeADDBAAction() allocate BA session failed \n"));
+			return;
+		}
+	}
+	else
+	{
+		pBAEntry =&pAd->BATable.BAOriEntry[Idx];
+	}
+
+	if (pBAEntry->ORI_BA_Status >= Originator_WaitRes)
+	{
+		return;
+	}
+
+	pEntry->BAOriWcidArray[TID] = Idx;
+
+	// Initialize BA session 
+	pBAEntry->ORI_BA_Status = Originator_WaitRes;       
+	pBAEntry->Wcid = pEntry->Aid;
+	pBAEntry->BAWinSize = pAd->CommonCfg.BACapability.field.RxBAWinLimit;   
+	pBAEntry->Sequence = BA_ORI_INIT_SEQ;
+	pBAEntry->Token = 1;	// (2008-01-21) Jan Lee recommends it - this token can't be 0
+	pBAEntry->TID = TID;
+	pBAEntry->TimeOutValue = TimeOut;   
+	pBAEntry->pAdapter = pAd;
+	
+	if (!(pEntry->TXBAbitmap & (1<<TID)))
+	{
+		RTMPInitTimer(pAd, &pBAEntry->ORIBATimer, GET_TIMER_FUNCTION(BAOriSessionSetupTimeout), pBAEntry, FALSE);
+	}
+	else
+		RTMPCancelTimer(&pBAEntry->ORIBATimer, &Cancelled);
+
+	// set timer to send ADDBA request 
+	RTMPSetTimer(&pBAEntry->ORIBATimer, DelayTime);
+}
+
+VOID BAOriSessionAdd(
+			IN PRTMP_ADAPTER    pAd, 
+					IN MAC_TABLE_ENTRY  *pEntry,
+			IN PFRAME_ADDBA_RSP pFrame)
+{
+	BA_ORI_ENTRY  *pBAEntry = NULL;
+	BOOLEAN       Cancelled;
+	UCHAR         TID;
+	USHORT        Idx;
+	PUCHAR          pOutBuffer2 = NULL;
+	NDIS_STATUS     NStatus;
+	ULONG           FrameLen;
+	FRAME_BAR       FrameBar;
+
+	TID = pFrame->BaParm.TID;
+	Idx = pEntry->BAOriWcidArray[TID];  
+	pBAEntry =&pAd->BATable.BAOriEntry[Idx];
+
+	// Start fill in parameters.
+	if ((Idx !=0) && (pBAEntry->TID == TID) && (pBAEntry->ORI_BA_Status == Originator_WaitRes))
+	{
+		pBAEntry->BAWinSize = min(pBAEntry->BAWinSize, ((UCHAR)pFrame->BaParm.BufSize));
+		BA_MaxWinSizeReasign(pAd, pEntry, &pBAEntry->BAWinSize);
+
+		pBAEntry->TimeOutValue = pFrame->TimeOutValue;
+		pBAEntry->ORI_BA_Status = Originator_Done;
+		pAd->BATable.numDoneOriginator ++;
+		
+		// reset sequence number 
+		pBAEntry->Sequence = BA_ORI_INIT_SEQ;
+		// Set Bitmap flag.
+		pEntry->TXBAbitmap |= (1<<TID);
+				RTMPCancelTimer(&pBAEntry->ORIBATimer, &Cancelled);
+
+		pBAEntry->ORIBATimer.TimerValue = 0;	//pFrame->TimeOutValue;
+
+		DBGPRINT(RT_DEBUG_TRACE,("%s : TXBAbitmap = %x, BAWinSize = %d, TimeOut = %ld\n", __FUNCTION__, pEntry->TXBAbitmap, 
+								 pBAEntry->BAWinSize, pBAEntry->ORIBATimer.TimerValue));
+
+		// SEND BAR ;
+		NStatus = MlmeAllocateMemory(pAd, &pOutBuffer2);  //Get an unused nonpaged memory
+		if (NStatus != NDIS_STATUS_SUCCESS)
+		{
+			DBGPRINT(RT_DEBUG_TRACE,("BA - BAOriSessionAdd() allocate memory failed \n"));
+			return;
+		}
+
+
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+			BarHeaderInit(pAd, &FrameBar, pAd->MacTab.Content[pBAEntry->Wcid].Addr, pAd->CurrentAddress);
+#endif // CONFIG_STA_SUPPORT //
+
+		FrameBar.StartingSeq.field.FragNum = 0;	// make sure sequence not clear in DEL function.
+		FrameBar.StartingSeq.field.StartSeq = pBAEntry->Sequence; // make sure sequence not clear in DEL funciton.
+		FrameBar.BarControl.TID = pBAEntry->TID; // make sure sequence not clear in DEL funciton.
+		MakeOutgoingFrame(pOutBuffer2,              &FrameLen,
+						  sizeof(FRAME_BAR),      &FrameBar,
+					  END_OF_ARGS);
+		MiniportMMRequest(pAd, QID_AC_BE, pOutBuffer2, FrameLen);
+		MlmeFreeMemory(pAd, pOutBuffer2);
+
+
+		if (pBAEntry->ORIBATimer.TimerValue)
+			RTMPSetTimer(&pBAEntry->ORIBATimer, pBAEntry->ORIBATimer.TimerValue); // in mSec 
+	}
+}
+
+BOOLEAN BARecSessionAdd(
+					   IN PRTMP_ADAPTER    pAd, 
+					   IN MAC_TABLE_ENTRY  *pEntry,
+					   IN PFRAME_ADDBA_REQ pFrame)
+{
+	BA_REC_ENTRY            *pBAEntry = NULL;
+	BOOLEAN                 Status = TRUE;
+	BOOLEAN                 Cancelled;
+	USHORT                  Idx;
+	UCHAR                   TID;
+	UCHAR                   BAWinSize;
+	//UINT32                  Value;
+	//UINT                    offset;
+
+
+	ASSERT(pEntry);
+
+	// find TID
+	TID = pFrame->BaParm.TID;
+
+	BAWinSize = min(((UCHAR)pFrame->BaParm.BufSize), (UCHAR)pAd->CommonCfg.BACapability.field.RxBAWinLimit);
+
+	// Intel patch
+	if (BAWinSize == 0)
+	{
+		BAWinSize = 64;
+	}
+
+	// get software BA rec array index, Idx
+	Idx = pEntry->BARecWcidArray[TID];
+
+
+	if (Idx == 0)
+	{
+		// allocate new array entry for the new session
+		pBAEntry = BATableAllocRecEntry(pAd, &Idx);     
+	}
+	else
+	{
+		pBAEntry = &pAd->BATable.BARecEntry[Idx];
+		// flush all pending reordering mpdus
+		ba_refresh_reordering_mpdus(pAd, pBAEntry);
+	}
+
+	DBGPRINT(RT_DEBUG_TRACE,("%s(%ld): Idx = %d, BAWinSize(req %d) = %d\n", __FUNCTION__, pAd->BATable.numAsRecipient, Idx, 
+							 pFrame->BaParm.BufSize, BAWinSize));
+
+	// Start fill in parameters.
+	if (pBAEntry != NULL)
+	{
+		ASSERT(pBAEntry->list.qlen == 0);
+
+		pBAEntry->REC_BA_Status = Recipient_HandleRes;
+		pBAEntry->BAWinSize = BAWinSize;
+		pBAEntry->Wcid = pEntry->Aid;
+		pBAEntry->TID = TID;
+		pBAEntry->TimeOutValue = pFrame->TimeOutValue;
+		pBAEntry->REC_BA_Status = Recipient_Accept;
+		// initial sequence number 
+		pBAEntry->LastIndSeq = RESET_RCV_SEQ; //pFrame->BaStartSeq.field.StartSeq;
+
+		DBGPRINT(RT_DEBUG_OFF, ("Start Seq = %08x\n",  pFrame->BaStartSeq.field.StartSeq));
+
+		if (pEntry->RXBAbitmap & (1<<TID))
+		{
+			RTMPCancelTimer(&pBAEntry->RECBATimer, &Cancelled);
+		}
+		else
+		{
+			RTMPInitTimer(pAd, &pBAEntry->RECBATimer, GET_TIMER_FUNCTION(BARecSessionIdleTimeout), pBAEntry, TRUE);
+		}
+
+
+		// Set Bitmap flag.
+		pEntry->RXBAbitmap |= (1<<TID);
+		pEntry->BARecWcidArray[TID] = Idx;
+
+		pEntry->BADeclineBitmap &= ~(1<<TID);
+
+		// Set BA session mask in WCID table.
+		RTMP_ADD_BA_SESSION_TO_ASIC(pAd, pEntry->Aid, TID);
+
+		DBGPRINT(RT_DEBUG_TRACE,("MACEntry[%d]RXBAbitmap = 0x%x. BARecWcidArray=%d\n", 
+				pEntry->Aid, pEntry->RXBAbitmap, pEntry->BARecWcidArray[TID]));
+	}
+	else
+	{
+		Status = FALSE;
+		DBGPRINT(RT_DEBUG_TRACE,("Can't Accept ADDBA for %02x:%02x:%02x:%02x:%02x:%02x TID = %d\n", 
+				PRINT_MAC(pEntry->Addr), TID));
+	}
+	return(Status);
+}
+
+
+BA_REC_ENTRY *BATableAllocRecEntry(
+								  IN  PRTMP_ADAPTER   pAd,
+								  OUT USHORT          *Idx)
+{
+	int             i;
+	BA_REC_ENTRY    *pBAEntry = NULL;
+
+
+	NdisAcquireSpinLock(&pAd->BATabLock);
+
+	if (pAd->BATable.numAsRecipient >= (MAX_LEN_OF_BA_REC_TABLE - 1))
+	{
+		DBGPRINT(RT_DEBUG_OFF, ("BA Recipeint Session (%ld) > %d\n", 
+							pAd->BATable.numAsRecipient, (MAX_LEN_OF_BA_REC_TABLE - 1)));
+		goto done;
+	}
+
+	// reserve idx 0 to identify BAWcidArray[TID] as empty
+	for (i=1; i < MAX_LEN_OF_BA_REC_TABLE; i++)
+	{
+		pBAEntry =&pAd->BATable.BARecEntry[i];
+		if ((pBAEntry->REC_BA_Status == Recipient_NONE))
+		{
+			// get one 
+			pAd->BATable.numAsRecipient++;
+			pBAEntry->REC_BA_Status = Recipient_USED;
+			*Idx = i;
+			break;
+		}
+	}
+
+done:
+	NdisReleaseSpinLock(&pAd->BATabLock);
+	return pBAEntry;
+}
+
+BA_ORI_ENTRY *BATableAllocOriEntry(
+								  IN  PRTMP_ADAPTER   pAd,
+								  OUT USHORT          *Idx)
+{
+	int             i;
+	BA_ORI_ENTRY    *pBAEntry = NULL;
+
+	NdisAcquireSpinLock(&pAd->BATabLock);
+
+	if (pAd->BATable.numAsOriginator >= (MAX_LEN_OF_BA_ORI_TABLE - 1))
+	{
+		goto done;
+	}
+		
+	// reserve idx 0 to identify BAWcidArray[TID] as empty
+	for (i=1; i<MAX_LEN_OF_BA_ORI_TABLE; i++)
+	{
+		pBAEntry =&pAd->BATable.BAOriEntry[i];
+		if ((pBAEntry->ORI_BA_Status == Originator_NONE))
+		{
+			// get one 
+			pAd->BATable.numAsOriginator++;
+			pBAEntry->ORI_BA_Status = Originator_USED;
+			pBAEntry->pAdapter = pAd;
+			*Idx = i;
+			break;
+		}
+	}
+
+done:
+	NdisReleaseSpinLock(&pAd->BATabLock);
+	return pBAEntry;
+}
+
+
+VOID BATableFreeOriEntry(
+						IN  PRTMP_ADAPTER   pAd,
+						IN  ULONG           Idx)
+{
+	BA_ORI_ENTRY    *pBAEntry = NULL;
+	MAC_TABLE_ENTRY *pEntry;
+
+
+	if ((Idx == 0) || (Idx >= MAX_LEN_OF_BA_ORI_TABLE))
+		return;
+
+	pBAEntry =&pAd->BATable.BAOriEntry[Idx];
+
+	if (pBAEntry->ORI_BA_Status != Originator_NONE)
+	{
+		pEntry = &pAd->MacTab.Content[pBAEntry->Wcid];
+		pEntry->BAOriWcidArray[pBAEntry->TID] = 0;
+
+
+		NdisAcquireSpinLock(&pAd->BATabLock);
+		if (pBAEntry->ORI_BA_Status == Originator_Done)
+		{
+			pAd->BATable.numDoneOriginator -= 1;
+		 	pEntry->TXBAbitmap &= (~(1<<(pBAEntry->TID) ));
+			DBGPRINT(RT_DEBUG_TRACE, ("BATableFreeOriEntry numAsOriginator= %ld\n", pAd->BATable.numAsRecipient));
+			// Erase Bitmap flag.
+		}
+	
+		ASSERT(pAd->BATable.numAsOriginator != 0);
+
+		pAd->BATable.numAsOriginator -= 1;
+		
+		pBAEntry->ORI_BA_Status = Originator_NONE;
+		pBAEntry->Token = 0;
+		NdisReleaseSpinLock(&pAd->BATabLock);
+	}
+}
+
+
+VOID BATableFreeRecEntry(
+						IN  PRTMP_ADAPTER   pAd,
+						IN  ULONG           Idx)
+{
+	BA_REC_ENTRY    *pBAEntry = NULL;
+	MAC_TABLE_ENTRY *pEntry;
+
+
+	if ((Idx == 0) || (Idx >= MAX_LEN_OF_BA_REC_TABLE))
+		return;
+
+	pBAEntry =&pAd->BATable.BARecEntry[Idx];
+
+	if (pBAEntry->REC_BA_Status != Recipient_NONE)
+	{
+		pEntry = &pAd->MacTab.Content[pBAEntry->Wcid];
+		pEntry->BARecWcidArray[pBAEntry->TID] = 0;
+
+		NdisAcquireSpinLock(&pAd->BATabLock);
+		
+		ASSERT(pAd->BATable.numAsRecipient != 0);
+
+		pAd->BATable.numAsRecipient -= 1;
+
+		pBAEntry->REC_BA_Status = Recipient_NONE;
+		NdisReleaseSpinLock(&pAd->BATabLock);
+	}
+}
+
+
+VOID BAOriSessionTearDown(
+						 IN OUT  PRTMP_ADAPTER   pAd, 
+						 IN      UCHAR           Wcid,
+						 IN      UCHAR           TID,
+						 IN      BOOLEAN         bPassive,
+						 IN      BOOLEAN         bForceSend)
+{
+	ULONG           Idx = 0;
+	BA_ORI_ENTRY    *pBAEntry;
+	BOOLEAN         Cancelled;
+
+	if (Wcid >= MAX_LEN_OF_MAC_TABLE)
+	{
+		return;
+	}
+
+	//
+	// Locate corresponding BA Originator Entry in BA Table with the (pAddr,TID).
+	//
+	Idx = pAd->MacTab.Content[Wcid].BAOriWcidArray[TID];
+	if ((Idx == 0) || (Idx >= MAX_LEN_OF_BA_ORI_TABLE))
+	{
+		if (bForceSend == TRUE)
+		{
+			// force send specified TID DelBA
+			MLME_DELBA_REQ_STRUCT   DelbaReq;   
+			MLME_QUEUE_ELEM *Elem = (MLME_QUEUE_ELEM *) kmalloc(sizeof(MLME_QUEUE_ELEM), MEM_ALLOC_FLAG);
+			if (Elem != NULL)
+			{
+				NdisZeroMemory(&DelbaReq, sizeof(DelbaReq));
+				NdisZeroMemory(Elem, sizeof(MLME_QUEUE_ELEM));
+			
+				COPY_MAC_ADDR(DelbaReq.Addr, pAd->MacTab.Content[Wcid].Addr);
+				DelbaReq.Wcid = Wcid;
+				DelbaReq.TID = TID;
+				DelbaReq.Initiator = ORIGINATOR;
+				Elem->MsgLen  = sizeof(DelbaReq);			
+				NdisMoveMemory(Elem->Msg, &DelbaReq, sizeof(DelbaReq));
+				MlmeDELBAAction(pAd, Elem);
+				kfree(Elem);
+			}
+			else
+			{
+				DBGPRINT(RT_DEBUG_ERROR, ("%s(bForceSend):alloc memory failed!\n", __FUNCTION__));
+			}
+		}
+
+		return;
+	}
+
+	DBGPRINT(RT_DEBUG_TRACE,("%s===>Wcid=%d.TID=%d \n", __FUNCTION__, Wcid, TID));
+
+	pBAEntry = &pAd->BATable.BAOriEntry[Idx];
+	DBGPRINT(RT_DEBUG_TRACE,("\t===>Idx = %ld, Wcid=%d.TID=%d, ORI_BA_Status = %d \n", Idx, Wcid, TID, pBAEntry->ORI_BA_Status));
+	//
+	// Prepare DelBA action frame and send to the peer.
+	//
+	if ((bPassive == FALSE) && (TID == pBAEntry->TID) && (pBAEntry->ORI_BA_Status == Originator_Done))
+	{
+		MLME_DELBA_REQ_STRUCT   DelbaReq;   
+		MLME_QUEUE_ELEM *Elem = (MLME_QUEUE_ELEM *) kmalloc(sizeof(MLME_QUEUE_ELEM), MEM_ALLOC_FLAG);
+		if (Elem != NULL)
+		{
+			NdisZeroMemory(&DelbaReq, sizeof(DelbaReq));
+			NdisZeroMemory(Elem, sizeof(MLME_QUEUE_ELEM));
+		
+			COPY_MAC_ADDR(DelbaReq.Addr, pAd->MacTab.Content[Wcid].Addr);
+			DelbaReq.Wcid = Wcid;
+			DelbaReq.TID = pBAEntry->TID;
+			DelbaReq.Initiator = ORIGINATOR;
+			Elem->MsgLen  = sizeof(DelbaReq);			
+			NdisMoveMemory(Elem->Msg, &DelbaReq, sizeof(DelbaReq));
+			MlmeDELBAAction(pAd, Elem);
+			kfree(Elem);
+		}
+		else
+		{
+			DBGPRINT(RT_DEBUG_ERROR, ("%s():alloc memory failed!\n", __FUNCTION__));
+			return;
+		}
+	}
+	RTMPCancelTimer(&pBAEntry->ORIBATimer, &Cancelled);
+	BATableFreeOriEntry(pAd, Idx);
+
+	if (bPassive)
+	{
+		//BAOriSessionSetUp(pAd, &pAd->MacTab.Content[Wcid], TID, 0, 10000, TRUE);
+	}
+}
+
+VOID BARecSessionTearDown(
+						 IN OUT  PRTMP_ADAPTER   pAd, 
+						 IN      UCHAR           Wcid,
+						 IN      UCHAR           TID,
+						 IN      BOOLEAN         bPassive)
+{
+	ULONG           Idx = 0;
+	BA_REC_ENTRY    *pBAEntry;
+
+	if (Wcid >= MAX_LEN_OF_MAC_TABLE)
+	{
+		return;
+	}
+
+	//
+	//  Locate corresponding BA Originator Entry in BA Table with the (pAddr,TID).
+	//
+	Idx = pAd->MacTab.Content[Wcid].BARecWcidArray[TID];
+	if (Idx == 0)
+		return;
+
+	DBGPRINT(RT_DEBUG_TRACE,("%s===>Wcid=%d.TID=%d \n", __FUNCTION__, Wcid, TID));
+	
+
+	pBAEntry = &pAd->BATable.BARecEntry[Idx];
+	DBGPRINT(RT_DEBUG_TRACE,("\t===>Idx = %ld, Wcid=%d.TID=%d, REC_BA_Status = %d \n", Idx, Wcid, TID, pBAEntry->REC_BA_Status));
+	//
+	// Prepare DelBA action frame and send to the peer.
+	//
+	if ((TID == pBAEntry->TID) && (pBAEntry->REC_BA_Status == Recipient_Accept))
+	{
+		MLME_DELBA_REQ_STRUCT   DelbaReq;
+		BOOLEAN 				Cancelled;
+		//ULONG   offset; 
+		//UINT32  VALUE;
+				
+		RTMPCancelTimer(&pBAEntry->RECBATimer, &Cancelled);         
+
+		//
+		// 1. Send DELBA Action Frame
+		//
+		if (bPassive == FALSE)
+		{
+			MLME_QUEUE_ELEM *Elem = (MLME_QUEUE_ELEM *) kmalloc(sizeof(MLME_QUEUE_ELEM), MEM_ALLOC_FLAG);
+			if (Elem != NULL)
+			{
+				NdisZeroMemory(&DelbaReq, sizeof(DelbaReq));
+				NdisZeroMemory(Elem, sizeof(MLME_QUEUE_ELEM));
+			
+				COPY_MAC_ADDR(DelbaReq.Addr, pAd->MacTab.Content[Wcid].Addr);
+				DelbaReq.Wcid = Wcid;
+				DelbaReq.TID = TID;
+				DelbaReq.Initiator = RECIPIENT;
+				Elem->MsgLen  = sizeof(DelbaReq);			
+				NdisMoveMemory(Elem->Msg, &DelbaReq, sizeof(DelbaReq));
+				MlmeDELBAAction(pAd, Elem);
+				kfree(Elem);
+			}
+			else
+			{
+				DBGPRINT(RT_DEBUG_ERROR, ("%s():alloc memory failed!\n", __FUNCTION__));
+				return;
+			}
+		}
+
+
+		//
+		// 2. Free resource of BA session
+		//
+		// flush all pending reordering mpdus 
+		ba_refresh_reordering_mpdus(pAd, pBAEntry);
+
+		NdisAcquireSpinLock(&pAd->BATabLock);
+
+		// Erase Bitmap flag.
+		pBAEntry->LastIndSeq = RESET_RCV_SEQ;
+		pBAEntry->BAWinSize = 0;
+		// Erase Bitmap flag at software mactable
+		pAd->MacTab.Content[Wcid].RXBAbitmap &= (~(1<<(pBAEntry->TID)));
+		pAd->MacTab.Content[Wcid].BARecWcidArray[TID] = 0;
+
+		RTMP_DEL_BA_SESSION_FROM_ASIC(pAd, Wcid, TID);
+
+		NdisReleaseSpinLock(&pAd->BATabLock);
+
+	}
+
+	BATableFreeRecEntry(pAd, Idx);
+}
+
+VOID BASessionTearDownALL(
+						 IN OUT  PRTMP_ADAPTER pAd, 
+						 IN      UCHAR Wcid)
+{
+	int i;
+
+	for (i=0; i<NUM_OF_TID; i++)
+	{
+		BAOriSessionTearDown(pAd, Wcid, i, FALSE, FALSE);
+		BARecSessionTearDown(pAd, Wcid, i, FALSE);
+	}
+}
+
+
+/*
+	==========================================================================
+	Description:
+		Retry sending ADDBA Reqest.
+		
+	IRQL = DISPATCH_LEVEL
+	
+	Parametrs:
+	p8023Header: if this is already 802.3 format, p8023Header is NULL
+	
+	Return	: TRUE if put into rx reordering buffer, shouldn't indicaterxhere.
+				FALSE , then continue indicaterx at this moment.
+	==========================================================================
+ */
+VOID BAOriSessionSetupTimeout(
+    IN PVOID SystemSpecific1, 
+    IN PVOID FunctionContext, 
+    IN PVOID SystemSpecific2, 
+    IN PVOID SystemSpecific3) 
+{
+	BA_ORI_ENTRY    *pBAEntry = (BA_ORI_ENTRY *)FunctionContext;
+	MAC_TABLE_ENTRY *pEntry;
+	PRTMP_ADAPTER   pAd;
+	
+	if (pBAEntry == NULL)
+		return;
+
+	pAd = pBAEntry->pAdapter;
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+		// Do nothing if monitor mode is on
+		if (MONITOR_ON(pAd))
+			return;
+	}
+#endif // CONFIG_STA_SUPPORT //
+    
+#ifdef RALINK_ATE
+	// Nothing to do in ATE mode. 
+	if (ATE_ON(pAd))
+		return;
+#endif // RALINK_ATE //
+
+	pEntry = &pAd->MacTab.Content[pBAEntry->Wcid];
+
+	if ((pBAEntry->ORI_BA_Status == Originator_WaitRes) && (pBAEntry->Token < ORI_SESSION_MAX_RETRY))
+	{
+		MLME_ADDBA_REQ_STRUCT    AddbaReq;  
+
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		{
+			if (INFRA_ON(pAd) && 
+				RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS) &&
+				(OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED)))
+			{
+				/* In scan progress and have no chance to send out, just re-schedule to another time period */
+				RTMPSetTimer(&pBAEntry->ORIBATimer, ORI_BA_SESSION_TIMEOUT);
+				return;
+			}
+		}
+#endif // CONFIG_STA_SUPPORT //
+
+		NdisZeroMemory(&AddbaReq, sizeof(AddbaReq));
+		COPY_MAC_ADDR(AddbaReq.pAddr, pEntry->Addr);
+		AddbaReq.Wcid = (UCHAR)(pEntry->Aid);
+		AddbaReq.TID = pBAEntry->TID;
+		AddbaReq.BaBufSize = pAd->CommonCfg.BACapability.field.RxBAWinLimit;
+		AddbaReq.TimeOutValue = 0;
+		AddbaReq.Token = pBAEntry->Token;       
+		MlmeEnqueue(pAd, ACTION_STATE_MACHINE, MT2_MLME_ADD_BA_CATE, sizeof(MLME_ADDBA_REQ_STRUCT), (PVOID)&AddbaReq, 0);
+		RTMP_MLME_HANDLER(pAd);
+		DBGPRINT(RT_DEBUG_TRACE,("BA Ori Session Timeout(%d) : Send ADD BA again\n", pBAEntry->Token));
+
+		pBAEntry->Token++;
+		RTMPSetTimer(&pBAEntry->ORIBATimer, ORI_BA_SESSION_TIMEOUT);
+	}
+	else
+	{
+		BATableFreeOriEntry(pAd, pEntry->BAOriWcidArray[pBAEntry->TID]);
+	}
+}
+
+/*
+	==========================================================================
+	Description:
+		Retry sending ADDBA Reqest.
+		
+	IRQL = DISPATCH_LEVEL
+	
+	Parametrs:
+	p8023Header: if this is already 802.3 format, p8023Header is NULL
+	
+	Return	: TRUE if put into rx reordering buffer, shouldn't indicaterxhere.
+				FALSE , then continue indicaterx at this moment.
+	==========================================================================
+ */
+VOID BARecSessionIdleTimeout(
+    IN PVOID SystemSpecific1, 
+    IN PVOID FunctionContext, 
+    IN PVOID SystemSpecific2, 
+    IN PVOID SystemSpecific3) 
+{
+	
+	BA_REC_ENTRY    *pBAEntry = (BA_REC_ENTRY *)FunctionContext;
+	PRTMP_ADAPTER   pAd;
+	ULONG           Now32;
+	
+	if (pBAEntry == NULL)
+		return;
+
+	if ((pBAEntry->REC_BA_Status == Recipient_Accept))
+	{
+		NdisGetSystemUpTime(&Now32);
+
+		if (RTMP_TIME_AFTER((unsigned long)Now32, (unsigned long)(pBAEntry->LastIndSeqAtTimer + REC_BA_SESSION_IDLE_TIMEOUT)))
+		{
+			pAd = pBAEntry->pAdapter;
+			// flush all pending reordering mpdus 
+			ba_refresh_reordering_mpdus(pAd, pBAEntry); 
+			DBGPRINT(RT_DEBUG_OFF, ("%ld: REC BA session Timeout\n", Now32));
+		}
+	}
+}
+
+
+VOID PeerAddBAReqAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+
+{
+	//	7.4.4.1
+	//ULONG	Idx;
+	UCHAR   Status = 1;
+	UCHAR   pAddr[6];
+	FRAME_ADDBA_RSP ADDframe;
+	PUCHAR         pOutBuffer = NULL;
+	NDIS_STATUS     NStatus;
+	PFRAME_ADDBA_REQ  pAddreqFrame = NULL;
+	//UCHAR		BufSize;
+	ULONG       FrameLen;
+	PULONG      ptemp;
+	PMAC_TABLE_ENTRY	pMacEntry;
+
+	DBGPRINT(RT_DEBUG_TRACE, ("%s ==> (Wcid = %d)\n", __FUNCTION__, Elem->Wcid));
+
+	//hex_dump("AddBAReq", Elem->Msg, Elem->MsgLen);
+
+	//ADDBA Request from unknown peer, ignore this.
+	if (Elem->Wcid >= MAX_LEN_OF_MAC_TABLE)
+		return;
+	
+	pMacEntry = &pAd->MacTab.Content[Elem->Wcid];
+	DBGPRINT(RT_DEBUG_TRACE,("BA - PeerAddBAReqAction----> \n"));
+	ptemp = (PULONG)Elem->Msg;
+	//DBGPRINT_RAW(RT_DEBUG_EMU, ("%08x:: %08x:: %08x:: %08x:: %08x:: %08x:: %08x:: %08x:: %08x\n", *(ptemp), *(ptemp+1), *(ptemp+2), *(ptemp+3), *(ptemp+4), *(ptemp+5), *(ptemp+6), *(ptemp+7), *(ptemp+8)));
+
+	if (PeerAddBAReqActionSanity(pAd, Elem->Msg, Elem->MsgLen, pAddr))
+	{
+
+		if ((pAd->CommonCfg.bBADecline == FALSE) && IS_HT_STA(pMacEntry))
+		{
+			pAddreqFrame = (PFRAME_ADDBA_REQ)(&Elem->Msg[0]);
+			DBGPRINT(RT_DEBUG_OFF, ("Rcv Wcid(%d) AddBAReq\n", Elem->Wcid));
+			if (BARecSessionAdd(pAd, &pAd->MacTab.Content[Elem->Wcid], pAddreqFrame))
+				Status = 0;
+			else
+				Status = 38; // more parameters have invalid values
+		}
+		else
+		{
+			Status = 37; // the request has been declined.
+		}
+	}
+
+	if (IS_ENTRY_CLIENT(&pAd->MacTab.Content[Elem->Wcid]))
+		ASSERT(pAd->MacTab.Content[Elem->Wcid].Sst == SST_ASSOC);
+
+	pAddreqFrame = (PFRAME_ADDBA_REQ)(&Elem->Msg[0]);
+	// 2. Always send back ADDBA Response 
+	NStatus = MlmeAllocateMemory(pAd, &pOutBuffer);	 //Get an unused nonpaged memory
+	if (NStatus != NDIS_STATUS_SUCCESS)
+	{
+		DBGPRINT(RT_DEBUG_TRACE,("ACTION - PeerBAAction() allocate memory failed \n"));
+		return;
+	}
+
+	NdisZeroMemory(&ADDframe, sizeof(FRAME_ADDBA_RSP));
+	// 2-1. Prepare ADDBA Response frame.
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+		if (ADHOC_ON(pAd)
+#ifdef QOS_DLS_SUPPORT
+			|| (IS_ENTRY_DLS(&pAd->MacTab.Content[Elem->Wcid]))
+#endif // QOS_DLS_SUPPORT //
+			)
+			ActHeaderInit(pAd, &ADDframe.Hdr, pAddr, pAd->CurrentAddress, pAd->CommonCfg.Bssid);
+		else
+			ActHeaderInit(pAd, &ADDframe.Hdr, pAd->CommonCfg.Bssid, pAd->CurrentAddress, pAddr);
+	}
+#endif // CONFIG_STA_SUPPORT //
+	ADDframe.Category = CATEGORY_BA;
+	ADDframe.Action = ADDBA_RESP;
+	ADDframe.Token = pAddreqFrame->Token;
+	// What is the Status code??  need to check.
+	ADDframe.StatusCode = Status;
+	ADDframe.BaParm.BAPolicy = IMMED_BA;
+	ADDframe.BaParm.AMSDUSupported = 0;
+	ADDframe.BaParm.TID = pAddreqFrame->BaParm.TID;
+	ADDframe.BaParm.BufSize = min(((UCHAR)pAddreqFrame->BaParm.BufSize), (UCHAR)pAd->CommonCfg.BACapability.field.RxBAWinLimit);
+	if (ADDframe.BaParm.BufSize == 0)
+	{
+		ADDframe.BaParm.BufSize = 64; 
+	}
+	ADDframe.TimeOutValue = 0; //pAddreqFrame->TimeOutValue;
+
+	*(USHORT *)(&ADDframe.BaParm) = cpu2le16(*(USHORT *)(&ADDframe.BaParm));
+	ADDframe.StatusCode = cpu2le16(ADDframe.StatusCode);
+	ADDframe.TimeOutValue = cpu2le16(ADDframe.TimeOutValue);
+
+	MakeOutgoingFrame(pOutBuffer,               &FrameLen,
+					  sizeof(FRAME_ADDBA_RSP),  &ADDframe,
+			  END_OF_ARGS);
+	MiniportMMRequest(pAd, QID_AC_BE, pOutBuffer, FrameLen);
+	MlmeFreeMemory(pAd, pOutBuffer);
+
+	DBGPRINT(RT_DEBUG_TRACE, ("%s(%d): TID(%d), BufSize(%d) <== \n", __FUNCTION__, Elem->Wcid, ADDframe.BaParm.TID, 
+							  ADDframe.BaParm.BufSize));
+}
+
+
+VOID PeerAddBARspAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+
+{
+	//UCHAR		Idx, i;
+	//PUCHAR		   pOutBuffer = NULL;
+	PFRAME_ADDBA_RSP    pFrame = NULL;
+	//PBA_ORI_ENTRY		pBAEntry;
+	
+	//ADDBA Response from unknown peer, ignore this.
+	if (Elem->Wcid >= MAX_LEN_OF_MAC_TABLE)
+		return;
+	
+	DBGPRINT(RT_DEBUG_TRACE, ("%s ==> Wcid(%d)\n", __FUNCTION__, Elem->Wcid));
+	
+	//hex_dump("PeerAddBARspAction()", Elem->Msg, Elem->MsgLen);
+
+	if (PeerAddBARspActionSanity(pAd, Elem->Msg, Elem->MsgLen))
+	{
+		pFrame = (PFRAME_ADDBA_RSP)(&Elem->Msg[0]);
+
+		DBGPRINT(RT_DEBUG_TRACE, ("\t\t StatusCode = %d\n", pFrame->StatusCode));
+		switch (pFrame->StatusCode)
+		{
+			case 0:
+				// I want a BAsession with this peer as an originator. 
+				BAOriSessionAdd(pAd, &pAd->MacTab.Content[Elem->Wcid], pFrame);
+				break;
+			default:
+				// check status == USED ??? 
+				BAOriSessionTearDown(pAd, Elem->Wcid, pFrame->BaParm.TID, TRUE, FALSE);
+				break;
+		}
+		// Rcv Decline StatusCode
+		if ((pFrame->StatusCode == 37) 
+#ifdef CONFIG_STA_SUPPORT            
+            || ((pAd->OpMode == OPMODE_STA) && STA_TGN_WIFI_ON(pAd) && (pFrame->StatusCode != 0))
+#endif // CONFIG_STA_SUPPORT //            
+            ) 
+		{
+			pAd->MacTab.Content[Elem->Wcid].BADeclineBitmap |= 1<<pFrame->BaParm.TID;
+		}
+	}
+}
+
+VOID PeerDelBAAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+
+{
+	//UCHAR				Idx;
+	//PUCHAR				pOutBuffer = NULL;
+	PFRAME_DELBA_REQ    pDelFrame = NULL;
+	
+	DBGPRINT(RT_DEBUG_TRACE,("%s ==>\n", __FUNCTION__));
+	//DELBA Request from unknown peer, ignore this.
+	if (PeerDelBAActionSanity(pAd, Elem->Wcid, Elem->Msg, Elem->MsgLen))
+	{
+		pDelFrame = (PFRAME_DELBA_REQ)(&Elem->Msg[0]);
+		if (pDelFrame->DelbaParm.Initiator == ORIGINATOR)
+		{
+			DBGPRINT(RT_DEBUG_TRACE,("BA - PeerDelBAAction----> ORIGINATOR\n"));
+			BARecSessionTearDown(pAd, Elem->Wcid, pDelFrame->DelbaParm.TID, TRUE);
+		}
+		else
+		{
+			DBGPRINT(RT_DEBUG_TRACE,("BA - PeerDelBAAction----> RECIPIENT, Reason = %d\n",  pDelFrame->ReasonCode));
+			//hex_dump("DelBA Frame", pDelFrame, Elem->MsgLen);
+			BAOriSessionTearDown(pAd, Elem->Wcid, pDelFrame->DelbaParm.TID, TRUE, FALSE);
+		}
+	}
+}
+
+
+BOOLEAN CntlEnqueueForRecv(
+						  IN PRTMP_ADAPTER		pAd, 
+						  IN ULONG				Wcid, 
+						  IN ULONG				MsgLen, 
+						  IN PFRAME_BA_REQ		pMsg) 
+{
+	PFRAME_BA_REQ   pFrame = pMsg;
+	//PRTMP_REORDERBUF	pBuffer;
+	//PRTMP_REORDERBUF	pDmaBuf;
+	PBA_REC_ENTRY pBAEntry;
+	//BOOLEAN 	Result;
+	ULONG   Idx;
+	//UCHAR	NumRxPkt;
+	UCHAR	TID;//, i;
+	
+	TID = (UCHAR)pFrame->BARControl.TID;
+
+	DBGPRINT(RT_DEBUG_TRACE, ("%s(): BAR-Wcid(%ld), Tid (%d)\n", __FUNCTION__, Wcid, TID));
+	//hex_dump("BAR", (PCHAR) pFrame, MsgLen);
+	// Do nothing if the driver is starting halt state.
+	// This might happen when timer already been fired before cancel timer with mlmehalt
+	if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_HALT_IN_PROGRESS | fRTMP_ADAPTER_NIC_NOT_EXIST))
+		return FALSE;
+
+	// First check the size, it MUST not exceed the mlme queue size
+	if (MsgLen > MGMT_DMA_BUFFER_SIZE)
+	{
+		DBGPRINT_ERR(("CntlEnqueueForRecv: frame too large, size = %ld \n", MsgLen));
+		return FALSE;
+	}
+	else if (MsgLen != sizeof(FRAME_BA_REQ))
+	{
+		DBGPRINT_ERR(("CntlEnqueueForRecv: BlockAck Request frame length size = %ld incorrect\n", MsgLen));
+		return FALSE;
+	}
+	else if (MsgLen != sizeof(FRAME_BA_REQ))
+	{
+		DBGPRINT_ERR(("CntlEnqueueForRecv: BlockAck Request frame length size = %ld incorrect\n", MsgLen));
+		return FALSE;
+	}
+		
+	if ((Wcid < MAX_LEN_OF_MAC_TABLE) && (TID < 8))
+		{
+		// if this receiving packet is from SA that is in our OriEntry. Since WCID <9 has direct mapping. no need search.
+		Idx = pAd->MacTab.Content[Wcid].BARecWcidArray[TID];
+		pBAEntry = &pAd->BATable.BARecEntry[Idx];
+		}
+		else
+		{
+		return FALSE;
+	}
+
+	DBGPRINT(RT_DEBUG_TRACE, ("BAR(%ld) : Tid (%d) - %04x:%04x\n", Wcid, TID, pFrame->BAStartingSeq.field.StartSeq, pBAEntry->LastIndSeq ));
+
+	if (SEQ_SMALLER(pBAEntry->LastIndSeq, pFrame->BAStartingSeq.field.StartSeq, MAXSEQ))
+	{
+		//DBGPRINT(RT_DEBUG_TRACE, ("BAR Seq = %x, LastIndSeq = %x\n", pFrame->BAStartingSeq.field.StartSeq, pBAEntry->LastIndSeq));
+		ba_indicate_reordering_mpdus_le_seq(pAd, pBAEntry, pFrame->BAStartingSeq.field.StartSeq);
+		pBAEntry->LastIndSeq = (pFrame->BAStartingSeq.field.StartSeq == 0) ? MAXSEQ :(pFrame->BAStartingSeq.field.StartSeq -1);
+	}
+	//ba_refresh_reordering_mpdus(pAd, pBAEntry);
+	return TRUE;
+}
+
+/*
+Description : Send PSMP Action frame If PSMP mode switches.
+*/
+VOID SendPSMPAction(
+				   IN PRTMP_ADAPTER		pAd,
+				   IN UCHAR				Wcid,
+				   IN UCHAR				Psmp) 
+{
+	PUCHAR          pOutBuffer = NULL;
+	NDIS_STATUS     NStatus;
+	//ULONG           Idx;
+	FRAME_PSMP_ACTION   Frame;
+	ULONG           FrameLen;
+
+	NStatus = MlmeAllocateMemory(pAd, &pOutBuffer);	 //Get an unused nonpaged memory
+	if (NStatus != NDIS_STATUS_SUCCESS)
+	{
+		DBGPRINT(RT_DEBUG_ERROR,("BA - MlmeADDBAAction() allocate memory failed \n"));
+		return;
+	}
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		ActHeaderInit(pAd, &Frame.Hdr, pAd->CommonCfg.Bssid, pAd->CurrentAddress, pAd->MacTab.Content[Wcid].Addr);
+#endif // CONFIG_STA_SUPPORT //
+
+	Frame.Category = CATEGORY_HT;
+	Frame.Action = SMPS_ACTION;
+	switch (Psmp)
+	{
+		case MMPS_ENABLE:
+#ifdef RT30xx
+			if (IS_RT30xx(pAd) 
+				&&(pAd->Antenna.field.RxPath>1||pAd->Antenna.field.TxPath>1))
+			{
+				RTMP_ASIC_MMPS_DISABLE(pAd);
+			}
+#endif // RT30xx //
+			Frame.Psmp = 0;
+			break;
+		case MMPS_DYNAMIC:
+			Frame.Psmp = 3;
+			break;
+		case MMPS_STATIC:
+#ifdef RT30xx
+			if (IS_RT30xx(pAd) 
+				&&(pAd->Antenna.field.RxPath>1||pAd->Antenna.field.TxPath>1))
+			{
+				RTMP_ASIC_MMPS_ENABLE(pAd);
+			}
+#endif // RT30xx //
+			Frame.Psmp = 1;
+			break;
+	}
+	MakeOutgoingFrame(pOutBuffer,               &FrameLen,
+					  sizeof(FRAME_PSMP_ACTION),      &Frame,
+					  END_OF_ARGS);
+	MiniportMMRequest(pAd, QID_AC_BE, pOutBuffer, FrameLen);
+	MlmeFreeMemory(pAd, pOutBuffer);
+	DBGPRINT(RT_DEBUG_ERROR,("HT - SendPSMPAction( %d )  \n", Frame.Psmp));
+}
+
+
+#define RADIO_MEASUREMENT_REQUEST_ACTION	0
+
+typedef struct GNU_PACKED
+{
+	UCHAR	RegulatoryClass;
+	UCHAR	ChannelNumber;
+	USHORT	RandomInterval;
+	USHORT	MeasurementDuration;
+	UCHAR	MeasurementMode;
+	UCHAR   BSSID[MAC_ADDR_LEN];
+	UCHAR	ReportingCondition;
+	UCHAR	Threshold;
+	UCHAR   SSIDIE[2];			// 2 byte
+} BEACON_REQUEST;
+
+typedef struct GNU_PACKED
+{
+	UCHAR	ID;
+	UCHAR	Length;
+	UCHAR	Token;
+	UCHAR	RequestMode;
+	UCHAR	Type;
+} MEASUREMENT_REQ;
+
+
+
+
+void convert_reordering_packet_to_preAMSDU_or_802_3_packet(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	RX_BLK			*pRxBlk,
+	IN  UCHAR			FromWhichBSSID)
+{
+	PNDIS_PACKET	pRxPkt;
+	UCHAR			Header802_3[LENGTH_802_3];
+
+	// 1. get 802.3 Header
+	// 2. remove LLC 
+	// 		a. pointer pRxBlk->pData to payload 
+	//      b. modify pRxBlk->DataSize
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		RTMP_802_11_REMOVE_LLC_AND_CONVERT_TO_802_3(pRxBlk, Header802_3);
+#endif // CONFIG_STA_SUPPORT //
+
+	ASSERT(pRxBlk->pRxPacket);
+	pRxPkt = RTPKT_TO_OSPKT(pRxBlk->pRxPacket);
+
+	SET_OS_PKT_NETDEV(pRxPkt, get_netdev_from_bssid(pAd, FromWhichBSSID));	
+	SET_OS_PKT_DATAPTR(pRxPkt, pRxBlk->pData);
+	SET_OS_PKT_LEN(pRxPkt, pRxBlk->DataSize);
+	SET_OS_PKT_DATATAIL(pRxPkt, pRxBlk->pData, pRxBlk->DataSize);
+
+	//
+	// copy 802.3 header, if necessary
+	// 
+	if (!RX_BLK_TEST_FLAG(pRxBlk, fRX_AMSDU))
+	{
+
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		{
+#ifdef LINUX
+			NdisMoveMemory(skb_push(pRxPkt, LENGTH_802_3), Header802_3, LENGTH_802_3);
+#endif
+		}
+#endif // CONFIG_STA_SUPPORT //
+	}
+}
+
+
+#define INDICATE_LEGACY_OR_AMSDU(_pAd, _pRxBlk, _fromWhichBSSID)		\
+	do																	\
+	{																	\
+    	if (RX_BLK_TEST_FLAG(_pRxBlk, fRX_AMSDU))						\
+    	{																\
+    		Indicate_AMSDU_Packet(_pAd, _pRxBlk, _fromWhichBSSID);		\
+    	}																\
+		else if (RX_BLK_TEST_FLAG(_pRxBlk, fRX_EAP))					\
+		{																\
+			Indicate_EAPOL_Packet(_pAd, _pRxBlk, _fromWhichBSSID);		\
+		}																\
+    	else															\
+    	{																\
+    		Indicate_Legacy_Packet(_pAd, _pRxBlk, _fromWhichBSSID);		\
+    	}																\
+	} while (0);
+
+
+
+static VOID ba_enqueue_reordering_packet(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PBA_REC_ENTRY	pBAEntry,
+	IN	RX_BLK			*pRxBlk,
+	IN	UCHAR			FromWhichBSSID)
+{
+	struct reordering_mpdu *mpdu_blk;
+	UINT16	Sequence = (UINT16) pRxBlk->pHeader->Sequence;
+
+	mpdu_blk = ba_mpdu_blk_alloc(pAd);
+	if ((mpdu_blk != NULL) &&
+		(!RX_BLK_TEST_FLAG(pRxBlk, fRX_EAP)))
+	{
+		// Write RxD buffer address & allocated buffer length
+		NdisAcquireSpinLock(&pBAEntry->RxReRingLock);
+
+		mpdu_blk->Sequence = Sequence;
+
+		mpdu_blk->bAMSDU = RX_BLK_TEST_FLAG(pRxBlk, fRX_AMSDU);
+
+		convert_reordering_packet_to_preAMSDU_or_802_3_packet(pAd, pRxBlk, FromWhichBSSID);
+
+		STATS_INC_RX_PACKETS(pAd, FromWhichBSSID);
+
+        //
+		// it is necessary for reordering packet to record 
+		// which BSS it come from
+		// 
+		RTMP_SET_PACKET_IF(pRxBlk->pRxPacket, FromWhichBSSID);
+
+		mpdu_blk->pPacket = pRxBlk->pRxPacket;
+
+		if (ba_reordering_mpdu_insertsorted(&pBAEntry->list, mpdu_blk) == FALSE)
+		{
+			// had been already within reordering list
+			// don't indicate 
+			RELEASE_NDIS_PACKET(pAd, pRxBlk->pRxPacket, NDIS_STATUS_SUCCESS);                     
+			ba_mpdu_blk_free(pAd, mpdu_blk);
+		}
+
+		ASSERT((0<= pBAEntry->list.qlen)  && (pBAEntry->list.qlen <= pBAEntry->BAWinSize));
+		NdisReleaseSpinLock(&pBAEntry->RxReRingLock);
+	}
+	else
+	{
+		DBGPRINT(RT_DEBUG_ERROR,  ("!!! (%d) Can't allocate reordering mpdu blk\n",
+								   pBAEntry->list.qlen));
+		/* 
+		 * flush all pending reordering mpdus 
+		 * and receving mpdu to upper layer
+		 * make tcp/ip to take care reordering mechanism
+		 */
+		//ba_refresh_reordering_mpdus(pAd, pBAEntry);
+		ba_indicate_reordering_mpdus_le_seq(pAd, pBAEntry, Sequence);
+
+		pBAEntry->LastIndSeq = Sequence;
+		INDICATE_LEGACY_OR_AMSDU(pAd, pRxBlk, FromWhichBSSID);
+	}
+}
+
+
+/*
+	==========================================================================
+	Description:
+		Indicate this packet to upper layer or put it into reordering buffer	
+	
+	Parametrs:
+		pRxBlk         : carry necessary packet info 802.11 format
+		FromWhichBSSID : the packet received from which BSS
+
+	Return	: 
+			  none
+
+	Note    :
+	          the packet queued into reordering buffer need to cover to 802.3 format 
+			  or pre_AMSDU format
+	==========================================================================
+ */
+
+VOID Indicate_AMPDU_Packet(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	RX_BLK			*pRxBlk,
+	IN	UCHAR			FromWhichBSSID)
+{
+	USHORT				Idx;
+	PBA_REC_ENTRY		pBAEntry = NULL;
+	UINT16				Sequence = pRxBlk->pHeader->Sequence;
+	ULONG				Now32;
+	UCHAR				Wcid = pRxBlk->pRxWI->WirelessCliID;
+	UCHAR				TID = pRxBlk->pRxWI->TID;
+
+
+	if (!RX_BLK_TEST_FLAG(pRxBlk, fRX_AMSDU) &&  (pRxBlk->DataSize > MAX_RX_PKT_LEN))
+	{
+		// release packet
+		RELEASE_NDIS_PACKET(pAd, pRxBlk->pRxPacket, NDIS_STATUS_FAILURE);
+		return;
+	}
+
+
+
+	if (Wcid < MAX_LEN_OF_MAC_TABLE)
+	{
+		Idx = pAd->MacTab.Content[Wcid].BARecWcidArray[TID];
+		if (Idx == 0)
+		{
+			/* Rec BA Session had been torn down */
+			INDICATE_LEGACY_OR_AMSDU(pAd, pRxBlk, FromWhichBSSID); 
+			return;
+		}
+		pBAEntry = &pAd->BATable.BARecEntry[Idx];
+	}
+	else
+	{
+		// impossible !!!
+		ASSERT(0);
+		// release packet
+		RELEASE_NDIS_PACKET(pAd, pRxBlk->pRxPacket, NDIS_STATUS_FAILURE);
+		return;
+	}
+
+	ASSERT(pBAEntry);
+
+	// update last rx time
+	NdisGetSystemUpTime(&Now32);
+
+	pBAEntry->rcvSeq = Sequence;
+
+
+	ba_flush_reordering_timeout_mpdus(pAd, pBAEntry, Now32);
+	pBAEntry->LastIndSeqAtTimer = Now32;
+
+	//
+	// Reset Last Indicate Sequence
+	// 
+	if (pBAEntry->LastIndSeq == RESET_RCV_SEQ)
+	{
+		ASSERT((pBAEntry->list.qlen == 0) && (pBAEntry->list.next == NULL));
+
+		// reset rcv sequence of BA session 
+		pBAEntry->LastIndSeq = Sequence;
+		pBAEntry->LastIndSeqAtTimer = Now32;
+		INDICATE_LEGACY_OR_AMSDU(pAd, pRxBlk, FromWhichBSSID);
+		return;
+	}
+
+	//
+	// I. Check if in order.
+	// 
+	if (SEQ_STEPONE(Sequence, pBAEntry->LastIndSeq, MAXSEQ))
+	{
+		USHORT  LastIndSeq;
+
+		pBAEntry->LastIndSeq = Sequence;
+		INDICATE_LEGACY_OR_AMSDU(pAd, pRxBlk, FromWhichBSSID);
+ 		LastIndSeq = ba_indicate_reordering_mpdus_in_order(pAd, pBAEntry, pBAEntry->LastIndSeq);
+		if (LastIndSeq != RESET_RCV_SEQ)
+		{
+			pBAEntry->LastIndSeq = LastIndSeq;
+		}
+		pBAEntry->LastIndSeqAtTimer = Now32;
+	}
+	//
+	// II. Drop Duplicated Packet
+	// 
+	else if (Sequence == pBAEntry->LastIndSeq)
+	{
+		
+		// drop and release packet
+		pBAEntry->nDropPacket++;
+		RELEASE_NDIS_PACKET(pAd, pRxBlk->pRxPacket, NDIS_STATUS_FAILURE);
+	}
+	//
+	// III. Drop Old Received Packet
+	// 
+	else if (SEQ_SMALLER(Sequence, pBAEntry->LastIndSeq, MAXSEQ))
+	{
+		
+		// drop and release packet
+		pBAEntry->nDropPacket++;
+		RELEASE_NDIS_PACKET(pAd, pRxBlk->pRxPacket, NDIS_STATUS_FAILURE);
+	}
+	//
+	// IV. Receive Sequence within Window Size
+	// 
+	else if (SEQ_SMALLER(Sequence, (((pBAEntry->LastIndSeq+pBAEntry->BAWinSize+1)) & MAXSEQ), MAXSEQ))
+	{
+		ba_enqueue_reordering_packet(pAd, pBAEntry, pRxBlk, FromWhichBSSID);
+	}
+	//
+	// V. Receive seq surpasses Win(lastseq + nMSDU). So refresh all reorder buffer
+	// 
+	else
+	{
+		LONG WinStartSeq, TmpSeq;
+
+
+		TmpSeq = Sequence - (pBAEntry->BAWinSize) -1;
+		if (TmpSeq < 0)
+		{
+			TmpSeq = (MAXSEQ+1) + TmpSeq;
+		}
+		WinStartSeq = (TmpSeq+1) & MAXSEQ;
+		ba_indicate_reordering_mpdus_le_seq(pAd, pBAEntry, WinStartSeq);
+		pBAEntry->LastIndSeq = WinStartSeq; //TmpSeq;          
+
+		pBAEntry->LastIndSeqAtTimer = Now32;
+
+		ba_enqueue_reordering_packet(pAd, pBAEntry, pRxBlk, FromWhichBSSID);
+
+		TmpSeq = ba_indicate_reordering_mpdus_in_order(pAd, pBAEntry, pBAEntry->LastIndSeq);
+		if (TmpSeq != RESET_RCV_SEQ)
+		{
+			pBAEntry->LastIndSeq = TmpSeq;
+		}
+	}
+}
+
+#endif // DOT11_N_SUPPORT //
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/br_ftph.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/br_ftph.c
new file mode 100644
index 000000000..46fab70a3
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/br_ftph.c
@@ -0,0 +1,212 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+ 
+    Module Name:
+    bg_ftph.c
+ 
+    Abstract:
+    Provide fast path between LAN and WLAN.
+ 
+    Revision History:
+    Who         When          What
+    --------    ----------    ----------------------------------------------
+    Sample Lin	01-22-2008    Created
+
+ */
+
+#include "rt_config.h"
+
+#ifdef BG_FT_SUPPORT
+#if defined(CONFIG_BRIDGE) || defined(CONFIG_BRIDGE_MODULE)
+#include <linux/netfilter_bridge.h> 
+#include "../net/bridge/br_private.h"
+
+/* extern export symbol in other drivers */
+/*
+	Example in other drivers:
+		UINT32 (*RALINK_FP_Handle)(PNDIS_PACKET pPacket);
+		EXPORT_SYMBOL(RALINK_FP_Handle);
+
+	packet_forward()
+	{
+		UINT32 HandRst = 1;
+
+		......
+
+		if (RALINK_FP_Handle != NULL)
+			HandRst = RALINK_FP_Handle(skb);
+
+		if (HandRst != 0)
+		{
+			// pass the packet to upper layer
+			skb->protocol = eth_type_trans(skb, skb->dev);
+			netif_rx(skb);
+		}
+	}
+*/
+UINT32 BG_FTPH_PacketFromApHandle(
+	IN		PNDIS_PACKET	pPacket);
+
+#ifdef BG_FT_OPEN_SUPPORT
+extern UINT32 (*RALINK_FP_Handle)(PNDIS_PACKET pPacket);
+#else
+UINT32 (*RALINK_FP_Handle)(PNDIS_PACKET pPacket);
+#endif // BG_FT_OPEN_SUPPORT //
+
+
+
+
+/* --------------------------------- Public -------------------------------- */
+
+/*
+========================================================================
+Routine Description:
+	Init bridge fast path module.
+
+Arguments:
+	None
+
+Return Value:
+	None
+
+Note:
+	Used in module init.
+========================================================================
+*/
+VOID BG_FTPH_Init(VOID)
+{
+	RALINK_FP_Handle = BG_FTPH_PacketFromApHandle;
+} /* End of BG_FTPH_Init */
+
+
+/*
+========================================================================
+Routine Description:
+	Remove bridge fast path module.
+
+Arguments:
+	None
+
+Return Value:
+	None
+
+Note:
+	Used in module remove.
+========================================================================
+*/
+VOID BG_FTPH_Remove(VOID)
+{
+	RALINK_FP_Handle = NULL;
+} /* End of BG_FTPH_Init */
+
+
+/*
+========================================================================
+Routine Description:
+	Pass the packet to the port directly or bridge layer.
+
+Arguments:
+	pAd				- WLAN control block pointer
+	skb_p			- the received packet
+
+Return Value:
+	None
+
+Note:
+========================================================================
+*/
+static inline unsigned packet_length(const struct sk_buff *skb)
+{
+#define VLAN_HLEN	4
+	return skb->len - (skb->protocol == htons(ETH_P_8021Q) ? VLAN_HLEN : 0);
+}
+
+
+UINT32 BG_FTPH_PacketFromApHandle(
+	IN		PNDIS_PACKET	pPacket)
+{
+	struct net_device	*pNetDev;
+	struct sk_buff		*pRxPkt;
+	struct net_bridge_fdb_entry *pSrcFdbEntry, *pDstFdbEntry;
+
+
+	/* init */
+	pRxPkt = RTPKT_TO_OSPKT(pPacket);
+	pNetDev = pRxPkt->dev;
+
+	/* if pNetDev is promisc mode ??? */
+	DBGPRINT(RT_DEBUG_INFO, ("ft bg> BG_FTPH_PacketFromApHandle\n"));
+
+	if (pNetDev != NULL)
+	{
+		if (pNetDev->br_port != NULL)
+		{
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,12)
+			pDstFdbEntry = br_fdb_get_hook(pNetDev->br_port->br, pRxPkt->data);
+			pSrcFdbEntry = br_fdb_get_hook(pNetDev->br_port->br, pRxPkt->data + 6);
+#else
+			/* br_fdb_get is not exported symbol, need exported in net/bridge/br.c */
+			pDstFdbEntry = br_fdb_get(pNetDev->br_port->br, pRxPkt->data);
+			pSrcFdbEntry = br_fdb_get(pNetDev->br_port->br, pRxPkt->data + 6);
+#endif
+
+			/* check destination address in bridge forwarding table */
+			if ((pSrcFdbEntry == NULL) ||
+				(pDstFdbEntry == NULL) ||
+				(pDstFdbEntry->is_local) ||
+				(pDstFdbEntry->dst == NULL) ||
+				(pDstFdbEntry->dst->dev == NULL) ||
+				(pDstFdbEntry->dst->dev == pNetDev) ||
+				(pNetDev->br_port->state != BR_STATE_FORWARDING) ||
+				((pSrcFdbEntry->dst != NULL) &&
+					(pSrcFdbEntry->dst->dev != NULL) &&
+					(pSrcFdbEntry->dst->dev != pNetDev)))
+			{
+
+				goto LabelPassToUpperLayer;
+			} /* End of if */
+
+			if ((!pDstFdbEntry->is_local) &&
+				(pDstFdbEntry->dst != NULL) &&
+				(pDstFdbEntry->dst->dev != NULL))
+			{
+				pRxPkt->dev = pDstFdbEntry->dst->dev;
+				pDstFdbEntry->dst->dev->hard_start_xmit(pRxPkt, pDstFdbEntry->dst->dev);
+				return 0;
+			} /* End of if */
+		} /* End of if */
+	} /* End of if */
+
+LabelPassToUpperLayer:
+	DBGPRINT(RT_DEBUG_TRACE, ("ft bg> Pass packet to bridge module.\n"));
+	return 1;
+} /* End of BG_FTPH_PacketFromApHandle */
+
+
+#endif // CONFIG_BRIDGE || CONFIG_BRIDGE_MODULE //
+#endif // BG_FT_SUPPORT //
+
+/* End of bg_ftph.c */
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/client_wds.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/client_wds.c
new file mode 100644
index 000000000..15cdf3c59
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/client_wds.c
@@ -0,0 +1,204 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+	Module Name:
+	client_wds.c
+
+	Abstract:
+*/
+
+
+#ifdef CLIENT_WDS
+
+#include "rt_config.h"
+
+VOID CliWds_ProxyTabInit(
+	IN PRTMP_ADAPTER pAd)
+{
+	INT idx;
+	ULONG i;
+
+	NdisAllocateSpinLock(&pAd->ApCfg.CliWdsTabLock);
+
+	pAd->ApCfg.pCliWdsEntryPool = kmalloc(sizeof(CLIWDS_PROXY_ENTRY) * CLIWDS_POOL_SIZE, GFP_ATOMIC);
+	if (pAd->ApCfg.pCliWdsEntryPool)
+	{
+		NdisZeroMemory(pAd->ApCfg.pCliWdsEntryPool, sizeof(CLIWDS_PROXY_ENTRY) * CLIWDS_POOL_SIZE);
+		initList(&pAd->ApCfg.CliWdsEntryFreeList);
+		for (i = 0; i < CLIWDS_POOL_SIZE; i++)
+			insertTailList(&pAd->ApCfg.CliWdsEntryFreeList, (PLIST_ENTRY)(pAd->ApCfg.pCliWdsEntryPool + (ULONG)i));
+	}
+	else
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("%s Fail to alloc memory for pAd->CommonCfg.pCliWdsEntryPool", __FUNCTION__));
+	}
+
+	for (idx = 0; idx < CLIWDS_HASH_TAB_SIZE; idx++)
+		initList(&pAd->ApCfg.CliWdsProxyTab[idx]);
+
+	return;
+}
+
+
+VOID CliWds_ProxyTabDestory(
+	IN PRTMP_ADAPTER pAd)
+{
+	INT idx;
+	PCLIWDS_PROXY_ENTRY pCliWdsEntry;
+
+	NdisFreeSpinLock(&pAd->ApCfg.CliWdsTabLock);
+
+	for (idx = 0; idx < CLIWDS_HASH_TAB_SIZE; idx++)
+	{
+		pCliWdsEntry =
+			(PCLIWDS_PROXY_ENTRY)pAd->ApCfg.CliWdsProxyTab[idx].pHead;
+		while(pCliWdsEntry)
+		{
+			PCLIWDS_PROXY_ENTRY pCliWdsEntryNext = pCliWdsEntry->pNext;
+			CliWdsEntyFree(pAd, pCliWdsEntry);
+			pCliWdsEntry = pCliWdsEntryNext;
+		}
+	}
+
+	if (pAd->ApCfg.pCliWdsEntryPool)
+		kfree(pAd->ApCfg.pCliWdsEntryPool);
+	pAd->ApCfg.pCliWdsEntryPool = NULL;	
+
+	return;
+}
+
+
+PCLIWDS_PROXY_ENTRY CliWdsEntyAlloc(
+	IN PRTMP_ADAPTER pAd)
+{
+	PCLIWDS_PROXY_ENTRY pCliWdsEntry;
+
+	RTMP_SEM_LOCK(&pAd->ApCfg.CliWdsTabLock);
+
+	pCliWdsEntry = (PCLIWDS_PROXY_ENTRY)removeHeadList(&pAd->ApCfg.CliWdsEntryFreeList);
+
+	RTMP_SEM_UNLOCK(&pAd->ApCfg.CliWdsTabLock);
+
+	return pCliWdsEntry;
+}
+
+
+VOID CliWdsEntyFree(
+	IN PRTMP_ADAPTER pAd,
+	IN PCLIWDS_PROXY_ENTRY pCliWdsEntry)
+{
+	RTMP_SEM_LOCK(&pAd->ApCfg.CliWdsTabLock);
+
+	insertTailList(&pAd->ApCfg.CliWdsEntryFreeList, (PLIST_ENTRY)pCliWdsEntry);
+
+	RTMP_SEM_UNLOCK(&pAd->ApCfg.CliWdsTabLock);
+
+	return;
+}
+
+
+PUCHAR CliWds_ProxyLookup(
+	IN PRTMP_ADAPTER pAd,
+	IN PUCHAR pMac)
+{
+	UINT8 HashId = (*(pMac + 5) & (CLIWDS_HASH_TAB_SIZE - 1));
+	PCLIWDS_PROXY_ENTRY pCliWdsEntry;
+
+	pCliWdsEntry =
+		(PCLIWDS_PROXY_ENTRY)pAd->ApCfg.CliWdsProxyTab[HashId].pHead;
+	while (pCliWdsEntry)
+	{
+		if (MAC_ADDR_EQUAL(pMac, pCliWdsEntry->Addr))
+		{
+			ULONG Now;
+			NdisGetSystemUpTime(&Now);
+
+			pCliWdsEntry->LastRefTime = Now;
+			if (VALID_WCID(pCliWdsEntry->Aid))
+				return pAd->MacTab.Content[pCliWdsEntry->Aid].Addr;
+			else
+				return NULL;
+		}
+		pCliWdsEntry = pCliWdsEntry->pNext;
+	}
+	return NULL;
+}
+
+
+VOID CliWds_ProxyTabUpdate(
+	IN PRTMP_ADAPTER pAd,
+	IN SHORT Aid,
+	IN PUCHAR pMac)
+{
+	UINT8 HashId = (*(pMac + 5) & (CLIWDS_HASH_TAB_SIZE - 1));
+	PCLIWDS_PROXY_ENTRY pCliWdsEntry;
+
+	if (CliWds_ProxyLookup(pAd, pMac) != NULL)
+		return;
+
+	pCliWdsEntry = CliWdsEntyAlloc(pAd);
+	if (pCliWdsEntry)
+	{
+		ULONG Now;
+		NdisGetSystemUpTime(&Now);
+
+		pCliWdsEntry->Aid = Aid;
+		COPY_MAC_ADDR(&pCliWdsEntry->Addr, pMac);
+		pCliWdsEntry->LastRefTime = Now;
+		pCliWdsEntry->pNext = NULL;
+		insertTailList(&pAd->ApCfg.CliWdsProxyTab[HashId], (PLIST_ENTRY)pCliWdsEntry);
+	}
+	return;
+}
+
+
+VOID CliWds_ProxyTabMaintain(
+	IN PRTMP_ADAPTER pAd)
+{
+	ULONG idx;
+	PCLIWDS_PROXY_ENTRY pCliWdsEntry;
+	ULONG Now;
+
+	NdisGetSystemUpTime(&Now);
+	for (idx = 0; idx < CLIWDS_HASH_TAB_SIZE; idx++)
+	{
+		pCliWdsEntry = (PCLIWDS_PROXY_ENTRY)(pAd->ApCfg.CliWdsProxyTab[idx].pHead);
+		while(pCliWdsEntry)
+		{
+			PCLIWDS_PROXY_ENTRY pCliWdsEntryNext = pCliWdsEntry->pNext;
+			if (RTMP_TIME_AFTER(Now, pCliWdsEntry->LastRefTime + (CLI_WDS_ENTRY_AGEOUT * OS_HZ / 1000)))
+			{
+				delEntryList(&pAd->ApCfg.CliWdsProxyTab[idx], (PLIST_ENTRY)pCliWdsEntry);
+				CliWdsEntyFree(pAd, pCliWdsEntry);
+			}
+			pCliWdsEntry = pCliWdsEntryNext;
+		}
+	}
+	return;
+}
+
+#endif // CLIENT_WDS //
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_aes.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_aes.c
new file mode 100644
index 000000000..2d3f6e8f5
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_aes.c
@@ -0,0 +1,1145 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+	Module Name:
+	cmm_aes.c
+
+	Abstract:
+
+	Revision History:
+	Who			When			What
+	--------	----------		----------------------------------------------
+	Paul Wu		02-25-02		Initial
+*/
+
+#include	"rt_config.h"
+
+
+
+/*****************************/
+/******** SBOX Table *********/
+/*****************************/
+
+UCHAR SboxTable[256] =
+{
+	0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5,
+	0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76,
+	0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0,
+	0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0,
+	0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc,
+	0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15,
+	0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a,
+	0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75,
+	0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0,
+	0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84,
+	0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b,
+	0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf,
+	0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85,
+	0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8,
+	0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5,
+	0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2,
+	0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17,
+	0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73,
+	0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88,
+	0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb,
+	0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c,
+	0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79,
+	0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9,
+	0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08,
+	0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6,
+	0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a,
+	0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e,
+	0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e,
+	0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94,
+	0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf,
+	0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68,
+	0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16
+};
+
+VOID xor_32(
+	IN  PUCHAR  a,
+	IN  PUCHAR  b,
+	OUT PUCHAR  out)
+{
+	INT i;
+
+	for (i=0;i<4; i++)
+	{
+		out[i] = a[i] ^ b[i];
+	}
+}
+
+VOID xor_128(
+	IN  PUCHAR  a,
+	IN  PUCHAR  b,
+	OUT PUCHAR  out)
+{
+	INT i;
+
+	for (i=0;i<16; i++)
+	{
+		out[i] = a[i] ^ b[i];
+	}
+}
+
+UCHAR RTMPCkipSbox(
+	IN  UCHAR   a)
+{
+	return SboxTable[(int)a];
+}
+
+VOID next_key(
+	IN  PUCHAR  key,
+	IN  INT     round)
+{
+	UCHAR       rcon;
+	UCHAR       sbox_key[4];
+	UCHAR       rcon_table[12] =
+	{
+		0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,
+		0x1b, 0x36, 0x36, 0x36
+	};
+
+	sbox_key[0] = RTMPCkipSbox(key[13]);
+	sbox_key[1] = RTMPCkipSbox(key[14]);
+	sbox_key[2] = RTMPCkipSbox(key[15]);
+	sbox_key[3] = RTMPCkipSbox(key[12]);
+
+	rcon = rcon_table[round];
+
+	xor_32(&key[0], sbox_key, &key[0]);
+	key[0] = key[0] ^ rcon;
+
+	xor_32(&key[4], &key[0], &key[4]);
+	xor_32(&key[8], &key[4], &key[8]);
+	xor_32(&key[12], &key[8], &key[12]);
+}
+
+VOID byte_sub(
+	IN  PUCHAR  in,
+	OUT PUCHAR  out)
+{
+	INT i;
+
+	for (i=0; i< 16; i++)
+	{
+		out[i] = RTMPCkipSbox(in[i]);
+	}
+}
+
+/************************************/
+/* bitwise_xor()                    */
+/* A 128 bit, bitwise exclusive or  */
+/************************************/
+
+void bitwise_xor(unsigned char *ina, unsigned char *inb, unsigned char *out)
+{
+	int i;
+	for (i=0; i<16; i++)
+	{
+		out[i] = ina[i] ^ inb[i];
+	}
+}
+
+VOID shift_row(
+	IN  PUCHAR  in,
+	OUT PUCHAR  out)
+{
+	out[0] =  in[0];
+	out[1] =  in[5];
+	out[2] =  in[10];
+	out[3] =  in[15];
+	out[4] =  in[4];
+	out[5] =  in[9];
+	out[6] =  in[14];
+	out[7] =  in[3];
+	out[8] =  in[8];
+	out[9] =  in[13];
+	out[10] = in[2];
+	out[11] = in[7];
+	out[12] = in[12];
+	out[13] = in[1];
+	out[14] = in[6];
+	out[15] = in[11];
+}
+
+VOID mix_column(
+	IN  PUCHAR  in,
+	OUT PUCHAR  out)
+{
+	INT         i;
+	UCHAR       add1b[4];
+	UCHAR       add1bf7[4];
+	UCHAR       rotl[4];
+	UCHAR       swap_halfs[4];
+	UCHAR       andf7[4];
+	UCHAR       rotr[4];
+	UCHAR       temp[4];
+	UCHAR       tempb[4];
+
+	for (i=0 ; i<4; i++)
+	{
+		if ((in[i] & 0x80)== 0x80)
+			add1b[i] = 0x1b;
+		else
+			add1b[i] = 0x00;
+	}
+
+	swap_halfs[0] = in[2];    /* Swap halfs */
+	swap_halfs[1] = in[3];
+	swap_halfs[2] = in[0];
+	swap_halfs[3] = in[1];
+
+	rotl[0] = in[3];        /* Rotate left 8 bits */
+	rotl[1] = in[0];
+	rotl[2] = in[1];
+	rotl[3] = in[2];
+
+	andf7[0] = in[0] & 0x7f;
+	andf7[1] = in[1] & 0x7f;
+	andf7[2] = in[2] & 0x7f;
+	andf7[3] = in[3] & 0x7f;
+
+	for (i = 3; i>0; i--)    /* logical shift left 1 bit */
+	{
+		andf7[i] = andf7[i] << 1;
+		if ((andf7[i-1] & 0x80) == 0x80)
+		{
+			andf7[i] = (andf7[i] | 0x01);
+		}
+	}
+	andf7[0] = andf7[0] << 1;
+	andf7[0] = andf7[0] & 0xfe;
+
+	xor_32(add1b, andf7, add1bf7);
+
+	xor_32(in, add1bf7, rotr);
+
+	temp[0] = rotr[0];         /* Rotate right 8 bits */
+	rotr[0] = rotr[1];
+	rotr[1] = rotr[2];
+	rotr[2] = rotr[3];
+	rotr[3] = temp[0];
+
+	xor_32(add1bf7, rotr, temp);
+	xor_32(swap_halfs, rotl,tempb);
+	xor_32(temp, tempb, out);
+}
+
+
+/************************************************/
+/* construct_mic_header1()                      */
+/* Builds the first MIC header block from       */
+/* header fields.                               */
+/************************************************/
+
+void construct_mic_header1(
+	unsigned char *mic_header1,
+	int header_length,
+	unsigned char *mpdu)
+{
+	mic_header1[0] = (unsigned char)((header_length - 2) / 256);
+	mic_header1[1] = (unsigned char)((header_length - 2) % 256);
+	mic_header1[2] = mpdu[0] & 0xcf;    /* Mute CF poll & CF ack bits */
+	mic_header1[3] = mpdu[1] & 0xc7;    /* Mute retry, more data and pwr mgt bits */
+	mic_header1[4] = mpdu[4];       /* A1 */
+	mic_header1[5] = mpdu[5];
+	mic_header1[6] = mpdu[6];
+	mic_header1[7] = mpdu[7];
+	mic_header1[8] = mpdu[8];
+	mic_header1[9] = mpdu[9];
+	mic_header1[10] = mpdu[10];     /* A2 */
+	mic_header1[11] = mpdu[11];
+	mic_header1[12] = mpdu[12];
+	mic_header1[13] = mpdu[13];
+	mic_header1[14] = mpdu[14];
+	mic_header1[15] = mpdu[15];
+}
+
+/************************************************/
+/* construct_mic_header2()                      */
+/* Builds the last MIC header block from        */
+/* header fields.                               */
+/************************************************/
+
+void construct_mic_header2(
+	unsigned char *mic_header2,
+	unsigned char *mpdu,
+	int a4_exists,
+	int qc_exists)
+{
+	int i;
+
+	for (i = 0; i<16; i++) mic_header2[i]=0x00;
+
+	mic_header2[0] = mpdu[16];    /* A3 */
+	mic_header2[1] = mpdu[17];
+	mic_header2[2] = mpdu[18];
+	mic_header2[3] = mpdu[19];
+	mic_header2[4] = mpdu[20];
+	mic_header2[5] = mpdu[21];
+
+	// In Sequence Control field, mute sequence numer bits (12-bit) 
+	mic_header2[6] = mpdu[22] & 0x0f;   /* SC */
+	mic_header2[7] = 0x00; /* mpdu[23]; */
+
+	if ((!qc_exists) & a4_exists)
+	{
+		for (i=0;i<6;i++) mic_header2[8+i] = mpdu[24+i];   /* A4 */
+
+	}
+
+	if (qc_exists && (!a4_exists))
+	{
+		mic_header2[8] = mpdu[24] & 0x0f; /* mute bits 15 - 4 */
+		mic_header2[9] = mpdu[25] & 0x00;
+	}
+
+	if (qc_exists && a4_exists)
+	{
+		for (i=0;i<6;i++) mic_header2[8+i] = mpdu[24+i];   /* A4 */
+
+		mic_header2[14] = mpdu[30] & 0x0f;
+		mic_header2[15] = mpdu[31] & 0x00;
+	}
+}
+
+
+/************************************************/
+/* construct_mic_iv()                           */
+/* Builds the MIC IV from header fields and PN  */
+/************************************************/
+
+void construct_mic_iv(
+	unsigned char *mic_iv,
+	int qc_exists,
+	int a4_exists,
+	unsigned char *mpdu,
+	unsigned int payload_length,
+	unsigned char *pn_vector)
+{
+	int i;
+
+	mic_iv[0] = 0x59;
+	if (qc_exists && a4_exists) 
+		mic_iv[1] = mpdu[30] & 0x0f;    /* QoS_TC           */
+	if (qc_exists && !a4_exists) 
+		mic_iv[1] = mpdu[24] & 0x0f;   /* mute bits 7-4    */
+	if (!qc_exists) 
+		mic_iv[1] = 0x00;
+	for (i = 2; i < 8; i++)
+		mic_iv[i] = mpdu[i + 8];                    /* mic_iv[2:7] = A2[0:5] = mpdu[10:15] */
+#ifdef CONSISTENT_PN_ORDER
+		for (i = 8; i < 14; i++)
+			mic_iv[i] = pn_vector[i - 8];           /* mic_iv[8:13] = PN[0:5] */
+#else
+		for (i = 8; i < 14; i++)
+			mic_iv[i] = pn_vector[13 - i];          /* mic_iv[8:13] = PN[5:0] */
+#endif
+	i = (payload_length / 256);
+	i = (payload_length % 256);
+	mic_iv[14] = (unsigned char) (payload_length / 256);
+	mic_iv[15] = (unsigned char) (payload_length % 256);
+
+}
+
+/****************************************/
+/* aes128k128d()                        */
+/* Performs a 128 bit AES encrypt with  */
+/* 128 bit data.                        */
+/****************************************/
+void aes128k128d(unsigned char *key, unsigned char *data, unsigned char *ciphertext)
+{
+	int round;
+	int i;
+	unsigned char intermediatea[16];
+	unsigned char intermediateb[16];
+	unsigned char round_key[16];
+
+	for(i=0; i<16; i++) round_key[i] = key[i];
+
+	for (round = 0; round < 11; round++)
+	{
+		if (round == 0)
+		{
+			xor_128(round_key, data, ciphertext);
+			next_key(round_key, round);         
+		}
+		else if (round == 10)
+		{
+			byte_sub(ciphertext, intermediatea);
+			shift_row(intermediatea, intermediateb);
+			xor_128(intermediateb, round_key, ciphertext);
+		}
+		else    /* 1 - 9 */
+		{
+			byte_sub(ciphertext, intermediatea);
+			shift_row(intermediatea, intermediateb);
+			mix_column(&intermediateb[0], &intermediatea[0]);
+			mix_column(&intermediateb[4], &intermediatea[4]);
+			mix_column(&intermediateb[8], &intermediatea[8]);
+			mix_column(&intermediateb[12], &intermediatea[12]);
+			xor_128(intermediatea, round_key, ciphertext);
+			next_key(round_key, round);
+		}
+	}
+
+}
+
+void construct_ctr_preload(
+	unsigned char *ctr_preload,
+	int a4_exists,
+	int qc_exists,
+	unsigned char *mpdu,
+	unsigned char *pn_vector,
+	int c)
+{
+
+	int i = 0;
+	for (i=0; i<16; i++) ctr_preload[i] = 0x00;
+	i = 0;
+
+	ctr_preload[0] = 0x01;                                  /* flag */
+	if (qc_exists && a4_exists) ctr_preload[1] = mpdu[30] & 0x0f;   /* QoC_Control  */
+	if (qc_exists && !a4_exists) ctr_preload[1] = mpdu[24] & 0x0f;
+
+	for (i = 2; i < 8; i++)
+		ctr_preload[i] = mpdu[i + 8];                       /* ctr_preload[2:7] = A2[0:5] = mpdu[10:15] */
+#ifdef CONSISTENT_PN_ORDER
+	  for (i = 8; i < 14; i++)
+			ctr_preload[i] =    pn_vector[i - 8];           /* ctr_preload[8:13] = PN[0:5] */
+#else
+	  for (i = 8; i < 14; i++)
+			ctr_preload[i] =    pn_vector[13 - i];          /* ctr_preload[8:13] = PN[5:0] */
+#endif
+	ctr_preload[14] =  (unsigned char) (c / 256); // Ctr 
+	ctr_preload[15] =  (unsigned char) (c % 256);
+
+}
+
+BOOLEAN RTMPSoftDecryptAES(
+	IN PRTMP_ADAPTER pAd,
+	IN PUCHAR	pData,
+	IN ULONG	DataByteCnt, 
+	IN PCIPHER_KEY	pWpaKey)
+{
+	UINT			HeaderLen;
+	UCHAR			PN[6];
+	UINT			payload_len;	
+	UINT			num_blocks;
+	UINT			payload_remainder;
+	USHORT			fc;
+	UCHAR			fc0;
+	UCHAR			fc1;	
+	UINT			frame_type;
+	UINT			frame_subtype;
+	UINT			from_ds;
+	UINT			to_ds;
+	INT				a4_exists;
+	INT				qc_exists;
+	UCHAR			aes_out[16];
+	int 			payload_index;
+	UINT 			i;
+	UCHAR 			ctr_preload[16];
+	UCHAR 			chain_buffer[16];
+	UCHAR 			padded_buffer[16];
+	UCHAR 			mic_iv[16];
+	UCHAR 			mic_header1[16];
+	UCHAR 			mic_header2[16];	
+	UCHAR			MIC[8];
+	UCHAR			TrailMIC[8];
+
+#ifdef RT_BIG_ENDIAN
+	RTMPFrameEndianChange(pAd, (PUCHAR)pData, DIR_READ, FALSE);
+#endif
+
+	fc0 = *pData;
+	fc1 = *(pData + 1);
+
+	fc = *((PUSHORT)pData);	
+
+	frame_type = ((fc0 >> 2) & 0x03);
+	frame_subtype = ((fc0 >> 4) & 0x0f);	
+
+	from_ds = (fc1 & 0x2) >> 1;
+	to_ds = (fc1 & 0x1);
+
+	a4_exists = (from_ds & to_ds);
+	qc_exists = ((frame_subtype == 0x08) ||    /* Assumed QoS subtypes */
+				  (frame_subtype == 0x09) ||   /* Likely to change.    */
+				  (frame_subtype == 0x0a) || 
+				  (frame_subtype == 0x0b)
+				 );
+
+	HeaderLen = 24;
+	
+	if (a4_exists)
+		HeaderLen += 6;
+
+	if (qc_exists)
+		HeaderLen += 2;
+
+	if (pWpaKey->KeyLen == 0)
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("RTMPSoftDecryptAES failed!(the Length can not be 0)\n"));
+		return FALSE;
+	}
+
+	PN[0] = *(pData+ HeaderLen);
+	PN[1] = *(pData+ HeaderLen + 1);
+	PN[2] = *(pData+ HeaderLen + 4);
+	PN[3] = *(pData+ HeaderLen + 5);
+	PN[4] = *(pData+ HeaderLen + 6);
+	PN[5] = *(pData+ HeaderLen + 7);
+
+	payload_len = DataByteCnt - HeaderLen - 8 - 8;	// 8 bytes for CCMP header , 8 bytes for MIC
+	payload_remainder = (payload_len) % 16;
+	num_blocks = (payload_len) / 16; 
+	
+	
+
+	// Find start of payload
+	payload_index = HeaderLen + 8; //IV+EIV
+
+	for (i=0; i< num_blocks; i++)	
+	{
+		construct_ctr_preload(ctr_preload,
+								a4_exists,
+								qc_exists,
+								pData,
+								PN,
+								i+1 );
+
+		aes128k128d(pWpaKey->Key, ctr_preload, aes_out);
+
+		bitwise_xor(aes_out, pData + payload_index, chain_buffer);
+		NdisMoveMemory(pData + payload_index - 8, chain_buffer, 16);
+		payload_index += 16;
+	}
+
+	//
+	// If there is a short final block, then pad it
+	// encrypt it and copy the unpadded part back 
+	//
+	if (payload_remainder > 0)
+	{
+		construct_ctr_preload(ctr_preload,
+								a4_exists,
+								qc_exists,
+								pData,
+								PN,
+								num_blocks + 1);
+
+		NdisZeroMemory(padded_buffer, 16);
+		NdisMoveMemory(padded_buffer, pData + payload_index, payload_remainder);
+
+		aes128k128d(pWpaKey->Key, ctr_preload, aes_out);
+
+		bitwise_xor(aes_out, padded_buffer, chain_buffer);
+		NdisMoveMemory(pData + payload_index - 8, chain_buffer, payload_remainder);
+		payload_index += payload_remainder;
+	}
+
+	//
+	// Descrypt the MIC
+	// 
+	construct_ctr_preload(ctr_preload,
+							a4_exists,
+							qc_exists,
+							pData,
+							PN,
+							0);
+	NdisZeroMemory(padded_buffer, 16);
+	NdisMoveMemory(padded_buffer, pData + payload_index, 8); 
+	
+	aes128k128d(pWpaKey->Key, ctr_preload, aes_out);
+
+	bitwise_xor(aes_out, padded_buffer, chain_buffer);	
+
+	NdisMoveMemory(TrailMIC, chain_buffer, 8);
+	
+	
+	//
+	// Calculate MIC
+	//
+
+	//Force the protected frame bit on
+	*(pData + 1) = *(pData + 1) | 0x40;
+
+	// Find start of payload
+	// Because the CCMP header has been removed
+	payload_index = HeaderLen;
+
+	construct_mic_iv(
+					mic_iv,
+					qc_exists,
+					a4_exists,
+					pData,
+					payload_len,
+					PN);
+
+	construct_mic_header1(
+						mic_header1,
+						HeaderLen,
+						pData);
+
+	construct_mic_header2(
+						mic_header2,
+						pData,
+						a4_exists,
+						qc_exists);
+
+	aes128k128d(pWpaKey->Key, mic_iv, aes_out);
+	bitwise_xor(aes_out, mic_header1, chain_buffer);
+	aes128k128d(pWpaKey->Key, chain_buffer, aes_out);
+	bitwise_xor(aes_out, mic_header2, chain_buffer);
+	aes128k128d(pWpaKey->Key, chain_buffer, aes_out);
+
+	// iterate through each 16 byte payload block
+	for (i = 0; i < num_blocks; i++)     
+	{
+		bitwise_xor(aes_out, pData + payload_index, chain_buffer);
+		payload_index += 16;
+		aes128k128d(pWpaKey->Key, chain_buffer, aes_out);
+	}
+
+	// Add on the final payload block if it needs padding
+	if (payload_remainder > 0)
+	{
+		NdisZeroMemory(padded_buffer, 16);
+		NdisMoveMemory(padded_buffer, pData + payload_index, payload_remainder);
+
+		bitwise_xor(aes_out, padded_buffer, chain_buffer);
+		aes128k128d(pWpaKey->Key, chain_buffer, aes_out);		
+	}
+
+	// aes_out contains padded mic, discard most significant
+	// 8 bytes to generate 64 bit MIC
+	for (i = 0 ; i < 8; i++) MIC[i] = aes_out[i];
+
+	if (!NdisEqualMemory(MIC, TrailMIC, 8))
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("RTMPSoftDecryptAES, MIC Error !\n"));	 //MIC error.	
+		return FALSE;
+	}
+
+#ifdef RT_BIG_ENDIAN
+	RTMPFrameEndianChange(pAd, (PUCHAR)pData, DIR_READ, FALSE);
+#endif
+
+	return TRUE;
+}
+
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Construct AAD of CCMP.
+
+	Arguments:
+		
+	Return Value:
+
+	Note:
+		It's described in IEEE Std 802.11-2007.
+		The AAD is constructed from the MPDU header.
+		
+	========================================================================
+*/
+VOID RTMPConstructCCMPAAD(
+	IN 	PUCHAR 			pHdr,
+	IN	BOOLEAN			isDataFrame,
+	IN	UINT8 			a4_exists,
+	IN	UINT8			qc_exists,
+	OUT	UCHAR			*aad_hdr,
+	OUT	UINT			*aad_len)
+{
+	UINT len = 0;
+
+	/* 	Frame control -
+		Subtype bits (bits 4 5 6) in a Data MPDU masked to 0
+		Retry bit (bit 11) masked to 0
+		PwrMgt bit (bit 12) masked to 0
+		MoreData bit (bit 13) masked to 0
+		Protected Frame bit (bit 14) always set to 1 */
+	if (isDataFrame)
+		aad_hdr[0] = (*pHdr) & 0x8f;
+	else
+		aad_hdr[0] = (*pHdr);
+	aad_hdr[1] = (*(pHdr + 1)) & 0xc7;
+	aad_hdr[1] = aad_hdr[1] | 0x40;
+	len = 2;
+	
+	/* Append Addr 1, 2 & 3 */
+	NdisMoveMemory(&aad_hdr[len], pHdr + 4, 3 * MAC_ADDR_LEN);
+	len += (3 * MAC_ADDR_LEN);
+
+	/*  SC - 
+		MPDU Sequence Control field, with the Sequence Number 
+		subfield (bits 4-15 of the Sequence Control field) 
+		masked to 0. The Fragment Number subfield is not modified. */	 
+	aad_hdr[len] = (*(pHdr + 22)) & 0x0f;   
+	aad_hdr[len + 1] = 0x00;
+	len += 2;
+	
+			
+	/* Append the Addr4 field if present. */ 
+	if (a4_exists)
+	{
+		NdisMoveMemory(&aad_hdr[len], pHdr + 24, MAC_ADDR_LEN);
+		len += MAC_ADDR_LEN;
+	}
+	
+	/*  QC - 
+		QoS Control field, if present, a 2-octet field that includes 
+		the MSDU priority. The QC TID field is used in the 
+		construction of the AAD and the remaining QC fields are 
+		set to 0 for the AAD calculation (bits 4 to 15 are set to 0). */
+	if (qc_exists & a4_exists)
+	{
+		aad_hdr[len] = (*(pHdr + 30)) & 0x0f;   // Qos_TC
+		aad_hdr[len + 1] = 0x00;
+		len += 2;
+	}
+	else if (qc_exists & !a4_exists)
+	{
+		aad_hdr[len] = (*(pHdr + 24)) & 0x0f;   // Qos_TC
+		aad_hdr[len + 1] = 0x00;
+		len += 2;
+	}	
+
+	*aad_len = len;	
+}
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Construct NONCE header of CCMP.
+
+	Arguments:
+		
+	Return Value:
+
+	Note:
+				
+	========================================================================
+*/
+VOID RTMPConstructCCMPNonce(
+	IN 	PUCHAR 			pHdr,
+	IN	UINT8 			a4_exists,
+	IN	UINT8			qc_exists,
+	IN	BOOLEAN			isMgmtFrame,
+	IN	UCHAR			*pn,		
+	OUT	UCHAR			*nonce_hdr,
+	OUT UINT			*nonce_hdr_len)
+{
+	UINT	n_offset = 0;
+	INT		i;
+
+	/* 	Decide the Priority Octet 
+		The Priority sub-field of the Nonce Flags field shall 
+		be set to the fixed value 0 when there is no QC field 
+		present in the MPDU header. When the QC field is present, 
+		bits 0 to 3 of the Priority field shall be set to the 
+		value of the QC TID (bits 0 to 3 of the QC field).*/
+	if (qc_exists && a4_exists) 
+		nonce_hdr[0] = (*(pHdr + 30)) & 0x0f;
+	if (qc_exists && !a4_exists) 
+		nonce_hdr[0] = (*(pHdr + 24)) & 0x0f;
+
+	n_offset += 1;
+
+	/* Fill in MPDU Address A2 field */	
+	NdisMoveMemory(&nonce_hdr[n_offset], pHdr + 10, MAC_ADDR_LEN);
+	n_offset += MAC_ADDR_LEN;
+
+	/* 	Fill in the PN. The PN field occupies octets 7�V12. 
+		The octets of PN shall be ordered so that PN0 is at octet index 12
+		and PN5 is at octet index 7. */
+ 	for (i = 0; i < 6; i++)
+		nonce_hdr[n_offset + i] = pn[5 - i];
+	n_offset += LEN_PN;
+
+	*nonce_hdr_len = n_offset;
+	
+}
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Construct CCMP header.
+
+	Arguments:
+		
+	Return Value:
+
+	Note:
+		It's a 8-octets header.
+				
+	========================================================================
+*/
+VOID RTMPConstructCCMPHdr(
+	IN	UINT8 			key_idx,
+	IN	UCHAR			*pn,		
+	OUT	UCHAR			*ccmp_hdr)
+{
+	NdisZeroMemory(ccmp_hdr, LEN_CCMP_HDR);
+
+	ccmp_hdr[0] = pn[0];
+	ccmp_hdr[1] = pn[1];
+	ccmp_hdr[3] = (key_idx <<6) | 0x20;	
+	ccmp_hdr[4] = pn[2];
+	ccmp_hdr[5] = pn[3];
+	ccmp_hdr[6] = pn[4];
+	ccmp_hdr[7] = pn[5];
+}
+
+/*
+	========================================================================
+	
+	Routine Description:
+
+	Arguments:
+		
+	Return Value:
+
+	Note:
+					
+	========================================================================
+*/
+BOOLEAN RTMPSoftEncryptCCMP(
+	IN 	PRTMP_ADAPTER 	pAd,
+	IN 	PUCHAR			pHdr,
+	IN	PUCHAR			pIV,
+	IN 		PUCHAR			pKey,
+	INOUT 	PUCHAR			pData,
+	IN 	UINT32			DataLen)
+{
+	UINT8			frame_type, frame_subtype;
+	UINT8			from_ds, to_ds;
+	UINT8 			a4_exists, qc_exists;
+	UINT8			aad_hdr[30];
+	UINT			aad_len = 0;
+	UINT8			nonce_hdr[13];	
+	UINT32			nonce_hdr_len = 0;
+	UINT32			out_len = DataLen + 8;
+		
+#ifdef RT_BIG_ENDIAN
+	RTMPFrameEndianChange(pAd, (PUCHAR)pHdr, DIR_READ, FALSE);
+#endif
+
+	/* Initial variable */
+	NdisZeroMemory(aad_hdr, 30);
+	NdisZeroMemory(nonce_hdr, 13);
+
+	/* Indicate type and subtype of Frame Control field */
+	frame_type = (((*pHdr) >> 2) & 0x03);
+	frame_subtype = (((*pHdr) >> 4) & 0x0f);	
+
+	/* Indicate the fromDS and ToDS */
+	from_ds = ((*(pHdr + 1)) & 0x2) >> 1;
+	to_ds = ((*(pHdr + 1)) & 0x1);
+
+	/* decide if the Address 4 exist or QoS exist */
+	a4_exists = (from_ds & to_ds);
+	qc_exists = ((frame_subtype == SUBTYPE_QDATA) || 
+				 (frame_subtype == SUBTYPE_QDATA_CFACK) ||
+				 (frame_subtype == SUBTYPE_QDATA_CFPOLL) ||
+				 (frame_subtype == SUBTYPE_QDATA_CFACK_CFPOLL));
+
+	/* Construct AAD header */
+	RTMPConstructCCMPAAD(pHdr, 
+						 (frame_type == BTYPE_DATA), 
+						 a4_exists,
+						 qc_exists,
+						 aad_hdr, 
+						 &aad_len);
+
+	/* Construct NONCE header */
+	RTMPConstructCCMPNonce(pHdr, 
+						   a4_exists,
+						   qc_exists,
+						   (frame_type == BTYPE_MGMT), 
+						   pIV, 
+						   nonce_hdr,
+						   &nonce_hdr_len);
+
+	/* CCM originator processing -
+	   Use the temporal key, AAD, nonce, and MPDU data to 
+	   form the cipher text and MIC. */
+	if (AES_CCM_Encrypt(pData, DataLen, 
+					pKey, 16, 
+					nonce_hdr, nonce_hdr_len, 
+					aad_hdr, aad_len, LEN_CCMP_MIC, 
+					pData, &out_len))
+		return FALSE;
+		
+#ifdef RT_BIG_ENDIAN
+	RTMPFrameEndianChange(pAd, (PUCHAR)pHdr, DIR_READ, FALSE);
+#endif
+	
+	return TRUE;
+}
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Decrypt data with CCMP.
+
+	Arguments:
+		
+	Return Value:
+
+	Note:
+		
+	========================================================================
+*/
+BOOLEAN RTMPSoftDecryptCCMP(
+	IN 		PRTMP_ADAPTER 	pAd,
+	IN 		PUCHAR			pHdr,
+	IN 		PCIPHER_KEY		pKey,
+	INOUT 	PUCHAR			pData,
+	INOUT 	UINT16			*DataLen)
+{
+	UINT8			frame_type, frame_subtype;
+	UINT8			from_ds, to_ds;
+	UINT8 			a4_exists, qc_exists;
+	UINT8			aad_hdr[30];
+	UINT			aad_len = 0;
+	UINT8			pn[LEN_PN];	
+	PUCHAR			cipherData_ptr;
+	UINT32			cipherData_len;
+	UINT8			nonce_hdr[13];	
+	UINT32			nonce_hdr_len = 0;	
+	UINT32			out_len = *DataLen;
+
+#ifdef RT_BIG_ENDIAN
+	RTMPFrameEndianChange(pAd, (PUCHAR)pHdr, DIR_READ, FALSE);
+#endif
+
+	/* Check the key is valid */
+	if (pKey->KeyLen == 0)
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("%s : The key is not available !\n", __FUNCTION__));
+		return FALSE;
+	}
+
+	/* Initial variable */
+	NdisZeroMemory(aad_hdr, 30);
+	NdisZeroMemory(nonce_hdr, 13);
+
+	/* Indicate type and subtype of Frame Control field */
+	frame_type = (((*pHdr) >> 2) & 0x03);
+	frame_subtype = (((*pHdr) >> 4) & 0x0f);	
+
+	/* Indicate the fromDS and ToDS */
+	from_ds = ((*(pHdr + 1)) & 0x2) >> 1;
+	to_ds = ((*(pHdr + 1)) & 0x1);
+
+	/* decide if the Address 4 exist or QoS exist */
+	a4_exists = (from_ds & to_ds);
+	qc_exists = ((frame_subtype == SUBTYPE_QDATA) || 
+				 (frame_subtype == SUBTYPE_QDATA_CFACK) ||
+				 (frame_subtype == SUBTYPE_QDATA_CFPOLL) ||
+				 (frame_subtype == SUBTYPE_QDATA_CFACK_CFPOLL));	
+			
+	/* Extract PN and from CCMP header */
+	pn[0] =	pData[0];
+	pn[1] = pData[1];
+	pn[2] = pData[4];
+	pn[3] = pData[5];
+	pn[4] = pData[6];
+	pn[5] = pData[7];
+
+	/* skip ccmp header */
+	cipherData_ptr = pData + LEN_CCMP_HDR;
+	cipherData_len = *DataLen - LEN_CCMP_HDR;
+		
+	/* Construct AAD header */
+	RTMPConstructCCMPAAD(pHdr, 
+						 (frame_type == BTYPE_DATA), 
+						 a4_exists,
+						 qc_exists,
+						 aad_hdr, 
+						 &aad_len);
+
+	/* Construct NONCE header */
+	RTMPConstructCCMPNonce(pHdr, 
+						   a4_exists,
+						   qc_exists,
+						   (frame_type == BTYPE_MGMT), 
+						   pn, 
+						   nonce_hdr,
+						   &nonce_hdr_len);
+	
+	/* CCM recipient processing -
+	   uses the temporal key, AAD, nonce, MIC, 
+	   and MPDU cipher text data */
+	if (AES_CCM_Decrypt(cipherData_ptr, cipherData_len,
+					pKey->Key, 16, 
+					nonce_hdr, nonce_hdr_len, 
+					aad_hdr, aad_len, LEN_CCMP_MIC, 
+					pData, &out_len))
+		return FALSE;
+
+	*DataLen = out_len;
+
+#ifdef RT_BIG_ENDIAN
+	RTMPFrameEndianChange(pAd, (PUCHAR)pHdr, DIR_READ, FALSE);
+#endif
+
+	return TRUE;
+}
+
+/*
+	========================================================================
+	
+	Routine Description:
+		CCMP test vector
+
+	Arguments:
+		
+	Return Value:
+
+	Note:		
+					
+	========================================================================
+*/
+VOID CCMP_test_vector(
+	IN 	PRTMP_ADAPTER 	pAd,
+	IN	INT 			input)
+{
+	UINT8 Key_ID = 0;
+	//UINT8 A1[6] =  {0x0f, 0xd2, 0xe1, 0x28, 0xa5, 0x7c};
+	//UINT8 A2[6] =  {0x50, 0x30, 0xf1, 0x84, 0x44, 0x08};
+	//UINT8 A3[6] =  {0xab, 0xae, 0xa5, 0xb8, 0xfc, 0xba};
+	UINT8 TK[16] = {0xc9, 0x7c, 0x1f, 0x67, 0xce, 0x37, 0x11, 0x85, 
+				  	0x51, 0x4a, 0x8a, 0x19, 0xf2, 0xbd, 0xd5, 0x2f};
+	UINT8 PN[6] =  {0x0C, 0xE7, 0x76, 0x97, 0x03, 0xB5};					
+	UINT8 HDR[24]= {0x08, 0x48, 0xc3, 0x2c, 0x0f, 0xd2, 0xe1, 0x28, 
+					0xa5, 0x7c, 0x50, 0x30, 0xf1, 0x84, 0x44, 0x08, 
+					0xab, 0xae, 0xa5, 0xb8, 0xfc, 0xba, 0x80, 0x33};
+	UINT8 AAD[22] = {0x08, 0x40, 0x0f, 0xd2, 0xe1, 0x28, 0xa5, 0x7c, 
+				     0x50, 0x30, 0xf1, 0x84, 0x44, 0x08, 0xab, 0xae, 
+				     0xa5, 0xb8, 0xfc, 0xba, 0x00, 0x00};
+	UINT8 CCMP_HDR[8] = {0x0c, 0xe7, 0x00, 0x20, 0x76, 0x97, 0x03, 0xb5};
+	UINT8 CCM_NONCE[13] = {0x00, 0x50, 0x30, 0xf1, 0x84, 0x44, 0x08, 0xb5, 
+						   0x03, 0x97, 0x76, 0xe7, 0x0c};
+	UINT8 P_TEXT_DATA[20] = {0xf8, 0xba, 0x1a, 0x55, 0xd0, 0x2f, 0x85, 0xae, 
+						     0x96, 0x7b, 0xb6, 0x2f, 0xb6, 0xcd, 0xa8, 0xeb, 
+						     0x7e, 0x78, 0xa0, 0x50};
+	UINT8 C_TEXT_DATA[28] = {0xf3, 0xd0, 0xa2, 0xfe, 0x9a, 0x3d, 0xbf, 0x23,
+							 0x42, 0xa6, 0x43, 0xe4, 0x32, 0x46, 0xe8, 0x0c, 
+							 0x3c, 0x04, 0xd0, 0x19, 0x78, 0x45, 0xce, 0x0b,
+							 0x16, 0xf9, 0x76, 0x23};		
+	UINT8	res_buf[100];
+	UINT	res_len = 0;
+
+	printk("== CCMP test vector == \n");
+
+	/* Check AAD */
+	NdisZeroMemory(res_buf, 100);
+	res_len = 0;
+	RTMPConstructCCMPAAD(HDR, TRUE, 0, 0, res_buf, &res_len);
+	if (res_len == 22 && NdisEqualMemory(res_buf, AAD, res_len))
+		printk("Construct AAD is OK!!!\n");
+	else
+	{
+		printk("\n!!!Construct AAD is FAILURE!!!\n\n");
+		hex_dump("Calculate AAD", res_buf, res_len);
+	}
+	/* Check NONCE */
+	NdisZeroMemory(res_buf, 100);
+	res_len = 0;
+	RTMPConstructCCMPNonce(HDR, 0, 0, FALSE, PN, res_buf, &res_len);
+	if (res_len == 13 && NdisEqualMemory(res_buf, CCM_NONCE, res_len))
+		printk("Construct NONCE is OK!!!\n");
+	else
+	{
+		printk("\n!!!Construct NONCE is FAILURE!!!\n\n");
+		hex_dump("Calculate NONCE", res_buf, res_len);
+	}
+	/* Check CCMP-Header */
+	NdisZeroMemory(res_buf, 100);
+	res_len = 0;
+	RTMPConstructCCMPHdr(Key_ID, PN, res_buf);
+	if (NdisEqualMemory(res_buf, CCMP_HDR, 8))
+		printk("Construct CCMP_HDR is OK!!!\n");
+	else
+	{
+		printk("\n!!!Construct CCMP_HDR is FAILURE!!!\n\n");
+		hex_dump("Calculate CCMP_HDR", res_buf, 8);
+	}
+
+	/* Encrypt action */
+	NdisZeroMemory(res_buf, 100);	
+	NdisMoveMemory(res_buf, P_TEXT_DATA, sizeof(P_TEXT_DATA));
+	res_len = sizeof(C_TEXT_DATA);
+	if (AES_CCM_Encrypt(res_buf, sizeof(P_TEXT_DATA), 
+					TK, sizeof(TK), 
+					CCM_NONCE, sizeof(CCM_NONCE), 
+					AAD, sizeof(AAD), 8, 
+					res_buf, &res_len) == 0)
+	{
+		if (res_len == sizeof(C_TEXT_DATA) && 
+				NdisEqualMemory(res_buf, C_TEXT_DATA, res_len))
+			printk("CCM_Encrypt is OK!!!\n");
+		else
+		{
+			printk("\n!!!CCM_Encrypt is FAILURE!!!\n\n");
+			hex_dump("CCM_Encrypt", res_buf, res_len);
+		}
+	}
+	
+	/* Decrypt action */
+	NdisZeroMemory(res_buf, 100);
+	NdisMoveMemory(res_buf, C_TEXT_DATA, sizeof(C_TEXT_DATA));
+	res_len = sizeof(P_TEXT_DATA);
+	if (AES_CCM_Decrypt(res_buf, sizeof(C_TEXT_DATA), TK, 16, 
+					CCM_NONCE, sizeof(CCM_NONCE), 
+					AAD, sizeof(AAD), 8, 
+					res_buf, &res_len) == 0)
+	{
+		if (res_len == sizeof(P_TEXT_DATA) && 
+				NdisEqualMemory(res_buf, P_TEXT_DATA, res_len))
+			printk("CCM_Decrypt is OK!!!\n");
+		else
+		{
+			printk("\n!!!CCM_Decrypt is FAILURE!!!\n\n");
+			hex_dump("CCM_Decrypt", res_buf, res_len);
+		}
+	}	
+	
+
+	printk("== CCMP test vector == \n");
+
+	}
+
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_asic.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_asic.c
new file mode 100644
index 000000000..d4cbbdd4c
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_asic.c
@@ -0,0 +1,3346 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+	Module Name:
+	cmm_asic.c
+
+	Abstract:
+	Functions used to communicate with ASIC
+	
+	Revision History:
+	Who			When			What
+	--------	----------		----------------------------------------------
+*/
+
+#include "rt_config.h"
+
+#ifdef RT28xx
+// Reset the RFIC setting to new series    
+RTMP_RF_REGS RF2850RegTable[] = {
+//		ch	 R1 		 R2 		 R3(TX0~4=0) R4
+		{1,  0x98402ecc, 0x984c0786, 0x9816b455, 0x9800510b},
+		{2,  0x98402ecc, 0x984c0786, 0x98168a55, 0x9800519f},
+		{3,  0x98402ecc, 0x984c078a, 0x98168a55, 0x9800518b},
+		{4,  0x98402ecc, 0x984c078a, 0x98168a55, 0x9800519f},
+		{5,  0x98402ecc, 0x984c078e, 0x98168a55, 0x9800518b},
+		{6,  0x98402ecc, 0x984c078e, 0x98168a55, 0x9800519f},
+		{7,  0x98402ecc, 0x984c0792, 0x98168a55, 0x9800518b},
+		{8,  0x98402ecc, 0x984c0792, 0x98168a55, 0x9800519f},
+		{9,  0x98402ecc, 0x984c0796, 0x98168a55, 0x9800518b},
+		{10, 0x98402ecc, 0x984c0796, 0x98168a55, 0x9800519f},
+		{11, 0x98402ecc, 0x984c079a, 0x98168a55, 0x9800518b},
+		{12, 0x98402ecc, 0x984c079a, 0x98168a55, 0x9800519f},
+		{13, 0x98402ecc, 0x984c079e, 0x98168a55, 0x9800518b},
+		{14, 0x98402ecc, 0x984c07a2, 0x98168a55, 0x98005193},
+
+		// 802.11 UNI / HyperLan 2
+		{36, 0x98402ecc, 0x984c099a, 0x98158a55, 0x980ed1a3},
+		{38, 0x98402ecc, 0x984c099e, 0x98158a55, 0x980ed193},
+		{40, 0x98402ec8, 0x984c0682, 0x98158a55, 0x980ed183},
+		{44, 0x98402ec8, 0x984c0682, 0x98158a55, 0x980ed1a3},
+		{46, 0x98402ec8, 0x984c0686, 0x98158a55, 0x980ed18b},
+		{48, 0x98402ec8, 0x984c0686, 0x98158a55, 0x980ed19b},
+		{52, 0x98402ec8, 0x984c068a, 0x98158a55, 0x980ed193},
+		{54, 0x98402ec8, 0x984c068a, 0x98158a55, 0x980ed1a3},
+		{56, 0x98402ec8, 0x984c068e, 0x98158a55, 0x980ed18b},
+		{60, 0x98402ec8, 0x984c0692, 0x98158a55, 0x980ed183},
+		{62, 0x98402ec8, 0x984c0692, 0x98158a55, 0x980ed193},
+		{64, 0x98402ec8, 0x984c0692, 0x98158a55, 0x980ed1a3}, // Plugfest#4, Day4, change RFR3 left4th 9->5.
+
+		// 802.11 HyperLan 2
+		{100, 0x98402ec8, 0x984c06b2, 0x98178a55, 0x980ed783},
+		
+		// 2008.04.30 modified 
+		// The system team has AN to improve the EVM value 
+		// for channel 102 to 108 for the RT2850/RT2750 dual band solution.
+		{102, 0x98402ec8, 0x985c06b2, 0x98578a55, 0x980ed793},
+		{104, 0x98402ec8, 0x985c06b2, 0x98578a55, 0x980ed1a3},
+		{108, 0x98402ecc, 0x985c0a32, 0x98578a55, 0x980ed193},
+
+		{110, 0x98402ecc, 0x984c0a36, 0x98178a55, 0x980ed183},
+		{112, 0x98402ecc, 0x984c0a36, 0x98178a55, 0x980ed19b},
+		{116, 0x98402ecc, 0x984c0a3a, 0x98178a55, 0x980ed1a3},
+		{118, 0x98402ecc, 0x984c0a3e, 0x98178a55, 0x980ed193},
+		{120, 0x98402ec4, 0x984c0382, 0x98178a55, 0x980ed183},
+		{124, 0x98402ec4, 0x984c0382, 0x98178a55, 0x980ed193},
+		{126, 0x98402ec4, 0x984c0382, 0x98178a55, 0x980ed15b}, // 0x980ed1bb->0x980ed15b required by Rory 20070927
+		{128, 0x98402ec4, 0x984c0382, 0x98178a55, 0x980ed1a3},
+		{132, 0x98402ec4, 0x984c0386, 0x98178a55, 0x980ed18b},
+		{134, 0x98402ec4, 0x984c0386, 0x98178a55, 0x980ed193},
+		{136, 0x98402ec4, 0x984c0386, 0x98178a55, 0x980ed19b},
+		{140, 0x98402ec4, 0x984c038a, 0x98178a55, 0x980ed183},
+
+		// 802.11 UNII
+		{149, 0x98402ec4, 0x984c038a, 0x98178a55, 0x980ed1a7},
+		{151, 0x98402ec4, 0x984c038e, 0x98178a55, 0x980ed187},
+		{153, 0x98402ec4, 0x984c038e, 0x98178a55, 0x980ed18f},
+		{157, 0x98402ec4, 0x984c038e, 0x98178a55, 0x980ed19f},
+		{159, 0x98402ec4, 0x984c038e, 0x98178a55, 0x980ed1a7},
+		{161, 0x98402ec4, 0x984c0392, 0x98178a55, 0x980ed187},
+		{165, 0x98402ec4, 0x984c0392, 0x98178a55, 0x980ed197},
+		{167, 0x98402ec4, 0x984c03d2, 0x98179855, 0x9815531f},
+		{169, 0x98402ec4, 0x984c03d2, 0x98179855, 0x98155327},
+		{171, 0x98402ec4, 0x984c03d6, 0x98179855, 0x98155307},
+		{173, 0x98402ec4, 0x984c03d6, 0x98179855, 0x9815530f},
+
+		// Japan
+		{184, 0x95002ccc, 0x9500491e, 0x9509be55, 0x950c0a0b},
+		{188, 0x95002ccc, 0x95004922, 0x9509be55, 0x950c0a13},
+		{192, 0x95002ccc, 0x95004926, 0x9509be55, 0x950c0a1b},
+		{196, 0x95002ccc, 0x9500492a, 0x9509be55, 0x950c0a23},
+		{208, 0x95002ccc, 0x9500493a, 0x9509be55, 0x950c0a13},
+		{212, 0x95002ccc, 0x9500493e, 0x9509be55, 0x950c0a1b},
+		{216, 0x95002ccc, 0x95004982, 0x9509be55, 0x950c0a23},
+
+		// still lack of MMAC(Japan) ch 34,38,42,46
+};
+UCHAR	NUM_OF_2850_CHNL = (sizeof(RF2850RegTable) / sizeof(RTMP_RF_REGS));
+#endif // RT28xx //
+
+FREQUENCY_ITEM FreqItems3020[] =
+{	
+	/**************************************************/
+	// ISM : 2.4 to 2.483 GHz                         //
+	/**************************************************/
+	// 11g
+	/**************************************************/
+	//-CH---N-------R---K-----------
+	{1,    241,  2,  2},
+	{2,    241,	 2,  7},
+	{3,    242,	 2,  2},
+	{4,    242,	 2,  7},
+	{5,    243,	 2,  2},
+	{6,    243,	 2,  7},
+	{7,    244,	 2,  2},
+	{8,    244,	 2,  7},
+	{9,    245,	 2,  2},
+	{10,   245,	 2,  7},
+	{11,   246,	 2,  2},
+	{12,   246,	 2,  7},
+	{13,   247,	 2,  2},
+	{14,   248,	 2,  4},
+};
+UCHAR	NUM_OF_3020_CHNL = (sizeof(FreqItems3020) / sizeof(FREQUENCY_ITEM));
+
+#ifdef RT35xx
+FREQUENCY_ITEM FreqItems3572[] =
+{	
+	/**************************************************/
+	// ISM : 2.4 to 2.483 GHz                         //
+	/**************************************************/
+	//-CH---N-------R---K-----------
+	{1,    241,  2,  2},
+	{2,    241,	 2,  7},
+	{3,    242,	 2,  2},
+	{4,    242,	 2,  7},
+	{5,    243,	 2,  2},
+	{6,    243,	 2,  7},
+	{7,    244,	 2,  2},
+	{8,    244,	 2,  7},
+	{9,    245,	 2,  2},
+	{10,   245,	 2,  7},
+	{11,   246,	 2,  2},
+	{12,   246,	 2,  7},
+	{13,   247,	 2,  2},
+	{14,   248,	 2,  4},
+
+	/**************************************************/
+	// 5 GHz
+	/**************************************************/
+	{36,	0x56,	0,	4},
+	{38,	0x56,	0,	6},
+	{40,	0x56,	0,	8},
+	{44,	0x57,	0,	0},
+	{46,	0x57,	0,	2},
+	{48,	0x57,	0,	4},
+	{52,	0x57,	0,	8},
+	{54,	0x57,	0,	10},
+	{56,	0x58,	0,	0},
+	{60,	0x58,	0,	4},
+	{62,	0x58,	0,	6},
+	{64,	0x58,	0,	8},
+
+	{100,	0x5B,	0,	8},
+	{102,	0x5B,	0,	10},
+	{104,	0x5C,	0,	0},
+	{108,	0x5C,	0,	4},
+	{110,	0x5C,	0,	6},
+	{112,	0x5C,	0,	8},
+//	{114,	0x5C,	0,	10},
+	{116,	0x5D,	0,	0},
+	{118,	0x5D,	0,	2},
+	{120,	0x5D,	0,	4},
+	{124,	0x5D,	0,	8},
+	{126,	0x5D,	0,	10},
+	{128,	0x5E,	0,	0},
+	{132,	0x5E,	0,	4},
+	{134,	0x5E,	0,	6},
+	{136,	0x5E,	0,	8},
+	{140,	0x5F,	0,	0},
+
+	{149,	0x5F,	0,	9},
+	{151,	0x5F,	0,	11},
+	{153,	0x60,	0,	1},
+	{157,	0x60,	0,	5},
+	{159,	0x60,	0,	7},
+	{161,	0x60,	0,	9},
+	{165,	0x61,	0,	1},
+	{167,	0x61,	0,	3},
+	{169,	0x61,	0,	5},
+	{171,	0x61,	0,	7},
+	{173,	0x61,	0,	9},
+};
+UCHAR NUM_OF_3572_CHNL = (sizeof(FreqItems3572) / sizeof(FREQUENCY_ITEM));
+#endif // RT35xx //
+
+VOID AsicUpdateAutoFallBackTable(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PUCHAR			pRateTable)
+{
+	UCHAR					i;
+	HT_FBK_CFG0_STRUC		HtCfg0;
+	HT_FBK_CFG1_STRUC		HtCfg1;
+	LG_FBK_CFG0_STRUC		LgCfg0;
+	LG_FBK_CFG1_STRUC		LgCfg1;
+	PRTMP_TX_RATE_SWITCH	pCurrTxRate, pNextTxRate;
+
+	// set to initial value
+	HtCfg0.word = 0x65432100;
+	HtCfg1.word = 0xedcba988;
+	LgCfg0.word = 0xedcba988;
+	LgCfg1.word = 0x00002100;
+
+	pNextTxRate = (PRTMP_TX_RATE_SWITCH)pRateTable+1;
+	for (i = 1; i < *((PUCHAR) pRateTable); i++)
+	{
+		pCurrTxRate = (PRTMP_TX_RATE_SWITCH)pRateTable+1+i;
+		switch (pCurrTxRate->Mode)
+		{
+			case 0:		//CCK
+				break;
+			case 1:		//OFDM
+				{
+					switch(pCurrTxRate->CurrMCS)
+					{
+						case 0:
+							LgCfg0.field.OFDMMCS0FBK = (pNextTxRate->Mode == MODE_OFDM) ? (pNextTxRate->CurrMCS+8): pNextTxRate->CurrMCS;
+							break;
+						case 1:
+							LgCfg0.field.OFDMMCS1FBK = (pNextTxRate->Mode == MODE_OFDM) ? (pNextTxRate->CurrMCS+8): pNextTxRate->CurrMCS;
+							break;
+						case 2:
+							LgCfg0.field.OFDMMCS2FBK = (pNextTxRate->Mode == MODE_OFDM) ? (pNextTxRate->CurrMCS+8): pNextTxRate->CurrMCS;
+							break;
+						case 3:
+							LgCfg0.field.OFDMMCS3FBK = (pNextTxRate->Mode == MODE_OFDM) ? (pNextTxRate->CurrMCS+8): pNextTxRate->CurrMCS;
+							break;
+						case 4:
+							LgCfg0.field.OFDMMCS4FBK = (pNextTxRate->Mode == MODE_OFDM) ? (pNextTxRate->CurrMCS+8): pNextTxRate->CurrMCS;
+							break;
+						case 5:
+							LgCfg0.field.OFDMMCS5FBK = (pNextTxRate->Mode == MODE_OFDM) ? (pNextTxRate->CurrMCS+8): pNextTxRate->CurrMCS;
+							break;
+						case 6:
+							LgCfg0.field.OFDMMCS6FBK = (pNextTxRate->Mode == MODE_OFDM) ? (pNextTxRate->CurrMCS+8): pNextTxRate->CurrMCS;
+							break;
+						case 7:
+							LgCfg0.field.OFDMMCS7FBK = (pNextTxRate->Mode == MODE_OFDM) ? (pNextTxRate->CurrMCS+8): pNextTxRate->CurrMCS;
+							break;
+					}
+				}
+				break;
+#ifdef DOT11_N_SUPPORT
+			case 2:		//HT-MIX
+			case 3:		//HT-GF
+				{
+					if ((pNextTxRate->Mode >= MODE_HTMIX) && (pCurrTxRate->CurrMCS != pNextTxRate->CurrMCS))
+					{
+						switch(pCurrTxRate->CurrMCS)
+						{
+							case 0:
+								HtCfg0.field.HTMCS0FBK = pNextTxRate->CurrMCS;
+								break;
+							case 1:
+								HtCfg0.field.HTMCS1FBK = pNextTxRate->CurrMCS;
+								break;
+							case 2:
+								HtCfg0.field.HTMCS2FBK = pNextTxRate->CurrMCS;
+								break;
+							case 3:
+								HtCfg0.field.HTMCS3FBK = pNextTxRate->CurrMCS;
+								break;
+							case 4:
+								HtCfg0.field.HTMCS4FBK = pNextTxRate->CurrMCS;
+								break;
+							case 5:
+								HtCfg0.field.HTMCS5FBK = pNextTxRate->CurrMCS;
+								break;
+							case 6:
+								HtCfg0.field.HTMCS6FBK = pNextTxRate->CurrMCS;
+								break;
+							case 7:
+								HtCfg0.field.HTMCS7FBK = pNextTxRate->CurrMCS;
+								break;
+							case 8:
+								HtCfg1.field.HTMCS8FBK = pNextTxRate->CurrMCS;
+								break;
+							case 9:
+								HtCfg1.field.HTMCS9FBK = pNextTxRate->CurrMCS;
+								break;
+							case 10:
+								HtCfg1.field.HTMCS10FBK = pNextTxRate->CurrMCS;
+								break;
+							case 11:
+								HtCfg1.field.HTMCS11FBK = pNextTxRate->CurrMCS;
+								break;
+							case 12:
+								HtCfg1.field.HTMCS12FBK = pNextTxRate->CurrMCS;
+								break;
+							case 13:
+								HtCfg1.field.HTMCS13FBK = pNextTxRate->CurrMCS;
+								break;
+							case 14:
+								HtCfg1.field.HTMCS14FBK = pNextTxRate->CurrMCS;
+								break;
+							case 15:
+								HtCfg1.field.HTMCS15FBK = pNextTxRate->CurrMCS;
+								break;
+							default:
+								DBGPRINT(RT_DEBUG_ERROR, ("AsicUpdateAutoFallBackTable: not support CurrMCS=%d\n", pCurrTxRate->CurrMCS));
+						}
+					}
+				}
+				break;
+#endif // DOT11_N_SUPPORT //
+		}
+
+		pNextTxRate = pCurrTxRate;
+	}
+
+	RTMP_IO_WRITE32(pAd, HT_FBK_CFG0, HtCfg0.word);
+	RTMP_IO_WRITE32(pAd, HT_FBK_CFG1, HtCfg1.word);
+	RTMP_IO_WRITE32(pAd, LG_FBK_CFG0, LgCfg0.word);
+	RTMP_IO_WRITE32(pAd, LG_FBK_CFG1, LgCfg1.word);
+}
+
+/*
+	========================================================================
+
+	Routine Description:
+		Set MAC register value according operation mode.
+		OperationMode AND bNonGFExist are for MM and GF Proteciton.
+		If MM or GF mask is not set, those passing argument doesn't not take effect.
+		
+		Operation mode meaning:
+		= 0 : Pure HT, no preotection.
+		= 0x01; there may be non-HT devices in both the control and extension channel, protection is optional in BSS.
+		= 0x10: No Transmission in 40M is protected.
+		= 0x11: Transmission in both 40M and 20M shall be protected
+		if (bNonGFExist)
+			we should choose not to use GF. But still set correct ASIC registers.
+	========================================================================
+*/
+VOID 	AsicUpdateProtect(
+	IN		PRTMP_ADAPTER	pAd,
+	IN 		USHORT			OperationMode,
+	IN 		UCHAR			SetMask,
+	IN		BOOLEAN			bDisableBGProtect,
+	IN		BOOLEAN			bNonGFExist)	
+{
+	PROT_CFG_STRUC	ProtCfg, ProtCfg4;
+	UINT32 Protect[6];
+	USHORT			offset;
+	UCHAR			i;
+	UINT32 MacReg = 0;
+
+#ifdef RALINK_ATE
+	if (ATE_ON(pAd))
+		return;
+#endif // RALINK_ATE //
+
+#ifdef DOT11_N_SUPPORT
+	if (!(pAd->CommonCfg.bHTProtect) && (OperationMode != 8))
+	{
+		return;
+	}
+
+	if (pAd->BATable.numDoneOriginator)
+	{
+		// 
+		// enable the RTS/CTS to avoid channel collision
+		// 
+		SetMask |= ALLN_SETPROTECT;
+		OperationMode = 8;
+	}
+#endif // DOT11_N_SUPPORT //
+
+	// Config ASIC RTS threshold register
+	RTMP_IO_READ32(pAd, TX_RTS_CFG, &MacReg);
+	MacReg &= 0xFF0000FF;
+	// If the user want disable RtsThreshold and enbale Amsdu/Ralink-Aggregation, set the RtsThreshold as 4096
+        if ((
+#ifdef DOT11_N_SUPPORT
+			(pAd->CommonCfg.BACapability.field.AmsduEnable) || 
+#endif // DOT11_N_SUPPORT //
+			(pAd->CommonCfg.bAggregationCapable == TRUE))
+            && pAd->CommonCfg.RtsThreshold == MAX_RTS_THRESHOLD)
+        {
+			MacReg |= (0x1000 << 8);
+        }
+        else
+        {
+			MacReg |= (pAd->CommonCfg.RtsThreshold << 8);
+        }
+
+	RTMP_IO_WRITE32(pAd, TX_RTS_CFG, MacReg);
+
+	// Initial common protection settings
+	RTMPZeroMemory(Protect, sizeof(Protect));
+	ProtCfg4.word = 0;
+	ProtCfg.word = 0;
+	ProtCfg.field.TxopAllowGF40 = 1;
+	ProtCfg.field.TxopAllowGF20 = 1;
+	ProtCfg.field.TxopAllowMM40 = 1;
+	ProtCfg.field.TxopAllowMM20 = 1;
+	ProtCfg.field.TxopAllowOfdm = 1;
+	ProtCfg.field.TxopAllowCck = 1;
+	ProtCfg.field.RTSThEn = 1;
+	ProtCfg.field.ProtectNav = ASIC_SHORTNAV;
+
+	// update PHY mode and rate
+	if (pAd->CommonCfg.Channel > 14)
+		ProtCfg.field.ProtectRate = 0x4000;
+	ProtCfg.field.ProtectRate |= pAd->CommonCfg.RtsRate;	
+
+	// Handle legacy(B/G) protection
+	if (bDisableBGProtect)
+	{
+		//ProtCfg.field.ProtectRate = pAd->CommonCfg.RtsRate;
+		ProtCfg.field.ProtectCtrl = 0;
+		Protect[0] = ProtCfg.word;
+		Protect[1] = ProtCfg.word;
+		pAd->FlgCtsEnabled = 0; /* CTS-self is not used */
+	}
+	else
+	{
+		//ProtCfg.field.ProtectRate = pAd->CommonCfg.RtsRate;
+		ProtCfg.field.ProtectCtrl = 0;			// CCK do not need to be protected
+		Protect[0] = ProtCfg.word;
+		ProtCfg.field.ProtectCtrl = ASIC_CTS;	// OFDM needs using CCK to protect
+		Protect[1] = ProtCfg.word;
+		pAd->FlgCtsEnabled = 1; /* CTS-self is used */
+	}
+
+#ifdef DOT11_N_SUPPORT
+	// Decide HT frame protection.
+	if ((SetMask & ALLN_SETPROTECT) != 0)
+	{
+		switch(OperationMode)
+		{
+			case 0x0:
+				// NO PROTECT 
+				// 1.All STAs in the BSS are 20/40 MHz HT
+				// 2. in ai 20/40MHz BSS
+				// 3. all STAs are 20MHz in a 20MHz BSS
+				// Pure HT. no protection.
+
+				// MM20_PROT_CFG
+				//	Reserved (31:27)
+				// 	PROT_TXOP(25:20) -- 010111
+				//	PROT_NAV(19:18)  -- 01 (Short NAV protection)
+				//  PROT_CTRL(17:16) -- 00 (None)
+				// 	PROT_RATE(15:0)  -- 0x4004 (OFDM 24M)
+				Protect[2] = 0x01744004;	
+
+				// MM40_PROT_CFG
+				//	Reserved (31:27)
+				// 	PROT_TXOP(25:20) -- 111111
+				//	PROT_NAV(19:18)  -- 01 (Short NAV protection)
+				//  PROT_CTRL(17:16) -- 00 (None) 
+				// 	PROT_RATE(15:0)  -- 0x4084 (duplicate OFDM 24M)
+				Protect[3] = 0x03f44084;
+
+				// CF20_PROT_CFG
+				//	Reserved (31:27)
+				// 	PROT_TXOP(25:20) -- 010111
+				//	PROT_NAV(19:18)  -- 01 (Short NAV protection)
+				//  PROT_CTRL(17:16) -- 00 (None)
+				// 	PROT_RATE(15:0)  -- 0x4004 (OFDM 24M)
+				Protect[4] = 0x01744004;
+
+				// CF40_PROT_CFG
+				//	Reserved (31:27)
+				// 	PROT_TXOP(25:20) -- 111111
+				//	PROT_NAV(19:18)  -- 01 (Short NAV protection)
+				//  PROT_CTRL(17:16) -- 00 (None)
+				// 	PROT_RATE(15:0)  -- 0x4084 (duplicate OFDM 24M)
+				Protect[5] = 0x03f44084;
+
+				if (bNonGFExist)
+				{
+					// PROT_NAV(19:18)  -- 01 (Short NAV protectiion)
+					// PROT_CTRL(17:16) -- 01 (RTS/CTS)
+					Protect[4] = 0x01754004;
+					Protect[5] = 0x03f54084;
+				}
+				pAd->CommonCfg.IOTestParm.bRTSLongProtOn = FALSE;
+				break;
+				
+ 			case 1:
+				// This is "HT non-member protection mode."
+				// If there may be non-HT STAs my BSS
+				ProtCfg.word = 0x01744004;	// PROT_CTRL(17:16) : 0 (None)
+				ProtCfg4.word = 0x03f44084; // duplicaet legacy 24M. BW set 1.
+				if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_BG_PROTECTION_INUSED))
+				{
+					ProtCfg.word = 0x01740003;	//ERP use Protection bit is set, use protection rate at Clause 18..
+					ProtCfg4.word = 0x03f40003; // Don't duplicate RTS/CTS in CCK mode. 0x03f40083; 
+				}
+				//Assign Protection method for 20&40 MHz packets
+				ProtCfg.field.ProtectCtrl = ASIC_RTS;
+				ProtCfg.field.ProtectNav = ASIC_SHORTNAV;
+				ProtCfg4.field.ProtectCtrl = ASIC_RTS;
+				ProtCfg4.field.ProtectNav = ASIC_SHORTNAV;
+				Protect[2] = ProtCfg.word;
+				Protect[3] = ProtCfg4.word;
+				Protect[4] = ProtCfg.word;
+				Protect[5] = ProtCfg4.word;
+				pAd->CommonCfg.IOTestParm.bRTSLongProtOn = TRUE;
+				break;
+				
+			case 2:
+				// If only HT STAs are in BSS. at least one is 20MHz. Only protect 40MHz packets
+				ProtCfg.word = 0x01744004;  // PROT_CTRL(17:16) : 0 (None)
+				ProtCfg4.word = 0x03f44084; // duplicaet legacy 24M. BW set 1.
+				if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_BG_PROTECTION_INUSED))
+				{
+					ProtCfg.word = 0x01740003;	//ERP use Protection bit is set, use protection rate at Clause 18..
+					ProtCfg4.word = 0x03f40003; // Don't duplicate RTS/CTS in CCK mode. 0x03f40083; 
+				} 
+				//Assign Protection method for 40MHz packets
+				ProtCfg4.field.ProtectCtrl = ASIC_RTS;
+				ProtCfg4.field.ProtectNav = ASIC_SHORTNAV;
+				Protect[2] = ProtCfg.word;
+				Protect[3] = ProtCfg4.word;
+				if (bNonGFExist)
+				{
+					ProtCfg.field.ProtectCtrl = ASIC_RTS;
+					ProtCfg.field.ProtectNav = ASIC_SHORTNAV;
+				}
+				Protect[4] = ProtCfg.word;
+				Protect[5] = ProtCfg4.word;
+
+				pAd->CommonCfg.IOTestParm.bRTSLongProtOn = FALSE;
+				break;
+				
+			case 3:
+				// HT mixed mode.	 PROTECT ALL!
+				// Assign Rate
+				ProtCfg.word = 0x01744004;	//duplicaet legacy 24M. BW set 1.
+				ProtCfg4.word = 0x03f44084;
+				// both 20MHz and 40MHz are protected. Whether use RTS or CTS-to-self depends on the
+				if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_BG_PROTECTION_INUSED))
+				{
+					ProtCfg.word = 0x01740003;	//ERP use Protection bit is set, use protection rate at Clause 18..
+					ProtCfg4.word = 0x03f40003; // Don't duplicate RTS/CTS in CCK mode. 0x03f40083
+				}
+				//Assign Protection method for 20&40 MHz packets
+				ProtCfg.field.ProtectCtrl = ASIC_RTS;
+				ProtCfg.field.ProtectNav = ASIC_SHORTNAV;
+				ProtCfg4.field.ProtectCtrl = ASIC_RTS;
+				ProtCfg4.field.ProtectNav = ASIC_SHORTNAV;
+				Protect[2] = ProtCfg.word;
+				Protect[3] = ProtCfg4.word;
+				Protect[4] = ProtCfg.word;
+				Protect[5] = ProtCfg4.word;
+				pAd->CommonCfg.IOTestParm.bRTSLongProtOn = TRUE;
+				break;	
+				
+			case 8:
+				// Special on for Atheros problem n chip.
+				ProtCfg.word = 0x01754004;	//duplicaet legacy 24M. BW set 1.
+				ProtCfg4.word = 0x03f54084;
+				if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_BG_PROTECTION_INUSED))
+				{
+					ProtCfg.word = 0x01750003;	//ERP use Protection bit is set, use protection rate at Clause 18..
+					ProtCfg4.word = 0x03f50003; // Don't duplicate RTS/CTS in CCK mode. 0x03f40083
+				}
+				
+				Protect[2] = ProtCfg.word; 	//0x01754004;
+				Protect[3] = ProtCfg4.word; //0x03f54084;
+				Protect[4] = ProtCfg.word; 	//0x01754004;
+				Protect[5] = ProtCfg4.word; //0x03f54084;
+				pAd->CommonCfg.IOTestParm.bRTSLongProtOn = TRUE;
+				break;		
+		}
+	}
+#endif // DOT11_N_SUPPORT //
+	
+	offset = CCK_PROT_CFG;
+	for (i = 0;i < 6;i++)
+	{
+			if ((SetMask & (1<< i)))
+		{
+		RTMP_IO_WRITE32(pAd, offset + i*4, Protect[i]);
+	}
+}
+}
+
+
+VOID AsicBBPAdjust(RTMP_ADAPTER *pAd)
+{
+	UINT32 Value;
+	UCHAR byteValue = 0;
+	
+#ifdef DOT11_N_SUPPORT
+	if ((pAd->CommonCfg.HtCapability.HtCapInfo.ChannelWidth  == BW_40) && 
+		(pAd->CommonCfg.RegTransmitSetting.field.EXTCHA == EXTCHA_ABOVE)
+		/*(pAd->CommonCfg.AddHTInfo.AddHtInfo.ExtChanOffset == EXTCHA_ABOVE)*/
+	)
+	{
+		pAd->CommonCfg.BBPCurrentBW = BW_40;
+		pAd->CommonCfg.CentralChannel = pAd->CommonCfg.Channel + 2;
+		
+		//  TX : control channel at lower 
+		RTMP_IO_READ32(pAd, TX_BAND_CFG, &Value);
+		Value &= (~0x1);
+		RTMP_IO_WRITE32(pAd, TX_BAND_CFG, Value);
+
+		//  RX : control channel at lower 
+		RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R3, &byteValue);
+		byteValue &= (~0x20);
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R3, byteValue);
+
+		RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R4, &byteValue);
+		byteValue &= (~0x18);
+		byteValue |= 0x10;
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R4, byteValue);
+		if (pAd->CommonCfg.Channel > 14)
+		{ 	// request by Gary 20070208 for middle and long range A Band
+#ifdef RT35xx
+			if (IS_RT3572(pAd))
+				RT3572WriteBBPR66(pAd, 0x48);
+			else
+#endif // RT35xx //
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R66, 0x48);
+		}
+		else
+		{	// request by Gary 20070208 for middle and long range G Band
+#ifdef RT35xx
+			if (IS_RT3572(pAd))
+				RT3572WriteBBPR66(pAd, 0x38);
+			else
+#endif // RT35xx //
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R66, 0x38);
+		}	
+		// 
+		if (pAd->MACVersion == 0x28600100)
+		{
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R69, 0x1A);
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R70, 0x0A);
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R73, 0x16);
+		}
+		else
+		{
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R69, 0x12);
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R70, 0x0A);
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R73, 0x10);
+		}	
+
+		DBGPRINT(RT_DEBUG_TRACE, ("ApStartUp : ExtAbove, ChannelWidth=%d, Channel=%d, ExtChanOffset=%d(%d) \n",
+									pAd->CommonCfg.HtCapability.HtCapInfo.ChannelWidth, 
+									pAd->CommonCfg.Channel, 
+									pAd->CommonCfg.RegTransmitSetting.field.EXTCHA,
+									pAd->CommonCfg.AddHTInfo.AddHtInfo.ExtChanOffset));
+	}
+	else if ((pAd->CommonCfg.Channel > 2) && 
+			(pAd->CommonCfg.HtCapability.HtCapInfo.ChannelWidth  == BW_40) && 
+			(pAd->CommonCfg.RegTransmitSetting.field.EXTCHA == EXTCHA_BELOW)
+			/*(pAd->CommonCfg.AddHTInfo.AddHtInfo.ExtChanOffset == EXTCHA_BELOW)*/)
+	{
+		pAd->CommonCfg.BBPCurrentBW = BW_40;
+		if (pAd->CommonCfg.Channel == 14)
+			pAd->CommonCfg.CentralChannel = pAd->CommonCfg.Channel - 1;
+		else
+			pAd->CommonCfg.CentralChannel = pAd->CommonCfg.Channel - 2;
+		
+		//  TX : control channel at upper 
+		RTMP_IO_READ32(pAd, TX_BAND_CFG, &Value);
+		Value |= (0x1);		
+		RTMP_IO_WRITE32(pAd, TX_BAND_CFG, Value);
+
+		//  RX : control channel at upper 
+		RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R3, &byteValue);
+		byteValue |= (0x20);
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R3, byteValue);
+
+		RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R4, &byteValue);
+		byteValue &= (~0x18);
+		byteValue |= 0x10;
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R4, byteValue);
+		
+		if (pAd->CommonCfg.Channel > 14)
+		{ 	// request by Gary 20070208 for middle and long range A Band
+#ifdef RT35xx
+			if (IS_RT3572(pAd))
+				RT3572WriteBBPR66(pAd, 0x48);
+			else
+#endif // RT35xx //
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R66, 0x48);
+		}
+		else
+		{ 	// request by Gary 20070208 for middle and long range G band
+#ifdef RT35xx
+			if (IS_RT3572(pAd))
+				RT3572WriteBBPR66(pAd, 0x38);
+			else
+#endif // RT35xx //
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R66, 0x38);
+		}	
+	
+		
+		if (pAd->MACVersion == 0x28600100)
+		{
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R69, 0x1A);
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R70, 0x0A);
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R73, 0x16);
+		}
+		else
+		{	
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R69, 0x12);
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R70, 0x0A);
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R73, 0x10);
+		}
+		DBGPRINT(RT_DEBUG_TRACE, ("ApStartUp : ExtBlow, ChannelWidth=%d, Channel=%d, ExtChanOffset=%d(%d) \n",
+									pAd->CommonCfg.HtCapability.HtCapInfo.ChannelWidth, 
+									pAd->CommonCfg.Channel, 
+									pAd->CommonCfg.RegTransmitSetting.field.EXTCHA,
+									pAd->CommonCfg.AddHTInfo.AddHtInfo.ExtChanOffset));
+	}
+	else
+#endif // DOT11_N_SUPPORT //
+	{
+		pAd->CommonCfg.BBPCurrentBW = BW_20;
+		pAd->CommonCfg.CentralChannel = pAd->CommonCfg.Channel;
+		
+		//  TX : control channel at lower 
+		RTMP_IO_READ32(pAd, TX_BAND_CFG, &Value);
+		Value &= (~0x1);
+		RTMP_IO_WRITE32(pAd, TX_BAND_CFG, Value);
+
+		RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R4, &byteValue);
+		byteValue &= (~0x18);
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R4, byteValue);
+		
+		// 20 MHz bandwidth
+		if (pAd->CommonCfg.Channel > 14)
+		{	 // request by Gary 20070208
+#ifdef RT35xx
+			if (IS_RT3572(pAd))
+				RT3572WriteBBPR66(pAd, 0x40);
+			else
+#endif // RT35xx //
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R66, 0x40);
+		}	
+		else
+		{	// request by Gary 20070208
+			//RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R66, 0x30);
+			// request by Brian 20070306
+#ifdef RT35xx
+			if (IS_RT3572(pAd))
+				RT3572WriteBBPR66(pAd, 0x38);
+			else
+#endif // RT35xx //
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R66, 0x38);
+		}	
+				 
+		if (pAd->MACVersion == 0x28600100)
+		{
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R69, 0x16);
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R70, 0x08);
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R73, 0x11);
+		}
+		else
+		{
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R69, 0x12);
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R70, 0x0a);
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R73, 0x10);
+		}
+
+#ifdef DOT11_N_SUPPORT
+		DBGPRINT(RT_DEBUG_TRACE, ("ApStartUp : 20MHz, ChannelWidth=%d, Channel=%d, ExtChanOffset=%d(%d) \n",
+										pAd->CommonCfg.HtCapability.HtCapInfo.ChannelWidth, 
+										pAd->CommonCfg.Channel, 
+										pAd->CommonCfg.RegTransmitSetting.field.EXTCHA,
+										pAd->CommonCfg.AddHTInfo.AddHtInfo.ExtChanOffset));
+#endif // DOT11_N_SUPPORT //
+	}
+	
+	if (pAd->CommonCfg.Channel > 14)
+	{	// request by Gary 20070208 for middle and long range A Band
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R62, 0x1D);
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R63, 0x1D);
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R64, 0x1D);
+		//RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R86, 0x1D);
+	}
+	else
+	{ 	// request by Gary 20070208 for middle and long range G band
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R62, 0x2D);
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R63, 0x2D);
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R64, 0x2D);
+			//RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R86, 0x2D);
+	}	
+
+}
+
+	
+/*
+	==========================================================================
+	Description:
+
+	IRQL = PASSIVE_LEVEL
+	IRQL = DISPATCH_LEVEL
+	
+	==========================================================================
+ */
+VOID AsicSwitchChannel(
+					  IN PRTMP_ADAPTER pAd, 
+	IN	UCHAR			Channel,
+	IN	BOOLEAN			bScan) 
+{
+	CHAR    TxPwer = 0, TxPwer2 = DEFAULT_RF_TX_POWER; //Bbp94 = BBPR94_DEFAULT, TxPwer2 = DEFAULT_RF_TX_POWER;
+	UCHAR	index;
+	UINT32 	Value = 0; //BbpReg, Value;
+	UCHAR 	RFValue;
+
+
+	RFValue = 0;
+	// Search Tx power value
+
+	/*
+		We can't use ChannelList to search channel, since some central channl's txpowr doesn't list 
+		in ChannelList, so use TxPower array instead.
+	*/
+	for (index = 0; index < MAX_NUM_OF_CHANNELS; index++)
+	{
+		if (Channel == pAd->TxPower[index].Channel)
+		{
+			TxPwer = pAd->TxPower[index].Power;
+			TxPwer2 = pAd->TxPower[index].Power2;
+			break;
+		}
+	}
+
+	if (index == MAX_NUM_OF_CHANNELS)
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("AsicSwitchChannel: Can't find the Channel#%d \n", Channel));
+	}
+
+#ifdef RT30xx
+	// The RF programming sequence is difference between 3xxx and 2xxx
+	if ((IS_RT3070(pAd) || IS_RT3090(pAd)||IS_RT3390(pAd)) && 
+		((pAd->RfIcType == RFIC_3020) || (pAd->RfIcType == RFIC_2020) ||
+		(pAd->RfIcType == RFIC_3021) || (pAd->RfIcType == RFIC_3022) || (pAd->RfIcType == RFIC_3320)))
+	{
+		/* modify by WY for Read RF Reg. error */
+		UCHAR	calRFValue;
+		for (index = 0; index < NUM_OF_3020_CHNL; index++)
+		{
+			if (Channel == FreqItems3020[index].Channel)
+			{
+				// Programming channel parameters
+				RT30xxWriteRFRegister(pAd, RF_R02, FreqItems3020[index].N);
+				RT30xxWriteRFRegister(pAd, RF_R03, FreqItems3020[index].K);
+				RT30xxReadRFRegister(pAd, RF_R06, &RFValue);
+				RFValue = (RFValue & 0xFC) | FreqItems3020[index].R;
+				RT30xxWriteRFRegister(pAd, RF_R06, RFValue);
+
+				// Set Tx0 Power
+				RT30xxReadRFRegister(pAd, RF_R12, &RFValue);
+				RFValue = (RFValue & 0xE0) | TxPwer;
+				RT30xxWriteRFRegister(pAd, RF_R12, RFValue);
+
+				// Set Tx1 Power
+				RT30xxReadRFRegister(pAd, RF_R13, &RFValue);
+				RFValue = (RFValue & 0xE0) | TxPwer2;
+				RT30xxWriteRFRegister(pAd, RF_R13, RFValue);
+
+				// Tx/Rx Stream setting
+				RT30xxReadRFRegister(pAd, RF_R01, &RFValue);
+				//if (IS_RT3090(pAd))
+				//	RFValue |= 0x01; // Enable RF block.
+				RFValue &= 0x03;	//clear bit[7~2]
+				if (pAd->Antenna.field.TxPath == 1)
+					RFValue |= 0xA0;
+				else if (pAd->Antenna.field.TxPath == 2)
+					RFValue |= 0x80;
+				if (pAd->Antenna.field.RxPath == 1)
+					RFValue |= 0x50;
+				else if (pAd->Antenna.field.RxPath == 2)
+					RFValue |= 0x40;
+				RT30xxWriteRFRegister(pAd, RF_R01, RFValue);
+
+				// Set RF offset
+				RT30xxReadRFRegister(pAd, RF_R23, &RFValue);
+				RFValue = (RFValue & 0x80) | pAd->RfFreqOffset;
+				RT30xxWriteRFRegister(pAd, RF_R23, RFValue);
+
+				// Set BW
+				if (!bScan && (pAd->CommonCfg.BBPCurrentBW == BW_40))
+				{
+					calRFValue = pAd->Mlme.CaliBW40RfR24;
+					//DISABLE_11N_CHECK(pAd);
+				}
+				else
+				{
+					calRFValue = pAd->Mlme.CaliBW20RfR24;
+				}
+				RT30xxReadRFRegister(pAd, RF_R24, (PUCHAR)(&RFValue));
+				calRFValue = (RFValue & 0xC0) | (calRFValue & ~0xC0); // <bit 5>:tx_h20M<bit 5> and <bit 4:0>:tx_agc_fc<bit 4:0>
+				RT30xxWriteRFRegister(pAd, RF_R24, calRFValue);
+
+				// Set BW
+				if (IS_RT3390(pAd)) // RT3390 has different AGC for Tx and Rx
+				{
+					if (!bScan && (pAd->CommonCfg.BBPCurrentBW == BW_40))
+					{
+						calRFValue = pAd->Mlme.CaliBW40RfR31;
+					}
+					else
+					{
+						calRFValue = pAd->Mlme.CaliBW20RfR31;
+					}
+				}
+				RT30xxReadRFRegister(pAd, RF_R31, (PUCHAR)(&RFValue));
+				calRFValue = (RFValue & 0xC0) | (calRFValue & ~0xC0); // <bit 5>:rx_h20M<bit 5> and <bit 4:0>:rx_agc_fc<bit 4:0>				
+				RT30xxWriteRFRegister(pAd, RF_R31, calRFValue);
+
+				// Enable RF tuning
+				RT30xxReadRFRegister(pAd, RF_R07, &RFValue);
+				RFValue = RFValue | 0x1;
+				RT30xxWriteRFRegister(pAd, RF_R07, RFValue);
+
+				// latch channel for future usage.
+				pAd->LatchRfRegs.Channel = Channel;
+				
+		DBGPRINT(RT_DEBUG_TRACE, ("SwitchChannel#%d(RF=%d, Pwr0=%d, Pwr1=%d, %dT), N=0x%02X, K=0x%02X, R=0x%02X\n",
+			Channel, 
+			pAd->RfIcType, 
+			TxPwer,
+			TxPwer2,
+			pAd->Antenna.field.TxPath,
+			FreqItems3020[index].N, 
+			FreqItems3020[index].K, 
+			FreqItems3020[index].R));
+
+				break;
+			}
+		}
+	}
+	else
+#endif // RT30xx //
+#ifdef RT35xx
+	/* 3562:RFIC_3052/ 3062:RFIC_3022 */
+	if (IS_RT3572(pAd) /*&& (pAd->RfIcType == RFIC_3052)*/)
+	{
+		for (index = 0; index < NUM_OF_3572_CHNL; index++)
+		{
+			// RT3062, 2.4G
+			if ((pAd->RfIcType != RFIC_3052) && (Channel > 14))
+			{
+					break;
+			}
+			
+			if (Channel == FreqItems3572[index].Channel)
+			{
+				// for 2.4G, restore BBP25, BBP26
+				if (Channel <= 14)
+				{
+					BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R25, pAd->Bbp25);
+					BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R26, pAd->Bbp26);
+				}
+				// hard code for 5GGhz, Gary 2008-12-10
+				else
+				{
+					// Enable IQ Phase Correction
+					BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R25, 0x09);
+					// IQ Phase correction value
+					BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R26, 0xFF);
+				}
+
+				// Programming channel parameters
+				RT30xxWriteRFRegister(pAd, RF_R02, FreqItems3572[index].N);
+				RT30xxWriteRFRegister(pAd, RF_R03, FreqItems3572[index].K);
+
+				RT30xxReadRFRegister(pAd, RF_R06, &RFValue);
+				if  (Channel <= 14)
+					RFValue = (RFValue & 0xF0) | FreqItems3572[index].R | 0x8;
+				else
+					RFValue = (RFValue & 0xF0) | FreqItems3572[index].R | 0x4;
+				RT30xxWriteRFRegister(pAd, RF_R06, RFValue);
+
+				// Pll mode for 2.4G or 5G
+				RT30xxReadRFRegister(pAd, RF_R05, &RFValue);
+				if  (Channel <= 14)
+					RFValue = (RFValue & 0xF3) | 0x4;
+				else
+					RFValue = (RFValue & 0xF3) | 0x8;
+				RT30xxWriteRFRegister(pAd, RF_R05, RFValue);
+
+				// Set Tx0 Power
+				RT30xxReadRFRegister(pAd, RF_R12, (PUCHAR)&RFValue);
+				if  (Channel <= 14)
+					RFValue = 0x60 | TxPwer;
+				else
+					RFValue = 0xE0 | (TxPwer & 0x3) | ((TxPwer & 0xC) << 1);
+				RT30xxWriteRFRegister(pAd, RF_R12, RFValue);
+
+				// Set Tx1 Power
+				RT30xxReadRFRegister(pAd, RF_R13, (PUCHAR)&RFValue);
+				if  (Channel <= 14)
+					RFValue = 0x60 | TxPwer2;
+				else
+					RFValue = 0xE0 | (TxPwer2 & 0x3) | ((TxPwer2 & 0xC) << 1);
+				RT30xxWriteRFRegister(pAd, RF_R13, RFValue);
+
+				// Tx/Rx Stream setting
+				RT30xxReadRFRegister(pAd, RF_R01, (PUCHAR)&RFValue);
+				RFValue &= 0x03;	//clear bit[7~2]
+				if (pAd->Antenna.field.TxPath == 1)
+					RFValue |= 0xA0;
+				else if (pAd->Antenna.field.TxPath == 2)
+					RFValue |= 0x80;
+				if (pAd->Antenna.field.RxPath == 1)
+					RFValue |= 0x50;
+				else if (pAd->Antenna.field.RxPath == 2)
+					RFValue |= 0x40;
+				RT30xxWriteRFRegister(pAd, RF_R01, (UCHAR)RFValue);
+
+				// Set RF offset
+				RT30xxReadRFRegister(pAd, RF_R23, (PUCHAR)&RFValue);
+				RFValue = (RFValue & 0x80) | pAd->RfFreqOffset;
+				RT30xxWriteRFRegister(pAd, RF_R23, (UCHAR)RFValue);
+
+				// Set BW
+				if (!bScan && (pAd->CommonCfg.BBPCurrentBW == BW_40))
+				{
+					RFValue = pAd->Mlme.CaliBW40RfR24;
+					//DISABLE_11N_CHECK(pAd);
+				}
+				else
+				{
+					RFValue = pAd->Mlme.CaliBW20RfR24;
+				}
+				// R24, R31, one is for tx, the other is for rx
+				RT30xxWriteRFRegister(pAd, RF_R24, (UCHAR)RFValue);
+				RT30xxWriteRFRegister(pAd, RF_R31, (UCHAR)RFValue);
+
+				// Enable RF tuning
+				RT30xxReadRFRegister(pAd, RF_R07, (PUCHAR)&RFValue);
+				if  (Channel <= 14)
+					//RFValue = (RFValue & 0x37) | 0xCC;
+					RFValue = 0xd8;	//?? to check 3572?? hardcode
+				else
+					RFValue = (RFValue & 0x37) | 0x14;
+				RT30xxWriteRFRegister(pAd, RF_R07, (UCHAR)RFValue);
+
+				// TSSI_BS
+				RT30xxReadRFRegister(pAd, RF_R09, (PUCHAR)&RFValue);
+				if  (Channel <= 14)
+					RFValue = 0xC3; //RFValue = (RFValue & 0xBF) | 0x40;
+				else
+					RFValue = 0xC0; //RFValue = (RFValue & 0xBF) | 0x40;
+				RT30xxWriteRFRegister(pAd, RF_R09, (UCHAR)RFValue);
+
+				// Loop filter 1
+				RT30xxWriteRFRegister(pAd, RF_R10, (UCHAR)0xF1);
+
+				// Loop filter 2
+				if  (Channel <= 14)
+					RT30xxWriteRFRegister(pAd, RF_R11, (UCHAR)0xB9);
+				else
+					RT30xxWriteRFRegister(pAd, RF_R11, (UCHAR)0x00);
+
+				// tx_mx2_ic
+				if  (Channel <= 14)
+					RT30xxWriteRFRegister(pAd, RF_R15, (UCHAR)0x53);
+				else
+					RT30xxWriteRFRegister(pAd, RF_R15, (UCHAR)0x43);
+				// tx_mx1_ic
+				//RT30xxReadRFRegister(pAd, RF_R16, (PUCHAR)&RFValue);
+				if  (Channel <= 14)
+				{
+					RFValue = 0x4c;
+
+					RFValue &= (~0x7);  // clean bit [2:0]
+					RFValue |= pAd->TxMixerGain24G;
+				}
+				else 
+				{
+					RFValue = 0x7a;
+
+					RFValue &= (~0x7);  // clean bit [2:0]
+					RFValue |= pAd->TxMixerGain5G;
+				}
+				RT30xxWriteRFRegister(pAd, RF_R16, (UCHAR)RFValue);
+
+				// tx_lo1
+				RT30xxWriteRFRegister(pAd, RF_R17, (UCHAR)0x23);
+
+				// tx_lo2
+				RFValue = ((Channel <= 14) ? (0x93) : ((Channel <= 64) ? (0xb7) : ((Channel <= 128) ? (0x74) : (0x72))));
+				RT30xxWriteRFRegister(pAd, RF_R19, (UCHAR)RFValue);
+
+				// rx_l01
+				RFValue = ((Channel <= 14) ? (0xB3) : ((Channel <= 64) ? (0xF6) : ((Channel <= 128) ? (0xF4) : (0xF3))));
+				RT30xxWriteRFRegister(pAd, RF_R20, (UCHAR)RFValue);
+
+				// pfd_delay
+				RFValue = ((Channel <= 14) ? (0x15) : ((Channel <= 64) ? (0x3d) : ((Channel <= 128) ? (0x01) : (0x01))));
+				RT30xxWriteRFRegister(pAd, RF_R25, (UCHAR)RFValue);
+
+				// rx_lo2
+				if  (Channel <= 14)
+					RT30xxWriteRFRegister(pAd, RF_R26, (UCHAR)0x85);
+				else
+					RT30xxWriteRFRegister(pAd, RF_R26, (UCHAR)0x87);
+
+				// ldo_rf_vc
+				if  (Channel <= 14)
+					RT30xxWriteRFRegister(pAd, RF_R27, (UCHAR)0x00);
+				else
+					RT30xxWriteRFRegister(pAd, RF_R27, (UCHAR)0x01);
+
+				// drv_cc
+				if  (Channel <= 14)
+					RT30xxWriteRFRegister(pAd, RF_R29, (UCHAR)0x9B);
+				else
+					RT30xxWriteRFRegister(pAd, RF_R29, (UCHAR)0x9F);
+
+				RTMP_IO_READ32(pAd, GPIO_CTRL_CFG, &Value);
+				if  (Channel <= 14)
+					Value = ((Value & 0xFFFF7FFF) | 0x00000080);
+				else
+					Value = (Value & 0xFFFF7F7F);
+				RTMP_IO_WRITE32(pAd, GPIO_CTRL_CFG, Value);
+
+				// Enable RF tuning, this must be in the last
+				RT30xxReadRFRegister(pAd, RF_R07, (PUCHAR)&RFValue);
+				RFValue = RFValue | 0x1;
+				RT30xxWriteRFRegister(pAd, RF_R07, (UCHAR)RFValue);
+
+				RTMPusecDelay(2000);
+
+				// latch channel for future usage.
+				pAd->LatchRfRegs.Channel = Channel;
+				
+				DBGPRINT(RT_DEBUG_TRACE, ("RT35xx: SwitchChannel#%d(RF=%d, Pwr0=%d, Pwr1=%d, %dT), N=0x%02X, K=0x%02X, R=0x%02X\n",
+					Channel, 
+					pAd->RfIcType, 
+					TxPwer,
+					TxPwer2,
+					pAd->Antenna.field.TxPath,
+					FreqItems3572[index].N, 
+					FreqItems3572[index].K, 
+					FreqItems3572[index].R));
+				break;
+			}
+		}
+	}
+	else
+#endif // RT35xx //
+	{
+#ifdef RT28xx	
+		ULONG	R2 = 0, R3 = DEFAULT_RF_TX_POWER, R4 = 0;
+		RTMP_RF_REGS *RFRegTable;
+
+		RFRegTable = RF2850RegTable;
+#endif // RT28xx //
+	
+		switch (pAd->RfIcType)
+		{
+#ifdef RT28xx		
+			case RFIC_2820:
+			case RFIC_2850:
+			case RFIC_2720:
+			case RFIC_2750:
+				for (index = 0; index < NUM_OF_2850_CHNL; index++)
+				{
+					if (Channel == RFRegTable[index].Channel)
+					{
+						R2 = RFRegTable[index].R2;
+						if (pAd->Antenna.field.TxPath == 1)
+						{
+							R2 |= 0x4000;	// If TXpath is 1, bit 14 = 1;
+						}
+
+						if (pAd->Antenna.field.RxPath == 2)
+						{
+							R2 |= 0x40;	// write 1 to off Rxpath.
+						}
+						else if (pAd->Antenna.field.RxPath == 1)
+						{
+							R2 |= 0x20040;	// write 1 to off RxPath
+						}
+
+						if (Channel > 14)
+						{
+							// initialize R3, R4
+							R3 = (RFRegTable[index].R3 & 0xffffc1ff);
+							R4 = (RFRegTable[index].R4 & (~0x001f87c0)) | (pAd->RfFreqOffset << 15);
+
+							// 5G band power range: 0xF9~0X0F, TX0 Reg3 bit9/TX1 Reg4 bit6="0" means the TX power reduce 7dB
+							// R3
+							if ((TxPwer >= -7) && (TxPwer < 0))
+							{
+								TxPwer = (7+TxPwer);
+								TxPwer = (TxPwer > 0xF) ? (0xF) : (TxPwer);
+								R3 |= (TxPwer << 10);
+								DBGPRINT(RT_DEBUG_ERROR, ("AsicSwitchChannel: TxPwer=%d \n", TxPwer));
+							}
+							else
+							{
+								TxPwer = (TxPwer > 0xF) ? (0xF) : (TxPwer);
+								R3 |= (TxPwer << 10) | (1 << 9);
+							}
+
+							// R4
+							if ((TxPwer2 >= -7) && (TxPwer2 < 0))
+							{
+								TxPwer2 = (7+TxPwer2);
+								TxPwer2 = (TxPwer2 > 0xF) ? (0xF) : (TxPwer2);
+								R4 |= (TxPwer2 << 7);
+								DBGPRINT(RT_DEBUG_ERROR, ("AsicSwitchChannel: TxPwer2=%d \n", TxPwer2));
+							}
+							else
+							{
+								TxPwer2 = (TxPwer2 > 0xF) ? (0xF) : (TxPwer2);
+								R4 |= (TxPwer2 << 7) | (1 << 6);
+							}                        
+
+						}
+						else
+						{
+							R3 = (RFRegTable[index].R3 & 0xffffc1ff) | (TxPwer << 9); // set TX power0
+						R4 = (RFRegTable[index].R4 & (~0x001f87c0)) | (pAd->RfFreqOffset << 15) | (TxPwer2 <<6);// Set freq Offset & TxPwr1
+						}
+
+						// Based on BBP current mode before changing RF channel.
+						if (!bScan && (pAd->CommonCfg.BBPCurrentBW == BW_40))
+						{
+							R4 |=0x200000;
+						}
+
+						// Update variables
+						pAd->LatchRfRegs.Channel = Channel;
+						pAd->LatchRfRegs.R1 = RFRegTable[index].R1;
+						pAd->LatchRfRegs.R2 = R2;
+						pAd->LatchRfRegs.R3 = R3;
+						pAd->LatchRfRegs.R4 = R4;
+
+#ifdef DFS_DEBUG
+#ifdef DFS_FCC_BW40_FIX
+						if (pAd->infType == RTMP_DEV_INF_PCI) // RT2880 PCI
+						{
+							/* only for RT2880 */
+							// FCC DFS test
+							pAd->LatchRfRegs.R1 |= 0x100;
+							pAd->LatchRfRegs.R4 |= 0x00400000;
+						}
+#endif // DFS_FCC_BW40_FIX //
+#endif // DFS_DEBUG //
+
+						// Set RF value 1's set R3[bit2] = [0]
+						RTMP_RF_IO_WRITE32(pAd, pAd->LatchRfRegs.R1);
+						RTMP_RF_IO_WRITE32(pAd, pAd->LatchRfRegs.R2);
+						RTMP_RF_IO_WRITE32(pAd, (pAd->LatchRfRegs.R3 & (~0x04)));
+						RTMP_RF_IO_WRITE32(pAd, pAd->LatchRfRegs.R4);
+
+						RTMPusecDelay(200);
+
+						// Set RF value 2's set R3[bit2] = [1]
+						RTMP_RF_IO_WRITE32(pAd, pAd->LatchRfRegs.R1);
+						RTMP_RF_IO_WRITE32(pAd, pAd->LatchRfRegs.R2);
+						RTMP_RF_IO_WRITE32(pAd, (pAd->LatchRfRegs.R3 | 0x04));
+						RTMP_RF_IO_WRITE32(pAd, pAd->LatchRfRegs.R4);
+
+						RTMPusecDelay(200);
+
+						// Set RF value 3's set R3[bit2] = [0]
+						RTMP_RF_IO_WRITE32(pAd, pAd->LatchRfRegs.R1);
+						RTMP_RF_IO_WRITE32(pAd, pAd->LatchRfRegs.R2);
+						RTMP_RF_IO_WRITE32(pAd, (pAd->LatchRfRegs.R3 & (~0x04)));
+						RTMP_RF_IO_WRITE32(pAd, pAd->LatchRfRegs.R4);
+
+						break;
+					}
+				}
+
+				DBGPRINT(RT_DEBUG_TRACE, ("SwitchChannel#%d(RF=%d, Pwr0=%lu, Pwr1=%lu, %dT) to , R1=0x%08lx, R2=0x%08lx, R3=0x%08lx, R4=0x%08lx\n",
+							  Channel, 
+							  pAd->RfIcType, 
+							  (R3 & 0x00003e00) >> 9,
+							  (R4 & 0x000007c0) >> 6,
+							  pAd->Antenna.field.TxPath,
+							  pAd->LatchRfRegs.R1, 
+							  pAd->LatchRfRegs.R2, 
+							  pAd->LatchRfRegs.R3, 
+							  pAd->LatchRfRegs.R4));
+			
+				break;
+#endif // RT28xx //
+			default:
+				DBGPRINT(RT_DEBUG_TRACE, ("SwitchChannel#%d : unknown RFIC=%d\n",
+					  Channel, pAd->RfIcType));
+				break;
+		}	
+	}
+
+	// Change BBP setting during siwtch from a->g, g->a
+	if (Channel <= 14)
+	{
+		ULONG	TxPinCfg = 0x00050F0A;//Gary 2007/08/09 0x050A0A
+
+
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R62, (0x37 - GET_LNA_GAIN(pAd)));
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R63, (0x37 - GET_LNA_GAIN(pAd)));
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R64, (0x37 - GET_LNA_GAIN(pAd)));
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R86, 0);//(0x44 - GET_LNA_GAIN(pAd)));	// According the Rory's suggestion to solve the middle range issue.
+		//RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R82, 0x62);
+
+		// Rx High power VGA offset for LNA select
+		if (pAd->NicConfig2.field.ExternalLNAForG)
+		{
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R82, 0x62);
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R75, 0x46);
+		}
+		else
+		{
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R82, 0x84);
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R75, 0x50);
+		}
+
+		// 5G band selection PIN, bit1 and bit2 are complement
+		RTMP_IO_READ32(pAd, TX_BAND_CFG, &Value);
+		Value &= (~0x6);
+		Value |= (0x04);
+		RTMP_IO_WRITE32(pAd, TX_BAND_CFG, Value);
+
+		// Turn off unused PA or LNA when only 1T or 1R
+		if (pAd->Antenna.field.TxPath == 1)
+		{
+			TxPinCfg &= 0xFFFFFFF3;
+		}
+		if (pAd->Antenna.field.RxPath == 1)
+		{
+			TxPinCfg &= 0xFFFFF3FF;
+		}
+
+#ifdef RT35xx
+		if (IS_RT3572(pAd))
+			RT30xxWriteRFRegister(pAd, RF_R08, (UCHAR)0x00);
+#endif // RT35xx //
+
+		RTMP_IO_WRITE32(pAd, TX_PIN_CFG, TxPinCfg);
+
+#ifdef RT35xx
+		if (IS_RT3572(pAd))
+			RT30xxWriteRFRegister(pAd, RF_R08, (UCHAR)0x80);
+#endif // RT35xx //
+	}
+	else
+	{
+		ULONG	TxPinCfg = 0x00050F05;//Gary 2007/8/9 0x050505
+
+
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R62, (0x37 - GET_LNA_GAIN(pAd)));
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R63, (0x37 - GET_LNA_GAIN(pAd)));
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R64, (0x37 - GET_LNA_GAIN(pAd)));
+		//snowpin - 3562 5G scan issue. RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R86, 0);//(0x44 - GET_LNA_GAIN(pAd)));   // According the Rory's suggestion to solve the middle range issue.
+#ifdef RT35xx
+		if (IS_RT3572(pAd))		
+		{
+			// Rx High power VGA offset for LNA select			
+			if (pAd->NicConfig2.field.ExternalLNAForA)
+			{
+				RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R82, 0x94);
+			}		
+			else
+			{
+				RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R82, 0x94);
+			}
+		}
+		else
+#endif // RT35xx //
+		{
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R82, 0xF2);
+		}
+
+		// Rx High power VGA offset for LNA select
+		if (pAd->NicConfig2.field.ExternalLNAForA)
+		{
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R75, 0x46);
+		}
+		else
+		{
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R75, 0x50);
+		}
+
+		// 5G band selection PIN, bit1 and bit2 are complement
+		RTMP_IO_READ32(pAd, TX_BAND_CFG, &Value);
+		Value &= (~0x6);
+		Value |= (0x02);
+		RTMP_IO_WRITE32(pAd, TX_BAND_CFG, Value);
+
+		// Turn off unused PA or LNA when only 1T or 1R
+		if (pAd->Antenna.field.TxPath == 1)
+		{
+			TxPinCfg &= 0xFFFFFFF3;
+		}
+		if (pAd->Antenna.field.RxPath == 1)
+		{
+			TxPinCfg &= 0xFFFFF3FF;
+		}
+
+#ifdef RT35xx
+		if (IS_RT3572(pAd))
+			RT30xxWriteRFRegister(pAd, RF_R08, (UCHAR)0x00);
+#endif // RT35xx //
+
+		RTMP_IO_WRITE32(pAd, TX_PIN_CFG, TxPinCfg);
+
+#ifdef RT35xx
+		if (IS_RT3572(pAd))
+			RT30xxWriteRFRegister(pAd, RF_R08, (UCHAR)0x80);
+#endif // RT35xx //
+	}
+
+	// R66 should be set according to Channel and use 20MHz when scanning
+	//RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R66, (0x2E + GET_LNA_GAIN(pAd)));
+	if (bScan)
+		RTMPSetAGCInitValue(pAd, BW_20);
+	else
+		RTMPSetAGCInitValue(pAd, pAd->CommonCfg.BBPCurrentBW);
+
+	//
+	// On 11A, We should delay and wait RF/BBP to be stable
+	// and the appropriate time should be 1000 micro seconds 
+	// 2005/06/05 - On 11G, We also need this delay time. Otherwise it's difficult to pass the WHQL.
+	//
+	RTMPusecDelay(1000);  
+}
+
+/*
+	==========================================================================
+	Description:
+		This function is required for 2421 only, and should not be used during
+		site survey. It's only required after NIC decided to stay at a channel
+		for a longer period.
+		When this function is called, it's always after AsicSwitchChannel().
+
+	IRQL = PASSIVE_LEVEL
+	IRQL = DISPATCH_LEVEL
+	
+	==========================================================================
+ */
+VOID AsicLockChannel(
+	IN PRTMP_ADAPTER pAd, 
+	IN UCHAR Channel) 
+{
+}
+
+/*
+	==========================================================================
+	Description:
+
+	IRQL = PASSIVE_LEVEL
+	IRQL = DISPATCH_LEVEL
+	
+	==========================================================================
+ */
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Antenna miscellaneous setting.
+
+	Arguments:
+		pAd						Pointer to our adapter
+		BandState				Indicate current Band State.
+
+	Return Value:
+		None
+
+	IRQL <= DISPATCH_LEVEL
+	
+	Note:
+		1.) Frame End type control
+			only valid for G only (RF_2527 & RF_2529)
+			0: means DPDT, set BBP R4 bit 5 to 1
+			1: means SPDT, set BBP R4 bit 5 to 0
+			
+
+	========================================================================
+*/
+VOID	AsicAntennaSetting(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	ABGBAND_STATE	BandState)
+{
+}
+
+VOID AsicRfTuningExec(
+	IN PVOID SystemSpecific1,
+	IN PVOID FunctionContext,
+	IN PVOID SystemSpecific2,
+	IN PVOID SystemSpecific3)
+{
+}
+
+VOID AsicGetAutoAgcOffset(
+	IN PRTMP_ADAPTER pAd,
+	IN PCHAR pDeltaPwr,
+	IN PCHAR pAgcCompensate,
+	IN PUCHAR pBbpR49)
+{
+	CHAR            DeltaPwr = 0;
+	BOOLEAN		bAutoTxAgc = FALSE;
+	UCHAR		TssiRef, *pTssiMinusBoundary, *pTssiPlusBoundary, TxAgcStep;
+	UCHAR		BbpR49 = 0, idx;
+	PCHAR		pTxAgcCompensate;
+
+	// TX power compensation for temperature variation based on TSSI. try every 4 second
+	if (pAd->Mlme.OneSecPeriodicRound % 4 == 0)
+	{
+		if (pAd->CommonCfg.Channel <= 14)
+		{
+			/* bg channel */
+			bAutoTxAgc         = pAd->bAutoTxAgcG;
+			TssiRef            = pAd->TssiRefG;
+			pTssiMinusBoundary = &pAd->TssiMinusBoundaryG[0];
+			pTssiPlusBoundary  = &pAd->TssiPlusBoundaryG[0];
+			TxAgcStep          = pAd->TxAgcStepG;
+			pTxAgcCompensate   = &pAd->TxAgcCompensateG;
+		}
+		else
+		{
+			/* a channel */
+			bAutoTxAgc         = pAd->bAutoTxAgcA;
+			TssiRef            = pAd->TssiRefA;
+			pTssiMinusBoundary = &pAd->TssiMinusBoundaryA[0];
+			pTssiPlusBoundary  = &pAd->TssiPlusBoundaryA[0];
+			TxAgcStep          = pAd->TxAgcStepA;
+			pTxAgcCompensate   = &pAd->TxAgcCompensateA;
+		}
+
+		if (bAutoTxAgc)
+		{
+			/* BbpR1 is unsigned char */
+			RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R49, &BbpR49);
+			/* (p) TssiPlusBoundaryG[0] = 0 = (m) TssiMinusBoundaryG[0] */
+			/* compensate: +4     +3   +2   +1    0   -1   -2   -3   -4 * steps */
+			/* step value is defined in pAd->TxAgcStepG for tx power value */
+
+			/* [4]+1+[4]   p4     p3   p2   p1   o1   m1   m2   m3   m4 */
+			/* ex:         0x00 0x15 0x25 0x45 0x88 0xA0 0xB5 0xD0 0xF0
+			   above value are examined in mass factory production */
+			/*             [4]    [3]  [2]  [1]  [0]  [1]  [2]  [3]  [4] */
+
+			/* plus (+) is 0x00 ~ 0x45, minus (-) is 0xa0 ~ 0xf0 */
+			/* if value is between p1 ~ o1 or o1 ~ s1, no need to adjust tx power */
+			/* if value is 0xa5, tx power will be -= TxAgcStep*(2-1) */
+
+			if (BbpR49 > pTssiMinusBoundary[1])
+			{
+				// Reading is larger than the reference value
+				// check for how large we need to decrease the Tx power
+				for (idx = 1; idx < 5; idx++)
+				{
+					if (BbpR49 <= pTssiMinusBoundary[idx])  // Found the range
+						break;
+				}
+				// The index is the step we should decrease, idx = 0 means there is nothing to compensate
+//				if (R3 > (ULONG) (TxAgcStep * (idx-1)))
+					*pTxAgcCompensate = -(TxAgcStep * (idx-1));
+//				else
+//					*pTxAgcCompensate = -((UCHAR)R3);
+				
+				DeltaPwr += (*pTxAgcCompensate);
+				DBGPRINT(RT_DEBUG_TRACE, ("-- Tx Power, BBP R49=%x, TssiRef=%x, TxAgcStep=%x, step = -%d\n",
+					BbpR49, TssiRef, TxAgcStep, idx-1));                    
+			}
+			else if (BbpR49 < pTssiPlusBoundary[1])
+			{
+				// Reading is smaller than the reference value
+				// check for how large we need to increase the Tx power
+				for (idx = 1; idx < 5; idx++)
+				{
+					if (BbpR49 >= pTssiPlusBoundary[idx])   // Found the range
+						break;
+				}
+				// The index is the step we should increase, idx = 0 means there is nothing to compensate
+				*pTxAgcCompensate = TxAgcStep * (idx-1);
+				DeltaPwr += (*pTxAgcCompensate);
+				DBGPRINT(RT_DEBUG_TRACE, ("++ Tx Power, BBP R49=%x, TssiRef=%x, TxAgcStep=%x, step = +%d\n",
+					BbpR49, TssiRef, TxAgcStep, idx-1));
+			}
+			else
+			{
+				*pTxAgcCompensate = 0;
+				DBGPRINT(RT_DEBUG_TRACE, ("   Tx Power, BBP R49=%x, TssiRef=%x, TxAgcStep=%x, step = +%d\n",
+					BbpR49, TssiRef, TxAgcStep, 0));
+			}
+		}
+	}
+	else
+	{
+		if (pAd->CommonCfg.Channel <= 14)
+		{
+			bAutoTxAgc         = pAd->bAutoTxAgcG;
+			pTxAgcCompensate   = &pAd->TxAgcCompensateG;
+		}
+		else
+		{
+			bAutoTxAgc         = pAd->bAutoTxAgcA;
+			pTxAgcCompensate   = &pAd->TxAgcCompensateA;
+		}
+
+		if (bAutoTxAgc)
+			DeltaPwr += (*pTxAgcCompensate);
+	}
+
+	*pBbpR49 = BbpR49;
+	*pDeltaPwr = DeltaPwr;
+	*pAgcCompensate = *pTxAgcCompensate;
+}
+
+VOID AsicGetTxPowerOffset(
+	IN PRTMP_ADAPTER pAd,
+	IN PULONG TxPwr)
+{
+	if (pAd->CommonCfg.BBPCurrentBW == BW_40)
+	{
+		if (pAd->CommonCfg.CentralChannel > 14)
+		{
+			TxPwr[0] = pAd->Tx40MPwrCfgABand[0];
+			TxPwr[1] = pAd->Tx40MPwrCfgABand[1];
+			TxPwr[2] = pAd->Tx40MPwrCfgABand[2];
+			TxPwr[3] = pAd->Tx40MPwrCfgABand[3];
+			TxPwr[4] = pAd->Tx40MPwrCfgABand[4];
+		}
+		else
+		{
+			TxPwr[0] = pAd->Tx40MPwrCfgGBand[0];
+			TxPwr[1] = pAd->Tx40MPwrCfgGBand[1];
+			TxPwr[2] = pAd->Tx40MPwrCfgGBand[2];
+			TxPwr[3] = pAd->Tx40MPwrCfgGBand[3];
+			TxPwr[4] = pAd->Tx40MPwrCfgGBand[4];
+		}
+	}
+	else
+	{
+		if (pAd->CommonCfg.Channel > 14)
+		{
+			TxPwr[0] = pAd->Tx20MPwrCfgABand[0];
+			TxPwr[1] = pAd->Tx20MPwrCfgABand[1];
+			TxPwr[2] = pAd->Tx20MPwrCfgABand[2];
+			TxPwr[3] = pAd->Tx20MPwrCfgABand[3];
+			TxPwr[4] = pAd->Tx20MPwrCfgABand[4];
+		}
+		else
+		{
+			TxPwr[0] = pAd->Tx20MPwrCfgGBand[0];
+			TxPwr[1] = pAd->Tx20MPwrCfgGBand[1];
+			TxPwr[2] = pAd->Tx20MPwrCfgGBand[2];
+			TxPwr[3] = pAd->Tx20MPwrCfgGBand[3];
+			TxPwr[4] = pAd->Tx20MPwrCfgGBand[4];
+		}
+	}
+}
+
+#ifdef SINGLE_SKU
+/*
+	==========================================================================
+	Description:
+		Gives CCK TX rate 2 more dB TX power.
+		This routine works only in LINK UP in INFRASTRUCTURE mode.
+
+		calculate desired Tx power in RF R3.Tx0~5,	should consider -
+		0. if current radio is a noisy environment (pAd->DrsCounters.fNoisyEnvironment)
+		1. TxPowerPercentage
+		2. auto calibration based on TSSI feedback
+		3. extra 2 db for CCK
+		4. -10 db upon very-short distance (AvgRSSI >= -40db) to AP
+
+	NOTE: Since this routine requires the value of (pAd->DrsCounters.fNoisyEnvironment),
+		it should be called AFTER MlmeDynamicTxRatSwitching()
+	==========================================================================
+ */
+VOID AsicAdjustSingleSkuTxPower(
+	IN PRTMP_ADAPTER pAd) 
+{
+	INT			i, j;
+	CHAR		DeltaPwr = 0;
+	UCHAR		BbpR1 = 0, BbpR49 = 0, BbpR1Offset = 0;
+	CHAR		TxAgcCompensate;
+	ULONG		TxPwr[MAX_TXPOWER_ARRAY_SIZE], TotalDeltaPwr[MAX_TXPOWER_ARRAY_SIZE];
+	CHAR		Value, MinValue = 127;
+	
+#ifdef CONFIG_STA_SUPPORT
+	CHAR		Rssi = -127;
+#endif // CONFIG_STA_SUPPORT //
+	
+
+#ifdef CONFIG_STA_SUPPORT
+	if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_DOZE) || 
+#ifdef RTMP_MAC_PCI
+		(pAd->bPCIclkOff == TRUE) ||
+		RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_IDLE_RADIO_OFF) ||
+#endif // RTMP_MAC_PCI //
+		RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS))
+{
+		return;
+}
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		Rssi = RTMPMaxRssi(pAd, 
+						   pAd->StaCfg.RssiSample.AvgRssi0, 
+						   pAd->StaCfg.RssiSample.AvgRssi1, 
+						   pAd->StaCfg.RssiSample.AvgRssi2);
+#endif // CONFIG_STA_SUPPORT //
+
+        NdisZeroMemory(TotalDeltaPwr, sizeof(TotalDeltaPwr));
+        /* Get Tx Rate Offset Table which from eeprom 0xDEh ~ 0xEFh */
+        AsicGetTxPowerOffset(pAd, &TxPwr);
+        /* Get temperature compensation Delta Power Value */
+        AsicGetAutoAgcOffset(pAd, &DeltaPwr, &TxAgcCompensate, &BbpR49);
+
+	RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R1, &BbpR1);
+	BbpR1 &= 0xFC;
+
+	// Handle regulatory max tx power constrain
+	do
+	{
+		UCHAR    TxPwrInEEPROM = 0xFF, CountryTxPwr = 0xFF, criterion;
+		UCHAR    AdjustMaxTxPwr[MAX_TXPOWER_ARRAY_SIZE * 8]; 
+
+		{
+		if (pAd->CommonCfg.Channel > 14) // 5G band
+			TxPwrInEEPROM = ((pAd->CommonCfg.DefineMaxTxPwr & 0xFF00) >> 8);
+		else // 2.4G band
+			TxPwrInEEPROM = (pAd->CommonCfg.DefineMaxTxPwr & 0x00FF);
+		}
+
+		CountryTxPwr = GetCuntryMaxTxPwr(pAd, pAd->CommonCfg.Channel); 
+		criterion = (TxPwr[0] >> 16) & 0xF;        // FAE use OFDM 6M as criterion
+
+		DBGPRINT_RAW(RT_DEBUG_INFO, ("AsicAdjustSingleSkuTxPower (criterion=%d, TxPwrInEEPROM=%d, CountryTxPwr=%d)\n", criterion, TxPwrInEEPROM, CountryTxPwr));
+ 
+		// Adjust max tx power according to the relationship of tx power in E2PROM
+		for (i=0; i<MAX_TXPOWER_ARRAY_SIZE; i++)
+		{
+			// CCK will have 4dBm larger than OFDM
+			// Therefore, we should separate to parse the tx power field
+			if (i == 0)
+			{
+				for (j=0; j<8; j++)
+				{
+					Value = (CHAR)((TxPwr[i] >> j*4) & 0x0F);
+ 
+					if (j < 4)
+					{
+						// CCK will have 4dBm larger than OFDM
+						AdjustMaxTxPwr[i*8+j] = TxPwrInEEPROM + (Value - criterion) + 4;
+					}
+					else
+					{
+						AdjustMaxTxPwr[i*8+j] = TxPwrInEEPROM + (Value - criterion);
+					}
+					DBGPRINT_RAW(RT_DEBUG_INFO, ("AsicAdjustSingleSkuTxPower (i/j=%d/%d, Value=%d, %d)\n", i, j, Value, AdjustMaxTxPwr[i*8+j]));
+				}
+			}
+			else
+			{
+				for (j=0; j<8; j++)
+				{
+					Value = (CHAR)((TxPwr[i] >> j*4) & 0x0F);
+ 
+					AdjustMaxTxPwr[i*8+j] = TxPwrInEEPROM + (Value - criterion);
+					DBGPRINT_RAW(RT_DEBUG_INFO, ("AsicAdjustSingleSkuTxPower (i/j=%d/%d, Value=%d, %d)\n", i, j, Value, AdjustMaxTxPwr[i*8+j]));
+				}
+			}
+		}
+ 
+		// Adjust tx power according to the relationship
+		for (i=0; i<MAX_TXPOWER_ARRAY_SIZE; i++)
+		{
+			if (TxPwr[i] != 0xffffffff)
+			{
+				for (j=0; j<8; j++)
+				{
+					Value = (CHAR)((TxPwr[i] >> j*4) & 0x0F);
+ 
+					// The system tx power is larger than the regulatory, the power should be restrain
+					if (AdjustMaxTxPwr[i*8+j] > CountryTxPwr)
+					{
+						Value = (AdjustMaxTxPwr[i*8+j] - CountryTxPwr);
+						if (Value > 0xF)
+						{
+						    /* If print the Error msg. It means the output power larger than Country Regulatory over 15dBm,
+						      * the origianl design has overflow case.
+						      */
+						    DBGPRINT_RAW(RT_DEBUG_ERROR,("AsicAdjustSingleSkuTxPower: Value overflow - %d\n", Value));
+						}
+						TotalDeltaPwr[i] = (TotalDeltaPwr[i] & ~(0x0000000F << j*4)) | (Value << j*4);
+
+						DBGPRINT_RAW(RT_DEBUG_INFO, ("AsicAdjustSingleSkuTxPower (i/j=%d/%d, Value=%d, %d)\n", i, j, Value, AdjustMaxTxPwr[i*8+j]));
+					}
+					else
+						DBGPRINT_RAW(RT_DEBUG_INFO, ("AsicAdjustSingleSkuTxPower (i/j=%d/%d, Value=%d, %d, no change)\n", i, j, Value, AdjustMaxTxPwr[i*8+j]));
+				}
+			}
+		}
+	} while (FALSE);
+
+	/* calculate delta power based on the percentage specified from UI */
+	// E2PROM setting is calibrated for maximum TX power (i.e. 100%)
+	// We lower TX power here according to the percentage specified from UI
+	if (pAd->CommonCfg.TxPowerPercentage == 0xffffffff)       // AUTO TX POWER control
+	{
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		{
+			// to patch high power issue with some APs, like Belkin N1.
+			if (Rssi > -35)
+			{
+				DeltaPwr -= 12;
+			}
+			else if (Rssi > -40)
+			{
+				DeltaPwr -= 6;
+			}
+			else
+		;
+		}
+#endif // CONFIG_STA_SUPPORT //
+	}
+	else if (pAd->CommonCfg.TxPowerPercentage > 90)  // 91 ~ 100% & AUTO, treat as 100% in terms of mW
+		;
+	else if (pAd->CommonCfg.TxPowerPercentage > 60)  // 61 ~ 90%, treat as 75% in terms of mW		// DeltaPwr -= 1;
+	{
+		DeltaPwr -= 1;
+	}
+	else if (pAd->CommonCfg.TxPowerPercentage > 30)  // 31 ~ 60%, treat as 50% in terms of mW		// DeltaPwr -= 3;
+	{
+		DeltaPwr -= 3;
+	}
+	else if (pAd->CommonCfg.TxPowerPercentage > 15)  // 16 ~ 30%, treat as 25% in terms of mW		// DeltaPwr -= 6;
+	{
+		DeltaPwr -= 6;
+	}
+	else if (pAd->CommonCfg.TxPowerPercentage > 9)   // 10 ~ 15%, treat as 12.5% in terms of mW		// DeltaPwr -= 9;
+	{
+		DeltaPwr -= 9;
+	}
+	else                                           // 0 ~ 9 %, treat as MIN(~3%) in terms of mW		// DeltaPwr -= 12;
+	{
+		DeltaPwr -= 12;
+	}
+
+	/* reset different new tx power for different TX rate */
+
+	/* Calcuate the minimum transmit power */
+	for(i=0; i<MAX_TXPOWER_ARRAY_SIZE; i++)
+	{
+		if (TxPwr[i] != 0xffffffff)
+		{
+			for (j=0; j<8; j++)
+			{
+				/* After Single SKU, each data rate offset power value is saved in TotalDeltaPwr[].
+				   PwrChange will add DeltaPwr and TotalDeltaPwr[] for each data rate to calculate
+				   the final adjust output power value which is saved in MAC Reg. and BBP_R1 */
+				CHAR PwrChange;
+
+				/* Value / TxPwr[] is get from eeprom 0xDEh ~ 0xEFh and increase or decrease the  
+				   20/40 Bandwidth Delta Value in eeprom 0x50h. */
+				Value = (CHAR)((TxPwr[i] >> j*4) & 0x0F); /* 0 ~ 15 */
+				/* Fix the corner case of Single SKU read eeprom offset 0xF0h ~ 0xFEh which for BBP Instruction configuration */
+				if (Value == 0xF)
+					continue;
+
+				/* Value_offset is current Pwr comapre with Country Regulation and need adjust delta value */
+				PwrChange = (CHAR)((TotalDeltaPwr[i] >> j*4) & 0x0F); /* 0 ~ 15 */
+				PwrChange -= DeltaPwr;
+
+				Value -= PwrChange;
+				
+				if(MinValue > Value)
+					MinValue = Value;				
+			}
+		}
+	}
+	
+	/* Depend on the minimum transmit power to adjust static Tx power control 
+	   Prevent the value of MAC_TX_PWR_CFG less than 0. */
+		
+	if((MinValue < 0)&&(MinValue > -6))
+	{
+		BbpR1 |= 0x01;
+		BbpR1Offset = 6;
+	}
+	else if (MinValue < -6)
+	{
+		BbpR1 |= 0x02;
+		BbpR1Offset = 12;
+	}
+
+	RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R1, BbpR1);
+
+
+	for(i=0; i<MAX_TXPOWER_ARRAY_SIZE; i++)
+	{
+		if (TxPwr[i] != 0xffffffff)
+		{
+			for (j=0; j<8; j++)
+				{
+				/* After Single SKU, each data rate offset power value is saved in TotalDeltaPwr[].
+				   PwrChange will add DeltaPwr and TotalDeltaPwr[] for each data rate to calculate
+				   the final adjust output power value which is saved in MAC Reg. and BBP_R1 */
+				CHAR PwrChange;
+
+				/* Value / TxPwr[] is get from eeprom 0xDEh ~ 0xEFh and increase or decrease the  
+				   20/40 Bandwidth Delta Value in eeprom 0x50h. */
+				Value = (CHAR)((TxPwr[i] >> j*4) & 0x0F); /* 0 ~ 15 */
+
+				/* Value_offset is current Pwr comapre with Country Regulation and need adjust delta value */
+				PwrChange = (CHAR)((TotalDeltaPwr[i] >> j*4) & 0x0F); /* 0 ~ 15 */
+				PwrChange -= DeltaPwr;
+
+				Value -= (PwrChange - BbpR1Offset);
+
+				if (Value < 0)
+					Value = 0; /* min */
+
+				if (Value > 0xF)
+					Value = 0xF; /* max */
+
+				/* fill new value to CSR offset */
+				TxPwr[i] = (TxPwr[i] & ~(0x0000000F << j*4)) | (Value << j*4);
+			}
+
+			/* write tx power value to CSR */
+			/* TX_PWR_CFG_0 (8 tx rate) for	TX power for OFDM 12M/18M
+											TX power for OFDM 6M/9M
+											TX power for CCK5.5M/11M
+											TX power for CCK1M/2M */
+			/* TX_PWR_CFG_1 ~ TX_PWR_CFG_4 */
+			{
+			RTMP_IO_WRITE32(pAd, TX_PWR_CFG_0 + i*4, TxPwr[i]);
+			}
+		}
+	}
+
+
+
+}
+#endif // SINGLE_SKU //
+
+/*
+	==========================================================================
+	Description:
+		Gives CCK TX rate 2 more dB TX power.
+		This routine works only in LINK UP in INFRASTRUCTURE mode.
+
+		calculate desired Tx power in RF R3.Tx0~5,	should consider -
+		0. if current radio is a noisy environment (pAd->DrsCounters.fNoisyEnvironment)
+		1. TxPowerPercentage
+		2. auto calibration based on TSSI feedback
+		3. extra 2 db for CCK
+		4. -10 db upon very-short distance (AvgRSSI >= -40db) to AP
+
+	NOTE: Since this routine requires the value of (pAd->DrsCounters.fNoisyEnvironment),
+		it should be called AFTER MlmeDynamicTxRatSwitching()
+	==========================================================================
+ */
+VOID AsicAdjustTxPower(
+	IN PRTMP_ADAPTER pAd) 
+{
+	INT			i, j;
+	CHAR		DeltaPwr = 0;
+	UCHAR		BbpR1 = 0, BbpR49 = 0;
+	CHAR		TxAgcCompensate;
+	ULONG		TxPwr[MAX_TXPOWER_ARRAY_SIZE];
+	CHAR		Value;
+	
+#ifdef CONFIG_STA_SUPPORT
+	CHAR		Rssi = -127;
+#endif // CONFIG_STA_SUPPORT //
+	
+
+#ifdef CONFIG_STA_SUPPORT
+	if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_DOZE) || 
+#ifdef RTMP_MAC_PCI
+		(pAd->bPCIclkOff == TRUE) ||
+		RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_IDLE_RADIO_OFF) ||
+#endif // RTMP_MAC_PCI //
+		RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS))
+	{
+		return;
+	}
+
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		Rssi = RTMPMaxRssi(pAd, 
+						   pAd->StaCfg.RssiSample.AvgRssi0, 
+						   pAd->StaCfg.RssiSample.AvgRssi1, 
+						   pAd->StaCfg.RssiSample.AvgRssi2);
+#endif // CONFIG_STA_SUPPORT //
+
+#ifdef SINGLE_SKU
+		if (pAd->CommonCfg.bSKUMode == TRUE)
+		{
+			AsicAdjustSingleSkuTxPower(pAd);
+			return;
+		}
+#endif // SINGLE_SKU //
+
+	/* Get Tx Rate Offset Table which from eeprom 0xDEh ~ 0xEFh */
+	AsicGetTxPowerOffset(pAd, (PULONG) &TxPwr);
+	/* Get temperature compensation Delta Power Value */
+	AsicGetAutoAgcOffset(pAd, &DeltaPwr, &TxAgcCompensate, &BbpR49);
+
+	RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R1, &BbpR1);
+	BbpR1 &= 0xFC;
+
+	/* calculate delta power based on the percentage specified from UI */
+	// E2PROM setting is calibrated for maximum TX power (i.e. 100%)
+	// We lower TX power here according to the percentage specified from UI
+	if (pAd->CommonCfg.TxPowerPercentage == 0xffffffff)       // AUTO TX POWER control
+	{
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		{
+			// to patch high power issue with some APs, like Belkin N1.
+			if (Rssi > -35)
+			{
+				BbpR1 |= 0x02;		// DeltaPwr -= 12;
+			}
+			else if (Rssi > -40)
+			{
+				BbpR1 |= 0x01;		// DeltaPwr -= 6;
+			}
+			else
+		;
+		}
+#endif // CONFIG_STA_SUPPORT //
+	}
+	else if (pAd->CommonCfg.TxPowerPercentage > 90)  // 91 ~ 100% & AUTO, treat as 100% in terms of mW
+		;
+	else if (pAd->CommonCfg.TxPowerPercentage > 60)  // 61 ~ 90%, treat as 75% in terms of mW		// DeltaPwr -= 1;
+	{
+		DeltaPwr -= 1;
+	}
+	else if (pAd->CommonCfg.TxPowerPercentage > 30)  // 31 ~ 60%, treat as 50% in terms of mW		// DeltaPwr -= 3;
+	{
+		DeltaPwr -= 3;
+	}
+	else if (pAd->CommonCfg.TxPowerPercentage > 15)  // 16 ~ 30%, treat as 25% in terms of mW		// DeltaPwr -= 6;
+	{
+		BbpR1 |= 0x01;
+	}
+	else if (pAd->CommonCfg.TxPowerPercentage > 9)   // 10 ~ 15%, treat as 12.5% in terms of mW		// DeltaPwr -= 9;
+	{
+		BbpR1 |= 0x01;
+		DeltaPwr -= 3;
+	}
+	else                                           // 0 ~ 9 %, treat as MIN(~3%) in terms of mW		// DeltaPwr -= 12;
+	{
+		BbpR1 |= 0x02;
+	}
+	RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R1, BbpR1);
+	/* reset different new tx power for different TX rate */
+	for(i=0; i<MAX_TXPOWER_ARRAY_SIZE; i++)
+	{
+		if (TxPwr[i] != 0xffffffff)
+		{
+			for (j=0; j<8; j++)
+			{
+				Value = (CHAR)((TxPwr[i] >> j*4) & 0x0F); /* 0 ~ 15 */
+
+				if ((Value + DeltaPwr) < 0)
+				{
+					Value = 0; /* min */
+				}
+				else if ((Value + DeltaPwr) > 0xF)
+				{
+					Value = 0xF; /* max */
+				}
+				else
+				{
+					Value += DeltaPwr; /* temperature compensation */
+				}
+
+				/* fill new value to CSR offset */
+				TxPwr[i] = (TxPwr[i] & ~(0x0000000F << j*4)) | (Value << j*4);
+			}
+
+			/* write tx power value to CSR */
+			/* TX_PWR_CFG_0 (8 tx rate) for	TX power for OFDM 12M/18M
+											TX power for OFDM 6M/9M
+											TX power for CCK5.5M/11M
+											TX power for CCK1M/2M */
+			/* TX_PWR_CFG_1 ~ TX_PWR_CFG_4 */
+			{
+			RTMP_IO_WRITE32(pAd, TX_PWR_CFG_0 + i*4, TxPwr[i]);
+			}
+		}
+	}
+
+
+
+}
+
+
+#ifdef CONFIG_STA_SUPPORT
+VOID AsicResetBBPAgent(
+IN PRTMP_ADAPTER pAd)
+{
+	BBP_CSR_CFG_STRUC	BbpCsr;
+	DBGPRINT(RT_DEBUG_ERROR, ("Reset BBP Agent busy bit.!! \n"));
+	// Still need to find why BBP agent keeps busy, but in fact, hardware still function ok. Now clear busy first.	
+	RTMP_IO_READ32(pAd, H2M_BBP_AGENT, &BbpCsr.word);
+	BbpCsr.field.Busy = 0;
+	RTMP_IO_WRITE32(pAd, H2M_BBP_AGENT, BbpCsr.word);
+}
+/*
+	==========================================================================
+	Description:
+		put PHY to sleep here, and set next wakeup timer. PHY doesn't not wakeup 
+		automatically. Instead, MCU will issue a TwakeUpInterrupt to host after
+		the wakeup timer timeout. Driver has to issue a separate command to wake
+		PHY up.
+
+	IRQL = DISPATCH_LEVEL
+
+	==========================================================================
+ */
+VOID AsicSleepThenAutoWakeup(
+	IN PRTMP_ADAPTER pAd, 
+	IN USHORT TbttNumToNextWakeUp) 
+{
+	RTMP_STA_SLEEP_THEN_AUTO_WAKEUP(pAd, TbttNumToNextWakeUp);
+}
+
+/*
+	==========================================================================
+	Description:
+		AsicForceWakeup() is used whenever manual wakeup is required
+		AsicForceSleep() should only be used when not in INFRA BSS. When
+		in INFRA BSS, we should use AsicSleepThenAutoWakeup() instead.
+	==========================================================================
+ */
+VOID AsicForceSleep(
+	IN PRTMP_ADAPTER pAd)
+{
+
+}
+
+/*
+	==========================================================================
+	Description:
+		AsicForceWakeup() is used whenever Twakeup timer (set via AsicSleepThenAutoWakeup)
+		expired.
+
+	IRQL = PASSIVE_LEVEL
+	IRQL = DISPATCH_LEVEL
+	==========================================================================
+ */
+VOID AsicForceWakeup(
+	IN PRTMP_ADAPTER pAd,
+	IN BOOLEAN    bFromTx)
+{
+    DBGPRINT(RT_DEBUG_INFO, ("--> AsicForceWakeup \n"));
+    RTMP_STA_FORCE_WAKEUP(pAd, bFromTx);	
+}
+#endif // CONFIG_STA_SUPPORT //
+
+
+/*
+	==========================================================================
+	Description:
+		Set My BSSID
+
+	IRQL = DISPATCH_LEVEL
+
+	==========================================================================
+ */
+VOID AsicSetBssid(
+	IN PRTMP_ADAPTER pAd, 
+	IN PUCHAR pBssid) 
+{
+	ULONG		  Addr4;
+	DBGPRINT(RT_DEBUG_TRACE, ("==============> AsicSetBssid %x:%x:%x:%x:%x:%x\n",
+		pBssid[0],pBssid[1],pBssid[2],pBssid[3], pBssid[4],pBssid[5]));
+	
+	Addr4 = (ULONG)(pBssid[0])		 | 
+			(ULONG)(pBssid[1] << 8)  | 
+			(ULONG)(pBssid[2] << 16) |
+			(ULONG)(pBssid[3] << 24);
+	RTMP_IO_WRITE32(pAd, MAC_BSSID_DW0, Addr4);
+
+	Addr4 = 0;
+	// always one BSSID in STA mode
+	Addr4 = (ULONG)(pBssid[4]) | (ULONG)(pBssid[5] << 8);
+
+	RTMP_IO_WRITE32(pAd, MAC_BSSID_DW1, Addr4);
+}
+
+VOID AsicSetMcastWC(
+	IN PRTMP_ADAPTER pAd) 
+{
+	MAC_TABLE_ENTRY *pEntry = &pAd->MacTab.Content[MCAST_WCID];
+	USHORT		offset;
+	
+	pEntry->Sst        = SST_ASSOC;
+	pEntry->Aid        = MCAST_WCID;	// Softap supports 1 BSSID and use WCID=0 as multicast Wcid index
+	pEntry->PsMode     = PWR_ACTIVE;
+	pEntry->CurrTxRate = pAd->CommonCfg.MlmeRate; 
+	offset = MAC_WCID_BASE + BSS0Mcast_WCID * HW_WCID_ENTRY_SIZE;
+}
+
+/*
+	==========================================================================
+	Description:   
+
+	IRQL = DISPATCH_LEVEL
+
+	==========================================================================
+ */
+VOID AsicDelWcidTab(
+	IN PRTMP_ADAPTER pAd,
+	IN UCHAR	Wcid) 
+{
+	ULONG		  Addr0 = 0x0, Addr1 = 0x0;
+	ULONG 		offset;
+
+	DBGPRINT(RT_DEBUG_TRACE, ("AsicDelWcidTab==>Wcid = 0x%x\n",Wcid));
+	offset = MAC_WCID_BASE + Wcid * HW_WCID_ENTRY_SIZE;
+	RTMP_IO_WRITE32(pAd, offset, Addr0);
+	offset += 4;
+	RTMP_IO_WRITE32(pAd, offset, Addr1);
+}
+
+/*
+	==========================================================================
+	Description:
+
+	IRQL = DISPATCH_LEVEL
+	
+	==========================================================================
+ */
+VOID AsicEnableRDG(
+	IN PRTMP_ADAPTER pAd) 
+{
+	TX_LINK_CFG_STRUC	TxLinkCfg;
+	UINT32				Data = 0;
+
+	RTMP_IO_READ32(pAd, TX_LINK_CFG, &TxLinkCfg.word);
+	TxLinkCfg.field.TxRDGEn = 1;
+	RTMP_IO_WRITE32(pAd, TX_LINK_CFG, TxLinkCfg.word);
+
+	RTMP_IO_READ32(pAd, EDCA_AC0_CFG, &Data);
+	Data  &= 0xFFFFFF00;
+	Data  |= 0x80;
+	RTMP_IO_WRITE32(pAd, EDCA_AC0_CFG, Data);
+
+	//OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_AGGREGATION_INUSED);
+}
+
+/*
+	==========================================================================
+	Description:
+
+	IRQL = DISPATCH_LEVEL
+	
+	==========================================================================
+ */
+VOID AsicDisableRDG(
+	IN PRTMP_ADAPTER pAd) 
+{
+	TX_LINK_CFG_STRUC	TxLinkCfg;
+	UINT32				Data = 0;
+
+
+	RTMP_IO_READ32(pAd, TX_LINK_CFG, &TxLinkCfg.word);
+	TxLinkCfg.field.TxRDGEn = 0;
+	RTMP_IO_WRITE32(pAd, TX_LINK_CFG, TxLinkCfg.word);
+
+	RTMP_IO_READ32(pAd, EDCA_AC0_CFG, &Data);
+	
+	Data  &= 0xFFFFFF00;
+	//Data  |= 0x20;
+#ifndef WIFI_TEST
+	//if ( pAd->CommonCfg.bEnableTxBurst )	
+	//	Data |= 0x60; // for performance issue not set the TXOP to 0
+#endif
+	if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_DYNAMIC_BE_TXOP_ACTIVE) 
+#ifdef DOT11_N_SUPPORT
+		&& (pAd->MacTab.fAnyStationMIMOPSDynamic == FALSE)
+#endif // DOT11_N_SUPPORT //
+	)
+	{
+		// For CWC test, change txop from 0x30 to 0x20 in TxBurst mode
+		if (pAd->CommonCfg.bEnableTxBurst)
+		Data |= 0x20;
+	}
+	RTMP_IO_WRITE32(pAd, EDCA_AC0_CFG, Data);
+}
+
+/*
+	==========================================================================
+	Description:
+
+	IRQL = PASSIVE_LEVEL
+	IRQL = DISPATCH_LEVEL
+	
+	==========================================================================
+ */
+VOID AsicDisableSync(
+	IN PRTMP_ADAPTER pAd) 
+{
+	BCN_TIME_CFG_STRUC csr;
+	
+	DBGPRINT(RT_DEBUG_TRACE, ("--->Disable TSF synchronization\n"));
+
+	// 2003-12-20 disable TSF and TBTT while NIC in power-saving have side effect
+	//			  that NIC will never wakes up because TSF stops and no more 
+	//			  TBTT interrupts
+	pAd->TbttTickCount = 0;
+	RTMP_IO_READ32(pAd, BCN_TIME_CFG, &csr.word);
+	csr.field.bBeaconGen = 0;
+	csr.field.bTBTTEnable = 0;
+	csr.field.TsfSyncMode = 0;
+	csr.field.bTsfTicking = 0;
+	RTMP_IO_WRITE32(pAd, BCN_TIME_CFG, csr.word);
+
+}
+
+/*
+	==========================================================================
+	Description:
+
+	IRQL = DISPATCH_LEVEL
+	
+	==========================================================================
+ */
+VOID AsicEnableBssSync(
+	IN PRTMP_ADAPTER pAd) 
+{
+	BCN_TIME_CFG_STRUC csr;
+
+	DBGPRINT(RT_DEBUG_TRACE, ("--->AsicEnableBssSync(INFRA mode)\n"));
+
+	RTMP_IO_READ32(pAd, BCN_TIME_CFG, &csr.word);
+//	RTMP_IO_WRITE32(pAd, BCN_TIME_CFG, 0x00000000);
+#ifdef CONFIG_STA_SUPPORT	
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+		csr.field.BeaconInterval = pAd->CommonCfg.BeaconPeriod << 4; // ASIC register in units of 1/16 TU
+		csr.field.bTsfTicking = 1;
+		csr.field.TsfSyncMode = 1; // sync TSF in INFRASTRUCTURE mode
+		csr.field.bBeaconGen  = 0; // do NOT generate BEACON
+		csr.field.bTBTTEnable = 1;
+	}
+#endif // CONFIG_STA_SUPPORT //	
+	RTMP_IO_WRITE32(pAd, BCN_TIME_CFG, csr.word);
+}
+
+/*
+	==========================================================================
+	Description:
+	Note: 
+		BEACON frame in shared memory should be built ok before this routine
+		can be called. Otherwise, a garbage frame maybe transmitted out every
+		Beacon period.
+
+	IRQL = DISPATCH_LEVEL
+	
+	==========================================================================
+ */
+VOID AsicEnableIbssSync(
+	IN PRTMP_ADAPTER pAd)
+{
+	BCN_TIME_CFG_STRUC csr9;
+	PUCHAR			ptr;
+	UINT i;
+	USHORT beaconLen = pAd->BeaconTxWI.MPDUtotalByteCount;
+#ifdef RT_BIG_ENDIAN
+	TXWI_STRUC localTxWI;
+	NdisMoveMemory((PUCHAR)&localTxWI, (PUCHAR)&pAd->BeaconTxWI, TXWI_SIZE);
+	RTMPWIEndianChange((PUCHAR)&localTxWI, TYPE_TXWI);
+	beaconLen = localTxWI.MPDUtotalByteCount;
+ #endif // RT_BIG_ENDIAN //
+
+	DBGPRINT(RT_DEBUG_TRACE, ("--->AsicEnableIbssSync(MPDUtotalByteCount=%d, beaconLen=%d)\n", pAd->BeaconTxWI.MPDUtotalByteCount, beaconLen));
+	DBGPRINT(RT_DEBUG_TRACE, ("--->AsicEnableIbssSync(ADHOC mode. MPDUtotalByteCount = %d)\n", pAd->BeaconTxWI.MPDUtotalByteCount));
+
+	RTMP_IO_READ32(pAd, BCN_TIME_CFG, &csr9.word);
+	csr9.field.bBeaconGen = 0;
+	csr9.field.bTBTTEnable = 0;
+	csr9.field.bTsfTicking = 0;
+	RTMP_IO_WRITE32(pAd, BCN_TIME_CFG, csr9.word);
+
+#ifdef RTMP_MAC_PCI
+	// move BEACON TXD and frame content to on-chip memory
+	ptr = (PUCHAR)&pAd->BeaconTxWI;
+	for (i=0; i<TXWI_SIZE; i+=4)  // 16-byte TXWI field
+	{
+		UINT32 longptr =  *ptr + (*(ptr+1)<<8) + (*(ptr+2)<<16) + (*(ptr+3)<<24);
+		RTMP_IO_WRITE32(pAd, HW_BEACON_BASE0 + i, longptr);
+		ptr += 4;
+	}
+
+	// start right after the 16-byte TXWI field
+	ptr = pAd->BeaconBuf;
+	for (i=0; i< pAd->BeaconTxWI.MPDUtotalByteCount; i+=4)
+	{
+		UINT32 longptr =  *ptr + (*(ptr+1)<<8) + (*(ptr+2)<<16) + (*(ptr+3)<<24);
+		RTMP_IO_WRITE32(pAd, HW_BEACON_BASE0 + TXWI_SIZE + i, longptr);
+		ptr +=4;
+	}
+#endif // RTMP_MAC_PCI //
+
+
+	//
+	// For Wi-Fi faily generated beacons between participating stations. 
+	// Set TBTT phase adaptive adjustment step to 8us (default 16us)
+	// don't change settings 2006-5- by Jerry
+	//RTMP_IO_WRITE32(pAd, TBTT_SYNC_CFG, 0x00001010);
+	
+	// start sending BEACON
+	csr9.field.BeaconInterval = pAd->CommonCfg.BeaconPeriod << 4; // ASIC register in units of 1/16 TU
+	csr9.field.bTsfTicking = 1;
+	csr9.field.TsfSyncMode = 2; // sync TSF in IBSS mode
+	csr9.field.bTBTTEnable = 1;
+	csr9.field.bBeaconGen = 1;
+	RTMP_IO_WRITE32(pAd, BCN_TIME_CFG, csr9.word);
+}
+
+/*
+	==========================================================================
+	Description:
+
+	IRQL = PASSIVE_LEVEL
+	IRQL = DISPATCH_LEVEL
+	
+	==========================================================================
+ */
+VOID AsicSetEdcaParm(
+	IN PRTMP_ADAPTER pAd,
+	IN PEDCA_PARM	 pEdcaParm)
+{
+	EDCA_AC_CFG_STRUC   Ac0Cfg, Ac1Cfg, Ac2Cfg, Ac3Cfg;
+	AC_TXOP_CSR0_STRUC csr0;
+	AC_TXOP_CSR1_STRUC csr1;
+	AIFSN_CSR_STRUC    AifsnCsr;
+	CWMIN_CSR_STRUC    CwminCsr;
+	CWMAX_CSR_STRUC    CwmaxCsr;
+	int i;
+
+	Ac0Cfg.word = 0;
+	Ac1Cfg.word = 0;
+	Ac2Cfg.word = 0;
+	Ac3Cfg.word = 0;
+	if ((pEdcaParm == NULL) || (pEdcaParm->bValid == FALSE))
+	{
+		DBGPRINT(RT_DEBUG_TRACE,("AsicSetEdcaParm\n"));
+		OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_WMM_INUSED);
+		for (i=0; i<MAX_LEN_OF_MAC_TABLE; i++)
+		{
+			if (IS_ENTRY_CLIENT(&pAd->MacTab.Content[i]) || IS_ENTRY_APCLI(&pAd->MacTab.Content[i]))
+				CLIENT_STATUS_CLEAR_FLAG(&pAd->MacTab.Content[i], fCLIENT_STATUS_WMM_CAPABLE);
+		}
+
+		//========================================================
+		//      MAC Register has a copy .
+		//========================================================
+//#ifndef WIFI_TEST
+		if( pAd->CommonCfg.bEnableTxBurst )		
+		{
+			// For CWC test, change txop from 0x30 to 0x20 in TxBurst mode
+			Ac0Cfg.field.AcTxop = 0x20; // Suggest by John for TxBurst in HT Mode
+		}
+		else
+			Ac0Cfg.field.AcTxop = 0;	// QID_AC_BE
+//#else
+//		Ac0Cfg.field.AcTxop = 0;	// QID_AC_BE
+//#endif					
+		Ac0Cfg.field.Cwmin = CW_MIN_IN_BITS;
+		Ac0Cfg.field.Cwmax = CW_MAX_IN_BITS;
+		Ac0Cfg.field.Aifsn = 2;
+		RTMP_IO_WRITE32(pAd, EDCA_AC0_CFG, Ac0Cfg.word);
+
+		Ac1Cfg.field.AcTxop = 0;	// QID_AC_BK
+		Ac1Cfg.field.Cwmin = CW_MIN_IN_BITS;
+		Ac1Cfg.field.Cwmax = CW_MAX_IN_BITS;
+		Ac1Cfg.field.Aifsn = 2;
+		RTMP_IO_WRITE32(pAd, EDCA_AC1_CFG, Ac1Cfg.word);
+
+		if (pAd->CommonCfg.PhyMode == PHY_11B)
+		{
+			Ac2Cfg.field.AcTxop = 192;	// AC_VI: 192*32us ~= 6ms
+			Ac3Cfg.field.AcTxop = 96;	// AC_VO: 96*32us  ~= 3ms
+		}
+		else
+		{
+			Ac2Cfg.field.AcTxop = 96;	// AC_VI: 96*32us ~= 3ms
+			Ac3Cfg.field.AcTxop = 48;	// AC_VO: 48*32us ~= 1.5ms
+		}
+		Ac2Cfg.field.Cwmin = CW_MIN_IN_BITS;
+		Ac2Cfg.field.Cwmax = CW_MAX_IN_BITS;
+		Ac2Cfg.field.Aifsn = 2;
+		RTMP_IO_WRITE32(pAd, EDCA_AC2_CFG, Ac2Cfg.word);
+		Ac3Cfg.field.Cwmin = CW_MIN_IN_BITS;
+		Ac3Cfg.field.Cwmax = CW_MAX_IN_BITS;
+		Ac3Cfg.field.Aifsn = 2;
+		RTMP_IO_WRITE32(pAd, EDCA_AC3_CFG, Ac3Cfg.word);
+
+		//========================================================
+		//      DMA Register has a copy too.
+		//========================================================
+		csr0.field.Ac0Txop = 0;		// QID_AC_BE
+		csr0.field.Ac1Txop = 0;		// QID_AC_BK
+		RTMP_IO_WRITE32(pAd, WMM_TXOP0_CFG, csr0.word);
+		if (pAd->CommonCfg.PhyMode == PHY_11B)
+		{
+			csr1.field.Ac2Txop = 192;		// AC_VI: 192*32us ~= 6ms
+			csr1.field.Ac3Txop = 96;		// AC_VO: 96*32us  ~= 3ms
+		}
+		else
+		{
+			csr1.field.Ac2Txop = 96;		// AC_VI: 96*32us ~= 3ms
+			csr1.field.Ac3Txop = 48;		// AC_VO: 48*32us ~= 1.5ms
+		}
+		RTMP_IO_WRITE32(pAd, WMM_TXOP1_CFG, csr1.word);
+
+		CwminCsr.word = 0;
+		CwminCsr.field.Cwmin0 = CW_MIN_IN_BITS;
+		CwminCsr.field.Cwmin1 = CW_MIN_IN_BITS;
+		CwminCsr.field.Cwmin2 = CW_MIN_IN_BITS;
+		CwminCsr.field.Cwmin3 = CW_MIN_IN_BITS;
+		RTMP_IO_WRITE32(pAd, WMM_CWMIN_CFG, CwminCsr.word);
+
+		CwmaxCsr.word = 0;
+		CwmaxCsr.field.Cwmax0 = CW_MAX_IN_BITS;
+		CwmaxCsr.field.Cwmax1 = CW_MAX_IN_BITS;
+		CwmaxCsr.field.Cwmax2 = CW_MAX_IN_BITS;
+		CwmaxCsr.field.Cwmax3 = CW_MAX_IN_BITS;
+		RTMP_IO_WRITE32(pAd, WMM_CWMAX_CFG, CwmaxCsr.word);
+
+		RTMP_IO_WRITE32(pAd, WMM_AIFSN_CFG, 0x00002222);
+
+		NdisZeroMemory(&pAd->CommonCfg.APEdcaParm, sizeof(EDCA_PARM));
+
+	}
+	else
+	{
+		OPSTATUS_SET_FLAG(pAd, fOP_STATUS_WMM_INUSED);
+		//========================================================
+		//      MAC Register has a copy.
+		//========================================================
+		//
+		// Modify Cwmin/Cwmax/Txop on queue[QID_AC_VI], Recommend by Jerry 2005/07/27
+		// To degrade our VIDO Queue's throughput for WiFi WMM S3T07 Issue.
+		//
+		//pEdcaParm->Txop[QID_AC_VI] = pEdcaParm->Txop[QID_AC_VI] * 7 / 10; // rt2860c need this		
+
+		Ac0Cfg.field.AcTxop =  pEdcaParm->Txop[QID_AC_BE];
+		Ac0Cfg.field.Cwmin= pEdcaParm->Cwmin[QID_AC_BE];
+		Ac0Cfg.field.Cwmax = pEdcaParm->Cwmax[QID_AC_BE];
+		Ac0Cfg.field.Aifsn = pEdcaParm->Aifsn[QID_AC_BE]; //+1;
+
+		Ac1Cfg.field.AcTxop =  pEdcaParm->Txop[QID_AC_BK];
+		Ac1Cfg.field.Cwmin = pEdcaParm->Cwmin[QID_AC_BK]; //+2; 
+		Ac1Cfg.field.Cwmax = pEdcaParm->Cwmax[QID_AC_BK];
+		Ac1Cfg.field.Aifsn = pEdcaParm->Aifsn[QID_AC_BK]; //+1;
+
+
+		Ac2Cfg.field.AcTxop = (pEdcaParm->Txop[QID_AC_VI] * 6) / 10;
+		if(pAd->Antenna.field.TxPath == 1)
+		{
+			Ac2Cfg.field.Cwmin = pEdcaParm->Cwmin[QID_AC_VI] + 1;
+			Ac2Cfg.field.Cwmax = pEdcaParm->Cwmax[QID_AC_VI] + 1;			
+		}
+		else
+		{
+		Ac2Cfg.field.Cwmin = pEdcaParm->Cwmin[QID_AC_VI];
+		Ac2Cfg.field.Cwmax = pEdcaParm->Cwmax[QID_AC_VI];
+		}
+		Ac2Cfg.field.Aifsn = pEdcaParm->Aifsn[QID_AC_VI] + 1;
+		
+#ifdef INF_AMAZON_SE
+#endif // INF_AMAZON_SE //
+
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		{
+			// Tuning for Wi-Fi WMM S06
+			if (pAd->CommonCfg.bWiFiTest && 
+				pEdcaParm->Aifsn[QID_AC_VI] == 10)
+				Ac2Cfg.field.Aifsn -= 1; 
+
+			// Tuning for TGn Wi-Fi 5.2.32
+			// STA TestBed changes in this item: conexant legacy sta ==> broadcom 11n sta
+			if (STA_TGN_WIFI_ON(pAd) && 
+				pEdcaParm->Aifsn[QID_AC_VI] == 10)
+			{
+				Ac0Cfg.field.Aifsn = 3;
+				Ac2Cfg.field.AcTxop = 5;
+			}
+			
+#ifdef RT30xx
+			if (pAd->RfIcType == RFIC_3020 || pAd->RfIcType == RFIC_2020)
+			{
+				// Tuning for WiFi WMM S3-T07: connexant legacy sta ==> broadcom 11n sta.
+				Ac2Cfg.field.Aifsn = 5;
+			}
+#endif // RT30xx //
+		}
+#endif // CONFIG_STA_SUPPORT //
+
+		Ac3Cfg.field.AcTxop = pEdcaParm->Txop[QID_AC_VO];
+		Ac3Cfg.field.Cwmin = pEdcaParm->Cwmin[QID_AC_VO];
+		Ac3Cfg.field.Cwmax = pEdcaParm->Cwmax[QID_AC_VO];
+		Ac3Cfg.field.Aifsn = pEdcaParm->Aifsn[QID_AC_VO];
+
+//#ifdef WIFI_TEST
+		if (pAd->CommonCfg.bWiFiTest)
+		{
+			if (Ac3Cfg.field.AcTxop == 102)
+			{
+			Ac0Cfg.field.AcTxop = pEdcaParm->Txop[QID_AC_BE] ? pEdcaParm->Txop[QID_AC_BE] : 10;
+				Ac0Cfg.field.Aifsn  = pEdcaParm->Aifsn[QID_AC_BE]-1; /* AIFSN must >= 1 */
+			Ac1Cfg.field.AcTxop = pEdcaParm->Txop[QID_AC_BK];
+				Ac1Cfg.field.Aifsn  = pEdcaParm->Aifsn[QID_AC_BK];
+			Ac2Cfg.field.AcTxop = pEdcaParm->Txop[QID_AC_VI];
+			} /* End of if */
+		}
+//#endif // WIFI_TEST //
+
+		RTMP_IO_WRITE32(pAd, EDCA_AC0_CFG, Ac0Cfg.word);
+		RTMP_IO_WRITE32(pAd, EDCA_AC1_CFG, Ac1Cfg.word);
+		RTMP_IO_WRITE32(pAd, EDCA_AC2_CFG, Ac2Cfg.word);
+		RTMP_IO_WRITE32(pAd, EDCA_AC3_CFG, Ac3Cfg.word);
+
+
+		//========================================================
+		//      DMA Register has a copy too.
+		//========================================================
+		csr0.field.Ac0Txop = Ac0Cfg.field.AcTxop;
+		csr0.field.Ac1Txop = Ac1Cfg.field.AcTxop;
+		RTMP_IO_WRITE32(pAd, WMM_TXOP0_CFG, csr0.word);
+
+		csr1.field.Ac2Txop = Ac2Cfg.field.AcTxop;
+		csr1.field.Ac3Txop = Ac3Cfg.field.AcTxop;
+		RTMP_IO_WRITE32(pAd, WMM_TXOP1_CFG, csr1.word);
+
+		CwminCsr.word = 0;
+		CwminCsr.field.Cwmin0 = pEdcaParm->Cwmin[QID_AC_BE];
+		CwminCsr.field.Cwmin1 = pEdcaParm->Cwmin[QID_AC_BK];
+		CwminCsr.field.Cwmin2 = pEdcaParm->Cwmin[QID_AC_VI];
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+			CwminCsr.field.Cwmin3 = pEdcaParm->Cwmin[QID_AC_VO] - 1; //for TGn wifi test
+#endif // CONFIG_STA_SUPPORT //
+		RTMP_IO_WRITE32(pAd, WMM_CWMIN_CFG, CwminCsr.word);
+
+		CwmaxCsr.word = 0;
+		CwmaxCsr.field.Cwmax0 = pEdcaParm->Cwmax[QID_AC_BE];
+		CwmaxCsr.field.Cwmax1 = pEdcaParm->Cwmax[QID_AC_BK];
+		CwmaxCsr.field.Cwmax2 = pEdcaParm->Cwmax[QID_AC_VI];
+		CwmaxCsr.field.Cwmax3 = pEdcaParm->Cwmax[QID_AC_VO];
+		RTMP_IO_WRITE32(pAd, WMM_CWMAX_CFG, CwmaxCsr.word);
+
+		AifsnCsr.word = 0;
+		AifsnCsr.field.Aifsn0 = Ac0Cfg.field.Aifsn; //pEdcaParm->Aifsn[QID_AC_BE];
+		AifsnCsr.field.Aifsn1 = Ac1Cfg.field.Aifsn; //pEdcaParm->Aifsn[QID_AC_BK];
+		AifsnCsr.field.Aifsn2 = Ac2Cfg.field.Aifsn; //pEdcaParm->Aifsn[QID_AC_VI];
+#ifdef INF_AMAZON_SE
+#endif // INF_AMAZON_SE //
+
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		{
+			// Tuning for Wi-Fi WMM S06
+			if (pAd->CommonCfg.bWiFiTest &&
+				pEdcaParm->Aifsn[QID_AC_VI] == 10)
+				AifsnCsr.field.Aifsn2 = Ac2Cfg.field.Aifsn - 4;
+
+			// Tuning for TGn Wi-Fi 5.2.32
+			// STA TestBed changes in this item: connexant legacy sta ==> broadcom 11n sta
+			if (STA_TGN_WIFI_ON(pAd) && 
+				pEdcaParm->Aifsn[QID_AC_VI] == 10)
+			{
+				AifsnCsr.field.Aifsn0 = 3;
+				AifsnCsr.field.Aifsn2 = 7;
+			}
+
+			if (INFRA_ON(pAd))
+				CLIENT_STATUS_SET_FLAG(&pAd->MacTab.Content[BSSID_WCID], fCLIENT_STATUS_WMM_CAPABLE);
+		}
+#endif // CONFIG_STA_SUPPORT //
+
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		{
+			AifsnCsr.field.Aifsn3 = Ac3Cfg.field.Aifsn - 1; //pEdcaParm->Aifsn[QID_AC_VO]; //for TGn wifi test
+#ifdef RT30xx
+			// TODO: Shiang, this modification also suitable for RT3052/RT3050 ???
+			if (pAd->RfIcType == RFIC_3020 || pAd->RfIcType == RFIC_2020)
+			{
+				IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+					AifsnCsr.field.Aifsn2 = 0x2; //pEdcaParm->Aifsn[QID_AC_VI]; //for WiFi WMM S4-T04.
+			}
+#endif // RT30xx //
+		}
+#endif // CONFIG_STA_SUPPORT //
+		RTMP_IO_WRITE32(pAd, WMM_AIFSN_CFG, AifsnCsr.word);
+
+		NdisMoveMemory(&pAd->CommonCfg.APEdcaParm, pEdcaParm, sizeof(EDCA_PARM));
+		if (!ADHOC_ON(pAd))
+		{
+			DBGPRINT(RT_DEBUG_TRACE,("EDCA [#%d]: AIFSN CWmin CWmax  TXOP(us)  ACM\n", pEdcaParm->EdcaUpdateCount));
+			DBGPRINT(RT_DEBUG_TRACE,("     AC_BE      %2d     %2d     %2d      %4d     %d\n",
+									 pEdcaParm->Aifsn[0],
+									 pEdcaParm->Cwmin[0],
+									 pEdcaParm->Cwmax[0],
+									 pEdcaParm->Txop[0]<<5,
+									 pEdcaParm->bACM[0]));
+			DBGPRINT(RT_DEBUG_TRACE,("     AC_BK      %2d     %2d     %2d      %4d     %d\n",
+									 pEdcaParm->Aifsn[1],
+									 pEdcaParm->Cwmin[1],
+									 pEdcaParm->Cwmax[1],
+									 pEdcaParm->Txop[1]<<5,
+									 pEdcaParm->bACM[1]));
+			DBGPRINT(RT_DEBUG_TRACE,("     AC_VI      %2d     %2d     %2d      %4d     %d\n",
+									 pEdcaParm->Aifsn[2],
+									 pEdcaParm->Cwmin[2],
+									 pEdcaParm->Cwmax[2],
+									 pEdcaParm->Txop[2]<<5,
+									 pEdcaParm->bACM[2]));
+			DBGPRINT(RT_DEBUG_TRACE,("     AC_VO      %2d     %2d     %2d      %4d     %d\n",
+									 pEdcaParm->Aifsn[3],
+									 pEdcaParm->Cwmin[3],
+									 pEdcaParm->Cwmax[3],
+									 pEdcaParm->Txop[3]<<5,
+									 pEdcaParm->bACM[3]));
+		}
+
+	}
+}
+
+/*
+	==========================================================================
+	Description:
+
+	IRQL = PASSIVE_LEVEL
+	IRQL = DISPATCH_LEVEL
+	
+	==========================================================================
+ */
+VOID 	AsicSetSlotTime(
+	IN PRTMP_ADAPTER pAd,
+	IN BOOLEAN bUseShortSlotTime) 
+{
+	ULONG	SlotTime;
+	UINT32	RegValue = 0;
+
+#ifdef CONFIG_STA_SUPPORT
+	if (pAd->CommonCfg.Channel > 14)
+		bUseShortSlotTime = TRUE;
+#endif // CONFIG_STA_SUPPORT //
+
+	if (bUseShortSlotTime && OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_SHORT_SLOT_INUSED))
+		return;
+	else if ((!bUseShortSlotTime) && (!OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_SHORT_SLOT_INUSED)))
+		return;
+
+	if (bUseShortSlotTime)
+		OPSTATUS_SET_FLAG(pAd, fOP_STATUS_SHORT_SLOT_INUSED);
+	else
+		OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_SHORT_SLOT_INUSED);
+
+	SlotTime = (bUseShortSlotTime)? 9 : 20;
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+		// force using short SLOT time for FAE to demo performance when TxBurst is ON
+		if (((pAd->StaActive.SupportedPhyInfo.bHtEnable == FALSE) && (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_WMM_INUSED)))
+#ifdef DOT11_N_SUPPORT
+			|| ((pAd->StaActive.SupportedPhyInfo.bHtEnable == TRUE) && (pAd->CommonCfg.BACapability.field.Policy == BA_NOTUSE))
+#endif // DOT11_N_SUPPORT //
+			)
+		{
+			// In this case, we will think it is doing Wi-Fi test
+			// And we will not set to short slot when bEnableTxBurst is TRUE.
+		}
+		else if (pAd->CommonCfg.bEnableTxBurst)
+		{
+			OPSTATUS_SET_FLAG(pAd, fOP_STATUS_SHORT_SLOT_INUSED);
+			SlotTime = 9;
+		}
+	}
+#endif // CONFIG_STA_SUPPORT //
+
+	//
+	// For some reasons, always set it to short slot time.
+	// 
+	// ToDo: Should consider capability with 11B
+	//
+#ifdef CONFIG_STA_SUPPORT 
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+		if (pAd->StaCfg.BssType == BSS_ADHOC)	
+		{
+			OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_SHORT_SLOT_INUSED);
+			SlotTime = 20;
+		}
+	}
+#endif // CONFIG_STA_SUPPORT //
+
+	RTMP_IO_READ32(pAd, BKOFF_SLOT_CFG, &RegValue);
+	RegValue = RegValue & 0xFFFFFF00;
+
+	RegValue |= SlotTime;
+
+	RTMP_IO_WRITE32(pAd, BKOFF_SLOT_CFG, RegValue);
+}
+
+/*
+	========================================================================
+	Description:
+		Add Shared key information into ASIC. 
+		Update shared key, TxMic and RxMic to Asic Shared key table
+		Update its cipherAlg to Asic Shared key Mode.
+		
+    Return:
+	========================================================================
+*/
+VOID AsicAddSharedKeyEntry(
+	IN PRTMP_ADAPTER 	pAd,
+	IN UCHAR		 	BssIndex,
+	IN UCHAR		 	KeyIdx,
+	IN PCIPHER_KEY		pCipherKey)
+{
+	ULONG offset; //, csr0;
+	SHAREDKEY_MODE_STRUC csr1;
+#ifdef RTMP_MAC_PCI
+	INT   i;
+#endif // RTMP_MAC_PCI //
+
+	PUCHAR		pKey = pCipherKey->Key;
+	PUCHAR		pTxMic = pCipherKey->TxMic;
+	PUCHAR		pRxMic = pCipherKey->RxMic;
+	UCHAR		CipherAlg = pCipherKey->CipherAlg;
+
+	DBGPRINT(RT_DEBUG_TRACE, ("AsicAddSharedKeyEntry BssIndex=%d, KeyIdx=%d\n", BssIndex,KeyIdx));
+//============================================================================================
+
+	DBGPRINT(RT_DEBUG_TRACE,("AsicAddSharedKeyEntry: %s key #%d\n", CipherName[CipherAlg], BssIndex*4 + KeyIdx));
+	DBGPRINT_RAW(RT_DEBUG_TRACE, (" 	Key = %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x\n",
+		pKey[0],pKey[1],pKey[2],pKey[3],pKey[4],pKey[5],pKey[6],pKey[7],pKey[8],pKey[9],pKey[10],pKey[11],pKey[12],pKey[13],pKey[14],pKey[15]));
+	if (pRxMic)
+	{
+		DBGPRINT_RAW(RT_DEBUG_TRACE, (" 	Rx MIC Key = %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x\n",
+			pRxMic[0],pRxMic[1],pRxMic[2],pRxMic[3],pRxMic[4],pRxMic[5],pRxMic[6],pRxMic[7]));
+	}
+	if (pTxMic)
+	{
+		DBGPRINT_RAW(RT_DEBUG_TRACE, (" 	Tx MIC Key = %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x\n",
+			pTxMic[0],pTxMic[1],pTxMic[2],pTxMic[3],pTxMic[4],pTxMic[5],pTxMic[6],pTxMic[7]));
+	}
+//============================================================================================
+	//
+	// fill key material - key + TX MIC + RX MIC
+	//
+#ifdef RTMP_MAC_PCI
+	offset = SHARED_KEY_TABLE_BASE + (4*BssIndex + KeyIdx)*HW_KEY_ENTRY_SIZE;
+	for (i=0; i<MAX_LEN_OF_SHARE_KEY; i++) 
+	{
+		RTMP_IO_WRITE8(pAd, offset + i, pKey[i]);
+	}
+
+	offset += MAX_LEN_OF_SHARE_KEY;
+	if (pTxMic)
+	{
+		for (i=0; i<8; i++)
+		{
+			RTMP_IO_WRITE8(pAd, offset + i, pTxMic[i]);
+		}
+	}
+
+	offset += 8;
+	if (pRxMic)
+	{
+		for (i=0; i<8; i++)
+		{
+			RTMP_IO_WRITE8(pAd, offset + i, pRxMic[i]);
+		}
+	}
+#endif // RTMP_MAC_PCI //
+
+
+	//
+	// Update cipher algorithm. WSTA always use BSS0
+	//
+	RTMP_IO_READ32(pAd, SHARED_KEY_MODE_BASE+4*(BssIndex/2), &csr1.word);
+	DBGPRINT(RT_DEBUG_TRACE,("Read: SHARED_KEY_MODE_BASE at this Bss[%d] KeyIdx[%d]= 0x%x \n", BssIndex,KeyIdx, csr1.word));
+	if ((BssIndex%2) == 0)
+	{
+		if (KeyIdx == 0)
+			csr1.field.Bss0Key0CipherAlg = CipherAlg;
+		else if (KeyIdx == 1)
+			csr1.field.Bss0Key1CipherAlg = CipherAlg;
+		else if (KeyIdx == 2)
+			csr1.field.Bss0Key2CipherAlg = CipherAlg;
+		else
+			csr1.field.Bss0Key3CipherAlg = CipherAlg;
+	}
+	else
+	{
+		if (KeyIdx == 0)
+			csr1.field.Bss1Key0CipherAlg = CipherAlg;
+		else if (KeyIdx == 1)
+			csr1.field.Bss1Key1CipherAlg = CipherAlg;
+		else if (KeyIdx == 2)
+			csr1.field.Bss1Key2CipherAlg = CipherAlg;
+		else
+			csr1.field.Bss1Key3CipherAlg = CipherAlg;
+	}
+	DBGPRINT(RT_DEBUG_TRACE,("Write: SHARED_KEY_MODE_BASE at this Bss[%d] = 0x%x \n", BssIndex, csr1.word));
+	RTMP_IO_WRITE32(pAd, SHARED_KEY_MODE_BASE+4*(BssIndex/2), csr1.word);
+		
+}
+
+//	IRQL = DISPATCH_LEVEL
+VOID AsicRemoveSharedKeyEntry(
+	IN PRTMP_ADAPTER pAd,
+	IN UCHAR		 BssIndex,
+	IN UCHAR		 KeyIdx)
+{
+	//ULONG SecCsr0;
+	SHAREDKEY_MODE_STRUC csr1;
+
+	DBGPRINT(RT_DEBUG_TRACE,("AsicRemoveSharedKeyEntry: #%d \n", BssIndex*4 + KeyIdx));
+
+	RTMP_IO_READ32(pAd, SHARED_KEY_MODE_BASE+4*(BssIndex/2), &csr1.word);
+	if ((BssIndex%2) == 0)
+	{
+		if (KeyIdx == 0)
+			csr1.field.Bss0Key0CipherAlg = 0;
+		else if (KeyIdx == 1)
+			csr1.field.Bss0Key1CipherAlg = 0;
+		else if (KeyIdx == 2)
+			csr1.field.Bss0Key2CipherAlg = 0;
+		else
+			csr1.field.Bss0Key3CipherAlg = 0;
+	}
+	else
+	{
+		if (KeyIdx == 0)
+			csr1.field.Bss1Key0CipherAlg = 0;
+		else if (KeyIdx == 1)
+			csr1.field.Bss1Key1CipherAlg = 0;
+		else if (KeyIdx == 2)
+			csr1.field.Bss1Key2CipherAlg = 0;
+		else
+			csr1.field.Bss1Key3CipherAlg = 0;
+	}
+	DBGPRINT(RT_DEBUG_TRACE,("Write: SHARED_KEY_MODE_BASE at this Bss[%d] = 0x%x \n", BssIndex, csr1.word));
+	RTMP_IO_WRITE32(pAd, SHARED_KEY_MODE_BASE+4*(BssIndex/2), csr1.word);
+	ASSERT(BssIndex < 4);
+	ASSERT(KeyIdx < 4);
+
+}
+
+
+
+VOID AsicUpdateWCIDIVEIV(
+	IN PRTMP_ADAPTER pAd,
+	IN USHORT		WCID,
+	IN ULONG        uIV,
+	IN ULONG        uEIV)
+{
+	ULONG	offset;
+
+	offset = MAC_IVEIV_TABLE_BASE + (WCID * HW_IVEIV_ENTRY_SIZE);
+
+	RTMP_IO_WRITE32(pAd, offset, uIV);
+	RTMP_IO_WRITE32(pAd, offset + 4, uEIV);
+
+	DBGPRINT(RT_DEBUG_TRACE, ("%s: wcid(%d) 0x%08lx, 0x%08lx \n", 
+									__FUNCTION__, WCID, uIV, uEIV));	
+}
+
+VOID AsicUpdateRxWCIDTable(
+	IN PRTMP_ADAPTER pAd,
+	IN USHORT		WCID,
+	IN PUCHAR        pAddr)
+{
+	ULONG offset;
+	ULONG Addr;
+	
+	offset = MAC_WCID_BASE + (WCID * HW_WCID_ENTRY_SIZE);	
+	Addr = pAddr[0] + (pAddr[1] << 8) +(pAddr[2] << 16) +(pAddr[3] << 24);
+	RTMP_IO_WRITE32(pAd, offset, Addr);
+	Addr = pAddr[4] + (pAddr[5] << 8);
+	RTMP_IO_WRITE32(pAd, offset + 4, Addr);	
+}
+	
+/*
+	========================================================================
+	Description:
+		Add Client security information into ASIC WCID table and IVEIV table.
+    Return:
+
+    Note :
+		The key table selection rule :
+    	1.	Wds-links and Mesh-links always use Pair-wise key table. 	
+		2. 	When the CipherAlg is TKIP, AES, SMS4 or the dynamic WEP is enabled, 
+			it needs to set key into Pair-wise Key Table.
+		3.	The pair-wise key security mode is set NONE, it means as no security.
+		4.	In STA Adhoc mode, it always use shared key table.
+		5.	Otherwise, use shared key table
+
+	========================================================================
+*/
+VOID	AsicUpdateWcidAttributeEntry(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	UCHAR			BssIdx,
+	IN 	UCHAR		 	KeyIdx,
+	IN 	UCHAR		 	CipherAlg,
+	IN	UINT8			Wcid,
+	IN	UINT8			KeyTabFlag)
+{
+	WCID_ATTRIBUTE_STRUC WCIDAttri;	
+	USHORT		offset;
+
+	/* Initialize the content of WCID Attribue  */
+	WCIDAttri.word = 0;
+
+	/* The limitation of HW WCID table */
+	if (/*Wcid < 1 ||*/ Wcid > 254)
+	{		
+		DBGPRINT(RT_DEBUG_WARN, ("%s: Wcid is invalid (%d). \n", 
+										__FUNCTION__, Wcid));	
+		return;
+	}
+
+	/* Update the pairwise key security mode.
+	   Use bit10 and bit3~1 to indicate the pairwise cipher mode */	
+	WCIDAttri.field.PairKeyModeExt = ((CipherAlg & 0x08) >> 3);
+	WCIDAttri.field.PairKeyMode = (CipherAlg & 0x07);
+
+	/* Update the MBSS index.
+	   Use bit11 and bit6~4 to indicate the BSS index */	
+	WCIDAttri.field.BSSIdxExt = ((BssIdx & 0x08) >> 3);
+	WCIDAttri.field.BSSIdx = (BssIdx & 0x07);
+
+	
+	/* Assign Key Table selection */		
+	WCIDAttri.field.KeyTab = KeyTabFlag;
+
+	/* Update related information to ASIC */
+	offset = MAC_WCID_ATTRIBUTE_BASE + (Wcid * HW_WCID_ATTRI_SIZE);
+	RTMP_IO_WRITE32(pAd, offset, WCIDAttri.word);
+
+	DBGPRINT(RT_DEBUG_TRACE, ("%s : WCID #%d, KeyIndex #%d, Alg=%s\n", __FUNCTION__, Wcid, KeyIdx, CipherName[CipherAlg]));
+	DBGPRINT(RT_DEBUG_TRACE, ("		WCIDAttri = 0x%x \n", WCIDAttri.word));	
+	
+}
+	
+
+/*
+	========================================================================
+	Description:
+		Add Pair-wise key material into ASIC. 
+		Update pairwise key, TxMic and RxMic to Asic Pair-wise key table
+				
+    Return:
+	========================================================================
+*/
+VOID AsicAddPairwiseKeyEntry(
+	IN PRTMP_ADAPTER 	pAd,
+	IN UCHAR			WCID,
+	IN PCIPHER_KEY		pCipherKey)
+{
+	INT i;
+	ULONG 		offset;
+	PUCHAR		 pKey = pCipherKey->Key;
+	PUCHAR		 pTxMic = pCipherKey->TxMic;
+	PUCHAR		 pRxMic = pCipherKey->RxMic;
+	UCHAR		CipherAlg = pCipherKey->CipherAlg;
+	
+	// EKEY
+	offset = PAIRWISE_KEY_TABLE_BASE + (WCID * HW_KEY_ENTRY_SIZE);
+#ifdef RTMP_MAC_PCI
+	for (i=0; i<MAX_LEN_OF_PEER_KEY; i++)
+	{
+		RTMP_IO_WRITE8(pAd, offset + i, pKey[i]);
+	}
+#endif // RTMP_MAC_PCI //
+	for (i=0; i<MAX_LEN_OF_PEER_KEY; i+=4)
+	{
+		UINT32 Value;
+		RTMP_IO_READ32(pAd, offset + i, &Value);
+	}
+
+	offset += MAX_LEN_OF_PEER_KEY;
+	
+	//  MIC KEY
+	if (pTxMic)
+	{
+#ifdef RTMP_MAC_PCI
+		for (i=0; i<8; i++)
+		{
+			RTMP_IO_WRITE8(pAd, offset+i, pTxMic[i]);
+		}
+#endif // RTMP_MAC_PCI //
+	}
+	offset += 8;
+	if (pRxMic)
+	{
+#ifdef RTMP_MAC_PCI
+		for (i=0; i<8; i++)
+		{
+			RTMP_IO_WRITE8(pAd, offset+i, pRxMic[i]);
+		}
+#endif // RTMP_MAC_PCI //
+	}
+
+	DBGPRINT(RT_DEBUG_TRACE,("AsicAddPairwiseKeyEntry: WCID #%d Alg=%s\n",WCID, CipherName[CipherAlg]));
+	DBGPRINT(RT_DEBUG_TRACE,("	Key = %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x\n",
+		pKey[0],pKey[1],pKey[2],pKey[3],pKey[4],pKey[5],pKey[6],pKey[7],pKey[8],pKey[9],pKey[10],pKey[11],pKey[12],pKey[13],pKey[14],pKey[15]));
+	if (pRxMic)
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("	Rx MIC Key = %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x\n",
+			pRxMic[0],pRxMic[1],pRxMic[2],pRxMic[3],pRxMic[4],pRxMic[5],pRxMic[6],pRxMic[7]));
+	}
+	if (pTxMic)
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("	Tx MIC Key = %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x\n",
+			pTxMic[0],pTxMic[1],pTxMic[2],pTxMic[3],pTxMic[4],pTxMic[5],pTxMic[6],pTxMic[7]));
+	}
+}
+/*
+	========================================================================
+	Description:
+		Remove Pair-wise key material from ASIC. 
+
+    Return:
+	========================================================================
+*/	
+VOID AsicRemovePairwiseKeyEntry(
+	IN PRTMP_ADAPTER pAd,
+	IN UCHAR		 Wcid)
+{
+	/* Set the specific WCID attribute entry as OPEN-NONE */
+	AsicUpdateWcidAttributeEntry(pAd, 
+							  BSS0,
+							  0,
+							  CIPHER_NONE, 
+							  Wcid,
+							  PAIRWISEKEYTABLE);
+
+	DBGPRINT(RT_DEBUG_TRACE, ("%s : Wcid #%d \n", __FUNCTION__, Wcid));
+}
+
+BOOLEAN AsicSendCommandToMcu(
+	IN PRTMP_ADAPTER pAd,
+	IN UCHAR		 Command,
+	IN UCHAR		 Token,
+	IN UCHAR		 Arg0,
+	IN UCHAR		 Arg1)
+{
+	if (pAd->chipOps.sendCommandToMcu)
+		return pAd->chipOps.sendCommandToMcu(pAd, Command, Token, Arg0, Arg1);
+	else
+		return FALSE;
+}
+
+
+VOID AsicSetRxAnt(
+	IN PRTMP_ADAPTER	pAd,
+	IN UCHAR			Ant)
+{
+#ifdef RT30xx
+	/* RT3572 ATE need not to do this. */
+	RT30xxSetRxAnt(pAd, Ant);
+#endif // RT30xx //
+}
+
+
+VOID AsicTurnOffRFClk(
+	IN PRTMP_ADAPTER pAd, 
+	IN	UCHAR		Channel) 
+{
+	if (pAd->chipOps.AsicRfTurnOff)
+	{
+		pAd->chipOps.AsicRfTurnOff(pAd);
+	}
+	else
+	{
+#ifdef RT28xx
+		// RF R2 bit 18 = 0
+		UINT32			R1 = 0, R2 = 0, R3 = 0;
+		UCHAR			index;
+		RTMP_RF_REGS	*RFRegTable;
+	
+		RFRegTable = RF2850RegTable;
+#endif // RT28xx //
+
+		switch (pAd->RfIcType)
+		{
+#ifdef RT28xx
+			case RFIC_2820:
+			case RFIC_2850:
+			case RFIC_2720:
+			case RFIC_2750:
+				for (index = 0; index < NUM_OF_2850_CHNL; index++)
+				{
+					if (Channel == RFRegTable[index].Channel)
+					{
+						R1 = RFRegTable[index].R1 & 0xffffdfff;
+						R2 = RFRegTable[index].R2 & 0xfffbffff;
+						R3 = RFRegTable[index].R3 & 0xfff3ffff;
+
+						RTMP_RF_IO_WRITE32(pAd, R1);
+						RTMP_RF_IO_WRITE32(pAd, R2);
+
+						// Program R1b13 to 1, R3/b18,19 to 0, R2b18 to 0. 
+						// Set RF R2 bit18=0, R3 bit[18:19]=0
+						//if (pAd->StaCfg.bRadio == FALSE)
+						if (1)
+						{
+							RTMP_RF_IO_WRITE32(pAd, R3);
+
+							DBGPRINT(RT_DEBUG_TRACE, ("AsicTurnOffRFClk#%d(RF=%d, ) , R2=0x%08x,  R3 = 0x%08x \n",
+								Channel, pAd->RfIcType, R2, R3));
+						}
+						else
+							DBGPRINT(RT_DEBUG_TRACE, ("AsicTurnOffRFClk#%d(RF=%d, ) , R2=0x%08x \n",
+								Channel, pAd->RfIcType, R2));
+						break;
+					}
+				}
+
+				break;
+#endif // RT28xx //	
+			default:
+				DBGPRINT(RT_DEBUG_TRACE, ("AsicTurnOffRFClk#%d : Unkonwn RFIC=%d\n",
+											Channel, pAd->RfIcType));
+				break;
+		}
+	}
+}
+
+
+VOID AsicTurnOnRFClk(
+	IN PRTMP_ADAPTER pAd, 
+	IN	UCHAR			Channel) 
+{
+#ifdef RT28xx
+	// RF R2 bit 18 = 0
+	UINT32			R1 = 0, R2 = 0, R3 = 0;
+	UCHAR			index;
+	RTMP_RF_REGS	*RFRegTable;
+
+	RFRegTable = RF2850RegTable;
+#endif // RT28xx //
+
+#ifdef RT30xx
+	// The RF programming sequence is difference between 3xxx and 2xxx
+	if (IS_RT3090(pAd) || IS_RT3572(pAd))
+	{
+		return;
+	}
+#endif // RT30xx //
+
+	switch (pAd->RfIcType)
+	{
+#ifdef RT28xx	
+		case RFIC_2820:
+		case RFIC_2850:
+		case RFIC_2720:
+		case RFIC_2750:
+			for (index = 0; index < NUM_OF_2850_CHNL; index++)
+			{
+				if (Channel == RFRegTable[index].Channel)
+				{
+					R3 = pAd->LatchRfRegs.R3;
+					R3 &= 0xfff3ffff;
+					R3 |= 0x00080000;
+					RTMP_RF_IO_WRITE32(pAd, R3);
+					
+					R1 = RFRegTable[index].R1;
+					RTMP_RF_IO_WRITE32(pAd, R1);
+
+					R2 = RFRegTable[index].R2;
+					if (pAd->Antenna.field.TxPath == 1)
+					{
+						R2 |= 0x4000;	// If TXpath is 1, bit 14 = 1;
+					}
+					
+					if (pAd->Antenna.field.RxPath == 2)
+					{
+						R2 |= 0x40;	// write 1 to off Rxpath.
+					}
+					else if (pAd->Antenna.field.RxPath == 1)
+					{
+						R2 |= 0x20040;	// write 1 to off RxPath
+					}
+					RTMP_RF_IO_WRITE32(pAd, R2);
+					
+					break;
+				}
+			}
+
+			DBGPRINT(RT_DEBUG_TRACE, ("AsicTurnOnRFClk#%d(RF=%d), R2=0x%08x\n",
+						Channel, 
+						pAd->RfIcType, 
+						R2));
+			
+			break;
+#endif // RT28xx //
+		default:
+			DBGPRINT(RT_DEBUG_TRACE, ("AsicTurnOnRFClk#%d : Unknown RFIC=%d\n",
+						Channel, 
+						pAd->RfIcType));
+			break;
+	}
+
+}
+
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_cfg.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_cfg.c
new file mode 100644
index 000000000..c8a479a2d
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_cfg.c
@@ -0,0 +1,434 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+    Module Name:
+	cmm_cfg.c
+
+    Abstract:
+    Ralink WiFi Driver configuration related subroutines
+
+    Revision History:
+    Who          When          What
+    ---------    ----------    ----------------------------------------------
+*/
+
+
+
+#include "rt_config.h"
+
+
+
+INT ComputeChecksum(
+	IN UINT PIN)
+{
+	INT digit_s;
+    UINT accum = 0;
+
+	PIN *= 10;
+	accum += 3 * ((PIN / 10000000) % 10); 
+	accum += 1 * ((PIN / 1000000) % 10); 
+	accum += 3 * ((PIN / 100000) % 10); 
+	accum += 1 * ((PIN / 10000) % 10); 
+	accum += 3 * ((PIN / 1000) % 10); 
+	accum += 1 * ((PIN / 100) % 10); 
+	accum += 3 * ((PIN / 10) % 10); 
+
+	digit_s = (accum % 10);
+	return ((10 - digit_s) % 10);
+} // ComputeChecksum
+
+
+UINT GenerateWpsPinCode(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	UCHAR			apidx)
+{
+	UCHAR	macAddr[MAC_ADDR_LEN];
+	UINT 	iPin;
+	UINT	checksum;
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		NdisMoveMemory(&macAddr[0], pAd->CurrentAddress, MAC_ADDR_LEN);
+#endif // CONFIG_STA_SUPPORT //
+
+	iPin = macAddr[3] * 256 * 256 + macAddr[4] * 256 + macAddr[5];
+
+	iPin = iPin % 10000000;
+	checksum = ComputeChecksum( iPin );
+	iPin = iPin*10 + checksum;
+
+	return iPin;
+}
+
+char* GetPhyMode(
+	int Mode)
+{
+	switch(Mode)
+	{
+		case MODE_CCK:
+			return "CCK";
+
+		case MODE_OFDM:
+			return "OFDM";
+#ifdef DOT11_N_SUPPORT
+		case MODE_HTMIX:
+			return "HTMIX";
+
+		case MODE_HTGREENFIELD:
+			return "GREEN";
+#endif // DOT11_N_SUPPORT //
+		default:
+			return "N/A";
+	}
+}
+
+
+char* GetBW(
+	int BW)
+{
+	switch(BW)
+	{
+		case BW_10:
+			return "10M";
+
+		case BW_20:
+			return "20M";
+#ifdef DOT11_N_SUPPORT
+		case BW_40:
+			return "40M";
+#endif // DOT11_N_SUPPORT //
+		default:
+			return "N/A";
+	}
+}
+
+
+/* 
+    ==========================================================================
+    Description:
+        Set Country Region to pAd->CommonCfg.CountryRegion.
+        This command will not work, if the field of CountryRegion in eeprom is programmed.
+        
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+    ==========================================================================
+*/
+INT RT_CfgSetCountryRegion(
+	IN PRTMP_ADAPTER	pAd, 
+	IN PSTRING			arg,
+	IN INT				band)
+{
+	LONG region;
+	UCHAR *pCountryRegion;
+	
+	region = simple_strtol(arg, 0, 10);
+
+	if (band == BAND_24G)
+		pCountryRegion = &pAd->CommonCfg.CountryRegion;
+	else
+		pCountryRegion = &pAd->CommonCfg.CountryRegionForABand;
+	
+	// TODO: Is it neccesay for following check???
+	// Country can be set only when EEPROM not programmed
+	if (*pCountryRegion & 0x80)
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("CfgSetCountryRegion():CountryRegion in eeprom was programmed\n"));
+		return FALSE;
+	}
+
+	if((region >= 0) && 
+	   (((band == BAND_24G) && ((region <= REGION_MAXIMUM_BG_BAND) || (region == REGION_31_BG_BAND))) || 
+	    ((band == BAND_5G) && (region <= REGION_MAXIMUM_A_BAND) ))
+	  )
+	{
+		*pCountryRegion= (UCHAR) region;
+	}
+	else
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("CfgSetCountryRegion():region(%ld) out of range!\n", region));
+		return FALSE;
+	}
+
+	return TRUE;
+	
+}
+
+
+/* 
+    ==========================================================================
+    Description:
+        Set Wireless Mode
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+    ==========================================================================
+*/
+INT RT_CfgSetWirelessMode(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	INT		MaxPhyMode = PHY_11G;
+	LONG	WirelessMode;
+	
+#ifdef DOT11_N_SUPPORT
+	MaxPhyMode = PHY_11N_5G;
+#endif // DOT11_N_SUPPORT //
+		
+	WirelessMode = simple_strtol(arg, 0, 10);
+	if (WirelessMode <= MaxPhyMode)
+	{
+		pAd->CommonCfg.PhyMode = WirelessMode;
+		pAd->CommonCfg.DesiredPhyMode = WirelessMode;
+		return TRUE;
+	}
+	
+	return FALSE;
+	
+}
+
+
+INT RT_CfgSetShortSlot(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	LONG ShortSlot;
+
+	ShortSlot = simple_strtol(arg, 0, 10);
+
+	if (ShortSlot == 1)
+		pAd->CommonCfg.bUseShortSlotTime = TRUE;
+	else if (ShortSlot == 0)
+		pAd->CommonCfg.bUseShortSlotTime = FALSE;
+	else
+		return FALSE;  //Invalid argument 
+
+	return TRUE;
+}
+
+
+/* 
+    ==========================================================================
+    Description:
+        Set WEP KEY base on KeyIdx
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+    ==========================================================================
+*/
+INT	RT_CfgSetWepKey(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			keyString,
+	IN	CIPHER_KEY		*pSharedKey,
+	IN	INT				keyIdx)
+{
+	INT				KeyLen;
+	INT				i;
+	//UCHAR			CipherAlg = CIPHER_NONE;
+	BOOLEAN			bKeyIsHex = FALSE;
+
+	// TODO: Shall we do memset for the original key info??
+	memset(pSharedKey, 0, sizeof(CIPHER_KEY));
+	KeyLen = strlen(keyString);
+	switch (KeyLen)
+	{
+		case 5: //wep 40 Ascii type
+		case 13: //wep 104 Ascii type
+			bKeyIsHex = FALSE;
+			pSharedKey->KeyLen = KeyLen;
+			NdisMoveMemory(pSharedKey->Key, keyString, KeyLen);
+			break;
+			
+		case 10: //wep 40 Hex type
+		case 26: //wep 104 Hex type
+			for(i=0; i < KeyLen; i++)
+			{
+				if( !isxdigit(*(keyString+i)) )
+					return FALSE;  //Not Hex value;
+			}
+			bKeyIsHex = TRUE;
+			pSharedKey->KeyLen = KeyLen/2 ;
+			AtoH(keyString, pSharedKey->Key, pSharedKey->KeyLen);
+			break;
+			
+		default: //Invalid argument 
+			DBGPRINT(RT_DEBUG_TRACE, ("RT_CfgSetWepKey(keyIdx=%d):Invalid argument (arg=%s)\n", keyIdx, keyString));
+			return FALSE;
+	}
+
+	pSharedKey->CipherAlg = ((KeyLen % 5) ? CIPHER_WEP128 : CIPHER_WEP64);
+	DBGPRINT(RT_DEBUG_TRACE, ("RT_CfgSetWepKey:(KeyIdx=%d,type=%s, Alg=%s)\n", 
+						keyIdx, (bKeyIsHex == FALSE ? "Ascii" : "Hex"), CipherName[pSharedKey->CipherAlg]));
+
+	return TRUE;
+}
+
+
+/* 
+    ==========================================================================
+    Description:
+        Set WPA PSK key
+
+    Arguments:
+        pAdapter	Pointer to our adapter
+        keyString	WPA pre-shared key string
+        pHashStr	String used for password hash function
+        hashStrLen	Lenght of the hash string
+        pPMKBuf		Output buffer of WPAPSK key
+
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+    ==========================================================================
+*/
+INT RT_CfgSetWPAPSKKey(
+	IN RTMP_ADAPTER	*pAd, 
+	IN PSTRING		keyString,
+	IN UCHAR		*pHashStr,
+	IN INT			hashStrLen,
+	OUT PUCHAR		pPMKBuf)
+{
+	int keyLen;
+	UCHAR keyMaterial[40];
+
+	keyLen = strlen(keyString);
+	if ((keyLen < 8) || (keyLen > 64))
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("WPAPSK Key length(%d) error, required 8 ~ 64 characters!(keyStr=%s)\n", 
+									keyLen, keyString));
+		return FALSE;
+	}
+
+	memset(pPMKBuf, 0, 32);
+	if (keyLen == 64)
+	{
+	    AtoH(keyString, pPMKBuf, 32);
+	}
+	else
+	{
+	    RtmpPasswordHash(keyString, pHashStr, hashStrLen, keyMaterial);
+	    NdisMoveMemory(pPMKBuf, keyMaterial, 32);		
+	}
+
+	return TRUE;
+}
+
+INT	RT_CfgSetFixedTxPhyMode(
+	IN	PSTRING			arg)
+{
+	INT		fix_tx_mode = FIXED_TXMODE_HT;
+	UINT32	value;
+
+	if (strcmp(arg, "OFDM") == 0 || strcmp(arg, "ofdm") == 0)
+	{
+		fix_tx_mode = FIXED_TXMODE_OFDM;
+	}	
+	else if (strcmp(arg, "CCK") == 0 || strcmp(arg, "cck") == 0)
+	{
+	    fix_tx_mode = FIXED_TXMODE_CCK;
+	}
+	else if (strcmp(arg, "HT") == 0 || strcmp(arg, "ht") == 0)
+	{
+	    fix_tx_mode = FIXED_TXMODE_HT;
+	}
+	else
+	{
+		value = simple_strtol(arg, 0, 10);
+		// 1 : CCK
+		// 2 : OFDM
+		// otherwise : HT
+		if (value == FIXED_TXMODE_CCK || value == FIXED_TXMODE_OFDM)
+			fix_tx_mode = value;	
+		else
+			fix_tx_mode = FIXED_TXMODE_HT;
+	}
+
+	return fix_tx_mode;
+					
+}	
+
+INT	RT_CfgSetMacAddress(
+	IN 	PRTMP_ADAPTER 	pAd,
+	IN	PSTRING			arg)
+{
+	INT	i, mac_len;
+	
+	/* Mac address acceptable format 01:02:03:04:05:06 length 17 */
+	mac_len = strlen(arg);
+	if(mac_len != 17)  
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("%s : invalid length (%d)\n", __FUNCTION__, mac_len));
+		return FALSE;
+	}
+
+	if(strcmp(arg, "00:00:00:00:00:00") == 0)
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("%s : invalid mac setting \n", __FUNCTION__));
+		return FALSE;
+	}
+
+	for (i = 0; i < MAC_ADDR_LEN; i++)
+	{
+		AtoH(arg, &pAd->CurrentAddress[i], 1);
+		arg = arg + 3;
+	}	
+
+	pAd->bLocalAdminMAC = TRUE;
+	return TRUE;
+}
+
+INT	RT_CfgSetTxMCSProc(
+	IN	PSTRING			arg,
+	OUT	BOOLEAN			*pAutoRate)
+{
+	INT	Value = simple_strtol(arg, 0, 10);
+	INT	TxMcs;
+	
+	if ((Value >= 0 && Value <= 23) || (Value == 32)) // 3*3
+	{
+		TxMcs = Value;
+		*pAutoRate = FALSE;
+	}
+	else
+	{		
+		TxMcs = MCS_AUTO;
+		*pAutoRate = TRUE;
+	}
+
+	return TxMcs;
+
+}
+
+INT	RT_CfgSetAutoFallBack(
+	IN 	PRTMP_ADAPTER 	pAd,
+	IN	PSTRING			arg)
+{
+	TX_RTY_CFG_STRUC	tx_rty_cfg;
+	UCHAR				AutoFallBack = (UCHAR)simple_strtol(arg, 0, 10);
+
+	RTMP_IO_READ32(pAd, TX_RTY_CFG, &tx_rty_cfg.word);
+	tx_rty_cfg.field.TxautoFBEnable = (AutoFallBack) ? 1 : 0;
+	RTMP_IO_WRITE32(pAd, TX_RTY_CFG, tx_rty_cfg.word);	
+	DBGPRINT(RT_DEBUG_TRACE, ("RT_CfgSetAutoFallBack::(tx_rty_cfg=0x%x)\n", tx_rty_cfg.word));
+	return TRUE;
+}
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_cmd.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_cmd.c
new file mode 100644
index 000000000..a41bc1d9f
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_cmd.c
@@ -0,0 +1,178 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+ 
+ 	Module Name:
+	cmm_cmd.c
+
+	Abstract:
+	All command related API.
+
+	Revision History:
+	Who			When	    What
+	--------	----------  ----------------------------------------------
+	Name		Date	    Modification logs
+	Paul Lin    06-25-2004  created
+*/
+
+#include "rt_config.h"
+
+
+
+
+/*
+	========================================================================
+	
+	Routine Description:
+
+	Arguments:
+
+	Return Value:
+	
+	IRQL = 
+	
+	Note:
+	
+	========================================================================
+*/
+VOID	RTInitializeCmdQ(
+	IN	PCmdQ	cmdq)
+{
+	cmdq->head = NULL;
+	cmdq->tail = NULL;
+	cmdq->size = 0;
+	cmdq->CmdQState = RTMP_TASK_STAT_INITED;
+}
+
+
+/*
+	========================================================================
+	
+	Routine Description:
+
+	Arguments:
+
+	Return Value:
+	
+	IRQL = 
+	
+	Note:
+	
+	========================================================================
+*/
+VOID	RTThreadDequeueCmd(
+	IN	PCmdQ		cmdq,
+	OUT	PCmdQElmt	*pcmdqelmt)
+{
+	*pcmdqelmt = cmdq->head;
+	
+	if (*pcmdqelmt != NULL)
+	{
+		cmdq->head = cmdq->head->next;
+		cmdq->size--;
+		if (cmdq->size == 0)
+			cmdq->tail = NULL;
+	}
+}
+
+
+/*
+	========================================================================
+	
+	Routine Description:
+
+	Arguments:
+
+	Return Value:
+
+	IRQL = 
+	
+	Note:
+	
+	========================================================================
+*/
+NDIS_STATUS RTEnqueueInternalCmd(
+	IN PRTMP_ADAPTER	pAd,
+	IN NDIS_OID			Oid,
+	IN PVOID			pInformationBuffer,
+	IN UINT32			InformationBufferLength)	
+{
+	NDIS_STATUS	status;
+	PCmdQElmt	cmdqelmt = NULL;
+	
+
+	status = os_alloc_mem(pAd, (PUCHAR *)&cmdqelmt, sizeof(CmdQElmt));
+	if ((status != NDIS_STATUS_SUCCESS) || (cmdqelmt == NULL))
+		return (NDIS_STATUS_RESOURCES);
+	NdisZeroMemory(cmdqelmt, sizeof(CmdQElmt));
+
+	if(InformationBufferLength > 0)
+	{
+		status = os_alloc_mem(pAd, (PUCHAR *)&cmdqelmt->buffer, InformationBufferLength);
+		if ((status != NDIS_STATUS_SUCCESS) || (cmdqelmt->buffer == NULL))
+		{
+			os_free_mem(pAd, cmdqelmt);
+			return (NDIS_STATUS_RESOURCES);
+		}
+		else
+		{
+			NdisMoveMemory(cmdqelmt->buffer, pInformationBuffer, InformationBufferLength);
+			cmdqelmt->bufferlength = InformationBufferLength;
+		}
+	}
+	else
+	{
+		cmdqelmt->buffer = NULL;
+		cmdqelmt->bufferlength = 0;
+	}
+
+	cmdqelmt->command = Oid;
+	cmdqelmt->CmdFromNdis = FALSE;
+
+	if (cmdqelmt != NULL)
+	{
+		NdisAcquireSpinLock(&pAd->CmdQLock);
+		if (pAd->CmdQ.CmdQState & RTMP_TASK_CAN_DO_INSERT)
+		{
+			EnqueueCmd((&pAd->CmdQ), cmdqelmt);
+			status = NDIS_STATUS_SUCCESS;
+		}
+		else
+		{
+			status = NDIS_STATUS_FAILURE;
+		}
+		NdisReleaseSpinLock(&pAd->CmdQLock);
+
+		if (status == NDIS_STATUS_FAILURE)
+		{
+			if (cmdqelmt->buffer)
+				os_free_mem(pAd, cmdqelmt->buffer);
+			os_free_mem(pAd, cmdqelmt);
+		}
+		else
+			RTCMDUp(pAd);
+	}
+	return(NDIS_STATUS_SUCCESS);
+}
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_data.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_data.c
new file mode 100644
index 000000000..567f0f8f7
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_data.c
@@ -0,0 +1,2950 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+    Module Name:
+	cmm_data.c
+ 
+    Abstract:
+ 
+    Revision History:
+    Who          When          What
+    ---------    ----------    ----------------------------------------------
+ */
+
+ 
+#include "rt_config.h"
+
+
+UCHAR	SNAP_802_1H[] = {0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00};
+UCHAR	SNAP_BRIDGE_TUNNEL[] = {0xaa, 0xaa, 0x03, 0x00, 0x00, 0xf8};
+// Add Cisco Aironet SNAP heade for CCX2 support
+UCHAR	SNAP_AIRONET[] = {0xaa, 0xaa, 0x03, 0x00, 0x40, 0x96, 0x00, 0x00};
+UCHAR	CKIP_LLC_SNAP[] = {0xaa, 0xaa, 0x03, 0x00, 0x40, 0x96, 0x00, 0x02};
+UCHAR	EAPOL_LLC_SNAP[]= {0xaa, 0xaa, 0x03, 0x00, 0x00, 0x00, 0x88, 0x8e};
+UCHAR	EAPOL[] = {0x88, 0x8e};
+UCHAR   TPID[] = {0x81, 0x00}; /* VLAN related */
+
+UCHAR	IPX[] = {0x81, 0x37};
+UCHAR	APPLE_TALK[] = {0x80, 0xf3};
+UCHAR	RateIdToPlcpSignal[12] = {
+	 0, /* RATE_1 */	1, /* RATE_2 */ 	2, /* RATE_5_5 */	3, /* RATE_11 */	// see BBP spec
+	11, /* RATE_6 */   15, /* RATE_9 */    10, /* RATE_12 */   14, /* RATE_18 */	// see IEEE802.11a-1999 p.14
+	 9, /* RATE_24 */  13, /* RATE_36 */	8, /* RATE_48 */   12  /* RATE_54 */ }; // see IEEE802.11a-1999 p.14
+
+UCHAR	 OfdmSignalToRateId[16] = {
+	RATE_54,  RATE_54,	RATE_54,  RATE_54,	// OFDM PLCP Signal = 0,  1,  2,  3 respectively
+	RATE_54,  RATE_54,	RATE_54,  RATE_54,	// OFDM PLCP Signal = 4,  5,  6,  7 respectively
+	RATE_48,  RATE_24,	RATE_12,  RATE_6,	// OFDM PLCP Signal = 8,  9,  10, 11 respectively
+	RATE_54,  RATE_36,	RATE_18,  RATE_9,	// OFDM PLCP Signal = 12, 13, 14, 15 respectively
+};
+
+UCHAR	 OfdmRateToRxwiMCS[12] = {
+	0,  0,	0,  0,
+	0,  1,	2,  3,	// OFDM rate 6,9,12,18 = rxwi mcs 0,1,2,3
+	4,  5,	6,  7,	// OFDM rate 24,36,48,54 = rxwi mcs 4,5,6,7
+};
+UCHAR	 RxwiMCSToOfdmRate[12] = {
+	RATE_6,  RATE_9,	RATE_12,  RATE_18,
+	RATE_24,  RATE_36,	RATE_48,  RATE_54,	// OFDM rate 6,9,12,18 = rxwi mcs 0,1,2,3
+	4,  5,	6,  7,	// OFDM rate 24,36,48,54 = rxwi mcs 4,5,6,7
+};
+
+char*   MCSToMbps[] = {"1Mbps","2Mbps","5.5Mbps","11Mbps","06Mbps","09Mbps","12Mbps","18Mbps","24Mbps","36Mbps","48Mbps","54Mbps","MM-0","MM-1","MM-2","MM-3","MM-4","MM-5","MM-6","MM-7","MM-8","MM-9","MM-10","MM-11","MM-12","MM-13","MM-14","MM-15","MM-32","ee1","ee2","ee3"};
+
+UCHAR default_cwmin[]={CW_MIN_IN_BITS, CW_MIN_IN_BITS, CW_MIN_IN_BITS-1, CW_MIN_IN_BITS-2};
+//UCHAR default_cwmax[]={CW_MAX_IN_BITS, CW_MAX_IN_BITS, CW_MIN_IN_BITS, CW_MIN_IN_BITS-1};
+UCHAR default_sta_aifsn[]={3,7,2,2};
+
+UCHAR MapUserPriorityToAccessCategory[8] = {QID_AC_BE, QID_AC_BK, QID_AC_BK, QID_AC_BE, QID_AC_VI, QID_AC_VI, QID_AC_VO, QID_AC_VO};
+
+
+/*
+	========================================================================
+
+	Routine Description:
+		API for MLME to transmit management frame to AP (BSS Mode)
+	or station (IBSS Mode)
+		
+	Arguments:
+		pAd Pointer to our adapter
+		pData		Pointer to the outgoing 802.11 frame
+		Length		Size of outgoing management frame
+		
+	Return Value:
+		NDIS_STATUS_FAILURE
+		NDIS_STATUS_PENDING
+		NDIS_STATUS_SUCCESS
+
+	IRQL = PASSIVE_LEVEL
+	IRQL = DISPATCH_LEVEL
+	
+	Note:
+	
+	========================================================================
+*/
+NDIS_STATUS MiniportMMRequest(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	UCHAR			QueIdx,
+	IN	PUCHAR			pData,
+	IN	UINT			Length)
+{
+	PNDIS_PACKET	pPacket;
+	NDIS_STATUS  	Status = NDIS_STATUS_SUCCESS;
+	ULONG	 		FreeNum;
+	UCHAR			rtmpHwHdr[TXINFO_SIZE + TXWI_SIZE]; //RTMP_HW_HDR_LEN];
+#ifdef RTMP_MAC_PCI
+	unsigned long	IrqFlags = 0;
+	UCHAR			IrqState;
+#endif // RTMP_MAC_PCI //
+	BOOLEAN			bUseDataQ = FALSE;
+	int 			retryCnt = 0;
+
+	ASSERT(Length <= MGMT_DMA_BUFFER_SIZE);
+	
+	if ((QueIdx & MGMT_USE_QUEUE_FLAG) == MGMT_USE_QUEUE_FLAG)
+	{
+		bUseDataQ = TRUE;
+		QueIdx &= (~MGMT_USE_QUEUE_FLAG);
+	}
+
+#ifdef RTMP_MAC_PCI
+	// 2860C use Tx Ring
+	IrqState = pAd->irq_disabled;
+	if (pAd->MACVersion == 0x28600100)
+	{
+		QueIdx = (bUseDataQ ==TRUE ? QueIdx : 3);
+		bUseDataQ = TRUE;
+	}
+	if (bUseDataQ && (!IrqState))
+		RTMP_IRQ_LOCK(&pAd->irq_lock, IrqFlags);
+#endif // RTMP_MAC_PCI //
+
+	do
+	{
+		// Reset is in progress, stop immediately
+		if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_RESET_IN_PROGRESS) ||
+			 RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_HALT_IN_PROGRESS | fRTMP_ADAPTER_NIC_NOT_EXIST)||
+			 !RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_START_UP))
+		{
+			Status = NDIS_STATUS_FAILURE;
+			break;
+		}
+
+		// Check Free priority queue
+		// Since we use PBF Queue2 for management frame.  Its corresponding DMA ring should be using TxRing.
+#ifdef RTMP_MAC_PCI
+		if (bUseDataQ)
+		{
+			retryCnt = MAX_DATAMM_RETRY;
+			// free Tx(QueIdx) resources
+			RTMPFreeTXDUponTxDmaDone(pAd, QueIdx);
+			FreeNum = GET_TXRING_FREENO(pAd, QueIdx);
+		}
+		else
+#endif // RTMP_MAC_PCI //
+		{
+			FreeNum = GET_MGMTRING_FREENO(pAd);
+		}
+		
+		if ((FreeNum > 0))
+		{
+			// We need to reserve space for rtmp hardware header. i.e., TxWI for RT2860 and TxInfo+TxWI for RT2870
+			NdisZeroMemory(&rtmpHwHdr, (TXINFO_SIZE + TXWI_SIZE));
+			Status = RTMPAllocateNdisPacket(pAd, &pPacket, (PUCHAR)&rtmpHwHdr, (TXINFO_SIZE + TXWI_SIZE), pData, Length);
+			if (Status != NDIS_STATUS_SUCCESS)
+			{
+				DBGPRINT(RT_DEBUG_WARN, ("MiniportMMRequest (error:: can't allocate NDIS PACKET)\n"));
+				break;
+			}
+
+			//pAd->CommonCfg.MlmeTransmit.field.MODE = MODE_CCK;
+			//pAd->CommonCfg.MlmeRate = RATE_2;
+
+
+#ifdef RTMP_MAC_PCI
+			if (bUseDataQ)
+			{
+				Status = MlmeDataHardTransmit(pAd, QueIdx, pPacket);
+				retryCnt--;
+			}
+			else
+#endif // RTMP_MAC_PCI //
+				Status = MlmeHardTransmit(pAd, QueIdx, pPacket);
+			if (Status == NDIS_STATUS_SUCCESS)
+				retryCnt = 0;
+			else
+				RTMPFreeNdisPacket(pAd, pPacket);
+		}
+		else
+		{
+			pAd->RalinkCounters.MgmtRingFullCount++;
+#ifdef RTMP_MAC_PCI
+			if (bUseDataQ)
+			{
+				retryCnt--;
+				DBGPRINT(RT_DEBUG_TRACE, ("retryCnt %d\n", retryCnt));
+				if (retryCnt == 0)
+				{
+					DBGPRINT(RT_DEBUG_ERROR, ("Qidx(%d), not enough space in DataRing, MgmtRingFullCount=%ld!\n",
+											QueIdx, pAd->RalinkCounters.MgmtRingFullCount));
+				}
+			}
+#endif // RTMP_MAC_PCI //
+			DBGPRINT(RT_DEBUG_ERROR, ("Qidx(%d), not enough space in MgmtRing, MgmtRingFullCount=%ld!\n",
+										QueIdx, pAd->RalinkCounters.MgmtRingFullCount));
+		}
+	} while (retryCnt > 0);
+
+	
+#ifdef RTMP_MAC_PCI
+	if (bUseDataQ && (!IrqState))
+		RTMP_IRQ_UNLOCK(&pAd->irq_lock, IrqFlags);
+#endif // RTMP_MAC_PCI //
+
+	return Status;
+}
+
+
+
+
+/*
+	========================================================================
+
+	Routine Description:
+		Copy frame from waiting queue into relative ring buffer and set
+	appropriate ASIC register to kick hardware transmit function
+	
+	Arguments:
+		pAd Pointer to our adapter
+		pBuffer 	Pointer to	memory of outgoing frame
+		Length		Size of outgoing management frame
+		
+	Return Value:
+		NDIS_STATUS_FAILURE
+		NDIS_STATUS_PENDING
+		NDIS_STATUS_SUCCESS
+
+	IRQL = PASSIVE_LEVEL
+	IRQL = DISPATCH_LEVEL
+	
+	Note:
+	
+	========================================================================
+*/
+NDIS_STATUS MlmeHardTransmit(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	UCHAR			QueIdx,
+	IN	PNDIS_PACKET	pPacket)
+{
+	PACKET_INFO 	PacketInfo;
+	PUCHAR			pSrcBufVA;
+	UINT			SrcBufLen;
+
+
+	if ((pAd->CommonCfg.RadarDetect.RDMode != RD_NORMAL_MODE)
+#ifdef CARRIER_DETECTION_SUPPORT
+#endif // CARRIER_DETECTION_SUPPORT //
+		)
+	{
+		return NDIS_STATUS_FAILURE;
+	}
+
+	RTMP_QueryPacketInfo(pPacket, &PacketInfo, &pSrcBufVA, &SrcBufLen);
+	if (pSrcBufVA == NULL)
+		return NDIS_STATUS_FAILURE;
+
+    {
+#ifdef RTMP_MAC_PCI
+    	if ( pAd->MACVersion == 0x28600100 )
+    		return MlmeHardTransmitTxRing(pAd,QueIdx,pPacket);
+    	else
+#endif // RTMP_MAC_PCI //
+    		return MlmeHardTransmitMgmtRing(pAd,QueIdx,pPacket);
+    }
+}
+
+
+NDIS_STATUS MlmeHardTransmitMgmtRing(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	UCHAR	QueIdx,
+	IN	PNDIS_PACKET	pPacket)
+{
+	PACKET_INFO 	PacketInfo;
+	PUCHAR			pSrcBufVA;
+	UINT			SrcBufLen;
+	PHEADER_802_11	pHeader_802_11;
+	BOOLEAN 		bAckRequired, bInsertTimestamp;
+	UCHAR			MlmeRate;
+	PTXWI_STRUC 	pFirstTxWI;
+	MAC_TABLE_ENTRY	*pMacEntry = NULL;
+	UCHAR			PID;
+
+	RTMP_QueryPacketInfo(pPacket, &PacketInfo, &pSrcBufVA, &SrcBufLen);
+
+	// Make sure MGMT ring resource won't be used by other threads
+	RTMP_SEM_LOCK(&pAd->MgmtRingLock);
+	if (pSrcBufVA == NULL)
+	{
+		// The buffer shouldn't be NULL
+			RTMP_SEM_UNLOCK(&pAd->MgmtRingLock);
+		return NDIS_STATUS_FAILURE;
+	}
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+		// outgoing frame always wakeup PHY to prevent frame lost
+		if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_DOZE))
+			AsicForceWakeup(pAd, TRUE);
+	}
+#endif // CONFIG_STA_SUPPORT //
+
+	pFirstTxWI = (PTXWI_STRUC)(pSrcBufVA +  TXINFO_SIZE);
+	pHeader_802_11 = (PHEADER_802_11) (pSrcBufVA + TXINFO_SIZE + TXWI_SIZE); //TXWI_SIZE);
+	
+	if (pHeader_802_11->Addr1[0] & 0x01)
+	{
+		MlmeRate = pAd->CommonCfg.BasicMlmeRate;
+	}
+	else
+	{
+		MlmeRate = pAd->CommonCfg.MlmeRate;
+	}
+	
+	// Verify Mlme rate for a / g bands.
+	if ((pAd->LatchRfRegs.Channel > 14) && (MlmeRate < RATE_6)) // 11A band
+		MlmeRate = RATE_6;
+
+	if ((pHeader_802_11->FC.Type == BTYPE_DATA) &&
+		(pHeader_802_11->FC.SubType == SUBTYPE_QOS_NULL))
+	{
+		pMacEntry = MacTableLookup(pAd, pHeader_802_11->Addr1);
+	}
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+		// Fixed W52 with Activity scan issue in ABG_MIXED and ABGN_MIXED mode.
+		if (pAd->CommonCfg.PhyMode == PHY_11ABG_MIXED
+#ifdef DOT11_N_SUPPORT
+			|| pAd->CommonCfg.PhyMode == PHY_11ABGN_MIXED
+#endif // DOT11_N_SUPPORT //
+		)
+		{
+			if (pAd->LatchRfRegs.Channel > 14)
+				pAd->CommonCfg.MlmeTransmit.field.MODE = 1;
+			else
+				pAd->CommonCfg.MlmeTransmit.field.MODE = 0;
+		}
+	}
+#endif // CONFIG_STA_SUPPORT //
+
+	//
+	// Should not be hard code to set PwrMgmt to 0 (PWR_ACTIVE)
+	// Snice it's been set to 0 while on MgtMacHeaderInit
+	// By the way this will cause frame to be send on PWR_SAVE failed.
+	//
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+		if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS))
+		{
+			// We are in scan progress, just let the PwrMgmt bit keep as it orginally should be.
+		}
+		else
+#endif // CONFIG_STA_SUPPORT //
+			pHeader_802_11->FC.PwrMgmt = PWR_ACTIVE; // (pAd->StaCfg.Psm == PWR_SAVE);
+#ifdef CONFIG_STA_SUPPORT
+	}
+#endif // CONFIG_STA_SUPPORT //
+
+#ifdef CONFIG_STA_SUPPORT
+	//
+	// In WMM-UAPSD, mlme frame should be set psm as power saving but probe request frame
+	// Data-Null packets alse pass through MMRequest in RT2860, however, we hope control the psm bit to pass APSD
+//	if ((pHeader_802_11->FC.Type != BTYPE_DATA) && (pHeader_802_11->FC.Type != BTYPE_CNTL))
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+		if ((pHeader_802_11->FC.SubType == SUBTYPE_ACTION) ||
+			((pHeader_802_11->FC.Type == BTYPE_DATA) &&
+			((pHeader_802_11->FC.SubType == SUBTYPE_QOS_NULL) ||
+			(pHeader_802_11->FC.SubType == SUBTYPE_NULL_FUNC))))
+		{
+			if (pAd->StaCfg.Psm == PWR_SAVE)
+				pHeader_802_11->FC.PwrMgmt = PWR_SAVE;
+			else if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED) && 
+					INFRA_ON(pAd) && 
+					RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS))
+			{
+				// We are in scan progress, just let the PwrMgmt bit keep as it orginally should be.			
+			}
+			else
+			{
+				pHeader_802_11->FC.PwrMgmt = pAd->CommonCfg.bAPSDForcePowerSave;
+			}
+		}
+	}
+#endif // CONFIG_STA_SUPPORT //
+	
+
+
+
+
+	bInsertTimestamp = FALSE;
+	if (pHeader_802_11->FC.Type == BTYPE_CNTL) // must be PS-POLL
+	{
+#ifdef CONFIG_STA_SUPPORT
+		//Set PM bit in ps-poll, to fix WLK 1.2  PowerSaveMode_ext failure issue.
+		if ((pAd->OpMode == OPMODE_STA) && (pHeader_802_11->FC.SubType == SUBTYPE_PS_POLL))
+		{
+			pHeader_802_11->FC.PwrMgmt = PWR_SAVE;
+		}
+#endif // CONFIG_STA_SUPPORT //
+		bAckRequired = FALSE;
+	}
+	else // BTYPE_MGMT or BTYPE_DATA(must be NULL frame)
+	{
+		if (pHeader_802_11->Addr1[0] & 0x01) // MULTICAST, BROADCAST
+		{
+			bAckRequired = FALSE;
+			pHeader_802_11->Duration = 0;
+		}
+		else
+		{
+			bAckRequired = TRUE;
+			pHeader_802_11->Duration = RTMPCalcDuration(pAd, MlmeRate, 14);
+			if ((pHeader_802_11->FC.SubType == SUBTYPE_PROBE_RSP) && (pHeader_802_11->FC.Type == BTYPE_MGMT))
+			{
+				bInsertTimestamp = TRUE;
+				bAckRequired = FALSE; // Disable ACK to prevent retry 0x1f for Probe Response
+			}
+			else if ((pHeader_802_11->FC.SubType == SUBTYPE_PROBE_REQ) && (pHeader_802_11->FC.Type == BTYPE_MGMT))
+			{
+				bAckRequired = FALSE; // Disable ACK to prevent retry 0x1f for Probe Request
+			}
+		}
+	}
+
+	pHeader_802_11->Sequence = pAd->Sequence++;
+	if (pAd->Sequence >0xfff)
+		pAd->Sequence = 0;
+
+	// Before radar detection done, mgmt frame can not be sent but probe req
+	// Because we need to use probe req to trigger driver to send probe req in passive scan
+	if ((pHeader_802_11->FC.SubType != SUBTYPE_PROBE_REQ)
+		&& (pAd->CommonCfg.bIEEE80211H == 1)
+		&& (pAd->CommonCfg.RadarDetect.RDMode != RD_NORMAL_MODE))
+	{
+		DBGPRINT(RT_DEBUG_ERROR,("MlmeHardTransmit --> radar detect not in normal mode !!!\n"));
+//		if (!IrqState)
+		RTMP_SEM_UNLOCK(&pAd->MgmtRingLock);
+		return (NDIS_STATUS_FAILURE);
+	}
+
+
+#ifdef RT_BIG_ENDIAN
+	RTMPFrameEndianChange(pAd, (PUCHAR)pHeader_802_11, DIR_WRITE, FALSE);
+#endif
+
+	//
+	// fill scatter-and-gather buffer list into TXD. Internally created NDIS PACKET
+	// should always has only one physical buffer, and the whole frame size equals
+	// to the first scatter buffer size
+	//
+
+	// Initialize TX Descriptor
+	// For inter-frame gap, the number is for this frame and next frame
+	// For MLME rate, we will fix as 2Mb to match other vendor's implement
+//	pAd->CommonCfg.MlmeTransmit.field.MODE = 1;
+	
+// management frame doesn't need encryption. so use RESERVED_WCID no matter u are sending to specific wcid or not.
+	PID = PID_MGMT;
+
+
+	if (pMacEntry == NULL)
+	{
+		RTMPWriteTxWI(pAd, pFirstTxWI, FALSE, FALSE, bInsertTimestamp, FALSE, bAckRequired, FALSE,
+		0, RESERVED_WCID, (SrcBufLen - TXINFO_SIZE - TXWI_SIZE), PID, 0,  (UCHAR)pAd->CommonCfg.MlmeTransmit.field.MCS, IFS_BACKOFF, FALSE, &pAd->CommonCfg.MlmeTransmit);
+	}
+	else
+	{
+		/* dont use low rate to send QoS Null data frame */
+		RTMPWriteTxWI(pAd, pFirstTxWI, FALSE, FALSE,
+					bInsertTimestamp, FALSE, bAckRequired, FALSE,
+					0, pMacEntry->Aid, (SrcBufLen - TXINFO_SIZE - TXWI_SIZE),
+					pMacEntry->MaxHTPhyMode.field.MCS, 0,
+					(UCHAR)pMacEntry->MaxHTPhyMode.field.MCS,
+					IFS_BACKOFF, FALSE, &pMacEntry->MaxHTPhyMode);
+	}
+
+#ifdef RT_BIG_ENDIAN
+	RTMPWIEndianChange((PUCHAR)pFirstTxWI, TYPE_TXWI);
+#endif
+
+	// Now do hardware-depened kick out.
+	HAL_KickOutMgmtTx(pAd, QueIdx, pPacket, pSrcBufVA, SrcBufLen);
+
+	// Make sure to release MGMT ring resource
+//	if (!IrqState)
+		RTMP_SEM_UNLOCK(&pAd->MgmtRingLock);
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+/********************************************************************************
+		
+	New DeQueue Procedures.
+
+ ********************************************************************************/
+
+#define DEQUEUE_LOCK(lock, bIntContext, IrqFlags) 				\
+			do{													\
+				if (bIntContext == FALSE)						\
+				RTMP_IRQ_LOCK((lock), IrqFlags);		\
+			}while(0)
+
+#define DEQUEUE_UNLOCK(lock, bIntContext, IrqFlags)				\
+			do{													\
+				if (bIntContext == FALSE)						\
+					RTMP_IRQ_UNLOCK((lock), IrqFlags);	\
+			}while(0)
+
+
+
+
+/*
+	========================================================================
+	Tx Path design algorithm:
+		Basically, we divide the packets into four types, Broadcast/Multicast, 11N Rate(AMPDU, AMSDU, Normal), B/G Rate(ARALINK, Normal),
+		Specific Packet Type. Following show the classification rule and policy for each kinds of packets.
+				Classification Rule=>
+					Multicast: (*addr1 & 0x01) == 0x01
+					Specific : bDHCPFrame, bARPFrame, bEAPOLFrame, etc.
+					11N Rate : If peer support HT
+								(1).AMPDU  -- If TXBA is negotiated.
+								(2).AMSDU  -- If AMSDU is capable for both peer and ourself.
+											*). AMSDU can embedded in a AMPDU, but now we didn't support it.
+								(3).Normal -- Other packets which send as 11n rate.
+								
+					B/G Rate : If peer is b/g only.
+								(1).ARALINK-- If both of peer/us supprot Ralink proprietary Aggregation and the TxRate is large than RATE_6
+								(2).Normal -- Other packets which send as b/g rate.
+					Fragment:
+								The packet must be unicast, NOT A-RALINK, NOT A-MSDU, NOT 11n, then can consider about fragment.
+								
+				Classified Packet Handle Rule=>
+					Multicast:
+								No ACK, 		//pTxBlk->bAckRequired = FALSE;
+								No WMM, 		//pTxBlk->bWMM = FALSE;
+								No piggyback,   //pTxBlk->bPiggyBack = FALSE;
+								Force LowRate,  //pTxBlk->bForceLowRate = TRUE;
+					Specific :	Basically, for specific packet, we should handle it specifically, but now all specific packets are use
+									the same policy to handle it.
+								Force LowRate,  //pTxBlk->bForceLowRate = TRUE;
+								
+					11N Rate :
+								No piggyback,	//pTxBlk->bPiggyBack = FALSE;
+								
+								(1).AMSDU
+									pTxBlk->bWMM = TRUE;
+								(2).AMPDU
+									pTxBlk->bWMM = TRUE;
+								(3).Normal
+									
+					B/G Rate :
+								(1).ARALINK
+									
+								(2).Normal
+	========================================================================
+*/
+static UCHAR TxPktClassification(
+	IN RTMP_ADAPTER *pAd,
+	IN PNDIS_PACKET  pPacket)
+{
+	UCHAR			TxFrameType = TX_UNKOWN_FRAME;
+	UCHAR			Wcid;
+	MAC_TABLE_ENTRY	*pMacEntry = NULL;
+#ifdef DOT11_N_SUPPORT
+	BOOLEAN			bHTRate = FALSE;
+#endif // DOT11_N_SUPPORT //
+
+	Wcid = RTMP_GET_PACKET_WCID(pPacket);
+	if (Wcid == MCAST_WCID)
+	{	// Handle for RA is Broadcast/Multicast Address.
+		return TX_MCAST_FRAME;
+	}
+
+	// Handle for unicast packets
+	pMacEntry = &pAd->MacTab.Content[Wcid];
+	if (RTMP_GET_PACKET_LOWRATE(pPacket))
+	{	// It's a specific packet need to force low rate, i.e., bDHCPFrame, bEAPOLFrame, bWAIFrame
+		TxFrameType = TX_LEGACY_FRAME;
+	}
+#ifdef DOT11_N_SUPPORT
+	else if (IS_HT_RATE(pMacEntry))
+	{	// it's a 11n capable packet
+
+		// Depends on HTPhyMode to check if the peer support the HTRate transmission.
+		// 	Currently didn't support A-MSDU embedded in A-MPDU
+		bHTRate = TRUE;
+		if (RTMP_GET_PACKET_MOREDATA(pPacket) || (pMacEntry->PsMode == PWR_SAVE))
+			TxFrameType = TX_LEGACY_FRAME;
+#ifdef UAPSD_AP_SUPPORT
+		else if (RTMP_GET_PACKET_EOSP(pPacket))
+			TxFrameType = TX_LEGACY_FRAME;
+#endif // UAPSD_AP_SUPPORT //
+		else if((pMacEntry->TXBAbitmap & (1<<(RTMP_GET_PACKET_UP(pPacket)))) != 0)
+			return TX_AMPDU_FRAME;
+		else if(CLIENT_STATUS_TEST_FLAG(pMacEntry, fCLIENT_STATUS_AMSDU_INUSED))
+			return TX_AMSDU_FRAME;
+		else
+			TxFrameType = TX_LEGACY_FRAME;
+	}
+#endif // DOT11_N_SUPPORT //
+	else
+	{	// it's a legacy b/g packet.
+		if ((CLIENT_STATUS_TEST_FLAG(pMacEntry, fCLIENT_STATUS_AGGREGATION_CAPABLE) && pAd->CommonCfg.bAggregationCapable) &&
+			(RTMP_GET_PACKET_TXRATE(pPacket) >= RATE_6) &&
+			(!(OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_WMM_INUSED) && CLIENT_STATUS_TEST_FLAG(pMacEntry, fCLIENT_STATUS_WMM_CAPABLE))))
+		{	// if peer support Ralink Aggregation, we use it.
+			TxFrameType = TX_RALINK_FRAME;
+		}
+		else
+		{
+			TxFrameType = TX_LEGACY_FRAME;
+		}
+	}
+
+	// Currently, our fragment only support when a unicast packet send as NOT-ARALINK, NOT-AMSDU and NOT-AMPDU.
+	if ((RTMP_GET_PACKET_FRAGMENTS(pPacket) > 1)
+		 && (TxFrameType == TX_LEGACY_FRAME)
+#ifdef DOT11_N_SUPPORT
+		&& ((pMacEntry->TXBAbitmap & (1<<(RTMP_GET_PACKET_UP(pPacket)))) == 0)
+#endif // DOT11_N_SUPPORT //
+		)
+		TxFrameType = TX_FRAG_FRAME;
+
+	return TxFrameType;
+}
+
+
+BOOLEAN RTMP_FillTxBlkInfo(
+	IN RTMP_ADAPTER *pAd,
+	IN TX_BLK *pTxBlk)
+{
+	PACKET_INFO			PacketInfo;
+	PNDIS_PACKET		pPacket;
+	PMAC_TABLE_ENTRY	pMacEntry = NULL;
+
+	pPacket = pTxBlk->pPacket;
+	RTMP_QueryPacketInfo(pPacket, &PacketInfo, &pTxBlk->pSrcBufHeader, &pTxBlk->SrcBufLen);
+
+	pTxBlk->Wcid	 	 		= RTMP_GET_PACKET_WCID(pPacket);
+	pTxBlk->apidx		 		= RTMP_GET_PACKET_IF(pPacket);
+	pTxBlk->UserPriority 		= RTMP_GET_PACKET_UP(pPacket);
+	pTxBlk->FrameGap = IFS_HTTXOP;		// ASIC determine Frame Gap
+
+	if (RTMP_GET_PACKET_CLEAR_EAP_FRAME(pTxBlk->pPacket))
+		TX_BLK_SET_FLAG(pTxBlk, fTX_bClearEAPFrame);
+	else
+		TX_BLK_CLEAR_FLAG(pTxBlk, fTX_bClearEAPFrame);
+	
+	// Default to clear this flag
+	TX_BLK_CLEAR_FLAG(pTxBlk, fTX_bForceNonQoS);
+	
+	
+	if (pTxBlk->Wcid == MCAST_WCID)
+	{
+		pTxBlk->pMacEntry = NULL;
+		{
+#ifdef MCAST_RATE_SPECIFIC
+			PUCHAR pDA = GET_OS_PKT_DATAPTR(pPacket);
+			if (((*pDA & 0x01) == 0x01) && (*pDA != 0xff))
+				pTxBlk->pTransmit = &pAd->CommonCfg.MCastPhyMode;
+			else
+#endif // MCAST_RATE_SPECIFIC //
+				pTxBlk->pTransmit = &pAd->MacTab.Content[MCAST_WCID].HTPhyMode;
+		}
+		
+		TX_BLK_CLEAR_FLAG(pTxBlk, fTX_bAckRequired);	// AckRequired = FALSE, when broadcast packet in Adhoc mode.
+		//TX_BLK_SET_FLAG(pTxBlk, fTX_bForceLowRate);
+		TX_BLK_CLEAR_FLAG(pTxBlk, fTX_bAllowFrag);
+		TX_BLK_CLEAR_FLAG(pTxBlk, fTX_bWMM);
+		if (RTMP_GET_PACKET_MOREDATA(pPacket))
+		{
+			TX_BLK_SET_FLAG(pTxBlk, fTX_bMoreData);
+		}
+	}
+	else
+	{
+		pTxBlk->pMacEntry = &pAd->MacTab.Content[pTxBlk->Wcid];
+		pTxBlk->pTransmit = &pTxBlk->pMacEntry->HTPhyMode;
+
+		pMacEntry = pTxBlk->pMacEntry;
+		
+		// For all unicast packets, need Ack unless the Ack Policy is not set as NORMAL_ACK.
+		if (pAd->CommonCfg.AckPolicy[pTxBlk->QueIdx] != NORMAL_ACK)
+			TX_BLK_CLEAR_FLAG(pTxBlk, fTX_bAckRequired);
+		else
+			TX_BLK_SET_FLAG(pTxBlk, fTX_bAckRequired);
+
+#ifdef CONFIG_STA_SUPPORT
+#ifdef XLINK_SUPPORT
+		if ((pAd->OpMode == OPMODE_STA) &&
+			(ADHOC_ON(pAd)) /*&& 
+			(RX_FILTER_TEST_FLAG(pAd, fRX_FILTER_ACCEPT_PROMISCUOUS))*/)
+		{
+			if(pAd->StaCfg.PSPXlink)
+				TX_BLK_CLEAR_FLAG(pTxBlk, fTX_bAckRequired);
+		}
+#endif // XLINK_SUPPORT //
+#endif // CONFIG_STA_SUPPORT //
+
+		{
+
+#ifdef CONFIG_STA_SUPPORT
+			IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+			{
+
+
+				// If support WMM, enable it.
+				if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_WMM_INUSED) &&
+					CLIENT_STATUS_TEST_FLAG(pMacEntry, fCLIENT_STATUS_WMM_CAPABLE))
+					TX_BLK_SET_FLAG(pTxBlk, fTX_bWMM);
+		
+//				if (pAd->StaCfg.bAutoTxRateSwitch)
+//					TX_BLK_SET_FLAG(pTxBlk, fTX_AutoRateSwitch);
+			}
+#endif // CONFIG_STA_SUPPORT //
+		}
+
+		if (pTxBlk->TxFrameType == TX_LEGACY_FRAME)
+		{
+			if ( (RTMP_GET_PACKET_LOWRATE(pPacket)) ||
+                ((pAd->OpMode == OPMODE_AP) && (pMacEntry->MaxHTPhyMode.field.MODE == MODE_CCK) && (pMacEntry->MaxHTPhyMode.field.MCS == RATE_1)))
+			{	// Specific packet, i.e., bDHCPFrame, bEAPOLFrame, bWAIFrame, need force low rate.
+				pTxBlk->pTransmit = &pAd->MacTab.Content[MCAST_WCID].HTPhyMode;
+#ifdef DOT11_N_SUPPORT
+				// Modify the WMM bit for ICV issue. If we have a packet with EOSP field need to set as 1, how to handle it???
+				if (IS_HT_STA(pTxBlk->pMacEntry) &&
+					(CLIENT_STATUS_TEST_FLAG(pMacEntry, fCLIENT_STATUS_RALINK_CHIPSET)) &&
+					((pAd->CommonCfg.bRdg == TRUE) && CLIENT_STATUS_TEST_FLAG(pMacEntry, fCLIENT_STATUS_RDG_CAPABLE)))
+				{
+					TX_BLK_CLEAR_FLAG(pTxBlk, fTX_bWMM);
+					TX_BLK_SET_FLAG(pTxBlk, fTX_bForceNonQoS);
+				}
+#endif // DOT11_N_SUPPORT //
+			}
+			
+#ifdef DOT11_N_SUPPORT
+			if ( (IS_HT_RATE(pMacEntry) == FALSE) &&
+				(CLIENT_STATUS_TEST_FLAG(pMacEntry, fCLIENT_STATUS_PIGGYBACK_CAPABLE)))
+			{	// Currently piggy-back only support when peer is operate in b/g mode.
+				TX_BLK_SET_FLAG(pTxBlk, fTX_bPiggyBack);
+			}
+#endif // DOT11_N_SUPPORT //
+
+			if (RTMP_GET_PACKET_MOREDATA(pPacket))
+			{
+				TX_BLK_SET_FLAG(pTxBlk, fTX_bMoreData);
+			}
+#ifdef UAPSD_AP_SUPPORT
+			if (RTMP_GET_PACKET_EOSP(pPacket))
+			{
+				TX_BLK_SET_FLAG(pTxBlk, fTX_bWMM_UAPSD_EOSP);
+			}
+#endif // UAPSD_AP_SUPPORT //
+		}
+		else if (pTxBlk->TxFrameType == TX_FRAG_FRAME)
+		{
+			TX_BLK_SET_FLAG(pTxBlk, fTX_bAllowFrag);
+		}
+		
+		pMacEntry->DebugTxCount++;
+	}
+
+#ifdef CONFIG_STA_SUPPORT
+	pAd->LastTxRate = (USHORT)pTxBlk->pTransmit->word;
+#endif // CONFIG_STA_SUPPORT //
+
+	return TRUE;
+}
+
+
+BOOLEAN CanDoAggregateTransmit(
+	IN RTMP_ADAPTER *pAd,
+	IN NDIS_PACKET *pPacket,
+	IN TX_BLK		*pTxBlk)
+{
+
+	//DBGPRINT(RT_DEBUG_TRACE, ("Check if can do aggregation! TxFrameType=%d!\n", pTxBlk->TxFrameType));
+	
+	if (RTMP_GET_PACKET_WCID(pPacket) == MCAST_WCID)
+		return FALSE;
+
+	if (RTMP_GET_PACKET_DHCP(pPacket) ||
+		RTMP_GET_PACKET_EAPOL(pPacket) ||
+		RTMP_GET_PACKET_WAI(pPacket))
+		return FALSE;
+	
+	if ((pTxBlk->TxFrameType == TX_AMSDU_FRAME) &&
+		((pTxBlk->TotalFrameLen + GET_OS_PKT_LEN(pPacket))> (RX_BUFFER_AGGRESIZE - 100)))
+	{	// For AMSDU, allow the packets with total length < max-amsdu size
+		return FALSE;
+	}
+	
+	if ((pTxBlk->TxFrameType == TX_RALINK_FRAME) &&
+		(pTxBlk->TxPacketList.Number == 2))
+	{	// For RALINK-Aggregation, allow two frames in one batch.
+		return FALSE;
+	}
+
+#ifdef CONFIG_STA_SUPPORT
+	if ((INFRA_ON(pAd)) && (pAd->OpMode == OPMODE_STA)) // must be unicast to AP
+		return TRUE;
+	else
+#endif // CONFIG_STA_SUPPORT //
+		return FALSE;
+	
+}
+
+
+/*
+	========================================================================
+
+	Routine Description:
+		To do the enqueue operation and extract the first item of waiting
+		list. If a number of available shared memory segments could meet
+		the request of extracted item, the extracted item will be fragmented
+		into shared memory segments.
+	
+	Arguments:
+		pAd Pointer to our adapter
+		pQueue		Pointer to Waiting Queue
+		
+	Return Value:
+		None
+
+	IRQL = DISPATCH_LEVEL
+	
+	Note:
+	
+	========================================================================
+*/
+VOID RTMPDeQueuePacket(
+	IN  PRTMP_ADAPTER   pAd,
+	IN  BOOLEAN         bIntContext,
+	IN  UCHAR			QIdx, /* BulkOutPipeId */
+	IN  UCHAR           Max_Tx_Packets)
+{
+	PQUEUE_ENTRY    pEntry = NULL;
+	PNDIS_PACKET 	pPacket;
+	NDIS_STATUS     Status = NDIS_STATUS_SUCCESS;
+	UCHAR           Count=0;
+	PQUEUE_HEADER   pQueue;
+	ULONG           FreeNumber[NUM_OF_TX_RING];
+	UCHAR			QueIdx, sQIdx, eQIdx;
+	unsigned long	IrqFlags = 0;
+	BOOLEAN			hasTxDesc = FALSE;
+	TX_BLK			TxBlk;
+	TX_BLK			*pTxBlk;
+
+#ifdef DBG_DIAGNOSE
+	BOOLEAN			firstRound;
+	RtmpDiagStruct	*pDiagStruct = &pAd->DiagStruct;
+#endif
+
+
+	if (QIdx == NUM_OF_TX_RING)
+	{
+		sQIdx = 0;
+		eQIdx = 3;	// 4 ACs, start from 0.
+	}
+	else
+	{
+		sQIdx = eQIdx = QIdx;
+	}
+
+	for (QueIdx=sQIdx; QueIdx <= eQIdx; QueIdx++)
+	{
+		Count=0;
+
+		RTMP_START_DEQUEUE(pAd, QueIdx, IrqFlags);
+
+#ifdef DBG_DIAGNOSE
+		firstRound = ((QueIdx == 0) ? TRUE : FALSE);
+#endif // DBG_DIAGNOSE //
+
+		while (1)
+		{
+			if ((RTMP_TEST_FLAG(pAd, (fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS |
+										fRTMP_ADAPTER_RADIO_OFF |
+										fRTMP_ADAPTER_RESET_IN_PROGRESS |
+										fRTMP_ADAPTER_HALT_IN_PROGRESS |
+										fRTMP_ADAPTER_NIC_NOT_EXIST))))
+			{
+				RTMP_STOP_DEQUEUE(pAd, QueIdx, IrqFlags);
+				return;
+			}
+			
+			if (Count >= Max_Tx_Packets)
+				break;
+			
+			DEQUEUE_LOCK(&pAd->irq_lock, bIntContext, IrqFlags);
+			if (&pAd->TxSwQueue[QueIdx] == NULL)
+			{
+#ifdef DBG_DIAGNOSE
+				if (firstRound == TRUE)
+					pDiagStruct->TxSWQueCnt[pDiagStruct->ArrayCurIdx][0]++;
+#endif // DBG_DIAGNOSE //
+				DEQUEUE_UNLOCK(&pAd->irq_lock, bIntContext, IrqFlags);
+				break;
+			}
+
+#ifdef RTMP_MAC_PCI
+			FreeNumber[QueIdx] = GET_TXRING_FREENO(pAd, QueIdx);
+
+#ifdef DBG_DIAGNOSE
+			if (firstRound == TRUE)
+			{
+				UCHAR	txDescNumLevel, txSwQNumLevel;
+
+				txDescNumLevel = (TX_RING_SIZE - FreeNumber[QueIdx]); // Number of occupied hw desc.
+				txDescNumLevel = ((txDescNumLevel <=15) ? txDescNumLevel : 15);
+				pDiagStruct->TxDescCnt[pDiagStruct->ArrayCurIdx][txDescNumLevel]++;
+
+				txSwQNumLevel = ((pAd->TxSwQueue[QueIdx].Number <=7) ? pAd->TxSwQueue[QueIdx].Number : 8);
+				pDiagStruct->TxSWQueCnt[pDiagStruct->ArrayCurIdx][txSwQNumLevel]++;
+
+				firstRound = FALSE;
+			}
+#endif // DBG_DIAGNOSE //
+
+			if (FreeNumber[QueIdx] <= 5)
+			{
+				// free Tx(QueIdx) resources
+				RTMPFreeTXDUponTxDmaDone(pAd, QueIdx);
+				FreeNumber[QueIdx] = GET_TXRING_FREENO(pAd, QueIdx);
+			}
+#endif // RTMP_MAC_PCI //
+
+			// probe the Queue Head
+			pQueue = &pAd->TxSwQueue[QueIdx];
+			if ((pEntry = pQueue->Head) == NULL)
+			{
+				DEQUEUE_UNLOCK(&pAd->irq_lock, bIntContext, IrqFlags);
+				break;
+			}
+
+			pTxBlk = &TxBlk;
+			NdisZeroMemory((PUCHAR)pTxBlk, sizeof(TX_BLK));
+			//InitializeQueueHeader(&pTxBlk->TxPacketList);		// Didn't need it because we already memzero it.
+			pTxBlk->QueIdx = QueIdx;
+	
+#ifdef VENDOR_FEATURE1_SUPPORT
+			pTxBlk->HeaderBuf = pTxBlk->HeaderBuffer;
+#endif // VENDOR_FEATURE1_SUPPORT //
+
+			pPacket = QUEUE_ENTRY_TO_PACKET(pEntry);
+
+			
+			// Early check to make sure we have enoguh Tx Resource.
+			hasTxDesc = RTMP_HAS_ENOUGH_FREE_DESC(pAd, pTxBlk, FreeNumber[QueIdx], pPacket);
+			if (!hasTxDesc)
+			{
+				pAd->PrivateInfo.TxRingFullCnt++;
+
+				DEQUEUE_UNLOCK(&pAd->irq_lock, bIntContext, IrqFlags);
+				
+				break;
+			}
+
+			pTxBlk->TxFrameType = TxPktClassification(pAd, pPacket);
+			pEntry = RemoveHeadQueue(pQueue);
+			pTxBlk->TotalFrameNum++;
+			pTxBlk->TotalFragNum += RTMP_GET_PACKET_FRAGMENTS(pPacket);	// The real fragment number maybe vary
+			pTxBlk->TotalFrameLen += GET_OS_PKT_LEN(pPacket);
+			pTxBlk->pPacket = pPacket;
+			InsertTailQueue(&pTxBlk->TxPacketList, PACKET_TO_QUEUE_ENTRY(pPacket));
+			
+			if (pTxBlk->TxFrameType == TX_RALINK_FRAME || pTxBlk->TxFrameType == TX_AMSDU_FRAME)
+			{
+				// Enhance SW Aggregation Mechanism
+				if (NEED_QUEUE_BACK_FOR_AGG(pAd, QueIdx, FreeNumber[QueIdx], pTxBlk->TxFrameType))
+				{
+					InsertHeadQueue(pQueue, PACKET_TO_QUEUE_ENTRY(pPacket));
+					DEQUEUE_UNLOCK(&pAd->irq_lock, bIntContext, IrqFlags);
+					break;
+				}
+
+				do{
+					if((pEntry = pQueue->Head) == NULL)
+						break;
+
+					// For TX_AMSDU_FRAME/TX_RALINK_FRAME, Need to check if next pakcet can do aggregation.
+					pPacket = QUEUE_ENTRY_TO_PACKET(pEntry);
+					FreeNumber[QueIdx] = GET_TXRING_FREENO(pAd, QueIdx);
+					hasTxDesc = RTMP_HAS_ENOUGH_FREE_DESC(pAd, pTxBlk, FreeNumber[QueIdx], pPacket);
+					if ((hasTxDesc == FALSE) || (CanDoAggregateTransmit(pAd, pPacket, pTxBlk) == FALSE))
+						break;
+
+					//Remove the packet from the TxSwQueue and insert into pTxBlk
+					pEntry = RemoveHeadQueue(pQueue);
+					ASSERT(pEntry);
+					pPacket = QUEUE_ENTRY_TO_PACKET(pEntry);
+					pTxBlk->TotalFrameNum++;
+					pTxBlk->TotalFragNum += RTMP_GET_PACKET_FRAGMENTS(pPacket);	// The real fragment number maybe vary
+					pTxBlk->TotalFrameLen += GET_OS_PKT_LEN(pPacket);
+					InsertTailQueue(&pTxBlk->TxPacketList, PACKET_TO_QUEUE_ENTRY(pPacket));
+				}while(1);
+
+				if (pTxBlk->TxPacketList.Number == 1)
+					pTxBlk->TxFrameType = TX_LEGACY_FRAME;
+			}
+
+					
+			Count += pTxBlk->TxPacketList.Number;
+
+
+				// Do HardTransmit now.
+#ifdef CONFIG_STA_SUPPORT
+			IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+				Status = STAHardTransmit(pAd, pTxBlk, QueIdx);
+#endif // CONFIG_STA_SUPPORT //
+
+#ifdef RTMP_MAC_PCI
+			DEQUEUE_UNLOCK(&pAd->irq_lock, bIntContext, IrqFlags);
+			// static rate also need NICUpdateFifoStaCounters() function.
+			//if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_TX_RATE_SWITCH_ENABLED))
+				NICUpdateFifoStaCounters(pAd);
+#endif // RTMP_MAC_PCI //
+
+		}
+
+		RTMP_STOP_DEQUEUE(pAd, QueIdx, IrqFlags);
+
+		
+#ifdef BLOCK_NET_IF
+		if ((pAd->blockQueueTab[QueIdx].SwTxQueueBlockFlag == TRUE)
+			&& (pAd->TxSwQueue[QueIdx].Number < 1))
+		{
+			releaseNetIf(&pAd->blockQueueTab[QueIdx]);
+		}
+#endif // BLOCK_NET_IF //
+
+	}
+
+}
+
+
+/*
+	========================================================================
+
+	Routine Description:
+		Calculates the duration which is required to transmit out frames
+	with given size and specified rate.
+		
+	Arguments:
+		pAd 	Pointer to our adapter
+		Rate			Transmit rate
+		Size			Frame size in units of byte
+		
+	Return Value:
+		Duration number in units of usec
+
+	IRQL = PASSIVE_LEVEL
+	IRQL = DISPATCH_LEVEL
+	
+	Note:
+	
+	========================================================================
+*/
+USHORT	RTMPCalcDuration(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	UCHAR			Rate,
+	IN	ULONG			Size)
+{
+	ULONG	Duration = 0;
+
+	if (Rate < RATE_FIRST_OFDM_RATE) // CCK
+	{
+		if ((Rate > RATE_1) && OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_SHORT_PREAMBLE_INUSED))
+			Duration = 96;	// 72+24 preamble+plcp
+		else
+			Duration = 192; // 144+48 preamble+plcp
+
+		Duration += (USHORT)((Size << 4) / RateIdTo500Kbps[Rate]);
+		if ((Size << 4) % RateIdTo500Kbps[Rate])
+			Duration ++;
+	}
+	else if (Rate <= RATE_LAST_OFDM_RATE)// OFDM rates
+	{
+		Duration = 20 + 6;		// 16+4 preamble+plcp + Signal Extension
+		Duration += 4 * (USHORT)((11 + Size * 4) / RateIdTo500Kbps[Rate]);
+		if ((11 + Size * 4) % RateIdTo500Kbps[Rate])
+			Duration += 4;
+	}
+	else	//mimo rate
+	{
+		Duration = 20 + 6;		// 16+4 preamble+plcp + Signal Extension
+	}
+	
+	return (USHORT)Duration;
+}
+
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Calculates the duration which is required to transmit out frames
+	with given size and specified rate.
+					  
+	Arguments:
+		pTxWI		Pointer to head of each MPDU to HW.
+		Ack 		Setting for Ack requirement bit
+		Fragment	Setting for Fragment bit
+		RetryMode	Setting for retry mode
+		Ifs 		Setting for IFS gap
+		Rate		Setting for transmit rate
+		Service 	Setting for service
+		Length		Frame length
+		TxPreamble	Short or Long preamble when using CCK rates
+		QueIdx - 0-3, according to 802.11e/d4.4 June/2003
+		
+	Return Value:
+		None
+		
+	IRQL = PASSIVE_LEVEL
+	IRQL = DISPATCH_LEVEL
+	
+    See also : BASmartHardTransmit()    !!!
+	
+	========================================================================
+*/
+VOID RTMPWriteTxWI(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PTXWI_STRUC 	pOutTxWI,
+	IN	BOOLEAN			FRAG,
+	IN	BOOLEAN			CFACK,
+	IN	BOOLEAN			InsTimestamp,
+	IN	BOOLEAN 		AMPDU,
+	IN	BOOLEAN 		Ack,
+	IN	BOOLEAN 		NSeq,		// HW new a sequence.
+	IN	UCHAR			BASize,
+	IN	UCHAR			WCID,
+	IN	ULONG			Length,
+	IN	UCHAR 			PID,
+	IN	UCHAR			TID,
+	IN	UCHAR			TxRate,
+	IN	UCHAR			Txopmode,
+	IN	BOOLEAN			CfAck,
+	IN	HTTRANSMIT_SETTING	*pTransmit)
+{
+	PMAC_TABLE_ENTRY	pMac = NULL;
+	TXWI_STRUC 		TxWI;
+	PTXWI_STRUC 	pTxWI;
+
+	if (WCID < MAX_LEN_OF_MAC_TABLE)
+		pMac = &pAd->MacTab.Content[WCID];
+
+	//
+	// Always use Long preamble before verifiation short preamble functionality works well.
+	// Todo: remove the following line if short preamble functionality works
+	//
+	OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_SHORT_PREAMBLE_INUSED);
+	NdisZeroMemory(&TxWI, TXWI_SIZE);
+	pTxWI = &TxWI;
+
+	pTxWI->FRAG= FRAG;
+
+	pTxWI->CFACK = CFACK;
+	pTxWI->TS= InsTimestamp;
+	pTxWI->AMPDU = AMPDU;
+	pTxWI->ACK = Ack;
+	pTxWI->txop= Txopmode;
+	
+	pTxWI->NSEQ = NSeq;
+	// John tune the performace with Intel Client in 20 MHz performance
+#ifdef DOT11_N_SUPPORT
+	BASize = pAd->CommonCfg.TxBASize;
+	if (pAd->MACVersion == 0x28720200)
+	{
+		if( BASize >13 )
+			BASize =13;
+	}
+	else
+	{
+		if( BASize >7 )
+			BASize =7;
+	}
+	pTxWI->BAWinSize = BASize;
+	pTxWI->ShortGI = pTransmit->field.ShortGI;
+	pTxWI->STBC = pTransmit->field.STBC;
+#endif // DOT11_N_SUPPORT //
+		
+	pTxWI->WirelessCliID = WCID;
+	pTxWI->MPDUtotalByteCount = Length;
+	pTxWI->PacketId = PID;
+	
+	// If CCK or OFDM, BW must be 20
+	pTxWI->BW = (pTransmit->field.MODE <= MODE_OFDM) ? (BW_20) : (pTransmit->field.BW);
+#ifdef DOT11_N_SUPPORT
+#ifdef DOT11N_DRAFT3
+	if (pTxWI->BW)
+		pTxWI->BW = (pAd->CommonCfg.AddHTInfo.AddHtInfo.RecomWidth == 0) ? (BW_20) : (pTransmit->field.BW);
+#endif // DOT11N_DRAFT3 //
+#endif // DOT11_N_SUPPORT //
+	
+	pTxWI->MCS = pTransmit->field.MCS;
+	pTxWI->PHYMODE = pTransmit->field.MODE;
+	pTxWI->CFACK = CfAck;
+
+#ifdef DOT11_N_SUPPORT
+	if (pMac)
+	{
+        if (pAd->CommonCfg.bMIMOPSEnable)
+        {
+    		if ((pMac->MmpsMode == MMPS_DYNAMIC) && (pTransmit->field.MCS > 7))
+			{
+				// Dynamic MIMO Power Save Mode
+				pTxWI->MIMOps = 1;
+			}
+			else if (pMac->MmpsMode == MMPS_STATIC)
+			{
+				// Static MIMO Power Save Mode
+				if (pTransmit->field.MODE >= MODE_HTMIX && pTransmit->field.MCS > 7)
+				{
+					pTxWI->MCS = 7;
+					pTxWI->MIMOps = 0;
+				}
+			}
+        }
+		//pTxWI->MIMOps = (pMac->PsMode == PWR_MMPS)? 1:0;
+		if (pMac->bIAmBadAtheros && (pMac->WepStatus != Ndis802_11WEPDisabled))
+		{
+			pTxWI->MpduDensity = 7;
+		}
+		else
+		{
+		pTxWI->MpduDensity = pMac->MpduDensity;
+	}
+	}
+#endif // DOT11_N_SUPPORT //
+
+
+	pTxWI->PacketId = pTxWI->MCS;
+	NdisMoveMemory(pOutTxWI, &TxWI, sizeof(TXWI_STRUC));
+}
+
+
+VOID RTMPWriteTxWI_Data(
+	IN	PRTMP_ADAPTER		pAd,
+	IN	OUT PTXWI_STRUC		pTxWI,
+	IN	TX_BLK				*pTxBlk)
+{
+	HTTRANSMIT_SETTING	*pTransmit;
+	PMAC_TABLE_ENTRY	pMacEntry;
+#ifdef DOT11_N_SUPPORT
+	UCHAR				BASize;
+#endif // DOT11_N_SUPPORT //
+
+
+	ASSERT(pTxWI);
+
+	pTransmit = pTxBlk->pTransmit;
+	pMacEntry = pTxBlk->pMacEntry;
+
+
+	//
+	// Always use Long preamble before verifiation short preamble functionality works well.
+	// Todo: remove the following line if short preamble functionality works
+	//
+	OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_SHORT_PREAMBLE_INUSED);
+	NdisZeroMemory(pTxWI, TXWI_SIZE);
+	
+	pTxWI->FRAG		= TX_BLK_TEST_FLAG(pTxBlk, fTX_bAllowFrag);
+	pTxWI->ACK		= TX_BLK_TEST_FLAG(pTxBlk, fTX_bAckRequired);
+	pTxWI->txop		= pTxBlk->FrameGap;
+
+#ifdef CONFIG_STA_SUPPORT
+#ifdef QOS_DLS_SUPPORT
+	if (pMacEntry &&
+		(pAd->StaCfg.BssType == BSS_INFRA) &&
+		IS_ENTRY_DLS(pMacEntry))
+		pTxWI->WirelessCliID = BSSID_WCID;
+	else
+#endif // QOS_DLS_SUPPORT //
+#endif // CONFIG_STA_SUPPORT //
+	pTxWI->WirelessCliID		= pTxBlk->Wcid;
+
+	pTxWI->MPDUtotalByteCount	= pTxBlk->MpduHeaderLen + pTxBlk->SrcBufLen;
+	pTxWI->CFACK				= TX_BLK_TEST_FLAG(pTxBlk, fTX_bPiggyBack);
+
+	// If CCK or OFDM, BW must be 20
+	pTxWI->BW = (pTransmit->field.MODE <= MODE_OFDM) ? (BW_20) : (pTransmit->field.BW);
+#ifdef DOT11_N_SUPPORT
+#ifdef DOT11N_DRAFT3
+	if (pTxWI->BW)
+		pTxWI->BW = (pAd->CommonCfg.AddHTInfo.AddHtInfo.RecomWidth == 0) ? (BW_20) : (pTransmit->field.BW);
+#endif // DOT11N_DRAFT3 //
+	pTxWI->AMPDU	= ((pTxBlk->TxFrameType == TX_AMPDU_FRAME) ? TRUE : FALSE);
+
+	// John tune the performace with Intel Client in 20 MHz performance
+	BASize = pAd->CommonCfg.TxBASize;
+	if((pTxBlk->TxFrameType == TX_AMPDU_FRAME) && (pMacEntry))
+	{
+		UCHAR		RABAOriIdx = 0;	//The RA's BA Originator table index.
+					
+		RABAOriIdx = pTxBlk->pMacEntry->BAOriWcidArray[pTxBlk->UserPriority];
+		BASize = pAd->BATable.BAOriEntry[RABAOriIdx].BAWinSize;
+	}
+
+
+#ifdef RT2883_TEMP_PATCH
+	if (pTxBlk->TxSndgPkt == SNDG_TYPE_SOUNGING)
+	{
+		pTxWI->Sounding = 1;
+		DBGPRINT(RT_DEBUG_TRACE, ("ETxBF in RTMPWriteTxWI_Data(): sending normal sounding, eTxBF=%d\n", pTxWI->eTxBF));
+	}
+	else if (pTxBlk->TxSndgPkt == SNDG_TYPE_NDP)
+	{
+		pTxWI->NDPSndBW = pTxBlk->TxNDPSndgBW;
+		if (pTxBlk->TxNDPSndgMcs>=16)
+			pTxWI->NDPSndRate = 2;
+		else if (pTxBlk->TxNDPSndgMcs>=8)
+			pTxWI->NDPSndRate = 1;
+		else
+			pTxWI->NDPSndRate = 0;
+		DBGPRINT(RT_DEBUG_TRACE, ("ETxBF in RTMPWriteTxWI_Data(): sending ndp sounding, NDPSndBW=%d, NDPSndRate=%d, eTxBF=%d\n", pTxWI->NDPSndBW, pTxWI->NDPSndRate, pTxWI->eTxBF));
+	}
+	else
+	{
+	
+//		if (pMacEntry->)
+//		#if defined(ETXBF_EN_COND) && ((ETXBF_EN_COND == 1) || (ETXBF_EN_COND == 2))
+//			pTxWI->eTxBF = 1;
+//		#else
+			if (pMacEntry && (pMacEntry->mrqCnt >0) && (pMacEntry->toTxMrq == TRUE)){
+				pTxWI->eTxBF = ~(pTransmit->field.TxBF);
+//				DBGPRINT_RAW(RT_DEBUG_TRACE,("ETxBF in AP_AMPDU_Frame_Tx(): pTxBlk->pTransmit->field.TxBF = %d, pMacEntry->HTPhyMode=%d\n", pTxBlk->pTransmit->field.TxBF, pMacEntry->HTPhyMode.Txbf));    	
+			} else			
+				pTxWI->eTxBF = pTransmit->field.TxBF;
+//		#endif
+//		DBGPRINT(RT_DEBUG_TRACE, ("ETxBF in RTMPWriteTxWI_Data(): pTransmit->field.TxBF=%d, pTxWI->eTxBF =%d\n", pTransmit->field.TxBF, pTxWI->eTxBF));
+	}
+#endif // RT2883_TEMP_PATCH //
+
+
+	pTxWI->BAWinSize = BASize;
+	pTxWI->ShortGI = pTransmit->field.ShortGI;
+	pTxWI->STBC = pTransmit->field.STBC;
+#endif // DOT11_N_SUPPORT //
+	
+	pTxWI->MCS = pTransmit->field.MCS;
+	pTxWI->PHYMODE = pTransmit->field.MODE;
+
+
+#ifdef DOT11_N_SUPPORT
+	if (pMacEntry)
+	{
+		if ((pMacEntry->MmpsMode == MMPS_DYNAMIC) && (pTransmit->field.MCS > 7))
+		{
+			// Dynamic MIMO Power Save Mode
+			pTxWI->MIMOps = 1;
+		}
+		else if (pMacEntry->MmpsMode == MMPS_STATIC)
+		{
+			// Static MIMO Power Save Mode
+			if (pTransmit->field.MODE >= MODE_HTMIX && pTransmit->field.MCS > 7)
+			{
+				pTxWI->MCS = 7;
+				pTxWI->MIMOps = 0;
+			}
+		}
+		
+		if (pMacEntry->bIAmBadAtheros && (pMacEntry->WepStatus != Ndis802_11WEPDisabled))
+		{
+			pTxWI->MpduDensity = 7;
+		}
+		else
+		{
+		pTxWI->MpduDensity = pMacEntry->MpduDensity;
+	}
+	}
+#endif // DOT11_N_SUPPORT //
+	
+#ifdef DBG_DIAGNOSE
+		if (pTxBlk->QueIdx== 0)
+		{
+			pAd->DiagStruct.TxDataCnt[pAd->DiagStruct.ArrayCurIdx]++;
+			pAd->DiagStruct.TxMcsCnt[pAd->DiagStruct.ArrayCurIdx][pTxWI->MCS]++;
+		}
+#endif // DBG_DIAGNOSE //
+
+	// for rate adapation
+	pTxWI->PacketId = pTxWI->MCS;
+#ifdef INF_AMAZON_SE
+/*Iverson patch for WMM A5-T07 ,WirelessStaToWirelessSta do not bulk out aggregate */
+	if( RTMP_GET_PACKET_NOBULKOUT(pTxBlk->pPacket))
+	{
+		if(pTxWI->PHYMODE == MODE_CCK)
+		{
+			pTxWI->PacketId = 6;
+		}
+	}	
+#endif // INF_AMAZON_SE //	
+
+}
+
+
+VOID RTMPWriteTxWI_Cache(
+	IN	PRTMP_ADAPTER		pAd,
+	IN	OUT PTXWI_STRUC		pTxWI,
+	IN	TX_BLK				*pTxBlk)
+{
+	PHTTRANSMIT_SETTING	/*pTxHTPhyMode,*/ pTransmit;
+	PMAC_TABLE_ENTRY	pMacEntry;
+	
+	//
+	// update TXWI
+	//
+	pMacEntry = pTxBlk->pMacEntry;
+	pTransmit = pTxBlk->pTransmit;
+	
+	//if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_TX_RATE_SWITCH_ENABLED))
+	//if (RTMPCheckEntryEnableAutoRateSwitch(pAd, pMacEntry))
+	//if (TX_BLK_TEST_FLAG(pTxBlk, fTX_AutoRateSwitch))
+	if (pMacEntry->bAutoTxRateSwitch)
+	{
+		pTxWI->txop = IFS_HTTXOP;
+
+		// If CCK or OFDM, BW must be 20
+		pTxWI->BW = (pTransmit->field.MODE <= MODE_OFDM) ? (BW_20) : (pTransmit->field.BW);
+		pTxWI->ShortGI = pTransmit->field.ShortGI;
+		pTxWI->STBC = pTransmit->field.STBC;
+
+		pTxWI->MCS = pTransmit->field.MCS;
+		pTxWI->PHYMODE = pTransmit->field.MODE;
+
+		// set PID for TxRateSwitching
+		pTxWI->PacketId = pTransmit->field.MCS;
+	}
+
+#ifdef DOT11_N_SUPPORT
+	pTxWI->AMPDU = ((pMacEntry->NoBADataCountDown == 0) ? TRUE: FALSE);
+	pTxWI->MIMOps = 0;
+
+#ifdef DOT11N_DRAFT3
+	if (pTxWI->BW)
+		pTxWI->BW = (pAd->CommonCfg.AddHTInfo.AddHtInfo.RecomWidth == 0) ? (BW_20) : (pTransmit->field.BW);
+#endif // DOT11N_DRAFT3 //
+
+    if (pAd->CommonCfg.bMIMOPSEnable)
+    {
+		// MIMO Power Save Mode
+		if ((pMacEntry->MmpsMode == MMPS_DYNAMIC) && (pTransmit->field.MCS > 7))
+		{
+			// Dynamic MIMO Power Save Mode
+			pTxWI->MIMOps = 1;
+		}
+		else if (pMacEntry->MmpsMode == MMPS_STATIC)
+		{
+			// Static MIMO Power Save Mode
+			if ((pTransmit->field.MODE >= MODE_HTMIX) && (pTransmit->field.MCS > 7))
+			{
+				pTxWI->MCS = 7;
+				pTxWI->MIMOps = 0;
+			}
+		}
+    }
+#endif // DOT11_N_SUPPORT //
+
+#ifdef DBG_DIAGNOSE
+	if (pTxBlk->QueIdx== 0)
+	{
+		pAd->DiagStruct.TxDataCnt[pAd->DiagStruct.ArrayCurIdx]++;
+		pAd->DiagStruct.TxMcsCnt[pAd->DiagStruct.ArrayCurIdx][pTxWI->MCS]++;
+	}
+#endif // DBG_DIAGNOSE //
+
+#ifdef RT2883_TEMP_PATCH
+	if (pTxBlk->TxSndgPkt == SNDG_TYPE_SOUNGING)
+	{
+		pTxWI->Sounding = 1;
+		pTxWI->eTxBF = 0;
+		pTxWI->iTxBF = 0;
+		DBGPRINT(RT_DEBUG_TRACE, ("ETxBF in RTMPWriteTxWI_Cache(): sending normal sounding, eTxBF=%d\n", pTxWI->eTxBF));
+	}
+	else if (pTxBlk->TxSndgPkt == SNDG_TYPE_NDP)
+	{
+		pTxWI->NDPSndBW = pTxBlk->TxNDPSndgBW;
+		if (pTxBlk->TxNDPSndgMcs>=16)
+			pTxWI->NDPSndRate = 2;
+		else if (pTxBlk->TxNDPSndgMcs>=8)
+			pTxWI->NDPSndRate = 1;
+		else
+			pTxWI->NDPSndRate = 0;
+		pTxWI->Sounding = 0;
+		pTxWI->eTxBF = 0;
+		pTxWI->iTxBF = 0;
+		DBGPRINT(RT_DEBUG_TRACE, ("ETxBF in RTMPWriteTxWI_Cache(): sending ndp sounding, NDPSndBW=%d, NDPSndRate=%d, eTxBF=%d\n", pTxWI->NDPSndBW, pTxWI->NDPSndRate, pTxWI->eTxBF));
+	}
+	else
+	{
+		pTxWI->Sounding = 0;		
+//		#if defined(ETXBF_EN_COND) && ((ETXBF_EN_COND == 1) || (ETXBF_EN_COND == 2))
+//			pTxWI->eTxBF = 1;
+//		#else
+//			DBGPRINT(RT_DEBUG_TRACE, ("ETxBF in RTMPWriteTxWI_Cache(): pMacEntry->mrqCnt=%d, pMacEntry->toTxMrq=%d\n", pMacEntry->mrqCnt, pMacEntry->toTxMrq));
+			if (pMacEntry && pMacEntry->mrqCnt >0 && pMacEntry->toTxMrq == 1){
+				pTxWI->eTxBF = ~(pTransmit->field.TxBF);
+				DBGPRINT_RAW(RT_DEBUG_TRACE,("ETxBF in AP_AMPDU_Frame_Tx(): invert eTxBF\n"));    	
+			} else		
+				pTxWI->eTxBF = pTransmit->field.TxBF;
+//		#endif
+
+//		DBGPRINT(RT_DEBUG_TRACE, ("ETxBF in RTMPWriteTxWI_Cache(): pMacEntry->mrqCnt=%d, pMacEntry->toTxMrq=%d, pTransmit->field.TxBF=%d, pTxWI->eTxBF=%d\n", pMacEntry->mrqCnt, pMacEntry->toTxMrq, pTransmit->field.TxBF,pTxWI->eTxBF));
+		pTxWI->iTxBF = 0;
+	}
+#endif // RT2883_TEMP_PATCH //
+
+	pTxWI->MPDUtotalByteCount = pTxBlk->MpduHeaderLen + pTxBlk->SrcBufLen;
+
+	
+}
+
+
+// should be called only when -
+// 1. MEADIA_CONNECTED
+// 2. AGGREGATION_IN_USED
+// 3. Fragmentation not in used
+// 4. either no previous frame (pPrevAddr1=NULL) .OR. previoud frame is aggregatible
+BOOLEAN TxFrameIsAggregatible(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PUCHAR			pPrevAddr1,
+	IN	PUCHAR			p8023hdr)
+{
+
+	// can't aggregate EAPOL (802.1x) frame
+	if ((p8023hdr[12] == 0x88) && (p8023hdr[13] == 0x8e))
+		return FALSE;
+
+	// can't aggregate multicast/broadcast frame
+	if (p8023hdr[0] & 0x01)
+		return FALSE;
+
+	if (INFRA_ON(pAd)) // must be unicast to AP
+		return TRUE;
+	else if ((pPrevAddr1 == NULL) || MAC_ADDR_EQUAL(pPrevAddr1, p8023hdr)) // unicast to same STA
+		return TRUE;
+	else
+		return FALSE;
+}
+
+
+/*
+	========================================================================
+
+	Routine Description:
+	   Check the MSDU Aggregation policy
+	1.HT aggregation is A-MSDU
+	2.legaacy rate aggregation is software aggregation by Ralink.
+	
+	Arguments:
+		
+	Return Value:
+	
+	Note:
+	
+	========================================================================
+*/
+BOOLEAN PeerIsAggreOn(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	ULONG		   TxRate,
+	IN	PMAC_TABLE_ENTRY pMacEntry)
+{
+	ULONG	AFlags = (fCLIENT_STATUS_AMSDU_INUSED | fCLIENT_STATUS_AGGREGATION_CAPABLE);
+	
+	if (pMacEntry != NULL && CLIENT_STATUS_TEST_FLAG(pMacEntry, AFlags))
+	{
+#ifdef DOT11_N_SUPPORT
+		if (pMacEntry->HTPhyMode.field.MODE >= MODE_HTMIX)
+		{
+			return TRUE;
+		}
+#endif // DOT11_N_SUPPORT //
+
+#ifdef AGGREGATION_SUPPORT
+		if (TxRate >= RATE_6 && pAd->CommonCfg.bAggregationCapable && (!(OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_WMM_INUSED) && CLIENT_STATUS_TEST_FLAG(pMacEntry, fCLIENT_STATUS_WMM_CAPABLE))))
+		{	// legacy  Ralink Aggregation support
+			return TRUE;
+		}
+#endif // AGGREGATION_SUPPORT //
+	}
+
+	return FALSE;
+		
+}
+
+
+/*
+	========================================================================
+
+	Routine Description:
+		Check and fine the packet waiting in SW queue with highest priority
+		
+	Arguments:
+		pAd Pointer to our adapter
+		
+	Return Value:
+		pQueue		Pointer to Waiting Queue
+
+	IRQL = DISPATCH_LEVEL
+	
+	Note:
+	
+	========================================================================
+*/
+PQUEUE_HEADER	RTMPCheckTxSwQueue(
+	IN	PRTMP_ADAPTER	pAd,
+	OUT PUCHAR			pQueIdx)
+{
+
+	ULONG	Number;
+	// 2004-11-15 to be removed. test aggregation only
+//	if ((OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_AGGREGATION_INUSED)) && (*pNumber < 2))
+//		 return NULL;
+
+	Number = pAd->TxSwQueue[QID_AC_BK].Number
+			 + pAd->TxSwQueue[QID_AC_BE].Number
+			 + pAd->TxSwQueue[QID_AC_VI].Number
+			 + pAd->TxSwQueue[QID_AC_VO].Number
+			 + pAd->TxSwQueue[QID_HCCA].Number;
+
+	if (pAd->TxSwQueue[QID_AC_VO].Head != NULL)
+	{
+		*pQueIdx = QID_AC_VO;
+		return (&pAd->TxSwQueue[QID_AC_VO]);
+	}
+	else if (pAd->TxSwQueue[QID_AC_VI].Head != NULL)
+	{
+		*pQueIdx = QID_AC_VI;
+		return (&pAd->TxSwQueue[QID_AC_VI]);
+	}
+	else if (pAd->TxSwQueue[QID_AC_BE].Head != NULL)
+	{
+		*pQueIdx = QID_AC_BE;
+		return (&pAd->TxSwQueue[QID_AC_BE]);
+	}
+	else if (pAd->TxSwQueue[QID_AC_BK].Head != NULL)
+	{
+		*pQueIdx = QID_AC_BK;
+		return (&pAd->TxSwQueue[QID_AC_BK]);
+	}
+	else if (pAd->TxSwQueue[QID_HCCA].Head != NULL)
+	{
+		*pQueIdx = QID_HCCA;
+		return (&pAd->TxSwQueue[QID_HCCA]);
+	}
+
+	// No packet pending in Tx Sw queue
+	*pQueIdx = QID_AC_BK;
+	
+	return (NULL);
+}
+
+
+/*
+	========================================================================
+
+	Routine Description:
+		Suspend MSDU transmission
+		
+	Arguments:
+		pAd 	Pointer to our adapter
+		
+	Return Value:
+		None
+		
+	Note:
+	
+	========================================================================
+*/
+VOID	RTMPSuspendMsduTransmission(
+	IN	PRTMP_ADAPTER	pAd)
+{
+	DBGPRINT(RT_DEBUG_TRACE,("SCANNING, suspend MSDU transmission ...\n"));
+
+
+	//
+	// Before BSS_SCAN_IN_PROGRESS, we need to keep Current R66 value and
+	// use Lowbound as R66 value on ScanNextChannel(...)
+	//
+	RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R66, &pAd->BbpTuning.R66CurrentValue);
+	
+	// set BBP_R66 to 0x30/0x40 when scanning (AsicSwitchChannel will set R66 according to channel when scanning)
+	//RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R66, (0x26 + GET_LNA_GAIN(pAd)));
+	RTMPSetAGCInitValue(pAd, BW_20);
+	
+	RTMP_SET_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS);
+	//RTMP_IO_WRITE32(pAd, TX_CNTL_CSR, 0x000f0000);		// abort all TX rings
+}
+
+
+/*
+	========================================================================
+
+	Routine Description:
+		Resume MSDU transmission
+		
+	Arguments:
+		pAd 	Pointer to our adapter
+		
+	Return Value:
+		None
+		
+	IRQL = DISPATCH_LEVEL
+	
+	Note:
+	
+	========================================================================
+*/
+VOID RTMPResumeMsduTransmission(
+	IN	PRTMP_ADAPTER	pAd)
+{
+//    UCHAR			IrqState;
+    
+	DBGPRINT(RT_DEBUG_TRACE,("SCAN done, resume MSDU transmission ...\n"));
+
+
+	// After finish BSS_SCAN_IN_PROGRESS, we need to restore Current R66 value
+	// R66 should not be 0
+	if (pAd->BbpTuning.R66CurrentValue == 0)
+	{
+		pAd->BbpTuning.R66CurrentValue = 0x38;
+		DBGPRINT_ERR(("RTMPResumeMsduTransmission, R66CurrentValue=0...\n"));
+	}
+
+#ifdef RT35xx
+	if (IS_RT3572(pAd))
+		RT3572WriteBBPR66(pAd, pAd->BbpTuning.R66CurrentValue);
+	else
+#endif // RT35xx //
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R66, pAd->BbpTuning.R66CurrentValue);
+
+	RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS);
+// sample, for IRQ LOCK to SEM LOCK
+//    IrqState = pAd->irq_disabled;
+//	if (IrqState)
+//		RTMPDeQueuePacket(pAd, TRUE, NUM_OF_TX_RING, MAX_TX_PROCESS);
+//    else
+	RTMPDeQueuePacket(pAd, FALSE, NUM_OF_TX_RING, MAX_TX_PROCESS);
+}
+
+
+UINT deaggregate_AMSDU_announce(
+	IN	PRTMP_ADAPTER	pAd,
+	PNDIS_PACKET		pPacket,
+	IN	PUCHAR			pData,
+	IN	ULONG			DataSize)
+{
+	USHORT 			PayloadSize;
+	USHORT 			SubFrameSize;
+	PHEADER_802_3 	pAMSDUsubheader;
+	UINT			nMSDU;
+    UCHAR			Header802_3[14];
+
+	PUCHAR			pPayload, pDA, pSA, pRemovedLLCSNAP;
+	PNDIS_PACKET	pClonePacket;
+
+
+
+	nMSDU = 0;
+
+	while (DataSize > LENGTH_802_3)
+	{
+
+		nMSDU++;
+
+		//hex_dump("subheader", pData, 64);
+		pAMSDUsubheader = (PHEADER_802_3)pData;
+		//pData += LENGTH_802_3;
+		PayloadSize = pAMSDUsubheader->Octet[1] + (pAMSDUsubheader->Octet[0]<<8);
+		SubFrameSize = PayloadSize + LENGTH_802_3;
+
+
+		if ((DataSize < SubFrameSize) || (PayloadSize > 1518 ))
+		{
+			break;
+		}
+
+		//DBGPRINT(RT_DEBUG_TRACE,("%d subframe: Size = %d\n",  nMSDU, PayloadSize));
+
+		pPayload = pData + LENGTH_802_3;
+		pDA = pData;
+		pSA = pData + MAC_ADDR_LEN;
+
+		// convert to 802.3 header
+        CONVERT_TO_802_3(Header802_3, pDA, pSA, pPayload, PayloadSize, pRemovedLLCSNAP);
+
+#ifdef CONFIG_STA_SUPPORT
+		if ((Header802_3[12] == 0x88) && (Header802_3[13] == 0x8E) )
+		{
+			/* avoid local heap overflow, use dyanamic allocation */
+		   MLME_QUEUE_ELEM *Elem = (MLME_QUEUE_ELEM *) kmalloc(sizeof(MLME_QUEUE_ELEM), MEM_ALLOC_FLAG);
+			if (Elem != NULL)
+			{
+				memmove(Elem->Msg+(LENGTH_802_11 + LENGTH_802_1_H), pPayload, PayloadSize);
+				Elem->MsgLen = LENGTH_802_11 + LENGTH_802_1_H + PayloadSize;
+				//WpaEAPOLKeyAction(pAd, Elem);
+				REPORT_MGMT_FRAME_TO_MLME(pAd, BSSID_WCID, Elem->Msg, Elem->MsgLen, 0, 0, 0, 0);
+				kfree(Elem);
+			}
+		}
+#endif // CONFIG_STA_SUPPORT //
+
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		{
+	        	if (pRemovedLLCSNAP)
+	        	{
+	    			pPayload -= LENGTH_802_3;
+	    			PayloadSize += LENGTH_802_3;
+	    			NdisMoveMemory(pPayload, &Header802_3[0], LENGTH_802_3);
+	        	}
+		}
+#endif // CONFIG_STA_SUPPORT //
+
+		pClonePacket = ClonePacket(pAd, pPacket, pPayload, PayloadSize);
+		if (pClonePacket)
+		{
+#ifdef CONFIG_STA_SUPPORT
+			IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+				ANNOUNCE_OR_FORWARD_802_3_PACKET(pAd, pClonePacket, RTMP_GET_PACKET_IF(pPacket));
+#endif // CONFIG_STA_SUPPORT //
+		}
+
+
+		// A-MSDU has padding to multiple of 4 including subframe header.
+		// align SubFrameSize up to multiple of 4
+		SubFrameSize = (SubFrameSize+3)&(~0x3);
+
+
+		if (SubFrameSize > 1528 || SubFrameSize < 32)
+		{
+			break;
+		}
+
+		if (DataSize > SubFrameSize)
+		{
+			pData += SubFrameSize;
+			DataSize -= SubFrameSize;
+		}
+		else
+		{
+			// end of A-MSDU
+			DataSize = 0;
+		}
+	}
+	
+	// finally release original rx packet
+	RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_SUCCESS);
+
+	return nMSDU;
+}
+
+
+UINT BA_Reorder_AMSDU_Annnounce(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PNDIS_PACKET	pPacket)
+{
+	PUCHAR			pData;
+	USHORT			DataSize;
+	UINT			nMSDU = 0;
+
+	pData = (PUCHAR) GET_OS_PKT_DATAPTR(pPacket);
+	DataSize = (USHORT) GET_OS_PKT_LEN(pPacket);
+
+	nMSDU = deaggregate_AMSDU_announce(pAd, pPacket, pData, DataSize);
+
+	return nMSDU;
+}
+
+
+/*
+	==========================================================================
+	Description:
+		Look up the MAC address in the MAC table. Return NULL if not found.
+	Return:
+		pEntry - pointer to the MAC entry; NULL is not found
+	==========================================================================
+*/
+MAC_TABLE_ENTRY *MacTableLookup(
+	IN PRTMP_ADAPTER pAd,
+	PUCHAR pAddr)
+{
+	ULONG HashIdx;
+	MAC_TABLE_ENTRY *pEntry = NULL;
+	
+	HashIdx = MAC_ADDR_HASH_INDEX(pAddr);
+	pEntry = pAd->MacTab.Hash[HashIdx];
+
+	while (pEntry && !IS_ENTRY_NONE(pEntry))
+	{
+		if (MAC_ADDR_EQUAL(pEntry->Addr, pAddr))
+		{
+			break;
+		}
+		else
+			pEntry = pEntry->pNext;
+	}
+
+	return pEntry;
+}
+
+MAC_TABLE_ENTRY *MacTableInsertEntry(
+	IN  PRTMP_ADAPTER   pAd,
+	IN  PUCHAR			pAddr,
+	IN	UCHAR			apidx,
+	IN BOOLEAN	CleanAll)
+{
+	UCHAR HashIdx;
+	int i, FirstWcid;
+	MAC_TABLE_ENTRY *pEntry = NULL, *pCurrEntry;
+//	USHORT	offset;
+//	ULONG	addr;
+
+	// if FULL, return
+	if (pAd->MacTab.Size >= MAX_LEN_OF_MAC_TABLE)
+		return NULL;
+
+	FirstWcid = 1;
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	if (pAd->StaCfg.BssType == BSS_INFRA)
+		FirstWcid = 2;
+#endif // CONFIG_STA_SUPPORT //
+
+	// allocate one MAC entry
+	NdisAcquireSpinLock(&pAd->MacTabLock);
+	for (i = FirstWcid; i< MAX_LEN_OF_MAC_TABLE; i++)   // skip entry#0 so that "entry index == AID" for fast lookup
+	{
+		// pick up the first available vacancy
+		if (IS_ENTRY_NONE(&pAd->MacTab.Content[i]))
+		{
+			pEntry = &pAd->MacTab.Content[i];
+			if (CleanAll == TRUE)
+			{
+				pEntry->MaxSupportedRate = RATE_11;
+				pEntry->CurrTxRate = RATE_11;
+				NdisZeroMemory(pEntry, sizeof(MAC_TABLE_ENTRY));
+				pEntry->PairwiseKey.KeyLen = 0;
+				pEntry->PairwiseKey.CipherAlg = CIPHER_NONE;
+			}
+#ifdef CONFIG_STA_SUPPORT
+#ifdef QOS_DLS_SUPPORT
+			if (apidx >= MIN_NET_DEVICE_FOR_DLS)
+			{
+				SET_ENTRY_DLS(pEntry);
+				pEntry->isCached = FALSE;
+			}
+			else
+#endif // QOS_DLS_SUPPORT //
+#endif // CONFIG_STA_SUPPORT //
+			{
+
+#ifdef CONFIG_STA_SUPPORT
+				IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+				{
+					SET_ENTRY_CLIENT(pEntry);
+				}
+#endif // CONFIG_STA_SUPPORT //
+			}
+
+			pEntry->bIAmBadAtheros = FALSE;
+			pEntry->pAd = pAd;
+			pEntry->CMTimerRunning = FALSE;
+			pEntry->EnqueueEapolStartTimerRunning = EAPOL_START_DISABLE;
+			pEntry->RSNIE_Len = 0;
+			NdisZeroMemory(pEntry->R_Counter, sizeof(pEntry->R_Counter));
+			pEntry->ReTryCounter = PEER_MSG1_RETRY_TIMER_CTR;
+
+			if (IS_ENTRY_MESH(pEntry))
+				pEntry->apidx = (apidx - MIN_NET_DEVICE_FOR_MESH);
+			else if (IS_ENTRY_APCLI(pEntry))
+				pEntry->apidx = (apidx - MIN_NET_DEVICE_FOR_APCLI);
+			else if (IS_ENTRY_WDS(pEntry))
+				pEntry->apidx = (apidx - MIN_NET_DEVICE_FOR_WDS);
+#ifdef CONFIG_STA_SUPPORT
+#ifdef QOS_DLS_SUPPORT
+			else if (IS_ENTRY_DLS(pEntry))
+				pEntry->apidx = (apidx - MIN_NET_DEVICE_FOR_DLS);
+#endif // QOS_DLS_SUPPORT //
+#endif // CONFIG_STA_SUPPORT //
+			else
+				pEntry->apidx = apidx;
+
+
+			{
+
+#ifdef CONFIG_STA_SUPPORT
+				IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+				{
+					pEntry->AuthMode = pAd->StaCfg.AuthMode;
+					pEntry->WepStatus = pAd->StaCfg.WepStatus;
+					pEntry->PrivacyFilter = Ndis802_11PrivFilterAcceptAll;
+				}
+#endif // CONFIG_STA_SUPPORT //
+			}
+
+			pEntry->GTKState = REKEY_NEGOTIATING;
+			pEntry->PairwiseKey.KeyLen = 0;
+			pEntry->PairwiseKey.CipherAlg = CIPHER_NONE;
+#ifdef CONFIG_STA_SUPPORT
+#ifdef QOS_DLS_SUPPORT
+			if (IS_ENTRY_DLS(pEntry))
+				pEntry->PortSecured = WPA_802_1X_PORT_SECURED;
+			else
+#endif //QOS_DLS_SUPPORT
+#endif // CONFIG_STA_SUPPORT //
+				pEntry->PortSecured = WPA_802_1X_PORT_NOT_SECURED;
+
+			pEntry->PMKID_CacheIdx = ENTRY_NOT_FOUND;
+			COPY_MAC_ADDR(pEntry->Addr, pAddr);
+			pEntry->Sst = SST_NOT_AUTH;
+			pEntry->AuthState = AS_NOT_AUTH;
+			pEntry->Aid = (USHORT)i;  //0;
+			pEntry->CapabilityInfo = 0;
+			pEntry->PsMode = PWR_ACTIVE;
+			pEntry->PsQIdleCount = 0;
+			pEntry->NoDataIdleCount = 0;
+			pEntry->AssocDeadLine = MAC_TABLE_ASSOC_TIMEOUT;
+			pEntry->ContinueTxFailCnt = 0;
+#ifdef WDS_SUPPORT
+			pEntry->LockEntryTx = FALSE;
+			pEntry->TimeStamp_toTxRing = 0;
+#endif // WDS_SUPPORT //
+			InitializeQueueHeader(&pEntry->PsQueue);
+
+
+			pAd->MacTab.Size ++;
+
+			/* Set the security mode of this entry as OPEN-NONE in ASIC */
+			RTMP_REMOVE_PAIRWISE_KEY_ENTRY(pAd, (UCHAR)i);
+
+			/* Add this entry into ASIC RX WCID search table */
+			RTMP_STA_ENTRY_ADD(pAd, pEntry);
+
+
+
+#ifdef RT2883_TEMP_PATCH
+			NdisAllocateSpinLock(&pEntry->TxSndgLock);
+#endif // RT2883_TEMP_PATCH //
+
+			DBGPRINT(RT_DEBUG_TRACE, ("MacTableInsertEntry - allocate entry #%d, Total= %d\n",i, pAd->MacTab.Size));
+			break;
+		}
+	}
+
+	// add this MAC entry into HASH table
+	if (pEntry)
+	{
+		HashIdx = MAC_ADDR_HASH_INDEX(pAddr);
+		if (pAd->MacTab.Hash[HashIdx] == NULL)
+		{
+			pAd->MacTab.Hash[HashIdx] = pEntry;
+		}
+		else
+		{
+			pCurrEntry = pAd->MacTab.Hash[HashIdx];
+			while (pCurrEntry->pNext != NULL)
+				pCurrEntry = pCurrEntry->pNext;
+			pCurrEntry->pNext = pEntry;
+		}
+	}
+
+	NdisReleaseSpinLock(&pAd->MacTabLock);
+	return pEntry;
+}
+
+/*
+	==========================================================================
+	Description:
+		Delete a specified client from MAC table
+	==========================================================================
+ */
+BOOLEAN MacTableDeleteEntry(
+	IN PRTMP_ADAPTER pAd,
+	IN USHORT wcid,
+	IN PUCHAR pAddr)
+{
+	USHORT HashIdx;
+	MAC_TABLE_ENTRY *pEntry, *pPrevEntry, *pProbeEntry;
+	BOOLEAN Cancelled;
+	//USHORT	offset;	// unused variable
+	//UCHAR	j;			// unused variable
+
+	if (wcid >= MAX_LEN_OF_MAC_TABLE)
+		return FALSE;
+
+	NdisAcquireSpinLock(&pAd->MacTabLock);
+
+	HashIdx = MAC_ADDR_HASH_INDEX(pAddr);
+	//pEntry = pAd->MacTab.Hash[HashIdx];
+	pEntry = &pAd->MacTab.Content[wcid];
+
+	if (pEntry && !IS_ENTRY_NONE(pEntry))
+	{
+		if (MAC_ADDR_EQUAL(pEntry->Addr, pAddr))
+		{
+
+			// Delete this entry from ASIC on-chip WCID Table
+			RTMP_STA_ENTRY_MAC_RESET(pAd, wcid);
+
+#ifdef DOT11_N_SUPPORT
+			// free resources of BA
+			BASessionTearDownALL(pAd, pEntry->Aid);
+#endif // DOT11_N_SUPPORT //
+
+           
+			pPrevEntry = NULL;
+			pProbeEntry = pAd->MacTab.Hash[HashIdx];
+			ASSERT(pProbeEntry);
+
+			// update Hash list
+			do
+			{
+				if (pProbeEntry == pEntry)
+				{
+					if (pPrevEntry == NULL)
+					{
+						pAd->MacTab.Hash[HashIdx] = pEntry->pNext;
+					}
+					else
+					{
+						pPrevEntry->pNext = pEntry->pNext;
+					}
+					break;
+				}
+
+				pPrevEntry = pProbeEntry;
+				pProbeEntry = pProbeEntry->pNext;
+			} while (pProbeEntry);
+
+			// not found !!!
+			ASSERT(pProbeEntry != NULL);
+
+			//RTMP_REMOVE_PAIRWISE_KEY_ENTRY(pAd, wcid);
+
+
+		if (pEntry->EnqueueEapolStartTimerRunning != EAPOL_START_DISABLE)
+		{
+            RTMPCancelTimer(&pEntry->EnqueueStartForPSKTimer, &Cancelled);
+			pEntry->EnqueueEapolStartTimerRunning = EAPOL_START_DISABLE;
+        }
+
+   			NdisZeroMemory(pEntry, sizeof(MAC_TABLE_ENTRY));
+			pAd->MacTab.Size --;
+#ifdef RT2883_TEMP_PATCH
+			NdisFreeSpinLock(&pEntry->TxSndgLock);
+#endif // RT2883_TEMP_PATCH //
+			DBGPRINT(RT_DEBUG_TRACE, ("MacTableDeleteEntry1 - Total= %d\n", pAd->MacTab.Size));
+		}
+		else
+		{
+			DBGPRINT(RT_DEBUG_OFF, ("\n%s: Impossible Wcid = %d !!!!!\n", __FUNCTION__, wcid));
+		}
+	}
+
+	NdisReleaseSpinLock(&pAd->MacTabLock);
+
+	//Reset operating mode when no Sta.
+	if (pAd->MacTab.Size == 0)
+	{
+#ifdef DOT11_N_SUPPORT
+		pAd->CommonCfg.AddHTInfo.AddHtInfo2.OperaionMode = 0;
+#endif // DOT11_N_SUPPORT //
+		//AsicUpdateProtect(pAd, 0 /*pAd->CommonCfg.AddHTInfo.AddHtInfo2.OperaionMode*/, (ALLN_SETPROTECT), TRUE, 0 /*pAd->MacTab.fAnyStationNonGF*/);
+		RTMP_UPDATE_PROTECT(pAd);  // edit by johnli, fix "in_interrupt" error when call "MacTableDeleteEntry" in Rx tasklet
+	}
+
+	return TRUE;
+}
+
+
+/*
+	==========================================================================
+	Description:
+		This routine reset the entire MAC table. All packets pending in
+		the power-saving queues are freed here.
+	==========================================================================
+ */
+VOID MacTableReset(
+	IN  PRTMP_ADAPTER  pAd)
+{
+	int         i;
+
+	DBGPRINT(RT_DEBUG_TRACE, ("MacTableReset\n"));
+	//NdisAcquireSpinLock(&pAd->MacTabLock);
+
+
+	for (i=1; i<MAX_LEN_OF_MAC_TABLE; i++)
+	{
+		if (IS_ENTRY_CLIENT(&pAd->MacTab.Content[i]))
+	   {
+	   		/* Delete a entry via WCID */
+			MacTableDeleteEntry(pAd, i, pAd->MacTab.Content[i].Addr);
+
+		}
+	}
+
+	return;
+}
+
+/*
+	==========================================================================
+	Description:
+
+	IRQL = DISPATCH_LEVEL
+	
+	==========================================================================
+*/
+VOID AssocParmFill(
+	IN PRTMP_ADAPTER pAd,
+	IN OUT MLME_ASSOC_REQ_STRUCT *AssocReq,
+	IN PUCHAR                     pAddr,
+	IN USHORT                     CapabilityInfo,
+	IN ULONG                      Timeout,
+	IN USHORT                     ListenIntv)
+{
+	COPY_MAC_ADDR(AssocReq->Addr, pAddr);
+	// Add mask to support 802.11b mode only
+	AssocReq->CapabilityInfo = CapabilityInfo & SUPPORTED_CAPABILITY_INFO; // not cf-pollable, not cf-poll-request
+	AssocReq->Timeout = Timeout;
+	AssocReq->ListenIntv = ListenIntv;
+}
+
+
+/*
+	==========================================================================
+	Description:
+
+	IRQL = DISPATCH_LEVEL
+	
+	==========================================================================
+*/
+VOID DisassocParmFill(
+	IN PRTMP_ADAPTER pAd,
+	IN OUT MLME_DISASSOC_REQ_STRUCT *DisassocReq,
+	IN PUCHAR pAddr,
+	IN USHORT Reason)
+{
+	COPY_MAC_ADDR(DisassocReq->Addr, pAddr);
+	DisassocReq->Reason = Reason;
+}
+
+
+/*
+	========================================================================
+
+	Routine Description:
+		Check the out going frame, if this is an DHCP or ARP datagram
+	will be duplicate another frame at low data rate transmit.
+		
+	Arguments:
+		pAd 		Pointer to our adapter
+		pPacket 	Pointer to outgoing Ndis frame
+		
+	Return Value:
+		TRUE		To be duplicate at Low data rate transmit. (1mb)
+		FALSE		Do nothing.
+
+	IRQL = DISPATCH_LEVEL
+	
+	Note:
+
+		MAC header + IP Header + UDP Header
+		  14 Bytes	  20 Bytes
+		  
+		UDP Header
+		00|01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|
+						Source Port
+		16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|
+					Destination Port
+
+		port 0x43 means Bootstrap Protocol, server.
+		Port 0x44 means Bootstrap Protocol, client.
+
+	========================================================================
+*/
+
+BOOLEAN RTMPCheckDHCPFrame(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PNDIS_PACKET	pPacket)
+{
+	PACKET_INFO 	PacketInfo;
+	ULONG			NumberOfBytesRead = 0;
+	ULONG			CurrentOffset = 0;
+	PVOID			pVirtualAddress = NULL;
+	UINT			NdisBufferLength;
+	PUCHAR			pSrc;
+	USHORT			Protocol;
+	UCHAR			ByteOffset36 = 0;
+	UCHAR			ByteOffset38 = 0;
+	BOOLEAN 		ReadFirstParm = TRUE;
+		
+	RTMP_QueryPacketInfo(pPacket, &PacketInfo, (PUCHAR *)&pVirtualAddress, &NdisBufferLength);
+
+	NumberOfBytesRead += NdisBufferLength;
+	pSrc = (PUCHAR) pVirtualAddress;
+	Protocol = *(pSrc + 12) * 256 + *(pSrc + 13);
+
+	//
+	// Check DHCP & BOOTP protocol
+	//
+	while (NumberOfBytesRead <= PacketInfo.TotalPacketLength)
+	{
+		if ((NumberOfBytesRead >= 35) && (ReadFirstParm == TRUE))
+		{
+			CurrentOffset = 35 - (NumberOfBytesRead - NdisBufferLength);
+			ByteOffset36 = *(pSrc + CurrentOffset);
+			ReadFirstParm = FALSE;
+		}
+		
+		if (NumberOfBytesRead >= 37)
+		{
+			CurrentOffset = 37 - (NumberOfBytesRead - NdisBufferLength);
+			ByteOffset38 = *(pSrc + CurrentOffset);
+			//End of Read
+			break;
+		}
+		return FALSE;
+	}
+
+	// Check for DHCP & BOOTP protocol
+	if ((ByteOffset36 != 0x44) || (ByteOffset38 != 0x43))
+		{
+		//
+		// 2054 (hex 0806) for ARP datagrams
+		// if this packet is not ARP datagrams, then do nothing
+		// ARP datagrams will also be duplicate at 1mb broadcast frames
+		//
+		if (Protocol != 0x0806 )
+			return FALSE;
+		}
+
+	return TRUE;
+}
+
+
+BOOLEAN RTMPCheckEtherType(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PNDIS_PACKET	pPacket,
+	IN	PMAC_TABLE_ENTRY pMacEntry,
+	OUT PUCHAR pUserPriority,
+	OUT PUCHAR pQueIdx)
+{
+	USHORT	TypeLen;
+	UCHAR	Byte0, Byte1;
+	PUCHAR	pSrcBuf;
+	UINT32	pktLen;
+	UINT16 	srcPort, dstPort;
+	BOOLEAN bWmmReq;
+
+
+	bWmmReq = (
+				OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_WMM_INUSED))
+				&& ((pMacEntry) && CLIENT_STATUS_TEST_FLAG(pMacEntry, fCLIENT_STATUS_WMM_CAPABLE));
+
+	pSrcBuf = GET_OS_PKT_DATAPTR(pPacket);
+	pktLen = GET_OS_PKT_LEN(pPacket);
+
+	ASSERT(pSrcBuf);
+
+	RTMP_SET_PACKET_SPECIFIC(pPacket, 0);
+	
+	// get Ethernet protocol field
+	TypeLen = (pSrcBuf[12] << 8) | pSrcBuf[13];
+
+	pSrcBuf += LENGTH_802_3;	// Skip the Ethernet Header.
+	
+	if (TypeLen <= 1500)
+	{	// 802.3, 802.3 LLC
+		/*
+			DestMAC(6) + SrcMAC(6) + Lenght(2) +
+			DSAP(1) + SSAP(1) + Control(1) +
+			if the DSAP = 0xAA, SSAP=0xAA, Contorl = 0x03, it has a 5-bytes SNAP header.
+				=> + SNAP (5, OriginationID(3) + etherType(2))
+		*/
+		if (pSrcBuf[0] == 0xAA && pSrcBuf[1] == 0xAA && pSrcBuf[2] == 0x03)
+		{
+			Sniff2BytesFromNdisBuffer((PNDIS_BUFFER)pSrcBuf, 6, &Byte0, &Byte1);
+			RTMP_SET_PACKET_LLCSNAP(pPacket, 1);
+			TypeLen = (USHORT)((Byte0 << 8) + Byte1);
+			pSrcBuf += 8; // Skip this LLC/SNAP header
+		}
+		else
+		{
+			//It just has 3-byte LLC header, maybe a legacy ether type frame. we didn't handle it.
+		}
+	}
+	
+	// If it's a VLAN packet, get the real Type/Length field.
+	if (TypeLen == 0x8100)
+	{
+		/* 0x8100 means VLAN packets */
+
+		/* Dest. MAC Address (6-bytes) +
+		   Source MAC Address (6-bytes) +
+		   Length/Type = 802.1Q Tag Type (2-byte) +
+		   Tag Control Information (2-bytes) +
+		   Length / Type (2-bytes) +
+		   data payload (0-n bytes) +
+		   Pad (0-p bytes) +
+		   Frame Check Sequence (4-bytes) */
+
+
+		RTMP_SET_PACKET_VLAN(pPacket, 1);
+		Sniff2BytesFromNdisBuffer((PNDIS_BUFFER)pSrcBuf, 2, &Byte0, &Byte1);
+		TypeLen = (USHORT)((Byte0 << 8) + Byte1);
+
+		/* only use VLAN tag */
+		if (bWmmReq)
+		{
+			*pUserPriority = (*(pSrcBuf + 1) & 0xe0) >> 5;
+			*pQueIdx = MapUserPriorityToAccessCategory[*pUserPriority];
+		}
+
+		pSrcBuf += 4; // Skip the VLAN Header.
+	}
+	else if (TypeLen == 0x0800)
+	{
+		if (bWmmReq)
+		{
+			*pUserPriority = (*(pSrcBuf + 1) & 0xe0) >> 5;
+			*pQueIdx = MapUserPriorityToAccessCategory[*pUserPriority];
+		}
+	}
+
+	switch (TypeLen)
+	{
+		case 0x0800:
+			{
+				// return AC_BE if packet is not IPv4
+				if (bWmmReq && (*pSrcBuf & 0xf0) != 0x40)
+				{
+					*pUserPriority = 0;
+					*pQueIdx = QID_AC_BE;
+				}
+				else
+					RTMP_SET_PACKET_IPV4(pPacket, 1);
+
+				ASSERT((pktLen > 34));
+				if (*(pSrcBuf + 9) == 0x11)
+				{	// udp packet
+					ASSERT((pktLen > 34));	// 14 for ethernet header, 20 for IP header
+					
+					pSrcBuf += 20;	// Skip the IP header
+					srcPort = OS_NTOHS(get_unaligned((PUINT16)(pSrcBuf)));
+					dstPort = OS_NTOHS(get_unaligned((PUINT16)(pSrcBuf+2)));
+		
+					if ((srcPort==0x44 && dstPort==0x43) || (srcPort==0x43 && dstPort==0x44))
+					{	//It's a BOOTP/DHCP packet
+						RTMP_SET_PACKET_DHCP(pPacket, 1);
+					}
+				}
+			}
+			break;
+		case 0x0806:
+			{
+				//ARP Packet.
+				RTMP_SET_PACKET_DHCP(pPacket, 1);
+			}
+			break;
+		case 0x888e:
+			{
+				// EAPOL Packet.
+				RTMP_SET_PACKET_EAPOL(pPacket, 1);
+			}
+			break;
+		default:
+			break;
+	}
+
+#ifdef VENDOR_FEATURE1_SUPPORT
+	RTMP_SET_PACKET_PROTOCOL(pPacket, TypeLen);
+#endif // VENDOR_FEATURE1_SUPPORT //
+
+	// have to check ACM bit. downgrade UP & QueIdx before passing ACM
+	// NOTE: AP doesn't have to negotiate TSPEC. ACM is controlled purely via user setup, not protocol handshaking
+	/*
+		Under WMM ACM control, we dont need to check the bit;
+		Or when a TSPEC is built for VO but we will change priority to
+		BE here and when we issue a BA session, the BA session will
+		be BE session, not VO session.
+	*/
+	if (pAd->CommonCfg.APEdcaParm.bACM[*pQueIdx])
+	{
+		*pUserPriority = 0;
+		*pQueIdx		 = QID_AC_BE;
+	}
+
+	return TRUE;
+	
+}
+
+
+
+VOID Update_Rssi_Sample(
+	IN PRTMP_ADAPTER	pAd,
+	IN RSSI_SAMPLE		*pRssi,
+	IN PRXWI_STRUC		pRxWI)
+		{
+	CHAR	rssi0 = pRxWI->RSSI0;
+	CHAR	rssi1 = pRxWI->RSSI1;
+	CHAR	rssi2 = pRxWI->RSSI2;
+
+	if (rssi0 != 0)
+	{
+		pRssi->LastRssi0	= ConvertToRssi(pAd, (CHAR)rssi0, RSSI_0);
+		pRssi->AvgRssi0X8	= (pRssi->AvgRssi0X8 - pRssi->AvgRssi0) + pRssi->LastRssi0;
+		pRssi->AvgRssi0	= pRssi->AvgRssi0X8 >> 3;
+	}
+
+	if (rssi1 != 0)
+	{
+		pRssi->LastRssi1	= ConvertToRssi(pAd, (CHAR)rssi1, RSSI_1);
+		pRssi->AvgRssi1X8	= (pRssi->AvgRssi1X8 - pRssi->AvgRssi1) + pRssi->LastRssi1;
+		pRssi->AvgRssi1	= pRssi->AvgRssi1X8 >> 3;
+	}
+
+	if (rssi2 != 0)
+	{
+		pRssi->LastRssi2	= ConvertToRssi(pAd, (CHAR)rssi2, RSSI_2);
+		pRssi->AvgRssi2X8  = (pRssi->AvgRssi2X8 - pRssi->AvgRssi2) + pRssi->LastRssi2;
+		pRssi->AvgRssi2 = pRssi->AvgRssi2X8 >> 3;
+	}
+}
+
+
+
+// Normal legacy Rx packet indication
+VOID Indicate_Legacy_Packet(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	RX_BLK			*pRxBlk,
+	IN	UCHAR			FromWhichBSSID)
+{
+	PNDIS_PACKET	pRxPacket = pRxBlk->pRxPacket;
+	UCHAR			Header802_3[LENGTH_802_3];
+
+	// 1. get 802.3 Header
+	// 2. remove LLC
+	// 		a. pointer pRxBlk->pData to payload
+	//      b. modify pRxBlk->DataSize
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		RTMP_802_11_REMOVE_LLC_AND_CONVERT_TO_802_3(pRxBlk, Header802_3);
+#endif // CONFIG_STA_SUPPORT //
+
+	if (pRxBlk->DataSize > MAX_RX_PKT_LEN)
+	{
+
+		// release packet
+		RELEASE_NDIS_PACKET(pAd, pRxPacket, NDIS_STATUS_FAILURE);
+		return;
+	}
+
+
+	STATS_INC_RX_PACKETS(pAd, FromWhichBSSID);
+
+
+	wlan_802_11_to_802_3_packet(pAd, pRxBlk, Header802_3, FromWhichBSSID, TPID);
+
+	//
+	// pass this 802.3 packet to upper layer or forward this packet to WM directly
+	//
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		ANNOUNCE_OR_FORWARD_802_3_PACKET(pAd, pRxPacket, FromWhichBSSID);
+#endif // CONFIG_STA_SUPPORT //
+
+}
+
+
+// Normal, AMPDU or AMSDU
+VOID CmmRxnonRalinkFrameIndicate(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	RX_BLK			*pRxBlk,
+	IN	UCHAR			FromWhichBSSID)
+{
+#ifdef DOT11_N_SUPPORT
+	if (RX_BLK_TEST_FLAG(pRxBlk, fRX_AMPDU) && (pAd->CommonCfg.bDisableReordering == 0))
+	{
+		Indicate_AMPDU_Packet(pAd, pRxBlk, FromWhichBSSID);
+	}
+	else
+#endif // DOT11_N_SUPPORT //
+	{
+#ifdef DOT11_N_SUPPORT
+		if (RX_BLK_TEST_FLAG(pRxBlk, fRX_AMSDU))
+		{
+			// handle A-MSDU
+			Indicate_AMSDU_Packet(pAd, pRxBlk, FromWhichBSSID);
+		}
+		else
+#endif // DOT11_N_SUPPORT //
+		{
+			Indicate_Legacy_Packet(pAd, pRxBlk, FromWhichBSSID);
+		}
+	}
+}
+
+
+VOID CmmRxRalinkFrameIndicate(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	MAC_TABLE_ENTRY	*pEntry,
+	IN	RX_BLK			*pRxBlk,
+	IN	UCHAR			FromWhichBSSID)
+{
+	UCHAR			Header802_3[LENGTH_802_3];
+	UINT16			Msdu2Size;
+	UINT16 			Payload1Size, Payload2Size;
+	PUCHAR 			pData2;
+	PNDIS_PACKET	pPacket2 = NULL;
+
+
+
+	Msdu2Size = *(pRxBlk->pData) + (*(pRxBlk->pData+1) << 8);
+
+	if ((Msdu2Size <= 1536) && (Msdu2Size < pRxBlk->DataSize))
+	{
+		/* skip two byte MSDU2 len */
+		pRxBlk->pData += 2;
+		pRxBlk->DataSize -= 2;
+	}
+	else
+	{
+		// release packet
+		RELEASE_NDIS_PACKET(pAd, pRxBlk->pRxPacket, NDIS_STATUS_FAILURE);
+		return;
+	}
+
+	// get 802.3 Header and  remove LLC
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		RTMP_802_11_REMOVE_LLC_AND_CONVERT_TO_802_3(pRxBlk, Header802_3);
+#endif // CONFIG_STA_SUPPORT //
+
+
+	ASSERT(pRxBlk->pRxPacket);
+
+	// Ralink Aggregation frame
+	pAd->RalinkCounters.OneSecRxAggregationCount ++;
+	Payload1Size = pRxBlk->DataSize - Msdu2Size;
+	Payload2Size = Msdu2Size - LENGTH_802_3;
+
+	pData2 = pRxBlk->pData + Payload1Size + LENGTH_802_3;
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		pPacket2 = duplicate_pkt(pAd, (pData2-LENGTH_802_3), LENGTH_802_3, pData2, Payload2Size, FromWhichBSSID);
+#endif // CONFIG_STA_SUPPORT //
+
+	if (!pPacket2)
+	{
+		// release packet
+		RELEASE_NDIS_PACKET(pAd, pRxBlk->pRxPacket, NDIS_STATUS_FAILURE);
+		return;
+	}
+
+	// update payload size of 1st packet
+	pRxBlk->DataSize = Payload1Size;
+	wlan_802_11_to_802_3_packet(pAd, pRxBlk, Header802_3, FromWhichBSSID, TPID);
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		ANNOUNCE_OR_FORWARD_802_3_PACKET(pAd, pRxBlk->pRxPacket, FromWhichBSSID);
+#endif // CONFIG_STA_SUPPORT //
+
+	if (pPacket2)
+	{
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+			ANNOUNCE_OR_FORWARD_802_3_PACKET(pAd, pPacket2, FromWhichBSSID);
+#endif // CONFIG_STA_SUPPORT //
+	}
+}
+
+
+#define RESET_FRAGFRAME(_fragFrame) \
+	{								\
+		_fragFrame.RxSize = 0;		\
+		_fragFrame.Sequence = 0;	\
+		_fragFrame.LastFrag = 0;	\
+		_fragFrame.Flags = 0;		\
+	}
+
+
+PNDIS_PACKET RTMPDeFragmentDataFrame(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	RX_BLK			*pRxBlk)
+{
+	PHEADER_802_11	pHeader = pRxBlk->pHeader;
+	PNDIS_PACKET	pRxPacket = pRxBlk->pRxPacket;
+	UCHAR			*pData = pRxBlk->pData;
+	USHORT			DataSize = pRxBlk->DataSize;
+	PNDIS_PACKET	pRetPacket = NULL;
+	UCHAR			*pFragBuffer = NULL;
+	BOOLEAN 		bReassDone = FALSE;
+	UCHAR			HeaderRoom = 0;
+
+
+	ASSERT(pHeader);
+
+	HeaderRoom = pData - (UCHAR *)pHeader;
+
+	// Re-assemble the fragmented packets
+	if (pHeader->Frag == 0)		// Frag. Number is 0 : First frag or only one pkt
+	{
+		// the first pkt of fragment, record it.
+		if (pHeader->FC.MoreFrag)
+		{
+			ASSERT(pAd->FragFrame.pFragPacket);
+			pFragBuffer = GET_OS_PKT_DATAPTR(pAd->FragFrame.pFragPacket);
+			pAd->FragFrame.RxSize   = DataSize + HeaderRoom;
+			NdisMoveMemory(pFragBuffer,	 pHeader, pAd->FragFrame.RxSize);
+			pAd->FragFrame.Sequence = pHeader->Sequence;
+			pAd->FragFrame.LastFrag = pHeader->Frag;	   // Should be 0
+			ASSERT(pAd->FragFrame.LastFrag == 0);
+			goto done;	// end of processing this frame
+		}
+	}
+	else	//Middle & End of fragment
+	{
+		if ((pHeader->Sequence != pAd->FragFrame.Sequence) ||
+			(pHeader->Frag != (pAd->FragFrame.LastFrag + 1)))
+		{
+			// Fragment is not the same sequence or out of fragment number order
+			// Reset Fragment control blk
+			RESET_FRAGFRAME(pAd->FragFrame);
+			DBGPRINT(RT_DEBUG_ERROR, ("Fragment is not the same sequence or out of fragment number order.\n"));
+			goto done; // give up this frame
+		}
+		else if ((pAd->FragFrame.RxSize + DataSize) > MAX_FRAME_SIZE)
+		{
+			// Fragment frame is too large, it exeeds the maximum frame size.
+			// Reset Fragment control blk
+			RESET_FRAGFRAME(pAd->FragFrame);
+			DBGPRINT(RT_DEBUG_ERROR, ("Fragment frame is too large, it exeeds the maximum frame size.\n"));
+			goto done; // give up this frame
+		}
+
+        //
+		// Broadcom AP(BCM94704AGR) will send out LLC in fragment's packet, LLC only can accpet at first fragment.
+		// In this case, we will dropt it.
+		//
+		if (NdisEqualMemory(pData, SNAP_802_1H, sizeof(SNAP_802_1H)))
+		{
+			DBGPRINT(RT_DEBUG_ERROR, ("Find another LLC at Middle or End fragment(SN=%d, Frag=%d)\n", pHeader->Sequence, pHeader->Frag));
+			goto done; // give up this frame
+		}
+
+		pFragBuffer = GET_OS_PKT_DATAPTR(pAd->FragFrame.pFragPacket);
+
+		// concatenate this fragment into the re-assembly buffer
+		NdisMoveMemory((pFragBuffer + pAd->FragFrame.RxSize), pData, DataSize);
+		pAd->FragFrame.RxSize  += DataSize;
+		pAd->FragFrame.LastFrag = pHeader->Frag;	   // Update fragment number
+
+		// Last fragment
+		if (pHeader->FC.MoreFrag == FALSE)
+		{
+			bReassDone = TRUE;
+		}
+	}
+
+done:
+	// always release rx fragmented packet
+	RELEASE_NDIS_PACKET(pAd, pRxPacket, NDIS_STATUS_FAILURE);
+
+	// return defragmented packet if packet is reassembled completely
+	// otherwise return NULL
+	if (bReassDone)
+	{
+		PNDIS_PACKET pNewFragPacket;
+
+		// allocate a new packet buffer for fragment
+		pNewFragPacket = RTMP_AllocateFragPacketBuffer(pAd, RX_BUFFER_NORMSIZE);
+		if (pNewFragPacket)
+		{
+			// update RxBlk
+			pRetPacket = pAd->FragFrame.pFragPacket;
+			pAd->FragFrame.pFragPacket = pNewFragPacket;
+			pRxBlk->pHeader = (PHEADER_802_11) GET_OS_PKT_DATAPTR(pRetPacket);
+			pRxBlk->pData = (UCHAR *)pRxBlk->pHeader + HeaderRoom;
+			pRxBlk->DataSize = pAd->FragFrame.RxSize - HeaderRoom;
+			pRxBlk->pRxPacket = pRetPacket;
+		}
+		else
+		{
+			RESET_FRAGFRAME(pAd->FragFrame);
+		}
+	}
+
+	return pRetPacket;
+}
+
+
+VOID Indicate_AMSDU_Packet(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	RX_BLK			*pRxBlk,
+	IN	UCHAR			FromWhichBSSID)
+{
+	UINT			nMSDU;
+
+	update_os_packet_info(pAd, pRxBlk, FromWhichBSSID);
+	RTMP_SET_PACKET_IF(pRxBlk->pRxPacket, FromWhichBSSID);
+	nMSDU = deaggregate_AMSDU_announce(pAd, pRxBlk->pRxPacket, pRxBlk->pData, pRxBlk->DataSize);
+}
+
+VOID Indicate_EAPOL_Packet(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	RX_BLK			*pRxBlk,
+	IN	UCHAR			FromWhichBSSID)
+{
+	MAC_TABLE_ENTRY *pEntry = NULL;
+
+	
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+		pEntry = &pAd->MacTab.Content[BSSID_WCID];
+		STARxEAPOLFrameIndicate(pAd, pEntry, pRxBlk, FromWhichBSSID);
+		return;
+	}
+#endif // CONFIG_STA_SUPPORT //
+
+	if (pEntry == NULL)
+	{
+		DBGPRINT(RT_DEBUG_WARN, ("Indicate_EAPOL_Packet: drop and release the invalid packet.\n"));
+		// release packet
+		RELEASE_NDIS_PACKET(pAd, pRxBlk->pRxPacket, NDIS_STATUS_FAILURE);
+		return;
+	}
+}
+
+#define BCN_TBTT_OFFSET		64	//defer 64 us
+VOID ReSyncBeaconTime(
+	IN  PRTMP_ADAPTER   pAd)
+{
+
+	UINT32  Offset;
+
+
+	Offset = (pAd->TbttTickCount) % (BCN_TBTT_OFFSET);
+
+	pAd->TbttTickCount++;
+
+	//
+	// The updated BeaconInterval Value will affect Beacon Interval after two TBTT
+	// beacasue the original BeaconInterval had been loaded into next TBTT_TIMER
+	//
+	if (Offset == (BCN_TBTT_OFFSET-2))
+	{
+		BCN_TIME_CFG_STRUC csr;
+		RTMP_IO_READ32(pAd, BCN_TIME_CFG, &csr.word);
+		csr.field.BeaconInterval = (pAd->CommonCfg.BeaconPeriod << 4) - 1 ;	// ASIC register in units of 1/16 TU = 64us
+		RTMP_IO_WRITE32(pAd, BCN_TIME_CFG, csr.word);
+	}
+	else
+	{
+		if (Offset == (BCN_TBTT_OFFSET-1))
+		{
+			BCN_TIME_CFG_STRUC csr;
+
+			RTMP_IO_READ32(pAd, BCN_TIME_CFG, &csr.word);
+			csr.field.BeaconInterval = (pAd->CommonCfg.BeaconPeriod) << 4; // ASIC register in units of 1/16 TU
+			RTMP_IO_WRITE32(pAd, BCN_TIME_CFG, csr.word);
+		}
+	}
+}
+
+#ifdef SOFT_ENCRYPT
+BOOLEAN RTMPExpandPacketForSwEncrypt(
+	IN  PRTMP_ADAPTER   pAd,
+	IN	PTX_BLK			pTxBlk)
+{
+	PACKET_INFO		PacketInfo;
+	UINT32	ex_head = 0, ex_tail = 0;
+	UCHAR 	NumberOfFrag = RTMP_GET_PACKET_FRAGMENTS(pTxBlk->pPacket);
+
+	if (pTxBlk->CipherAlg == CIPHER_AES)
+		ex_tail = LEN_CCMP_MIC;
+
+	ex_tail = (NumberOfFrag * ex_tail);
+
+	pTxBlk->pPacket = ExpandPacket(pAd, pTxBlk->pPacket, ex_head, ex_tail);
+	if (pTxBlk->pPacket == NULL)
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("%s: out of resource.\n", __FUNCTION__));
+		return FALSE;
+	}
+	RTMP_QueryPacketInfo(pTxBlk->pPacket, &PacketInfo, &pTxBlk->pSrcBufHeader, &pTxBlk->SrcBufLen);									
+
+	return TRUE;
+}
+
+VOID RTMPUpdateSwCacheCipherInfo(	
+	IN  PRTMP_ADAPTER   pAd,
+	IN	PTX_BLK			pTxBlk,
+	IN	PUCHAR			pHdr)
+{
+	PHEADER_802_11 		pHeader_802_11;
+	PMAC_TABLE_ENTRY	pMacEntry;
+
+	pHeader_802_11 = (HEADER_802_11 *) pHdr;
+	pMacEntry = pTxBlk->pMacEntry;
+
+	if (pMacEntry && pHeader_802_11->FC.Wep && 
+		CLIENT_STATUS_TEST_FLAG(pMacEntry, fCLIENT_STATUS_SOFTWARE_ENCRYPT))	
+	{
+		PCIPHER_KEY pKey = &pMacEntry->PairwiseKey;
+	
+		TX_BLK_SET_FLAG(pTxBlk, fTX_bSwEncrypt);
+
+		pTxBlk->CipherAlg = pKey->CipherAlg;
+		pTxBlk->pKey = pKey;
+		if ((pKey->CipherAlg == CIPHER_WEP64) || (pKey->CipherAlg == CIPHER_WEP128))
+			inc_iv_byte(pKey->TxTsc, LEN_WEP_TSC, 1);
+		else if ((pKey->CipherAlg == CIPHER_TKIP) || (pKey->CipherAlg == CIPHER_AES))
+			inc_iv_byte(pKey->TxTsc, LEN_WPA_TSC, 1);
+		
+	}
+
+}
+
+#endif // SOFT_ENCRYPT //
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_data_pci.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_data_pci.c
new file mode 100644
index 000000000..3233d6546
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_data_pci.c
@@ -0,0 +1,1616 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+    Module Name:
+	cmm_data_pci.c
+ 
+    Abstract:
+ 
+    Revision History:
+    Who          When          What
+    ---------    ----------    ----------------------------------------------
+ */
+ 
+/*
+   All functions in this file must be PCI-depended, or you should out your function
+	in other files.
+
+*/
+#include	"rt_config.h"
+
+
+USHORT RtmpPCI_WriteTxResource(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	TX_BLK			*pTxBlk,
+	IN	BOOLEAN			bIsLast,
+	OUT	USHORT			*FreeNumber)
+{
+
+	UCHAR			*pDMAHeaderBufVA;
+	USHORT			TxIdx, RetTxIdx;
+	PTXD_STRUC		pTxD;
+	UINT32			BufBasePaLow;
+	PRTMP_TX_RING	pTxRing;
+	USHORT			hwHeaderLen;
+
+	//
+	// get Tx Ring Resource
+	// 
+	pTxRing = &pAd->TxRing[pTxBlk->QueIdx];
+	TxIdx = pAd->TxRing[pTxBlk->QueIdx].TxCpuIdx;
+	pDMAHeaderBufVA = (PUCHAR) pTxRing->Cell[TxIdx].DmaBuf.AllocVa;
+	BufBasePaLow = RTMP_GetPhysicalAddressLow(pTxRing->Cell[TxIdx].DmaBuf.AllocPa);
+
+	// copy TXINFO + TXWI + WLAN Header + LLC into DMA Header Buffer
+	if (pTxBlk->TxFrameType == TX_AMSDU_FRAME)
+	{
+		//hwHeaderLen = ROUND_UP(pTxBlk->MpduHeaderLen-LENGTH_AMSDU_SUBFRAMEHEAD, 4)+LENGTH_AMSDU_SUBFRAMEHEAD;
+		hwHeaderLen = pTxBlk->MpduHeaderLen - LENGTH_AMSDU_SUBFRAMEHEAD + pTxBlk->HdrPadLen + LENGTH_AMSDU_SUBFRAMEHEAD;
+	}
+	else
+	{
+		//hwHeaderLen = ROUND_UP(pTxBlk->MpduHeaderLen, 4);
+		hwHeaderLen = pTxBlk->MpduHeaderLen + pTxBlk->HdrPadLen;
+	}
+	NdisMoveMemory(pDMAHeaderBufVA, pTxBlk->HeaderBuf, TXINFO_SIZE + TXWI_SIZE + hwHeaderLen);
+
+	pTxRing->Cell[TxIdx].pNdisPacket = pTxBlk->pPacket;
+	pTxRing->Cell[TxIdx].pNextNdisPacket = NULL;
+
+	//
+	// build Tx Descriptor
+	// 
+
+	pTxD = (PTXD_STRUC) pTxRing->Cell[TxIdx].AllocVa;
+	NdisZeroMemory(pTxD, TXD_SIZE);
+
+	pTxD->SDPtr0 = BufBasePaLow;
+	pTxD->SDLen0 = TXINFO_SIZE + TXWI_SIZE + hwHeaderLen; // include padding
+	pTxD->SDPtr1 = PCI_MAP_SINGLE(pAd, pTxBlk, 0, 1, PCI_DMA_TODEVICE);
+	pTxD->SDLen1 = pTxBlk->SrcBufLen;
+	pTxD->LastSec0 = 0;
+	pTxD->LastSec1 = (bIsLast) ? 1 : 0;
+
+	RTMPWriteTxDescriptor(pAd, pTxD, FALSE, FIFO_EDCA);
+
+	RetTxIdx = TxIdx;
+	//
+	// Update Tx index
+	// 
+	INC_RING_INDEX(TxIdx, TX_RING_SIZE);
+	pTxRing->TxCpuIdx = TxIdx;
+
+	*FreeNumber -= 1;
+
+	return RetTxIdx;
+}
+
+
+USHORT RtmpPCI_WriteSingleTxResource(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	TX_BLK			*pTxBlk,
+	IN	BOOLEAN			bIsLast,
+	OUT	USHORT			*FreeNumber)
+{
+
+	UCHAR			*pDMAHeaderBufVA;
+	USHORT			TxIdx, RetTxIdx;
+	PTXD_STRUC		pTxD;
+#ifdef RT_BIG_ENDIAN
+    PTXD_STRUC      pDestTxD;
+    TXD_STRUC       TxD;
+#endif
+	UINT32			BufBasePaLow;
+	PRTMP_TX_RING	pTxRing;	
+	USHORT			hwHeaderLen;
+
+	//
+	// get Tx Ring Resource
+	// 
+	pTxRing = &pAd->TxRing[pTxBlk->QueIdx];
+	TxIdx = pAd->TxRing[pTxBlk->QueIdx].TxCpuIdx;
+	pDMAHeaderBufVA = (PUCHAR) pTxRing->Cell[TxIdx].DmaBuf.AllocVa;
+	BufBasePaLow = RTMP_GetPhysicalAddressLow(pTxRing->Cell[TxIdx].DmaBuf.AllocPa);
+
+	// copy TXINFO + TXWI + WLAN Header + LLC into DMA Header Buffer
+	//hwHeaderLen = ROUND_UP(pTxBlk->MpduHeaderLen, 4);
+	hwHeaderLen = pTxBlk->MpduHeaderLen + pTxBlk->HdrPadLen;
+
+	NdisMoveMemory(pDMAHeaderBufVA, pTxBlk->HeaderBuf, TXINFO_SIZE + TXWI_SIZE + hwHeaderLen);
+
+	pTxRing->Cell[TxIdx].pNdisPacket = pTxBlk->pPacket;
+	pTxRing->Cell[TxIdx].pNextNdisPacket = NULL;
+
+	//
+	// build Tx Descriptor
+	// 
+#ifndef RT_BIG_ENDIAN
+	pTxD = (PTXD_STRUC) pTxRing->Cell[TxIdx].AllocVa;
+#else
+	pDestTxD = (PTXD_STRUC) pTxRing->Cell[TxIdx].AllocVa;
+	TxD = *pDestTxD;
+	pTxD = &TxD;
+#endif
+	NdisZeroMemory(pTxD, TXD_SIZE);
+
+	pTxD->SDPtr0 = BufBasePaLow;
+	pTxD->SDLen0 = TXINFO_SIZE + TXWI_SIZE + hwHeaderLen; // include padding
+	pTxD->SDPtr1 = PCI_MAP_SINGLE(pAd, pTxBlk, 0, 1, PCI_DMA_TODEVICE);;
+	pTxD->SDLen1 = pTxBlk->SrcBufLen;
+	pTxD->LastSec0 = 0;
+	pTxD->LastSec1 = (bIsLast) ? 1 : 0;
+
+	RTMPWriteTxDescriptor(pAd, pTxD, FALSE, FIFO_EDCA);
+#ifdef RT_BIG_ENDIAN
+	RTMPWIEndianChange((PUCHAR)(pDMAHeaderBufVA + TXINFO_SIZE), TYPE_TXWI);
+	RTMPFrameEndianChange(pAd, (PUCHAR)(pDMAHeaderBufVA + TXINFO_SIZE + TXWI_SIZE), DIR_WRITE, FALSE);
+	RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD);
+	WriteBackToDescriptor((PUCHAR)pDestTxD, (PUCHAR)pTxD, FALSE, TYPE_TXD);	
+#endif // RT_BIG_ENDIAN //
+
+	RetTxIdx = TxIdx;
+	//
+	// Update Tx index
+	// 
+	INC_RING_INDEX(TxIdx, TX_RING_SIZE);
+	pTxRing->TxCpuIdx = TxIdx;
+
+	*FreeNumber -= 1;
+
+	return RetTxIdx;
+}
+
+
+USHORT RtmpPCI_WriteMultiTxResource(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	TX_BLK			*pTxBlk,
+	IN	UCHAR			frameNum,
+	OUT	USHORT			*FreeNumber)
+{
+	BOOLEAN bIsLast;
+	UCHAR			*pDMAHeaderBufVA;
+	USHORT			TxIdx, RetTxIdx;
+	PTXD_STRUC		pTxD;
+#ifdef RT_BIG_ENDIAN
+    PTXD_STRUC      pDestTxD;
+    TXD_STRUC       TxD;
+#endif
+	UINT32			BufBasePaLow;
+	PRTMP_TX_RING	pTxRing;	
+	USHORT			hwHdrLen;
+	UINT32			firstDMALen;
+
+	bIsLast = ((frameNum == (pTxBlk->TotalFrameNum - 1)) ? 1 : 0);		
+
+	//
+	// get Tx Ring Resource
+	// 
+	pTxRing = &pAd->TxRing[pTxBlk->QueIdx];
+	TxIdx = pAd->TxRing[pTxBlk->QueIdx].TxCpuIdx;
+	pDMAHeaderBufVA = (PUCHAR) pTxRing->Cell[TxIdx].DmaBuf.AllocVa;
+	BufBasePaLow = RTMP_GetPhysicalAddressLow(pTxRing->Cell[TxIdx].DmaBuf.AllocPa);
+
+	if (frameNum == 0)
+	{
+		// copy TXINFO + TXWI + WLAN Header + LLC into DMA Header Buffer
+		if (pTxBlk->TxFrameType == TX_AMSDU_FRAME)
+			//hwHdrLen = ROUND_UP(pTxBlk->MpduHeaderLen-LENGTH_AMSDU_SUBFRAMEHEAD, 4)+LENGTH_AMSDU_SUBFRAMEHEAD;
+			hwHdrLen = pTxBlk->MpduHeaderLen - LENGTH_AMSDU_SUBFRAMEHEAD + pTxBlk->HdrPadLen + LENGTH_AMSDU_SUBFRAMEHEAD;
+		else if (pTxBlk->TxFrameType == TX_RALINK_FRAME)
+			//hwHdrLen = ROUND_UP(pTxBlk->MpduHeaderLen-LENGTH_ARALINK_HEADER_FIELD, 4)+LENGTH_ARALINK_HEADER_FIELD;
+			hwHdrLen = pTxBlk->MpduHeaderLen - LENGTH_ARALINK_HEADER_FIELD + pTxBlk->HdrPadLen + LENGTH_ARALINK_HEADER_FIELD;
+		else
+			//hwHdrLen = ROUND_UP(pTxBlk->MpduHeaderLen, 4);
+			hwHdrLen = pTxBlk->MpduHeaderLen + pTxBlk->HdrPadLen;
+
+		firstDMALen = TXINFO_SIZE + TXWI_SIZE + hwHdrLen;
+	}
+	else
+	{
+		firstDMALen = pTxBlk->MpduHeaderLen;
+	}
+
+	NdisMoveMemory(pDMAHeaderBufVA, pTxBlk->HeaderBuf, firstDMALen); 
+		
+	pTxRing->Cell[TxIdx].pNdisPacket = pTxBlk->pPacket;
+	pTxRing->Cell[TxIdx].pNextNdisPacket = NULL;
+	
+	//
+	// build Tx Descriptor
+	// 
+#ifndef RT_BIG_ENDIAN
+	pTxD = (PTXD_STRUC) pTxRing->Cell[TxIdx].AllocVa;
+#else
+	pDestTxD = (PTXD_STRUC) pTxRing->Cell[TxIdx].AllocVa;
+	TxD = *pDestTxD;
+	pTxD = &TxD;
+#endif
+	NdisZeroMemory(pTxD, TXD_SIZE);
+
+	pTxD->SDPtr0 = BufBasePaLow;
+	pTxD->SDLen0 = firstDMALen; // include padding
+	pTxD->SDPtr1 = PCI_MAP_SINGLE(pAd, pTxBlk, 0, 1, PCI_DMA_TODEVICE);;
+	pTxD->SDLen1 = pTxBlk->SrcBufLen;
+	pTxD->LastSec0 = 0;
+	pTxD->LastSec1 = (bIsLast) ? 1 : 0;
+
+	RTMPWriteTxDescriptor(pAd, pTxD, FALSE, FIFO_EDCA);
+
+#ifdef RT_BIG_ENDIAN
+	if (frameNum == 0)
+		RTMPFrameEndianChange(pAd, (PUCHAR)(pDMAHeaderBufVA+ TXINFO_SIZE + TXWI_SIZE), DIR_WRITE, FALSE);
+	
+	if (frameNum != 0)
+		RTMPWIEndianChange((PUCHAR)(pDMAHeaderBufVA + TXINFO_SIZE), TYPE_TXWI);
+	
+	RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD);
+	WriteBackToDescriptor((PUCHAR)pDestTxD, (PUCHAR)pTxD, FALSE, TYPE_TXD);
+#endif // RT_BIG_ENDIAN //
+	
+	RetTxIdx = TxIdx;
+	//
+	// Update Tx index
+	// 
+	INC_RING_INDEX(TxIdx, TX_RING_SIZE);
+	pTxRing->TxCpuIdx = TxIdx;
+
+	*FreeNumber -= 1;
+
+	return RetTxIdx;
+	
+}
+
+
+VOID RtmpPCI_FinalWriteTxResource(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	TX_BLK			*pTxBlk,
+	IN	USHORT			totalMPDUSize,
+	IN	USHORT			FirstTxIdx)
+{
+
+	PTXWI_STRUC		pTxWI;
+	PRTMP_TX_RING	pTxRing;
+
+	//
+	// get Tx Ring Resource
+	// 
+	pTxRing = &pAd->TxRing[pTxBlk->QueIdx];
+	pTxWI = (PTXWI_STRUC) pTxRing->Cell[FirstTxIdx].DmaBuf.AllocVa;
+	pTxWI->MPDUtotalByteCount = totalMPDUSize;
+#ifdef RT_BIG_ENDIAN
+	RTMPWIEndianChange((PUCHAR)pTxWI, TYPE_TXWI);
+#endif // RT_BIG_ENDIAN //
+
+}
+
+
+VOID RtmpPCIDataLastTxIdx(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	UCHAR			QueIdx,
+	IN	USHORT			LastTxIdx)
+{
+	PTXD_STRUC		pTxD;
+#ifdef RT_BIG_ENDIAN
+    PTXD_STRUC      pDestTxD;
+    TXD_STRUC       TxD;
+#endif
+	PRTMP_TX_RING	pTxRing;
+
+	//
+	// get Tx Ring Resource
+	// 
+	pTxRing = &pAd->TxRing[QueIdx];
+
+	//
+	// build Tx Descriptor
+	// 
+#ifndef RT_BIG_ENDIAN
+	pTxD = (PTXD_STRUC) pTxRing->Cell[LastTxIdx].AllocVa;
+#else
+	pDestTxD = (PTXD_STRUC) pTxRing->Cell[LastTxIdx].AllocVa;
+	TxD = *pDestTxD;
+	pTxD = &TxD;
+#endif
+
+	pTxD->LastSec1 = 1;
+
+#ifdef RT_BIG_ENDIAN
+	RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD);
+	WriteBackToDescriptor((PUCHAR)pDestTxD, (PUCHAR)pTxD, FALSE, TYPE_TXD);
+#endif // RT_BIG_ENDIAN //
+
+}
+
+
+USHORT	RtmpPCI_WriteFragTxResource(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	TX_BLK			*pTxBlk,
+	IN	UCHAR			fragNum,
+	OUT	USHORT			*FreeNumber)
+{
+	UCHAR			*pDMAHeaderBufVA;
+	USHORT			TxIdx, RetTxIdx;
+	PTXD_STRUC		pTxD;
+#ifdef RT_BIG_ENDIAN
+    PTXD_STRUC      pDestTxD;
+    TXD_STRUC       TxD;
+#endif
+	UINT32			BufBasePaLow;
+	PRTMP_TX_RING	pTxRing;
+	USHORT			hwHeaderLen;
+	UINT32			firstDMALen;
+
+	//
+	// Get Tx Ring Resource
+	// 
+	pTxRing = &pAd->TxRing[pTxBlk->QueIdx];
+	TxIdx = pAd->TxRing[pTxBlk->QueIdx].TxCpuIdx;
+	pDMAHeaderBufVA = (PUCHAR) pTxRing->Cell[TxIdx].DmaBuf.AllocVa;
+	BufBasePaLow = RTMP_GetPhysicalAddressLow(pTxRing->Cell[TxIdx].DmaBuf.AllocPa);
+
+	//
+	// Copy TXINFO + TXWI + WLAN Header + LLC into DMA Header Buffer
+	//
+	//hwHeaderLen = ROUND_UP(pTxBlk->MpduHeaderLen, 4);
+	hwHeaderLen = pTxBlk->MpduHeaderLen + pTxBlk->HdrPadLen;
+
+	firstDMALen = TXINFO_SIZE + TXWI_SIZE + hwHeaderLen;
+	NdisMoveMemory(pDMAHeaderBufVA, pTxBlk->HeaderBuf, firstDMALen); 
+		
+
+	//
+	// Build Tx Descriptor
+	// 
+#ifndef RT_BIG_ENDIAN
+	pTxD = (PTXD_STRUC) pTxRing->Cell[TxIdx].AllocVa;
+#else
+	pDestTxD = (PTXD_STRUC) pTxRing->Cell[TxIdx].AllocVa;
+	TxD = *pDestTxD;
+	pTxD = &TxD;
+#endif
+	NdisZeroMemory(pTxD, TXD_SIZE);	
+	
+	if (fragNum == pTxBlk->TotalFragNum)
+	{
+		pTxRing->Cell[TxIdx].pNdisPacket = pTxBlk->pPacket;
+		pTxRing->Cell[TxIdx].pNextNdisPacket = NULL;
+	}
+	
+	pTxD->SDPtr0 = BufBasePaLow;
+	pTxD->SDLen0 = firstDMALen; // include padding
+	pTxD->SDPtr1 = PCI_MAP_SINGLE(pAd, pTxBlk, 0, 1, PCI_DMA_TODEVICE);
+	pTxD->SDLen1 = pTxBlk->SrcBufLen;
+	pTxD->LastSec0 = 0;
+	pTxD->LastSec1 = 1;
+
+	RTMPWriteTxDescriptor(pAd, pTxD, FALSE, FIFO_EDCA);
+
+#ifdef RT_BIG_ENDIAN
+	RTMPWIEndianChange((PUCHAR)(pDMAHeaderBufVA + TXINFO_SIZE), TYPE_TXWI);
+	RTMPFrameEndianChange(pAd, (PUCHAR)(pDMAHeaderBufVA + TXINFO_SIZE + TXWI_SIZE), DIR_WRITE, FALSE);
+	RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD);
+    WriteBackToDescriptor((PUCHAR)pDestTxD, (PUCHAR)pTxD, FALSE, TYPE_TXD);	
+#endif // RT_BIG_ENDIAN //
+
+	RetTxIdx = TxIdx;
+	pTxBlk->Priv += pTxBlk->SrcBufLen;
+	
+	//
+	// Update Tx index
+	// 
+	INC_RING_INDEX(TxIdx, TX_RING_SIZE);
+	pTxRing->TxCpuIdx = TxIdx;
+
+	*FreeNumber -= 1;
+
+	return RetTxIdx;
+	
+}
+
+
+/*
+	Must be run in Interrupt context
+	This function handle PCI specific TxDesc and cpu index update and kick the packet out.
+ */
+int RtmpPCIMgmtKickOut(
+	IN RTMP_ADAPTER 	*pAd, 
+	IN UCHAR 			QueIdx,
+	IN PNDIS_PACKET		pPacket,
+	IN PUCHAR			pSrcBufVA,
+	IN UINT 			SrcBufLen)
+{
+	PTXD_STRUC		pTxD;
+#ifdef RT_BIG_ENDIAN
+    PTXD_STRUC      pDestTxD;
+    TXD_STRUC       TxD;
+#endif
+	ULONG			SwIdx = pAd->MgmtRing.TxCpuIdx;
+	
+#ifdef RT_BIG_ENDIAN
+    pDestTxD  = (PTXD_STRUC)pAd->MgmtRing.Cell[SwIdx].AllocVa;
+    TxD = *pDestTxD;
+    pTxD = &TxD;
+    RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD);
+#else
+	pTxD  = (PTXD_STRUC) pAd->MgmtRing.Cell[SwIdx].AllocVa;
+#endif
+
+	pAd->MgmtRing.Cell[SwIdx].pNdisPacket = pPacket;
+	pAd->MgmtRing.Cell[SwIdx].pNextNdisPacket = NULL;	
+	
+	RTMPWriteTxDescriptor(pAd, pTxD, TRUE, FIFO_MGMT);
+	pTxD->LastSec0 = 1;
+	pTxD->LastSec1 = 1;
+	pTxD->DMADONE = 0;	
+	pTxD->SDLen1 = 0;
+	pTxD->SDPtr0 = PCI_MAP_SINGLE(pAd, pSrcBufVA, SrcBufLen, 0, PCI_DMA_TODEVICE);
+	pTxD->SDLen0 = SrcBufLen;
+
+#ifdef RT_BIG_ENDIAN
+	RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD);
+    WriteBackToDescriptor((PUCHAR)pDestTxD, (PUCHAR)pTxD, FALSE, TYPE_TXD);
+#endif
+	
+//==================================================================
+/*	DBGPRINT_RAW(RT_DEBUG_TRACE, ("MLMEHardTransmit\n"));
+	for (i = 0; i < (TXWI_SIZE+24); i++)
+	{
+	
+		DBGPRINT_RAW(RT_DEBUG_TRACE, ("%x:", *(pSrcBufVA+i)));
+		if ( i%4 == 3)
+			DBGPRINT_RAW(RT_DEBUG_TRACE, (" :: "));
+		if ( i%16 == 15)
+			DBGPRINT_RAW(RT_DEBUG_TRACE, ("\n      "));
+	}
+	DBGPRINT_RAW(RT_DEBUG_TRACE, ("\n      "));*/
+//=======================================================================
+
+	pAd->RalinkCounters.KickTxCount++;
+	pAd->RalinkCounters.OneSecTxDoneCount++;
+
+	// Increase TX_CTX_IDX, but write to register later.
+	INC_RING_INDEX(pAd->MgmtRing.TxCpuIdx, MGMT_RING_SIZE);
+
+	RTMP_IO_WRITE32(pAd, TX_MGMTCTX_IDX,  pAd->MgmtRing.TxCpuIdx);
+
+	return 0;
+}
+
+
+#ifdef CONFIG_STA_SUPPORT
+/*
+	========================================================================
+
+	Routine Description:
+		Check Rx descriptor, return NDIS_STATUS_FAILURE if any error dound
+		
+	Arguments:
+		pRxD		Pointer to the Rx descriptor
+		
+	Return Value:
+		NDIS_STATUS_SUCCESS 	No err
+		NDIS_STATUS_FAILURE 	Error
+		
+	Note:
+	
+	========================================================================
+*/
+NDIS_STATUS RTMPCheckRxError(
+	IN	PRTMP_ADAPTER		pAd, 
+	IN	PHEADER_802_11		pHeader,
+	IN	PRXWI_STRUC 		pRxWI,
+	IN  PRT28XX_RXD_STRUC 	pRxD)
+{
+	PCIPHER_KEY pWpaKey;
+	INT dBm;
+	
+	// Phy errors & CRC errors
+	if (/*(pRxD->PhyErr) ||*/ (pRxD->Crc))
+	{
+		// Check RSSI for Noise Hist statistic collection.
+		dBm = (INT) (pRxWI->RSSI0) - pAd->BbpRssiToDbmDelta;
+		if (dBm <= -87)
+			pAd->StaCfg.RPIDensity[0] += 1;
+		else if (dBm <= -82)
+			pAd->StaCfg.RPIDensity[1] += 1;
+		else if (dBm <= -77)
+			pAd->StaCfg.RPIDensity[2] += 1;
+		else if (dBm <= -72)
+			pAd->StaCfg.RPIDensity[3] += 1;
+		else if (dBm <= -67)
+			pAd->StaCfg.RPIDensity[4] += 1;
+		else if (dBm <= -62)
+			pAd->StaCfg.RPIDensity[5] += 1;
+		else if (dBm <= -57)
+			pAd->StaCfg.RPIDensity[6] += 1;
+		else if (dBm > -57)
+			pAd->StaCfg.RPIDensity[7] += 1;
+		
+		return(NDIS_STATUS_FAILURE);
+	}
+		
+	// Add Rx size to channel load counter, we should ignore error counts
+	pAd->StaCfg.CLBusyBytes += (pRxD->SDL0 + 14);
+
+	// Drop ToDs promiscous frame, it is opened due to CCX 2 channel load statistics
+	if (pHeader != NULL)
+	{
+#ifndef CLIENT_WDS
+		if (pHeader->FC.ToDs
+			)
+		{
+			return(NDIS_STATUS_FAILURE);
+		}
+#endif // CLIENT_WDS //
+	}
+
+	// Drop not U2M frames, cant's drop here because we will drop beacon in this case
+	// I am kind of doubting the U2M bit operation
+	// if (pRxD->U2M == 0)
+	//	return(NDIS_STATUS_FAILURE);
+
+	// drop decyption fail frame
+	if (pRxD->CipherErr)
+	{
+		if (pRxD->CipherErr == 2)
+			{DBGPRINT_RAW(RT_DEBUG_TRACE,("pRxD ERROR: ICV ok but MICErr "));}
+		else if (pRxD->CipherErr == 1)
+			{DBGPRINT_RAW(RT_DEBUG_TRACE,("pRxD ERROR: ICV Err "));}
+		else if (pRxD->CipherErr == 3)
+			DBGPRINT_RAW(RT_DEBUG_TRACE,("pRxD ERROR: Key not valid "));
+		
+        if (((pRxD->CipherErr & 1) == 1) && INFRA_ON(pAd))
+            RTMPSendWirelessEvent(pAd, IW_ICV_ERROR_EVENT_FLAG, pAd->MacTab.Content[BSSID_WCID].Addr, BSS0, 0); 
+        
+		DBGPRINT_RAW(RT_DEBUG_TRACE,(" %d (len=%d, Mcast=%d, MyBss=%d, Wcid=%d, KeyId=%d)\n", 
+			pRxD->CipherErr,
+			pRxD->SDL0, 
+			pRxD->Mcast | pRxD->Bcast,
+			pRxD->MyBss, 
+			pRxWI->WirelessCliID, 
+//			CipherName[pRxD->CipherAlg],
+			pRxWI->KeyIndex));
+
+		//
+		// MIC Error
+		//
+		if (pRxD->CipherErr == 2)
+		{			
+			pWpaKey = &pAd->SharedKey[BSS0][pRxWI->KeyIndex];
+#ifdef WPA_SUPPLICANT_SUPPORT                                    
+            if (pAd->StaCfg.WpaSupplicantUP)
+                WpaSendMicFailureToWpaSupplicant(pAd, 
+                                   (pWpaKey->Type == PAIRWISEKEY) ? TRUE:FALSE);
+            else
+#endif // WPA_SUPPLICANT_SUPPORT //                             
+			    RTMPReportMicError(pAd, pWpaKey);
+
+            if (((pRxD->CipherErr & 2) == 2) && INFRA_ON(pAd))
+                RTMPSendWirelessEvent(pAd, IW_MIC_ERROR_EVENT_FLAG, pAd->MacTab.Content[BSSID_WCID].Addr, BSS0, 0);
+
+			DBGPRINT_RAW(RT_DEBUG_ERROR,("Rx MIC Value error\n"));
+		}
+		
+		if (pHeader == NULL)
+			return(NDIS_STATUS_SUCCESS);
+		/*if ((pRxD->CipherAlg == CIPHER_AES) &&
+			(pHeader->Sequence == pAd->FragFrame.Sequence))
+		{
+			//
+			// Acceptable since the First FragFrame no CipherErr problem.
+			//
+			return(NDIS_STATUS_SUCCESS);
+		}*/
+		
+		return(NDIS_STATUS_FAILURE);
+	}
+	
+	return(NDIS_STATUS_SUCCESS);
+}
+#endif // CONFIG_STA_SUPPORT //
+
+
+BOOLEAN  RTMPFreeTXDUponTxDmaDone(
+	IN PRTMP_ADAPTER	pAd,
+	IN UCHAR			QueIdx)
+{
+	PRTMP_TX_RING pTxRing;
+	PTXD_STRUC	  pTxD;
+#ifdef	RT_BIG_ENDIAN
+    PTXD_STRUC      pDestTxD;
+#endif
+	PNDIS_PACKET  pPacket;
+	UCHAR	FREE = 0;
+	TXD_STRUC	TxD, *pOriTxD;
+	//ULONG		IrqFlags;
+	BOOLEAN			bReschedule = FALSE;
+
+
+	ASSERT(QueIdx < NUM_OF_TX_RING);
+	pTxRing = &pAd->TxRing[QueIdx];
+
+	RTMP_IO_READ32(pAd, TX_DTX_IDX0 + QueIdx * RINGREG_DIFF, &pTxRing->TxDmaIdx);
+	while (pTxRing->TxSwFreeIdx != pTxRing->TxDmaIdx)
+	{
+//		RTMP_IRQ_LOCK(&pAd->irq_lock, IrqFlags);
+#ifdef RALINK_ATE
+#ifdef RALINK_28xx_QA
+		PHEADER_802_11	pHeader80211;
+
+		if ((ATE_ON(pAd)) && (pAd->ate.bQATxStart == TRUE))
+		{
+			if (pAd->ate.QID == QueIdx)
+			{
+				pAd->ate.TxDoneCount++;
+				pAd->RalinkCounters.KickTxCount++;
+
+				/* always use QID_AC_BE and FIFO_EDCA */
+				ASSERT(pAd->ate.QID == 0);
+				pAd->ate.TxAc0++;
+
+				FREE++;
+#ifndef RT_BIG_ENDIAN
+				pTxD = (PTXD_STRUC) (pTxRing->Cell[pTxRing->TxSwFreeIdx].AllocVa);
+				pOriTxD = pTxD;
+		        NdisMoveMemory(&TxD, pTxD, sizeof(TXD_STRUC));
+				pTxD = &TxD;
+#else
+		        pDestTxD = (PTXD_STRUC) (pTxRing->Cell[pTxRing->TxSwFreeIdx].AllocVa);
+		        pOriTxD = pDestTxD ;
+		        TxD = *pDestTxD;
+		        pTxD = &TxD;
+		        RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD);
+#endif
+				pTxD->DMADONE = 0;
+
+				pHeader80211 = pTxRing->Cell[pTxRing->TxSwFreeIdx].DmaBuf.AllocVa + sizeof(TXWI_STRUC);
+#ifdef RT_BIG_ENDIAN
+				RTMPFrameEndianChange(pAd, (PUCHAR)pHeader80211, DIR_READ, FALSE);
+#endif
+				pHeader80211->Sequence = ++pAd->ate.seq;
+#ifdef RT_BIG_ENDIAN
+				RTMPFrameEndianChange(pAd, (PUCHAR)pHeader80211, DIR_WRITE, FALSE);
+#endif
+
+				if  ((pAd->ate.bQATxStart == TRUE) && (pAd->ate.Mode & ATE_TXFRAME) && (pAd->ate.TxDoneCount < pAd->ate.TxCount))
+				{
+					pAd->RalinkCounters.TransmittedByteCount +=  (pTxD->SDLen1 + pTxD->SDLen0);
+					pAd->RalinkCounters.OneSecTransmittedByteCount += (pTxD->SDLen1 + pTxD->SDLen0);
+					pAd->RalinkCounters.OneSecDmaDoneCount[QueIdx] ++;
+					INC_RING_INDEX(pTxRing->TxSwFreeIdx, TX_RING_SIZE);
+
+					/* get TX_DTX_IDX again */
+					RTMP_IO_READ32(pAd, TX_DTX_IDX0 + QueIdx * RINGREG_DIFF ,  &pTxRing->TxDmaIdx);
+					goto kick_out;
+				}
+				else if ((pAd->ate.TxStatus == 1)/* or (pAd->ate.bQATxStart == TRUE) ??? */ && (pAd->ate.TxDoneCount == pAd->ate.TxCount))
+				{
+					DBGPRINT(RT_DEBUG_TRACE,("all Tx is done\n"));
+
+					// Tx status enters idle mode.
+					pAd->ate.TxStatus = 0;
+				}
+				else if (!(pAd->ate.Mode & ATE_TXFRAME))
+				{
+					/* not complete sending yet, but someone press the Stop TX botton */
+					DBGPRINT(RT_DEBUG_ERROR,("not complete sending yet, but someone pressed the Stop TX bottom\n"));
+					DBGPRINT(RT_DEBUG_ERROR,("pAd->ate.Mode = 0x%02x\n", pAd->ate.Mode));
+				}
+				else
+				{
+					DBGPRINT(RT_DEBUG_OFF,("pTxRing->TxSwFreeIdx = %d\n", pTxRing->TxSwFreeIdx));
+  				}
+
+#ifndef RT_BIG_ENDIAN
+	        	NdisMoveMemory(pOriTxD, pTxD, sizeof(TXD_STRUC));
+#else
+        		RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD);
+        		*pDestTxD = TxD;
+#endif // RT_BIG_ENDIAN //
+
+				INC_RING_INDEX(pTxRing->TxSwFreeIdx, TX_RING_SIZE);
+				continue;
+			}
+		}
+#endif // RALINK_28xx_QA //
+#endif // RALINK_ATE //
+
+		// static rate also need NICUpdateFifoStaCounters() function.
+		//if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_TX_RATE_SWITCH_ENABLED))
+#ifdef VENDOR_FEATURE1_SUPPORT
+		/*
+			Note:
+
+			Can not take off the NICUpdateFifoStaCounters(); Or the
+			FIFO overflow rate will be high, i.e. > 3%
+			(see the rate by "iwpriv ra0 show stainfo")
+
+			Based on different platform, try to find the best value to
+			replace '4' here (overflow rate target is about 0%).
+		*/
+		if (++pAd->FifoUpdateRx >= 4)
+		{
+			NICUpdateFifoStaCounters(pAd);
+			pAd->FifoUpdateRx = 0;
+		}
+#else
+		NICUpdateFifoStaCounters(pAd);
+#endif // VENDOR_FEATURE1_SUPPORT //
+
+		/* Note : If (pAd->ate.bQATxStart == TRUE), we will never reach here. */
+		FREE++;
+#ifndef RT_BIG_ENDIAN
+                pTxD = (PTXD_STRUC) (pTxRing->Cell[pTxRing->TxSwFreeIdx].AllocVa);
+		pOriTxD = pTxD;
+                NdisMoveMemory(&TxD, pTxD, sizeof(TXD_STRUC));
+		pTxD = &TxD;
+#else
+        pDestTxD = (PTXD_STRUC) (pTxRing->Cell[pTxRing->TxSwFreeIdx].AllocVa);
+        pOriTxD = pDestTxD ;
+        TxD = *pDestTxD;
+        pTxD = &TxD;
+        RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD);
+#endif
+
+		pTxD->DMADONE = 0;
+
+
+#ifdef RALINK_ATE
+		/* Execution of this block is not allowed when ATE is running. */
+		if (!(ATE_ON(pAd)))
+#endif // RALINK_ATE //
+		{
+			pPacket = pTxRing->Cell[pTxRing->TxSwFreeIdx].pNdisPacket;
+			if (pPacket)
+			{
+#ifdef CONFIG_5VT_ENHANCE
+				if (RTMP_GET_PACKET_5VT(pPacket))
+					PCI_UNMAP_SINGLE(pAd, pTxD->SDPtr1, 16, PCI_DMA_TODEVICE);
+				else
+#endif // CONFIG_5VT_ENHANCE //
+					PCI_UNMAP_SINGLE(pAd, pTxD->SDPtr1, pTxD->SDLen1, PCI_DMA_TODEVICE);
+				RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_SUCCESS);
+			}
+			//Always assign pNdisPacket as NULL after clear
+			pTxRing->Cell[pTxRing->TxSwFreeIdx].pNdisPacket = NULL;
+
+			pPacket = pTxRing->Cell[pTxRing->TxSwFreeIdx].pNextNdisPacket;
+			if (pPacket)
+			{
+#ifdef CONFIG_5VT_ENHANCE
+				if (RTMP_GET_PACKET_5VT(pPacket))
+					PCI_UNMAP_SINGLE(pAd, pTxD->SDPtr1, 16, PCI_DMA_TODEVICE);
+				else
+#endif // CONFIG_5VT_ENHANCE //
+					PCI_UNMAP_SINGLE(pAd, pTxD->SDPtr1, pTxD->SDLen1, PCI_DMA_TODEVICE);
+				RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_SUCCESS);
+			}
+			//Always assign pNextNdisPacket as NULL after clear
+			pTxRing->Cell[pTxRing->TxSwFreeIdx].pNextNdisPacket = NULL;
+		}
+
+		pAd->RalinkCounters.TransmittedByteCount +=  (pTxD->SDLen1 + pTxD->SDLen0);
+		pAd->RalinkCounters.OneSecDmaDoneCount[QueIdx] ++;
+		INC_RING_INDEX(pTxRing->TxSwFreeIdx, TX_RING_SIZE);
+		/* get tx_tdx_idx again */
+		RTMP_IO_READ32(pAd, TX_DTX_IDX0 + QueIdx * RINGREG_DIFF ,  &pTxRing->TxDmaIdx);
+#ifdef RT_BIG_ENDIAN
+        RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD);
+        *pDestTxD = TxD;
+#else
+        NdisMoveMemory(pOriTxD, pTxD, sizeof(TXD_STRUC));
+#endif
+
+#ifdef RALINK_ATE
+#ifdef RALINK_28xx_QA
+kick_out:
+#endif // RALINK_28xx_QA //
+
+		/*
+			ATE_TXCONT mode also need to send some normal frames, so let it in.
+			ATE_STOP must be changed not to be 0xff
+			to prevent it from running into this block.
+		*/
+		if ((pAd->ate.Mode & ATE_TXFRAME) && (pAd->ate.QID == QueIdx))
+		{
+			// TxDoneCount++ has been done if QA is used.
+			if (pAd->ate.bQATxStart == FALSE)
+			{
+				pAd->ate.TxDoneCount++;
+			}
+			if (((pAd->ate.TxCount - pAd->ate.TxDoneCount + 1) >= TX_RING_SIZE))
+			{
+				/* Note : We increase TxCpuIdx here, not TxSwFreeIdx ! */
+				INC_RING_INDEX(pAd->TxRing[QueIdx].TxCpuIdx, TX_RING_SIZE);
+#ifndef RT_BIG_ENDIAN
+				pTxD = (PTXD_STRUC) (pTxRing->Cell[pAd->TxRing[QueIdx].TxCpuIdx].AllocVa);
+				pOriTxD = pTxD;
+		        NdisMoveMemory(&TxD, pTxD, sizeof(TXD_STRUC));
+				pTxD = &TxD;
+#else
+		        pDestTxD = (PTXD_STRUC) (pTxRing->Cell[pAd->TxRing[QueIdx].TxCpuIdx].AllocVa);
+		        pOriTxD = pDestTxD ;
+		        TxD = *pDestTxD;
+		        pTxD = &TxD;
+		        RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD);
+#endif
+				pTxD->DMADONE = 0;
+#ifndef RT_BIG_ENDIAN
+        		NdisMoveMemory(pOriTxD, pTxD, sizeof(TXD_STRUC));
+#else
+        		RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD);
+        		*pDestTxD = TxD;
+#endif
+				// kick Tx-Ring
+				RTMP_IO_WRITE32(pAd, TX_CTX_IDX0 + QueIdx * RINGREG_DIFF, pAd->TxRing[QueIdx].TxCpuIdx);
+				pAd->RalinkCounters.KickTxCount++;
+			}
+		}
+#endif // RALINK_ATE //
+//         RTMP_IRQ_UNLOCK(&pAd->irq_lock, IrqFlags);
+	}
+
+
+	return  bReschedule;
+
+}
+
+
+/*
+	========================================================================
+
+	Routine Description:
+		Process TX Rings DMA Done interrupt, running in DPC level
+
+	Arguments:
+		Adapter 	Pointer to our adapter
+
+	Return Value:
+		None
+
+	IRQL = DISPATCH_LEVEL
+	
+	========================================================================
+*/
+BOOLEAN	RTMPHandleTxRingDmaDoneInterrupt(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	INT_SOURCE_CSR_STRUC TxRingBitmap)
+{
+//	UCHAR			Count = 0;
+    unsigned long	IrqFlags;
+	BOOLEAN			bReschedule = FALSE;
+	
+	// Make sure Tx ring resource won't be used by other threads
+	//NdisAcquireSpinLock(&pAd->TxRingLock);
+	 
+	RTMP_IRQ_LOCK(&pAd->irq_lock, IrqFlags);
+
+	if (TxRingBitmap.field.Ac0DmaDone)
+		bReschedule = RTMPFreeTXDUponTxDmaDone(pAd, QID_AC_BE);
+
+	if (TxRingBitmap.field.HccaDmaDone)
+		bReschedule |= RTMPFreeTXDUponTxDmaDone(pAd, QID_HCCA);
+
+	if (TxRingBitmap.field.Ac3DmaDone)
+		bReschedule |= RTMPFreeTXDUponTxDmaDone(pAd, QID_AC_VO);
+
+	if (TxRingBitmap.field.Ac2DmaDone)
+		bReschedule |= RTMPFreeTXDUponTxDmaDone(pAd, QID_AC_VI);
+
+	if (TxRingBitmap.field.Ac1DmaDone)
+		bReschedule |= RTMPFreeTXDUponTxDmaDone(pAd, QID_AC_BK);
+
+	// Make sure to release Tx ring resource
+	//NdisReleaseSpinLock(&pAd->TxRingLock);
+	RTMP_IRQ_UNLOCK(&pAd->irq_lock, IrqFlags);
+	
+	// Dequeue outgoing frames from TxSwQueue[] and process it
+	RTMPDeQueuePacket(pAd, FALSE, NUM_OF_TX_RING, MAX_TX_PROCESS);
+
+	return  bReschedule;
+}
+
+
+/*
+	========================================================================
+
+	Routine Description:
+		Process MGMT ring DMA done interrupt, running in DPC level
+
+	Arguments:
+		pAd 	Pointer to our adapter
+
+	Return Value:
+		None
+
+	IRQL = DISPATCH_LEVEL
+	
+	Note:
+
+	========================================================================
+*/
+VOID	RTMPHandleMgmtRingDmaDoneInterrupt(
+	IN	PRTMP_ADAPTER	pAd)
+{
+	PTXD_STRUC	 pTxD;
+#ifdef RT_BIG_ENDIAN
+    PTXD_STRUC      pDestTxD;
+    TXD_STRUC       TxD;
+#endif
+	PNDIS_PACKET pPacket;
+//	int 		 i;
+	UCHAR	FREE = 0;
+	PRTMP_MGMT_RING pMgmtRing = &pAd->MgmtRing;
+
+	NdisAcquireSpinLock(&pAd->MgmtRingLock);
+
+	RTMP_IO_READ32(pAd, TX_MGMTDTX_IDX, &pMgmtRing->TxDmaIdx);
+	while (pMgmtRing->TxSwFreeIdx!= pMgmtRing->TxDmaIdx)
+	{
+		FREE++;
+#ifdef RT_BIG_ENDIAN
+        pDestTxD = (PTXD_STRUC) (pMgmtRing->Cell[pAd->MgmtRing.TxSwFreeIdx].AllocVa);
+        TxD = *pDestTxD;
+        pTxD = &TxD;
+		RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD);
+#else
+		pTxD = (PTXD_STRUC) (pMgmtRing->Cell[pAd->MgmtRing.TxSwFreeIdx].AllocVa);
+#endif
+		pTxD->DMADONE = 0;
+		pPacket = pMgmtRing->Cell[pMgmtRing->TxSwFreeIdx].pNdisPacket;
+
+        if (pPacket == NULL)
+            continue;
+
+
+		if (pPacket)
+		{
+			PCI_UNMAP_SINGLE(pAd, pTxD->SDPtr0, pTxD->SDLen0, PCI_DMA_TODEVICE);
+			RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_SUCCESS);
+		}
+		pMgmtRing->Cell[pMgmtRing->TxSwFreeIdx].pNdisPacket = NULL;
+
+		pPacket = pMgmtRing->Cell[pMgmtRing->TxSwFreeIdx].pNextNdisPacket;
+		if (pPacket)
+		{
+			PCI_UNMAP_SINGLE(pAd, pTxD->SDPtr1, pTxD->SDLen1, PCI_DMA_TODEVICE);
+			RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_SUCCESS);
+		}
+		pMgmtRing->Cell[pMgmtRing->TxSwFreeIdx].pNextNdisPacket = NULL;
+		INC_RING_INDEX(pMgmtRing->TxSwFreeIdx, MGMT_RING_SIZE);
+
+#ifdef RT_BIG_ENDIAN
+        RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD);
+        WriteBackToDescriptor((PUCHAR)pDestTxD, (PUCHAR)pTxD, TRUE, TYPE_TXD);
+#endif
+	}
+	NdisReleaseSpinLock(&pAd->MgmtRingLock);
+
+#ifdef CONFIG_STA_SUPPORT
+#endif // CONFIG_STA_SUPPORT //
+}
+
+
+/*
+	========================================================================
+
+	Routine Description:
+	Arguments:
+		Adapter 	Pointer to our adapter. Dequeue all power safe delayed braodcast frames after beacon.
+
+	IRQL = DISPATCH_LEVEL
+	
+	========================================================================
+*/
+VOID	RTMPHandleTBTTInterrupt(
+	IN PRTMP_ADAPTER pAd)
+{
+	{
+		if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_DOZE))
+		{
+		}
+	}
+}
+
+
+/*
+	========================================================================
+
+	Routine Description:
+	Arguments:
+		pAd 		Pointer to our adapter. Rewrite beacon content before next send-out.
+
+	IRQL = DISPATCH_LEVEL
+	
+	========================================================================
+*/
+VOID	RTMPHandlePreTBTTInterrupt(
+	IN PRTMP_ADAPTER pAd)
+{
+	{
+		if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_DOZE))
+		{
+			DBGPRINT(RT_DEBUG_TRACE, ("RTMPHandlePreTBTTInterrupt...\n"));
+		}
+	}
+
+
+}
+
+VOID	RTMPHandleRxCoherentInterrupt(
+	IN	PRTMP_ADAPTER	pAd)
+{
+	WPDMA_GLO_CFG_STRUC	GloCfg;
+
+	if (pAd == NULL)
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("====> pAd is NULL, return.\n"));
+		return;
+	}
+	
+	DBGPRINT(RT_DEBUG_TRACE, ("==> RTMPHandleRxCoherentInterrupt \n"));
+	
+	RTMP_IO_READ32(pAd, WPDMA_GLO_CFG , &GloCfg.word);
+
+	GloCfg.field.EnTXWriteBackDDONE = 0;
+	GloCfg.field.EnableRxDMA = 0;
+	GloCfg.field.EnableTxDMA = 0;
+	RTMP_IO_WRITE32(pAd, WPDMA_GLO_CFG, GloCfg.word);
+
+	RTMPRingCleanUp(pAd, QID_AC_BE);
+	RTMPRingCleanUp(pAd, QID_AC_BK);
+	RTMPRingCleanUp(pAd, QID_AC_VI);
+	RTMPRingCleanUp(pAd, QID_AC_VO);
+	RTMPRingCleanUp(pAd, QID_HCCA);
+	RTMPRingCleanUp(pAd, QID_MGMT);
+	RTMPRingCleanUp(pAd, QID_RX);
+
+	RTMPEnableRxTx(pAd);
+	
+	DBGPRINT(RT_DEBUG_TRACE, ("<== RTMPHandleRxCoherentInterrupt \n"));
+}
+
+
+
+
+VOID DBGPRINT_TX_RING(
+	IN PRTMP_ADAPTER  pAd,
+	IN UCHAR          QueIdx)
+{
+	UINT32		Ac0Base;
+	UINT32		Ac0HwIdx = 0, Ac0SwIdx = 0, AC0freeIdx;
+	int			i;
+//	PULONG		pTxD;
+	PULONG	ptemp;
+
+	DBGPRINT_RAW(RT_DEBUG_TRACE, ("=====================================================\n "  ));
+	switch (QueIdx)
+	{
+		case QID_AC_BE:
+			RTMP_IO_READ32(pAd, TX_BASE_PTR0, &Ac0Base);
+			RTMP_IO_READ32(pAd, TX_CTX_IDX0, &Ac0SwIdx);
+			RTMP_IO_READ32(pAd, TX_DTX_IDX0, &Ac0HwIdx);
+			DBGPRINT_RAW(RT_DEBUG_TRACE, ("All QID_AC_BE DESCRIPTOR  \n "  ));
+			for (i=0;i<TX_RING_SIZE;i++)
+			{
+				ptemp= (PULONG)pAd->TxRing[QID_AC_BE].Cell[i].AllocVa;
+				DBGPRINT_RAW(RT_DEBUG_TRACE, ("[%02d]  %08lx: %08lx: %08lx: %08lx\n " , i, *ptemp,*(ptemp+1),*(ptemp+2),*(ptemp+3)));
+			}
+			DBGPRINT_RAW(RT_DEBUG_TRACE, ("  \n "  ));
+			break;
+		case QID_AC_BK:
+			RTMP_IO_READ32(pAd, TX_BASE_PTR1, &Ac0Base);
+			RTMP_IO_READ32(pAd, TX_CTX_IDX1, &Ac0SwIdx);
+			RTMP_IO_READ32(pAd, TX_DTX_IDX1, &Ac0HwIdx);
+			DBGPRINT_RAW(RT_DEBUG_TRACE, ("All QID_AC_BK DESCRIPTOR  \n "  ));
+			for (i=0;i<TX_RING_SIZE;i++)
+			{
+				ptemp= (PULONG)pAd->TxRing[QID_AC_BK].Cell[i].AllocVa;
+				DBGPRINT_RAW(RT_DEBUG_TRACE, ("[%02d]  %08lx: %08lx: %08lx: %08lx\n " , i, *ptemp,*(ptemp+1),*(ptemp+2),*(ptemp+3)));
+			}
+			DBGPRINT_RAW(RT_DEBUG_TRACE, ("  \n "  ));
+			break;
+		case QID_AC_VI:
+			RTMP_IO_READ32(pAd, TX_BASE_PTR2, &Ac0Base);
+			RTMP_IO_READ32(pAd, TX_CTX_IDX2, &Ac0SwIdx);
+			RTMP_IO_READ32(pAd, TX_DTX_IDX2, &Ac0HwIdx);
+			DBGPRINT_RAW(RT_DEBUG_TRACE, ("All QID_AC_VI DESCRIPTOR \n "  ));
+			for (i=0;i<TX_RING_SIZE;i++)
+			{
+				ptemp= (PULONG)pAd->TxRing[QID_AC_VI].Cell[i].AllocVa;
+				DBGPRINT_RAW(RT_DEBUG_TRACE, ("[%02d]  %08lx: %08lx: %08lx: %08lx\n " , i, *ptemp,*(ptemp+1),*(ptemp+2),*(ptemp+3)));
+			}
+			DBGPRINT_RAW(RT_DEBUG_TRACE, ("  \n "  ));
+			break;
+		case QID_AC_VO:
+			RTMP_IO_READ32(pAd, TX_BASE_PTR3, &Ac0Base);
+			RTMP_IO_READ32(pAd, TX_CTX_IDX3, &Ac0SwIdx);
+			RTMP_IO_READ32(pAd, TX_DTX_IDX3, &Ac0HwIdx);
+			DBGPRINT_RAW(RT_DEBUG_TRACE, ("All QID_AC_VO DESCRIPTOR \n "  ));
+			for (i=0;i<TX_RING_SIZE;i++)
+			{
+				ptemp= (PULONG)pAd->TxRing[QID_AC_VO].Cell[i].AllocVa;
+				DBGPRINT_RAW(RT_DEBUG_TRACE, ("[%02d]  %08lx: %08lx: %08lx: %08lx\n " , i, *ptemp,*(ptemp+1),*(ptemp+2),*(ptemp+3)));
+			}
+			DBGPRINT_RAW(RT_DEBUG_TRACE, ("  \n "  ));
+			break;
+		case QID_MGMT:
+			RTMP_IO_READ32(pAd, TX_BASE_PTR5, &Ac0Base);
+			RTMP_IO_READ32(pAd, TX_CTX_IDX5, &Ac0SwIdx);
+			RTMP_IO_READ32(pAd, TX_DTX_IDX5, &Ac0HwIdx);
+			DBGPRINT_RAW(RT_DEBUG_TRACE, (" All QID_MGMT  DESCRIPTOR \n "  ));
+			for (i=0;i<MGMT_RING_SIZE;i++)
+			{
+				ptemp= (PULONG)pAd->MgmtRing.Cell[i].AllocVa;
+				DBGPRINT_RAW(RT_DEBUG_TRACE, ("[%02d]  %08lx: %08lx: %08lx: %08lx\n " , i, *ptemp,*(ptemp+1),*(ptemp+2),*(ptemp+3)));
+			}
+			DBGPRINT_RAW(RT_DEBUG_TRACE, ("  \n "  ));
+			break;
+			
+		default:
+			DBGPRINT_ERR(("DBGPRINT_TX_RING(Ring %d) not supported\n", QueIdx));
+			break;
+	}
+
+    if (QueIdx < NUM_OF_TX_RING) {
+    	AC0freeIdx = pAd->TxRing[QueIdx].TxSwFreeIdx;
+
+    	DBGPRINT(RT_DEBUG_TRACE,("TxRing%d, TX_DTX_IDX=%d, TX_CTX_IDX=%d\n", QueIdx, Ac0HwIdx, Ac0SwIdx));
+    	DBGPRINT_RAW(RT_DEBUG_TRACE,(" 	TxSwFreeIdx[%d]", AC0freeIdx));
+    	DBGPRINT_RAW(RT_DEBUG_TRACE,("	pending-NDIS=%ld\n", pAd->RalinkCounters.PendingNdisPacketCount));
+    } else if (QueIdx == QID_MGMT) {
+    	AC0freeIdx = pAd->MgmtRing.TxSwFreeIdx;
+
+    	DBGPRINT(RT_DEBUG_TRACE,("TxRing%d, TX_DTX_IDX=%d, TX_CTX_IDX=%d\n", QueIdx, Ac0HwIdx, Ac0SwIdx));
+    	DBGPRINT_RAW(RT_DEBUG_TRACE,(" 	TxSwFreeIdx[%d]", AC0freeIdx));
+    	DBGPRINT_RAW(RT_DEBUG_TRACE,("	pending-NDIS=%ld\n", pAd->RalinkCounters.PendingNdisPacketCount));
+    }
+	
+}
+
+
+VOID DBGPRINT_RX_RING(
+	IN PRTMP_ADAPTER  pAd)
+{
+	UINT32		Ac0Base;
+	UINT32		Ac0HwIdx = 0, Ac0SwIdx = 0, AC0freeIdx;
+//	PULONG	 pTxD;
+	int			i;
+	UINT32	*ptemp;
+//	PRXD_STRUC		pRxD;
+	
+	DBGPRINT_RAW(RT_DEBUG_TRACE, ("=====================================================\n "  ));
+	RTMP_IO_READ32(pAd, RX_BASE_PTR, &Ac0Base);
+	RTMP_IO_READ32(pAd, RX_CRX_IDX, &Ac0SwIdx);
+	RTMP_IO_READ32(pAd, RX_DRX_IDX, &Ac0HwIdx);
+	AC0freeIdx = pAd->RxRing.RxSwReadIdx;
+
+	DBGPRINT_RAW(RT_DEBUG_TRACE, ("All RX DSP  \n "  ));
+	for (i=0;i<RX_RING_SIZE;i++)
+	{
+		ptemp = (UINT32 *)pAd->RxRing.Cell[i].AllocVa;
+		DBGPRINT_RAW(RT_DEBUG_TRACE, ("[%02d]  %08x: %08x: %08x: %08x\n " , i, *ptemp,*(ptemp+1),*(ptemp+2),*(ptemp+3)));
+	}
+	DBGPRINT(RT_DEBUG_TRACE,("RxRing, RX_DRX_IDX=%d, RX_CRX_IDX=%d \n", Ac0HwIdx, Ac0SwIdx));
+	DBGPRINT_RAW(RT_DEBUG_TRACE,(" 	RxSwReadIdx [%d]=", AC0freeIdx));
+	DBGPRINT_RAW(RT_DEBUG_TRACE,("	pending-NDIS=%ld\n", pAd->RalinkCounters.PendingNdisPacketCount));
+}
+
+
+PNDIS_PACKET GetPacketFromRxRing(
+	IN		PRTMP_ADAPTER	pAd,
+	OUT		PRT28XX_RXD_STRUC	pSaveRxD,
+	OUT		BOOLEAN			*pbReschedule,
+	IN OUT	UINT32			*pRxPending)
+{
+	PRXD_STRUC				pRxD;
+#ifdef RT_BIG_ENDIAN
+	PRXD_STRUC				pDestRxD;
+	RXD_STRUC				RxD;
+#endif
+	PNDIS_PACKET			pRxPacket = NULL;
+	PNDIS_PACKET			pNewPacket;
+	PVOID					AllocVa;
+	NDIS_PHYSICAL_ADDRESS	AllocPa;
+	BOOLEAN					bReschedule = FALSE;
+	RTMP_DMACB				*pRxCell;
+
+	RTMP_SEM_LOCK(&pAd->RxRingLock);
+
+	if (*pRxPending == 0)
+	{
+		// Get how may packets had been received
+		RTMP_IO_READ32(pAd, RX_DRX_IDX , &pAd->RxRing.RxDmaIdx);
+
+		if (pAd->RxRing.RxSwReadIdx == pAd->RxRing.RxDmaIdx)
+		{
+			// no more rx packets
+			bReschedule = FALSE;
+			goto done;
+		}
+
+		// get rx pending count
+		if (pAd->RxRing.RxDmaIdx > pAd->RxRing.RxSwReadIdx)
+			*pRxPending = pAd->RxRing.RxDmaIdx - pAd->RxRing.RxSwReadIdx;
+		else
+			*pRxPending	= pAd->RxRing.RxDmaIdx + RX_RING_SIZE - pAd->RxRing.RxSwReadIdx;
+
+	}
+
+	pRxCell = &pAd->RxRing.Cell[pAd->RxRing.RxSwReadIdx];
+
+#ifdef RT_BIG_ENDIAN
+	pDestRxD = (PRXD_STRUC) pRxCell->AllocVa;
+	RxD = *pDestRxD;
+	pRxD = &RxD;
+	RTMPDescriptorEndianChange((PUCHAR)pRxD, TYPE_RXD);
+#else
+	// Point to Rx indexed rx ring descriptor
+	pRxD = (PRXD_STRUC) pRxCell->AllocVa;
+#endif
+
+	if (pRxD->DDONE == 0)
+	{
+		*pRxPending = 0;
+		// DMAIndx had done but DDONE bit not ready
+		bReschedule = TRUE;
+		goto done;
+	}
+
+
+	// return rx descriptor
+	NdisMoveMemory(pSaveRxD, pRxD, RXD_SIZE);
+
+	pNewPacket = RTMP_AllocateRxPacketBuffer(pAd, RX_BUFFER_AGGRESIZE, FALSE, &AllocVa, &AllocPa);
+
+	if (pNewPacket)
+	{
+		// unmap the rx buffer
+		PCI_UNMAP_SINGLE(pAd, pRxCell->DmaBuf.AllocPa,
+					 pRxCell->DmaBuf.AllocSize, PCI_DMA_FROMDEVICE);
+		pRxPacket = pRxCell->pNdisPacket;
+
+		pRxCell->DmaBuf.AllocSize	= RX_BUFFER_AGGRESIZE;
+		pRxCell->pNdisPacket		= (PNDIS_PACKET) pNewPacket;
+		pRxCell->DmaBuf.AllocVa	= AllocVa;
+		pRxCell->DmaBuf.AllocPa	= AllocPa;
+		/* update SDP0 to new buffer of rx packet */
+		pRxD->SDP0 = AllocPa;
+	}
+	else 
+	{
+		//DBGPRINT(RT_DEBUG_TRACE,("No Rx Buffer\n"));
+		pRxPacket = NULL;
+		bReschedule = TRUE;
+	}
+
+	pRxD->DDONE = 0;
+
+	// had handled one rx packet
+	*pRxPending = *pRxPending - 1;	
+
+	// update rx descriptor and kick rx 
+#ifdef RT_BIG_ENDIAN
+	RTMPDescriptorEndianChange((PUCHAR)pRxD, TYPE_RXD);
+	WriteBackToDescriptor((PUCHAR)pDestRxD, (PUCHAR)pRxD, FALSE, TYPE_RXD);
+#endif
+	INC_RING_INDEX(pAd->RxRing.RxSwReadIdx, RX_RING_SIZE);
+
+	pAd->RxRing.RxCpuIdx = (pAd->RxRing.RxSwReadIdx == 0) ? (RX_RING_SIZE-1) : (pAd->RxRing.RxSwReadIdx-1);
+	RTMP_IO_WRITE32(pAd, RX_CRX_IDX, pAd->RxRing.RxCpuIdx);
+
+done:
+	RTMP_SEM_UNLOCK(&pAd->RxRingLock);
+	*pbReschedule = bReschedule;
+	return pRxPacket;
+}
+
+
+NDIS_STATUS MlmeHardTransmitTxRing(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	UCHAR	QueIdx,
+	IN	PNDIS_PACKET	pPacket)
+{
+	PACKET_INFO 	PacketInfo;
+	PUCHAR			pSrcBufVA;
+	UINT			SrcBufLen;
+	PTXD_STRUC		pTxD;
+#ifdef RT_BIG_ENDIAN
+    PTXD_STRUC      pDestTxD;
+    TXD_STRUC       TxD;
+#endif
+	PHEADER_802_11	pHeader_802_11;
+	BOOLEAN 		bAckRequired, bInsertTimestamp;
+	ULONG			SrcBufPA;
+	//UCHAR			TxBufIdx;
+	UCHAR			MlmeRate;
+	ULONG			SwIdx = pAd->TxRing[QueIdx].TxCpuIdx;
+	PTXWI_STRUC 	pFirstTxWI;
+	//ULONG	i;
+	//HTTRANSMIT_SETTING	MlmeTransmit;   //Rate for this MGMT frame.
+	ULONG	 FreeNum;
+	MAC_TABLE_ENTRY	*pMacEntry = NULL;
+
+
+	RTMP_QueryPacketInfo(pPacket, &PacketInfo, &pSrcBufVA, &SrcBufLen);
+
+
+	if (pSrcBufVA == NULL)
+	{
+		// The buffer shouldn't be NULL
+		return NDIS_STATUS_FAILURE;
+	}
+
+	// Make sure MGMT ring resource won't be used by other threads
+	//NdisAcquireSpinLock(&pAd->TxRingLock);
+
+	FreeNum = GET_TXRING_FREENO(pAd, QueIdx);
+
+	if (FreeNum == 0)
+	{
+		//NdisReleaseSpinLock(&pAd->TxRingLock);
+		return NDIS_STATUS_FAILURE;
+	}
+
+	SwIdx = pAd->TxRing[QueIdx].TxCpuIdx;
+
+#ifndef RT_BIG_ENDIAN
+	pTxD  = (PTXD_STRUC) pAd->TxRing[QueIdx].Cell[SwIdx].AllocVa;
+#else
+    pDestTxD  = (PTXD_STRUC)pAd->TxRing[QueIdx].Cell[SwIdx].AllocVa;
+    TxD = *pDestTxD;
+    pTxD = &TxD;
+    RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD);
+#endif
+
+	if (pAd->TxRing[QueIdx].Cell[SwIdx].pNdisPacket)
+	{
+		DBGPRINT(RT_DEBUG_OFF, ("MlmeHardTransmit Error\n"));
+		//NdisReleaseSpinLock(&pAd->TxRingLock);
+		return NDIS_STATUS_FAILURE;
+	}
+
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+		// outgoing frame always wakeup PHY to prevent frame lost
+		// if (pAd->StaCfg.Psm == PWR_SAVE)
+		if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_DOZE))
+			AsicForceWakeup(pAd, TRUE);
+	}
+#endif // CONFIG_STA_SUPPORT //
+	pFirstTxWI	=(PTXWI_STRUC)pSrcBufVA;
+	
+	pHeader_802_11 = (PHEADER_802_11) (pSrcBufVA + TXWI_SIZE);
+	if (pHeader_802_11->Addr1[0] & 0x01)
+	{
+		MlmeRate = pAd->CommonCfg.BasicMlmeRate;
+	}
+	else
+	{
+		MlmeRate = pAd->CommonCfg.MlmeRate;
+	}
+	
+	if ((pHeader_802_11->FC.Type == BTYPE_DATA) &&
+		(pHeader_802_11->FC.SubType == SUBTYPE_QOS_NULL))
+	{
+		pMacEntry = MacTableLookup(pAd, pHeader_802_11->Addr1);
+	}
+
+	// Verify Mlme rate for a / g bands.
+	if ((pAd->LatchRfRegs.Channel > 14) && (MlmeRate < RATE_6)) // 11A band
+		MlmeRate = RATE_6;
+
+	//
+	// Should not be hard code to set PwrMgmt to 0 (PWR_ACTIVE)
+	// Snice it's been set to 0 while on MgtMacHeaderInit
+	// By the way this will cause frame to be send on PWR_SAVE failed.
+	//
+	//
+	// In WMM-UAPSD, mlme frame should be set psm as power saving but probe request frame
+#ifdef CONFIG_STA_SUPPORT
+    // Data-Null packets alse pass through MMRequest in RT2860, however, we hope control the psm bit to pass APSD
+	if (pHeader_802_11->FC.Type != BTYPE_DATA)
+    {
+    	if ((pHeader_802_11->FC.SubType == SUBTYPE_PROBE_REQ) || !(pAd->CommonCfg.bAPSDCapable && pAd->CommonCfg.APEdcaParm.bAPSDCapable))
+    	{
+    		pHeader_802_11->FC.PwrMgmt = PWR_ACTIVE;
+    	}
+    	else
+    	{
+    		pHeader_802_11->FC.PwrMgmt = pAd->CommonCfg.bAPSDForcePowerSave;
+    	}
+    }
+#endif // CONFIG_STA_SUPPORT //
+	
+	bInsertTimestamp = FALSE;
+	if (pHeader_802_11->FC.Type == BTYPE_CNTL) // must be PS-POLL
+	{
+		bAckRequired = FALSE;
+	}
+	else // BTYPE_MGMT or BTYPE_DATA(must be NULL frame)
+	{
+		if (pHeader_802_11->Addr1[0] & 0x01) // MULTICAST, BROADCAST
+		{
+			bAckRequired = FALSE;
+			pHeader_802_11->Duration = 0;
+		}
+		else
+		{
+			bAckRequired = TRUE;
+			pHeader_802_11->Duration = RTMPCalcDuration(pAd, MlmeRate, 14);
+			if (pHeader_802_11->FC.SubType == SUBTYPE_PROBE_RSP)
+			{
+				bInsertTimestamp = TRUE;
+			}
+		}
+	}
+	pHeader_802_11->Sequence = pAd->Sequence++;
+	if (pAd->Sequence > 0xfff)
+		pAd->Sequence = 0;
+	// Before radar detection done, mgmt frame can not be sent but probe req
+	// Because we need to use probe req to trigger driver to send probe req in passive scan
+	if ((pHeader_802_11->FC.SubType != SUBTYPE_PROBE_REQ)
+		&& (pAd->CommonCfg.bIEEE80211H == 1)
+		&& (pAd->CommonCfg.RadarDetect.RDMode != RD_NORMAL_MODE))
+	{
+		DBGPRINT(RT_DEBUG_ERROR,("MlmeHardTransmit --> radar detect not in normal mode !!!\n"));
+		//NdisReleaseSpinLock(&pAd->TxRingLock);
+		return (NDIS_STATUS_FAILURE);
+	}
+
+
+#ifdef RT_BIG_ENDIAN
+	RTMPFrameEndianChange(pAd, (PUCHAR)pHeader_802_11, DIR_WRITE, FALSE);
+#endif
+	//
+	// fill scatter-and-gather buffer list into TXD. Internally created NDIS PACKET
+	// should always has only one ohysical buffer, and the whole frame size equals
+	// to the first scatter buffer size
+	//
+
+	// Initialize TX Descriptor
+	// For inter-frame gap, the number is for this frame and next frame
+	// For MLME rate, we will fix as 2Mb to match other vendor's implement
+//	pAd->CommonCfg.MlmeTransmit.field.MODE = 1;
+	
+// management frame doesn't need encryption. so use RESERVED_WCID no matter u are sending to specific wcid or not.
+	// Only beacon use Nseq=TRUE. So here we use Nseq=FALSE.
+	if (pMacEntry == NULL)
+	{
+	RTMPWriteTxWI(pAd, pFirstTxWI, FALSE, FALSE, bInsertTimestamp, FALSE, bAckRequired, FALSE,
+		0, RESERVED_WCID, (SrcBufLen - TXWI_SIZE), PID_MGMT, 0,  (UCHAR)pAd->CommonCfg.MlmeTransmit.field.MCS, IFS_BACKOFF, FALSE, &pAd->CommonCfg.MlmeTransmit);
+	}
+	else
+	{
+		RTMPWriteTxWI(pAd, pFirstTxWI, FALSE, FALSE,
+					bInsertTimestamp, FALSE, bAckRequired, FALSE,
+					0, pMacEntry->Aid, (SrcBufLen - TXWI_SIZE),
+					pMacEntry->MaxHTPhyMode.field.MCS, 0,
+					(UCHAR)pMacEntry->MaxHTPhyMode.field.MCS,
+					IFS_BACKOFF, FALSE, &pMacEntry->MaxHTPhyMode);
+	}
+
+	pAd->TxRing[QueIdx].Cell[SwIdx].pNdisPacket = pPacket;
+	pAd->TxRing[QueIdx].Cell[SwIdx].pNextNdisPacket = NULL;
+//	pFirstTxWI->MPDUtotalByteCount = SrcBufLen - TXWI_SIZE;
+#ifdef RT_BIG_ENDIAN
+	RTMPWIEndianChange((PUCHAR)pFirstTxWI, TYPE_TXWI);
+#endif
+	SrcBufPA = PCI_MAP_SINGLE(pAd, pSrcBufVA, SrcBufLen, 0, PCI_DMA_TODEVICE);
+
+
+	RTMPWriteTxDescriptor(pAd, pTxD, TRUE, FIFO_EDCA);
+	pTxD->LastSec0 = 1;
+	pTxD->LastSec1 = 1;
+	pTxD->SDLen0 = SrcBufLen;
+	pTxD->SDLen1 = 0;
+	pTxD->SDPtr0 = SrcBufPA;
+	pTxD->DMADONE = 0;
+
+#ifdef RT_BIG_ENDIAN
+    RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD);
+    WriteBackToDescriptor((PUCHAR)pDestTxD, (PUCHAR)pTxD, FALSE, TYPE_TXD);
+#endif
+
+	pAd->RalinkCounters.KickTxCount++;
+	pAd->RalinkCounters.OneSecTxDoneCount++;
+
+   	// Increase TX_CTX_IDX, but write to register later.
+	INC_RING_INDEX(pAd->TxRing[QueIdx].TxCpuIdx, TX_RING_SIZE);
+
+	RTMP_IO_WRITE32(pAd, TX_CTX_IDX0 + QueIdx*0x10,  pAd->TxRing[QueIdx].TxCpuIdx);
+
+   	// Make sure to release MGMT ring resource
+//	NdisReleaseSpinLock(&pAd->TxRingLock);
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+NDIS_STATUS MlmeDataHardTransmit(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	UCHAR	QueIdx,
+	IN	PNDIS_PACKET	pPacket)
+{
+	if ((pAd->CommonCfg.RadarDetect.RDMode != RD_NORMAL_MODE)
+		)
+	{
+		return NDIS_STATUS_FAILURE;
+	}
+
+	return MlmeHardTransmitTxRing(pAd,QueIdx,pPacket);
+}
+
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Calculates the duration which is required to transmit out frames
+	with given size and specified rate.
+		
+	Arguments:
+		pTxD		Pointer to transmit descriptor
+		Ack 		Setting for Ack requirement bit
+		Fragment	Setting for Fragment bit
+		RetryMode	Setting for retry mode
+		Ifs 		Setting for IFS gap
+		Rate		Setting for transmit rate
+		Service 	Setting for service
+		Length		Frame length
+		TxPreamble	Short or Long preamble when using CCK rates
+		QueIdx - 0-3, according to 802.11e/d4.4 June/2003
+		
+	Return Value:
+		None
+		
+	IRQL = PASSIVE_LEVEL
+	IRQL = DISPATCH_LEVEL
+	
+	========================================================================
+*/
+VOID RTMPWriteTxDescriptor(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PTXD_STRUC		pTxD,
+	IN	BOOLEAN 		bWIV,
+	IN	UCHAR			QueueSEL)
+{
+	//
+	// Always use Long preamble before verifiation short preamble functionality works well.
+	// Todo: remove the following line if short preamble functionality works
+	//
+	OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_SHORT_PREAMBLE_INUSED);
+
+	pTxD->WIV	= (bWIV) ? 1: 0;
+	pTxD->QSEL= (QueueSEL);
+	//RT2860c??  fixed using EDCA queue for test...  We doubt Queue1 has problem.  2006-09-26 Jan
+	//pTxD->QSEL= FIFO_EDCA;
+	if (pAd->bGenOneHCCA == TRUE)
+		pTxD->QSEL= FIFO_HCCA;
+	pTxD->DMADONE = 0;
+}
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_info.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_info.c
new file mode 100644
index 000000000..803f7b5f4
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_info.c
@@ -0,0 +1,3995 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+    Module Name:
+	cmm_info.c
+ 
+    Abstract:
+ 
+    Revision History:
+    Who          When          What
+    ---------    ----------    ----------------------------------------------
+ */
+ 
+#include	"rt_config.h"
+
+
+INT	Show_SSID_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf);
+
+INT	Show_WirelessMode_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf);
+
+INT	Show_TxBurst_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf);
+
+INT	Show_TxPreamble_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf);
+
+INT	Show_TxPower_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf);
+
+INT	Show_Channel_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf);
+
+INT	Show_BGProtection_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf);
+
+INT	Show_RTSThreshold_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf);
+
+INT	Show_FragThreshold_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf);
+
+#ifdef DOT11_N_SUPPORT
+INT	Show_HtBw_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf);
+
+INT	Show_HtMcs_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf);
+
+INT	Show_HtGi_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf);
+
+INT	Show_HtOpMode_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf);
+
+INT	Show_HtExtcha_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf);
+
+INT	Show_HtMpduDensity_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf);
+
+INT	Show_HtBaWinSize_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf);
+
+INT	Show_HtRdg_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf);
+
+INT	Show_HtAmsdu_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf);
+
+INT	Show_HtAutoBa_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf);
+#endif // DOT11_N_SUPPORT //
+
+INT	Show_CountryRegion_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf);
+
+INT	Show_CountryRegionABand_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf);
+
+INT	Show_CountryCode_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf);
+
+#ifdef AGGREGATION_SUPPORT
+INT	Show_PktAggregate_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf);
+#endif // AGGREGATION_SUPPORT //
+
+#ifdef WMM_SUPPORT
+INT	Show_WmmCapable_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf);
+#endif // WMM_SUPPORT //
+
+INT	Show_IEEE80211H_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf);
+
+#ifdef CONFIG_STA_SUPPORT
+INT	Show_NetworkType_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf);
+
+
+INT	Show_WPAPSK_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf);
+
+
+INT	Show_AutoReconnect_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf);
+#endif // CONFIG_STA_SUPPORT //
+
+INT	Show_AuthMode_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf);
+
+INT	Show_EncrypType_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf);
+
+INT	Show_DefaultKeyID_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf);
+
+INT	Show_Key1_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf);
+
+INT	Show_Key2_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf);
+
+INT	Show_Key3_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf);
+
+INT	Show_Key4_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf);
+
+INT	Show_PMK_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf);
+
+extern INT	Set_AP_WscConfStatus_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+extern INT	Set_AP_AuthMode_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+extern INT	Set_AP_EncrypType_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+extern INT	Set_AP_SSID_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+extern INT	Set_AP_WPAPSK_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+static struct {
+	PSTRING name;
+	INT (*show_proc)(PRTMP_ADAPTER pAdapter, PSTRING arg);
+} *PRTMP_PRIVATE_STA_SHOW_CFG_VALUE_PROC, RTMP_PRIVATE_STA_SHOW_CFG_VALUE_PROC[] = {
+	{"SSID",					Show_SSID_Proc}, 
+	{"WirelessMode",			Show_WirelessMode_Proc},       
+	{"TxBurst",					Show_TxBurst_Proc},
+	{"TxPreamble",				Show_TxPreamble_Proc},
+	{"TxPower",					Show_TxPower_Proc},
+	{"Channel",					Show_Channel_Proc},            
+	{"BGProtection",			Show_BGProtection_Proc},
+	{"RTSThreshold",			Show_RTSThreshold_Proc},       
+	{"FragThreshold",			Show_FragThreshold_Proc},      
+#ifdef DOT11_N_SUPPORT
+	{"HtBw",					Show_HtBw_Proc},
+	{"HtMcs",					Show_HtMcs_Proc},
+	{"HtGi",					Show_HtGi_Proc},
+	{"HtOpMode",				Show_HtOpMode_Proc},
+	{"HtExtcha",				Show_HtExtcha_Proc},
+	{"HtMpduDensity",			Show_HtMpduDensity_Proc},
+	{"HtBaWinSize",		        Show_HtBaWinSize_Proc},
+	{"HtRdg",		        	Show_HtRdg_Proc},
+	{"HtAmsdu",		        	Show_HtAmsdu_Proc},
+	{"HtAutoBa",		        Show_HtAutoBa_Proc},
+#endif // DOT11_N_SUPPORT //
+	{"CountryRegion",			Show_CountryRegion_Proc},
+	{"CountryRegionABand",		Show_CountryRegionABand_Proc},
+	{"CountryCode",				Show_CountryCode_Proc},
+#ifdef AGGREGATION_SUPPORT
+	{"PktAggregate",			Show_PktAggregate_Proc},       
+#endif
+
+#ifdef WMM_SUPPORT
+	{"WmmCapable",				Show_WmmCapable_Proc},         
+#endif         
+	{"IEEE80211H",				Show_IEEE80211H_Proc},
+#ifdef CONFIG_STA_SUPPORT	
+    {"NetworkType",				Show_NetworkType_Proc},        
+	{"WPAPSK",					Show_WPAPSK_Proc},
+	{"AutoReconnect", 			Show_AutoReconnect_Proc},
+#endif // CONFIG_STA_SUPPORT //
+	{"AuthMode",				Show_AuthMode_Proc},           
+	{"EncrypType",				Show_EncrypType_Proc},         
+	{"DefaultKeyID",			Show_DefaultKeyID_Proc},       
+	{"Key1",					Show_Key1_Proc},               
+	{"Key2",					Show_Key2_Proc},               
+	{"Key3",					Show_Key3_Proc},               
+	{"Key4",					Show_Key4_Proc},               
+	{"PMK",						Show_PMK_Proc},
+	{NULL, NULL}
+};
+
+/*
+    ==========================================================================
+    Description:
+        Get Driver version.
+
+    Return:
+    ==========================================================================
+*/
+INT Set_DriverVersion_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		DBGPRINT(RT_DEBUG_TRACE, ("Driver version-%s\n", STA_DRIVER_VERSION));
+#endif // CONFIG_STA_SUPPORT //
+
+    return TRUE;
+}
+
+/* 
+    ==========================================================================
+    Description:
+        Set Country Region.
+        This command will not work, if the field of CountryRegion in eeprom is programmed.
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+    ==========================================================================
+*/
+INT Set_CountryRegion_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	int retval;
+	
+#ifdef EXT_BUILD_CHANNEL_LIST
+	return -EOPNOTSUPP;
+#endif // EXT_BUILD_CHANNEL_LIST //
+
+	retval = RT_CfgSetCountryRegion(pAd, arg, BAND_24G);
+	if (retval == FALSE)
+		return FALSE;
+	
+	// if set country region, driver needs to be reset
+	BuildChannelList(pAd);
+
+	DBGPRINT(RT_DEBUG_TRACE, ("Set_CountryRegion_Proc::(CountryRegion=%d)\n", pAd->CommonCfg.CountryRegion));
+	
+	return TRUE;
+}
+
+
+/* 
+    ==========================================================================
+    Description:
+        Set Country Region for A band.
+        This command will not work, if the field of CountryRegion in eeprom is programmed.
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+    ==========================================================================
+*/
+INT Set_CountryRegionABand_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	int retval;
+
+#ifdef EXT_BUILD_CHANNEL_LIST
+	return -EOPNOTSUPP;
+#endif // EXT_BUILD_CHANNEL_LIST //
+
+	retval = RT_CfgSetCountryRegion(pAd, arg, BAND_5G);
+	if (retval == FALSE)
+		return FALSE;
+
+	// if set country region, driver needs to be reset
+	BuildChannelList(pAd);
+
+	DBGPRINT(RT_DEBUG_TRACE, ("Set_CountryRegionABand_Proc::(CountryRegion=%d)\n", pAd->CommonCfg.CountryRegionForABand));
+	
+	return TRUE;
+}
+
+
+/* 
+    ==========================================================================
+    Description:
+        Set Wireless Mode
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+    ==========================================================================
+*/
+INT	Set_WirelessMode_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	INT	success = TRUE;
+
+	success = RT_CfgSetWirelessMode(pAd, arg);
+	if (success)
+	{
+
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		{
+			LONG	WirelessMode = pAd->CommonCfg.PhyMode;
+
+			/* clean up previous SCAN result */
+			BssTableInit(&pAd->ScanTab);
+			if (pAd->StaCfg.LastScanTime > 10 * OS_HZ)
+				pAd->StaCfg.LastScanTime -= (10 * OS_HZ);
+			
+			RTMPSetPhyMode(pAd, WirelessMode);
+#ifdef DOT11_N_SUPPORT
+			if (WirelessMode >= PHY_11ABGN_MIXED)
+			{
+				pAd->CommonCfg.BACapability.field.AutoBA = TRUE;
+				pAd->CommonCfg.REGBACapability.field.AutoBA = TRUE;
+			}
+			else
+			{
+				pAd->CommonCfg.BACapability.field.AutoBA = FALSE;
+				pAd->CommonCfg.REGBACapability.field.AutoBA = FALSE;
+			}
+#endif // DOT11_N_SUPPORT //
+			// Set AdhocMode rates
+			if (pAd->StaCfg.BssType == BSS_ADHOC)
+			{
+				MlmeUpdateTxRates(pAd, FALSE, 0);
+				MakeIbssBeacon(pAd);           // re-build BEACON frame
+				AsicEnableIbssSync(pAd);       // copy to on-chip memory
+			}
+		}
+#endif // CONFIG_STA_SUPPORT //
+
+		// it is needed to set SSID to take effect
+#ifdef DOT11_N_SUPPORT
+		SetCommonHT(pAd);
+#endif // DOT11_N_SUPPORT //
+
+		DBGPRINT(RT_DEBUG_TRACE, ("Set_WirelessMode_Proc::(=%d)\n", pAd->CommonCfg.PhyMode));
+	}
+	else
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("Set_WirelessMode_Proc::parameters out of range\n"));
+	}
+	
+	return success;
+}
+
+/* 
+    ==========================================================================
+    Description:
+        Set Channel
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+    ==========================================================================
+*/
+INT	Set_Channel_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+ 	INT		success = TRUE;
+	UCHAR	Channel;	
+
+	Channel = (UCHAR) simple_strtol(arg, 0, 10);
+
+	// check if this channel is valid
+	if (ChannelSanity(pAd, Channel) == TRUE)
+	{
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		{
+			pAd->CommonCfg.Channel = Channel;        
+
+			if (MONITOR_ON(pAd))
+			{
+#ifdef DOT11_N_SUPPORT
+				N_ChannelCheck(pAd);
+				if (pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED &&
+					pAd->CommonCfg.RegTransmitSetting.field.BW == BW_40)
+				{
+					N_SetCenCh(pAd);
+						AsicSwitchChannel(pAd, pAd->CommonCfg.CentralChannel, FALSE);
+						AsicLockChannel(pAd, pAd->CommonCfg.CentralChannel);
+					DBGPRINT(RT_DEBUG_TRACE, ("BW_40, control_channel(%d), CentralChannel(%d) \n", 
+								pAd->CommonCfg.Channel, pAd->CommonCfg.CentralChannel));
+				}
+				else
+#endif // DOT11_N_SUPPORT //
+				{
+					AsicSwitchChannel(pAd, pAd->CommonCfg.Channel, FALSE);
+					AsicLockChannel(pAd, pAd->CommonCfg.Channel);
+					DBGPRINT(RT_DEBUG_TRACE, ("BW_20, Channel(%d)\n", pAd->CommonCfg.Channel));
+				}
+			}
+		}
+#endif // CONFIG_STA_SUPPORT //
+		success = TRUE;
+	}
+	else
+	{
+
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+			success = FALSE;
+#endif // CONFIG_STA_SUPPORT //
+	}
+
+
+	if (success == TRUE)
+		DBGPRINT(RT_DEBUG_TRACE, ("Set_Channel_Proc::(Channel=%d)\n", pAd->CommonCfg.Channel));
+
+	return success;
+}
+
+
+/* 
+    ==========================================================================
+    Description:
+        Set Short Slot Time Enable or Disable
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+    ==========================================================================
+*/
+INT	Set_ShortSlot_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	int retval;
+	
+	retval = RT_CfgSetShortSlot(pAd, arg);
+	if (retval == TRUE)
+		DBGPRINT(RT_DEBUG_TRACE, ("Set_ShortSlot_Proc::(ShortSlot=%d)\n", pAd->CommonCfg.bUseShortSlotTime));
+
+	return retval;
+}
+
+
+/* 
+    ==========================================================================
+    Description:
+        Set Tx power
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+    ==========================================================================
+*/
+INT	Set_TxPower_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	LONG TxPower;
+	INT   success = FALSE;
+
+	TxPower = simple_strtol(arg, 0, 10);
+	if (TxPower <= 100)
+	{
+
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		{
+			pAd->CommonCfg.TxPowerDefault = TxPower;
+			pAd->CommonCfg.TxPowerPercentage = pAd->CommonCfg.TxPowerDefault;
+		}
+#endif // CONFIG_STA_SUPPORT //
+		success = TRUE;
+	}
+	else
+		success = FALSE;
+
+	DBGPRINT(RT_DEBUG_TRACE, ("Set_TxPower_Proc::(TxPowerPercentage=%ld)\n", pAd->CommonCfg.TxPowerPercentage));
+
+	return success;
+}
+
+/* 
+    ==========================================================================
+    Description:
+        Set 11B/11G Protection
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+    ==========================================================================
+*/
+INT	Set_BGProtection_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	switch (simple_strtol(arg, 0, 10))
+	{
+		case 0: //AUTO
+			pAd->CommonCfg.UseBGProtection = 0;
+			break;
+		case 1: //Always On
+			pAd->CommonCfg.UseBGProtection = 1;
+			break;
+		case 2: //Always OFF
+			pAd->CommonCfg.UseBGProtection = 2;
+			break;		
+		default:  //Invalid argument 
+			return FALSE;
+	}
+
+
+	DBGPRINT(RT_DEBUG_TRACE, ("Set_BGProtection_Proc::(BGProtection=%ld)\n", pAd->CommonCfg.UseBGProtection));	
+
+	return TRUE;
+}
+
+/* 
+    ==========================================================================
+    Description:
+        Set TxPreamble
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+    ==========================================================================
+*/
+INT	Set_TxPreamble_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	RT_802_11_PREAMBLE	Preamble;
+
+	Preamble = (RT_802_11_PREAMBLE)simple_strtol(arg, 0, 10);
+
+
+	switch (Preamble)
+	{
+		case Rt802_11PreambleShort:
+			pAd->CommonCfg.TxPreamble = Preamble;
+#ifdef CONFIG_STA_SUPPORT
+			IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+				MlmeSetTxPreamble(pAd, Rt802_11PreambleShort);
+#endif // CONFIG_STA_SUPPORT //
+			break;
+		case Rt802_11PreambleLong:
+#ifdef CONFIG_STA_SUPPORT
+		case Rt802_11PreambleAuto:
+			// if user wants AUTO, initialize to LONG here, then change according to AP's
+			// capability upon association.
+#endif // CONFIG_STA_SUPPORT //
+			pAd->CommonCfg.TxPreamble = Preamble;
+#ifdef CONFIG_STA_SUPPORT
+			IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+				MlmeSetTxPreamble(pAd, Rt802_11PreambleLong);
+#endif // CONFIG_STA_SUPPORT //
+			break;
+		default: //Invalid argument 
+			return FALSE;
+	}
+
+	DBGPRINT(RT_DEBUG_TRACE, ("Set_TxPreamble_Proc::(TxPreamble=%ld)\n", pAd->CommonCfg.TxPreamble));
+
+	return TRUE;
+}
+
+/* 
+    ==========================================================================
+    Description:
+        Set RTS Threshold
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+    ==========================================================================
+*/
+INT	Set_RTSThreshold_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	 NDIS_802_11_RTS_THRESHOLD           RtsThresh;
+
+	RtsThresh = simple_strtol(arg, 0, 10);
+
+	if((RtsThresh > 0) && (RtsThresh <= MAX_RTS_THRESHOLD))
+		pAd->CommonCfg.RtsThreshold  = (USHORT)RtsThresh;
+#ifdef CONFIG_STA_SUPPORT
+	else if (RtsThresh == 0)
+		pAd->CommonCfg.RtsThreshold = MAX_RTS_THRESHOLD;
+#endif // CONFIG_STA_SUPPORT //
+	else
+		return FALSE; //Invalid argument 
+
+	DBGPRINT(RT_DEBUG_TRACE, ("Set_RTSThreshold_Proc::(RTSThreshold=%d)\n", pAd->CommonCfg.RtsThreshold));
+
+	return TRUE;
+}
+
+/* 
+    ==========================================================================
+    Description:
+        Set Fragment Threshold
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+    ==========================================================================
+*/
+INT	Set_FragThreshold_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	 NDIS_802_11_FRAGMENTATION_THRESHOLD     FragThresh;
+
+	FragThresh = simple_strtol(arg, 0, 10);
+
+	if (FragThresh > MAX_FRAG_THRESHOLD || FragThresh < MIN_FRAG_THRESHOLD)
+	{ 
+		//Illegal FragThresh so we set it to default
+		pAd->CommonCfg.FragmentThreshold = MAX_FRAG_THRESHOLD;
+	}
+	else if (FragThresh % 2 == 1)
+	{
+		// The length of each fragment shall always be an even number of octets, except for the last fragment
+		// of an MSDU or MMPDU, which may be either an even or an odd number of octets.
+		pAd->CommonCfg.FragmentThreshold = (USHORT)(FragThresh - 1);
+	}
+	else
+	{
+		pAd->CommonCfg.FragmentThreshold = (USHORT)FragThresh;
+	}
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+		if (pAd->CommonCfg.FragmentThreshold == MAX_FRAG_THRESHOLD)
+			pAd->CommonCfg.bUseZeroToDisableFragment = TRUE;
+		else
+			pAd->CommonCfg.bUseZeroToDisableFragment = FALSE;
+	}
+#endif // CONFIG_STA_SUPPORT //
+
+	DBGPRINT(RT_DEBUG_TRACE, ("Set_FragThreshold_Proc::(FragThreshold=%d)\n", pAd->CommonCfg.FragmentThreshold));
+
+	return TRUE;
+}
+
+/* 
+    ==========================================================================
+    Description:
+        Set TxBurst
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+    ==========================================================================
+*/
+INT	Set_TxBurst_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	LONG TxBurst;
+
+	TxBurst = simple_strtol(arg, 0, 10);
+	if (TxBurst == 1)
+		pAd->CommonCfg.bEnableTxBurst = TRUE;
+	else if (TxBurst == 0)
+		pAd->CommonCfg.bEnableTxBurst = FALSE;
+	else
+		return FALSE;  //Invalid argument 
+	
+	DBGPRINT(RT_DEBUG_TRACE, ("Set_TxBurst_Proc::(TxBurst=%d)\n", pAd->CommonCfg.bEnableTxBurst));
+
+	return TRUE;
+}
+
+#ifdef AGGREGATION_SUPPORT
+/* 
+    ==========================================================================
+    Description:
+        Set TxBurst
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+    ==========================================================================
+*/
+INT	Set_PktAggregate_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	LONG aggre;
+
+	aggre = simple_strtol(arg, 0, 10);
+
+	if (aggre == 1)
+		pAd->CommonCfg.bAggregationCapable = TRUE;
+	else if (aggre == 0)
+		pAd->CommonCfg.bAggregationCapable = FALSE;
+	else
+		return FALSE;  //Invalid argument 
+
+
+	DBGPRINT(RT_DEBUG_TRACE, ("Set_PktAggregate_Proc::(AGGRE=%d)\n", pAd->CommonCfg.bAggregationCapable));
+
+	return TRUE;
+}
+#endif
+
+
+#ifdef INF_AMAZON_PPA
+INT	Set_INF_AMAZON_SE_PPA_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PUCHAR			arg)
+{
+	ULONG aggre;
+	UINT status;
+	
+	aggre = simple_strtol(arg, 0, 10);
+
+	if (aggre == 1)
+	{
+		if(pAd->PPAEnable==TRUE)
+		{
+			printk("INF_AMAZON_SE_PPA already enabled \n");
+		}
+		else
+		{
+			if (ppa_hook_directpath_register_dev_fn) 
+			{
+				UINT32 g_if_id;
+				
+				if (pAd->pDirectpathCb == NULL) 
+				{
+					 pAd->pDirectpathCb = (PPA_DIRECTPATH_CB *) kmalloc (sizeof(PPA_DIRECTPATH_CB), GFP_ATOMIC);
+				        printk("Realloc memory for  pDirectpathCb ??\n");
+				}
+
+				/* register callback */
+				pAd->pDirectpathCb->rx_fn = NULL;
+				pAd->pDirectpathCb->stop_tx_fn = NULL;
+				pAd->pDirectpathCb->start_tx_fn = NULL;
+
+				status = ppa_hook_directpath_register_dev_fn(&g_if_id, pAd->net_dev, pAd->pDirectpathCb, PPA_F_DIRECTPATH_ETH_IF);
+
+				if(status==1)
+				{
+					pAd->g_if_id=g_if_id;
+					printk("register INF_AMAZON_SE_PPA success :ret:%d id:%d:%d\n",status,pAd->g_if_id,g_if_id);
+					pAd->PPAEnable=TRUE;
+				}
+				else
+				{
+					printk("register INF_AMAZON_SE_PPA fail :ret:%d\n",status);
+				}
+
+			}
+			else
+			{
+				printk("INF_AMAZON_SE_PPA enable fail : there is no INF_AMAZON_SE_PPA module . \n");	
+			}
+		}
+
+		
+	}
+	else if (aggre == 0)
+	{
+		if(pAd->PPAEnable==FALSE)
+		{
+			
+printk("INF_AMAZON_SE_PPA already disable \n");
+		}
+		else
+		{
+			if (ppa_hook_directpath_register_dev_fn) 
+			{
+				UINT32 g_if_id;
+				g_if_id=pAd->g_if_id;
+				printk("g_if_id=%d \n",pAd->g_if_id);
+				status=ppa_hook_directpath_register_dev_fn(&g_if_id, pAd->net_dev, NULL, PPA_F_DIRECTPATH_DEREGISTER);
+
+				if(status==1)
+				{
+					pAd->g_if_id=0;
+					printk("unregister INF_AMAZON_SE_PPA success :ret:%d\n",status);
+					pAd->PPAEnable=FALSE;
+				}
+				else
+				{
+					printk("unregister INF_AMAZON_SE_PPA fail :ret:%d\n",status);
+				}
+
+			}
+			else
+			{
+				printk("INF_AMAZON_SE_PPA enable fail : there is no INF_AMAZON_SE_PPA module . \n");	
+			}
+		}
+
+	}
+	else
+	{
+		printk("Invalid argument %d \n",aggre);
+		return FALSE;  //Invalid argument 
+	}	
+
+	return TRUE;
+
+}
+#endif // INF_AMAZON_PPA //
+
+
+/* 
+    ==========================================================================
+    Description:
+        Set IEEE80211H.
+        This parameter is 1 when needs radar detection, otherwise 0
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+    ==========================================================================
+*/
+INT	Set_IEEE80211H_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+    LONG ieee80211h;
+
+	ieee80211h = simple_strtol(arg, 0, 10);
+
+	if (ieee80211h == 1)
+		pAd->CommonCfg.bIEEE80211H = TRUE;
+	else if (ieee80211h == 0)
+		pAd->CommonCfg.bIEEE80211H = FALSE;
+	else
+		return FALSE;  //Invalid argument 
+	
+	DBGPRINT(RT_DEBUG_TRACE, ("Set_IEEE80211H_Proc::(IEEE80211H=%d)\n", pAd->CommonCfg.bIEEE80211H));
+
+	return TRUE;
+}
+
+
+#ifdef DBG
+/* 
+    ==========================================================================
+    Description:
+        For Debug information
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+    ==========================================================================
+*/
+INT	Set_Debug_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	DBGPRINT(RT_DEBUG_TRACE, ("==> Set_Debug_Proc *******************\n"));
+
+    if(simple_strtol(arg, 0, 10) <= RT_DEBUG_LOUD)
+        RTDebugLevel = simple_strtol(arg, 0, 10);
+
+	DBGPRINT(RT_DEBUG_TRACE, ("<== Set_Debug_Proc(RTDebugLevel = %ld)\n", RTDebugLevel));
+
+	return TRUE;
+}
+#endif
+
+INT	Show_DescInfo_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+#ifdef RTMP_MAC_PCI
+	INT i, QueIdx=0;
+//  ULONG	RegValue;
+        PRT28XX_RXD_STRUC pRxD;
+        PTXD_STRUC pTxD;
+	PRTMP_TX_RING	pTxRing = &pAd->TxRing[QueIdx];	
+	PRTMP_MGMT_RING	pMgmtRing = &pAd->MgmtRing;	
+	PRTMP_RX_RING	pRxRing = &pAd->RxRing;	
+	
+	for(i=0;i<TX_RING_SIZE;i++)
+	{	
+	    pTxD = (PTXD_STRUC) pTxRing->Cell[i].AllocVa;
+	    DBGPRINT(RT_DEBUG_OFF, ("Desc #%d\n",i));
+	    hex_dump("Tx Descriptor", (PUCHAR)pTxD, 16);
+	    DBGPRINT(RT_DEBUG_OFF, ("pTxD->DMADONE = %x\n", pTxD->DMADONE));
+	}    
+	DBGPRINT(RT_DEBUG_OFF, ("---------------------------------------------------\n"));
+	for(i=0;i<MGMT_RING_SIZE;i++)
+	{	
+	    pTxD = (PTXD_STRUC) pMgmtRing->Cell[i].AllocVa;
+	    DBGPRINT(RT_DEBUG_OFF, ("Desc #%d\n",i));
+	    hex_dump("Mgmt Descriptor", (PUCHAR)pTxD, 16);
+	    DBGPRINT(RT_DEBUG_OFF, ("pMgmt->DMADONE = %x\n", pTxD->DMADONE));
+	}    
+	DBGPRINT(RT_DEBUG_OFF, ("---------------------------------------------------\n"));
+	for(i=0;i<RX_RING_SIZE;i++)
+	{	
+	    pRxD = (PRT28XX_RXD_STRUC) pRxRing->Cell[i].AllocVa;
+	    DBGPRINT(RT_DEBUG_OFF, ("Desc #%d\n",i));
+	    hex_dump("Rx Descriptor", (PUCHAR)pRxD, 16);
+	    DBGPRINT(RT_DEBUG_OFF, ("pRxD->DDONE = %x\n", pRxD->DDONE));
+	}
+#endif // RTMP_MAC_PCI //
+
+	return TRUE;
+}
+
+/* 
+    ==========================================================================
+    Description:
+        Reset statistics counter
+
+    Arguments:
+        pAdapter            Pointer to our adapter
+        arg                 
+
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+    ==========================================================================
+*/
+INT	Set_ResetStatCounter_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	//UCHAR           i;
+	//MAC_TABLE_ENTRY *pEntry;
+    
+	DBGPRINT(RT_DEBUG_TRACE, ("==>Set_ResetStatCounter_Proc\n"));
+
+	// add the most up-to-date h/w raw counters into software counters
+	NICUpdateRawCounters(pAd);
+    
+	NdisZeroMemory(&pAd->WlanCounters, sizeof(COUNTER_802_11));
+	NdisZeroMemory(&pAd->Counters8023, sizeof(COUNTER_802_3));
+	NdisZeroMemory(&pAd->RalinkCounters, sizeof(COUNTER_RALINK));
+
+	// Reset HotSpot counter
+
+
+	return TRUE;
+}
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Add WPA key process.
+		In Adhoc WPANONE, bPairwise = 0;  KeyIdx = 0;
+
+	Arguments:
+		pAd 					Pointer to our adapter
+		pBuf							Pointer to the where the key stored
+
+	Return Value:
+		NDIS_SUCCESS					Add key successfully
+
+	IRQL = DISPATCH_LEVEL
+	
+	Note:
+		
+	========================================================================
+*/
+
+BOOLEAN RTMPCheckStrPrintAble(
+    IN  CHAR *pInPutStr, 
+    IN  UCHAR strLen)
+{
+    UCHAR i=0;
+    
+    for (i=0; i<strLen; i++)
+    {
+        if ((pInPutStr[i] < 0x21) ||
+            (pInPutStr[i] > 0x7E))
+            return FALSE;
+    }
+    
+    return TRUE;
+}
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Remove WPA Key process
+
+	Arguments:
+		pAd 					Pointer to our adapter
+		pBuf							Pointer to the where the key stored
+
+	Return Value:
+		NDIS_SUCCESS					Add key successfully
+
+	IRQL = DISPATCH_LEVEL
+	
+	Note:
+		
+	========================================================================
+*/
+#ifdef CONFIG_STA_SUPPORT
+VOID    RTMPSetDesiredRates(
+    IN  PRTMP_ADAPTER   pAdapter,
+    IN  LONG            Rates)
+{
+    NDIS_802_11_RATES aryRates;
+
+    memset(&aryRates, 0x00, sizeof(NDIS_802_11_RATES));
+    switch (pAdapter->CommonCfg.PhyMode)
+    {
+        case PHY_11A: // A only
+            switch (Rates)
+            {
+                case 6000000: //6M
+                    aryRates[0] = 0x0c; // 6M
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_0;
+                    break;
+                case 9000000: //9M
+                    aryRates[0] = 0x12; // 9M
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_1;
+                    break;
+                case 12000000: //12M
+                    aryRates[0] = 0x18; // 12M
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_2;
+                    break;
+                case 18000000: //18M
+                    aryRates[0] = 0x24; // 18M
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_3;
+                    break;
+                case 24000000: //24M
+                    aryRates[0] = 0x30; // 24M
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_4;
+                    break;
+                case 36000000: //36M
+                    aryRates[0] = 0x48; // 36M
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_5;
+                    break;
+                case 48000000: //48M
+                    aryRates[0] = 0x60; // 48M
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_6;
+                    break;
+                case 54000000: //54M
+                    aryRates[0] = 0x6c; // 54M
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_7;
+                    break;
+                case -1: //Auto
+                default:
+                    aryRates[0] = 0x6c; // 54Mbps
+                    aryRates[1] = 0x60; // 48Mbps
+                    aryRates[2] = 0x48; // 36Mbps
+                    aryRates[3] = 0x30; // 24Mbps
+                    aryRates[4] = 0x24; // 18M
+                    aryRates[5] = 0x18; // 12M
+                    aryRates[6] = 0x12; // 9M
+                    aryRates[7] = 0x0c; // 6M
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_AUTO;
+                    break;
+            }
+            break;
+        case PHY_11BG_MIXED: // B/G Mixed
+        case PHY_11B: // B only
+        case PHY_11ABG_MIXED: // A/B/G Mixed
+        default:
+            switch (Rates)
+            {
+                case 1000000: //1M
+                    aryRates[0] = 0x02;
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_0;
+                    break;
+                case 2000000: //2M
+                    aryRates[0] = 0x04;
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_1;
+                    break;
+                case 5000000: //5.5M
+                    aryRates[0] = 0x0b; // 5.5M
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_2;
+                    break;
+                case 11000000: //11M
+                    aryRates[0] = 0x16; // 11M
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_3;
+                    break;
+                case 6000000: //6M
+                    aryRates[0] = 0x0c; // 6M
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_0;
+                    break;
+                case 9000000: //9M
+                    aryRates[0] = 0x12; // 9M
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_1;
+                    break;
+                case 12000000: //12M
+                    aryRates[0] = 0x18; // 12M
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_2;
+                    break;
+                case 18000000: //18M
+                    aryRates[0] = 0x24; // 18M
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_3;
+                    break;
+                case 24000000: //24M
+                    aryRates[0] = 0x30; // 24M
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_4;
+                    break;
+                case 36000000: //36M
+                    aryRates[0] = 0x48; // 36M
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_5;
+                    break;
+                case 48000000: //48M
+                    aryRates[0] = 0x60; // 48M
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_6;
+                    break;
+                case 54000000: //54M
+                    aryRates[0] = 0x6c; // 54M
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_7;
+                    break;
+                case -1: //Auto
+                default:
+                    if (pAdapter->CommonCfg.PhyMode == PHY_11B)
+                    { //B Only
+                        aryRates[0] = 0x16; // 11Mbps
+                        aryRates[1] = 0x0b; // 5.5Mbps
+                        aryRates[2] = 0x04; // 2Mbps
+                        aryRates[3] = 0x02; // 1Mbps
+                    }
+                    else
+                    { //(B/G) Mixed or (A/B/G) Mixed
+                        aryRates[0] = 0x6c; // 54Mbps
+                        aryRates[1] = 0x60; // 48Mbps
+                        aryRates[2] = 0x48; // 36Mbps
+                        aryRates[3] = 0x30; // 24Mbps
+                        aryRates[4] = 0x16; // 11Mbps
+                        aryRates[5] = 0x0b; // 5.5Mbps
+                        aryRates[6] = 0x04; // 2Mbps
+                        aryRates[7] = 0x02; // 1Mbps
+                    }
+                    pAdapter->StaCfg.DesiredTransmitSetting.field.MCS = MCS_AUTO;
+                    break;
+            }
+            break;
+    }
+
+    NdisZeroMemory(pAdapter->CommonCfg.DesireRate, MAX_LEN_OF_SUPPORTED_RATES);
+    NdisMoveMemory(pAdapter->CommonCfg.DesireRate, &aryRates, sizeof(NDIS_802_11_RATES));
+    DBGPRINT(RT_DEBUG_TRACE, (" RTMPSetDesiredRates (%02x,%02x,%02x,%02x,%02x,%02x,%02x,%02x)\n",
+        pAdapter->CommonCfg.DesireRate[0],pAdapter->CommonCfg.DesireRate[1],
+        pAdapter->CommonCfg.DesireRate[2],pAdapter->CommonCfg.DesireRate[3],
+        pAdapter->CommonCfg.DesireRate[4],pAdapter->CommonCfg.DesireRate[5],
+        pAdapter->CommonCfg.DesireRate[6],pAdapter->CommonCfg.DesireRate[7] ));
+    // Changing DesiredRate may affect the MAX TX rate we used to TX frames out
+    MlmeUpdateTxRates(pAdapter, FALSE, 0);
+}
+
+NDIS_STATUS RTMPWPARemoveKeyProc(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PVOID			pBuf)
+{
+	PNDIS_802_11_REMOVE_KEY pKey;
+	ULONG					KeyIdx;
+	NDIS_STATUS 			Status = NDIS_STATUS_FAILURE;
+	BOOLEAN 	bTxKey; 		// Set the key as transmit key
+	BOOLEAN 	bPairwise;		// Indicate the key is pairwise key
+	BOOLEAN 	bKeyRSC;		// indicate the receive  SC set by KeyRSC value.
+								// Otherwise, it will set by the NIC.
+	BOOLEAN 	bAuthenticator; // indicate key is set by authenticator.
+	INT 		i;
+
+	DBGPRINT(RT_DEBUG_TRACE,("---> RTMPWPARemoveKeyProc\n"));
+	
+	pKey = (PNDIS_802_11_REMOVE_KEY) pBuf;
+	KeyIdx = pKey->KeyIndex & 0xff;
+	// Bit 31 of Add-key, Tx Key
+	bTxKey		   = (pKey->KeyIndex & 0x80000000) ? TRUE : FALSE;
+	// Bit 30 of Add-key PairwiseKey
+	bPairwise	   = (pKey->KeyIndex & 0x40000000) ? TRUE : FALSE;
+	// Bit 29 of Add-key KeyRSC
+	bKeyRSC 	   = (pKey->KeyIndex & 0x20000000) ? TRUE : FALSE;
+	// Bit 28 of Add-key Authenticator
+	bAuthenticator = (pKey->KeyIndex & 0x10000000) ? TRUE : FALSE;
+
+	// 1. If bTx is TRUE, return failure information
+	if (bTxKey == TRUE)
+		return(NDIS_STATUS_INVALID_DATA);
+
+	// 2. Check Pairwise Key
+	if (bPairwise)
+	{
+		// a. If BSSID is broadcast, remove all pairwise keys.
+		// b. If not broadcast, remove the pairwise specified by BSSID
+		for (i = 0; i < SHARE_KEY_NUM; i++)
+		{
+			if (MAC_ADDR_EQUAL(pAd->SharedKey[BSS0][i].BssId, pKey->BSSID))
+			{
+				DBGPRINT(RT_DEBUG_TRACE,("RTMPWPARemoveKeyProc(KeyIdx=%d)\n", i));
+				pAd->SharedKey[BSS0][i].KeyLen = 0;
+				pAd->SharedKey[BSS0][i].CipherAlg = CIPHER_NONE;
+				AsicRemoveSharedKeyEntry(pAd, BSS0, (UCHAR)i);
+				Status = NDIS_STATUS_SUCCESS;
+				break;
+			}
+		}
+	}
+	// 3. Group Key
+	else
+	{
+		// a. If BSSID is broadcast, remove all group keys indexed
+		// b. If BSSID matched, delete the group key indexed.
+		DBGPRINT(RT_DEBUG_TRACE,("RTMPWPARemoveKeyProc(KeyIdx=%ld)\n", KeyIdx));
+		pAd->SharedKey[BSS0][KeyIdx].KeyLen = 0;
+		pAd->SharedKey[BSS0][KeyIdx].CipherAlg = CIPHER_NONE;
+		AsicRemoveSharedKeyEntry(pAd, BSS0, (UCHAR)KeyIdx);
+		Status = NDIS_STATUS_SUCCESS;
+	}
+
+	return (Status);
+}
+#endif // CONFIG_STA_SUPPORT //
+
+
+#ifdef CONFIG_STA_SUPPORT
+/*
+	========================================================================
+	
+	Routine Description:
+		Remove All WPA Keys
+
+	Arguments:
+		pAd 					Pointer to our adapter
+
+	Return Value:
+		None
+
+	IRQL = DISPATCH_LEVEL
+	
+	Note:
+		
+	========================================================================
+*/
+VOID	RTMPWPARemoveAllKeys(
+	IN	PRTMP_ADAPTER	pAd)
+{
+
+	UCHAR 	i;
+	
+	DBGPRINT(RT_DEBUG_TRACE,("RTMPWPARemoveAllKeys(AuthMode=%d, WepStatus=%d)\n", pAd->StaCfg.AuthMode, pAd->StaCfg.WepStatus));
+#ifdef PCIE_PS_SUPPORT
+	RTMP_CLEAR_PSFLAG(pAd, fRTMP_PS_CAN_GO_SLEEP);
+#endif // PCIE_PS_SUPPORT //
+	// For WEP/CKIP, there is no need to remove it, since WinXP won't set it again after
+	// Link up. And it will be replaced if user changed it.
+	if (pAd->StaCfg.AuthMode < Ndis802_11AuthModeWPA)
+		return;
+
+	// For WPA-None, there is no need to remove it, since WinXP won't set it again after
+	// Link up. And it will be replaced if user changed it.
+	if (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPANone)
+		return;
+
+	// set BSSID wcid entry of the Pair-wise Key table as no-security mode
+	AsicRemovePairwiseKeyEntry(pAd, BSSID_WCID);
+
+	// set all shared key mode as no-security. 
+	for (i = 0; i < SHARE_KEY_NUM; i++)
+    {
+		DBGPRINT(RT_DEBUG_TRACE,("remove %s key #%d\n", CipherName[pAd->SharedKey[BSS0][i].CipherAlg], i));
+		NdisZeroMemory(&pAd->SharedKey[BSS0][i], sizeof(CIPHER_KEY));  						
+
+		AsicRemoveSharedKeyEntry(pAd, BSS0, i);
+	}
+#ifdef PCIE_PS_SUPPORT
+	RTMP_SET_PSFLAG(pAd, fRTMP_PS_CAN_GO_SLEEP);
+#endif // PCIE_PS_SUPPORT //
+
+}
+#endif // CONFIG_STA_SUPPORT //	
+
+
+/*
+	========================================================================
+	
+	Routine Description:
+	 	As STA's BSSID is a WC too, it uses shared key table.
+	 	This function write correct unicast TX key to ASIC WCID.
+ 	 	And we still make a copy in our MacTab.Content[BSSID_WCID].PairwiseKey.
+		Caller guarantee TKIP/AES always has keyidx = 0. (pairwise key)
+		Caller guarantee WEP calls this function when set Txkey,  default key index=0~3.
+		
+	Arguments:
+		pAd 					Pointer to our adapter
+		pKey							Pointer to the where the key stored
+
+	Return Value:
+		NDIS_SUCCESS					Add key successfully
+
+	IRQL = DISPATCH_LEVEL
+	
+	Note:
+		
+	========================================================================
+*/
+/*
+	========================================================================
+	Routine Description:
+		Change NIC PHY mode. Re-association may be necessary. possible settings
+		include - PHY_11B, PHY_11BG_MIXED, PHY_11A, and PHY_11ABG_MIXED 
+
+	Arguments:
+		pAd - Pointer to our adapter
+		phymode  - 
+
+	IRQL = PASSIVE_LEVEL
+	IRQL = DISPATCH_LEVEL
+	
+	========================================================================
+*/
+VOID	RTMPSetPhyMode(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	ULONG phymode)
+{
+	INT i;
+	// the selected phymode must be supported by the RF IC encoded in E2PROM
+
+	// if no change, do nothing
+	/* bug fix
+	if (pAd->CommonCfg.PhyMode == phymode)
+		return;
+    */
+	pAd->CommonCfg.PhyMode = (UCHAR)phymode;
+
+	DBGPRINT(RT_DEBUG_TRACE,("RTMPSetPhyMode : PhyMode=%d, channel=%d \n", pAd->CommonCfg.PhyMode, pAd->CommonCfg.Channel));
+#ifdef EXT_BUILD_CHANNEL_LIST
+	BuildChannelListEx(pAd);
+#else
+	BuildChannelList(pAd);
+#endif // EXT_BUILD_CHANNEL_LIST //
+
+	// sanity check user setting
+	for (i = 0; i < pAd->ChannelListNum; i++)
+	{
+		if (pAd->CommonCfg.Channel == pAd->ChannelList[i].Channel)
+			break;
+	}
+
+	if (i == pAd->ChannelListNum)
+	{
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+			pAd->CommonCfg.Channel = FirstChannel(pAd);
+#endif // CONFIG_STA_SUPPORT //
+		DBGPRINT(RT_DEBUG_ERROR, ("RTMPSetPhyMode: channel is out of range, use first channel=%d \n", pAd->CommonCfg.Channel));
+	}
+	
+	NdisZeroMemory(pAd->CommonCfg.SupRate, MAX_LEN_OF_SUPPORTED_RATES);
+	NdisZeroMemory(pAd->CommonCfg.ExtRate, MAX_LEN_OF_SUPPORTED_RATES);
+	NdisZeroMemory(pAd->CommonCfg.DesireRate, MAX_LEN_OF_SUPPORTED_RATES);
+	switch (phymode) {
+		case PHY_11B:
+			pAd->CommonCfg.SupRate[0]  = 0x82;	  // 1 mbps, in units of 0.5 Mbps, basic rate
+			pAd->CommonCfg.SupRate[1]  = 0x84;	  // 2 mbps, in units of 0.5 Mbps, basic rate
+			pAd->CommonCfg.SupRate[2]  = 0x8B;	  // 5.5 mbps, in units of 0.5 Mbps, basic rate
+			pAd->CommonCfg.SupRate[3]  = 0x96;	  // 11 mbps, in units of 0.5 Mbps, basic rate
+			pAd->CommonCfg.SupRateLen  = 4;
+			pAd->CommonCfg.ExtRateLen  = 0;
+			pAd->CommonCfg.DesireRate[0]  = 2;	   // 1 mbps, in units of 0.5 Mbps
+			pAd->CommonCfg.DesireRate[1]  = 4;	   // 2 mbps, in units of 0.5 Mbps
+			pAd->CommonCfg.DesireRate[2]  = 11;    // 5.5 mbps, in units of 0.5 Mbps
+			pAd->CommonCfg.DesireRate[3]  = 22;    // 11 mbps, in units of 0.5 Mbps
+			//pAd->CommonCfg.HTPhyMode.field.MODE = MODE_CCK; // This MODE is only FYI. not use
+			break;
+
+		case PHY_11G:
+		case PHY_11BG_MIXED:
+		case PHY_11ABG_MIXED:
+#ifdef DOT11_N_SUPPORT
+		case PHY_11N_2_4G:
+		case PHY_11ABGN_MIXED:
+		case PHY_11BGN_MIXED:
+		case PHY_11GN_MIXED:
+#endif // DOT11_N_SUPPORT //
+			pAd->CommonCfg.SupRate[0]  = 0x82;	  // 1 mbps, in units of 0.5 Mbps, basic rate
+			pAd->CommonCfg.SupRate[1]  = 0x84;	  // 2 mbps, in units of 0.5 Mbps, basic rate
+			pAd->CommonCfg.SupRate[2]  = 0x8B;	  // 5.5 mbps, in units of 0.5 Mbps, basic rate
+			pAd->CommonCfg.SupRate[3]  = 0x96;	  // 11 mbps, in units of 0.5 Mbps, basic rate
+			pAd->CommonCfg.SupRate[4]  = 0x12;	  // 9 mbps, in units of 0.5 Mbps
+			pAd->CommonCfg.SupRate[5]  = 0x24;	  // 18 mbps, in units of 0.5 Mbps
+			pAd->CommonCfg.SupRate[6]  = 0x48;	  // 36 mbps, in units of 0.5 Mbps
+			pAd->CommonCfg.SupRate[7]  = 0x6c;	  // 54 mbps, in units of 0.5 Mbps
+			pAd->CommonCfg.SupRateLen  = 8;
+			pAd->CommonCfg.ExtRate[0]  = 0x0C;	  // 6 mbps, in units of 0.5 Mbps
+			pAd->CommonCfg.ExtRate[1]  = 0x18;	  // 12 mbps, in units of 0.5 Mbps
+			pAd->CommonCfg.ExtRate[2]  = 0x30;	  // 24 mbps, in units of 0.5 Mbps
+			pAd->CommonCfg.ExtRate[3]  = 0x60;	  // 48 mbps, in units of 0.5 Mbps
+			pAd->CommonCfg.ExtRateLen  = 4;
+			pAd->CommonCfg.DesireRate[0]  = 2;	   // 1 mbps, in units of 0.5 Mbps
+			pAd->CommonCfg.DesireRate[1]  = 4;	   // 2 mbps, in units of 0.5 Mbps
+			pAd->CommonCfg.DesireRate[2]  = 11;    // 5.5 mbps, in units of 0.5 Mbps
+			pAd->CommonCfg.DesireRate[3]  = 22;    // 11 mbps, in units of 0.5 Mbps
+			pAd->CommonCfg.DesireRate[4]  = 12;    // 6 mbps, in units of 0.5 Mbps
+			pAd->CommonCfg.DesireRate[5]  = 18;    // 9 mbps, in units of 0.5 Mbps
+			pAd->CommonCfg.DesireRate[6]  = 24;    // 12 mbps, in units of 0.5 Mbps
+			pAd->CommonCfg.DesireRate[7]  = 36;    // 18 mbps, in units of 0.5 Mbps
+			pAd->CommonCfg.DesireRate[8]  = 48;    // 24 mbps, in units of 0.5 Mbps
+			pAd->CommonCfg.DesireRate[9]  = 72;    // 36 mbps, in units of 0.5 Mbps
+			pAd->CommonCfg.DesireRate[10] = 96;    // 48 mbps, in units of 0.5 Mbps
+			pAd->CommonCfg.DesireRate[11] = 108;   // 54 mbps, in units of 0.5 Mbps
+			break;
+
+		case PHY_11A:
+#ifdef DOT11_N_SUPPORT
+		case PHY_11AN_MIXED:
+		case PHY_11AGN_MIXED:
+		case PHY_11N_5G:
+#endif // DOT11_N_SUPPORT //
+			pAd->CommonCfg.SupRate[0]  = 0x8C;	  // 6 mbps, in units of 0.5 Mbps, basic rate
+			pAd->CommonCfg.SupRate[1]  = 0x12;	  // 9 mbps, in units of 0.5 Mbps
+			pAd->CommonCfg.SupRate[2]  = 0x98;	  // 12 mbps, in units of 0.5 Mbps, basic rate
+			pAd->CommonCfg.SupRate[3]  = 0x24;	  // 18 mbps, in units of 0.5 Mbps
+			pAd->CommonCfg.SupRate[4]  = 0xb0;	  // 24 mbps, in units of 0.5 Mbps, basic rate
+			pAd->CommonCfg.SupRate[5]  = 0x48;	  // 36 mbps, in units of 0.5 Mbps
+			pAd->CommonCfg.SupRate[6]  = 0x60;	  // 48 mbps, in units of 0.5 Mbps
+			pAd->CommonCfg.SupRate[7]  = 0x6c;	  // 54 mbps, in units of 0.5 Mbps
+			pAd->CommonCfg.SupRateLen  = 8;
+			pAd->CommonCfg.ExtRateLen  = 0;
+			pAd->CommonCfg.DesireRate[0]  = 12;    // 6 mbps, in units of 0.5 Mbps
+			pAd->CommonCfg.DesireRate[1]  = 18;    // 9 mbps, in units of 0.5 Mbps
+			pAd->CommonCfg.DesireRate[2]  = 24;    // 12 mbps, in units of 0.5 Mbps
+			pAd->CommonCfg.DesireRate[3]  = 36;    // 18 mbps, in units of 0.5 Mbps
+			pAd->CommonCfg.DesireRate[4]  = 48;    // 24 mbps, in units of 0.5 Mbps
+			pAd->CommonCfg.DesireRate[5]  = 72;    // 36 mbps, in units of 0.5 Mbps
+			pAd->CommonCfg.DesireRate[6]  = 96;    // 48 mbps, in units of 0.5 Mbps
+			pAd->CommonCfg.DesireRate[7]  = 108;   // 54 mbps, in units of 0.5 Mbps
+			//pAd->CommonCfg.HTPhyMode.field.MODE = MODE_OFDM; // This MODE is only FYI. not use
+			break;
+
+		default:
+			break;
+	}
+
+
+	pAd->CommonCfg.BandState = UNKNOWN_BAND;	
+}
+
+
+#ifdef DOT11_N_SUPPORT
+/*
+	========================================================================
+	Routine Description:
+		Caller ensures we has 802.11n support.
+		Calls at setting HT from AP/STASetinformation
+
+	Arguments:
+		pAd - Pointer to our adapter
+		phymode  - 
+
+	========================================================================
+*/
+VOID	RTMPSetHT(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	OID_SET_HT_PHYMODE *pHTPhyMode)
+{
+	//ULONG	*pmcs;
+	UINT32	Value = 0;
+	UCHAR	BBPValue = 0;
+	UCHAR	BBP3Value = 0;
+	UCHAR	RxStream = pAd->CommonCfg.RxStream;
+
+
+	DBGPRINT(RT_DEBUG_TRACE, ("RTMPSetHT : HT_mode(%d), ExtOffset(%d), MCS(%d), BW(%d), STBC(%d), SHORTGI(%d)\n",
+										pHTPhyMode->HtMode, pHTPhyMode->ExtOffset, 
+										pHTPhyMode->MCS, pHTPhyMode->BW,
+										pHTPhyMode->STBC, pHTPhyMode->SHORTGI));
+			
+	// Don't zero supportedHyPhy structure.
+	RTMPZeroMemory(&pAd->CommonCfg.HtCapability, sizeof(pAd->CommonCfg.HtCapability));
+	RTMPZeroMemory(&pAd->CommonCfg.AddHTInfo, sizeof(pAd->CommonCfg.AddHTInfo));
+	RTMPZeroMemory(&pAd->CommonCfg.NewExtChanOffset, sizeof(pAd->CommonCfg.NewExtChanOffset));
+	RTMPZeroMemory(&pAd->CommonCfg.DesiredHtPhy, sizeof(pAd->CommonCfg.DesiredHtPhy));
+
+   	if (pAd->CommonCfg.bRdg)
+	{
+		pAd->CommonCfg.HtCapability.ExtHtCapInfo.PlusHTC = 1;
+		pAd->CommonCfg.HtCapability.ExtHtCapInfo.RDGSupport = 1;
+	}
+	else
+	{
+		pAd->CommonCfg.HtCapability.ExtHtCapInfo.PlusHTC = 0;
+		pAd->CommonCfg.HtCapability.ExtHtCapInfo.RDGSupport = 0;
+	}
+
+	pAd->CommonCfg.HtCapability.HtCapParm.MaxRAmpduFactor = 3;
+	pAd->CommonCfg.DesiredHtPhy.MaxRAmpduFactor = 3;
+
+	DBGPRINT(RT_DEBUG_TRACE, ("RTMPSetHT : RxBAWinLimit = %d\n", pAd->CommonCfg.BACapability.field.RxBAWinLimit));
+
+	// Mimo power save, A-MSDU size, 
+	pAd->CommonCfg.DesiredHtPhy.AmsduEnable = (USHORT)pAd->CommonCfg.BACapability.field.AmsduEnable;
+	pAd->CommonCfg.DesiredHtPhy.AmsduSize = (UCHAR)pAd->CommonCfg.BACapability.field.AmsduSize;
+	pAd->CommonCfg.DesiredHtPhy.MimoPs = (UCHAR)pAd->CommonCfg.BACapability.field.MMPSmode;
+	pAd->CommonCfg.DesiredHtPhy.MpduDensity = (UCHAR)pAd->CommonCfg.BACapability.field.MpduDensity;
+
+	pAd->CommonCfg.HtCapability.HtCapInfo.AMsduSize = (USHORT)pAd->CommonCfg.BACapability.field.AmsduSize;
+	pAd->CommonCfg.HtCapability.HtCapInfo.MimoPs = (USHORT)pAd->CommonCfg.BACapability.field.MMPSmode;
+	pAd->CommonCfg.HtCapability.HtCapParm.MpduDensity = (UCHAR)pAd->CommonCfg.BACapability.field.MpduDensity;
+	
+	DBGPRINT(RT_DEBUG_TRACE, ("RTMPSetHT : AMsduSize = %d, MimoPs = %d, MpduDensity = %d, MaxRAmpduFactor = %d\n", 
+													pAd->CommonCfg.DesiredHtPhy.AmsduSize, 
+													pAd->CommonCfg.DesiredHtPhy.MimoPs,
+													pAd->CommonCfg.DesiredHtPhy.MpduDensity,
+													pAd->CommonCfg.DesiredHtPhy.MaxRAmpduFactor));
+	
+	if(pHTPhyMode->HtMode == HTMODE_GF)
+	{
+		pAd->CommonCfg.HtCapability.HtCapInfo.GF = 1;
+		pAd->CommonCfg.DesiredHtPhy.GF = 1;
+	}
+	else
+		pAd->CommonCfg.DesiredHtPhy.GF = 0;
+	
+	// Decide Rx MCSSet
+	switch (RxStream)
+	{
+		case 1:			
+			pAd->CommonCfg.HtCapability.MCSSet[0] =  0xff;
+			pAd->CommonCfg.HtCapability.MCSSet[1] =  0x00;
+			break;
+
+		case 2:
+			pAd->CommonCfg.HtCapability.MCSSet[0] =  0xff;
+			pAd->CommonCfg.HtCapability.MCSSet[1] =  0xff;
+			break;
+
+		case 3: // 3*3
+			pAd->CommonCfg.HtCapability.MCSSet[0] =  0xff;
+			pAd->CommonCfg.HtCapability.MCSSet[1] =  0xff;
+			pAd->CommonCfg.HtCapability.MCSSet[2] =  0xff;
+			break;
+	}
+
+	if (pAd->CommonCfg.bForty_Mhz_Intolerant && (pHTPhyMode->BW == BW_40) /* && (pAd->CommonCfg.Channel <= 14)*/)
+	{
+		pHTPhyMode->BW = BW_20;
+		pAd->CommonCfg.HtCapability.HtCapInfo.Forty_Mhz_Intolerant = 1;
+	}
+
+	if(pHTPhyMode->BW == BW_40)
+	{
+		pAd->CommonCfg.HtCapability.MCSSet[4] = 0x1; // MCS 32
+		pAd->CommonCfg.HtCapability.HtCapInfo.ChannelWidth = 1;
+		if (pAd->CommonCfg.Channel <= 14) 		
+			pAd->CommonCfg.HtCapability.HtCapInfo.CCKmodein40 = 1;
+
+		pAd->CommonCfg.DesiredHtPhy.ChannelWidth = 1;
+		pAd->CommonCfg.AddHTInfo.AddHtInfo.RecomWidth = 1;
+		pAd->CommonCfg.AddHTInfo.AddHtInfo.ExtChanOffset = (pHTPhyMode->ExtOffset == EXTCHA_BELOW)? (EXTCHA_BELOW): EXTCHA_ABOVE;
+		// Set Regsiter for extension channel position.
+		RTMP_IO_READ32(pAd, TX_BAND_CFG, &Value);
+		RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R3, &BBP3Value);
+		if ((pHTPhyMode->ExtOffset == EXTCHA_BELOW))
+		{
+			Value |= 0x1;
+			BBP3Value |= (0x20);
+			RTMP_IO_WRITE32(pAd, TX_BAND_CFG, Value);
+		}
+		else if ((pHTPhyMode->ExtOffset == EXTCHA_ABOVE))
+		{
+			Value &= 0xfe;
+			BBP3Value &= (~0x20);
+			RTMP_IO_WRITE32(pAd, TX_BAND_CFG, Value);
+		}
+
+		// Turn on BBP 40MHz mode now only as AP . 
+		// Sta can turn on BBP 40MHz after connection with 40MHz AP. Sta only broadcast 40MHz capability before connection.
+		if ((pAd->OpMode == OPMODE_AP) || INFRA_ON(pAd) || ADHOC_ON(pAd)
+			)
+		{
+			RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R4, &BBPValue);
+			BBPValue &= (~0x18);
+			BBPValue |= 0x10;
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R4, BBPValue);
+
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R3, BBP3Value);
+			pAd->CommonCfg.BBPCurrentBW = BW_40;
+		}
+	}
+	else
+	{
+		pAd->CommonCfg.HtCapability.HtCapInfo.ChannelWidth = 0;
+		pAd->CommonCfg.DesiredHtPhy.ChannelWidth = 0;
+		pAd->CommonCfg.AddHTInfo.AddHtInfo.RecomWidth = 0;
+		pAd->CommonCfg.AddHTInfo.AddHtInfo.ExtChanOffset = EXTCHA_NONE;
+		pAd->CommonCfg.CentralChannel = pAd->CommonCfg.Channel;
+		// Turn on BBP 20MHz mode by request here.
+		{
+			RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R4, &BBPValue);
+			BBPValue &= (~0x18);
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R4, BBPValue);
+			pAd->CommonCfg.BBPCurrentBW = BW_20;
+		}
+	}
+		
+	if(pHTPhyMode->STBC == STBC_USE)
+	{
+		pAd->CommonCfg.HtCapability.HtCapInfo.TxSTBC = 1;
+		pAd->CommonCfg.DesiredHtPhy.TxSTBC = 1;
+		pAd->CommonCfg.HtCapability.HtCapInfo.RxSTBC = 1;
+		pAd->CommonCfg.DesiredHtPhy.RxSTBC = 1;
+	}
+	else
+	{
+		pAd->CommonCfg.DesiredHtPhy.TxSTBC = 0;
+		pAd->CommonCfg.DesiredHtPhy.RxSTBC = 0;
+	}
+
+	if(pHTPhyMode->SHORTGI == GI_400)
+	{
+		pAd->CommonCfg.HtCapability.HtCapInfo.ShortGIfor20 = 1;
+		pAd->CommonCfg.HtCapability.HtCapInfo.ShortGIfor40 = 1;
+		pAd->CommonCfg.DesiredHtPhy.ShortGIfor20 = 1;
+		pAd->CommonCfg.DesiredHtPhy.ShortGIfor40 = 1;
+	}
+	else
+	{
+		pAd->CommonCfg.HtCapability.HtCapInfo.ShortGIfor20 = 0;
+		pAd->CommonCfg.HtCapability.HtCapInfo.ShortGIfor40 = 0;
+		pAd->CommonCfg.DesiredHtPhy.ShortGIfor20 = 0;
+		pAd->CommonCfg.DesiredHtPhy.ShortGIfor40 = 0;
+	}
+	
+	// We support link adaptation for unsolicit MCS feedback, set to 2.
+#ifdef RT2883_TEMP_PATCH
+	pAd->CommonCfg.HtCapability.ExtHtCapInfo.MCSFeedback = MCSFBK_MRQ; //MCSFBK_UNSOLICIT;
+#else
+	pAd->CommonCfg.HtCapability.ExtHtCapInfo.MCSFeedback = MCSFBK_NONE; //MCSFBK_UNSOLICIT;
+#endif // RT2883_TEMP_PATCH //
+	pAd->CommonCfg.AddHTInfo.ControlChan = pAd->CommonCfg.Channel;
+	// 1, the extension channel above the control channel. 
+	
+	// EDCA parameters used for AP's own transmission
+	if (pAd->CommonCfg.APEdcaParm.bValid == FALSE)
+	{
+		pAd->CommonCfg.APEdcaParm.bValid = TRUE;
+		pAd->CommonCfg.APEdcaParm.Aifsn[0] = 3;
+		pAd->CommonCfg.APEdcaParm.Aifsn[1] = 7;
+		pAd->CommonCfg.APEdcaParm.Aifsn[2] = 1;
+		pAd->CommonCfg.APEdcaParm.Aifsn[3] = 1;
+	
+		pAd->CommonCfg.APEdcaParm.Cwmin[0] = 4;
+		pAd->CommonCfg.APEdcaParm.Cwmin[1] = 4;
+		pAd->CommonCfg.APEdcaParm.Cwmin[2] = 3;
+		pAd->CommonCfg.APEdcaParm.Cwmin[3] = 2;
+
+		pAd->CommonCfg.APEdcaParm.Cwmax[0] = 6;
+		pAd->CommonCfg.APEdcaParm.Cwmax[1] = 10;
+		pAd->CommonCfg.APEdcaParm.Cwmax[2] = 4;
+		pAd->CommonCfg.APEdcaParm.Cwmax[3] = 3;
+
+		pAd->CommonCfg.APEdcaParm.Txop[0]  = 0;
+		pAd->CommonCfg.APEdcaParm.Txop[1]  = 0;
+		pAd->CommonCfg.APEdcaParm.Txop[2]  = 94;	
+		pAd->CommonCfg.APEdcaParm.Txop[3]  = 47;	
+	}
+	AsicSetEdcaParm(pAd, &pAd->CommonCfg.APEdcaParm);
+	
+
+#ifdef RT2883_TEMP_PATCH
+	pAd->CommonCfg.HtCapability.TxBFCap.TxSoundCapable =  TRUE;
+#endif // RT2883_TEMP_PATCH //
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		{
+		RTMPSetIndividualHT(pAd, 0);
+		}
+#endif // CONFIG_STA_SUPPORT //
+
+}
+
+/*
+	========================================================================
+	Routine Description:
+		Caller ensures we has 802.11n support.
+		Calls at setting HT from AP/STASetinformation
+
+	Arguments:
+		pAd - Pointer to our adapter
+		phymode  - 
+
+	========================================================================
+*/
+VOID	RTMPSetIndividualHT(
+	IN	PRTMP_ADAPTER		pAd,
+	IN	UCHAR				apidx)
+{	
+	PRT_HT_PHY_INFO		pDesired_ht_phy = NULL;
+	UCHAR	TxStream = pAd->CommonCfg.TxStream;		
+	UCHAR	DesiredMcs	= MCS_AUTO;
+	UCHAR	encrypt_mode = Ndis802_11EncryptionDisabled;
+						
+	do
+	{
+
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		{		
+			pDesired_ht_phy = &pAd->StaCfg.DesiredHtPhyInfo;					
+			DesiredMcs = pAd->StaCfg.DesiredTransmitSetting.field.MCS;
+			encrypt_mode = pAd->StaCfg.WepStatus;
+			//pAd->StaCfg.bAutoTxRateSwitch = (DesiredMcs == MCS_AUTO) ? TRUE : FALSE;
+				break;
+		}	
+#endif // CONFIG_STA_SUPPORT //
+	} while (FALSE);
+
+	if (pDesired_ht_phy == NULL)
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("RTMPSetIndividualHT: invalid apidx(%d)\n", apidx));
+		return;
+	}
+	RTMPZeroMemory(pDesired_ht_phy, sizeof(RT_HT_PHY_INFO));
+
+	DBGPRINT(RT_DEBUG_TRACE, ("RTMPSetIndividualHT : Desired MCS = %d\n", DesiredMcs));
+	// Check the validity of MCS 
+	if ((TxStream == 1) && ((DesiredMcs >= MCS_8) && (DesiredMcs <= MCS_15)))
+	{
+		DBGPRINT(RT_DEBUG_WARN, ("RTMPSetIndividualHT: MCS(%d) is invalid in 1S, reset it as MCS_7\n", DesiredMcs));
+		DesiredMcs = MCS_7;		
+	}
+
+	if ((pAd->CommonCfg.DesiredHtPhy.ChannelWidth == BW_20) && (DesiredMcs == MCS_32))
+	{
+		DBGPRINT(RT_DEBUG_WARN, ("RTMPSetIndividualHT: MCS_32 is only supported in 40-MHz, reset it as MCS_0\n"));
+		DesiredMcs = MCS_0;		
+	}
+	   			
+#ifdef CONFIG_STA_SUPPORT
+	if ((pAd->OpMode == OPMODE_STA) && (pAd->StaCfg.BssType == BSS_INFRA) && (apidx == MIN_NET_DEVICE_FOR_MBSSID))
+		;
+	else
+#endif // CONFIG_STA_SUPPORT //
+	/* 	
+		WFA recommend to restrict the encryption type in 11n-HT mode.
+	 	So, the WEP and TKIP are not allowed in HT rate. 
+	*/
+	if (pAd->CommonCfg.HT_DisallowTKIP && IS_INVALID_HT_SECURITY(encrypt_mode))
+	{
+		DBGPRINT(RT_DEBUG_WARN, ("%s : Use legacy rate in WEP/TKIP encryption mode (apidx=%d)\n", 
+									__FUNCTION__, apidx));
+		return;
+	}
+			
+	if (pAd->CommonCfg.HT_Disable)
+	{
+#ifdef CONFIG_STA_SUPPORT
+		pAd->StaCfg.bAdhocN = FALSE;
+#endif // CONFIG_STA_SUPPORT //
+		DBGPRINT(RT_DEBUG_TRACE, ("%s : HT is disabled\n", __FUNCTION__));
+		return;
+	}
+			
+	pDesired_ht_phy->bHtEnable = TRUE;
+					 
+	// Decide desired Tx MCS
+	switch (TxStream)
+	{
+		case 1:
+			if (DesiredMcs == MCS_AUTO)
+			{
+				pDesired_ht_phy->MCSSet[0]= 0xff;
+				pDesired_ht_phy->MCSSet[1]= 0x00;
+			}
+			else if (DesiredMcs <= MCS_7)
+			{
+				pDesired_ht_phy->MCSSet[0]= 1<<DesiredMcs;
+				pDesired_ht_phy->MCSSet[1]= 0x00;
+			}			
+			break;
+
+		case 2:
+			if (DesiredMcs == MCS_AUTO)
+			{
+				pDesired_ht_phy->MCSSet[0]= 0xff;
+				pDesired_ht_phy->MCSSet[1]= 0xff;
+			}
+			else if (DesiredMcs <= MCS_15)
+			{
+				ULONG mode;
+				
+				mode = DesiredMcs / 8;
+				if (mode < 2)
+					pDesired_ht_phy->MCSSet[mode] = (1 << (DesiredMcs - mode * 8));
+			}			
+			break;
+
+		case 3: // 3*3
+			if (DesiredMcs == MCS_AUTO)
+			{
+				/* MCS0 ~ MCS23, 3 bytes */
+				pDesired_ht_phy->MCSSet[0]= 0xff;
+				pDesired_ht_phy->MCSSet[1]= 0xff;
+				pDesired_ht_phy->MCSSet[2]= 0xff;
+			}
+			else if (DesiredMcs <= MCS_23)
+			{
+				ULONG mode;
+
+				mode = DesiredMcs / 8;
+				if (mode < 3)
+					pDesired_ht_phy->MCSSet[mode] = (1 << (DesiredMcs - mode * 8));
+			}
+			break;
+	}							
+
+	if(pAd->CommonCfg.DesiredHtPhy.ChannelWidth == BW_40)
+	{
+		if (DesiredMcs == MCS_AUTO || DesiredMcs == MCS_32)
+			pDesired_ht_phy->MCSSet[4] = 0x1;
+	}
+
+	// update HT Rate setting				
+    if (pAd->OpMode == OPMODE_STA)
+        MlmeUpdateHtTxRates(pAd, BSS0);
+    else
+	    MlmeUpdateHtTxRates(pAd, apidx);
+}
+
+
+/*
+	========================================================================
+	Routine Description:
+		Update HT IE from our capability.
+		
+	Arguments:
+		Send all HT IE in beacon/probe rsp/assoc rsp/action frame.
+		
+	
+	========================================================================
+*/
+VOID	RTMPUpdateHTIE(
+	IN	RT_HT_CAPABILITY	*pRtHt,
+	IN		UCHAR				*pMcsSet,
+	OUT		HT_CAPABILITY_IE *pHtCapability,
+	OUT		ADD_HT_INFO_IE		*pAddHtInfo)
+{
+	RTMPZeroMemory(pHtCapability, sizeof(HT_CAPABILITY_IE));
+	RTMPZeroMemory(pAddHtInfo, sizeof(ADD_HT_INFO_IE));
+	
+		pHtCapability->HtCapInfo.ChannelWidth = pRtHt->ChannelWidth;
+		pHtCapability->HtCapInfo.MimoPs = pRtHt->MimoPs;
+		pHtCapability->HtCapInfo.GF = pRtHt->GF;
+		pHtCapability->HtCapInfo.ShortGIfor20 = pRtHt->ShortGIfor20;
+		pHtCapability->HtCapInfo.ShortGIfor40 = pRtHt->ShortGIfor40;
+		pHtCapability->HtCapInfo.TxSTBC = pRtHt->TxSTBC;
+		pHtCapability->HtCapInfo.RxSTBC = pRtHt->RxSTBC;
+		pHtCapability->HtCapInfo.AMsduSize = pRtHt->AmsduSize;
+		pHtCapability->HtCapParm.MaxRAmpduFactor = pRtHt->MaxRAmpduFactor;
+		pHtCapability->HtCapParm.MpduDensity = pRtHt->MpduDensity;
+
+		pAddHtInfo->AddHtInfo.ExtChanOffset = pRtHt->ExtChanOffset ;
+		pAddHtInfo->AddHtInfo.RecomWidth = pRtHt->RecomWidth;
+		pAddHtInfo->AddHtInfo2.OperaionMode = pRtHt->OperaionMode;
+		pAddHtInfo->AddHtInfo2.NonGfPresent = pRtHt->NonGfPresent;
+		RTMPMoveMemory(pAddHtInfo->MCSSet, /*pRtHt->MCSSet*/pMcsSet, 4); // rt2860 only support MCS max=32, no need to copy all 16 uchar.
+	
+        DBGPRINT(RT_DEBUG_TRACE,("RTMPUpdateHTIE <== \n"));
+}
+#endif // DOT11_N_SUPPORT //
+
+/*
+	========================================================================
+	Description:
+		Add Client security information into ASIC WCID table and IVEIV table.
+    Return:
+	========================================================================
+*/
+VOID	RTMPAddWcidAttributeEntry(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	UCHAR			BssIdx,
+	IN 	UCHAR		 	KeyIdx,
+	IN 	UCHAR		 	CipherAlg,
+	IN 	MAC_TABLE_ENTRY *pEntry)
+{
+	UINT32		WCIDAttri = 0;
+	USHORT		offset;
+	UCHAR		IVEIV = 0;
+	USHORT		Wcid = 0;
+
+	{
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		{
+			if (BssIdx > BSS0)
+			{
+				DBGPRINT(RT_DEBUG_ERROR, ("RTMPAddWcidAttributeEntry: The BSS-index(%d) is out of range for Infra link. \n", BssIdx));	
+				return;
+			}
+
+			// 1.	In ADHOC mode, the AID is wcid number. And NO mesh link exists.
+			// 2.	In Infra mode, the AID:1 MUST be wcid of infra STA. 
+			//					   the AID:2~ assign to mesh link entry. 	
+			if (pEntry)
+				Wcid = pEntry->Aid;
+			else
+				Wcid = MCAST_WCID;
+		}
+#endif // CONFIG_STA_SUPPORT //
+	}
+
+	// Update WCID attribute table
+	offset = MAC_WCID_ATTRIBUTE_BASE + (Wcid * HW_WCID_ATTRI_SIZE);
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+		if (pEntry && IS_ENTRY_MESH(pEntry))
+			WCIDAttri = (CipherAlg<<1) | PAIRWISEKEYTABLE;
+#if defined(DOT11Z_TDLS_SUPPORT) || defined(QOS_DLS_SUPPORT)
+		else if ((pEntry) && (IS_ENTRY_DLS(pEntry) || IS_ENTRY_TDLS(pEntry)) &&
+					((CipherAlg == CIPHER_TKIP) || 
+					(CipherAlg == CIPHER_AES) || 
+				 	(CipherAlg == CIPHER_NONE))) 
+			WCIDAttri = (CipherAlg<<1) | PAIRWISEKEYTABLE;
+#endif
+		else
+		WCIDAttri = (CipherAlg<<1) | SHAREDKEYTABLE;
+	}
+#endif // CONFIG_STA_SUPPORT //
+		
+	RTMP_IO_WRITE32(pAd, offset, WCIDAttri);
+
+		
+	// Update IV/EIV table
+	offset = MAC_IVEIV_TABLE_BASE + (Wcid * HW_IVEIV_ENTRY_SIZE);
+
+	// WPA mode
+	if ((CipherAlg == CIPHER_TKIP) || (CipherAlg == CIPHER_AES))
+	{	
+		// Eiv bit on. keyid always is 0 for pairwise key 			
+		IVEIV = (KeyIdx <<6) | 0x20;	
+	}	 
+	else
+	{
+		// WEP KeyIdx is default tx key. 
+		IVEIV = (KeyIdx << 6);	
+	}
+
+	// For key index and ext IV bit, so only need to update the position(offset+3).
+#ifdef RTMP_MAC_PCI	
+	RTMP_IO_WRITE8(pAd, offset+3, IVEIV);
+#endif // RTMP_MAC_PCI //
+	
+	DBGPRINT(RT_DEBUG_TRACE,("RTMPAddWcidAttributeEntry: WCID #%d, KeyIndex #%d, Alg=%s\n",Wcid, KeyIdx, CipherName[CipherAlg]));
+	DBGPRINT(RT_DEBUG_TRACE,("	WCIDAttri = 0x%x \n",  WCIDAttri));	
+
+}
+
+/* 
+    ==========================================================================
+    Description:
+        Parse encryption type
+Arguments:
+    pAdapter                    Pointer to our adapter
+    wrq                         Pointer to the ioctl argument
+
+    Return Value:
+        None
+
+    Note:
+    ==========================================================================
+*/
+PSTRING GetEncryptType(CHAR enc)
+{
+    if(enc == Ndis802_11WEPDisabled)
+        return "NONE";
+    if(enc == Ndis802_11WEPEnabled)
+    	return "WEP";
+    if(enc == Ndis802_11Encryption2Enabled)
+    	return "TKIP";
+    if(enc == Ndis802_11Encryption3Enabled)
+    	return "AES";
+	if(enc == Ndis802_11Encryption4Enabled)
+    	return "TKIPAES";
+    else
+    	return "UNKNOW";
+}
+
+PSTRING GetAuthMode(CHAR auth)
+{
+    if(auth == Ndis802_11AuthModeOpen)
+    	return "OPEN";
+    if(auth == Ndis802_11AuthModeShared)
+    	return "SHARED";
+	if(auth == Ndis802_11AuthModeAutoSwitch)
+    	return "AUTOWEP";
+    if(auth == Ndis802_11AuthModeWPA)
+    	return "WPA";
+    if(auth == Ndis802_11AuthModeWPAPSK)
+    	return "WPAPSK";
+    if(auth == Ndis802_11AuthModeWPANone)
+    	return "WPANONE";
+    if(auth == Ndis802_11AuthModeWPA2)
+    	return "WPA2";
+    if(auth == Ndis802_11AuthModeWPA2PSK)
+    	return "WPA2PSK";
+	if(auth == Ndis802_11AuthModeWPA1WPA2)
+    	return "WPA1WPA2";
+	if(auth == Ndis802_11AuthModeWPA1PSKWPA2PSK)
+    	return "WPA1PSKWPA2PSK";
+	
+    	return "UNKNOW";
+}		
+
+
+/* 
+    ==========================================================================
+    Description:
+        Get site survey results
+	Arguments:
+	    pAdapter                    Pointer to our adapter
+	    wrq                         Pointer to the ioctl argument
+
+    Return Value:
+        None
+
+    Note:
+        Usage:
+        		1.) UI needs to wait 4 seconds after issue a site survey command
+        		2.) iwpriv ra0 get_site_survey
+        		3.) UI needs to prepare at least 4096bytes to get the results
+    ==========================================================================
+*/
+#define	LINE_LEN	(4+33+20+23+9+7+7+3)	// Channel+SSID+Bssid+Security+Signal+WiressMode+ExtCh+NetworkType
+#ifdef CONFIG_STA_SUPPORT
+#endif // CONFIG_STA_SUPPORT //
+VOID	RTMPCommSiteSurveyData(
+	IN  PSTRING		msg,
+	IN  PBSS_ENTRY	pBss)
+{
+	INT         Rssi = 0;
+	UINT        Rssi_Quality = 0;
+	NDIS_802_11_NETWORK_TYPE    wireless_mode;
+	CHAR		Ssid[MAX_LEN_OF_SSID +1];
+	STRING		SecurityStr[32] = {0};
+	NDIS_802_11_ENCRYPTION_STATUS	ap_cipher = Ndis802_11EncryptionDisabled;
+	NDIS_802_11_AUTHENTICATION_MODE	ap_auth_mode = Ndis802_11AuthModeOpen;
+
+		//Channel
+		sprintf(msg+strlen(msg),"%-4d", pBss->Channel);
+
+		//SSID
+	NdisZeroMemory(Ssid, (MAX_LEN_OF_SSID +1));
+	if (RTMPCheckStrPrintAble((PCHAR)pBss->Ssid, pBss->SsidLen))
+		NdisMoveMemory(Ssid, pBss->Ssid, pBss->SsidLen);
+	else
+	{
+		INT idx = 0;
+		for (idx = 0; idx < 16; idx++)
+			sprintf(Ssid, "%s%02X", Ssid, pBss->Ssid[idx]);
+	}
+		sprintf(msg+strlen(msg),"%-33s", Ssid);      
+		
+		//BSSID
+		sprintf(msg+strlen(msg),"%02x:%02x:%02x:%02x:%02x:%02x   ", 
+			pBss->Bssid[0], 
+			pBss->Bssid[1],
+			pBss->Bssid[2], 
+			pBss->Bssid[3], 
+			pBss->Bssid[4], 
+			pBss->Bssid[5]);
+	
+	//Security
+	if ((Ndis802_11AuthModeWPA <= pBss->AuthMode) &&
+		(pBss->AuthMode <= Ndis802_11AuthModeWPA1PSKWPA2PSK))
+	{
+		if (pBss->AuthMode == Ndis802_11AuthModeWPANone)
+		{
+			ap_auth_mode = pBss->AuthMode;
+				ap_cipher = pBss->WPA.PairCipher;
+		}
+		else if (pBss->AuthModeAux == Ndis802_11AuthModeOpen)
+		{
+			ap_auth_mode = pBss->AuthMode;
+			if ((ap_auth_mode == Ndis802_11AuthModeWPA) || 
+				(ap_auth_mode == Ndis802_11AuthModeWPAPSK))
+			{
+				if (pBss->WPA.PairCipherAux == Ndis802_11WEPDisabled)
+					ap_cipher = pBss->WPA.PairCipher;
+				else 
+					ap_cipher = Ndis802_11Encryption4Enabled;
+			}
+			else if ((ap_auth_mode == Ndis802_11AuthModeWPA2) || 
+					 (ap_auth_mode == Ndis802_11AuthModeWPA2PSK))
+			{
+				if (pBss->WPA2.PairCipherAux == Ndis802_11WEPDisabled)
+					ap_cipher = pBss->WPA2.PairCipher;
+				else 
+					ap_cipher = Ndis802_11Encryption4Enabled;
+			}
+		}
+		else if ((pBss->AuthMode == Ndis802_11AuthModeWPAPSK) || 
+				 (pBss->AuthMode == Ndis802_11AuthModeWPA2PSK))
+		{
+			if ((pBss->AuthModeAux == Ndis802_11AuthModeWPAPSK) ||
+				(pBss->AuthModeAux == Ndis802_11AuthModeWPA2PSK))
+				ap_auth_mode = Ndis802_11AuthModeWPA1PSKWPA2PSK;
+			else
+				ap_auth_mode = pBss->AuthMode;
+			
+			if (pBss->WPA.PairCipher != pBss->WPA2.PairCipher)
+				ap_cipher = Ndis802_11Encryption4Enabled;
+			else if ((pBss->WPA.PairCipher == pBss->WPA2.PairCipher) &&
+					 (pBss->WPA.PairCipherAux != pBss->WPA2.PairCipherAux))
+				ap_cipher = Ndis802_11Encryption4Enabled;
+			else if ((pBss->WPA.PairCipher == pBss->WPA2.PairCipher) &&
+					 (pBss->WPA.PairCipherAux == pBss->WPA2.PairCipherAux) &&
+					 (pBss->WPA.PairCipherAux != Ndis802_11WEPDisabled))
+				ap_cipher = Ndis802_11Encryption4Enabled;
+			else if ((pBss->WPA.PairCipher == pBss->WPA2.PairCipher) &&
+					 (pBss->WPA.PairCipherAux == pBss->WPA2.PairCipherAux) &&
+					 (pBss->WPA.PairCipherAux == Ndis802_11WEPDisabled))
+				ap_cipher = pBss->WPA.PairCipher;
+		}
+		else if ((pBss->AuthMode == Ndis802_11AuthModeWPA) || 
+				 (pBss->AuthMode == Ndis802_11AuthModeWPA2))
+		{
+			if ((pBss->AuthModeAux == Ndis802_11AuthModeWPA) ||
+				(pBss->AuthMode == Ndis802_11AuthModeWPA2))
+				ap_auth_mode = Ndis802_11AuthModeWPA1WPA2;
+			else
+				ap_auth_mode = pBss->AuthMode;
+			
+			if (pBss->WPA.PairCipher != pBss->WPA2.PairCipher)
+				ap_cipher = Ndis802_11Encryption4Enabled;
+			else if ((pBss->WPA.PairCipher == pBss->WPA2.PairCipher) &&
+					 (pBss->WPA.PairCipherAux != pBss->WPA2.PairCipherAux))
+				ap_cipher = Ndis802_11Encryption4Enabled;
+			else if ((pBss->WPA.PairCipher == pBss->WPA2.PairCipher) &&
+					 (pBss->WPA.PairCipherAux == pBss->WPA2.PairCipherAux) &&
+					 (pBss->WPA.PairCipherAux != Ndis802_11WEPDisabled))
+				ap_cipher = Ndis802_11Encryption4Enabled;
+			else if ((pBss->WPA.PairCipher == pBss->WPA2.PairCipher) &&
+					 (pBss->WPA.PairCipherAux == pBss->WPA2.PairCipherAux) &&
+					 (pBss->WPA.PairCipherAux == Ndis802_11WEPDisabled))
+				ap_cipher = pBss->WPA.PairCipher;
+		}
+
+		sprintf(SecurityStr, "%s/%s", GetAuthMode((CHAR)ap_auth_mode), GetEncryptType((CHAR)ap_cipher));		
+	}			
+	else
+	{
+		ap_auth_mode = pBss->AuthMode;
+		ap_cipher = pBss->WepStatus;		
+		if (ap_cipher == Ndis802_11WEPDisabled)
+			sprintf(SecurityStr, "NONE");
+		else if (ap_cipher == Ndis802_11WEPEnabled)
+			sprintf(SecurityStr, "WEP");
+		else
+			sprintf(SecurityStr, "%s/%s", GetAuthMode((CHAR)ap_auth_mode), GetEncryptType((CHAR)ap_cipher));		
+	}
+	
+	sprintf(msg+strlen(msg), "%-23s", SecurityStr);
+
+		// Rssi
+		Rssi = (INT)pBss->Rssi;
+		if (Rssi >= -50)
+			Rssi_Quality = 100;
+		else if (Rssi >= -80)    // between -50 ~ -80dbm
+			Rssi_Quality = (UINT)(24 + ((Rssi + 80) * 26)/10);
+		else if (Rssi >= -90)   // between -80 ~ -90dbm
+			Rssi_Quality = (UINT)(((Rssi + 90) * 26)/10);
+		else    // < -84 dbm
+			Rssi_Quality = 0;
+		sprintf(msg+strlen(msg),"%-9d", Rssi_Quality);
+		// Wireless Mode
+		wireless_mode = NetworkTypeInUseSanity(pBss);
+		if (wireless_mode == Ndis802_11FH ||
+			wireless_mode == Ndis802_11DS)
+			sprintf(msg+strlen(msg),"%-7s", "11b");
+		else if (wireless_mode == Ndis802_11OFDM5)
+			sprintf(msg+strlen(msg),"%-7s", "11a");
+		else if (wireless_mode == Ndis802_11OFDM5_N)
+			sprintf(msg+strlen(msg),"%-7s", "11a/n");
+		else if (wireless_mode == Ndis802_11OFDM24)
+			sprintf(msg+strlen(msg),"%-7s", "11b/g");
+		else if (wireless_mode == Ndis802_11OFDM24_N)
+			sprintf(msg+strlen(msg),"%-7s", "11b/g/n");
+		else
+			sprintf(msg+strlen(msg),"%-7s", "unknow");
+
+		// Ext Channel
+		if (pBss->AddHtInfoLen > 0)
+		{
+			if (pBss->AddHtInfo.AddHtInfo.ExtChanOffset == EXTCHA_ABOVE)
+				sprintf(msg+strlen(msg),"%-7s", " ABOVE");
+			else if (pBss->AddHtInfo.AddHtInfo.ExtChanOffset == EXTCHA_BELOW)
+				sprintf(msg+strlen(msg),"%-7s", " BELOW");
+			else
+				sprintf(msg+strlen(msg),"%-7s", " NONE");
+		}
+		else
+		{
+			sprintf(msg+strlen(msg),"%-7s", " NONE");
+		}
+		
+		//Network Type		
+		if (pBss->BssType == BSS_ADHOC)
+			sprintf(msg+strlen(msg),"%-3s", " Ad");
+		else
+			sprintf(msg+strlen(msg),"%-3s", " In");
+
+        sprintf(msg+strlen(msg),"\n");
+	
+	return;
+}
+
+#if defined (AP_SCAN_SUPPORT) || defined (CONFIG_STA_SUPPORT)
+VOID RTMPIoctlGetSiteSurvey(
+	IN	PRTMP_ADAPTER	pAdapter, 
+	IN	struct iwreq	*wrq)
+{
+	PSTRING		msg;
+	INT 		i=0;	 
+	INT			WaitCnt;
+	INT 		Status=0;	
+    INT         max_len = LINE_LEN;		
+	PBSS_ENTRY	pBss;
+
+#ifdef CONFIG_STA_SUPPORT
+#endif // CONFIG_STA_SUPPORT //
+
+	os_alloc_mem(NULL, (PUCHAR *)&msg, sizeof(CHAR)*((MAX_LEN_OF_BSS_TABLE)*max_len));
+
+	if (msg == NULL)
+	{   
+		DBGPRINT(RT_DEBUG_TRACE, ("RTMPIoctlGetSiteSurvey - msg memory alloc fail.\n"));
+		return;
+	}
+
+	memset(msg, 0 ,(MAX_LEN_OF_BSS_TABLE)*max_len );
+	sprintf(msg,"%s","\n");
+	sprintf(msg+strlen(msg),"%-4s%-33s%-20s%-23s%-9s%-7s%-7s%-3s\n",
+	    "Ch", "SSID", "BSSID", "Security", "Siganl(%)", "W-Mode", " ExtCH"," NT");	
+	
+
+#ifdef CONFIG_STA_SUPPORT
+#endif // CONFIG_STA_SUPPORT //
+
+	WaitCnt = 0;
+#ifdef CONFIG_STA_SUPPORT
+	pAdapter->StaCfg.bScanReqIsFromWebUI = TRUE;
+	while ((ScanRunning(pAdapter) == TRUE) && (WaitCnt++ < 200))
+		OS_WAIT(500);	
+#endif // CONFIG_STA_SUPPORT //
+
+	for(i=0; i<pAdapter->ScanTab.BssNr ;i++)
+	{
+		pBss = &pAdapter->ScanTab.BssEntry[i];
+		
+		if( pBss->Channel==0)
+			break;
+
+		if((strlen(msg)+max_len ) >= IW_SCAN_MAX_DATA)
+			break;
+
+
+		RTMPCommSiteSurveyData(msg, pBss);
+		
+
+#ifdef CONFIG_STA_SUPPORT
+#endif // CONFIG_STA_SUPPORT //
+	}
+
+#ifdef CONFIG_STA_SUPPORT
+	pAdapter->StaCfg.bScanReqIsFromWebUI = FALSE;
+#endif // CONFIG_STA_SUPPORT //
+	wrq->u.data.length = strlen(msg);
+	Status = copy_to_user(wrq->u.data.pointer, msg, wrq->u.data.length);
+
+	DBGPRINT(RT_DEBUG_TRACE, ("RTMPIoctlGetSiteSurvey - wrq->u.data.length = %d\n", wrq->u.data.length));
+	os_free_mem(NULL, (PUCHAR)msg);	
+}
+#endif
+
+#define	MAC_LINE_LEN	(14+4+4+10+10+10+6+6)	// Addr+aid+psm+datatime+rxbyte+txbyte+current tx rate+last tx rate
+VOID RTMPIoctlGetMacTable(
+	IN PRTMP_ADAPTER pAd, 
+	IN struct iwreq *wrq)
+{
+	INT i;
+	RT_802_11_MAC_TABLE MacTab;
+	char *msg;
+
+	MacTab.Num = 0;
+	for (i=0; i<MAX_LEN_OF_MAC_TABLE; i++)
+	{
+		if (IS_ENTRY_CLIENT(&pAd->MacTab.Content[i]) && (pAd->MacTab.Content[i].Sst == SST_ASSOC))
+		{
+			COPY_MAC_ADDR(MacTab.Entry[MacTab.Num].Addr, &pAd->MacTab.Content[i].Addr);
+			MacTab.Entry[MacTab.Num].Aid = (UCHAR)pAd->MacTab.Content[i].Aid;
+			MacTab.Entry[MacTab.Num].Psm = pAd->MacTab.Content[i].PsMode;
+#ifdef DOT11_N_SUPPORT
+			MacTab.Entry[MacTab.Num].MimoPs = pAd->MacTab.Content[i].MmpsMode;
+#endif // DOT11_N_SUPPORT //
+
+			// Fill in RSSI per entry
+			MacTab.Entry[MacTab.Num].AvgRssi0 = pAd->MacTab.Content[i].RssiSample.AvgRssi0;
+			MacTab.Entry[MacTab.Num].AvgRssi1 = pAd->MacTab.Content[i].RssiSample.AvgRssi1;
+			MacTab.Entry[MacTab.Num].AvgRssi2 = pAd->MacTab.Content[i].RssiSample.AvgRssi2;
+
+			// the connected time per entry
+			MacTab.Entry[MacTab.Num].ConnectedTime = pAd->MacTab.Content[i].StaConnectTime;
+			MacTab.Entry[MacTab.Num].TxRate.field.MCS = pAd->MacTab.Content[i].HTPhyMode.field.MCS;
+			MacTab.Entry[MacTab.Num].TxRate.field.BW = pAd->MacTab.Content[i].HTPhyMode.field.BW;
+			MacTab.Entry[MacTab.Num].TxRate.field.ShortGI = pAd->MacTab.Content[i].HTPhyMode.field.ShortGI;
+			MacTab.Entry[MacTab.Num].TxRate.field.STBC = pAd->MacTab.Content[i].HTPhyMode.field.STBC;
+			MacTab.Entry[MacTab.Num].TxRate.field.rsv = pAd->MacTab.Content[i].HTPhyMode.field.rsv;
+			MacTab.Entry[MacTab.Num].TxRate.field.MODE = pAd->MacTab.Content[i].HTPhyMode.field.MODE;
+			MacTab.Entry[MacTab.Num].TxRate.word = pAd->MacTab.Content[i].HTPhyMode.word;
+									
+			MacTab.Num += 1;
+		}
+	}
+
+	wrq->u.data.length = sizeof(RT_802_11_MAC_TABLE);
+	if (copy_to_user(wrq->u.data.pointer, &MacTab, wrq->u.data.length))
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("%s: copy_to_user() fail\n", __FUNCTION__));
+	}
+
+
+	msg = kmalloc(sizeof(CHAR)*(MAX_LEN_OF_MAC_TABLE*MAC_LINE_LEN), MEM_ALLOC_FLAG);
+	if (msg == NULL)
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("%s():Alloc memory failed\n", __FUNCTION__));
+		return;
+	}
+	memset(msg, 0 ,MAX_LEN_OF_MAC_TABLE*MAC_LINE_LEN );
+	sprintf(msg,"%s","\n");
+	sprintf(msg+strlen(msg),"%-14s%-4s%-4s%-4s%-4s%-6s%-6s%-10s%-10s%-10s\n",
+		"MAC", "AP",  "AID", "PSM", "AUTH", "CTxR", "LTxR","LDT", "RxB", "TxB");
+	
+	for (i=0; i<MAX_LEN_OF_MAC_TABLE; i++)
+	{
+		PMAC_TABLE_ENTRY pEntry = &pAd->MacTab.Content[i];
+		if (IS_ENTRY_CLIENT(pEntry) && (pEntry->Sst == SST_ASSOC))
+		{
+			if((strlen(msg)+MAC_LINE_LEN ) >= (MAX_LEN_OF_MAC_TABLE*MAC_LINE_LEN) )
+				break;	
+			sprintf(msg+strlen(msg),"%02x%02x%02x%02x%02x%02x  ",
+				pEntry->Addr[0], pEntry->Addr[1], pEntry->Addr[2],
+				pEntry->Addr[3], pEntry->Addr[4], pEntry->Addr[5]);
+			sprintf(msg+strlen(msg),"%-4d", (int)pEntry->apidx);
+			sprintf(msg+strlen(msg),"%-4d", (int)pEntry->Aid);
+			sprintf(msg+strlen(msg),"%-4d", (int)pEntry->PsMode);
+			sprintf(msg+strlen(msg),"%-4d", (int)pEntry->AuthState);
+			sprintf(msg+strlen(msg),"%-6d",RateIdToMbps[pAd->MacTab.Content[i].CurrTxRate]);
+			sprintf(msg+strlen(msg),"%-6d",0/*RateIdToMbps[pAd->MacTab.Content[i].HTPhyMode.word]*/); // ToDo
+			sprintf(msg+strlen(msg),"%-10d",0/*pAd->MacTab.Content[i].HSCounter.LastDataPacketTime*/); // ToDo
+			sprintf(msg+strlen(msg),"%-10d",0/*pAd->MacTab.Content[i].HSCounter.TotalRxByteCount*/); // ToDo
+			sprintf(msg+strlen(msg),"%-10d\n",0/*pAd->MacTab.Content[i].HSCounter.TotalTxByteCount*/); // ToDo
+
+		}
+	} 
+	// for compatible with old API just do the printk to console
+
+	DBGPRINT(RT_DEBUG_TRACE, ("%s", msg));
+	kfree(msg);
+}
+
+#ifdef DOT11_N_SUPPORT
+INT	Set_BASetup_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+    UCHAR mac[6], tid;
+	PSTRING token;
+	STRING sepValue[] = ":", DASH = '-';
+	INT i;
+    MAC_TABLE_ENTRY *pEntry;
+
+/*
+	The BASetup inupt string format should be xx:xx:xx:xx:xx:xx-d, 
+		=>The six 2 digit hex-decimal number previous are the Mac address, 
+		=>The seventh decimal number is the tid value.
+*/
+	//DBGPRINT(RT_DEBUG_TRACE,("\n%s\n", arg));
+	
+	if(strlen(arg) < 19)  //Mac address acceptable format 01:02:03:04:05:06 length 17 plus the "-" and tid value in decimal format.
+		return FALSE;
+
+	token = strchr(arg, DASH);
+	if ((token != NULL) && (strlen(token)>1))
+	{
+		tid = (UCHAR) simple_strtol((token+1), 0, 10);
+		if (tid > 15)
+			return FALSE;
+		
+		*token = '\0';
+		for (i = 0, token = rstrtok(arg, &sepValue[0]); token; token = rstrtok(NULL, &sepValue[0]), i++)
+		{
+			if((strlen(token) != 2) || (!isxdigit(*token)) || (!isxdigit(*(token+1))))
+				return FALSE;
+			AtoH(token, (&mac[i]), 1);
+		}
+		if(i != 6)
+			return FALSE;
+
+		DBGPRINT(RT_DEBUG_OFF, ("\n%02x:%02x:%02x:%02x:%02x:%02x-%02x\n", 
+								mac[0], mac[1], mac[2], mac[3], mac[4], mac[5], tid));
+
+	    pEntry = MacTableLookup(pAd, (PUCHAR) mac);
+
+    	if (pEntry) {
+        	DBGPRINT(RT_DEBUG_OFF, ("\nSetup BA Session: Tid = %d\n", tid));
+	        BAOriSessionSetUp(pAd, pEntry, tid, 0, 100, TRUE);
+    	}
+
+		return TRUE;
+	}
+
+	return FALSE;
+
+}
+
+INT	Set_BADecline_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	ULONG bBADecline;
+
+	bBADecline = simple_strtol(arg, 0, 10);
+
+	if (bBADecline == 0)
+	{
+		pAd->CommonCfg.bBADecline = FALSE;
+	}
+	else if (bBADecline == 1)
+	{
+		pAd->CommonCfg.bBADecline = TRUE;
+	}
+	else 
+	{
+		return FALSE; //Invalid argument
+	}
+
+	DBGPRINT(RT_DEBUG_TRACE, ("Set_BADecline_Proc::(BADecline=%d)\n", pAd->CommonCfg.bBADecline));
+
+	return TRUE;
+}
+
+INT	Set_BAOriTearDown_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+    UCHAR mac[6], tid;
+	PSTRING token;
+	STRING sepValue[] = ":", DASH = '-';
+	INT i;
+    MAC_TABLE_ENTRY *pEntry;
+
+    //DBGPRINT(RT_DEBUG_TRACE,("\n%s\n", arg));
+/*
+	The BAOriTearDown inupt string format should be xx:xx:xx:xx:xx:xx-d, 
+		=>The six 2 digit hex-decimal number previous are the Mac address, 
+		=>The seventh decimal number is the tid value.
+*/
+    if(strlen(arg) < 19)  //Mac address acceptable format 01:02:03:04:05:06 length 17 plus the "-" and tid value in decimal format.
+		return FALSE;
+
+	token = strchr(arg, DASH);
+	if ((token != NULL) && (strlen(token)>1))
+	{
+		tid = simple_strtol((token+1), 0, 10);
+		if (tid > NUM_OF_TID)
+			return FALSE;
+		
+		*token = '\0';
+		for (i = 0, token = rstrtok(arg, &sepValue[0]); token; token = rstrtok(NULL, &sepValue[0]), i++)
+		{
+			if((strlen(token) != 2) || (!isxdigit(*token)) || (!isxdigit(*(token+1))))
+				return FALSE;
+			AtoH(token, (&mac[i]), 1);
+		}
+		if(i != 6)
+			return FALSE;
+
+	    DBGPRINT(RT_DEBUG_OFF, ("\n%02x:%02x:%02x:%02x:%02x:%02x-%02x", 
+								mac[0], mac[1], mac[2], mac[3], mac[4], mac[5], tid));
+
+	    pEntry = MacTableLookup(pAd, (PUCHAR) mac);
+
+	    if (pEntry) {
+	        DBGPRINT(RT_DEBUG_OFF, ("\nTear down Ori BA Session: Tid = %d\n", tid));
+	        BAOriSessionTearDown(pAd, pEntry->Aid, tid, FALSE, TRUE);
+	    }
+
+		return TRUE;
+	}
+
+	return FALSE;
+
+}
+
+INT	Set_BARecTearDown_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+    UCHAR mac[6], tid;
+	PSTRING token;
+	STRING sepValue[] = ":", DASH = '-';
+	INT i;
+    MAC_TABLE_ENTRY *pEntry;
+
+    //DBGPRINT(RT_DEBUG_TRACE,("\n%s\n", arg));
+/*
+	The BARecTearDown inupt string format should be xx:xx:xx:xx:xx:xx-d, 
+		=>The six 2 digit hex-decimal number previous are the Mac address, 
+		=>The seventh decimal number is the tid value.
+*/
+    if(strlen(arg) < 19)  //Mac address acceptable format 01:02:03:04:05:06 length 17 plus the "-" and tid value in decimal format.
+		return FALSE;
+
+	token = strchr(arg, DASH);
+	if ((token != NULL) && (strlen(token)>1))
+	{
+		tid = simple_strtol((token+1), 0, 10);
+		if (tid > NUM_OF_TID)
+			return FALSE;
+		
+		*token = '\0';
+		for (i = 0, token = rstrtok(arg, &sepValue[0]); token; token = rstrtok(NULL, &sepValue[0]), i++)
+		{
+			if((strlen(token) != 2) || (!isxdigit(*token)) || (!isxdigit(*(token+1))))
+				return FALSE;
+			AtoH(token, (&mac[i]), 1);
+		}
+		if(i != 6)
+			return FALSE;
+
+		DBGPRINT(RT_DEBUG_OFF, ("\n%02x:%02x:%02x:%02x:%02x:%02x-%02x", 
+								mac[0], mac[1], mac[2], mac[3], mac[4], mac[5], tid));
+
+		pEntry = MacTableLookup(pAd, (PUCHAR) mac);
+
+		if (pEntry) {
+		    DBGPRINT(RT_DEBUG_OFF, ("\nTear down Rec BA Session: Tid = %d\n", tid));
+		    BARecSessionTearDown(pAd, pEntry->Aid, tid, FALSE);
+		}
+
+		return TRUE;
+	}
+
+	return FALSE;
+
+}
+
+INT	Set_HtBw_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	ULONG HtBw;
+
+	HtBw = simple_strtol(arg, 0, 10);
+	if (HtBw == BW_40)
+		pAd->CommonCfg.RegTransmitSetting.field.BW  = BW_40;
+	else if (HtBw == BW_20)
+		pAd->CommonCfg.RegTransmitSetting.field.BW  = BW_20;
+	else
+		return FALSE;  //Invalid argument 
+
+	SetCommonHT(pAd);
+	
+	DBGPRINT(RT_DEBUG_TRACE, ("Set_HtBw_Proc::(HtBw=%d)\n", pAd->CommonCfg.RegTransmitSetting.field.BW));
+
+	return TRUE;
+}
+
+INT	Set_HtMcs_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	ULONG HtMcs, Mcs_tmp, ValidMcs = 15;
+#ifdef CONFIG_STA_SUPPORT    
+    BOOLEAN bAutoRate = FALSE;
+#endif // CONFIG_STA_SUPPORT //
+
+	Mcs_tmp = simple_strtol(arg, 0, 10);
+		
+	if (Mcs_tmp <= ValidMcs || Mcs_tmp == 32)			
+		HtMcs = Mcs_tmp;	
+	else
+		HtMcs = MCS_AUTO;	
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+		pAd->StaCfg.DesiredTransmitSetting.field.MCS = HtMcs;
+		pAd->StaCfg.bAutoTxRateSwitch = (HtMcs == MCS_AUTO) ? TRUE:FALSE;
+		DBGPRINT(RT_DEBUG_TRACE, ("Set_HtMcs_Proc::(HtMcs=%d, bAutoTxRateSwitch = %d)\n", 
+						pAd->StaCfg.DesiredTransmitSetting.field.MCS, pAd->StaCfg.bAutoTxRateSwitch));
+
+		if ((pAd->CommonCfg.PhyMode < PHY_11ABGN_MIXED) ||
+			(pAd->MacTab.Content[BSSID_WCID].HTPhyMode.field.MODE < MODE_HTMIX))
+		{
+			if ((pAd->StaCfg.DesiredTransmitSetting.field.MCS != MCS_AUTO) && 
+				(HtMcs <= 3) && 
+	            (pAd->StaCfg.DesiredTransmitSetting.field.FixedTxMode == FIXED_TXMODE_CCK))
+			{
+				RTMPSetDesiredRates(pAd, (LONG) (RateIdToMbps[HtMcs] * 1000000));
+			}
+			else if ((pAd->StaCfg.DesiredTransmitSetting.field.MCS != MCS_AUTO) && 
+					(HtMcs <= 7) &&
+	            	(pAd->StaCfg.DesiredTransmitSetting.field.FixedTxMode == FIXED_TXMODE_OFDM))
+			{
+				RTMPSetDesiredRates(pAd, (LONG) (RateIdToMbps[HtMcs+4] * 1000000));
+			}
+			else
+				bAutoRate = TRUE;
+
+			if (bAutoRate)
+			{
+	            pAd->StaCfg.DesiredTransmitSetting.field.MCS = MCS_AUTO;
+				RTMPSetDesiredRates(pAd, -1);
+			}
+	        DBGPRINT(RT_DEBUG_TRACE, ("Set_HtMcs_Proc::(FixedTxMode=%d)\n",pAd->StaCfg.DesiredTransmitSetting.field.FixedTxMode));
+		}
+        if (ADHOC_ON(pAd))
+            return TRUE;
+	}
+#endif // CONFIG_STA_SUPPORT //
+
+	SetCommonHT(pAd);
+	
+	return TRUE;
+}
+
+INT	Set_HtGi_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	ULONG HtGi;
+
+	HtGi = simple_strtol(arg, 0, 10);
+		
+	if ( HtGi == GI_400)			
+		pAd->CommonCfg.RegTransmitSetting.field.ShortGI = GI_400;
+	else if ( HtGi == GI_800 )
+		pAd->CommonCfg.RegTransmitSetting.field.ShortGI = GI_800;
+	else 
+		return FALSE; //Invalid argument 	
+
+	SetCommonHT(pAd);
+	
+	DBGPRINT(RT_DEBUG_TRACE, ("Set_HtGi_Proc::(ShortGI=%d)\n",pAd->CommonCfg.RegTransmitSetting.field.ShortGI));
+
+	return TRUE;
+}
+
+
+INT	Set_HtTxBASize_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	UCHAR Size;
+
+	Size = simple_strtol(arg, 0, 10);
+		
+	if (Size <=0 || Size >=64)
+	{
+		Size = 8;
+	}
+	pAd->CommonCfg.TxBASize = Size-1;
+	DBGPRINT(RT_DEBUG_ERROR, ("Set_HtTxBASize ::(TxBASize= %d)\n", Size));
+
+	return TRUE;
+}
+
+INT	Set_HtDisallowTKIP_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	ULONG Value;
+
+	Value = simple_strtol(arg, 0, 10);
+		
+	if (Value == 1)
+	{
+		pAd->CommonCfg.HT_DisallowTKIP = TRUE;
+	}
+	else
+	{
+		pAd->CommonCfg.HT_DisallowTKIP = FALSE;
+	}
+	
+	DBGPRINT(RT_DEBUG_TRACE, ("Set_HtDisallowTKIP_Proc ::%s\n", 
+				(pAd->CommonCfg.HT_DisallowTKIP == TRUE) ? "enabled" : "disabled"));
+
+	return TRUE;
+}
+
+INT	Set_HtOpMode_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+
+	ULONG Value;
+	
+	Value = simple_strtol(arg, 0, 10);
+
+	if (Value == HTMODE_GF)
+		pAd->CommonCfg.RegTransmitSetting.field.HTMODE  = HTMODE_GF;
+	else if ( Value == HTMODE_MM )
+		pAd->CommonCfg.RegTransmitSetting.field.HTMODE  = HTMODE_MM;
+	else 
+		return FALSE; //Invalid argument 	
+
+	SetCommonHT(pAd);
+	
+	DBGPRINT(RT_DEBUG_TRACE, ("Set_HtOpMode_Proc::(HtOpMode=%d)\n",pAd->CommonCfg.RegTransmitSetting.field.HTMODE));
+
+	return TRUE;
+
+}	
+
+INT	Set_HtStbc_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+
+	ULONG Value;
+	
+	Value = simple_strtol(arg, 0, 10);
+	
+	if (Value == STBC_USE)
+		pAd->CommonCfg.RegTransmitSetting.field.STBC = STBC_USE;
+	else if ( Value == STBC_NONE )
+		pAd->CommonCfg.RegTransmitSetting.field.STBC = STBC_NONE;
+	else 
+		return FALSE; //Invalid argument 	
+
+	SetCommonHT(pAd);
+	
+	DBGPRINT(RT_DEBUG_TRACE, ("Set_Stbc_Proc::(HtStbc=%d)\n",pAd->CommonCfg.RegTransmitSetting.field.STBC));
+
+	return TRUE;											
+}
+
+INT	Set_HtHtc_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+
+	ULONG Value;
+	
+	Value = simple_strtol(arg, 0, 10);
+	if (Value == 0)
+		pAd->HTCEnable = FALSE;
+	else if ( Value ==1 )
+        pAd->HTCEnable = TRUE;
+	else 
+		return FALSE; //Invalid argument 	
+	
+	DBGPRINT(RT_DEBUG_TRACE, ("Set_HtHtc_Proc::(HtHtc=%d)\n",pAd->HTCEnable));
+
+	return TRUE;		
+}
+			
+INT	Set_HtExtcha_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+
+	ULONG Value;
+	
+	Value = simple_strtol(arg, 0, 10);
+	
+	if (Value == 0)
+		pAd->CommonCfg.RegTransmitSetting.field.EXTCHA  = EXTCHA_BELOW;
+	else if ( Value ==1 )
+        pAd->CommonCfg.RegTransmitSetting.field.EXTCHA = EXTCHA_ABOVE;
+	else 
+		return FALSE; //Invalid argument 	
+	
+	SetCommonHT(pAd);
+
+	DBGPRINT(RT_DEBUG_TRACE, ("Set_HtExtcha_Proc::(HtExtcha=%d)\n",pAd->CommonCfg.RegTransmitSetting.field.EXTCHA));
+
+	return TRUE;			
+}
+
+INT	Set_HtMpduDensity_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	ULONG Value;
+	
+	Value = simple_strtol(arg, 0, 10);
+	
+	if (Value <=7)
+		pAd->CommonCfg.BACapability.field.MpduDensity = Value;
+	else
+		pAd->CommonCfg.BACapability.field.MpduDensity = 4;
+
+	SetCommonHT(pAd);
+
+	DBGPRINT(RT_DEBUG_TRACE, ("Set_HtMpduDensity_Proc::(HtMpduDensity=%d)\n",pAd->CommonCfg.BACapability.field.MpduDensity));
+
+	return TRUE;																																	
+}
+
+INT	Set_HtBaWinSize_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	ULONG Value;
+	
+	Value = simple_strtol(arg, 0, 10);
+
+
+	if (Value >=1 && Value <= 64)
+	{
+		pAd->CommonCfg.REGBACapability.field.RxBAWinLimit = Value;
+		pAd->CommonCfg.BACapability.field.RxBAWinLimit = Value;
+	}
+	else
+	{
+        pAd->CommonCfg.REGBACapability.field.RxBAWinLimit = 64;
+		pAd->CommonCfg.BACapability.field.RxBAWinLimit = 64;
+	}
+	
+	SetCommonHT(pAd);
+
+	DBGPRINT(RT_DEBUG_TRACE, ("Set_HtBaWinSize_Proc::(HtBaWinSize=%d)\n",pAd->CommonCfg.BACapability.field.RxBAWinLimit));
+
+	return TRUE;																																	
+}		
+
+INT	Set_HtRdg_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	ULONG Value;
+	
+	Value = simple_strtol(arg, 0, 10);
+	
+	if (Value == 0)			
+		pAd->CommonCfg.bRdg = FALSE;
+	else if ( Value ==1 )
+	{
+		pAd->HTCEnable = TRUE;
+        pAd->CommonCfg.bRdg = TRUE;
+	}
+	else 
+		return FALSE; //Invalid argument
+	
+	SetCommonHT(pAd);	
+		
+	DBGPRINT(RT_DEBUG_TRACE, ("Set_HtRdg_Proc::(HtRdg=%d)\n",pAd->CommonCfg.bRdg));
+
+	return TRUE;																																	
+}		
+
+INT	Set_HtLinkAdapt_Proc(																																																																																																																																																																																																																																																																																																																			
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	ULONG Value;
+	
+	Value = simple_strtol(arg, 0, 10);
+	if (Value == 0)
+		pAd->bLinkAdapt = FALSE;
+	else if ( Value ==1 )
+	{
+			pAd->HTCEnable = TRUE;
+			pAd->bLinkAdapt = TRUE;
+	}
+	else
+		return FALSE; //Invalid argument
+	
+	DBGPRINT(RT_DEBUG_TRACE, ("Set_HtLinkAdapt_Proc::(HtLinkAdapt=%d)\n",pAd->bLinkAdapt));
+
+	return TRUE;																																	
+}		
+
+INT	Set_HtAmsdu_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	ULONG Value;
+	
+	Value = simple_strtol(arg, 0, 10);
+	if (Value == 0)
+		pAd->CommonCfg.BACapability.field.AmsduEnable = FALSE;
+	else if ( Value == 1 )
+        pAd->CommonCfg.BACapability.field.AmsduEnable = TRUE;
+	else
+		return FALSE; //Invalid argument
+	
+	SetCommonHT(pAd);	
+		
+	DBGPRINT(RT_DEBUG_TRACE, ("Set_HtAmsdu_Proc::(HtAmsdu=%d)\n",pAd->CommonCfg.BACapability.field.AmsduEnable));
+
+	return TRUE;																																	
+}			
+
+INT	Set_HtAutoBa_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	ULONG Value;
+	
+	Value = simple_strtol(arg, 0, 10);
+	if (Value == 0)
+	{
+		pAd->CommonCfg.BACapability.field.AutoBA = FALSE;
+		pAd->CommonCfg.BACapability.field.Policy = BA_NOTUSE;
+	}
+    else if (Value == 1)	
+    {
+		pAd->CommonCfg.BACapability.field.AutoBA = TRUE;
+		pAd->CommonCfg.BACapability.field.Policy = IMMED_BA;
+    }
+	else
+		return FALSE; //Invalid argument
+	
+    pAd->CommonCfg.REGBACapability.field.AutoBA = pAd->CommonCfg.BACapability.field.AutoBA;
+	pAd->CommonCfg.REGBACapability.field.Policy = pAd->CommonCfg.BACapability.field.Policy;
+	SetCommonHT(pAd);	
+		
+	DBGPRINT(RT_DEBUG_TRACE, ("Set_HtAutoBa_Proc::(HtAutoBa=%d)\n",pAd->CommonCfg.BACapability.field.AutoBA));
+
+	return TRUE;				
+		
+}		
+																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																						
+INT	Set_HtProtect_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	ULONG Value;
+
+	Value = simple_strtol(arg, 0, 10);
+	if (Value == 0)
+		pAd->CommonCfg.bHTProtect = FALSE;
+    else if (Value == 1)	
+		pAd->CommonCfg.bHTProtect = TRUE;
+	else
+		return FALSE; //Invalid argument
+
+	DBGPRINT(RT_DEBUG_TRACE, ("Set_HtProtect_Proc::(HtProtect=%d)\n",pAd->CommonCfg.bHTProtect));
+
+	return TRUE;
+}
+
+INT	Set_SendPSMPAction_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+    UCHAR mac[6], mode;
+	PSTRING token;
+	STRING sepValue[] = ":", DASH = '-';
+	INT i;
+    MAC_TABLE_ENTRY *pEntry;
+
+    //DBGPRINT(RT_DEBUG_TRACE,("\n%s\n", arg));
+/*
+	The BARecTearDown inupt string format should be xx:xx:xx:xx:xx:xx-d, 
+		=>The six 2 digit hex-decimal number previous are the Mac address, 
+		=>The seventh decimal number is the mode value.
+*/
+    if(strlen(arg) < 19)  //Mac address acceptable format 01:02:03:04:05:06 length 17 plus the "-" and mode value in decimal format.
+		return FALSE;
+
+   	token = strchr(arg, DASH);
+	if ((token != NULL) && (strlen(token)>1))
+	{
+		mode = simple_strtol((token+1), 0, 10);
+		if (mode > MMPS_ENABLE)
+			return FALSE;
+		
+		*token = '\0';
+		for (i = 0, token = rstrtok(arg, &sepValue[0]); token; token = rstrtok(NULL, &sepValue[0]), i++)
+		{
+			if((strlen(token) != 2) || (!isxdigit(*token)) || (!isxdigit(*(token+1))))
+				return FALSE;
+			AtoH(token, (&mac[i]), 1);
+		}
+		if(i != 6)
+			return FALSE;
+
+		DBGPRINT(RT_DEBUG_OFF, ("\n%02x:%02x:%02x:%02x:%02x:%02x-%02x", 
+								mac[0], mac[1], mac[2], mac[3], mac[4], mac[5], mode));
+
+		pEntry = MacTableLookup(pAd, mac);
+
+		if (pEntry) {
+		    DBGPRINT(RT_DEBUG_OFF, ("\nSendPSMPAction MIPS mode = %d\n", mode));
+		    SendPSMPAction(pAd, pEntry->Aid, mode);
+		}
+
+		return TRUE;
+	}
+
+	return FALSE;
+
+
+}
+
+INT	Set_HtMIMOPSmode_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	ULONG Value;
+	
+	Value = simple_strtol(arg, 0, 10);
+	
+	if (Value <=3)
+		pAd->CommonCfg.BACapability.field.MMPSmode = Value;
+	else
+		pAd->CommonCfg.BACapability.field.MMPSmode = 3;
+
+	SetCommonHT(pAd);
+
+	DBGPRINT(RT_DEBUG_TRACE, ("Set_HtMIMOPSmode_Proc::(MIMOPS mode=%d)\n",pAd->CommonCfg.BACapability.field.MMPSmode));
+
+	return TRUE;																																	
+}
+
+
+INT	Set_ForceShortGI_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	ULONG Value;
+
+	Value = simple_strtol(arg, 0, 10);
+	if (Value == 0)
+		pAd->WIFItestbed.bShortGI = FALSE;
+	else if (Value == 1)	
+		pAd->WIFItestbed.bShortGI = TRUE;
+	else
+		return FALSE; //Invalid argument
+
+	SetCommonHT(pAd);
+
+	DBGPRINT(RT_DEBUG_TRACE, ("Set_ForceShortGI_Proc::(ForceShortGI=%d)\n", pAd->WIFItestbed.bShortGI));
+
+	return TRUE;
+}
+
+
+
+INT	Set_ForceGF_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	ULONG Value;
+
+	Value = simple_strtol(arg, 0, 10);
+	if (Value == 0)
+		pAd->WIFItestbed.bGreenField = FALSE;
+	else if (Value == 1)	
+		pAd->WIFItestbed.bGreenField = TRUE;
+	else
+		return FALSE; //Invalid argument
+
+	SetCommonHT(pAd);
+
+	DBGPRINT(RT_DEBUG_TRACE, ("Set_ForceGF_Proc::(ForceGF=%d)\n", pAd->WIFItestbed.bGreenField));
+
+	return TRUE;
+}
+
+INT	Set_HtMimoPs_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	ULONG Value;
+
+	Value = simple_strtol(arg, 0, 10);
+	if (Value == 0)
+		pAd->CommonCfg.bMIMOPSEnable = FALSE;
+	else if (Value == 1)	
+		pAd->CommonCfg.bMIMOPSEnable = TRUE;
+	else
+		return FALSE; //Invalid argument
+
+	DBGPRINT(RT_DEBUG_TRACE, ("Set_HtMimoPs_Proc::(HtMimoPs=%d)\n",pAd->CommonCfg.bMIMOPSEnable));
+
+	return TRUE;
+}
+
+
+#ifdef DOT11N_DRAFT3
+INT Set_HT_BssCoex_Proc(
+	IN	PRTMP_ADAPTER		pAd,
+	IN	PSTRING				pParam)
+{
+	UCHAR bBssCoexEnable = simple_strtol(pParam, 0, 10);
+
+	pAd->CommonCfg.bBssCoexEnable = ((bBssCoexEnable == 1) ? TRUE: FALSE);
+
+	DBGPRINT(RT_DEBUG_TRACE, ("Set bBssCoexEnable=%d!\n", pAd->CommonCfg.bBssCoexEnable));
+	
+	return TRUE;
+}
+#endif // DOT11N_DRAFT3 //
+
+#endif // DOT11_N_SUPPORT //
+
+
+#ifdef DOT11_N_SUPPORT
+INT	SetCommonHT(
+	IN	PRTMP_ADAPTER	pAd)
+{
+	OID_SET_HT_PHYMODE		SetHT;
+	
+	if (pAd->CommonCfg.PhyMode < PHY_11ABGN_MIXED)
+		return FALSE;
+				
+	SetHT.PhyMode = (RT_802_11_PHY_MODE)pAd->CommonCfg.PhyMode;
+	SetHT.TransmitNo = ((UCHAR)pAd->Antenna.field.TxPath);
+	SetHT.HtMode = (UCHAR)pAd->CommonCfg.RegTransmitSetting.field.HTMODE;
+	SetHT.ExtOffset = (UCHAR)pAd->CommonCfg.RegTransmitSetting.field.EXTCHA;
+	SetHT.MCS = MCS_AUTO;
+	SetHT.BW = (UCHAR)pAd->CommonCfg.RegTransmitSetting.field.BW;
+	SetHT.STBC = (UCHAR)pAd->CommonCfg.RegTransmitSetting.field.STBC;
+	SetHT.SHORTGI = (UCHAR)pAd->CommonCfg.RegTransmitSetting.field.ShortGI;		
+
+	RTMPSetHT(pAd, &SetHT);
+
+	return TRUE;
+}
+#endif // DOT11_N_SUPPORT //
+
+INT	Set_FixedTxMode_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	INT	fix_tx_mode = FIXED_TXMODE_HT;
+
+	fix_tx_mode = RT_CfgSetFixedTxPhyMode(arg);
+	
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		pAd->StaCfg.DesiredTransmitSetting.field.FixedTxMode = fix_tx_mode;
+#endif // CONFIG_STA_SUPPORT //
+	
+	DBGPRINT(RT_DEBUG_TRACE, ("Set_FixedTxMode_Proc::(FixedTxMode=%d)\n", fix_tx_mode));
+
+	return TRUE;
+}
+
+#ifdef CONFIG_APSTA_MIXED_SUPPORT
+INT	Set_OpMode_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	ULONG Value;
+
+	Value = simple_strtol(arg, 0, 10);
+
+#ifdef RTMP_MAC_PCI
+	if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_IN_USE))
+#endif // RTMP_MAC_PCI //
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("Can not switch operate mode on interface up !! \n"));
+		return FALSE;
+	}
+
+	if (Value == 0)
+		pAd->OpMode = OPMODE_STA;
+	else if (Value == 1)	
+		pAd->OpMode = OPMODE_AP;
+	else
+		return FALSE; //Invalid argument
+
+	DBGPRINT(RT_DEBUG_TRACE, ("Set_OpMode_Proc::(OpMode=%s)\n", pAd->OpMode == 1 ? "AP Mode" : "STA Mode"));
+
+	return TRUE;
+}
+#endif // CONFIG_APSTA_MIXED_SUPPORT //
+
+
+
+INT Set_LongRetryLimit_Proc(
+	IN	PRTMP_ADAPTER	pAdapter, 
+	IN	PSTRING			arg)
+{
+	TX_RTY_CFG_STRUC	tx_rty_cfg;
+	UCHAR				LongRetryLimit = (UCHAR)simple_strtol(arg, 0, 10);
+
+	RTMP_IO_READ32(pAdapter, TX_RTY_CFG, &tx_rty_cfg.word);
+	tx_rty_cfg.field.LongRtyLimit = LongRetryLimit;
+	RTMP_IO_WRITE32(pAdapter, TX_RTY_CFG, tx_rty_cfg.word);
+	DBGPRINT(RT_DEBUG_TRACE, ("IF Set_LongRetryLimit_Proc::(tx_rty_cfg=0x%x)\n", tx_rty_cfg.word));
+	return TRUE;
+}
+
+INT Set_ShortRetryLimit_Proc(
+	IN	PRTMP_ADAPTER	pAdapter, 
+	IN	PSTRING			arg)
+{
+	TX_RTY_CFG_STRUC	tx_rty_cfg;
+	UCHAR				ShortRetryLimit = (UCHAR)simple_strtol(arg, 0, 10);
+
+	RTMP_IO_READ32(pAdapter, TX_RTY_CFG, &tx_rty_cfg.word);
+	tx_rty_cfg.field.ShortRtyLimit = ShortRetryLimit;
+	RTMP_IO_WRITE32(pAdapter, TX_RTY_CFG, tx_rty_cfg.word);	
+	DBGPRINT(RT_DEBUG_TRACE, ("IF Set_ShortRetryLimit_Proc::(tx_rty_cfg=0x%x)\n", tx_rty_cfg.word));
+	return TRUE;
+}
+
+INT Set_AutoFallBack_Proc(
+	IN	PRTMP_ADAPTER	pAdapter, 
+	IN	PSTRING			arg)
+{
+	return RT_CfgSetAutoFallBack(pAdapter, arg);
+}
+
+
+
+/////////////////////////////////////////////////////////////////////////
+PSTRING RTMPGetRalinkAuthModeStr(
+    IN  NDIS_802_11_AUTHENTICATION_MODE authMode)
+{
+	switch(authMode)
+	{
+		case Ndis802_11AuthModeOpen:
+			return "OPEN";
+		case Ndis802_11AuthModeWPAPSK:
+			return "WPAPSK";
+		case Ndis802_11AuthModeShared:
+			return "SHARED";
+		case Ndis802_11AuthModeAutoSwitch:
+			return "WEPAUTO";
+		case Ndis802_11AuthModeWPA:
+			return "WPA";
+		case Ndis802_11AuthModeWPA2:
+			return "WPA2";
+		case Ndis802_11AuthModeWPA2PSK:
+			return "WPA2PSK";
+        case Ndis802_11AuthModeWPA1PSKWPA2PSK:
+			return "WPAPSKWPA2PSK";
+        case Ndis802_11AuthModeWPA1WPA2:
+			return "WPA1WPA2";
+		case Ndis802_11AuthModeWPANone:
+			return "WPANONE";
+		default:
+			return "UNKNOW";
+	}
+}
+
+PSTRING RTMPGetRalinkEncryModeStr(
+    IN  USHORT encryMode)
+{
+	switch(encryMode)
+	{
+		case Ndis802_11WEPDisabled:
+			return "NONE";
+		case Ndis802_11WEPEnabled:
+			return "WEP";        
+		case Ndis802_11Encryption2Enabled:
+			return "TKIP";
+		case Ndis802_11Encryption3Enabled:
+			return "AES";
+        case Ndis802_11Encryption4Enabled:
+			return "TKIPAES";
+		default:
+			return "UNKNOW";
+	}
+}
+
+INT RTMPShowCfgValue(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			pName,
+	IN	PSTRING			pBuf)
+{
+	INT	Status = 0;	
+	
+	for (PRTMP_PRIVATE_STA_SHOW_CFG_VALUE_PROC = RTMP_PRIVATE_STA_SHOW_CFG_VALUE_PROC; PRTMP_PRIVATE_STA_SHOW_CFG_VALUE_PROC->name; PRTMP_PRIVATE_STA_SHOW_CFG_VALUE_PROC++)
+	{
+		if (!strcmp(pName, PRTMP_PRIVATE_STA_SHOW_CFG_VALUE_PROC->name)) 
+		{						
+			if(PRTMP_PRIVATE_STA_SHOW_CFG_VALUE_PROC->show_proc(pAd, pBuf))
+				Status = -EINVAL;
+			break;  //Exit for loop.
+		}
+	}
+
+	if(PRTMP_PRIVATE_STA_SHOW_CFG_VALUE_PROC->name == NULL)
+	{
+		sprintf(pBuf, "\n");
+		for (PRTMP_PRIVATE_STA_SHOW_CFG_VALUE_PROC = RTMP_PRIVATE_STA_SHOW_CFG_VALUE_PROC; PRTMP_PRIVATE_STA_SHOW_CFG_VALUE_PROC->name; PRTMP_PRIVATE_STA_SHOW_CFG_VALUE_PROC++)
+			sprintf(pBuf, "%s%s\n", pBuf, PRTMP_PRIVATE_STA_SHOW_CFG_VALUE_PROC->name);
+	}
+	
+	return Status;
+}
+
+INT	Show_SSID_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf)
+{
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		sprintf(pBuf, "\t%s", pAd->CommonCfg.Ssid);
+#endif // CONFIG_STA_SUPPORT //
+	return 0;
+}
+
+INT	Show_WirelessMode_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf)
+{
+	switch(pAd->CommonCfg.PhyMode)
+	{
+		case PHY_11BG_MIXED:
+			sprintf(pBuf, "\t11B/G");
+			break;
+		case PHY_11B:
+			sprintf(pBuf, "\t11B");
+			break;
+		case PHY_11A:
+			sprintf(pBuf, "\t11A");
+			break;
+		case PHY_11ABG_MIXED:
+			sprintf(pBuf, "\t11A/B/G");
+			break;
+		case PHY_11G:
+			sprintf(pBuf, "\t11G");
+			break;
+#ifdef DOT11_N_SUPPORT
+		case PHY_11ABGN_MIXED:
+			sprintf(pBuf, "\t11A/B/G/N");
+			break;
+		case PHY_11N_2_4G:
+			sprintf(pBuf, "\t11N only with 2.4G");
+			break;
+		case PHY_11GN_MIXED:
+			sprintf(pBuf, "\t11G/N");
+			break;
+		case PHY_11AN_MIXED:
+			sprintf(pBuf, "\t11A/N");
+			break;
+		case PHY_11BGN_MIXED:
+			sprintf(pBuf, "\t11B/G/N");
+			break;
+		case PHY_11AGN_MIXED:
+			sprintf(pBuf, "\t11A/G/N");
+			break;
+		case PHY_11N_5G:
+			sprintf(pBuf, "\t11N only with 5G");
+			break;
+#endif // DOT11_N_SUPPORT //
+		default:
+			sprintf(pBuf, "\tUnknow Value(%d)", pAd->CommonCfg.PhyMode);
+			break;
+	}
+	return 0;
+}
+
+
+INT	Show_TxBurst_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf)
+{
+	sprintf(pBuf, "\t%s", pAd->CommonCfg.bEnableTxBurst ? "TRUE":"FALSE");
+	return 0;
+}
+
+INT	Show_TxPreamble_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf)
+{
+	switch(pAd->CommonCfg.TxPreamble)
+	{
+		case Rt802_11PreambleShort:
+			sprintf(pBuf, "\tShort");
+			break;
+		case Rt802_11PreambleLong:
+			sprintf(pBuf, "\tLong");
+			break;
+		case Rt802_11PreambleAuto:
+			sprintf(pBuf, "\tAuto");
+			break;
+		default:
+			sprintf(pBuf, "\tUnknow Value(%lu)", pAd->CommonCfg.TxPreamble);
+			break;
+	}
+	
+	return 0;
+}
+
+INT	Show_TxPower_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf)
+{
+	sprintf(pBuf, "\t%lu", pAd->CommonCfg.TxPowerPercentage);
+	return 0;
+}
+
+INT	Show_Channel_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf)
+{
+	sprintf(pBuf, "\t%d", pAd->CommonCfg.Channel);
+	return 0;
+}
+
+INT	Show_BGProtection_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf)
+{
+	switch(pAd->CommonCfg.UseBGProtection)
+	{
+		case 1: //Always On
+			sprintf(pBuf, "\tON");
+			break;
+		case 2: //Always OFF
+			sprintf(pBuf, "\tOFF");
+			break;
+		case 0: //AUTO
+			sprintf(pBuf, "\tAuto");
+			break;
+		default:
+			sprintf(pBuf, "\tUnknow Value(%lu)", pAd->CommonCfg.UseBGProtection);
+			break;
+	}
+	return 0;
+}
+
+INT	Show_RTSThreshold_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf)
+{
+	sprintf(pBuf, "\t%u", pAd->CommonCfg.RtsThreshold);
+	return 0;
+}
+
+INT	Show_FragThreshold_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf)
+{
+	sprintf(pBuf, "\t%u", pAd->CommonCfg.FragmentThreshold);
+	return 0;
+}
+
+#ifdef DOT11_N_SUPPORT
+INT	Show_HtBw_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf)
+{
+	if (pAd->CommonCfg.RegTransmitSetting.field.BW == BW_40)
+	{
+		sprintf(pBuf, "\t40 MHz");
+	}
+	else
+	{
+        sprintf(pBuf, "\t20 MHz");
+	}
+	return 0;
+}
+
+INT	Show_HtMcs_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf)
+{
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		sprintf(pBuf, "\t%u", pAd->StaCfg.DesiredTransmitSetting.field.MCS);
+#endif // CONFIG_STA_SUPPORT //
+	return 0;
+}
+
+INT	Show_HtGi_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf)
+{
+	switch(pAd->CommonCfg.RegTransmitSetting.field.ShortGI)
+	{
+		case GI_400:
+			sprintf(pBuf, "\tGI_400");
+			break;
+		case GI_800:
+			sprintf(pBuf, "\tGI_800");
+			break;
+		default:
+			sprintf(pBuf, "\tUnknow Value(%u)", pAd->CommonCfg.RegTransmitSetting.field.ShortGI);
+			break;
+	}
+	return 0;
+}
+
+INT	Show_HtOpMode_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf)
+{
+	switch(pAd->CommonCfg.RegTransmitSetting.field.HTMODE)
+	{
+		case HTMODE_GF:
+			sprintf(pBuf, "\tGF");
+			break;
+		case HTMODE_MM:
+			sprintf(pBuf, "\tMM");
+			break;
+		default:
+			sprintf(pBuf, "\tUnknow Value(%u)", pAd->CommonCfg.RegTransmitSetting.field.HTMODE);
+			break;
+	}
+	return 0;
+}
+
+INT	Show_HtExtcha_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf)
+{
+	switch(pAd->CommonCfg.RegTransmitSetting.field.EXTCHA)
+	{
+		case EXTCHA_BELOW:
+			sprintf(pBuf, "\tBelow");
+			break;
+		case EXTCHA_ABOVE:
+			sprintf(pBuf, "\tAbove");
+			break;
+		default:
+			sprintf(pBuf, "\tUnknow Value(%u)", pAd->CommonCfg.RegTransmitSetting.field.EXTCHA);
+			break;
+	}
+	return 0;
+}
+
+
+INT	Show_HtMpduDensity_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf)
+{
+	sprintf(pBuf, "\t%u", pAd->CommonCfg.BACapability.field.MpduDensity);
+	return 0;
+}
+
+INT	Show_HtBaWinSize_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf)
+{
+	sprintf(pBuf, "\t%u", pAd->CommonCfg.BACapability.field.RxBAWinLimit);
+	return 0;
+}
+
+INT	Show_HtRdg_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf)
+{
+	sprintf(pBuf, "\t%s", pAd->CommonCfg.bRdg ? "TRUE":"FALSE");
+	return 0;
+}
+
+INT	Show_HtAmsdu_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf)
+{
+	sprintf(pBuf, "\t%s", pAd->CommonCfg.BACapability.field.AmsduEnable ? "TRUE":"FALSE");
+	return 0;
+}
+
+INT	Show_HtAutoBa_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf)
+{
+	sprintf(pBuf, "\t%s", pAd->CommonCfg.BACapability.field.AutoBA ? "TRUE":"FALSE");
+	return 0;
+}
+#endif // DOT11_N_SUPPORT //
+
+INT	Show_CountryRegion_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf)
+{
+	sprintf(pBuf, "\t%d", pAd->CommonCfg.CountryRegion);
+	return 0;
+}
+
+INT	Show_CountryRegionABand_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf)
+{
+	sprintf(pBuf, "\t%d", pAd->CommonCfg.CountryRegionForABand);
+	return 0;
+}
+
+INT	Show_CountryCode_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf)
+{
+	sprintf(pBuf, "\t%s", pAd->CommonCfg.CountryCode);
+	return 0;
+}
+
+#ifdef AGGREGATION_SUPPORT
+INT	Show_PktAggregate_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf)
+{
+	sprintf(pBuf, "\t%s", pAd->CommonCfg.bAggregationCapable ? "TRUE":"FALSE");
+	return 0;
+}
+#endif // AGGREGATION_SUPPORT //
+
+#ifdef WMM_SUPPORT
+INT	Show_WmmCapable_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf)
+{
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		sprintf(pBuf, "\t%s", pAd->CommonCfg.bWmmCapable ? "TRUE":"FALSE");
+#endif // CONFIG_STA_SUPPORT //
+	
+	return 0;
+}
+#endif // WMM_SUPPORT //
+
+INT	Show_IEEE80211H_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf)
+{
+	sprintf(pBuf, "\t%s", pAd->CommonCfg.bIEEE80211H ? "TRUE":"FALSE");
+	return 0;
+}
+
+#ifdef CONFIG_STA_SUPPORT
+INT	Show_NetworkType_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf)
+{
+	switch(pAd->StaCfg.BssType)
+	{
+		case BSS_ADHOC:
+			sprintf(pBuf, "\tAdhoc");
+			break;
+		case BSS_INFRA:
+			sprintf(pBuf, "\tInfra");
+			break;
+		case BSS_ANY:
+			sprintf(pBuf, "\tAny");
+			break;
+		case BSS_MONITOR:
+			sprintf(pBuf, "\tMonitor");
+			break;
+		default:
+			sprintf(pBuf, "\tUnknow Value(%d)", pAd->StaCfg.BssType);
+			break;
+	}
+	return 0;
+}
+
+
+INT	Show_WPAPSK_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf)
+{
+	if ((pAd->StaCfg.WpaPassPhraseLen >= 8) &&
+		(pAd->StaCfg.WpaPassPhraseLen < 64))
+		sprintf(pBuf, "\tWPAPSK = %s", pAd->StaCfg.WpaPassPhrase);
+	else
+	{
+		INT idx;
+		sprintf(pBuf, "\tWPAPSK = ");
+		for (idx = 0; idx < 32; idx++)
+			sprintf(pBuf+strlen(pBuf), "%02X", pAd->StaCfg.WpaPassPhrase[idx]);	
+	}
+
+	return 0;
+}
+
+
+INT	Show_AutoReconnect_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf)
+{
+	sprintf(pBuf, "\tAutoReconnect = %d", pAd->StaCfg.bAutoReconnect);
+	return 0;
+}
+#endif // CONFIG_STA_SUPPORT //
+
+INT	Show_AuthMode_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf)
+{
+	NDIS_802_11_AUTHENTICATION_MODE	AuthMode = Ndis802_11AuthModeOpen; 
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		AuthMode = pAd->StaCfg.AuthMode;
+#endif // CONFIG_STA_SUPPORT //
+
+	if ((AuthMode >= Ndis802_11AuthModeOpen) && 
+		(AuthMode <= Ndis802_11AuthModeWPA1PSKWPA2PSK))
+		sprintf(pBuf, "\t%s", RTMPGetRalinkAuthModeStr(AuthMode));
+	else
+		sprintf(pBuf, "\tUnknow Value(%d)", AuthMode);
+	
+	return 0;
+}
+
+INT	Show_EncrypType_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf)
+{
+	NDIS_802_11_WEP_STATUS	WepStatus = Ndis802_11WEPDisabled;
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		WepStatus = pAd->StaCfg.WepStatus;
+#endif // CONFIG_STA_SUPPORT //
+
+	if ((WepStatus >= Ndis802_11WEPEnabled) && 
+		(WepStatus <= Ndis802_11Encryption4KeyAbsent))
+		sprintf(pBuf, "\t%s", RTMPGetRalinkEncryModeStr(WepStatus));
+	else
+		sprintf(pBuf, "\tUnknow Value(%d)", WepStatus);
+	
+	return 0;
+}
+
+INT	Show_DefaultKeyID_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf)
+{
+	UCHAR DefaultKeyId = 0;
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		DefaultKeyId = pAd->StaCfg.DefaultKeyId;
+#endif // CONFIG_STA_SUPPORT //
+
+	sprintf(pBuf, "\t%d", DefaultKeyId);
+
+	return 0;
+}
+
+INT	Show_WepKey_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN  INT				KeyIdx,
+	OUT	PSTRING			pBuf)
+{
+	UCHAR   Key[16] = {0}, KeyLength = 0;
+	INT		index = BSS0;
+
+	KeyLength = pAd->SharedKey[index][KeyIdx].KeyLen;
+	NdisMoveMemory(Key, pAd->SharedKey[index][KeyIdx].Key, KeyLength);		
+		
+	//check key string is ASCII or not
+    if (RTMPCheckStrPrintAble((PCHAR)Key, KeyLength))
+        sprintf(pBuf, "\t%s", Key);
+    else
+    {
+        int idx;
+        sprintf(pBuf, "\t");
+        for (idx = 0; idx < KeyLength; idx++)
+            sprintf(pBuf+strlen(pBuf), "%02X", Key[idx]);
+    }
+	return 0;
+}
+
+INT	Show_Key1_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf)
+{
+	Show_WepKey_Proc(pAd, 0, pBuf);
+	return 0;
+}
+
+INT	Show_Key2_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf)
+{
+	Show_WepKey_Proc(pAd, 1, pBuf);
+	return 0;
+}
+
+INT	Show_Key3_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf)
+{
+	Show_WepKey_Proc(pAd, 2, pBuf);
+	return 0;
+}
+
+INT	Show_Key4_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf)
+{
+	Show_WepKey_Proc(pAd, 3, pBuf);
+	return 0;
+}
+
+INT	Show_PMK_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT	PSTRING			pBuf)
+{
+	INT 	idx;
+	UCHAR	PMK[32] = {0};
+
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		NdisMoveMemory(PMK, pAd->StaCfg.PMK, 32);
+#endif // CONFIG_STA_SUPPORT //
+	
+    sprintf(pBuf, "\tPMK = ");
+    for (idx = 0; idx < 32; idx++)
+        sprintf(pBuf+strlen(pBuf), "%02X", PMK[idx]);
+
+	return 0;
+}
+
+#ifdef RT2883_TEMP_PATCH
+INT	Set_ETxBfEnCond_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PCHAR			arg)
+{
+	// insert code here
+	UCHAR i;
+	MAC_TABLE_ENTRY		*pEntry = NULL;	
+	for (i=0; i<MAX_LEN_OF_MAC_TABLE; i++){
+		pEntry =	&pAd->MacTab.Content[i];
+		pEntry->eTxBfEnCond = simple_strtol(arg, 0, 10);
+	}
+
+	return TRUE;	
+}
+INT	Set_NoSndgCntThrd_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PCHAR			arg)
+{
+	// insert code here
+	UCHAR i;
+	MAC_TABLE_ENTRY		*pEntry = NULL;	
+	for (i=0; i<MAX_LEN_OF_MAC_TABLE; i++){
+		pEntry =	&pAd->MacTab.Content[i];
+		pEntry->noSndgCntThrd = simple_strtol(arg, 0, 10);
+	}
+	return TRUE;	
+}
+
+INT	Set_NdpSndgStreams_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PCHAR			arg)
+{
+	// insert code here
+	UCHAR i;
+	MAC_TABLE_ENTRY		*pEntry = NULL;	
+	for (i=0; i<MAX_LEN_OF_MAC_TABLE; i++){
+		pEntry =	&pAd->MacTab.Content[i];
+		pEntry->ndpSndgStreams = simple_strtol(arg, 0, 10);
+	}
+	return TRUE;	
+}
+
+INT	Set_PerThrdAdj_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PCHAR			arg)
+{
+	// insert code here
+	UCHAR i;
+	MAC_TABLE_ENTRY		*pEntry = NULL;	
+	for (i=0; i<MAX_LEN_OF_MAC_TABLE; i++){
+		pEntry =	&pAd->MacTab.Content[i];
+		pEntry->perThrdAdj = simple_strtol(arg, 0, 10);
+	}
+	return TRUE;	
+}
+
+INT	Set_Trigger_Sounding_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PCHAR			arg)
+{
+	UCHAR					macAddr[MAC_ADDR_LEN];
+	CHAR					*value;
+	INT						i;
+	UCHAR HashIdx;
+	MAC_TABLE_ENTRY *pEntry = NULL;
+
+	if(strlen(arg) != 17)  //Mac address acceptable format 01:02:03:04:05:06 length 17
+		return FALSE;
+
+	for (i=0, value = rstrtok(arg,":"); value; value = rstrtok(NULL,":")) 
+	{
+		if((strlen(value) != 2) || (!isxdigit(*value)) || (!isxdigit(*(value+1))) ) 
+			return FALSE;  //Invalid
+
+		AtoH(value, &macAddr[i++], 1);
+	}
+
+	HashIdx = MAC_ADDR_HASH_INDEX(macAddr);
+	pEntry = pAd->MacTab.Hash[HashIdx];
+
+	if (pEntry)
+	{
+		//MlmeDeAuthAction(pAd, pEntry, REASON_DISASSOC_STA_LEAVING);
+		Trigger_Sounding_Packet(pAd, SNDG_TYPE_SOUNGING, 0, pEntry->sndgMcs, pEntry);
+	}
+
+	return TRUE;
+}
+#endif // RT2883_TEMP_PATCH //
+
+
+void  getRate(HTTRANSMIT_SETTING HTSetting, ULONG* fLastTxRxRate)
+
+{
+	 INT MCSMappingRateTable[] =
+	{2,  4,   11,  22, // CCK
+	12, 18,   24,  36, 48, 72, 96, 108, // OFDM
+	13, 26,   39,  52,  78, 104, 117, 130, 26,  52,  78, 104, 156, 208, 234, 260, // 20MHz, 800ns GI, MCS: 0 ~ 15
+	39, 78,  117, 156, 234, 312, 351, 390,										  // 20MHz, 800ns GI, MCS: 16 ~ 23
+	27, 54,   81, 108, 162, 216, 243, 270, 54, 108, 162, 216, 324, 432, 486, 540, // 40MHz, 800ns GI, MCS: 0 ~ 15
+	81, 162, 243, 324, 486, 648, 729, 810,										  // 40MHz, 800ns GI, MCS: 16 ~ 23
+	14, 29,   43,  57,  87, 115, 130, 144, 29, 59,   87, 115, 173, 230, 260, 288, // 20MHz, 400ns GI, MCS: 0 ~ 15
+	43, 87,  130, 173, 260, 317, 390, 433,										  // 20MHz, 400ns GI, MCS: 16 ~ 23
+	30, 60,   90, 120, 180, 240, 270, 300, 60, 120, 180, 240, 360, 480, 540, 600, // 40MHz, 400ns GI, MCS: 0 ~ 15
+	90, 180, 270, 360, 540, 720, 810, 900};
+
+	int rate_count = sizeof(MCSMappingRateTable)/sizeof(int);
+	int rate_index = 0;  
+	int value = 0;
+
+#ifdef DOT11_N_SUPPORT
+    if (HTSetting.field.MODE >= MODE_HTMIX)
+    {
+//    	rate_index = 12 + ((UCHAR)ht_setting.field.BW *16) + ((UCHAR)ht_setting.field.ShortGI *32) + ((UCHAR)ht_setting.field.MCS);
+    	rate_index = 12 + ((UCHAR)HTSetting.field.BW *24) + ((UCHAR)HTSetting.field.ShortGI *48) + ((UCHAR)HTSetting.field.MCS);
+    }
+    else 
+#endif // DOT11_N_SUPPORT //
+    if (HTSetting.field.MODE == MODE_OFDM)                
+    	rate_index = (UCHAR)(HTSetting.field.MCS) + 4;
+    else if (HTSetting.field.MODE == MODE_CCK)   
+    	rate_index = (UCHAR)(HTSetting.field.MCS);
+
+    if (rate_index < 0)
+        rate_index = 0;
+    
+    if (rate_index > rate_count)
+        rate_index = rate_count;
+
+    value = (MCSMappingRateTable[rate_index] * 5)/10;
+	*fLastTxRxRate=(ULONG)value;
+	return;
+}
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_mac_pci.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_mac_pci.c
new file mode 100644
index 000000000..235f517dc
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_mac_pci.c
@@ -0,0 +1,1680 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************/
+
+
+
+#ifdef RTMP_MAC_PCI
+#include	"rt_config.h"
+
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Allocate DMA memory blocks for send, receive
+
+	Arguments:
+		Adapter		Pointer to our adapter
+
+	Return Value:
+		NDIS_STATUS_SUCCESS
+		NDIS_STATUS_FAILURE
+		NDIS_STATUS_RESOURCES
+
+	IRQL = PASSIVE_LEVEL
+
+	Note:
+	
+	========================================================================
+*/
+NDIS_STATUS	RTMPAllocTxRxRingMemory(
+	IN	PRTMP_ADAPTER	pAd)
+{
+	NDIS_STATUS		Status = NDIS_STATUS_SUCCESS;
+	ULONG			RingBasePaHigh;
+	ULONG			RingBasePaLow;
+	PVOID			RingBaseVa;
+	INT				index, num;
+	PTXD_STRUC		pTxD;
+	PRXD_STRUC		pRxD;
+	ULONG			ErrorValue = 0;
+	PRTMP_TX_RING	pTxRing;
+	PRTMP_DMABUF	pDmaBuf;
+	PNDIS_PACKET	pPacket;
+//	PRTMP_REORDERBUF	pReorderBuf;
+
+	DBGPRINT(RT_DEBUG_TRACE, ("--> RTMPAllocTxRxRingMemory\n"));
+	do
+	{
+		// Init the CmdQ and CmdQLock
+		NdisAllocateSpinLock(&pAd->CmdQLock);	
+		NdisAcquireSpinLock(&pAd->CmdQLock);
+		RTInitializeCmdQ(&pAd->CmdQ);
+		NdisReleaseSpinLock(&pAd->CmdQLock);
+
+		//
+		// Allocate all ring descriptors, include TxD, RxD, MgmtD.
+		// Although each size is different, to prevent cacheline and alignment
+		// issue, I intentional set them all to 64 bytes.
+		//
+		for (num=0; num<NUM_OF_TX_RING; num++)
+		{
+			ULONG  BufBasePaHigh;
+			ULONG  BufBasePaLow;
+			PVOID  BufBaseVa;
+			
+			// 
+			// Allocate Tx ring descriptor's memory (5 TX rings = 4 ACs + 1 HCCA)
+			//
+			pAd->TxDescRing[num].AllocSize = TX_RING_SIZE * TXD_SIZE;
+			RTMP_AllocateTxDescMemory(
+				pAd,
+				num,
+				pAd->TxDescRing[num].AllocSize,
+				FALSE,
+				&pAd->TxDescRing[num].AllocVa,
+				&pAd->TxDescRing[num].AllocPa);
+
+			if (pAd->TxDescRing[num].AllocVa == NULL)
+			{
+				ErrorValue = ERRLOG_OUT_OF_SHARED_MEMORY;
+				DBGPRINT_ERR(("Failed to allocate a big buffer\n"));
+				Status = NDIS_STATUS_RESOURCES;
+				break;
+			}
+
+			// Zero init this memory block
+			NdisZeroMemory(pAd->TxDescRing[num].AllocVa, pAd->TxDescRing[num].AllocSize);
+
+			// Save PA & VA for further operation
+			RingBasePaHigh = RTMP_GetPhysicalAddressHigh(pAd->TxDescRing[num].AllocPa);
+			RingBasePaLow  = RTMP_GetPhysicalAddressLow (pAd->TxDescRing[num].AllocPa);
+			RingBaseVa     = pAd->TxDescRing[num].AllocVa;
+
+			// 
+			// Allocate all 1st TXBuf's memory for this TxRing
+			//
+			pAd->TxBufSpace[num].AllocSize = TX_RING_SIZE * TX_DMA_1ST_BUFFER_SIZE;
+			RTMP_AllocateFirstTxBuffer(
+				pAd,
+				num,
+				pAd->TxBufSpace[num].AllocSize,
+				FALSE,
+				&pAd->TxBufSpace[num].AllocVa,
+				&pAd->TxBufSpace[num].AllocPa);
+
+			if (pAd->TxBufSpace[num].AllocVa == NULL)
+			{
+				ErrorValue = ERRLOG_OUT_OF_SHARED_MEMORY;
+				DBGPRINT_ERR(("Failed to allocate a big buffer\n"));
+				Status = NDIS_STATUS_RESOURCES;
+				break;
+			}
+
+			// Zero init this memory block
+			NdisZeroMemory(pAd->TxBufSpace[num].AllocVa, pAd->TxBufSpace[num].AllocSize);
+
+			// Save PA & VA for further operation
+			BufBasePaHigh = RTMP_GetPhysicalAddressHigh(pAd->TxBufSpace[num].AllocPa);
+			BufBasePaLow  = RTMP_GetPhysicalAddressLow (pAd->TxBufSpace[num].AllocPa);
+			BufBaseVa     = pAd->TxBufSpace[num].AllocVa;
+
+			//
+			// Initialize Tx Ring Descriptor and associated buffer memory
+			//
+			pTxRing = &pAd->TxRing[num];
+			for (index = 0; index < TX_RING_SIZE; index++)
+			{
+				pTxRing->Cell[index].pNdisPacket = NULL;
+				pTxRing->Cell[index].pNextNdisPacket = NULL;
+				// Init Tx Ring Size, Va, Pa variables
+				pTxRing->Cell[index].AllocSize = TXD_SIZE;
+				pTxRing->Cell[index].AllocVa = RingBaseVa;
+				RTMP_SetPhysicalAddressHigh(pTxRing->Cell[index].AllocPa, RingBasePaHigh);
+				RTMP_SetPhysicalAddressLow (pTxRing->Cell[index].AllocPa, RingBasePaLow);
+
+				// Setup Tx Buffer size & address. only 802.11 header will store in this space
+				pDmaBuf = &pTxRing->Cell[index].DmaBuf;
+				pDmaBuf->AllocSize = TX_DMA_1ST_BUFFER_SIZE;
+				pDmaBuf->AllocVa = BufBaseVa;
+				RTMP_SetPhysicalAddressHigh(pDmaBuf->AllocPa, BufBasePaHigh);
+				RTMP_SetPhysicalAddressLow(pDmaBuf->AllocPa, BufBasePaLow);
+
+				// link the pre-allocated TxBuf to TXD
+				pTxD = (PTXD_STRUC) pTxRing->Cell[index].AllocVa;
+				pTxD->SDPtr0 = BufBasePaLow;
+				// advance to next ring descriptor address
+				pTxD->DMADONE = 1;
+#ifdef RT_BIG_ENDIAN
+				RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD);
+#endif
+				RingBasePaLow += TXD_SIZE;
+				RingBaseVa = (PUCHAR) RingBaseVa + TXD_SIZE;
+
+				// advance to next TxBuf address
+				BufBasePaLow += TX_DMA_1ST_BUFFER_SIZE;
+				BufBaseVa = (PUCHAR) BufBaseVa + TX_DMA_1ST_BUFFER_SIZE;
+			}
+			DBGPRINT(RT_DEBUG_TRACE, ("TxRing[%d]: total %d entry allocated\n", num, index));
+		}
+		if (Status == NDIS_STATUS_RESOURCES)
+			break;
+
+		//
+		// Allocate MGMT ring descriptor's memory except Tx ring which allocated eariler
+		//
+		pAd->MgmtDescRing.AllocSize = MGMT_RING_SIZE * TXD_SIZE;
+		RTMP_AllocateMgmtDescMemory(
+			pAd,
+			pAd->MgmtDescRing.AllocSize,
+			FALSE,
+			&pAd->MgmtDescRing.AllocVa,
+			&pAd->MgmtDescRing.AllocPa);
+
+		if (pAd->MgmtDescRing.AllocVa == NULL)
+		{
+			ErrorValue = ERRLOG_OUT_OF_SHARED_MEMORY;
+			DBGPRINT_ERR(("Failed to allocate a big buffer\n"));
+			Status = NDIS_STATUS_RESOURCES;
+			break;
+		}
+
+		// Zero init this memory block
+		NdisZeroMemory(pAd->MgmtDescRing.AllocVa, pAd->MgmtDescRing.AllocSize);
+
+		// Save PA & VA for further operation
+		RingBasePaHigh = RTMP_GetPhysicalAddressHigh(pAd->MgmtDescRing.AllocPa);
+		RingBasePaLow  = RTMP_GetPhysicalAddressLow (pAd->MgmtDescRing.AllocPa);
+		RingBaseVa     = pAd->MgmtDescRing.AllocVa;
+
+		//
+		// Initialize MGMT Ring and associated buffer memory
+		//
+		for (index = 0; index < MGMT_RING_SIZE; index++)
+		{
+			pAd->MgmtRing.Cell[index].pNdisPacket = NULL;
+			pAd->MgmtRing.Cell[index].pNextNdisPacket = NULL;
+			// Init MGMT Ring Size, Va, Pa variables
+			pAd->MgmtRing.Cell[index].AllocSize = TXD_SIZE;
+			pAd->MgmtRing.Cell[index].AllocVa = RingBaseVa;
+			RTMP_SetPhysicalAddressHigh(pAd->MgmtRing.Cell[index].AllocPa, RingBasePaHigh);
+			RTMP_SetPhysicalAddressLow (pAd->MgmtRing.Cell[index].AllocPa, RingBasePaLow);
+
+			// Offset to next ring descriptor address
+			RingBasePaLow += TXD_SIZE;
+			RingBaseVa = (PUCHAR) RingBaseVa + TXD_SIZE;
+
+			// link the pre-allocated TxBuf to TXD
+			pTxD = (PTXD_STRUC) pAd->MgmtRing.Cell[index].AllocVa;
+			pTxD->DMADONE = 1;
+
+#ifdef RT_BIG_ENDIAN
+			RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD);
+#endif
+			// no pre-allocated buffer required in MgmtRing for scatter-gather case
+		}
+		DBGPRINT(RT_DEBUG_TRACE, ("MGMT Ring: total %d entry allocated\n", index));
+
+		//
+		// Allocate RX ring descriptor's memory except Tx ring which allocated eariler
+		//
+		pAd->RxDescRing.AllocSize = RX_RING_SIZE * RXD_SIZE;
+		RTMP_AllocateRxDescMemory(
+			pAd,
+			pAd->RxDescRing.AllocSize,
+			FALSE,
+			&pAd->RxDescRing.AllocVa,
+			&pAd->RxDescRing.AllocPa);
+
+		if (pAd->RxDescRing.AllocVa == NULL)
+		{
+			ErrorValue = ERRLOG_OUT_OF_SHARED_MEMORY;
+			DBGPRINT_ERR(("Failed to allocate a big buffer\n"));
+			Status = NDIS_STATUS_RESOURCES;
+			break;
+		}
+
+		// Zero init this memory block
+		NdisZeroMemory(pAd->RxDescRing.AllocVa, pAd->RxDescRing.AllocSize);
+
+
+		DBGPRINT(RT_DEBUG_OFF, 
+					("RX DESC %p  size = %ld\n", pAd->RxDescRing.AllocVa, pAd->RxDescRing.AllocSize));
+
+		// Save PA & VA for further operation
+		RingBasePaHigh = RTMP_GetPhysicalAddressHigh(pAd->RxDescRing.AllocPa);
+		RingBasePaLow  = RTMP_GetPhysicalAddressLow (pAd->RxDescRing.AllocPa);
+		RingBaseVa     = pAd->RxDescRing.AllocVa;
+
+		//
+		// Initialize Rx Ring and associated buffer memory
+		//
+		for (index = 0; index < RX_RING_SIZE; index++)
+		{
+			// Init RX Ring Size, Va, Pa variables
+			pAd->RxRing.Cell[index].AllocSize = RXD_SIZE;
+			pAd->RxRing.Cell[index].AllocVa = RingBaseVa;
+			RTMP_SetPhysicalAddressHigh(pAd->RxRing.Cell[index].AllocPa, RingBasePaHigh);
+			RTMP_SetPhysicalAddressLow (pAd->RxRing.Cell[index].AllocPa, RingBasePaLow);
+
+			//NdisZeroMemory(RingBaseVa, RXD_SIZE);
+
+			// Offset to next ring descriptor address
+			RingBasePaLow += RXD_SIZE;
+			RingBaseVa = (PUCHAR) RingBaseVa + RXD_SIZE;
+
+			// Setup Rx associated Buffer size & allocate share memory
+			pDmaBuf = &pAd->RxRing.Cell[index].DmaBuf;
+			pDmaBuf->AllocSize = RX_BUFFER_AGGRESIZE;
+			pPacket = RTMP_AllocateRxPacketBuffer(
+				pAd,
+				pDmaBuf->AllocSize,
+				FALSE,
+				&pDmaBuf->AllocVa,
+				&pDmaBuf->AllocPa);
+			
+			/* keep allocated rx packet */
+			pAd->RxRing.Cell[index].pNdisPacket = pPacket;
+
+			// Error handling
+			if (pDmaBuf->AllocVa == NULL)
+			{
+				ErrorValue = ERRLOG_OUT_OF_SHARED_MEMORY;
+				DBGPRINT_ERR(("Failed to allocate RxRing's 1st buffer\n"));
+				Status = NDIS_STATUS_RESOURCES;
+				break;
+			}
+
+			// Zero init this memory block
+			NdisZeroMemory(pDmaBuf->AllocVa, pDmaBuf->AllocSize);
+
+			// Write RxD buffer address & allocated buffer length
+			pRxD = (PRXD_STRUC) pAd->RxRing.Cell[index].AllocVa;
+			pRxD->SDP0 = RTMP_GetPhysicalAddressLow(pDmaBuf->AllocPa);
+			pRxD->DDONE = 0;
+
+#ifdef RT_BIG_ENDIAN
+			RTMPDescriptorEndianChange((PUCHAR)pRxD, TYPE_RXD);
+#endif
+		}
+
+		DBGPRINT(RT_DEBUG_TRACE, ("Rx Ring: total %d entry allocated\n", index));
+
+	}	while (FALSE);
+
+
+	NdisZeroMemory(&pAd->FragFrame, sizeof(FRAGMENT_FRAME));
+	pAd->FragFrame.pFragPacket =  RTMP_AllocateFragPacketBuffer(pAd, RX_BUFFER_NORMSIZE);
+
+	if (pAd->FragFrame.pFragPacket == NULL)
+	{
+		Status = NDIS_STATUS_RESOURCES;
+	}
+
+	if (Status != NDIS_STATUS_SUCCESS)
+	{
+		// Log error inforamtion
+		NdisWriteErrorLogEntry(
+			pAd->AdapterHandle,
+			NDIS_ERROR_CODE_OUT_OF_RESOURCES,
+			1,
+			ErrorValue);
+	}
+
+	// Following code segment get from original func:NICInitTxRxRingAndBacklogQueue(), now should integrate it to here.
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("--> NICInitTxRxRingAndBacklogQueue\n"));
+
+/*	
+		// Disable DMA.
+		RTMP_IO_READ32(pAd, WPDMA_GLO_CFG, &GloCfg.word);
+		GloCfg.word &= 0xff0;
+		GloCfg.field.EnTXWriteBackDDONE =1;
+		RTMP_IO_WRITE32(pAd, WPDMA_GLO_CFG, GloCfg.word);
+*/
+
+		// Initialize all transmit related software queues
+		for(index = 0; index < NUM_OF_TX_RING; index++)
+		{
+			InitializeQueueHeader(&pAd->TxSwQueue[index]);
+			// Init TX rings index pointer
+			pAd->TxRing[index].TxSwFreeIdx = 0;
+			pAd->TxRing[index].TxCpuIdx = 0;
+			//RTMP_IO_WRITE32(pAd, (TX_CTX_IDX0 + i * 0x10) ,  pAd->TxRing[i].TX_CTX_IDX);
+		}
+	
+		// Init RX Ring index pointer
+		pAd->RxRing.RxSwReadIdx = 0;
+		pAd->RxRing.RxCpuIdx = RX_RING_SIZE - 1;
+		//RTMP_IO_WRITE32(pAd, RX_CRX_IDX, pAd->RxRing.RX_CRX_IDX0);
+
+		
+		// init MGMT ring index pointer
+		pAd->MgmtRing.TxSwFreeIdx = 0;
+		pAd->MgmtRing.TxCpuIdx = 0;
+
+		pAd->PrivateInfo.TxRingFullCnt = 0;
+		
+		DBGPRINT(RT_DEBUG_TRACE, ("<-- NICInitTxRxRingAndBacklogQueue\n"));
+	}
+
+	DBGPRINT_S(Status, ("<-- RTMPAllocTxRxRingMemory, Status=%x\n", Status));
+	return Status;
+}
+
+
+
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Reset NIC Asics. Call after rest DMA. So reset TX_CTX_IDX to zero.
+
+	Arguments:
+		Adapter						Pointer to our adapter
+
+	Return Value:
+		None
+
+	IRQL = PASSIVE_LEVEL
+	IRQL = DISPATCH_LEVEL
+	
+	Note:
+		Reset NIC to initial state AS IS system boot up time.
+		
+	========================================================================
+*/
+VOID	RTMPRingCleanUp(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	UCHAR			RingType)
+{
+	PTXD_STRUC		pTxD;
+	PRXD_STRUC		pRxD;
+	PQUEUE_ENTRY	pEntry;
+	PNDIS_PACKET	pPacket;
+	int				i;
+	PRTMP_TX_RING	pTxRing;
+	unsigned long	IrqFlags;
+	//UINT32			RxSwReadIdx;
+
+
+	DBGPRINT(RT_DEBUG_TRACE,("RTMPRingCleanUp(RingIdx=%d, Pending-NDIS=%ld)\n", RingType, pAd->RalinkCounters.PendingNdisPacketCount));
+	switch (RingType)
+	{
+		case QID_AC_BK:
+		case QID_AC_BE:
+		case QID_AC_VI:
+		case QID_AC_VO:
+		case QID_HCCA:
+			
+			pTxRing = &pAd->TxRing[RingType];
+			
+			RTMP_IRQ_LOCK(&pAd->irq_lock, IrqFlags);
+			// We have to clean all descriptors in case some error happened with reset
+			for (i=0; i<TX_RING_SIZE; i++) // We have to scan all TX ring
+			{
+				pTxD  = (PTXD_STRUC) pTxRing->Cell[i].AllocVa;
+
+				pPacket = (PNDIS_PACKET) pTxRing->Cell[i].pNdisPacket;
+				// release scatter-and-gather NDIS_PACKET
+				if (pPacket)
+				{
+					RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_FAILURE);
+					pTxRing->Cell[i].pNdisPacket = NULL;
+				}
+
+				pPacket = (PNDIS_PACKET) pTxRing->Cell[i].pNextNdisPacket;
+				// release scatter-and-gather NDIS_PACKET
+				if (pPacket)
+				{
+					RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_FAILURE);
+					pTxRing->Cell[i].pNextNdisPacket = NULL;
+				}
+			}
+
+			RTMP_IO_READ32(pAd, TX_DTX_IDX0 + RingType * 0x10, &pTxRing->TxDmaIdx);
+			pTxRing->TxSwFreeIdx = pTxRing->TxDmaIdx;
+			pTxRing->TxCpuIdx = pTxRing->TxDmaIdx;
+			RTMP_IO_WRITE32(pAd, TX_CTX_IDX0 + RingType * 0x10, pTxRing->TxCpuIdx);
+			
+			RTMP_IRQ_UNLOCK(&pAd->irq_lock, IrqFlags);
+			
+			RTMP_IRQ_LOCK(&pAd->irq_lock, IrqFlags);
+			while (pAd->TxSwQueue[RingType].Head != NULL)
+			{
+				pEntry = RemoveHeadQueue(&pAd->TxSwQueue[RingType]);
+				pPacket = QUEUE_ENTRY_TO_PACKET(pEntry);
+				RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_FAILURE);
+				DBGPRINT(RT_DEBUG_TRACE,("Release 1 NDIS packet from s/w backlog queue\n"));
+			}
+			RTMP_IRQ_UNLOCK(&pAd->irq_lock, IrqFlags);
+			break;
+
+		case QID_MGMT:
+			// We have to clean all descriptors in case some error happened with reset
+			NdisAcquireSpinLock(&pAd->MgmtRingLock);
+			
+			for (i=0; i<MGMT_RING_SIZE; i++)
+			{
+				pTxD  = (PTXD_STRUC) pAd->MgmtRing.Cell[i].AllocVa;
+
+				pPacket = (PNDIS_PACKET) pAd->MgmtRing.Cell[i].pNdisPacket;
+				// rlease scatter-and-gather NDIS_PACKET
+				if (pPacket)
+				{
+					PCI_UNMAP_SINGLE(pAd, pTxD->SDPtr0, pTxD->SDLen0, PCI_DMA_TODEVICE);
+					RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_FAILURE);
+				}
+				pAd->MgmtRing.Cell[i].pNdisPacket = NULL;
+
+				pPacket = (PNDIS_PACKET) pAd->MgmtRing.Cell[i].pNextNdisPacket;
+				// release scatter-and-gather NDIS_PACKET
+				if (pPacket)
+				{
+					PCI_UNMAP_SINGLE(pAd, pTxD->SDPtr1, pTxD->SDLen1, PCI_DMA_TODEVICE);			
+					RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_FAILURE);
+			}
+				pAd->MgmtRing.Cell[i].pNextNdisPacket = NULL;
+
+			}
+
+			RTMP_IO_READ32(pAd, TX_MGMTDTX_IDX, &pAd->MgmtRing.TxDmaIdx);
+			pAd->MgmtRing.TxSwFreeIdx = pAd->MgmtRing.TxDmaIdx;
+			pAd->MgmtRing.TxCpuIdx = pAd->MgmtRing.TxDmaIdx;
+			RTMP_IO_WRITE32(pAd, TX_MGMTCTX_IDX, pAd->MgmtRing.TxCpuIdx);
+			
+			NdisReleaseSpinLock(&pAd->MgmtRingLock);
+			pAd->RalinkCounters.MgmtRingFullCount = 0;
+			break;
+			
+		case QID_RX:
+			// We have to clean all descriptors in case some error happened with reset
+			NdisAcquireSpinLock(&pAd->RxRingLock);
+
+			for (i=0; i<RX_RING_SIZE; i++)
+			{
+				pRxD  = (PRXD_STRUC) pAd->RxRing.Cell[i].AllocVa;
+                pRxD->DDONE = 0 ;
+			}
+			 
+			RTMP_IO_READ32(pAd, RX_DRX_IDX, &pAd->RxRing.RxDmaIdx);
+			pAd->RxRing.RxSwReadIdx = pAd->RxRing.RxDmaIdx;
+			pAd->RxRing.RxCpuIdx = ((pAd->RxRing.RxDmaIdx == 0) ? (RX_RING_SIZE-1) : (pAd->RxRing.RxDmaIdx-1));
+			RTMP_IO_WRITE32(pAd, RX_CRX_IDX, pAd->RxRing.RxCpuIdx);
+			 
+			NdisReleaseSpinLock(&pAd->RxRingLock);
+			break;
+			
+		default:
+			break;
+	}
+}
+
+
+VOID RTMPFreeTxRxRingMemory(
+    IN  PRTMP_ADAPTER   pAd)
+{
+	int index, num , j;
+	PRTMP_TX_RING pTxRing;
+	PTXD_STRUC	  pTxD;
+	PNDIS_PACKET  pPacket;
+	unsigned int  IrqFlags;
+
+	//POS_COOKIE pObj =(POS_COOKIE) pAd->OS_Cookie;
+	
+	DBGPRINT(RT_DEBUG_TRACE, ("--> RTMPFreeTxRxRingMemory\n"));
+
+	// Free TxSwQueue Packet
+	for (index=0; index <NUM_OF_TX_RING; index++)
+	{
+		PQUEUE_ENTRY pEntry;
+		PNDIS_PACKET pPacket;
+		PQUEUE_HEADER   pQueue;
+
+		RTMP_IRQ_LOCK(&pAd->irq_lock, IrqFlags);
+		pQueue = &pAd->TxSwQueue[index];
+		while (pQueue->Head)
+		{
+			pEntry = RemoveHeadQueue(pQueue);
+			pPacket = QUEUE_ENTRY_TO_PACKET(pEntry);
+			RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_FAILURE);
+		}
+		RTMP_IRQ_UNLOCK(&pAd->irq_lock, IrqFlags);
+	}
+
+	// Free Tx Ring Packet
+	for (index=0;index< NUM_OF_TX_RING;index++)
+	{
+		pTxRing = &pAd->TxRing[index];
+		
+		for (j=0; j< TX_RING_SIZE; j++)
+		{	
+			pTxD = (PTXD_STRUC) (pTxRing->Cell[j].AllocVa);
+			pPacket = pTxRing->Cell[j].pNdisPacket;
+
+			if (pPacket)
+			{
+				PCI_UNMAP_SINGLE(pAd, pTxD->SDPtr0, pTxD->SDLen0, PCI_DMA_TODEVICE);
+				RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_SUCCESS);
+			}		
+			//Always assign pNdisPacket as NULL after clear
+			pTxRing->Cell[j].pNdisPacket = NULL;
+					
+			pPacket = pTxRing->Cell[j].pNextNdisPacket;
+			
+			if (pPacket)
+			{
+				PCI_UNMAP_SINGLE(pAd, pTxD->SDPtr1, pTxD->SDLen1, PCI_DMA_TODEVICE);
+				RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_SUCCESS);
+			}
+			//Always assign pNextNdisPacket as NULL after clear
+			pTxRing->Cell[pTxRing->TxSwFreeIdx].pNextNdisPacket = NULL;
+
+		}
+	}	
+	
+	for (index = RX_RING_SIZE - 1 ; index >= 0; index--)
+	{
+		if ((pAd->RxRing.Cell[index].DmaBuf.AllocVa) && (pAd->RxRing.Cell[index].pNdisPacket))
+		{
+			PCI_UNMAP_SINGLE(pAd, pAd->RxRing.Cell[index].DmaBuf.AllocPa, pAd->RxRing.Cell[index].DmaBuf.AllocSize, PCI_DMA_FROMDEVICE);
+			RELEASE_NDIS_PACKET(pAd, pAd->RxRing.Cell[index].pNdisPacket, NDIS_STATUS_SUCCESS);
+		}
+	}
+	NdisZeroMemory(pAd->RxRing.Cell, RX_RING_SIZE * sizeof(RTMP_DMACB));
+	
+	if (pAd->RxDescRing.AllocVa)
+    {
+		RTMP_FreeDescMemory(pAd, pAd->RxDescRing.AllocSize, pAd->RxDescRing.AllocVa, pAd->RxDescRing.AllocPa);
+    }
+    NdisZeroMemory(&pAd->RxDescRing, sizeof(RTMP_DMABUF));
+
+	if (pAd->MgmtDescRing.AllocVa)
+	{
+		RTMP_FreeDescMemory(pAd, pAd->MgmtDescRing.AllocSize, pAd->MgmtDescRing.AllocVa, pAd->MgmtDescRing.AllocPa);
+	}
+	NdisZeroMemory(&pAd->MgmtDescRing, sizeof(RTMP_DMABUF));
+
+	for (num = 0; num < NUM_OF_TX_RING; num++)
+	{
+    	if (pAd->TxBufSpace[num].AllocVa)
+		{
+			RTMP_FreeFirstTxBuffer(pAd, pAd->TxBufSpace[num].AllocSize, FALSE, pAd->TxBufSpace[num].AllocVa, pAd->TxBufSpace[num].AllocPa);
+	    }
+	    NdisZeroMemory(&pAd->TxBufSpace[num], sizeof(RTMP_DMABUF));
+	    
+    	if (pAd->TxDescRing[num].AllocVa)
+		{
+			RTMP_FreeDescMemory(pAd, pAd->TxDescRing[num].AllocSize, pAd->TxDescRing[num].AllocVa, pAd->TxDescRing[num].AllocPa);
+	    }
+	    NdisZeroMemory(&pAd->TxDescRing[num], sizeof(RTMP_DMABUF));
+	}
+
+	if (pAd->FragFrame.pFragPacket)
+		RELEASE_NDIS_PACKET(pAd, pAd->FragFrame.pFragPacket, NDIS_STATUS_SUCCESS);
+
+	DBGPRINT(RT_DEBUG_TRACE, ("<-- RTMPFreeTxRxRingMemory\n"));
+}
+
+
+/***************************************************************************
+  *
+  *	register related procedures.
+  *
+  **************************************************************************/
+/*
+========================================================================
+Routine Description:
+    Disable DMA.
+
+Arguments:
+	*pAd				the raxx interface data pointer
+
+Return Value:
+	None
+
+Note:
+========================================================================
+*/
+VOID RT28XXDMADisable(
+	IN RTMP_ADAPTER 		*pAd)
+{
+	WPDMA_GLO_CFG_STRUC     GloCfg;
+
+
+	RTMP_IO_READ32(pAd, WPDMA_GLO_CFG, &GloCfg.word);
+	GloCfg.word &= 0xff0;
+	GloCfg.field.EnTXWriteBackDDONE =1;
+	RTMP_IO_WRITE32(pAd, WPDMA_GLO_CFG, GloCfg.word);
+}
+
+
+/*
+========================================================================
+Routine Description:
+    Enable DMA.
+
+Arguments:
+	*pAd				the raxx interface data pointer
+
+Return Value:
+	None
+
+Note:
+========================================================================
+*/
+VOID RT28XXDMAEnable(
+	IN RTMP_ADAPTER 		*pAd)
+{
+	WPDMA_GLO_CFG_STRUC	GloCfg;
+	int i = 0;
+	
+	RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, 0x4);
+	do
+	{
+		RTMP_IO_READ32(pAd, WPDMA_GLO_CFG, &GloCfg.word);
+		if ((GloCfg.field.TxDMABusy == 0)  && (GloCfg.field.RxDMABusy == 0))
+			break;
+		
+		DBGPRINT(RT_DEBUG_TRACE, ("==>  DMABusy\n"));
+		RTMPusecDelay(1000);
+		i++;
+	}while ( i <200);
+
+	RTMPusecDelay(50);
+
+	GloCfg.field.EnTXWriteBackDDONE = 1;
+	GloCfg.field.WPDMABurstSIZE = 2;
+	GloCfg.field.EnableRxDMA = 1;
+	GloCfg.field.EnableTxDMA = 1;
+	
+	DBGPRINT(RT_DEBUG_TRACE, ("<== WRITE DMA offset 0x208 = 0x%x\n", GloCfg.word));	
+	RTMP_IO_WRITE32(pAd, WPDMA_GLO_CFG, GloCfg.word);
+
+}
+
+
+BOOLEAN AsicCheckCommanOk(
+	IN PRTMP_ADAPTER pAd,
+	IN UCHAR		 Command)
+{
+	UINT32	CmdStatus = 0, CID = 0, i;
+	UINT32	ThisCIDMask = 0;
+	
+	i = 0;
+	do
+	{
+		RTMP_IO_READ32(pAd, H2M_MAILBOX_CID, &CID);
+		// Find where the command is. Because this is randomly specified by firmware.
+		if ((CID & CID0MASK) == Command)
+		{
+			ThisCIDMask = CID0MASK;
+			break;
+		}
+		else if ((((CID & CID1MASK)>>8) & 0xff) == Command)
+		{
+			ThisCIDMask = CID1MASK;
+			break;
+		}
+		else if ((((CID & CID2MASK)>>16) & 0xff) == Command)
+		{
+			ThisCIDMask = CID2MASK;
+			break;
+		}
+		else if ((((CID & CID3MASK)>>24) & 0xff) == Command)
+		{
+			ThisCIDMask = CID3MASK;
+			break;
+		}
+
+		RTMPusecDelay(100);
+		i++;
+	}while (i < 200);
+
+	// Get CommandStatus Value
+	RTMP_IO_READ32(pAd, H2M_MAILBOX_STATUS, &CmdStatus);
+	
+	// This command's status is at the same position as command. So AND command position's bitmask to read status.	
+	if (i < 200)
+	{
+		// If Status is 1, the comamnd is success.
+		if (((CmdStatus & ThisCIDMask) == 0x1) || ((CmdStatus & ThisCIDMask) == 0x100) 
+			|| ((CmdStatus & ThisCIDMask) == 0x10000) || ((CmdStatus & ThisCIDMask) == 0x1000000))
+		{
+			DBGPRINT(RT_DEBUG_TRACE, ("--> AsicCheckCommanOk CID = 0x%x, CmdStatus= 0x%x \n", CID, CmdStatus));
+			RTMP_IO_WRITE32(pAd, H2M_MAILBOX_STATUS, 0xffffffff);
+			RTMP_IO_WRITE32(pAd, H2M_MAILBOX_CID, 0xffffffff);
+			return TRUE;
+		}
+		DBGPRINT(RT_DEBUG_TRACE, ("--> AsicCheckCommanFail1 CID = 0x%x, CmdStatus= 0x%x \n", CID, CmdStatus));
+	}
+	else
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("--> AsicCheckCommanFail2 Timeout Command = %d, CmdStatus= 0x%x \n", Command, CmdStatus));
+	}
+	// Clear Command and Status.
+	RTMP_IO_WRITE32(pAd, H2M_MAILBOX_STATUS, 0xffffffff);
+	RTMP_IO_WRITE32(pAd, H2M_MAILBOX_CID, 0xffffffff);
+    
+	return FALSE;
+}
+
+
+/*
+========================================================================
+Routine Description:
+    Write Beacon buffer to Asic.
+
+Arguments:
+	*pAd				the raxx interface data pointer
+
+Return Value:
+	None
+
+Note:
+========================================================================
+*/
+VOID RT28xx_UpdateBeaconToAsic(
+	IN RTMP_ADAPTER		*pAd,
+	IN INT				apidx,
+	IN ULONG			FrameLen, 
+	IN ULONG			UpdatePos)
+{
+	ULONG				CapInfoPos = 0;
+	UCHAR  			*ptr, *ptr_update, *ptr_capinfo;
+	UINT  			i;
+	BOOLEAN			bBcnReq = FALSE;
+	UCHAR			bcn_idx = 0;
+
+
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("%s() : No valid Interface be found.\n", __FUNCTION__));
+		return;
+	}
+
+	//if ((pAd->WdsTab.Mode == WDS_BRIDGE_MODE)
+	//	|| ((pAd->ApCfg.MBSSID[apidx].MSSIDDev == NULL) 
+	//		|| !((RTMP_OS_NETDEV_STATE_RUNNING(pAd->ApCfg.MBSSID[apidx].MSSIDDev)))
+	//	)
+	if (bBcnReq == FALSE)
+	{
+		/* when the ra interface is down, do not send its beacon frame */
+		/* clear all zero */
+		for(i=0; i<TXWI_SIZE; i+=4)
+			RTMP_IO_WRITE32(pAd, pAd->BeaconOffset[bcn_idx] + i, 0x00);
+	}
+	else
+	{
+		ptr = (PUCHAR)&pAd->BeaconTxWI;
+#ifdef RT_BIG_ENDIAN
+		RTMPWIEndianChange(ptr, TYPE_TXWI);
+#endif
+		for (i=0; i<TXWI_SIZE; i+=4)  // 16-byte TXWI field
+		{
+			UINT32 longptr =  *ptr + (*(ptr+1)<<8) + (*(ptr+2)<<16) + (*(ptr+3)<<24);
+			RTMP_IO_WRITE32(pAd, pAd->BeaconOffset[bcn_idx] + i, longptr);
+			ptr += 4;
+		}
+
+		// Update CapabilityInfo in Beacon
+		for (i = CapInfoPos; i < (CapInfoPos+2); i++)
+		{
+			RTMP_IO_WRITE8(pAd, pAd->BeaconOffset[bcn_idx] + TXWI_SIZE + i, *ptr_capinfo); 
+			ptr_capinfo ++;
+		}
+
+		if (FrameLen > UpdatePos)
+		{
+			for (i= UpdatePos; i< (FrameLen); i++)
+			{
+				RTMP_IO_WRITE8(pAd, pAd->BeaconOffset[bcn_idx] + TXWI_SIZE + i, *ptr_update); 
+				ptr_update ++;
+			}
+		}
+		
+	}
+	
+}
+
+
+#ifdef CONFIG_STA_SUPPORT
+VOID RT28xxPciStaAsicForceWakeup(
+	IN PRTMP_ADAPTER pAd,
+	IN BOOLEAN       bFromTx)
+{
+    AUTO_WAKEUP_STRUC	AutoWakeupCfg;
+
+    if (!OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_DOZE))
+        return;
+
+    if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_WAKEUP_NOW))
+    {
+        DBGPRINT(RT_DEBUG_TRACE, ("waking up now!\n"));
+        return;
+    }
+
+    OPSTATUS_SET_FLAG(pAd, fOP_STATUS_WAKEUP_NOW);
+
+   // RTMP_CLEAR_PSFLAG(pAd, fRTMP_PS_GO_TO_SLEEP_NOW);
+#ifdef PCIE_PS_SUPPORT
+    if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_ADVANCE_POWER_SAVE_PCIE_DEVICE)
+		&&pAd->StaCfg.PSControl.field.EnableNewPS == TRUE)
+    {
+        // Support PCIe Advance Power Save
+    	if (bFromTx == TRUE
+			&&(pAd->Mlme.bPsPollTimerRunning == TRUE))
+    	{
+            pAd->Mlme.bPsPollTimerRunning = FALSE;
+    		RTMPPCIeLinkCtrlValueRestore(pAd, RESTORE_WAKEUP);
+    		RTMPusecDelay(3000);
+            DBGPRINT(RT_DEBUG_TRACE, ("=======AsicForceWakeup===bFromTx\n"));
+    	}
+
+		AutoWakeupCfg.word = 0;
+		RTMP_IO_WRITE32(pAd, AUTO_WAKEUP_CFG, AutoWakeupCfg.word);
+	
+        if (RT28xxPciAsicRadioOn(pAd, DOT11POWERSAVE))
+        {
+			{
+			// end johnli
+				// In Radio Off, we turn off RF clk, So now need to call ASICSwitchChannel again.
+				if (INFRA_ON(pAd) && (pAd->CommonCfg.CentralChannel != pAd->CommonCfg.Channel) 
+					&& (pAd->MlmeAux.HtCapability.HtCapInfo.ChannelWidth == BW_40))
+				{	
+					// Must using 40MHz.
+					AsicSwitchChannel(pAd, pAd->CommonCfg.CentralChannel, FALSE);
+					AsicLockChannel(pAd, pAd->CommonCfg.CentralChannel);
+				}
+				else
+				{	
+					// Must using 20MHz.
+					AsicSwitchChannel(pAd, pAd->CommonCfg.Channel, FALSE);
+					AsicLockChannel(pAd, pAd->CommonCfg.Channel);
+				}
+			} 
+        }
+    }
+    else
+#endif // PCIE_PS_SUPPORT //
+    {
+        // PCI, 2860-PCIe
+         DBGPRINT(RT_DEBUG_TRACE, ("<==RT28xxPciStaAsicForceWakeup::Original PCI Power Saving\n"));
+        AsicSendCommandToMcu(pAd, 0x31, 0xff, 0x00, 0x02);
+        AutoWakeupCfg.word = 0;
+	    RTMP_IO_WRITE32(pAd, AUTO_WAKEUP_CFG, AutoWakeupCfg.word);
+    }
+    
+    OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_DOZE);
+    OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_WAKEUP_NOW);
+    DBGPRINT(RT_DEBUG_TRACE, ("<=======RT28xxPciStaAsicForceWakeup\n"));
+}
+
+
+VOID RT28xxPciStaAsicSleepThenAutoWakeup(
+	IN PRTMP_ADAPTER pAd, 
+	IN USHORT TbttNumToNextWakeUp) 
+{
+	BOOLEAN brc;
+	
+	if (pAd->StaCfg.bRadio == FALSE)
+	{
+		OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_DOZE);
+		return;
+	}
+#ifdef PCIE_PS_SUPPORT
+	if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_ADVANCE_POWER_SAVE_PCIE_DEVICE)
+		&&pAd->StaCfg.PSControl.field.EnableNewPS == TRUE)
+	{
+		ULONG	Now = 0;
+		if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_WAKEUP_NOW))
+		{
+			DBGPRINT(RT_DEBUG_TRACE, ("waking up now!\n"));
+			OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_DOZE);
+			return;
+		}
+
+		NdisGetSystemUpTime(&Now);
+		// If last send NULL fram time is too close to this receiving beacon (within 8ms), don't go to sleep for this DTM.
+		// Because Some AP can't queuing outgoing frames immediately.
+		if (((pAd->Mlme.LastSendNULLpsmTime + 8) >= Now) && (pAd->Mlme.LastSendNULLpsmTime <= Now))		
+		{
+			DBGPRINT(RT_DEBUG_TRACE, ("Now = %lu, LastSendNULLpsmTime=%lu :  RxCountSinceLastNULL = %lu. \n", Now, pAd->Mlme.LastSendNULLpsmTime, pAd->RalinkCounters.RxCountSinceLastNULL));
+			return;
+		}
+		else if ((pAd->RalinkCounters.RxCountSinceLastNULL > 0) && ((pAd->Mlme.LastSendNULLpsmTime + pAd->CommonCfg.BeaconPeriod) >= Now))		
+		{
+			DBGPRINT(RT_DEBUG_TRACE, ("Now = %lu, LastSendNULLpsmTime=%lu: RxCountSinceLastNULL = %lu > 0 \n", Now, pAd->Mlme.LastSendNULLpsmTime,  pAd->RalinkCounters.RxCountSinceLastNULL));			
+			return;
+		}
+		
+		brc = RT28xxPciAsicRadioOff(pAd, DOT11POWERSAVE, TbttNumToNextWakeUp);
+		if (brc==TRUE)
+			OPSTATUS_SET_FLAG(pAd, fOP_STATUS_DOZE);
+	}
+	else
+#endif // PCIE_PS_SUPPORT //
+	{
+		AUTO_WAKEUP_STRUC	AutoWakeupCfg;	
+		// we have decided to SLEEP, so at least do it for a BEACON period.	
+		if (TbttNumToNextWakeUp == 0)
+			TbttNumToNextWakeUp = 1; 
+
+		//RTMP_IO_WRITE32(pAd, INT_MASK_CSR, AutoWakeupInt);
+
+		AutoWakeupCfg.word = 0; 
+		RTMP_IO_WRITE32(pAd, AUTO_WAKEUP_CFG, AutoWakeupCfg.word);  
+		AutoWakeupCfg.field.NumofSleepingTbtt = TbttNumToNextWakeUp - 1;    
+		AutoWakeupCfg.field.EnableAutoWakeup = 1;   
+		AutoWakeupCfg.field.AutoLeadTime = 5;   
+		RTMP_IO_WRITE32(pAd, AUTO_WAKEUP_CFG, AutoWakeupCfg.word);  
+		AsicSendCommandToMcu(pAd, 0x30, 0xff, 0xff, 0x00);   // send POWER-SAVE command to MCU. Timeout 40us.
+		OPSTATUS_SET_FLAG(pAd, fOP_STATUS_DOZE);
+		DBGPRINT(RT_DEBUG_TRACE, ("<-- %s, TbttNumToNextWakeUp=%d \n", __FUNCTION__, TbttNumToNextWakeUp));
+	}
+
+}
+
+#ifdef PCIE_PS_SUPPORT
+VOID PsPollWakeExec(
+	IN PVOID SystemSpecific1, 
+	IN PVOID FunctionContext, 
+	IN PVOID SystemSpecific2, 
+	IN PVOID SystemSpecific3) 
+{
+	RTMP_ADAPTER *pAd = (RTMP_ADAPTER *)FunctionContext;
+	unsigned long flags;
+
+    DBGPRINT(RT_DEBUG_TRACE,("-->PsPollWakeExec \n"));
+
+	RTMP_INT_LOCK(&pAd->irq_lock, flags);
+    if (pAd->Mlme.bPsPollTimerRunning)
+    {
+	    RTMPPCIeLinkCtrlValueRestore(pAd, RESTORE_WAKEUP);
+    }
+    pAd->Mlme.bPsPollTimerRunning = FALSE;
+	RTMP_INT_UNLOCK(&pAd->irq_lock, flags);
+}
+
+
+VOID  RadioOnExec(
+	IN PVOID SystemSpecific1, 
+	IN PVOID FunctionContext, 
+	IN PVOID SystemSpecific2, 
+	IN PVOID SystemSpecific3) 
+{
+	RTMP_ADAPTER *pAd = (RTMP_ADAPTER *)FunctionContext;
+	RTMP_CHIP_OP *pChipOps = &pAd->chipOps;
+	WPDMA_GLO_CFG_STRUC	DmaCfg;
+	BOOLEAN				Cancelled;
+
+	if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_DOZE))
+	{
+		DBGPRINT(RT_DEBUG_TRACE,("-->RadioOnExec() return on fOP_STATUS_DOZE == TRUE; \n"));
+		if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_ADVANCE_POWER_SAVE_PCIE_DEVICE)
+			&&pAd->StaCfg.PSControl.field.EnableNewPS == TRUE)
+		RTMPSetTimer(&pAd->Mlme.RadioOnOffTimer, 10);
+		return;
+	}
+	
+	if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS))
+	{
+		DBGPRINT(RT_DEBUG_TRACE,("-->RadioOnExec() return on SCAN_IN_PROGRESS; \n"));
+
+
+		if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_ADVANCE_POWER_SAVE_PCIE_DEVICE)
+				&&pAd->StaCfg.PSControl.field.EnableNewPS == TRUE)
+		RTMPSetTimer(&pAd->Mlme.RadioOnOffTimer, 10);
+		return;
+	}
+	
+if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_ADVANCE_POWER_SAVE_PCIE_DEVICE)
+	&&pAd->StaCfg.PSControl.field.EnableNewPS == TRUE)
+	{
+	pAd->Mlme.bPsPollTimerRunning = FALSE;
+	RTMPCancelTimer(&pAd->Mlme.PsPollTimer,	&Cancelled);
+	}
+
+
+	if (pAd->StaCfg.bRadio == TRUE)
+	{
+		pAd->bPCIclkOff = FALSE;
+		RTMPRingCleanUp(pAd, QID_AC_BK);
+		RTMPRingCleanUp(pAd, QID_AC_BE);
+		RTMPRingCleanUp(pAd, QID_AC_VI);
+		RTMPRingCleanUp(pAd, QID_AC_VO);
+		RTMPRingCleanUp(pAd, QID_HCCA);
+		RTMPRingCleanUp(pAd, QID_MGMT);
+		RTMPRingCleanUp(pAd, QID_RX);
+
+		// 2. Send wake up command.
+		AsicSendCommandToMcu(pAd, 0x31, PowerWakeCID, 0x00, 0x02);   
+		// 2-1. wait command ok.
+		AsicCheckCommanOk(pAd, PowerWakeCID);	
+        
+		// When PCI clock is off, don't want to service interrupt. So when back to clock on, enable interrupt.
+		//RTMP_IO_WRITE32(pAd, INT_MASK_CSR, (DELAYINTMASK|RxINT));
+		RTMP_ASIC_INTERRUPT_ENABLE(pAd);
+		
+		// 3. Enable Tx DMA.
+		RTMP_IO_READ32(pAd, WPDMA_GLO_CFG, &DmaCfg.word);
+		DmaCfg.field.EnableTxDMA = 1;
+		RTMP_IO_WRITE32(pAd, WPDMA_GLO_CFG, DmaCfg.word);
+		
+		// In Radio Off, we turn off RF clk, So now need to call ASICSwitchChannel again.
+		if (INFRA_ON(pAd) && (pAd->CommonCfg.CentralChannel != pAd->CommonCfg.Channel) 
+			&& (pAd->MlmeAux.HtCapability.HtCapInfo.ChannelWidth == BW_40))
+		{	
+			// Must using 40MHz.
+			AsicSwitchChannel(pAd, pAd->CommonCfg.CentralChannel, FALSE);
+			AsicLockChannel(pAd, pAd->CommonCfg.CentralChannel);
+		}
+		else
+		{	
+			// Must using 20MHz.
+			AsicSwitchChannel(pAd, pAd->CommonCfg.Channel, FALSE);
+			AsicLockChannel(pAd, pAd->CommonCfg.Channel);
+		}
+				
+		if (pChipOps->AsicReverseRfFromSleepMode)
+			pChipOps->AsicReverseRfFromSleepMode(pAd);
+
+		// Clear Radio off flag
+		RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_RADIO_OFF);
+
+		// Set LED
+		RTMPSetLED(pAd, LED_RADIO_ON);
+
+        if (pAd->StaCfg.Psm == PWR_ACTIVE)
+        {
+    		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R3, pAd->StaCfg.BBPR3);
+        }
+	}
+	else
+	{
+		RT28xxPciAsicRadioOff(pAd, GUIRADIO_OFF, 0);
+	}
+}
+#endif // PCIE_PS_SUPPORT //
+#endif // CONFIG_STA_SUPPORT //
+
+
+/*
+	==========================================================================
+	Description:
+		This routine sends command to firmware and turn our chip to wake up mode from power save mode.
+		Both RadioOn and .11 power save function needs to call this routine.
+	Input:
+		Level = GUIRADIO_OFF : call this function is from Radio Off to Radio On.  Need to restore PCI host value.
+		Level = other value : normal wake up function.
+
+	==========================================================================
+ */
+BOOLEAN RT28xxPciAsicRadioOn(
+	IN PRTMP_ADAPTER pAd,
+	IN UCHAR     Level)
+{
+    //WPDMA_GLO_CFG_STRUC	DmaCfg;
+#ifdef CONFIG_STA_SUPPORT    
+	BOOLEAN				Cancelled;   
+#endif // CONFIG_STA_SUPPORT //
+    //UINT32			    MACValue;
+
+	if (pAd->OpMode == OPMODE_AP && Level==DOT11POWERSAVE)
+		return FALSE;
+
+#ifdef CONFIG_STA_SUPPORT
+#ifdef PCIE_PS_SUPPORT
+	if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_ADVANCE_POWER_SAVE_PCIE_DEVICE))
+	{
+		if (pAd->StaCfg.PSControl.field.EnableNewPS == TRUE)
+		{
+	    	pAd->Mlme.bPsPollTimerRunning = FALSE;
+			RTMPCancelTimer(&pAd->Mlme.PsPollTimer,	&Cancelled);
+		}
+		if ((pAd->StaCfg.PSControl.field.EnableNewPS == TRUE)&&
+			((Level == GUIRADIO_OFF) || (Level == GUI_IDLE_POWER_SAVE))
+			||(RTMP_TEST_PSFLAG(pAd, fRTMP_PS_SET_PCI_CLK_OFF_COMMAND)))
+		{
+			// Some chips don't need to delay 6ms, so copy RTMPPCIePowerLinkCtrlRestore
+			// return condition here.
+			/*
+			if (((pAd->MACVersion&0xffff0000) != 0x28600000)
+				&& ((pAd->DeviceID == NIC2860_PCIe_DEVICE_ID)
+				||(pAd->DeviceID == NIC2790_PCIe_DEVICE_ID)))
+			*/
+			{
+				DBGPRINT(RT_DEBUG_TRACE, ("RT28xxPciAsicRadioOn ()\n"));
+				// 1. Set PCI Link Control in Configuration Space.
+				RTMPPCIeLinkCtrlValueRestore(pAd, RESTORE_WAKEUP);
+				RTMPusecDelay(6000);
+			}
+		}
+	}
+    
+	{	
+    pAd->bPCIclkOff = FALSE;
+		DBGPRINT(RT_DEBUG_TRACE, ("PSM :309xbPCIclkOff == %d\n", pAd->bPCIclkOff));
+		
+	}
+#endif // PCIE_PS_SUPPORT //
+#endif // CONFIG_STA_SUPPORT //
+	// 2. Send wake up command.
+	AsicSendCommandToMcu(pAd, 0x31, PowerWakeCID, 0x00, 0x02);
+    pAd->bPCIclkOff = FALSE;
+	// 2-1. wait command ok.
+	AsicCheckCommanOk(pAd, PowerWakeCID);	
+    	RTMP_ASIC_INTERRUPT_ENABLE(pAd);
+        
+
+    	RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_IDLE_RADIO_OFF);
+    	if (Level == GUI_IDLE_POWER_SAVE)
+    	{
+ //2009/06/09: AP and stations need call the following function
+			{
+	    		// In Radio Off, we turn off RF clk, So now need to call ASICSwitchChannel again.
+#ifdef CONFIG_STA_SUPPORT
+				IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+				{
+	    			if (INFRA_ON(pAd) && (pAd->CommonCfg.CentralChannel != pAd->CommonCfg.Channel) 
+	    				&& (pAd->MlmeAux.HtCapability.HtCapInfo.ChannelWidth == BW_40))
+	    			{	
+	    				// Must using 40MHz.
+	    				AsicSwitchChannel(pAd, pAd->CommonCfg.CentralChannel, FALSE);
+	    				AsicLockChannel(pAd, pAd->CommonCfg.CentralChannel);
+	    			}
+	    			else
+	    			{	
+	    				// Must using 20MHz.
+	    				AsicSwitchChannel(pAd, pAd->CommonCfg.Channel, FALSE);
+	    				AsicLockChannel(pAd, pAd->CommonCfg.Channel);
+	    			}
+				}
+#endif // CONFIG_STA_SUPPORT //
+			}
+    	}
+        return TRUE;
+
+}
+
+
+/*
+	==========================================================================
+	Description:
+		This routine sends command to firmware and turn our chip to power save mode.
+		Both RadioOff and .11 power save function needs to call this routine.
+	Input:
+		Level = GUIRADIO_OFF  : GUI Radio Off mode
+		Level = DOT11POWERSAVE  : 802.11 power save mode 
+		Level = RTMP_HALT  : When Disable device. 
+		
+	==========================================================================
+ */
+BOOLEAN RT28xxPciAsicRadioOff(
+	IN PRTMP_ADAPTER    pAd,
+	IN UCHAR            Level, 
+	IN USHORT           TbttNumToNextWakeUp) 
+{
+#ifdef CONFIG_STA_SUPPORT	
+	WPDMA_GLO_CFG_STRUC	DmaCfg;
+	UCHAR		i, tempBBP_R3 = 0;
+#ifdef PCIE_PS_SUPPORT	
+    ULONG		BeaconPeriodTime;
+	UINT32		PsPollTime = 0/*, MACValue*/;
+	UINT32		TbTTTime = 0;
+	BOOLEAN		Cancelled;
+#endif // PCIE_PS_SUPPORT //	
+#endif // CONFIG_STA_SUPPORT //
+	BOOLEAN		brc = FALSE;
+    UINT32		RxDmaIdx, RxCpuIdx;
+	DBGPRINT(RT_DEBUG_TRACE, ("%s ===> Lv= %d, TxCpuIdx = %d, TxDmaIdx = %d. RxCpuIdx = %d, RxDmaIdx = %d.\n", 
+								__FUNCTION__, Level,pAd->TxRing[0].TxCpuIdx, pAd->TxRing[0].TxDmaIdx, pAd->RxRing.RxCpuIdx, pAd->RxRing.RxDmaIdx));
+
+	if (pAd->OpMode == OPMODE_AP && Level==DOT11POWERSAVE)
+		return FALSE;
+
+    // Check Rx DMA busy status, if more than half is occupied, give up this radio off.
+	RTMP_IO_READ32(pAd, RX_DRX_IDX , &RxDmaIdx);
+	RTMP_IO_READ32(pAd, RX_CRX_IDX , &RxCpuIdx);
+	if ((RxDmaIdx > RxCpuIdx) && ((RxDmaIdx - RxCpuIdx) > RX_RING_SIZE/3))
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("AsicRadioOff ===> return1. RxDmaIdx = %d ,  RxCpuIdx = %d. \n", RxDmaIdx, RxCpuIdx));
+		return FALSE;
+	}
+	else if ((RxCpuIdx >= RxDmaIdx) && ((RxCpuIdx - RxDmaIdx) < RX_RING_SIZE/3))
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("AsicRadioOff ===> return2.  RxCpuIdx = %d. RxDmaIdx = %d ,  \n", RxCpuIdx, RxDmaIdx));
+		return FALSE;
+	}
+
+    // Once go into this function, disable tx because don't want too many packets in queue to prevent HW stops.
+	//pAd->bPCIclkOffDisableTx = TRUE;
+#ifdef CONFIG_STA_SUPPORT
+#ifdef PCIE_PS_SUPPORT
+	RTMP_SET_PSFLAG(pAd, fRTMP_PS_DISABLE_TX);
+	if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_ADVANCE_POWER_SAVE_PCIE_DEVICE) 
+		&& pAd->OpMode == OPMODE_STA
+		&&pAd->StaCfg.PSControl.field.EnableNewPS == TRUE
+		)
+	{
+
+	    RTMPCancelTimer(&pAd->Mlme.RadioOnOffTimer,	&Cancelled);
+	    RTMPCancelTimer(&pAd->Mlme.PsPollTimer,	&Cancelled);
+
+	    if (Level == DOT11POWERSAVE)
+		{
+			RTMP_IO_READ32(pAd, TBTT_TIMER, &TbTTTime);
+			TbTTTime &= 0x1ffff;
+			// 00. check if need to do sleep in this DTIM period.   If next beacon will arrive within 30ms , ...doesn't necessarily sleep.
+			// TbTTTime uint = 64us, LEAD_TIME unit = 1024us, PsPollTime unit = 1ms
+	        if  (((64*TbTTTime) <((LEAD_TIME*1024) + 40000)) && (TbttNumToNextWakeUp == 0))
+			{
+				DBGPRINT(RT_DEBUG_TRACE, ("TbTTTime = 0x%x , give up this sleep. \n", TbTTTime));
+	            OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_DOZE);
+	            		//pAd->bPCIclkOffDisableTx = FALSE;
+	            		RTMP_CLEAR_PSFLAG(pAd, fRTMP_PS_DISABLE_TX);
+				return FALSE;
+			}
+			else
+			{
+				PsPollTime = (64*TbTTTime- LEAD_TIME*1024)/1000;
+				PsPollTime -= 3;
+
+	            BeaconPeriodTime = pAd->CommonCfg.BeaconPeriod*102/100;
+				if (TbttNumToNextWakeUp > 0)
+					PsPollTime += ((TbttNumToNextWakeUp -1) * BeaconPeriodTime);
+	            
+	            pAd->Mlme.bPsPollTimerRunning = TRUE;
+				RTMPSetTimer(&pAd->Mlme.PsPollTimer, PsPollTime);
+				}
+			}
+		}
+    	else
+    	{
+		DBGPRINT(RT_DEBUG_TRACE, ("RT28xxPciAsicRadioOff::Level!=DOT11POWERSAVE \n"));
+    	}
+#endif // PCIE_PS_SUPPORT //
+#endif // CONFIG_STA_SUPPORT //
+	//pAd->bPCIclkOffDisableTx = FALSE;
+    RTMP_SET_FLAG(pAd, fRTMP_ADAPTER_IDLE_RADIO_OFF);
+    
+#ifdef CONFIG_STA_SUPPORT
+    // Set to 1R.
+	if (pAd->Antenna.field.RxPath > 1 && pAd->OpMode == OPMODE_STA)
+	{
+    	tempBBP_R3 = (pAd->StaCfg.BBPR3 & 0xE7);
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R3, tempBBP_R3);
+	}
+#endif // CONFIG_STA_SUPPORT //
+    
+	// In Radio Off, we turn off RF clk, So now need to call ASICSwitchChannel again.
+	if ((INFRA_ON(pAd) || pAd->OpMode == OPMODE_AP) && (pAd->CommonCfg.CentralChannel != pAd->CommonCfg.Channel) 
+		&& (pAd->MlmeAux.HtCapability.HtCapInfo.ChannelWidth == BW_40))
+	{	
+		// Must using 40MHz.
+		AsicTurnOffRFClk(pAd, pAd->CommonCfg.CentralChannel);
+	}
+	else
+	{	
+		// Must using 20MHz.
+		AsicTurnOffRFClk(pAd, pAd->CommonCfg.Channel);
+	}
+
+	if (Level != RTMP_HALT)
+	{
+		// Change Interrupt bitmask.
+    // When PCI clock is off, don't want to service interrupt.
+	RTMP_IO_WRITE32(pAd, INT_MASK_CSR, AutoWakeupInt);
+	}
+	else
+	{
+		RTMP_ASIC_INTERRUPT_DISABLE(pAd);
+	}
+
+    
+	RTMP_IO_WRITE32(pAd, RX_CRX_IDX, pAd->RxRing.RxCpuIdx);
+	//  2. Send Sleep command 
+	RTMP_IO_WRITE32(pAd, H2M_MAILBOX_STATUS, 0xffffffff);
+	RTMP_IO_WRITE32(pAd, H2M_MAILBOX_CID, 0xffffffff);    
+	// send POWER-SAVE command to MCU. high-byte = 1 save power as much as possible. high byte = 0 save less power
+	AsicSendCommandToMcu(pAd, 0x30, PowerSafeCID, 0xff, 0x1);   
+	//  2-1. Wait command success
+	// Status = 1 : success, Status = 2, already sleep, Status = 3, Maybe MAC is busy so can't finish this task.
+	brc = AsicCheckCommanOk(pAd, PowerSafeCID);	
+
+	//  3. After 0x30 command is ok, send radio off command. lowbyte = 0 for power safe.
+	// If 0x30 command is not ok this time, we can ignore 0x35 command. It will make sure not cause firmware'r problem.
+	if ((Level == DOT11POWERSAVE) && (brc == TRUE))
+	{
+		AsicSendCommandToMcu(pAd, 0x35, PowerRadioOffCID, 0, 0x00);	// lowbyte = 0 means to do power safe, NOT turn off radio.
+	 	//  3-1. Wait command success
+	 	AsicCheckCommanOk(pAd, PowerRadioOffCID);
+	}
+	else if (brc == TRUE)
+	{
+		AsicSendCommandToMcu(pAd, 0x35, PowerRadioOffCID, 1, 0x00);	// lowbyte = 0 means to do power safe, NOT turn off radio.
+	 	//  3-1. Wait command success
+	 	AsicCheckCommanOk(pAd, PowerRadioOffCID);
+	}
+    
+#ifdef CONFIG_STA_SUPPORT
+	// 1. Wait DMA not busy
+	i = 0;
+	do
+	{
+		RTMP_IO_READ32(pAd, WPDMA_GLO_CFG, &DmaCfg.word);
+		if ((DmaCfg.field.RxDMABusy == 0) && (DmaCfg.field.TxDMABusy == 0))
+			break;
+		RTMPusecDelay(20);
+		i++;
+	}while(i < 50);
+
+	/*
+	if (i >= 50)
+	{
+		pAd->CheckDmaBusyCount++;
+		DBGPRINT(RT_DEBUG_TRACE, ("DMA Rx keeps busy.  return on AsicRadioOff () CheckDmaBusyCount = %d \n", pAd->CheckDmaBusyCount));
+	}	
+	else
+	{
+		pAd->CheckDmaBusyCount = 0;
+	}
+	*/
+#endif // CONFIG_STA_SUPPORT //
+//KH Debug:My original codes have the follwoing codes, but currecnt codes do not have it.
+// Disable for stability. If PCIE Link Control is modified for advance power save, re-covery this code segment.
+RTMP_IO_WRITE32(pAd, PBF_SYS_CTRL, 0x1280);
+//OPSTATUS_SET_FLAG(pAd, fOP_STATUS_CLKSELECT_40MHZ);
+
+#ifdef CONFIG_STA_SUPPORT
+#ifdef PCIE_PS_SUPPORT
+#endif // PCIE_PS_SUPPORT //
+#endif // CONFIG_STA_SUPPORT //
+	if (Level == DOT11POWERSAVE)
+	{
+		AUTO_WAKEUP_STRUC	AutoWakeupCfg;
+		//RTMPSetTimer(&pAd->Mlme.PsPollTimer, 90);
+			
+		// we have decided to SLEEP, so at least do it for a BEACON period.
+		if (TbttNumToNextWakeUp == 0)
+			TbttNumToNextWakeUp = 1;
+
+		AutoWakeupCfg.word = 0;
+		RTMP_IO_WRITE32(pAd, AUTO_WAKEUP_CFG, AutoWakeupCfg.word);
+
+		// 1. Set auto wake up timer.
+		AutoWakeupCfg.field.NumofSleepingTbtt = TbttNumToNextWakeUp - 1;
+		AutoWakeupCfg.field.EnableAutoWakeup = 1;
+		AutoWakeupCfg.field.AutoLeadTime = LEAD_TIME;
+		RTMP_IO_WRITE32(pAd, AUTO_WAKEUP_CFG, AutoWakeupCfg.word);
+	}
+	
+#ifdef CONFIG_STA_SUPPORT
+#ifdef PCIE_PS_SUPPORT
+
+	//  4-1. If it's to disable our device. Need to restore PCI Configuration Space to its original value.
+	if (Level == RTMP_HALT && pAd->OpMode == OPMODE_STA)
+	{
+		if ((brc == TRUE) && (i < 50))
+			RTMPPCIeLinkCtrlSetting(pAd, 1);
+	}
+	//  4. Set PCI configuration Space Link Comtrol fields.  Only Radio Off needs to call this function
+	else if (pAd->OpMode == OPMODE_STA)
+	{
+		if ((brc == TRUE) && (i < 50))
+			RTMPPCIeLinkCtrlSetting(pAd, 3);
+	}
+	RTMP_CLEAR_PSFLAG(pAd, fRTMP_PS_DISABLE_TX);
+#endif // PCIE_PS_SUPPORT //
+#endif // CONFIG_STA_SUPPORT //
+
+    	//pAd->bPCIclkOffDisableTx = FALSE;
+    	
+	return TRUE;
+}
+
+
+
+
+VOID RT28xxPciMlmeRadioOn(
+	IN PRTMP_ADAPTER pAd)
+{    
+    if (!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_RADIO_OFF))
+   		return;
+    
+    DBGPRINT(RT_DEBUG_TRACE,("%s===>\n", __FUNCTION__));   
+    
+    if ((pAd->OpMode == OPMODE_AP) ||
+        ((pAd->OpMode == OPMODE_STA) 
+#ifdef CONFIG_STA_SUPPORT
+#ifdef PCIE_PS_SUPPORT
+        && (!OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_ADVANCE_POWER_SAVE_PCIE_DEVICE)
+        ||pAd->StaCfg.PSControl.field.EnableNewPS == FALSE)
+ #endif // PCIE_PS_SUPPORT //
+#endif // CONFIG_STA_SUPPORT //
+        ))
+    {
+    	RTMPRingCleanUp(pAd, QID_AC_BK);
+    	RTMPRingCleanUp(pAd, QID_AC_BE);
+    	RTMPRingCleanUp(pAd, QID_AC_VI);
+    	RTMPRingCleanUp(pAd, QID_AC_VO);
+    	RTMPRingCleanUp(pAd, QID_HCCA);
+    	RTMPRingCleanUp(pAd, QID_MGMT);
+    	RTMPRingCleanUp(pAd, QID_RX);
+
+		RT28xxPciAsicRadioOn(pAd, GUI_IDLE_POWER_SAVE);
+		//NICResetFromError(pAd);
+
+    	// Enable Tx/Rx
+    	RTMPEnableRxTx(pAd);
+    	
+    	// Clear Radio off flag
+    	RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_RADIO_OFF);
+	RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_IDLE_RADIO_OFF);
+	    // Set LED
+	    RTMPSetLED(pAd, LED_RADIO_ON);
+    }
+
+#ifdef CONFIG_STA_SUPPORT
+#ifdef PCIE_PS_SUPPORT
+
+    if ((pAd->OpMode == OPMODE_STA) &&
+        (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_ADVANCE_POWER_SAVE_PCIE_DEVICE))
+        &&(pAd->StaCfg.PSControl.field.EnableNewPS == TRUE))
+    {
+        BOOLEAN		Cancelled;
+    	
+    	RTMPPCIeLinkCtrlValueRestore(pAd, RESTORE_WAKEUP);
+
+        pAd->Mlme.bPsPollTimerRunning = FALSE;
+    	RTMPCancelTimer(&pAd->Mlme.PsPollTimer,	&Cancelled);
+    	RTMPCancelTimer(&pAd->Mlme.RadioOnOffTimer,	&Cancelled);
+    	RTMPSetTimer(&pAd->Mlme.RadioOnOffTimer, 40);
+    }
+#endif // PCIE_PS_SUPPORT //
+#endif // CONFIG_STA_SUPPORT //
+}
+
+
+VOID RT28xxPciMlmeRadioOFF(
+	IN PRTMP_ADAPTER pAd)
+{
+	BOOLEAN brc=TRUE;
+    
+    if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_RADIO_OFF))
+    	return;
+    
+#ifdef CONFIG_STA_SUPPORT
+	// Link down first if any association exists
+	if (!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_NIC_NOT_EXIST))
+	{
+		if (INFRA_ON(pAd) || ADHOC_ON(pAd))
+		{
+			MLME_DISASSOC_REQ_STRUCT DisReq;
+			MLME_QUEUE_ELEM *pMsgElem = (MLME_QUEUE_ELEM *) kmalloc(sizeof(MLME_QUEUE_ELEM), MEM_ALLOC_FLAG);
+
+			if (pMsgElem)
+			{
+				COPY_MAC_ADDR(&DisReq.Addr, pAd->CommonCfg.Bssid);
+				DisReq.Reason =  REASON_DISASSOC_STA_LEAVING;
+
+				pMsgElem->Machine = ASSOC_STATE_MACHINE;
+				pMsgElem->MsgType = MT2_MLME_DISASSOC_REQ;
+				pMsgElem->MsgLen = sizeof(MLME_DISASSOC_REQ_STRUCT);
+				NdisMoveMemory(pMsgElem->Msg, &DisReq, sizeof(MLME_DISASSOC_REQ_STRUCT));
+			
+				MlmeDisassocReqAction(pAd, pMsgElem);
+				kfree(pMsgElem);
+				
+				RTMPusecDelay(1000);
+			}
+		}
+	}
+#endif // CONFIG_STA_SUPPORT //
+	
+    DBGPRINT(RT_DEBUG_TRACE,("%s===>\n", __FUNCTION__));
+
+	// Set Radio off flag
+	RTMP_SET_FLAG(pAd, fRTMP_ADAPTER_RADIO_OFF);
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+    {
+    	BOOLEAN		Cancelled;
+    	if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS))
+    	{
+			RTMPCancelTimer(&pAd->MlmeAux.ScanTimer, &Cancelled);
+			RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS);
+    	}
+		// If during power safe mode.
+		if (pAd->StaCfg.bRadio == TRUE)
+		{
+			DBGPRINT(RT_DEBUG_TRACE,("-->MlmeRadioOff() return on bRadio == TRUE; \n"));
+			return;
+		}
+		// Always radio on since the NIC needs to set the MCU command (LED_RADIO_OFF).
+		if (IDLE_ON(pAd) &&
+			(RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_IDLE_RADIO_OFF)))
+		{
+			RT28xxPciAsicRadioOn(pAd, GUI_IDLE_POWER_SAVE);
+		}
+#ifdef PCIE_PS_SUPPORT
+		if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_ADVANCE_POWER_SAVE_PCIE_DEVICE)&&pAd->StaCfg.PSControl.field.EnableNewPS == TRUE)
+        {
+            BOOLEAN Cancelled;
+            pAd->Mlme.bPsPollTimerRunning = FALSE;
+            RTMPCancelTimer(&pAd->Mlme.PsPollTimer,	&Cancelled);
+	        RTMPCancelTimer(&pAd->Mlme.RadioOnOffTimer,	&Cancelled);
+        }
+#endif // PCIE_PS_SUPPORT //
+		
+
+        // Link down first if any association exists	
+        if (INFRA_ON(pAd) || ADHOC_ON(pAd))		
+            LinkDown(pAd, FALSE);   
+        RTMPusecDelay(10000);   
+        //==========================================    
+        // Clean up old bss table   
+        BssTableInit(&pAd->ScanTab);
+		
+        /*
+        if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_ADVANCE_POWER_SAVE_PCIE_DEVICE))
+        {
+            RTMPSetTimer(&pAd->Mlme.RadioOnOffTimer, 10);
+            return;
+        }
+        */
+    }
+#endif // CONFIG_STA_SUPPORT //
+	// Set LED.Move to here for fixing LED bug. This flag must be called after LinkDown
+	RTMPSetLED(pAd, LED_RADIO_OFF);
+
+#ifdef CONFIG_STA_SUPPORT
+#ifdef PCIE_PS_SUPPORT
+//Q:Does all PCIe devices need to use timer to execute radio off function? or only if the device is PCIe and EnableNewPS is true ?
+//A:It is right, because only when the PCIe and EnableNewPs is true, we need to delay the RadioOffTimer
+//to avoid the deadlock with PCIe Power saving function. 
+if (pAd->OpMode == OPMODE_STA&&
+	OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_ADVANCE_POWER_SAVE_PCIE_DEVICE)&&
+	pAd->StaCfg.PSControl.field.EnableNewPS == TRUE)
+	{
+		RTMPSetTimer(&pAd->Mlme.RadioOnOffTimer, 10); 
+	} 
+else 
+#endif // PCIE_PS_SUPPORT //
+#endif // CONFIG_STA_SUPPORT //
+{
+
+
+		brc=RT28xxPciAsicRadioOff(pAd, GUIRADIO_OFF, 0);
+	
+	if (brc==FALSE)
+	{
+		DBGPRINT(RT_DEBUG_ERROR,("%s call RT28xxPciAsicRadioOff fail !!\n", __FUNCTION__)); 
+	}
+}
+/*
+		// Disable Tx/Rx DMA
+		RTMP_IO_READ32(pAd, WPDMA_GLO_CFG, &GloCfg.word);	   // disable DMA 
+		GloCfg.field.EnableTxDMA = 0;
+		GloCfg.field.EnableRxDMA = 0;
+		RTMP_IO_WRITE32(pAd, WPDMA_GLO_CFG, GloCfg.word);	   // abort all TX rings
+
+		
+		// MAC_SYS_CTRL => value = 0x0 => 40mA
+		RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, 0);
+		
+		// PWR_PIN_CFG => value = 0x0 => 40mA
+		RTMP_IO_WRITE32(pAd, PWR_PIN_CFG, 0);
+		
+		// TX_PIN_CFG => value = 0x0 => 20mA
+		RTMP_IO_WRITE32(pAd, TX_PIN_CFG, 0);
+
+		if (pAd->CommonCfg.BBPCurrentBW == BW_40)
+		{	
+			// Must using 40MHz.
+			AsicTurnOffRFClk(pAd, pAd->CommonCfg.CentralChannel);
+		}
+		else
+		{	
+			// Must using 20MHz.
+			AsicTurnOffRFClk(pAd, pAd->CommonCfg.Channel);
+		}
+
+		// Waiting for DMA idle
+		i = 0;
+		do
+		{
+			RTMP_IO_READ32(pAd, WPDMA_GLO_CFG, &GloCfg.word);
+			if ((GloCfg.field.TxDMABusy == 0) && (GloCfg.field.RxDMABusy == 0))
+				break;
+			
+			RTMPusecDelay(1000);
+		}while (i++ < 100);
+*/
+}
+
+#endif // RTMP_MAC_PCI //
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_profile.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_profile.c
new file mode 100644
index 000000000..629dd4fc7
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_profile.c
@@ -0,0 +1,2309 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+ */
+ 
+#include "rt_config.h"
+
+
+#define ETH_MAC_ADDR_STR_LEN 17  // in format of xx:xx:xx:xx:xx:xx
+
+// We assume the s1 is a sting, s2 is a memory space with 6 bytes. and content of s1 will be changed.
+BOOLEAN rtstrmactohex(PSTRING s1, PSTRING s2)
+{
+	int i = 0;
+	PSTRING ptokS = s1, ptokE = s1;
+
+	if (strlen(s1) != ETH_MAC_ADDR_STR_LEN)
+		return FALSE;
+
+	while((*ptokS) != '\0')
+	{
+		if((ptokE = strchr(ptokS, ':')) != NULL)
+			*ptokE++ = '\0';
+		if ((strlen(ptokS) != 2) || (!isxdigit(*ptokS)) || (!isxdigit(*(ptokS+1))))
+			break; // fail
+		AtoH(ptokS, (PUCHAR)&s2[i++], 1);
+		ptokS = ptokE;
+		if (i == 6)
+			break; // parsing finished
+	}
+
+	return ( i == 6 ? TRUE : FALSE);
+
+}
+
+
+// we assume the s1 and s2 both are strings.
+BOOLEAN rtstrcasecmp(PSTRING s1, PSTRING s2)
+{
+	PSTRING p1 = s1, p2 = s2;
+	
+	if (strlen(s1) != strlen(s2))
+		return FALSE;
+	
+	while(*p1 != '\0')
+	{
+		if((*p1 != *p2) && ((*p1 ^ *p2) != 0x20))
+			return FALSE;
+		p1++;
+		p2++;
+	}
+	
+	return TRUE;
+}
+
+// we assume the s1 (buffer) and s2 (key) both are strings.
+PSTRING rtstrstruncasecmp(PSTRING s1, PSTRING s2)
+{
+	INT l1, l2, i;
+	char temp1, temp2;
+
+	l2 = strlen(s2);
+	if (!l2)
+		return (char *) s1;
+
+	l1 = strlen(s1);
+
+	while (l1 >= l2)
+	{
+		l1--;
+
+		for(i=0; i<l2; i++)
+		{
+			temp1 = *(s1+i);
+			temp2 = *(s2+i);
+
+			if (('a' <= temp1) && (temp1 <= 'z'))
+				temp1 = 'A'+(temp1-'a');
+			if (('a' <= temp2) && (temp2 <= 'z'))
+				temp2 = 'A'+(temp2-'a');
+
+			if (temp1 != temp2)
+				break;
+		}
+
+		if (i == l2)
+			return (char *) s1;
+
+		s1++;
+	}
+	
+	return NULL; // not found
+}
+
+//add by kathy
+
+ /**
+  * strstr - Find the first substring in a %NUL terminated string
+  * @s1: The string to be searched
+  * @s2: The string to search for
+  */
+PSTRING rtstrstr(PSTRING s1,const PSTRING s2)
+{
+	INT l1, l2;
+
+	l2 = strlen(s2);
+	if (!l2)
+		return s1;
+	
+	l1 = strlen(s1);
+	
+	while (l1 >= l2)
+	{
+		l1--;
+		if (!memcmp(s1,s2,l2))
+			return s1;
+		s1++;
+	}
+	
+	return NULL;
+}
+ 
+/**
+ * rstrtok - Split a string into tokens
+ * @s: The string to be searched
+ * @ct: The characters to search for
+ * * WARNING: strtok is deprecated, use strsep instead. However strsep is not compatible with old architecture.
+ */
+PSTRING __rstrtok;
+PSTRING rstrtok(PSTRING s,const PSTRING ct)
+{
+	PSTRING sbegin, send;
+
+	sbegin  = s ? s : __rstrtok;
+	if (!sbegin)
+	{
+		return NULL;
+	}
+
+	sbegin += strspn(sbegin,ct);
+	if (*sbegin == '\0')
+	{
+		__rstrtok = NULL;
+		return( NULL );
+	}
+
+	send = strpbrk( sbegin, ct);
+	if (send && *send != '\0')
+		*send++ = '\0';
+
+	__rstrtok = send;
+
+	return (sbegin);
+}
+
+/**
+ * delimitcnt - return the count of a given delimiter in a given string.
+ * @s: The string to be searched.
+ * @ct: The delimiter to search for.
+ * Notice : We suppose the delimiter is a single-char string(for example : ";").
+ */
+INT delimitcnt(PSTRING s,PSTRING ct)
+{
+	INT count = 0;
+	/* point to the beginning of the line */
+	PSTRING token = s; 
+
+	for ( ;; )
+	{
+		token = strpbrk(token, ct); /* search for delimiters */
+
+        if ( token == NULL )
+		{
+			/* advanced to the terminating null character */
+			break; 
+		}
+		/* skip the delimiter */
+	    ++token; 
+
+		/*
+		 * Print the found text: use len with %.*s to specify field width.
+		 */
+        
+		/* accumulate delimiter count */
+	    ++count; 
+	}
+    return count;
+}
+
+/*
+  * converts the Internet host address from the standard numbers-and-dots notation
+  * into binary data.
+  * returns nonzero if the address is valid, zero if not.	
+  */
+int rtinet_aton(PSTRING cp, unsigned int *addr)
+{
+	unsigned int 	val;
+	int         	base, n;
+	STRING        	c;
+	unsigned int    parts[4];
+	unsigned int    *pp = parts;
+
+	for (;;)
+    {
+         /*
+          * Collect number up to ``.''. 
+          * Values are specified as for C: 
+          *	0x=hex, 0=octal, other=decimal.
+          */
+         val = 0;
+         base = 10;
+         if (*cp == '0')
+         {
+             if (*++cp == 'x' || *cp == 'X')
+                 base = 16, cp++;
+             else
+                 base = 8;
+         }
+         while ((c = *cp) != '\0')
+         {
+             if (isdigit((unsigned char) c))
+             {
+                 val = (val * base) + (c - '0');
+                 cp++;
+                 continue;
+             }
+             if (base == 16 && isxdigit((unsigned char) c))
+             {
+                 val = (val << 4) +
+                     (c + 10 - (islower((unsigned char) c) ? 'a' : 'A'));
+                 cp++;
+                 continue;
+             }
+             break;
+         }
+         if (*cp == '.')
+         {
+             /*
+              * Internet format: a.b.c.d a.b.c   (with c treated as 16-bits)
+              * a.b     (with b treated as 24 bits)
+              */
+             if (pp >= parts + 3 || val > 0xff)
+                 return 0;
+             *pp++ = val, cp++;
+         }
+         else
+             break;
+     }
+ 
+     /*
+      * Check for trailing junk.
+      */
+     while (*cp)
+         if (!isspace((unsigned char) *cp++))
+             return 0;
+ 
+     /*
+      * Concoct the address according to the number of parts specified.
+      */
+     n = pp - parts + 1;
+     switch (n)
+     {
+ 
+         case 1:         /* a -- 32 bits */
+             break;
+ 
+         case 2:         /* a.b -- 8.24 bits */
+             if (val > 0xffffff)
+                 return 0;
+             val |= parts[0] << 24;
+             break;
+ 
+         case 3:         /* a.b.c -- 8.8.16 bits */
+             if (val > 0xffff)
+                 return 0;
+             val |= (parts[0] << 24) | (parts[1] << 16);
+             break;
+ 
+         case 4:         /* a.b.c.d -- 8.8.8.8 bits */
+             if (val > 0xff)
+                 return 0;
+             val |= (parts[0] << 24) | (parts[1] << 16) | (parts[2] << 8);
+             break;
+     }
+	      
+     *addr = htonl(val);
+     return 1;
+
+}
+
+/*
+    ========================================================================
+
+    Routine Description:
+        Find key section for Get key parameter.
+
+    Arguments:
+        buffer                      Pointer to the buffer to start find the key section
+        section                     the key of the secion to be find
+
+    Return Value:
+        NULL                        Fail
+        Others                      Success
+    ========================================================================
+*/
+PSTRING RTMPFindSection(
+    IN  PSTRING   buffer)
+{
+    STRING temp_buf[32];
+    PSTRING  ptr;
+
+    strcpy(temp_buf, "Default");
+
+    if((ptr = rtstrstr(buffer, temp_buf)) != NULL)
+            return (ptr+strlen("\n"));
+        else
+            return NULL;
+}
+
+/*
+    ========================================================================
+
+    Routine Description:
+        Get key parameter.
+
+    Arguments:
+	key			Pointer to key string
+	dest			Pointer to destination      
+	destsize		The datasize of the destination
+	buffer		Pointer to the buffer to start find the key
+	bTrimSpace	Set true if you want to strip the space character of the result pattern
+	
+    Return Value:
+        TRUE                        Success
+        FALSE                       Fail
+
+    Note:
+	This routine get the value with the matched key (case case-sensitive)
+	For SSID and security key related parameters, we SHALL NOT trim the space(' ') character.
+    ========================================================================
+*/
+INT RTMPGetKeyParameter(
+    IN PSTRING key,
+    OUT PSTRING dest,
+    IN INT destsize,
+    IN PSTRING buffer,
+    IN BOOLEAN bTrimSpace)
+{
+	PSTRING pMemBuf, temp_buf1 = NULL, temp_buf2 = NULL;
+	PSTRING start_ptr, end_ptr;
+	PSTRING ptr;
+	PSTRING offset = NULL;
+	INT  len, keyLen;
+
+
+	keyLen = strlen(key);
+	os_alloc_mem(NULL, (PUCHAR *)&pMemBuf, MAX_PARAM_BUFFER_SIZE  * 2);
+	if (pMemBuf == NULL)
+		return (FALSE);
+	
+	memset(pMemBuf, 0, MAX_PARAM_BUFFER_SIZE * 2);
+	temp_buf1 = pMemBuf;
+	temp_buf2 = (PSTRING)(pMemBuf + MAX_PARAM_BUFFER_SIZE);
+
+
+	//find section
+	if((offset = RTMPFindSection(buffer)) == NULL)
+	{
+		os_free_mem(NULL, (PUCHAR)pMemBuf);
+		return (FALSE);
+	}
+
+	strcpy(temp_buf1, "\n");
+	strcat(temp_buf1, key);
+	strcat(temp_buf1, "=");
+
+	//search key
+	if((start_ptr=rtstrstr(offset, temp_buf1)) == NULL)
+	{
+		os_free_mem(NULL, (PUCHAR)pMemBuf);
+		return (FALSE);
+	}
+
+	start_ptr += strlen("\n");
+	if((end_ptr = rtstrstr(start_ptr, "\n"))==NULL)
+		end_ptr = start_ptr+strlen(start_ptr);
+
+	if (end_ptr<start_ptr)
+	{
+		os_free_mem(NULL, (PUCHAR)pMemBuf);
+		return (FALSE);
+	}
+
+	NdisMoveMemory(temp_buf2, start_ptr, end_ptr-start_ptr);
+	temp_buf2[end_ptr-start_ptr]='\0';
+
+	if((start_ptr=rtstrstr(temp_buf2, "=")) == NULL)
+	{
+		os_free_mem(NULL, (PUCHAR)pMemBuf);
+		return (FALSE);
+	}
+	ptr = (start_ptr +1);
+	//trim special characters, i.e.,  TAB or space
+	while(*start_ptr != 0x00)
+	{
+		if( ((*ptr == ' ') && bTrimSpace) || (*ptr == '\t') )
+			ptr++;
+		else
+			break;
+	}
+	len = strlen(start_ptr);
+
+	memset(dest, 0x00, destsize);
+	strncpy(dest, ptr, ((len >= destsize) ? destsize: len));
+
+	os_free_mem(NULL, (PUCHAR)pMemBuf);
+	
+	return TRUE;
+}
+
+
+/*
+    ========================================================================
+
+    Routine Description:
+        Get multiple key parameter.
+
+    Arguments:
+        key                         Pointer to key string
+        dest                        Pointer to destination      
+        destsize                    The datasize of the destination
+        buffer                      Pointer to the buffer to start find the key
+
+    Return Value:
+        TRUE                        Success
+        FALSE                       Fail
+
+    Note:
+        This routine get the value with the matched key (case case-sensitive)
+    ========================================================================
+*/
+INT RTMPGetKeyParameterWithOffset(
+    IN  PSTRING   key,
+    OUT PSTRING   dest,   
+    OUT	USHORT	*end_offset,		
+    IN  INT     destsize,
+    IN  PSTRING   buffer,
+    IN	BOOLEAN	bTrimSpace)
+{
+    PSTRING temp_buf1 = NULL;
+    PSTRING temp_buf2 = NULL;
+    PSTRING start_ptr;
+    PSTRING end_ptr;
+    PSTRING ptr;
+    PSTRING offset = 0;
+    INT  len;
+
+	if (*end_offset >= MAX_INI_BUFFER_SIZE)
+		return (FALSE);
+	
+	os_alloc_mem(NULL, (PUCHAR *)&temp_buf1, MAX_PARAM_BUFFER_SIZE);
+
+	if(temp_buf1 == NULL)
+        return (FALSE);
+		
+	os_alloc_mem(NULL, (PUCHAR *)&temp_buf2, MAX_PARAM_BUFFER_SIZE);
+	if(temp_buf2 == NULL)
+	{
+		os_free_mem(NULL, (PUCHAR)temp_buf1);
+        return (FALSE);
+	}
+	
+    //find section		
+	if(*end_offset == 0)
+    {
+		if ((offset = RTMPFindSection(buffer)) == NULL)
+		{
+			os_free_mem(NULL, (PUCHAR)temp_buf1);
+	    	os_free_mem(NULL, (PUCHAR)temp_buf2);
+    	    return (FALSE);
+		}
+    }
+	else
+		offset = buffer + (*end_offset);	
+		
+    strcpy(temp_buf1, "\n");
+    strcat(temp_buf1, key);
+    strcat(temp_buf1, "=");
+
+    //search key
+    if((start_ptr=rtstrstr(offset, temp_buf1))==NULL)
+    {
+		os_free_mem(NULL, (PUCHAR)temp_buf1);
+    	os_free_mem(NULL, (PUCHAR)temp_buf2);
+        return (FALSE);
+    }
+
+    start_ptr+=strlen("\n");
+    if((end_ptr=rtstrstr(start_ptr, "\n"))==NULL)
+       end_ptr=start_ptr+strlen(start_ptr);
+	
+    if (end_ptr<start_ptr)
+    {
+		os_free_mem(NULL, (PUCHAR)temp_buf1);
+    	os_free_mem(NULL, (PUCHAR)temp_buf2);
+        return (FALSE);
+    }
+
+	*end_offset = end_ptr - buffer;
+
+    NdisMoveMemory(temp_buf2, start_ptr, end_ptr-start_ptr);
+    temp_buf2[end_ptr-start_ptr]='\0';
+    len = strlen(temp_buf2);
+    strcpy(temp_buf1, temp_buf2);
+    if((start_ptr=rtstrstr(temp_buf1, "=")) == NULL)
+    {
+		os_free_mem(NULL, (PUCHAR)temp_buf1);
+    	os_free_mem(NULL, (PUCHAR)temp_buf2);
+        return (FALSE);
+    }
+
+    strcpy(temp_buf2, start_ptr+1);
+    ptr = temp_buf2;
+    //trim space or tab
+    while(*ptr != 0x00)
+    {
+        if((bTrimSpace && (*ptr == ' ')) || (*ptr == '\t') )
+            ptr++;
+        else
+           break;
+    }
+
+    len = strlen(ptr);    
+    memset(dest, 0x00, destsize);
+    strncpy(dest, ptr, len >= destsize ?  destsize: len);
+
+	os_free_mem(NULL, (PUCHAR)temp_buf1);
+    os_free_mem(NULL, (PUCHAR)temp_buf2);
+    return TRUE;
+}
+
+
+static int rtmp_parse_key_buffer_from_file(IN  PRTMP_ADAPTER pAd,IN  PSTRING buffer,IN  ULONG KeyType,IN  INT BSSIdx,IN  INT KeyIdx)
+{
+	PSTRING		keybuff;
+	//INT			i = BSSIdx, idx = KeyIdx, retVal;
+	ULONG		KeyLen;
+	//UCHAR		CipherAlg = CIPHER_WEP64;
+	CIPHER_KEY	*pSharedKey;
+	
+	keybuff = buffer;
+	KeyLen = strlen(keybuff);
+	pSharedKey = &pAd->SharedKey[BSSIdx][KeyIdx];
+
+	if(((KeyType != 0) && (KeyType != 1)) ||
+	    ((KeyType == 0) && (KeyLen != 10) && (KeyLen != 26)) ||
+	    ((KeyType== 1) && (KeyLen != 5) && (KeyLen != 13)))
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("Key%dStr is Invalid key length(%ld) or Type(%ld)\n", 
+								KeyIdx+1, KeyLen, KeyType));
+		return FALSE;
+	}
+	else
+	{
+		return RT_CfgSetWepKey(pAd, buffer, pSharedKey, KeyIdx);
+	}
+	
+}
+
+
+static void rtmp_read_key_parms_from_file(IN  PRTMP_ADAPTER pAd, PSTRING tmpbuf, PSTRING buffer)
+{
+	STRING		tok_str[16];
+	PSTRING		macptr;						
+	INT			i = 0, idx;
+	ULONG		KeyType[MAX_MBSSID_NUM];
+	ULONG		KeyIdx;
+
+	NdisZeroMemory(KeyType, sizeof(KeyType));
+
+	//DefaultKeyID
+	if(RTMPGetKeyParameter("DefaultKeyID", tmpbuf, 25, buffer, TRUE))
+	{
+
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		{
+			KeyIdx = simple_strtol(tmpbuf, 0, 10);
+			if((KeyIdx >= 1 ) && (KeyIdx <= 4))
+				pAd->StaCfg.DefaultKeyId = (UCHAR) (KeyIdx - 1);
+			else
+				pAd->StaCfg.DefaultKeyId = 0;
+
+			DBGPRINT(RT_DEBUG_TRACE, ("DefaultKeyID(0~3)=%d\n", pAd->StaCfg.DefaultKeyId));
+		}
+#endif // CONFIG_STA_SUPPORT //		
+	}	   
+
+
+	for (idx = 0; idx < 4; idx++)
+	{
+		sprintf(tok_str, "Key%dType", idx + 1);
+		//Key1Type
+		if (RTMPGetKeyParameter(tok_str, tmpbuf, 128, buffer, TRUE))
+		{
+		    for (i = 0, macptr = rstrtok(tmpbuf,";"); macptr; macptr = rstrtok(NULL,";"), i++)
+		    {
+				/*
+					do sanity check for KeyType length;
+					or in station mode, the KeyType length > 1,
+					the code will overwrite the stack of caller
+					(RTMPSetProfileParameters) and cause srcbuf = NULL
+				*/
+				if (i < MAX_MBSSID_NUM)
+					KeyType[i] = simple_strtol(macptr, 0, 10);
+		    }
+
+#ifdef CONFIG_STA_SUPPORT
+			IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+			{
+				sprintf(tok_str, "Key%dStr", idx + 1);
+				if (RTMPGetKeyParameter(tok_str, tmpbuf, 128, buffer, FALSE))
+				{
+					rtmp_parse_key_buffer_from_file(pAd, tmpbuf, KeyType[BSS0], BSS0, idx);
+				}
+			}
+#endif // CONFIG_STA_SUPPORT //
+		}
+	}
+}
+
+
+
+#ifdef CONFIG_STA_SUPPORT
+static void rtmp_read_sta_wmm_parms_from_file(IN  PRTMP_ADAPTER pAd, char *tmpbuf, char *buffer)
+{
+	PSTRING					macptr;						
+	INT						i=0;
+	BOOLEAN					bWmmEnable = FALSE;
+	
+	//WmmCapable
+	if(RTMPGetKeyParameter("WmmCapable", tmpbuf, 32, buffer, TRUE))
+	{
+		if(simple_strtol(tmpbuf, 0, 10) != 0) //Enable
+		{
+			pAd->CommonCfg.bWmmCapable = TRUE;
+			bWmmEnable = TRUE;
+		}
+		else //Disable
+		{
+			pAd->CommonCfg.bWmmCapable = FALSE;
+		}
+		
+		DBGPRINT(RT_DEBUG_TRACE, ("WmmCapable=%d\n", pAd->CommonCfg.bWmmCapable));
+	}
+
+#ifdef QOS_DLS_SUPPORT
+	//DLSCapable
+	if(RTMPGetKeyParameter("DLSCapable", tmpbuf, 32, buffer, TRUE))
+	{
+		if(simple_strtol(tmpbuf, 0, 10) != 0)  //Enable
+		{
+			pAd->CommonCfg.bDLSCapable = TRUE;
+		}
+		else //Disable
+		{
+			pAd->CommonCfg.bDLSCapable = FALSE;
+		}
+
+		DBGPRINT(RT_DEBUG_TRACE, ("bDLSCapable=%d\n", pAd->CommonCfg.bDLSCapable));
+	}
+#endif // QOS_DLS_SUPPORT //
+
+	//AckPolicy for AC_BK, AC_BE, AC_VI, AC_VO
+	if(RTMPGetKeyParameter("AckPolicy", tmpbuf, 32, buffer, TRUE))
+	{			
+		for (i = 0, macptr = rstrtok(tmpbuf,";"); macptr; macptr = rstrtok(NULL,";"), i++)
+		{
+			pAd->CommonCfg.AckPolicy[i] = (UCHAR)simple_strtol(macptr, 0, 10);
+
+			DBGPRINT(RT_DEBUG_TRACE, ("AckPolicy[%d]=%d\n", i, pAd->CommonCfg.AckPolicy[i]));
+		}
+	}
+
+	if (bWmmEnable)
+	{
+		//APSDCapable
+		if(RTMPGetKeyParameter("APSDCapable", tmpbuf, 10, buffer, TRUE))
+		{
+			if(simple_strtol(tmpbuf, 0, 10) != 0)  //Enable
+				pAd->CommonCfg.bAPSDCapable = TRUE;
+			else
+				pAd->CommonCfg.bAPSDCapable = FALSE;
+
+			DBGPRINT(RT_DEBUG_TRACE, ("APSDCapable=%d\n", pAd->CommonCfg.bAPSDCapable));
+		}
+
+		//MaxSPLength
+		if(RTMPGetKeyParameter("MaxSPLength", tmpbuf, 10, buffer, TRUE))
+		{
+			pAd->CommonCfg.MaxSPLength = simple_strtol(tmpbuf, 0, 10);
+
+			DBGPRINT(RT_DEBUG_TRACE, ("MaxSPLength=%d\n", pAd->CommonCfg.MaxSPLength));
+		}
+
+		//APSDAC for AC_BE, AC_BK, AC_VI, AC_VO
+		if(RTMPGetKeyParameter("APSDAC", tmpbuf, 32, buffer, TRUE))
+		{
+			BOOLEAN apsd_ac[4];
+						
+			for (i = 0, macptr = rstrtok(tmpbuf,";"); macptr; macptr = rstrtok(NULL,";"), i++)
+			{
+				apsd_ac[i] = (BOOLEAN)simple_strtol(macptr, 0, 10);
+
+				DBGPRINT(RT_DEBUG_TRACE, ("APSDAC%d  %d\n", i,  apsd_ac[i]));
+			}
+					
+			pAd->CommonCfg.bAPSDAC_BE = apsd_ac[0];
+			pAd->CommonCfg.bAPSDAC_BK = apsd_ac[1];
+			pAd->CommonCfg.bAPSDAC_VI = apsd_ac[2];
+			pAd->CommonCfg.bAPSDAC_VO = apsd_ac[3];
+
+			pAd->CommonCfg.bACMAPSDTr[0] = apsd_ac[0];
+			pAd->CommonCfg.bACMAPSDTr[1] = apsd_ac[1];
+			pAd->CommonCfg.bACMAPSDTr[2] = apsd_ac[2];
+			pAd->CommonCfg.bACMAPSDTr[3] = apsd_ac[3];
+		}
+	}
+
+}
+
+#ifdef XLINK_SUPPORT
+static void rtmp_get_psp_xlink_mode_from_file(IN  PRTMP_ADAPTER pAd, char *tmpbuf, char *buffer)
+{
+	UINT32 Value = 0;
+
+	// Xlink Mode
+	if (RTMPGetKeyParameter("PSP_XLINK_MODE", tmpbuf, 32, buffer, TRUE))
+	{
+		if(simple_strtol(tmpbuf, 0, 10) != 0) // enable
+		{
+			pAd->StaCfg.PSPXlink = TRUE;
+		}
+		else // disable
+		{
+			pAd->StaCfg.PSPXlink = FALSE;
+		}
+
+		if (pAd->StaCfg.PSPXlink)
+			Value = PSPXLINK;
+		else
+			Value = STANORMAL;
+
+		RTMP_IO_WRITE32(pAd, RX_FILTR_CFG, Value);
+
+		DBGPRINT(RT_DEBUG_TRACE, ("PSP_XLINK_MODE=%d\n", pAd->StaCfg.PSPXlink));
+	}
+}
+#endif // XLINK_SUPPORT //
+#endif // CONFIG_STA_SUPPORT //
+
+
+#ifdef DOT11_N_SUPPORT
+static void HTParametersHook(
+	IN	PRTMP_ADAPTER pAd, 
+	IN	PSTRING		  pValueStr,
+	IN	PSTRING		  pInput)
+{
+	long Value;
+
+    if (RTMPGetKeyParameter("HT_PROTECT", pValueStr, 25, pInput, TRUE))
+    {
+        Value = simple_strtol(pValueStr, 0, 10);
+        if (Value == 0)
+        {
+            pAd->CommonCfg.bHTProtect = FALSE;
+        }
+        else
+        {
+            pAd->CommonCfg.bHTProtect = TRUE;
+        }
+        DBGPRINT(RT_DEBUG_TRACE, ("HT: Protection  = %s\n", (Value==0) ? "Disable" : "Enable"));
+    }
+
+
+    if (RTMPGetKeyParameter("HT_MIMOPSMode", pValueStr, 25, pInput, TRUE))
+    {
+        Value = simple_strtol(pValueStr, 0, 10);
+        if (Value > MMPS_ENABLE)
+        {
+			pAd->CommonCfg.BACapability.field.MMPSmode = MMPS_ENABLE;
+        }
+        else
+        {
+            //TODO: add mimo power saving mechanism
+            pAd->CommonCfg.BACapability.field.MMPSmode = MMPS_ENABLE;
+			//pAd->CommonCfg.BACapability.field.MMPSmode = Value;
+        }
+        DBGPRINT(RT_DEBUG_TRACE, ("HT: MIMOPS Mode  = %d\n", (INT) Value));
+    }
+
+    if (RTMPGetKeyParameter("HT_BADecline", pValueStr, 25, pInput, TRUE))
+    {
+        Value = simple_strtol(pValueStr, 0, 10);
+        if (Value == 0)
+        {
+            pAd->CommonCfg.bBADecline = FALSE;
+        }
+        else
+        {
+            pAd->CommonCfg.bBADecline = TRUE;
+        }
+        DBGPRINT(RT_DEBUG_TRACE, ("HT: BA Decline  = %s\n", (Value==0) ? "Disable" : "Enable"));
+    }
+
+
+    if (RTMPGetKeyParameter("HT_AutoBA", pValueStr, 25, pInput, TRUE))
+    {
+        Value = simple_strtol(pValueStr, 0, 10);
+        if (Value == 0)
+        {
+            pAd->CommonCfg.BACapability.field.AutoBA = FALSE;
+			pAd->CommonCfg.BACapability.field.Policy = BA_NOTUSE;
+        }
+        else
+        {
+            pAd->CommonCfg.BACapability.field.AutoBA = TRUE;
+			pAd->CommonCfg.BACapability.field.Policy = IMMED_BA;
+        }
+        pAd->CommonCfg.REGBACapability.field.AutoBA = pAd->CommonCfg.BACapability.field.AutoBA;
+		pAd->CommonCfg.REGBACapability.field.Policy = pAd->CommonCfg.BACapability.field.Policy;
+        DBGPRINT(RT_DEBUG_TRACE, ("HT: Auto BA  = %s\n", (Value==0) ? "Disable" : "Enable"));
+    }
+
+	// Tx_+HTC frame
+    if (RTMPGetKeyParameter("HT_HTC", pValueStr, 25, pInput, TRUE))
+	{
+		Value = simple_strtol(pValueStr, 0, 10);
+		if (Value == 0)
+		{
+			pAd->HTCEnable = FALSE;
+		}
+		else
+		{
+            pAd->HTCEnable = TRUE;
+		}
+		DBGPRINT(RT_DEBUG_TRACE, ("HT: Tx +HTC frame = %s\n", (Value==0) ? "Disable" : "Enable"));
+	}
+
+
+	// Reverse Direction Mechanism
+    if (RTMPGetKeyParameter("HT_RDG", pValueStr, 25, pInput, TRUE))
+	{
+		Value = simple_strtol(pValueStr, 0, 10);
+		if (Value == 0)
+		{			
+			pAd->CommonCfg.bRdg = FALSE;
+		}
+		else
+		{
+			pAd->HTCEnable = TRUE;
+            pAd->CommonCfg.bRdg = TRUE;
+		}
+		DBGPRINT(RT_DEBUG_TRACE, ("HT: RDG = %s\n", (Value==0) ? "Disable" : "Enable(+HTC)"));
+	}
+
+
+
+
+	// Tx A-MSUD ?
+    if (RTMPGetKeyParameter("HT_AMSDU", pValueStr, 25, pInput, TRUE))
+	{
+		Value = simple_strtol(pValueStr, 0, 10);
+		if (Value == 0)
+		{
+			pAd->CommonCfg.BACapability.field.AmsduEnable = FALSE;
+		}
+		else
+		{
+            pAd->CommonCfg.BACapability.field.AmsduEnable = TRUE;
+		}
+		DBGPRINT(RT_DEBUG_TRACE, ("HT: Tx A-MSDU = %s\n", (Value==0) ? "Disable" : "Enable"));
+	}
+
+	// MPDU Density
+    if (RTMPGetKeyParameter("HT_MpduDensity", pValueStr, 25, pInput, TRUE))
+	{
+		Value = simple_strtol(pValueStr, 0, 10);
+		if (Value <=7 && Value >= 0)
+		{		
+			pAd->CommonCfg.BACapability.field.MpduDensity = Value;
+			DBGPRINT(RT_DEBUG_TRACE, ("HT: MPDU Density = %d\n", (INT) Value));
+		}
+		else
+		{
+			pAd->CommonCfg.BACapability.field.MpduDensity = 4;
+			DBGPRINT(RT_DEBUG_TRACE, ("HT: MPDU Density = %d (Default)\n", 4));
+		}
+	}
+
+	// Max Rx BA Window Size
+    if (RTMPGetKeyParameter("HT_BAWinSize", pValueStr, 25, pInput, TRUE))
+	{
+		Value = simple_strtol(pValueStr, 0, 10);
+
+		if (Value >=1 && Value <= 64)
+		{		
+			pAd->CommonCfg.REGBACapability.field.RxBAWinLimit = Value;
+			pAd->CommonCfg.BACapability.field.RxBAWinLimit = Value;
+			DBGPRINT(RT_DEBUG_TRACE, ("HT: BA Windw Size = %d\n", (INT) Value));
+		}
+		else
+		{
+            pAd->CommonCfg.REGBACapability.field.RxBAWinLimit = 64;
+			pAd->CommonCfg.BACapability.field.RxBAWinLimit = 64;
+			DBGPRINT(RT_DEBUG_TRACE, ("HT: BA Windw Size = 64 (Defualt)\n"));
+		}
+
+	}
+
+	// Guard Interval
+	if (RTMPGetKeyParameter("HT_GI", pValueStr, 25, pInput, TRUE))
+	{
+		Value = simple_strtol(pValueStr, 0, 10);
+
+		if (Value == GI_400)
+		{
+			pAd->CommonCfg.RegTransmitSetting.field.ShortGI = GI_400;
+		}
+		else
+		{
+			pAd->CommonCfg.RegTransmitSetting.field.ShortGI = GI_800;
+		}
+		
+		DBGPRINT(RT_DEBUG_TRACE, ("HT: Guard Interval = %s\n", (Value==GI_400) ? "400" : "800" ));
+	}
+
+	// HT Operation Mode : Mixed Mode , Green Field
+	if (RTMPGetKeyParameter("HT_OpMode", pValueStr, 25, pInput, TRUE))
+	{
+		Value = simple_strtol(pValueStr, 0, 10);
+
+		if (Value == HTMODE_GF)
+		{
+
+			pAd->CommonCfg.RegTransmitSetting.field.HTMODE  = HTMODE_GF;
+		}
+		else
+		{
+			pAd->CommonCfg.RegTransmitSetting.field.HTMODE  = HTMODE_MM;
+		}		
+
+		DBGPRINT(RT_DEBUG_TRACE, ("HT: Operate Mode = %s\n", (Value==HTMODE_GF) ? "Green Field" : "Mixed Mode" ));
+	}
+
+	// Fixed Tx mode : CCK, OFDM
+	if (RTMPGetKeyParameter("FixedTxMode", pValueStr, 25, pInput, TRUE))
+	{
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		{
+			pAd->StaCfg.DesiredTransmitSetting.field.FixedTxMode = 
+										RT_CfgSetFixedTxPhyMode(pValueStr);
+			DBGPRINT(RT_DEBUG_TRACE, ("Fixed Tx Mode = %d\n", 
+											pAd->StaCfg.DesiredTransmitSetting.field.FixedTxMode));			
+		}
+#endif // CONFIG_STA_SUPPORT //
+	}
+
+
+	// Channel Width
+	if (RTMPGetKeyParameter("HT_BW", pValueStr, 25, pInput, TRUE))
+	{
+		Value = simple_strtol(pValueStr, 0, 10);
+
+		if (Value == BW_40)
+		{
+			pAd->CommonCfg.RegTransmitSetting.field.BW  = BW_40;
+		}
+		else
+		{
+            pAd->CommonCfg.RegTransmitSetting.field.BW  = BW_20;
+		}		
+
+#ifdef MCAST_RATE_SPECIFIC
+		pAd->CommonCfg.MCastPhyMode.field.BW = pAd->CommonCfg.RegTransmitSetting.field.BW;
+#endif // MCAST_RATE_SPECIFIC //
+
+		DBGPRINT(RT_DEBUG_TRACE, ("HT: Channel Width = %s\n", (Value==BW_40) ? "40 MHz" : "20 MHz" ));
+	}
+
+	if (RTMPGetKeyParameter("HT_EXTCHA", pValueStr, 25, pInput, TRUE))
+	{
+		Value = simple_strtol(pValueStr, 0, 10);
+
+		if (Value == 0)
+		{
+			
+			pAd->CommonCfg.RegTransmitSetting.field.EXTCHA  = EXTCHA_BELOW;
+		}
+		else
+		{
+            pAd->CommonCfg.RegTransmitSetting.field.EXTCHA = EXTCHA_ABOVE;
+		}		
+
+		DBGPRINT(RT_DEBUG_TRACE, ("HT: Ext Channel = %s\n", (Value==0) ? "BELOW" : "ABOVE" ));
+	}
+
+	// MSC
+	if (RTMPGetKeyParameter("HT_MCS", pValueStr, 50, pInput, TRUE))
+	{
+
+#ifdef CONFIG_STA_SUPPORT 	
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		{
+			Value = simple_strtol(pValueStr, 0, 10);
+
+//			if ((Value >= 0 && Value <= 15) || (Value == 32))
+			if ((Value >= 0 && Value <= 23) || (Value == 32)) // 3*3
+		{
+				pAd->StaCfg.DesiredTransmitSetting.field.MCS  = Value;
+				pAd->StaCfg.bAutoTxRateSwitch = FALSE;
+				DBGPRINT(RT_DEBUG_TRACE, ("HT: MCS = %d\n", pAd->StaCfg.DesiredTransmitSetting.field.MCS));
+		}
+		else
+		{
+				pAd->StaCfg.DesiredTransmitSetting.field.MCS  = MCS_AUTO;
+				pAd->StaCfg.bAutoTxRateSwitch = TRUE;
+				DBGPRINT(RT_DEBUG_TRACE, ("HT: MCS = AUTO\n"));
+		}
+	}
+#endif // CONFIG_STA_SUPPORT //		
+	}
+
+	// STBC 
+    if (RTMPGetKeyParameter("HT_STBC", pValueStr, 25, pInput, TRUE))
+	{
+		Value = simple_strtol(pValueStr, 0, 10);
+		if (Value == STBC_USE)
+		{		
+			pAd->CommonCfg.RegTransmitSetting.field.STBC = STBC_USE;
+		}
+		else
+		{
+			pAd->CommonCfg.RegTransmitSetting.field.STBC = STBC_NONE;
+		}
+		DBGPRINT(RT_DEBUG_TRACE, ("HT: STBC = %d\n", pAd->CommonCfg.RegTransmitSetting.field.STBC));
+	}
+
+	// 40_Mhz_Intolerant
+	if (RTMPGetKeyParameter("HT_40MHZ_INTOLERANT", pValueStr, 25, pInput, TRUE))
+	{
+		Value = simple_strtol(pValueStr, 0, 10);
+		if (Value == 0)
+		{		
+			pAd->CommonCfg.bForty_Mhz_Intolerant = FALSE;
+		}
+		else
+		{
+			pAd->CommonCfg.bForty_Mhz_Intolerant = TRUE;
+		}
+		DBGPRINT(RT_DEBUG_TRACE, ("HT: 40MHZ INTOLERANT = %d\n", pAd->CommonCfg.bForty_Mhz_Intolerant));
+	}
+	//HT_TxStream
+	if(RTMPGetKeyParameter("HT_TxStream", pValueStr, 10, pInput, TRUE))
+	{
+		switch (simple_strtol(pValueStr, 0, 10))
+		{
+			case 1:
+				pAd->CommonCfg.TxStream = 1;
+				break;
+			case 2:
+				pAd->CommonCfg.TxStream = 2;
+				break;
+			case 3: // 3*3
+			default:
+				pAd->CommonCfg.TxStream = 3;
+
+				if (pAd->MACVersion < RALINK_2883_VERSION)
+					pAd->CommonCfg.TxStream = 2; // only 2 tx streams for RT2860 series
+				break;
+		}
+		DBGPRINT(RT_DEBUG_TRACE, ("HT: Tx Stream = %d\n", pAd->CommonCfg.TxStream));
+	}
+	//HT_RxStream
+	if(RTMPGetKeyParameter("HT_RxStream", pValueStr, 10, pInput, TRUE))
+	{
+		switch (simple_strtol(pValueStr, 0, 10))
+		{
+			case 1:
+				pAd->CommonCfg.RxStream = 1;
+				break;
+			case 2:
+				pAd->CommonCfg.RxStream = 2;
+				break;
+			case 3:
+			default:
+				pAd->CommonCfg.RxStream = 3;
+
+				if (pAd->MACVersion < RALINK_2883_VERSION)
+					pAd->CommonCfg.RxStream = 2; // only 2 rx streams for RT2860 series
+				break;
+		}
+		DBGPRINT(RT_DEBUG_TRACE, ("HT: Rx Stream = %d\n", pAd->CommonCfg.RxStream));
+	}
+	// HT_DisallowTKIP
+	if (RTMPGetKeyParameter("HT_DisallowTKIP", pValueStr, 25, pInput, TRUE))
+	{
+		Value = simple_strtol(pValueStr, 0, 10);
+
+		if (Value == 1)
+		{
+			pAd->CommonCfg.HT_DisallowTKIP = TRUE;
+		}
+		else
+		{
+			pAd->CommonCfg.HT_DisallowTKIP = FALSE;
+		}		
+
+		DBGPRINT(RT_DEBUG_TRACE, ("HT: Disallow TKIP mode = %s\n", (pAd->CommonCfg.HT_DisallowTKIP == TRUE) ? "ON" : "OFF" ));
+	}
+
+#ifdef DOT11_N_SUPPORT
+#ifdef DOT11N_DRAFT3
+			if (RTMPGetKeyParameter("OBSSScanParam", pValueStr, 32, pInput, TRUE))
+			{	int ObssScanValue, idx;
+				PSTRING	macptr;	
+				for (idx = 0, macptr = rstrtok(pValueStr,";"); macptr; macptr = rstrtok(NULL,";"), idx++)
+				{
+					ObssScanValue = simple_strtol(macptr, 0, 10);
+					switch (idx)
+					{
+						case 0:
+							if (ObssScanValue < 5 || ObssScanValue > 1000)
+							{
+								DBGPRINT(RT_DEBUG_ERROR, ("Invalid OBSSScanParam for Dot11OBssScanPassiveDwell(%d), should in range 5~1000\n", ObssScanValue));
+							}
+							else
+							{
+								pAd->CommonCfg.Dot11OBssScanPassiveDwell = ObssScanValue;	// Unit : TU. 5~1000
+								DBGPRINT(RT_DEBUG_TRACE, ("OBSSScanParam for Dot11OBssScanPassiveDwell=%d\n", ObssScanValue));
+							}
+							break;
+						case 1:
+							if (ObssScanValue < 10 || ObssScanValue > 1000)
+							{
+								DBGPRINT(RT_DEBUG_ERROR, ("Invalid OBSSScanParam for Dot11OBssScanActiveDwell(%d), should in range 10~1000\n", ObssScanValue));
+							}
+							else
+							{
+								pAd->CommonCfg.Dot11OBssScanActiveDwell = ObssScanValue;	// Unit : TU. 10~1000
+								DBGPRINT(RT_DEBUG_TRACE, ("OBSSScanParam for Dot11OBssScanActiveDwell=%d\n", ObssScanValue));
+							}
+							break;
+						case 2:
+							pAd->CommonCfg.Dot11BssWidthTriggerScanInt = ObssScanValue;	// Unit : Second
+							DBGPRINT(RT_DEBUG_TRACE, ("OBSSScanParam for Dot11BssWidthTriggerScanInt=%d\n", ObssScanValue));
+							break;
+						case 3:
+							if (ObssScanValue < 200 || ObssScanValue > 10000)
+							{
+								DBGPRINT(RT_DEBUG_ERROR, ("Invalid OBSSScanParam for Dot11OBssScanPassiveTotalPerChannel(%d), should in range 200~10000\n", ObssScanValue));
+							}
+							else
+							{
+								pAd->CommonCfg.Dot11OBssScanPassiveTotalPerChannel = ObssScanValue;	// Unit : TU. 200~10000
+								DBGPRINT(RT_DEBUG_TRACE, ("OBSSScanParam for Dot11OBssScanPassiveTotalPerChannel=%d\n", ObssScanValue));
+							}
+							break;
+						case 4:
+							if (ObssScanValue < 20 || ObssScanValue > 10000)
+							{
+								DBGPRINT(RT_DEBUG_ERROR, ("Invalid OBSSScanParam for Dot11OBssScanActiveTotalPerChannel(%d), should in range 20~10000\n", ObssScanValue));
+							}
+							else
+							{
+								pAd->CommonCfg.Dot11OBssScanActiveTotalPerChannel = ObssScanValue;	// Unit : TU. 20~10000
+								DBGPRINT(RT_DEBUG_TRACE, ("OBSSScanParam for Dot11OBssScanActiveTotalPerChannel=%d\n", ObssScanValue));
+							}
+							break;
+						case 5:
+							pAd->CommonCfg.Dot11BssWidthChanTranDelayFactor = ObssScanValue;
+							DBGPRINT(RT_DEBUG_TRACE, ("OBSSScanParam for Dot11BssWidthChanTranDelayFactor=%d\n", ObssScanValue));
+							break;
+						case 6:
+							pAd->CommonCfg.Dot11OBssScanActivityThre = ObssScanValue;	// Unit : percentage
+							DBGPRINT(RT_DEBUG_TRACE, ("OBSSScanParam for Dot11BssWidthChanTranDelayFactor=%d\n", ObssScanValue));
+							break;
+					}			
+				}
+
+				if (idx != 7)
+				{
+					DBGPRINT(RT_DEBUG_ERROR, ("Wrong OBSSScanParamtetrs format in dat file!!!!! Use default value.\n"));
+
+					pAd->CommonCfg.Dot11OBssScanPassiveDwell = dot11OBSSScanPassiveDwell;	// Unit : TU. 5~1000
+					pAd->CommonCfg.Dot11OBssScanActiveDwell = dot11OBSSScanActiveDwell;	// Unit : TU. 10~1000
+					pAd->CommonCfg.Dot11BssWidthTriggerScanInt = dot11BSSWidthTriggerScanInterval;	// Unit : Second	
+					pAd->CommonCfg.Dot11OBssScanPassiveTotalPerChannel = dot11OBSSScanPassiveTotalPerChannel;	// Unit : TU. 200~10000
+					pAd->CommonCfg.Dot11OBssScanActiveTotalPerChannel = dot11OBSSScanActiveTotalPerChannel;	// Unit : TU. 20~10000
+					pAd->CommonCfg.Dot11BssWidthChanTranDelayFactor = dot11BSSWidthChannelTransactionDelayFactor;
+					pAd->CommonCfg.Dot11OBssScanActivityThre = dot11BSSScanActivityThreshold;	// Unit : percentage
+				}
+				pAd->CommonCfg.Dot11BssWidthChanTranDelay = (pAd->CommonCfg.Dot11BssWidthTriggerScanInt * pAd->CommonCfg.Dot11BssWidthChanTranDelayFactor);
+							DBGPRINT(RT_DEBUG_TRACE, ("OBSSScanParam for Dot11BssWidthChanTranDelay=%ld\n", pAd->CommonCfg.Dot11BssWidthChanTranDelay));
+			}
+
+			if (RTMPGetKeyParameter("HT_BSSCoexistence", pValueStr, 25, pInput, TRUE))
+			{
+				Value = simple_strtol(pValueStr, 0, 10);
+				pAd->CommonCfg.bBssCoexEnable = ((Value == 1) ? TRUE : FALSE);
+
+				DBGPRINT(RT_DEBUG_TRACE, ("HT: 20/40 BssCoexSupport = %s\n", (pAd->CommonCfg.bBssCoexEnable == TRUE) ? "ON" : "OFF" ));
+			}
+#endif // DOT11N_DRAFT3 //
+
+#endif // DOT11_N_SUPPORT //
+
+	//2008/11/05:KH add to support Antenna power-saving of AP-->
+}
+#endif // DOT11_N_SUPPORT //
+
+
+NDIS_STATUS	RTMPSetProfileParameters(
+	IN RTMP_ADAPTER *pAd,
+	IN PSTRING	pBuffer)
+{
+	PSTRING					tmpbuf;
+	ULONG					RtsThresh;
+	ULONG					FragThresh;
+	PSTRING					macptr;							
+	INT						i = 0, retval;
+	tmpbuf = kmalloc(MAX_PARAM_BUFFER_SIZE, MEM_ALLOC_FLAG);
+	if(tmpbuf == NULL)
+		return NDIS_STATUS_FAILURE;
+	
+	do
+	{
+		// set file parameter to portcfg
+		if (RTMPGetKeyParameter("MacAddress", tmpbuf, 25, pBuffer, TRUE))
+		{					
+			retval = RT_CfgSetMacAddress(pAd, tmpbuf);
+			if (retval)
+				DBGPRINT(RT_DEBUG_TRACE, ("MacAddress = %02x:%02x:%02x:%02x:%02x:%02x\n", 
+											PRINT_MAC(pAd->CurrentAddress)));
+		}
+		//CountryRegion
+		if(RTMPGetKeyParameter("CountryRegion", tmpbuf, 25, pBuffer, TRUE))
+		{
+			retval = RT_CfgSetCountryRegion(pAd, tmpbuf, BAND_24G);
+			DBGPRINT(RT_DEBUG_TRACE, ("CountryRegion=%d\n", pAd->CommonCfg.CountryRegion));
+		}
+		//CountryRegionABand
+		if(RTMPGetKeyParameter("CountryRegionABand", tmpbuf, 25, pBuffer, TRUE))
+		{
+			retval = RT_CfgSetCountryRegion(pAd, tmpbuf, BAND_5G);
+			DBGPRINT(RT_DEBUG_TRACE, ("CountryRegionABand=%d\n", pAd->CommonCfg.CountryRegionForABand));
+		}
+#ifdef RTMP_EFUSE_SUPPORT
+#ifdef RT30xx
+#ifdef RALINK_ATE
+		//EfuseBufferMode
+		if(RTMPGetKeyParameter("EfuseBufferMode", tmpbuf, 25, pBuffer, TRUE))
+		{
+			pAd->bEEPROMFile = (UCHAR) simple_strtol(tmpbuf, 0, 10);
+			DBGPRINT(RT_DEBUG_TRACE, ("EfuseBufferMode=%d\n", pAd->bUseEfuse));
+		}
+#endif // RALINK_ATE //
+#endif // RT30xx //
+#endif // RTMP_EFUSE_SUPPORT //
+		//CountryCode
+		if(RTMPGetKeyParameter("CountryCode", tmpbuf, 25, pBuffer, TRUE))
+		{
+			NdisMoveMemory(pAd->CommonCfg.CountryCode, tmpbuf , 2);
+#ifdef CONFIG_STA_SUPPORT
+#ifdef EXT_BUILD_CHANNEL_LIST
+			IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+				NdisMoveMemory(pAd->StaCfg.StaOriCountryCode, tmpbuf , 2);
+#endif // EXT_BUILD_CHANNEL_LIST //
+#endif // CONFIG_STA_SUPPORT //
+			if (strlen((PSTRING) pAd->CommonCfg.CountryCode) != 0)
+			{
+				pAd->CommonCfg.bCountryFlag = TRUE;
+			}
+			DBGPRINT(RT_DEBUG_TRACE, ("CountryCode=%s\n", pAd->CommonCfg.CountryCode));
+		}
+
+#ifdef EXT_BUILD_CHANNEL_LIST
+		//ChannelGeography
+		if(RTMPGetKeyParameter("ChannelGeography", tmpbuf, 25, pBuffer, TRUE))
+		{
+			UCHAR Geography = (UCHAR) simple_strtol(tmpbuf, 0, 10);
+			if (Geography <= BOTH)
+			{
+				pAd->CommonCfg.Geography = Geography;
+				pAd->CommonCfg.CountryCode[2] =
+					(pAd->CommonCfg.Geography == BOTH) ? ' ' : ((pAd->CommonCfg.Geography == IDOR) ? 'I' : 'O');
+#ifdef CONFIG_STA_SUPPORT
+#ifdef EXT_BUILD_CHANNEL_LIST
+				IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+					pAd->StaCfg.StaOriGeography = pAd->CommonCfg.Geography;
+#endif // EXT_BUILD_CHANNEL_LIST //
+#endif // CONFIG_STA_SUPPORT //							
+				DBGPRINT(RT_DEBUG_TRACE, ("ChannelGeography=%d\n", pAd->CommonCfg.Geography));
+			}
+		}
+		else
+		{
+			pAd->CommonCfg.Geography = BOTH;
+			pAd->CommonCfg.CountryCode[2] = ' ';
+		}
+#endif // EXT_BUILD_CHANNEL_LIST //
+
+
+
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		{
+			//SSID
+			if (RTMPGetKeyParameter("SSID", tmpbuf, 256, pBuffer, FALSE))
+			{
+				if (strlen(tmpbuf) <= 32)
+				{
+					pAd->CommonCfg.SsidLen = (UCHAR) strlen(tmpbuf);
+					NdisZeroMemory(pAd->CommonCfg.Ssid, NDIS_802_11_LENGTH_SSID);
+					NdisMoveMemory(pAd->CommonCfg.Ssid, tmpbuf, pAd->CommonCfg.SsidLen);
+					pAd->CommonCfg.LastSsidLen= pAd->CommonCfg.SsidLen;
+					NdisZeroMemory(pAd->CommonCfg.LastSsid, NDIS_802_11_LENGTH_SSID);
+					NdisMoveMemory(pAd->CommonCfg.LastSsid, tmpbuf, pAd->CommonCfg.LastSsidLen);
+					pAd->MlmeAux.AutoReconnectSsidLen = pAd->CommonCfg.SsidLen;
+					NdisZeroMemory(pAd->MlmeAux.AutoReconnectSsid, NDIS_802_11_LENGTH_SSID);
+					NdisMoveMemory(pAd->MlmeAux.AutoReconnectSsid, tmpbuf, pAd->MlmeAux.AutoReconnectSsidLen);
+					pAd->MlmeAux.SsidLen = pAd->CommonCfg.SsidLen;
+					NdisZeroMemory(pAd->MlmeAux.Ssid, NDIS_802_11_LENGTH_SSID);
+					NdisMoveMemory(pAd->MlmeAux.Ssid, tmpbuf, pAd->MlmeAux.SsidLen);
+					DBGPRINT(RT_DEBUG_TRACE, ("%s::(SSID=%s)\n", __FUNCTION__, tmpbuf));
+				}
+			}
+		}
+#endif // CONFIG_STA_SUPPORT //
+
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		{
+			//NetworkType
+			if (RTMPGetKeyParameter("NetworkType", tmpbuf, 25, pBuffer, TRUE))
+			{
+				pAd->bConfigChanged = TRUE;
+				if (strcmp(tmpbuf, "Adhoc") == 0)
+					pAd->StaCfg.BssType = BSS_ADHOC;
+				else //Default Infrastructure mode
+					pAd->StaCfg.BssType = BSS_INFRA;
+				// Reset Ralink supplicant to not use, it will be set to start when UI set PMK key
+				pAd->StaCfg.WpaState = SS_NOTUSE;
+				DBGPRINT(RT_DEBUG_TRACE, ("%s::(NetworkType=%d)\n", __FUNCTION__, pAd->StaCfg.BssType));
+			}
+		}
+#endif // CONFIG_STA_SUPPORT //				
+		//Channel
+		if(RTMPGetKeyParameter("Channel", tmpbuf, 10, pBuffer, TRUE))
+		{
+			pAd->CommonCfg.Channel = (UCHAR) simple_strtol(tmpbuf, 0, 10);
+			DBGPRINT(RT_DEBUG_TRACE, ("Channel=%d\n", pAd->CommonCfg.Channel));
+		}
+		//WirelessMode
+		if(RTMPGetKeyParameter("WirelessMode", tmpbuf, 10, pBuffer, TRUE))
+		{
+			RT_CfgSetWirelessMode(pAd, tmpbuf);
+			DBGPRINT(RT_DEBUG_TRACE, ("PhyMode=%d\n", pAd->CommonCfg.PhyMode));
+		}
+	    //BasicRate
+		if(RTMPGetKeyParameter("BasicRate", tmpbuf, 10, pBuffer, TRUE))
+		{
+			pAd->CommonCfg.BasicRateBitmap = (ULONG) simple_strtol(tmpbuf, 0, 10);
+			DBGPRINT(RT_DEBUG_TRACE, ("BasicRate=%ld\n", pAd->CommonCfg.BasicRateBitmap));
+		}
+		//BeaconPeriod
+		if(RTMPGetKeyParameter("BeaconPeriod", tmpbuf, 10, pBuffer, TRUE))
+		{
+			USHORT bcn_val = (USHORT) simple_strtol(tmpbuf, 0, 10);
+
+			/* The acceptable is 20~1000 ms. Refer to WiFi test plan. */
+			if (bcn_val >= 20 && bcn_val <= 1000)	
+				pAd->CommonCfg.BeaconPeriod = bcn_val;
+			else
+				pAd->CommonCfg.BeaconPeriod = 100;	// Default value
+			
+			DBGPRINT(RT_DEBUG_TRACE, ("BeaconPeriod=%d\n", pAd->CommonCfg.BeaconPeriod));
+		}
+
+
+	    //TxPower
+		if(RTMPGetKeyParameter("TxPower", tmpbuf, 10, pBuffer, TRUE))
+		{
+			pAd->CommonCfg.TxPowerPercentage = (ULONG) simple_strtol(tmpbuf, 0, 10);
+#ifdef CONFIG_STA_SUPPORT
+			IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+				pAd->CommonCfg.TxPowerDefault = pAd->CommonCfg.TxPowerPercentage;
+#endif // CONFIG_STA_SUPPORT //
+			DBGPRINT(RT_DEBUG_TRACE, ("TxPower=%ld\n", pAd->CommonCfg.TxPowerPercentage));
+		}
+		//BGProtection
+		if(RTMPGetKeyParameter("BGProtection", tmpbuf, 10, pBuffer, TRUE))
+		{
+	//#if 0	//#ifndef WIFI_TEST
+	//		pAd->CommonCfg.UseBGProtection = 2;// disable b/g protection for throughput test
+	//#else
+			switch (simple_strtol(tmpbuf, 0, 10))
+			{
+				case 1: //Always On
+					pAd->CommonCfg.UseBGProtection = 1;
+					break;
+				case 2: //Always OFF
+					pAd->CommonCfg.UseBGProtection = 2;
+					break;
+				case 0: //AUTO
+				default:
+					pAd->CommonCfg.UseBGProtection = 0;
+					break;
+			}
+	//#endif
+			DBGPRINT(RT_DEBUG_TRACE, ("BGProtection=%ld\n", pAd->CommonCfg.UseBGProtection));
+		}
+
+		//TxPreamble
+		if(RTMPGetKeyParameter("TxPreamble", tmpbuf, 10, pBuffer, TRUE))
+		{
+			switch (simple_strtol(tmpbuf, 0, 10))
+			{
+				case Rt802_11PreambleShort:
+					pAd->CommonCfg.TxPreamble = Rt802_11PreambleShort;
+					break;
+				case Rt802_11PreambleLong:
+				default:
+					pAd->CommonCfg.TxPreamble = Rt802_11PreambleLong;
+					break;
+			}
+			DBGPRINT(RT_DEBUG_TRACE, ("TxPreamble=%ld\n", pAd->CommonCfg.TxPreamble));
+		}
+		//RTSThreshold
+		if(RTMPGetKeyParameter("RTSThreshold", tmpbuf, 10, pBuffer, TRUE))
+		{
+			RtsThresh = simple_strtol(tmpbuf, 0, 10);
+			if( (RtsThresh >= 1) && (RtsThresh <= MAX_RTS_THRESHOLD) )
+				pAd->CommonCfg.RtsThreshold  = (USHORT)RtsThresh;
+			else
+				pAd->CommonCfg.RtsThreshold = MAX_RTS_THRESHOLD;
+			
+			DBGPRINT(RT_DEBUG_TRACE, ("RTSThreshold=%d\n", pAd->CommonCfg.RtsThreshold));
+		}
+		//FragThreshold
+		if(RTMPGetKeyParameter("FragThreshold", tmpbuf, 10, pBuffer, TRUE))
+		{		
+			FragThresh = simple_strtol(tmpbuf, 0, 10);
+			pAd->CommonCfg.bUseZeroToDisableFragment = FALSE;
+
+			if (FragThresh > MAX_FRAG_THRESHOLD || FragThresh < MIN_FRAG_THRESHOLD)
+			{ //illegal FragThresh so we set it to default
+				pAd->CommonCfg.FragmentThreshold = MAX_FRAG_THRESHOLD;
+				pAd->CommonCfg.bUseZeroToDisableFragment = TRUE;
+			}
+			else if (FragThresh % 2 == 1)
+			{
+				// The length of each fragment shall always be an even number of octets, except for the last fragment
+				// of an MSDU or MMPDU, which may be either an even or an odd number of octets.
+				pAd->CommonCfg.FragmentThreshold = (USHORT)(FragThresh - 1);
+			}
+			else
+			{
+				pAd->CommonCfg.FragmentThreshold = (USHORT)FragThresh;
+			}
+			//pAd->CommonCfg.AllowFragSize = (pAd->CommonCfg.FragmentThreshold) - LENGTH_802_11 - LENGTH_CRC;
+			DBGPRINT(RT_DEBUG_TRACE, ("FragThreshold=%d\n", pAd->CommonCfg.FragmentThreshold));
+		}
+		//TxBurst
+		if(RTMPGetKeyParameter("TxBurst", tmpbuf, 10, pBuffer, TRUE))
+		{
+	//#ifdef WIFI_TEST
+	//						pAd->CommonCfg.bEnableTxBurst = FALSE;
+	//#else
+			if(simple_strtol(tmpbuf, 0, 10) != 0)  //Enable
+				pAd->CommonCfg.bEnableTxBurst = TRUE;
+			else //Disable
+				pAd->CommonCfg.bEnableTxBurst = FALSE;
+	//#endif
+			DBGPRINT(RT_DEBUG_TRACE, ("TxBurst=%d\n", pAd->CommonCfg.bEnableTxBurst));
+		}
+
+#ifdef AGGREGATION_SUPPORT
+		//PktAggregate
+		if(RTMPGetKeyParameter("PktAggregate", tmpbuf, 10, pBuffer, TRUE))
+		{
+			if(simple_strtol(tmpbuf, 0, 10) != 0)  //Enable
+				pAd->CommonCfg.bAggregationCapable = TRUE;
+			else //Disable
+				pAd->CommonCfg.bAggregationCapable = FALSE;
+#ifdef PIGGYBACK_SUPPORT
+			pAd->CommonCfg.bPiggyBackCapable = pAd->CommonCfg.bAggregationCapable;
+#endif // PIGGYBACK_SUPPORT //
+			DBGPRINT(RT_DEBUG_TRACE, ("PktAggregate=%d\n", pAd->CommonCfg.bAggregationCapable));
+		}
+#else
+		pAd->CommonCfg.bAggregationCapable = FALSE;
+		pAd->CommonCfg.bPiggyBackCapable = FALSE;
+#endif // AGGREGATION_SUPPORT //
+
+		// WmmCapable
+
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		{
+			rtmp_read_sta_wmm_parms_from_file(pAd, tmpbuf, pBuffer);
+#ifdef XLINK_SUPPORT
+			rtmp_get_psp_xlink_mode_from_file(pAd, tmpbuf, pBuffer);
+#endif // XLINK_SUPPORT //
+		}
+#endif // CONFIG_STA_SUPPORT //
+
+		//ShortSlot
+		if(RTMPGetKeyParameter("ShortSlot", tmpbuf, 10, pBuffer, TRUE))
+		{
+			RT_CfgSetShortSlot(pAd, tmpbuf);
+			DBGPRINT(RT_DEBUG_TRACE, ("ShortSlot=%d\n", pAd->CommonCfg.bUseShortSlotTime));
+		}
+		//IEEE80211H
+		if(RTMPGetKeyParameter("IEEE80211H", tmpbuf, 10, pBuffer, TRUE))
+		{
+		    for (i = 0, macptr = rstrtok(tmpbuf,";"); macptr; macptr = rstrtok(NULL,";"), i++)
+		    {
+				if(simple_strtol(macptr, 0, 10) != 0)  //Enable
+					pAd->CommonCfg.bIEEE80211H = TRUE;
+				else //Disable
+					pAd->CommonCfg.bIEEE80211H = FALSE;
+
+				DBGPRINT(RT_DEBUG_TRACE, ("IEEE80211H=%d\n", pAd->CommonCfg.bIEEE80211H));
+		    }
+		}
+		//CSPeriod
+		if(RTMPGetKeyParameter("CSPeriod", tmpbuf, 10, pBuffer, TRUE))
+		{
+		    if(simple_strtol(tmpbuf, 0, 10) != 0)
+				pAd->CommonCfg.RadarDetect.CSPeriod = simple_strtol(tmpbuf, 0, 10);
+			else
+				pAd->CommonCfg.RadarDetect.CSPeriod = 0;
+
+				DBGPRINT(RT_DEBUG_TRACE, ("CSPeriod=%d\n", pAd->CommonCfg.RadarDetect.CSPeriod));
+		}
+
+#ifdef MERGE_ARCH_TEAM
+		// DfsLowerLimit
+		if(RTMPGetKeyParameter("DfsLowerLimit", tmpbuf, 10, pBuffer, TRUE))
+		{
+			if(simple_strtol(tmpbuf, 0, 10) != 0)
+				pAd->CommonCfg.RadarDetect.DfsLowerLimit = simple_strtol(tmpbuf, 0, 10);
+
+			DBGPRINT(RT_DEBUG_TRACE, ("DfsLowerLimit=%ld\n", pAd->CommonCfg.RadarDetect.DfsLowerLimit));
+		}
+		
+		// DfsUpperLimit
+		if(RTMPGetKeyParameter("DfsUpperLimit", tmpbuf, 10, pBuffer, TRUE))
+		{
+			if(simple_strtol(tmpbuf, 0, 10) != 0)
+				pAd->CommonCfg.RadarDetect.DfsUpperLimit = simple_strtol(tmpbuf, 0, 10);
+
+			DBGPRINT(RT_DEBUG_TRACE, ("DfsUpperLimit=%ld\n", pAd->CommonCfg.RadarDetect.DfsUpperLimit));
+		}
+
+		// FixDfsLimit
+		if(RTMPGetKeyParameter("FixDfsLimit", tmpbuf, 10, pBuffer, TRUE))
+		{
+		    if(simple_strtol(tmpbuf, 0, 10) != 0)
+				pAd->CommonCfg.RadarDetect.FixDfsLimit = TRUE;
+			else
+				pAd->CommonCfg.RadarDetect.FixDfsLimit = FALSE;
+
+			DBGPRINT(RT_DEBUG_TRACE, ("FixDfsLimit=%d\n", pAd->CommonCfg.RadarDetect.FixDfsLimit));
+		}
+
+		// LongPulseRadarTh
+		if(RTMPGetKeyParameter("LongPulseRadarTh", tmpbuf, 10, pBuffer, TRUE))
+		{
+		    if(simple_strtol(tmpbuf, 0, 10) != 0)
+				pAd->CommonCfg.RadarDetect.LongPulseRadarTh = simple_strtol(tmpbuf, 0, 10);
+
+			DBGPRINT(RT_DEBUG_TRACE, ("LongPulseRadarTh=%d\n", pAd->CommonCfg.RadarDetect.LongPulseRadarTh));
+		}
+
+		// AvgRssiReq
+		if(RTMPGetKeyParameter("AvgRssiReq", tmpbuf, 10, pBuffer, TRUE))
+		{
+			if(simple_strtol(tmpbuf, 0, 10) != 0)
+				pAd->CommonCfg.RadarDetect.AvgRssiReq = simple_strtol(tmpbuf, 0, 10);
+
+			DBGPRINT(RT_DEBUG_TRACE, ("AvgRssiReq=%d\n", pAd->CommonCfg.RadarDetect.AvgRssiReq));
+		}
+
+#endif // MERGE_ARCH_TEAM //
+
+		//RDRegion
+		if(RTMPGetKeyParameter("RDRegion", tmpbuf, 128, pBuffer, TRUE))
+		{
+						RADAR_DETECT_STRUCT	*pRadarDetect = &pAd->CommonCfg.RadarDetect;
+			if ((strncmp(tmpbuf, "JAP_W53", 7) == 0) || (strncmp(tmpbuf, "jap_w53", 7) == 0))
+			{
+							pRadarDetect->RDDurRegion = JAP_W53;
+							pRadarDetect->DfsSessionTime = 15;
+			}
+			else if ((strncmp(tmpbuf, "JAP_W56", 7) == 0) || (strncmp(tmpbuf, "jap_w56", 7) == 0))
+			{
+							pRadarDetect->RDDurRegion = JAP_W56;
+							pRadarDetect->DfsSessionTime = 13;
+			}
+			else if ((strncmp(tmpbuf, "JAP", 3) == 0) || (strncmp(tmpbuf, "jap", 3) == 0))
+			{
+							pRadarDetect->RDDurRegion = JAP;
+							pRadarDetect->DfsSessionTime = 5;
+			}
+			else  if ((strncmp(tmpbuf, "FCC", 3) == 0) || (strncmp(tmpbuf, "fcc", 3) == 0))
+			{
+							pRadarDetect->RDDurRegion = FCC;
+							pRadarDetect->DfsSessionTime = 5;
+#ifdef DFS_FCC_BW40_FIX
+							pRadarDetect->DfsSessionFccOff = 0;
+#endif // DFS_FCC_BW40_FIX //
+			}
+			else if ((strncmp(tmpbuf, "CE", 2) == 0) || (strncmp(tmpbuf, "ce", 2) == 0))
+			{
+							pRadarDetect->RDDurRegion = CE;
+							pRadarDetect->DfsSessionTime = 13;
+			}
+			else
+			{
+							pRadarDetect->RDDurRegion = CE;
+							pRadarDetect->DfsSessionTime = 13;
+			}
+
+						DBGPRINT(RT_DEBUG_TRACE, ("RDRegion=%d\n", pRadarDetect->RDDurRegion));
+		}
+		else
+		{
+			pAd->CommonCfg.RadarDetect.RDDurRegion = CE;
+			pAd->CommonCfg.RadarDetect.DfsSessionTime = 13;
+		}
+
+#ifdef SYSTEM_LOG_SUPPORT
+		//WirelessEvent
+		if(RTMPGetKeyParameter("WirelessEvent", tmpbuf, 10, pBuffer, TRUE))
+		{				
+#if WIRELESS_EXT >= 15
+		    if(simple_strtol(tmpbuf, 0, 10) != 0)
+				pAd->CommonCfg.bWirelessEvent = TRUE;
+			else
+				pAd->CommonCfg.bWirelessEvent = FALSE;	// disable
+#else
+			pAd->CommonCfg.bWirelessEvent = FALSE;	// disable
+#endif
+				DBGPRINT(RT_DEBUG_TRACE, ("WirelessEvent=%d\n", pAd->CommonCfg.bWirelessEvent));
+		}
+#endif // SYSTEM_LOG_SUPPORT //
+
+			
+		//AuthMode
+		if(RTMPGetKeyParameter("AuthMode", tmpbuf, 128, pBuffer, TRUE))
+		{
+#ifdef CONFIG_STA_SUPPORT
+			IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+			{
+				if ((strcmp(tmpbuf, "WEPAUTO") == 0) || (strcmp(tmpbuf, "wepauto") == 0))
+	                            pAd->StaCfg.AuthMode = Ndis802_11AuthModeAutoSwitch;
+	                        else if ((strcmp(tmpbuf, "SHARED") == 0) || (strcmp(tmpbuf, "shared") == 0))
+	                            pAd->StaCfg.AuthMode = Ndis802_11AuthModeShared;
+	                        else if ((strcmp(tmpbuf, "WPAPSK") == 0) || (strcmp(tmpbuf, "wpapsk") == 0))
+	                            pAd->StaCfg.AuthMode = Ndis802_11AuthModeWPAPSK;
+	                        else if ((strcmp(tmpbuf, "WPANONE") == 0) || (strcmp(tmpbuf, "wpanone") == 0))
+	                            pAd->StaCfg.AuthMode = Ndis802_11AuthModeWPANone;
+	                        else if ((strcmp(tmpbuf, "WPA2PSK") == 0) || (strcmp(tmpbuf, "wpa2psk") == 0))
+							    pAd->StaCfg.AuthMode = Ndis802_11AuthModeWPA2PSK;
+#ifdef WPA_SUPPLICANT_SUPPORT							
+							else if ((strcmp(tmpbuf, "WPA") == 0) || (strcmp(tmpbuf, "wpa") == 0))
+			                    pAd->StaCfg.AuthMode = Ndis802_11AuthModeWPA;
+							else if ((strcmp(tmpbuf, "WPA2") == 0) || (strcmp(tmpbuf, "wpa2") == 0))
+							    pAd->StaCfg.AuthMode = Ndis802_11AuthModeWPA2;  
+#endif // WPA_SUPPLICANT_SUPPORT //
+	                        else
+	                            pAd->StaCfg.AuthMode = Ndis802_11AuthModeOpen;
+
+	                        pAd->StaCfg.PortSecured = WPA_802_1X_PORT_NOT_SECURED;
+
+				DBGPRINT(RT_DEBUG_TRACE, ("%s::(AuthMode=%d)\n", __FUNCTION__, pAd->StaCfg.AuthMode));
+			}
+#endif // CONFIG_STA_SUPPORT //
+		}
+		//EncrypType
+		if(RTMPGetKeyParameter("EncrypType", tmpbuf, 128, pBuffer, TRUE))
+		{
+
+#ifdef CONFIG_STA_SUPPORT 
+			IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+			{
+				if ((strcmp(tmpbuf, "WEP") == 0) || (strcmp(tmpbuf, "wep") == 0))						
+					pAd->StaCfg.WepStatus	= Ndis802_11WEPEnabled;													
+				else if ((strcmp(tmpbuf, "TKIP") == 0) || (strcmp(tmpbuf, "tkip") == 0))						
+					pAd->StaCfg.WepStatus	= Ndis802_11Encryption2Enabled;													
+				else if ((strcmp(tmpbuf, "AES") == 0) || (strcmp(tmpbuf, "aes") == 0))						
+					pAd->StaCfg.WepStatus	= Ndis802_11Encryption3Enabled;														 
+				else						
+					pAd->StaCfg.WepStatus	= Ndis802_11WEPDisabled;													
+
+				// Update all wepstatus related
+				pAd->StaCfg.PairCipher		= pAd->StaCfg.WepStatus;
+				pAd->StaCfg.GroupCipher 	= pAd->StaCfg.WepStatus;
+				pAd->StaCfg.OrigWepStatus 	= pAd->StaCfg.WepStatus; 
+				pAd->StaCfg.bMixCipher 		= FALSE;	
+				
+				//RTMPMakeRSNIE(pAd, pAd->StaCfg.AuthMode, pAd->StaCfg.WepStatus, 0);
+				DBGPRINT(RT_DEBUG_TRACE, ("%s::(EncrypType=%d)\n", __FUNCTION__, pAd->StaCfg.WepStatus));
+			}
+#endif // CONFIG_STA_SUPPORT //
+		}
+
+
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		{
+			if(RTMPGetKeyParameter("WPAPSK", tmpbuf, 512, pBuffer, FALSE))
+			{						
+				int     ret = TRUE;
+
+				tmpbuf[strlen(tmpbuf)] = '\0'; // make STA can process .$^& for WPAPSK input 
+
+				if ((pAd->StaCfg.AuthMode != Ndis802_11AuthModeWPAPSK) &&
+					(pAd->StaCfg.AuthMode != Ndis802_11AuthModeWPA2PSK) &&
+					(pAd->StaCfg.AuthMode != Ndis802_11AuthModeWPANone) 
+					)
+				{
+					ret = FALSE;
+				}
+				else
+				{
+					ret = RT_CfgSetWPAPSKKey(pAd, tmpbuf, (PUCHAR)pAd->CommonCfg.Ssid, pAd->CommonCfg.SsidLen, pAd->StaCfg.PMK);
+				}
+				
+				if (ret == TRUE)
+	            		{
+	            	RTMPZeroMemory(pAd->StaCfg.WpaPassPhrase, 64);
+	            	RTMPMoveMemory(pAd->StaCfg.WpaPassPhrase, tmpbuf, strlen(tmpbuf));
+					pAd->StaCfg.WpaPassPhraseLen= strlen(tmpbuf);
+					
+	            			if ((pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPAPSK) ||
+						(pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2PSK))
+					{
+						// Start STA supplicant state machine
+						pAd->StaCfg.WpaState = SS_START;
+					}
+					else if (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPANone)
+					{
+						pAd->StaCfg.WpaState = SS_NOTUSE;
+					}
+					DBGPRINT(RT_DEBUG_TRACE, ("%s::(WPAPSK=%s)\n", __FUNCTION__, tmpbuf));
+				} 
+			}
+		}
+#endif // CONFIG_STA_SUPPORT //													
+
+		//DefaultKeyID, KeyType, KeyStr
+		rtmp_read_key_parms_from_file(pAd, tmpbuf, pBuffer);
+
+
+
+#ifdef DOT11_N_SUPPORT
+		HTParametersHook(pAd, tmpbuf, pBuffer);
+#endif // DOT11_N_SUPPORT //
+
+
+#ifdef CARRIER_DETECTION_SUPPORT
+			//CarrierDetect
+			if(RTMPGetKeyParameter("CarrierDetect", tmpbuf, 128, pBuffer, TRUE))
+			{
+				if ((strncmp(tmpbuf, "0", 1) == 0))
+					pAd->CommonCfg.CarrierDetect.Enable = FALSE;
+				else if ((strncmp(tmpbuf, "1", 1) == 0))
+					pAd->CommonCfg.CarrierDetect.Enable = TRUE;
+				else
+					pAd->CommonCfg.CarrierDetect.Enable = FALSE;
+
+				DBGPRINT(RT_DEBUG_TRACE, ("CarrierDetect.Enable=%d\n", pAd->CommonCfg.CarrierDetect.Enable));
+			}
+			else
+				pAd->CommonCfg.CarrierDetect.Enable = FALSE;
+#endif // CARRIER_DETECTION_SUPPORT //
+
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		{
+			//PSMode
+			if (RTMPGetKeyParameter("PSMode", tmpbuf, 10, pBuffer, TRUE))
+			{
+				if (pAd->StaCfg.BssType == BSS_INFRA)
+				{
+					if ((strcmp(tmpbuf, "MAX_PSP") == 0) || (strcmp(tmpbuf, "max_psp") == 0))
+					{
+						// do NOT turn on PSM bit here, wait until MlmeCheckForPsmChange()
+						// to exclude certain situations.
+						//	   MlmeSetPsm(pAd, PWR_SAVE);
+						OPSTATUS_SET_FLAG(pAd, fOP_STATUS_RECEIVE_DTIM);
+						if (pAd->StaCfg.bWindowsACCAMEnable == FALSE)
+							pAd->StaCfg.WindowsPowerMode = Ndis802_11PowerModeMAX_PSP;
+						pAd->StaCfg.WindowsBatteryPowerMode = Ndis802_11PowerModeMAX_PSP;
+						pAd->StaCfg.DefaultListenCount = 5;
+					}							
+					else if ((strcmp(tmpbuf, "Fast_PSP") == 0) || (strcmp(tmpbuf, "fast_psp") == 0) 
+						|| (strcmp(tmpbuf, "FAST_PSP") == 0))
+					{
+						// do NOT turn on PSM bit here, wait until MlmeCheckForPsmChange()
+						// to exclude certain situations.
+						OPSTATUS_SET_FLAG(pAd, fOP_STATUS_RECEIVE_DTIM);
+						if (pAd->StaCfg.bWindowsACCAMEnable == FALSE)
+							pAd->StaCfg.WindowsPowerMode = Ndis802_11PowerModeFast_PSP;
+						pAd->StaCfg.WindowsBatteryPowerMode = Ndis802_11PowerModeFast_PSP;
+						pAd->StaCfg.DefaultListenCount = 3;
+					}
+					else if ((strcmp(tmpbuf, "Legacy_PSP") == 0) || (strcmp(tmpbuf, "legacy_psp") == 0) 
+						|| (strcmp(tmpbuf, "LEGACY_PSP") == 0))
+					{
+						// do NOT turn on PSM bit here, wait until MlmeCheckForPsmChange()
+						// to exclude certain situations.
+						OPSTATUS_SET_FLAG(pAd, fOP_STATUS_RECEIVE_DTIM);
+						if (pAd->StaCfg.bWindowsACCAMEnable == FALSE)
+							pAd->StaCfg.WindowsPowerMode = Ndis802_11PowerModeLegacy_PSP;
+						pAd->StaCfg.WindowsBatteryPowerMode = Ndis802_11PowerModeLegacy_PSP;
+						pAd->StaCfg.DefaultListenCount = 3;
+					}
+					else
+					{ //Default Ndis802_11PowerModeCAM
+						// clear PSM bit immediately
+						RTMP_SET_PSM_BIT(pAd, PWR_ACTIVE);
+						OPSTATUS_SET_FLAG(pAd, fOP_STATUS_RECEIVE_DTIM);
+						if (pAd->StaCfg.bWindowsACCAMEnable == FALSE)
+							pAd->StaCfg.WindowsPowerMode = Ndis802_11PowerModeCAM;
+						pAd->StaCfg.WindowsBatteryPowerMode = Ndis802_11PowerModeCAM;
+					}
+					DBGPRINT(RT_DEBUG_TRACE, ("PSMode=%ld\n", pAd->StaCfg.WindowsPowerMode));
+				}
+			}
+			// AutoRoaming by RSSI
+			if (RTMPGetKeyParameter("AutoRoaming", tmpbuf, 32, pBuffer, TRUE))
+			{
+				if (simple_strtol(tmpbuf, 0, 10) == 0)
+					pAd->StaCfg.bAutoRoaming = FALSE;
+				else
+					pAd->StaCfg.bAutoRoaming = TRUE;
+
+				DBGPRINT(RT_DEBUG_TRACE, ("AutoRoaming=%d\n", pAd->StaCfg.bAutoRoaming));
+			}
+			// RoamThreshold
+			if (RTMPGetKeyParameter("RoamThreshold", tmpbuf, 32, pBuffer, TRUE))
+			{
+				long lInfo = simple_strtol(tmpbuf, 0, 10);
+
+				if (lInfo > 90 || lInfo < 60)
+					pAd->StaCfg.dBmToRoam = -70;
+				else    
+					pAd->StaCfg.dBmToRoam = (CHAR)(-1)*lInfo;
+
+				DBGPRINT(RT_DEBUG_TRACE, ("RoamThreshold=%d  dBm\n", pAd->StaCfg.dBmToRoam));
+			}
+
+			if(RTMPGetKeyParameter("TGnWifiTest", tmpbuf, 10, pBuffer, TRUE))
+			{
+				if(simple_strtol(tmpbuf, 0, 10) == 0)
+					pAd->StaCfg.bTGnWifiTest = FALSE;
+				else
+					pAd->StaCfg.bTGnWifiTest = TRUE;
+					DBGPRINT(RT_DEBUG_TRACE, ("TGnWifiTest=%d\n", pAd->StaCfg.bTGnWifiTest));
+			}
+
+			// Beacon Lost Time
+			if (RTMPGetKeyParameter("BeaconLostTime", tmpbuf, 32, pBuffer, TRUE))
+			{
+				ULONG lInfo = (ULONG)simple_strtol(tmpbuf, 0, 10);
+
+				if ((lInfo != 0) && (lInfo <= 60))
+					pAd->StaCfg.BeaconLostTime = (lInfo * OS_HZ);
+				DBGPRINT(RT_DEBUG_TRACE, ("BeaconLostTime=%ld \n", pAd->StaCfg.BeaconLostTime));
+			}
+
+			// Auto Connet Setting if no SSID			
+			if (RTMPGetKeyParameter("AutoConnect", tmpbuf, 32, pBuffer, TRUE))
+			{
+				if (simple_strtol(tmpbuf, 0, 10) == 0)
+					pAd->StaCfg.bAutoConnectIfNoSSID = FALSE;
+				else
+					pAd->StaCfg.bAutoConnectIfNoSSID = TRUE;
+			}
+
+			
+		}
+#endif // CONFIG_STA_SUPPORT //
+
+
+
+
+
+#ifdef SINGLE_SKU
+		if(RTMPGetKeyParameter("AntGain", tmpbuf, 10, pBuffer, TRUE))
+		{
+			UCHAR AntGain = simple_strtol(tmpbuf, 0, 10);
+			pAd->CommonCfg.AntGain= AntGain;
+	
+			DBGPRINT(RT_DEBUG_TRACE, ("AntGain=%d\n", pAd->CommonCfg.AntGain));
+		}
+		if(RTMPGetKeyParameter("BandedgeDelta", tmpbuf, 10, pBuffer, TRUE))
+		{
+			UCHAR Bandedge = simple_strtol(tmpbuf, 0, 10);
+			pAd->CommonCfg.BandedgeDelta = Bandedge;
+
+			DBGPRINT(RT_DEBUG_TRACE, ("BandedgeDelta=%d\n", pAd->CommonCfg.BandedgeDelta));
+		}
+#endif // SINGLE_SKU //
+	}while(0);
+
+
+	kfree(tmpbuf);
+	
+	return NDIS_STATUS_SUCCESS;
+	
+}
+
+
+#ifdef MULTIPLE_CARD_SUPPORT
+// record whether the card in the card list is used in the card file
+UINT8  MC_CardUsed[MAX_NUM_OF_MULTIPLE_CARD];
+// record used card mac address in the card list
+static UINT8  MC_CardMac[MAX_NUM_OF_MULTIPLE_CARD][6];
+
+/*
+========================================================================
+Routine Description:
+    Get card profile path.
+
+Arguments:
+    pAd
+
+Return Value:
+    TRUE		- Find a card profile
+	FALSE		- use default profile
+
+Note:
+========================================================================
+*/
+BOOLEAN RTMP_CardInfoRead(
+	IN	PRTMP_ADAPTER pAd)
+{
+#define MC_SELECT_CARDID		0	/* use CARD ID (0 ~ 31) to identify different cards */
+#define MC_SELECT_MAC			1	/* use CARD MAC to identify different cards */
+#define MC_SELECT_CARDTYPE		2	/* use CARD type (abgn or bgn) to identify different cards */
+
+#define LETTER_CASE_TRANSLATE(txt_p, card_id)			\
+	{	UINT32 _len; char _char;						\
+		for(_len=0; _len<strlen(card_id); _len++) {		\
+			_char = *(txt_p + _len);					\
+			if (('A' <= _char) && (_char <= 'Z'))		\
+				*(txt_p+_len) = 'a'+(_char-'A');		\
+		} }
+
+	RTMP_OS_FD srcf;
+	INT retval;
+	PSTRING buffer, tmpbuf;
+	STRING card_id_buf[30], RFIC_word[30];
+	BOOLEAN flg_match_ok = FALSE;
+	INT32 card_select_method;
+	INT32 card_free_id, card_nouse_id, card_same_mac_id, card_match_id;
+	EEPROM_ANTENNA_STRUC antenna;
+	USHORT addr01, addr23, addr45;
+	UINT8 mac[6];
+	UINT32 data, card_index;
+	UCHAR *start_ptr;
+	RTMP_OS_FS_INFO osFSInfo;
+
+	// init
+	buffer = kmalloc(MAX_INI_BUFFER_SIZE, MEM_ALLOC_FLAG);
+	if (buffer == NULL)
+		return FALSE;
+
+	tmpbuf = kmalloc(MAX_PARAM_BUFFER_SIZE, MEM_ALLOC_FLAG);
+	if(tmpbuf == NULL)
+	{
+		kfree(buffer);
+		return NDIS_STATUS_FAILURE;
+	}
+
+	// get RF IC type
+	RTMP_IO_READ32(pAd, E2PROM_CSR, &data);
+
+	if ((data & 0x30) == 0)
+		pAd->EEPROMAddressNum = 6;	// 93C46
+	else if ((data & 0x30) == 0x10)
+		pAd->EEPROMAddressNum = 8;	// 93C66
+	else
+		pAd->EEPROMAddressNum = 8;	// 93C86
+	
+	RT28xx_EEPROM_READ16(pAd, EEPROM_NIC1_OFFSET, antenna.word);
+
+	if ((antenna.field.RfIcType == RFIC_2850) ||
+		(antenna.field.RfIcType == RFIC_2750))
+	{
+		/* ABGN card */
+		strcpy(RFIC_word, "abgn");
+	}
+	else
+	{
+		/* BGN card */
+		strcpy(RFIC_word, "bgn");
+	}
+
+	// get MAC address
+	RT28xx_EEPROM_READ16(pAd, 0x04, addr01);
+	RT28xx_EEPROM_READ16(pAd, 0x06, addr23);
+	RT28xx_EEPROM_READ16(pAd, 0x08, addr45);
+
+	mac[0] = (UCHAR)(addr01 & 0xff);
+	mac[1] = (UCHAR)(addr01 >> 8);
+	mac[2] = (UCHAR)(addr23 & 0xff);
+	mac[3] = (UCHAR)(addr23 >> 8);
+	mac[4] = (UCHAR)(addr45 & 0xff);
+	mac[5] = (UCHAR)(addr45 >> 8);
+
+	DBGPRINT(RT_DEBUG_TRACE, ("mac addr=%02x:%02x:%02x:%02x:%02x:%02x!\n", PRINT_MAC(mac)));
+	
+	RtmpOSFSInfoChange(&osFSInfo, TRUE);
+	// open card information file
+	srcf = RtmpOSFileOpen(CARD_INFO_PATH, O_RDONLY, 0);
+	if (IS_FILE_OPEN_ERR(srcf)) 
+	{
+		/* card information file does not exist */
+			DBGPRINT(RT_DEBUG_TRACE,
+				("--> Error opening %s\n", CARD_INFO_PATH));
+		goto  free_resource;
+	}
+
+	/* card information file exists so reading the card information */
+	memset(buffer, 0x00, MAX_INI_BUFFER_SIZE);
+	retval = RtmpOSFileRead(srcf, buffer, MAX_INI_BUFFER_SIZE);
+	if (retval < 0)
+	{
+		/* read fail */
+			DBGPRINT(RT_DEBUG_TRACE,
+				("--> Read %s error %d\n", CARD_INFO_PATH, -retval));
+	}
+	else
+	{
+		/* get card selection method */
+		memset(tmpbuf, 0x00, MAX_PARAM_BUFFER_SIZE);
+		card_select_method = MC_SELECT_CARDTYPE; // default
+
+		if (RTMPGetKeyParameter("SELECT", tmpbuf, 256, buffer, TRUE))
+		{
+			if (strcmp(tmpbuf, "CARDID") == 0)
+				card_select_method = MC_SELECT_CARDID;
+			else if (strcmp(tmpbuf, "MAC") == 0)
+				card_select_method = MC_SELECT_MAC;
+			else if (strcmp(tmpbuf, "CARDTYPE") == 0)
+				card_select_method = MC_SELECT_CARDTYPE;
+		}
+
+		DBGPRINT(RT_DEBUG_TRACE,
+				("MC> Card Selection = %d\n", card_select_method));
+
+		// init
+		card_free_id = -1;
+		card_nouse_id = -1;
+		card_same_mac_id = -1;
+		card_match_id = -1;
+
+		// search current card information records
+		for(card_index=0;
+			card_index<MAX_NUM_OF_MULTIPLE_CARD;
+			card_index++)
+		{
+			if ((*(UINT32 *)&MC_CardMac[card_index][0] == 0) &&
+				(*(UINT16 *)&MC_CardMac[card_index][4] == 0))
+			{
+				// MAC is all-0 so the entry is available
+				MC_CardUsed[card_index] = 0;
+
+				if (card_free_id < 0)
+					card_free_id = card_index; // 1st free entry
+			}
+			else
+			{
+				if (memcmp(MC_CardMac[card_index], mac, 6) == 0)
+				{
+					// we find the entry with same MAC
+					if (card_same_mac_id < 0)
+						card_same_mac_id = card_index; // 1st same entry
+				}
+				else
+				{
+					// MAC is not all-0 but used flag == 0
+					if ((MC_CardUsed[card_index] == 0) &&
+						(card_nouse_id < 0))
+					{
+						card_nouse_id = card_index; // 1st available entry
+					}
+				}
+			}
+		}
+
+		DBGPRINT(RT_DEBUG_TRACE,
+				("MC> Free = %d, Same = %d, NOUSE = %d\n",
+				card_free_id, card_same_mac_id, card_nouse_id));
+
+		if ((card_same_mac_id >= 0) &&
+			((card_select_method == MC_SELECT_CARDID) ||
+			(card_select_method == MC_SELECT_CARDTYPE)))
+		{
+			// same MAC entry is found
+			card_match_id = card_same_mac_id;
+
+			if (card_select_method == MC_SELECT_CARDTYPE)
+			{
+				// for CARDTYPE
+				sprintf(card_id_buf, "%02dCARDTYPE%s",
+						card_match_id, RFIC_word);
+
+				if ((start_ptr = (PUCHAR)rtstrstruncasecmp(buffer, card_id_buf)) != NULL)
+				{
+					// we found the card ID
+					LETTER_CASE_TRANSLATE(start_ptr, card_id_buf);
+				}
+			}
+		}
+		else
+		{
+			// the card is 1st plug-in, try to find the match card profile
+			switch(card_select_method)
+			{
+				case MC_SELECT_CARDID: // CARDID
+				default:
+					if (card_free_id >= 0)
+						card_match_id = card_free_id;
+					else
+						card_match_id = card_nouse_id;
+					break;
+
+				case MC_SELECT_MAC: // MAC
+					sprintf(card_id_buf, "MAC%02x:%02x:%02x:%02x:%02x:%02x",
+							mac[0], mac[1], mac[2],
+							mac[3], mac[4], mac[5]);
+
+					/* try to find the key word in the card file */
+					if ((start_ptr = (PUCHAR)rtstrstruncasecmp(buffer, card_id_buf)) != NULL)
+					{
+						LETTER_CASE_TRANSLATE(start_ptr, card_id_buf);
+
+						/* get the row ID (2 ASCII characters) */
+						start_ptr -= 2;
+						card_id_buf[0] = *(start_ptr);
+						card_id_buf[1] = *(start_ptr+1);
+						card_id_buf[2] = 0x00;
+
+						card_match_id = simple_strtol(card_id_buf, 0, 10);
+					}
+					break;
+
+				case MC_SELECT_CARDTYPE: // CARDTYPE
+					card_nouse_id = -1;
+
+					for(card_index=0;
+						card_index<MAX_NUM_OF_MULTIPLE_CARD;
+						card_index++)
+					{
+						sprintf(card_id_buf, "%02dCARDTYPE%s",
+								card_index, RFIC_word);
+
+						if ((start_ptr = (PUCHAR)rtstrstruncasecmp(buffer,
+													card_id_buf)) != NULL)
+						{
+							LETTER_CASE_TRANSLATE(start_ptr, card_id_buf);
+
+							if (MC_CardUsed[card_index] == 0)
+							{
+								/* current the card profile is not used */
+								if ((*(UINT32 *)&MC_CardMac[card_index][0] == 0) &&
+									(*(UINT16 *)&MC_CardMac[card_index][4] == 0))
+								{
+									// find it and no previous card use it
+									card_match_id = card_index;
+									break;
+								}
+								else
+								{
+									// ever a card use it
+									if (card_nouse_id < 0)
+										card_nouse_id = card_index;
+								}
+							}
+						}
+					}
+
+					// if not find a free one, use the available one
+					if (card_match_id < 0)
+						card_match_id = card_nouse_id;
+					break;
+			}
+		}
+
+		if (card_match_id >= 0)
+		{
+			// make up search keyword
+			switch(card_select_method)
+			{
+				case MC_SELECT_CARDID: // CARDID
+					sprintf(card_id_buf, "%02dCARDID", card_match_id);
+					break;
+
+				case MC_SELECT_MAC: // MAC
+					sprintf(card_id_buf,
+							"%02dmac%02x:%02x:%02x:%02x:%02x:%02x",
+							card_match_id,
+							mac[0], mac[1], mac[2],
+							mac[3], mac[4], mac[5]);
+					break;
+
+				case MC_SELECT_CARDTYPE: // CARDTYPE
+				default:
+					sprintf(card_id_buf, "%02dcardtype%s",
+							card_match_id, RFIC_word);
+					break;
+			}
+
+			DBGPRINT(RT_DEBUG_TRACE, ("Search Keyword = %s\n", card_id_buf));
+
+			// read card file path
+			if (RTMPGetKeyParameter(card_id_buf, tmpbuf, 256, buffer, TRUE))
+			{
+				if (strlen(tmpbuf) < sizeof(pAd->MC_FileName))
+				{
+					// backup card information
+					pAd->MC_RowID = card_match_id; /* base 0 */
+					MC_CardUsed[card_match_id] = 1;
+					memcpy(MC_CardMac[card_match_id], mac, sizeof(mac));
+
+					// backup card file path
+					NdisMoveMemory(pAd->MC_FileName, tmpbuf , strlen(tmpbuf));
+					pAd->MC_FileName[strlen(tmpbuf)] = '\0';
+					flg_match_ok = TRUE;
+
+					DBGPRINT(RT_DEBUG_TRACE,
+							("Card Profile Name = %s\n", pAd->MC_FileName));
+				}
+				else
+				{
+					DBGPRINT(RT_DEBUG_ERROR,
+							("Card Profile Name length too large!\n"));
+				}
+			}
+			else
+			{
+				DBGPRINT(RT_DEBUG_ERROR,
+						("Can not find search key word in card.dat!\n"));
+			}
+
+			if ((flg_match_ok != TRUE) &&
+				(card_match_id < MAX_NUM_OF_MULTIPLE_CARD))
+			{
+				MC_CardUsed[card_match_id] = 0;
+				memset(MC_CardMac[card_match_id], 0, sizeof(mac));
+			}
+		} // if (card_match_id >= 0)
+	}
+
+
+	// close file
+	retval = RtmpOSFileClose(srcf);
+
+free_resource:
+	RtmpOSFSInfoChange(&osFSInfo, FALSE);
+	kfree(buffer);
+	kfree(tmpbuf);
+
+	return flg_match_ok;
+}
+#endif // MULTIPLE_CARD_SUPPORT //
+
+
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_sanity.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_sanity.c
new file mode 100644
index 000000000..333747222
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_sanity.c
@@ -0,0 +1,1660 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+	Module Name:
+	sanity.c
+
+	Abstract:
+
+	Revision History:
+	Who			When			What
+	--------	----------		----------------------------------------------
+	John Chang  2004-09-01      add WMM support
+*/
+#include "rt_config.h"
+
+extern UCHAR	CISCO_OUI[];
+
+extern UCHAR	WPA_OUI[];
+extern UCHAR	RSN_OUI[];
+extern UCHAR	WME_INFO_ELEM[];
+extern UCHAR	WME_PARM_ELEM[];
+extern UCHAR	Ccx2QosInfo[];
+extern UCHAR	RALINK_OUI[];
+extern UCHAR	BROADCOM_OUI[];
+extern UCHAR    WPS_OUI[];
+
+/* 
+    ==========================================================================
+    Description:
+        MLME message sanity check
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+        
+	IRQL = DISPATCH_LEVEL
+
+    ==========================================================================
+ */
+BOOLEAN MlmeAddBAReqSanity(
+    IN PRTMP_ADAPTER pAd, 
+    IN VOID *Msg, 
+    IN ULONG MsgLen, 
+    OUT PUCHAR pAddr2) 
+{
+    PMLME_ADDBA_REQ_STRUCT   pInfo;
+
+    pInfo = (MLME_ADDBA_REQ_STRUCT *)Msg;
+
+    if ((MsgLen != sizeof(MLME_ADDBA_REQ_STRUCT)))
+    {
+        DBGPRINT(RT_DEBUG_TRACE, ("MlmeAddBAReqSanity fail - message lenght not correct.\n"));
+        return FALSE;
+    }	
+	
+    if ((pInfo->Wcid >= MAX_LEN_OF_MAC_TABLE))
+    {
+        DBGPRINT(RT_DEBUG_TRACE, ("MlmeAddBAReqSanity fail - The peer Mac is not associated yet.\n"));
+        return FALSE;
+    }	
+
+	/*
+    if ((pInfo->BaBufSize > MAX_RX_REORDERBUF) || (pInfo->BaBufSize < 2))
+    {
+        DBGPRINT(RT_DEBUG_TRACE, ("MlmeAddBAReqSanity fail - Rx Reordering buffer too big or too small\n"));
+        return FALSE;
+    } 
+	*/  
+
+    if ((pInfo->pAddr[0]&0x01) == 0x01)
+    {
+        DBGPRINT(RT_DEBUG_TRACE, ("MlmeAddBAReqSanity fail - broadcast address not support BA\n"));
+        return FALSE;
+    }	
+    
+    return TRUE;
+}
+
+/* 
+    ==========================================================================
+    Description:
+        MLME message sanity check
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+        
+	IRQL = DISPATCH_LEVEL
+
+    ==========================================================================
+ */
+BOOLEAN MlmeDelBAReqSanity(
+    IN PRTMP_ADAPTER pAd, 
+    IN VOID *Msg, 
+    IN ULONG MsgLen) 
+{
+	MLME_DELBA_REQ_STRUCT *pInfo;
+	pInfo = (MLME_DELBA_REQ_STRUCT *)Msg;
+
+    if ((MsgLen != sizeof(MLME_DELBA_REQ_STRUCT)))
+    {
+        DBGPRINT(RT_DEBUG_ERROR, ("MlmeDelBAReqSanity fail - message lenght not correct.\n"));
+        return FALSE;
+    }	
+	
+    if ((pInfo->Wcid >= MAX_LEN_OF_MAC_TABLE))
+    {
+        DBGPRINT(RT_DEBUG_ERROR, ("MlmeDelBAReqSanity fail - The peer Mac is not associated yet.\n"));
+        return FALSE;
+    }	
+
+    if ((pInfo->TID & 0xf0))
+    {
+        DBGPRINT(RT_DEBUG_ERROR, ("MlmeDelBAReqSanity fail - The peer TID is incorrect.\n"));
+        return FALSE;
+    }	
+
+	if (NdisEqualMemory(pAd->MacTab.Content[pInfo->Wcid].Addr, pInfo->Addr, MAC_ADDR_LEN) == 0)
+    {    	
+        DBGPRINT(RT_DEBUG_ERROR, ("MlmeDelBAReqSanity fail - the peer addr dosen't exist.\n"));		
+        return FALSE;
+    }	
+    
+    return TRUE;
+}
+
+BOOLEAN PeerAddBAReqActionSanity(
+    IN PRTMP_ADAPTER pAd, 
+    IN VOID *pMsg, 
+    IN ULONG MsgLen,
+	OUT PUCHAR pAddr2)
+{
+	PFRAME_802_11 pFrame = (PFRAME_802_11)pMsg;
+	PFRAME_ADDBA_REQ pAddFrame;
+	pAddFrame = (PFRAME_ADDBA_REQ)(pMsg);
+	if (MsgLen < (sizeof(FRAME_ADDBA_REQ)))
+	{
+		DBGPRINT(RT_DEBUG_ERROR,("PeerAddBAReqActionSanity: ADDBA Request frame length size = %ld incorrect\n", MsgLen));
+		return FALSE;
+	}
+	// we support immediate BA.
+#ifdef UNALIGNMENT_SUPPORT
+	{
+		BA_PARM		tmpBaParm;
+
+		NdisMoveMemory((PUCHAR)(&tmpBaParm), (PUCHAR)(&pAddFrame->BaParm), sizeof(BA_PARM));
+		*(USHORT *)(&tmpBaParm) = cpu2le16(*(USHORT *)(&tmpBaParm));
+		NdisMoveMemory((PUCHAR)(&pAddFrame->BaParm), (PUCHAR)(&tmpBaParm), sizeof(BA_PARM));
+	}
+#else
+	*(USHORT *)(&pAddFrame->BaParm) = cpu2le16(*(USHORT *)(&pAddFrame->BaParm));
+#endif
+	pAddFrame->TimeOutValue = cpu2le16(pAddFrame->TimeOutValue);
+	pAddFrame->BaStartSeq.word = cpu2le16(pAddFrame->BaStartSeq.word); 
+
+	if (pAddFrame->BaParm.BAPolicy != IMMED_BA)
+	{
+		DBGPRINT(RT_DEBUG_ERROR,("PeerAddBAReqActionSanity: ADDBA Request Ba Policy[%d] not support\n", pAddFrame->BaParm.BAPolicy));
+		DBGPRINT(RT_DEBUG_ERROR,("ADDBA Request. tid=%x, Bufsize=%x, AMSDUSupported=%x \n", pAddFrame->BaParm.TID, pAddFrame->BaParm.BufSize, pAddFrame->BaParm.AMSDUSupported));
+		return FALSE;
+	}
+
+	// we support immediate BA.
+	if (pAddFrame->BaParm.TID &0xfff0)
+	{
+		DBGPRINT(RT_DEBUG_ERROR,("PeerAddBAReqActionSanity: ADDBA Request incorrect TID = %d\n", pAddFrame->BaParm.TID));
+		return FALSE;
+	}
+	COPY_MAC_ADDR(pAddr2, pFrame->Hdr.Addr2);
+	return TRUE;
+}
+
+BOOLEAN PeerAddBARspActionSanity(
+    IN PRTMP_ADAPTER pAd, 
+    IN VOID *pMsg, 
+    IN ULONG MsgLen)
+{
+	//PFRAME_802_11 pFrame = (PFRAME_802_11)pMsg;
+	PFRAME_ADDBA_RSP pAddFrame;
+	
+	pAddFrame = (PFRAME_ADDBA_RSP)(pMsg);
+	if (MsgLen < (sizeof(FRAME_ADDBA_RSP)))
+	{
+		DBGPRINT(RT_DEBUG_ERROR,("PeerAddBARspActionSanity: ADDBA Response frame length size = %ld incorrect\n", MsgLen));
+		return FALSE;
+	}
+	// we support immediate BA.
+#ifdef UNALIGNMENT_SUPPORT
+	{
+		BA_PARM		tmpBaParm;
+
+		NdisMoveMemory((PUCHAR)(&tmpBaParm), (PUCHAR)(&pAddFrame->BaParm), sizeof(BA_PARM));
+		*(USHORT *)(&tmpBaParm) = cpu2le16(*(USHORT *)(&tmpBaParm));
+		NdisMoveMemory((PUCHAR)(&pAddFrame->BaParm), (PUCHAR)(&tmpBaParm), sizeof(BA_PARM));
+	}
+#else
+	*(USHORT *)(&pAddFrame->BaParm) = cpu2le16(*(USHORT *)(&pAddFrame->BaParm));
+#endif
+	pAddFrame->StatusCode = cpu2le16(pAddFrame->StatusCode);
+	pAddFrame->TimeOutValue = cpu2le16(pAddFrame->TimeOutValue);
+
+	if (pAddFrame->BaParm.BAPolicy != IMMED_BA)
+	{
+		DBGPRINT(RT_DEBUG_ERROR,("PeerAddBAReqActionSanity: ADDBA Response Ba Policy[%d] not support\n", pAddFrame->BaParm.BAPolicy));
+		return FALSE;
+	}
+
+	// we support immediate BA.
+	if (pAddFrame->BaParm.TID &0xfff0)
+	{
+		DBGPRINT(RT_DEBUG_ERROR,("PeerAddBARspActionSanity: ADDBA Response incorrect TID = %d\n", pAddFrame->BaParm.TID));
+		return FALSE;
+	}
+	return TRUE;
+
+}
+
+BOOLEAN PeerDelBAActionSanity(
+    IN PRTMP_ADAPTER pAd, 
+    IN UCHAR Wcid, 
+    IN VOID *pMsg, 
+    IN ULONG MsgLen )
+{
+	//PFRAME_802_11 pFrame = (PFRAME_802_11)pMsg;
+	PFRAME_DELBA_REQ  pDelFrame;
+	if (MsgLen != (sizeof(FRAME_DELBA_REQ)))
+		return FALSE;
+	
+	if (Wcid >= MAX_LEN_OF_MAC_TABLE)
+		return FALSE;
+	
+	pDelFrame = (PFRAME_DELBA_REQ)(pMsg);
+
+	*(USHORT *)(&pDelFrame->DelbaParm) = cpu2le16(*(USHORT *)(&pDelFrame->DelbaParm));
+	pDelFrame->ReasonCode = cpu2le16(pDelFrame->ReasonCode);
+
+	if (pDelFrame->DelbaParm.TID &0xfff0)
+		return FALSE;
+	
+	return TRUE;
+}
+
+/* 
+    ==========================================================================
+    Description:
+        MLME message sanity check
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+        
+	IRQL = DISPATCH_LEVEL
+
+    ==========================================================================
+ */
+BOOLEAN PeerBeaconAndProbeRspSanity(
+    IN PRTMP_ADAPTER pAd,
+    IN VOID *Msg, 
+    IN ULONG MsgLen, 
+    IN UCHAR  MsgChannel,
+    OUT PUCHAR pAddr2, 
+    OUT PUCHAR pBssid, 
+    OUT CHAR Ssid[], 
+    OUT UCHAR *pSsidLen, 
+    OUT UCHAR *pBssType, 
+    OUT USHORT *pBeaconPeriod, 
+    OUT UCHAR *pChannel, 
+    OUT UCHAR *pNewChannel, 
+    OUT LARGE_INTEGER *pTimestamp, 
+    OUT CF_PARM *pCfParm, 
+    OUT USHORT *pAtimWin, 
+    OUT USHORT *pCapabilityInfo, 
+    OUT UCHAR *pErp,
+    OUT UCHAR *pDtimCount, 
+    OUT UCHAR *pDtimPeriod, 
+    OUT UCHAR *pBcastFlag, 
+    OUT UCHAR *pMessageToMe, 
+    OUT UCHAR SupRate[],
+    OUT UCHAR *pSupRateLen,
+    OUT UCHAR ExtRate[],
+    OUT UCHAR *pExtRateLen,
+    OUT	UCHAR *pCkipFlag,
+    OUT	UCHAR *pAironetCellPowerLimit,
+    OUT PEDCA_PARM       pEdcaParm,
+    OUT PQBSS_LOAD_PARM  pQbssLoad,
+    OUT PQOS_CAPABILITY_PARM pQosCapability,
+    OUT ULONG *pRalinkIe,
+    OUT UCHAR		 *pHtCapabilityLen,
+#ifdef CONFIG_STA_SUPPORT
+    OUT UCHAR		 *pPreNHtCapabilityLen,
+#endif // CONFIG_STA_SUPPORT //
+    OUT HT_CAPABILITY_IE *pHtCapability,
+    OUT EXT_CAP_INFO_ELEMENT	*pExtCapInfo,
+	OUT UCHAR		 *AddHtInfoLen,
+	OUT ADD_HT_INFO_IE *AddHtInfo,
+	OUT UCHAR *NewExtChannelOffset,		// Ht extension channel offset(above or below)
+    OUT USHORT *LengthVIE,	
+    OUT	PNDIS_802_11_VARIABLE_IEs pVIE) 
+{
+    UCHAR				*Ptr;
+#ifdef CONFIG_STA_SUPPORT
+	UCHAR 				TimLen;
+#endif // CONFIG_STA_SUPPORT //
+    PFRAME_802_11		pFrame;
+    PEID_STRUCT         pEid;
+    UCHAR				SubType;
+    UCHAR				Sanity;
+    //UCHAR				ECWMin, ECWMax;
+    //MAC_CSR9_STRUC		Csr9;
+    ULONG				Length = 0;
+
+	// For some 11a AP which didn't have DS_IE, we use two conditions to decide the channel
+	//	1. If the AP is 11n enabled, then check the control channel.
+	//	2. If the AP didn't have any info about channel, use the channel we received this frame as the channel. (May inaccuracy!!)
+	UCHAR			CtrlChannel = 0;
+	
+    // Add for 3 necessary EID field check
+    Sanity = 0;
+
+    *pAtimWin = 0;
+    *pErp = 0;	
+    *pDtimCount = 0;
+    *pDtimPeriod = 0;
+    *pBcastFlag = 0;
+    *pMessageToMe = 0;
+    *pExtRateLen = 0;
+    *pCkipFlag = 0;			        // Default of CkipFlag is 0
+    *pAironetCellPowerLimit = 0xFF;  // Default of AironetCellPowerLimit is 0xFF
+    *LengthVIE = 0;					// Set the length of VIE to init value 0
+    *pHtCapabilityLen = 0;					// Set the length of VIE to init value 0
+#ifdef CONFIG_STA_SUPPORT
+	if (pAd->OpMode == OPMODE_STA)
+		*pPreNHtCapabilityLen = 0;					// Set the length of VIE to init value 0
+#endif // CONFIG_STA_SUPPORT //
+    *AddHtInfoLen = 0;					// Set the length of VIE to init value 0
+    NdisZeroMemory(pExtCapInfo, sizeof(EXT_CAP_INFO_ELEMENT));
+    *pRalinkIe = 0;
+    *pNewChannel = 0;
+    *NewExtChannelOffset = 0xff;	//Default 0xff means no such IE
+    pCfParm->bValid = FALSE;        // default: no IE_CF found
+    pQbssLoad->bValid = FALSE;      // default: no IE_QBSS_LOAD found
+    pEdcaParm->bValid = FALSE;      // default: no IE_EDCA_PARAMETER found
+    pQosCapability->bValid = FALSE; // default: no IE_QOS_CAPABILITY found
+    
+    pFrame = (PFRAME_802_11)Msg;
+    
+    // get subtype from header
+    SubType = (UCHAR)pFrame->Hdr.FC.SubType;
+
+    // get Addr2 and BSSID from header
+    COPY_MAC_ADDR(pAddr2, pFrame->Hdr.Addr2);
+    COPY_MAC_ADDR(pBssid, pFrame->Hdr.Addr3);
+    
+//	hex_dump("Beacon", Msg, MsgLen);
+
+    Ptr = pFrame->Octet;
+    Length += LENGTH_802_11;
+    
+    // get timestamp from payload and advance the pointer
+    NdisMoveMemory(pTimestamp, Ptr, TIMESTAMP_LEN);
+
+	pTimestamp->u.LowPart = cpu2le32(pTimestamp->u.LowPart);
+	pTimestamp->u.HighPart = cpu2le32(pTimestamp->u.HighPart);
+
+    Ptr += TIMESTAMP_LEN;
+    Length += TIMESTAMP_LEN;
+
+    // get beacon interval from payload and advance the pointer
+    NdisMoveMemory(pBeaconPeriod, Ptr, 2);
+    Ptr += 2;
+    Length += 2;
+
+    // get capability info from payload and advance the pointer
+    NdisMoveMemory(pCapabilityInfo, Ptr, 2);
+    Ptr += 2;
+    Length += 2;
+
+    if (CAP_IS_ESS_ON(*pCapabilityInfo)) 
+        *pBssType = BSS_INFRA;
+    else 
+        *pBssType = BSS_ADHOC;
+
+    pEid = (PEID_STRUCT) Ptr;
+
+    // get variable fields from payload and advance the pointer
+    while ((Length + 2 + pEid->Len) <= MsgLen)    
+    {
+        //
+        // Secure copy VIE to VarIE[MAX_VIE_LEN] didn't overflow.
+        //
+        if ((*LengthVIE + pEid->Len + 2) >= MAX_VIE_LEN)
+        {
+            DBGPRINT(RT_DEBUG_WARN, ("PeerBeaconAndProbeRspSanity - Variable IEs out of resource [len(=%d) > MAX_VIE_LEN(=%d)]\n",
+                    (*LengthVIE + pEid->Len + 2), MAX_VIE_LEN));
+            break;
+        }
+
+        switch(pEid->Eid)
+        {
+            case IE_SSID:
+                // Already has one SSID EID in this beacon, ignore the second one
+                if (Sanity & 0x1)
+                    break;
+                if(pEid->Len <= MAX_LEN_OF_SSID)
+                {
+                    NdisMoveMemory(Ssid, pEid->Octet, pEid->Len);
+                    *pSsidLen = pEid->Len;
+                    Sanity |= 0x1;
+                }
+                else
+                {
+                    DBGPRINT(RT_DEBUG_TRACE, ("PeerBeaconAndProbeRspSanity - wrong IE_SSID (len=%d)\n",pEid->Len));
+                    return FALSE;
+                }
+                break;
+
+            case IE_SUPP_RATES:
+                if(pEid->Len <= MAX_LEN_OF_SUPPORTED_RATES)
+                {
+                    Sanity |= 0x2;
+                    NdisMoveMemory(SupRate, pEid->Octet, pEid->Len);
+                    *pSupRateLen = pEid->Len;
+
+                    // TODO: 2004-09-14 not a good design here, cause it exclude extra rates 
+                    // from ScanTab. We should report as is. And filter out unsupported
+                    // rates in MlmeAux.
+                    // Check against the supported rates
+                    // RTMPCheckRates(pAd, SupRate, pSupRateLen);
+                }
+                else
+                {
+                    DBGPRINT(RT_DEBUG_TRACE, ("PeerBeaconAndProbeRspSanity - wrong IE_SUPP_RATES (len=%d)\n",pEid->Len));
+                    return FALSE;
+                }
+                break;
+
+            case IE_HT_CAP:
+			if (pEid->Len >= SIZE_HT_CAP_IE)  //Note: allow extension.!!
+			{
+				NdisMoveMemory(pHtCapability, pEid->Octet, sizeof(HT_CAPABILITY_IE));
+				*pHtCapabilityLen = SIZE_HT_CAP_IE;	// Nnow we only support 26 bytes.
+
+				*(USHORT *)(&pHtCapability->HtCapInfo) = cpu2le16(*(USHORT *)(&pHtCapability->HtCapInfo));
+#ifdef UNALIGNMENT_SUPPORT
+				{
+					EXT_HT_CAP_INFO extHtCapInfo;
+					NdisMoveMemory((PUCHAR)(&extHtCapInfo), (PUCHAR)(&pHtCapability->ExtHtCapInfo), sizeof(EXT_HT_CAP_INFO));
+					*(USHORT *)(&extHtCapInfo) = cpu2le16(*(USHORT *)(&extHtCapInfo));
+					NdisMoveMemory((PUCHAR)(&pHtCapability->ExtHtCapInfo), (PUCHAR)(&extHtCapInfo), sizeof(EXT_HT_CAP_INFO));
+				}
+#else
+				*(USHORT *)(&pHtCapability->ExtHtCapInfo) = cpu2le16(*(USHORT *)(&pHtCapability->ExtHtCapInfo));
+#endif // UNALIGNMENT_SUPPORT //
+
+#ifdef CONFIG_STA_SUPPORT
+				IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+				{
+					*pPreNHtCapabilityLen = 0;	// Now we only support 26 bytes.
+
+					Ptr = (PUCHAR) pVIE;
+					NdisMoveMemory(Ptr + *LengthVIE, &pEid->Eid, pEid->Len + 2);
+					*LengthVIE += (pEid->Len + 2);
+				}
+#endif // CONFIG_STA_SUPPORT //
+			}
+			else
+			{
+				DBGPRINT(RT_DEBUG_WARN, ("PeerBeaconAndProbeRspSanity - wrong IE_HT_CAP. pEid->Len = %d\n", pEid->Len));
+			}
+			
+		break;
+            case IE_ADD_HT:
+			if (pEid->Len >= sizeof(ADD_HT_INFO_IE))				
+			{
+				// This IE allows extension, but we can ignore extra bytes beyond our knowledge , so only
+				// copy first sizeof(ADD_HT_INFO_IE)
+				NdisMoveMemory(AddHtInfo, pEid->Octet, sizeof(ADD_HT_INFO_IE));
+				*AddHtInfoLen = SIZE_ADD_HT_INFO_IE;
+
+				CtrlChannel = AddHtInfo->ControlChan;
+				
+				*(USHORT *)(&AddHtInfo->AddHtInfo2) = cpu2le16(*(USHORT *)(&AddHtInfo->AddHtInfo2));
+				*(USHORT *)(&AddHtInfo->AddHtInfo3) = cpu2le16(*(USHORT *)(&AddHtInfo->AddHtInfo3));
+           
+#ifdef CONFIG_STA_SUPPORT
+				IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+				{
+			                Ptr = (PUCHAR) pVIE;
+			                NdisMoveMemory(Ptr + *LengthVIE, &pEid->Eid, pEid->Len + 2);
+			                *LengthVIE += (pEid->Len + 2);
+				}
+#endif // CONFIG_STA_SUPPORT //
+			}
+			else
+			{
+				DBGPRINT(RT_DEBUG_WARN, ("PeerBeaconAndProbeRspSanity - wrong IE_ADD_HT. \n"));
+			}
+				
+		break;
+            case IE_SECONDARY_CH_OFFSET:
+			if (pEid->Len == 1)
+			{
+				*NewExtChannelOffset = pEid->Octet[0];
+			}
+			else
+			{
+				DBGPRINT(RT_DEBUG_WARN, ("PeerBeaconAndProbeRspSanity - wrong IE_SECONDARY_CH_OFFSET. \n"));
+			}
+				
+		break;
+            case IE_FH_PARM:
+                DBGPRINT(RT_DEBUG_TRACE, ("PeerBeaconAndProbeRspSanity(IE_FH_PARM) \n"));
+                break;
+
+            case IE_DS_PARM:
+                if(pEid->Len == 1)
+                {
+                    *pChannel = *pEid->Octet;
+#ifdef CONFIG_STA_SUPPORT
+					IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+					{
+						if (ChannelSanity(pAd, *pChannel) == 0)
+						{
+							
+							return FALSE;
+						}
+					}
+#endif // CONFIG_STA_SUPPORT //
+                    Sanity |= 0x4;
+                }
+                else
+                {
+                    DBGPRINT(RT_DEBUG_TRACE, ("PeerBeaconAndProbeRspSanity - wrong IE_DS_PARM (len=%d)\n",pEid->Len));
+                    return FALSE;
+                }
+                break;
+
+            case IE_CF_PARM:
+                if(pEid->Len == 6)
+                {
+                    pCfParm->bValid = TRUE;
+                    pCfParm->CfpCount = pEid->Octet[0];
+                    pCfParm->CfpPeriod = pEid->Octet[1];
+                    pCfParm->CfpMaxDuration = pEid->Octet[2] + 256 * pEid->Octet[3];
+                    pCfParm->CfpDurRemaining = pEid->Octet[4] + 256 * pEid->Octet[5];
+                }
+                else
+                {
+                    DBGPRINT(RT_DEBUG_TRACE, ("PeerBeaconAndProbeRspSanity - wrong IE_CF_PARM\n"));
+                    return FALSE;
+                }
+                break;
+
+            case IE_IBSS_PARM:
+                if(pEid->Len == 2)
+                {
+                    NdisMoveMemory(pAtimWin, pEid->Octet, pEid->Len);
+                }
+                else
+                {
+                    DBGPRINT(RT_DEBUG_TRACE, ("PeerBeaconAndProbeRspSanity - wrong IE_IBSS_PARM\n"));
+                    return FALSE;
+                }
+                break;
+
+#ifdef CONFIG_STA_SUPPORT
+            case IE_TIM:
+                if(INFRA_ON(pAd) && SubType == SUBTYPE_BEACON)
+                {
+                    GetTimBit((PCHAR)pEid, pAd->StaActive.Aid, &TimLen, pBcastFlag, pDtimCount, pDtimPeriod, pMessageToMe);
+                }
+                break;
+#endif // CONFIG_STA_SUPPORT //
+            case IE_CHANNEL_SWITCH_ANNOUNCEMENT:
+                if(pEid->Len == 3)
+                {
+                	*pNewChannel = pEid->Octet[1];	//extract new channel number
+                }
+                break;
+
+            // New for WPA
+            // CCX v2 has the same IE, we need to parse that too
+            // Wifi WMM use the same IE vale, need to parse that too
+            // case IE_WPA:
+            case IE_VENDOR_SPECIFIC:
+                // Check Broadcom/Atheros 802.11n OUI version, for HT Capability IE. 
+                // This HT IE is before IEEE draft set HT IE value.2006-09-28 by Jan. 
+                /*if (NdisEqualMemory(pEid->Octet, BROADCOM_OUI, 3) && (pEid->Len >= 4))
+                {
+                	if ((pEid->Octet[3] == OUI_BROADCOM_HT) && (pEid->Len >= 30))
+            		{
+				{
+					NdisMoveMemory(pHtCapability, &pEid->Octet[4], sizeof(HT_CAPABILITY_IE));
+					*pHtCapabilityLen = SIZE_HT_CAP_IE;	// Nnow we only support 26 bytes.
+				}
+         		}
+                	if ((pEid->Octet[3] == OUI_BROADCOM_HT) && (pEid->Len >= 26))
+            		{
+				{
+					NdisMoveMemory(AddHtInfo, &pEid->Octet[4], sizeof(ADD_HT_INFO_IE));
+					*AddHtInfoLen = SIZE_ADD_HT_INFO_IE;	// Nnow we only support 26 bytes.
+				}
+         		}
+                }
+				*/
+                // Check the OUI version, filter out non-standard usage
+                if (NdisEqualMemory(pEid->Octet, RALINK_OUI, 3) && (pEid->Len == 7))
+                {
+                    //*pRalinkIe = pEid->Octet[3];
+                    if (pEid->Octet[3] != 0)
+        				*pRalinkIe = pEid->Octet[3];
+        			else
+        				*pRalinkIe = 0xf0000000; // Set to non-zero value (can't set bit0-2) to represent this is Ralink Chip. So at linkup, we will set ralinkchip flag.
+                }
+#ifdef CONFIG_STA_SUPPORT
+#ifdef DOT11_N_SUPPORT
+		// This HT IE is before IEEE draft set HT IE value.2006-09-28 by Jan.
+                
+                // Other vendors had production before IE_HT_CAP value is assigned. To backward support those old-firmware AP,
+                // Check broadcom-defiend pre-802.11nD1.0 OUI for HT related IE, including HT Capatilities IE and HT Information IE
+                else if ((*pHtCapabilityLen == 0) && NdisEqualMemory(pEid->Octet, PRE_N_HT_OUI, 3) && (pEid->Len >= 4) && (pAd->OpMode == OPMODE_STA))
+                {
+                    if ((pEid->Octet[3] == OUI_PREN_HT_CAP) && (pEid->Len >= 30) && (*pHtCapabilityLen == 0))
+                    {
+                        NdisMoveMemory(pHtCapability, &pEid->Octet[4], sizeof(HT_CAPABILITY_IE));
+                        *pPreNHtCapabilityLen = SIZE_HT_CAP_IE;
+                    }
+
+                    if ((pEid->Octet[3] == OUI_PREN_ADD_HT) && (pEid->Len >= 26))
+                    {
+                        NdisMoveMemory(AddHtInfo, &pEid->Octet[4], sizeof(ADD_HT_INFO_IE));
+                        *AddHtInfoLen = SIZE_ADD_HT_INFO_IE;
+                    }
+                }
+#endif // DOT11_N_SUPPORT //
+#endif // CONFIG_STA_SUPPORT //
+                else if (NdisEqualMemory(pEid->Octet, WPA_OUI, 4))
+                {
+                    // Copy to pVIE which will report to bssid list.
+                    Ptr = (PUCHAR) pVIE;
+                    NdisMoveMemory(Ptr + *LengthVIE, &pEid->Eid, pEid->Len + 2);
+                    *LengthVIE += (pEid->Len + 2);
+                }
+                else if (NdisEqualMemory(pEid->Octet, WME_PARM_ELEM, 6) && (pEid->Len == 24))
+                {
+                    PUCHAR ptr;
+                    int i;
+
+                    // parsing EDCA parameters
+                    pEdcaParm->bValid          = TRUE;
+                    pEdcaParm->bQAck           = FALSE; // pEid->Octet[0] & 0x10;
+                    pEdcaParm->bQueueRequest   = FALSE; // pEid->Octet[0] & 0x20;
+                    pEdcaParm->bTxopRequest    = FALSE; // pEid->Octet[0] & 0x40;
+                    pEdcaParm->EdcaUpdateCount = pEid->Octet[6] & 0x0f;
+                    pEdcaParm->bAPSDCapable    = (pEid->Octet[6] & 0x80) ? 1 : 0;
+                    ptr = &pEid->Octet[8];
+                    for (i=0; i<4; i++)
+                    {
+                        UCHAR aci = (*ptr & 0x60) >> 5; // b5~6 is AC INDEX
+                        pEdcaParm->bACM[aci]  = (((*ptr) & 0x10) == 0x10);   // b5 is ACM
+                        pEdcaParm->Aifsn[aci] = (*ptr) & 0x0f;               // b0~3 is AIFSN
+                        pEdcaParm->Cwmin[aci] = *(ptr+1) & 0x0f;             // b0~4 is Cwmin
+                        pEdcaParm->Cwmax[aci] = *(ptr+1) >> 4;               // b5~8 is Cwmax
+                        pEdcaParm->Txop[aci]  = *(ptr+2) + 256 * (*(ptr+3)); // in unit of 32-us
+                        ptr += 4; // point to next AC
+                    }
+                }
+                else if (NdisEqualMemory(pEid->Octet, WME_INFO_ELEM, 6) && (pEid->Len == 7))
+                {
+                    // parsing EDCA parameters
+                    pEdcaParm->bValid          = TRUE;
+                    pEdcaParm->bQAck           = FALSE; // pEid->Octet[0] & 0x10;
+                    pEdcaParm->bQueueRequest   = FALSE; // pEid->Octet[0] & 0x20;
+                    pEdcaParm->bTxopRequest    = FALSE; // pEid->Octet[0] & 0x40;
+                    pEdcaParm->EdcaUpdateCount = pEid->Octet[6] & 0x0f;
+                    pEdcaParm->bAPSDCapable    = (pEid->Octet[6] & 0x80) ? 1 : 0;
+
+                    // use default EDCA parameter
+                    pEdcaParm->bACM[QID_AC_BE]  = 0;
+                    pEdcaParm->Aifsn[QID_AC_BE] = 3;
+                    pEdcaParm->Cwmin[QID_AC_BE] = CW_MIN_IN_BITS;
+                    pEdcaParm->Cwmax[QID_AC_BE] = CW_MAX_IN_BITS;
+                    pEdcaParm->Txop[QID_AC_BE]  = 0;
+
+                    pEdcaParm->bACM[QID_AC_BK]  = 0;
+                    pEdcaParm->Aifsn[QID_AC_BK] = 7;
+                    pEdcaParm->Cwmin[QID_AC_BK] = CW_MIN_IN_BITS;
+                    pEdcaParm->Cwmax[QID_AC_BK] = CW_MAX_IN_BITS;
+                    pEdcaParm->Txop[QID_AC_BK]  = 0;
+
+                    pEdcaParm->bACM[QID_AC_VI]  = 0;
+                    pEdcaParm->Aifsn[QID_AC_VI] = 2;
+                    pEdcaParm->Cwmin[QID_AC_VI] = CW_MIN_IN_BITS-1;
+                    pEdcaParm->Cwmax[QID_AC_VI] = CW_MAX_IN_BITS;
+                    pEdcaParm->Txop[QID_AC_VI]  = 96;   // AC_VI: 96*32us ~= 3ms
+
+                    pEdcaParm->bACM[QID_AC_VO]  = 0;
+                    pEdcaParm->Aifsn[QID_AC_VO] = 2;
+                    pEdcaParm->Cwmin[QID_AC_VO] = CW_MIN_IN_BITS-2;
+                    pEdcaParm->Cwmax[QID_AC_VO] = CW_MAX_IN_BITS-1;
+                    pEdcaParm->Txop[QID_AC_VO]  = 48;   // AC_VO: 48*32us ~= 1.5ms
+                }
+				else if (NdisEqualMemory(pEid->Octet, WPS_OUI, 4))
+                {
+                	// Copy to pVIE which will report to bssid list.
+                    Ptr = (PUCHAR) pVIE;
+                    NdisMoveMemory(Ptr + *LengthVIE, &pEid->Eid, pEid->Len + 2);
+                    *LengthVIE += (pEid->Len + 2);
+                }
+
+                break;
+
+            case IE_EXT_SUPP_RATES:
+                if (pEid->Len <= MAX_LEN_OF_SUPPORTED_RATES)
+                {
+                    NdisMoveMemory(ExtRate, pEid->Octet, pEid->Len);
+                    *pExtRateLen = pEid->Len;
+
+                    // TODO: 2004-09-14 not a good design here, cause it exclude extra rates 
+                    // from ScanTab. We should report as is. And filter out unsupported
+                    // rates in MlmeAux.
+                    // Check against the supported rates
+                    // RTMPCheckRates(pAd, ExtRate, pExtRateLen);
+                }
+                break;
+
+            case IE_ERP:
+                if (pEid->Len == 1)
+                {
+                    *pErp = (UCHAR)pEid->Octet[0];
+                }
+                break;
+
+            case IE_AIRONET_CKIP:
+                // 0. Check Aironet IE length, it must be larger or equal to 28
+                // Cisco AP350 used length as 28
+                // Cisco AP12XX used length as 30
+                if (pEid->Len < (CKIP_NEGOTIATION_LENGTH - 2))
+                    break;
+
+                // 1. Copy CKIP flag byte to buffer for process
+                *pCkipFlag = *(pEid->Octet + 8);				
+                break;
+
+            case IE_AP_TX_POWER:
+                // AP Control of Client Transmit Power
+                //0. Check Aironet IE length, it must be 6
+                if (pEid->Len != 0x06)
+                    break;
+
+                // Get cell power limit in dBm
+                if (NdisEqualMemory(pEid->Octet, CISCO_OUI, 3) == 1)
+                    *pAironetCellPowerLimit = *(pEid->Octet + 4);	
+                break;
+
+            // WPA2 & 802.11i RSN
+            case IE_RSN:
+                // There is no OUI for version anymore, check the group cipher OUI before copying
+                if (RTMPEqualMemory(pEid->Octet + 2, RSN_OUI, 3))
+                {
+                    // Copy to pVIE which will report to microsoft bssid list.
+                    Ptr = (PUCHAR) pVIE;
+                    NdisMoveMemory(Ptr + *LengthVIE, &pEid->Eid, pEid->Len + 2);
+                    *LengthVIE += (pEid->Len + 2);
+                }
+                break;
+
+#ifdef CONFIG_STA_SUPPORT
+#if defined (EXT_BUILD_CHANNEL_LIST) || defined (RT_CFG80211_SUPPORT)
+			case IE_COUNTRY:
+				Ptr = (PUCHAR) pVIE;
+                NdisMoveMemory(Ptr + *LengthVIE, &pEid->Eid, pEid->Len + 2);
+                *LengthVIE += (pEid->Len + 2);
+				break;
+#endif // EXT_BUILD_CHANNEL_LIST //
+#endif // CONFIG_STA_SUPPORT //
+
+            case IE_QBSS_LOAD:
+                if (pEid->Len == 5)
+                {
+                    pQbssLoad->bValid = TRUE;
+                    pQbssLoad->StaNum = pEid->Octet[0] + pEid->Octet[1] * 256;
+                    pQbssLoad->ChannelUtilization = pEid->Octet[2];
+                    pQbssLoad->RemainingAdmissionControl = pEid->Octet[3] + pEid->Octet[4] * 256;
+
+					// Copy to pVIE
+                    Ptr = (PUCHAR) pVIE;
+                    NdisMoveMemory(Ptr + *LengthVIE, &pEid->Eid, pEid->Len + 2);
+                    *LengthVIE += (pEid->Len + 2);
+                }
+                break;
+                
+
+
+			case IE_EXT_CAPABILITY:
+			if (pEid->Len >= 1)
+			{
+				NdisMoveMemory(pExtCapInfo,&pEid->Octet[0], sizeof(EXT_CAP_INFO_ELEMENT) /*4*/);
+#ifdef RELEASE_EXCLUDE
+				DBGPRINT(RT_DEBUG_INFO, ("PeerBeaconAndProbeRspSanity - IE_EXT_CAPABILITY(%d)!\n", pEid->Len));
+#endif // RELEASE_EXCLUDE //
+				break;
+			}
+
+            default:
+                break;
+        }
+        
+        Length = Length + 2 + pEid->Len;  // Eid[1] + Len[1]+ content[Len]
+        pEid = (PEID_STRUCT)((UCHAR*)pEid + 2 + pEid->Len);        
+    }
+
+    // For some 11a AP. it did not have the channel EID, patch here
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+		UCHAR LatchRfChannel = MsgChannel;
+		if ((pAd->LatchRfRegs.Channel > 14) && ((Sanity & 0x4) == 0))
+		{
+			if (CtrlChannel != 0)
+				*pChannel = CtrlChannel;
+			else
+				*pChannel = LatchRfChannel;
+			Sanity |= 0x4;
+		}
+	}
+#endif // CONFIG_STA_SUPPORT //
+
+	if (Sanity != 0x7)
+	{
+		DBGPRINT(RT_DEBUG_LOUD, ("PeerBeaconAndProbeRspSanity - missing field, Sanity=0x%02x\n", Sanity));
+		return FALSE;
+	}
+	else
+	{
+		return TRUE;
+	}
+
+}
+
+#ifdef DOT11N_DRAFT3
+/* 
+	==========================================================================
+	Description:
+		MLME message sanity check for some IE addressed  in 802.11n d3.03.
+	Return:
+		TRUE if all parameters are OK, FALSE otherwise
+
+	IRQL = DISPATCH_LEVEL
+
+	==========================================================================
+ */
+BOOLEAN PeerBeaconAndProbeRspSanity2(
+	IN PRTMP_ADAPTER pAd, 
+	IN VOID *Msg, 
+	IN ULONG MsgLen, 
+	IN OVERLAP_BSS_SCAN_IE *BssScan,
+	OUT UCHAR 	*RegClass)
+{
+	CHAR				*Ptr;
+	PFRAME_802_11		pFrame;
+	PEID_STRUCT			pEid;
+	ULONG				Length = 0;	
+	BOOLEAN				brc;
+
+	pFrame = (PFRAME_802_11)Msg;
+
+	*RegClass = 0;
+	Ptr = pFrame->Octet;
+	Length += LENGTH_802_11;
+
+	// get timestamp from payload and advance the pointer
+	Ptr += TIMESTAMP_LEN;
+	Length += TIMESTAMP_LEN;
+
+	// get beacon interval from payload and advance the pointer
+	Ptr += 2;
+	Length += 2;
+
+	// get capability info from payload and advance the pointer
+	Ptr += 2;
+	Length += 2;
+
+	pEid = (PEID_STRUCT) Ptr;
+	brc = FALSE;
+
+	RTMPZeroMemory(BssScan, sizeof(OVERLAP_BSS_SCAN_IE));
+	// get variable fields from payload and advance the pointer
+	while ((Length + 2 + pEid->Len) <= MsgLen)	  
+	{	
+		switch(pEid->Eid)
+		{
+			case IE_SUPP_REG_CLASS:
+				if(pEid->Len > 0)
+				{
+					*RegClass = *pEid->Octet;
+				}
+				else
+				{
+					DBGPRINT(RT_DEBUG_TRACE, ("PeerBeaconAndProbeRspSanity - wrong IE_SUPP_REG_CLASS (len=%d)\n",pEid->Len));
+				}
+				break;
+			case IE_OVERLAPBSS_SCAN_PARM:
+				if (pEid->Len == sizeof(OVERLAP_BSS_SCAN_IE))
+				{
+					brc = TRUE;
+					RTMPMoveMemory(BssScan, pEid->Octet, sizeof(OVERLAP_BSS_SCAN_IE));
+				}
+				else
+				{
+					DBGPRINT(RT_DEBUG_TRACE, ("PeerBeaconAndProbeRspSanity - wrong IE_OVERLAPBSS_SCAN_PARM (len=%d)\n",pEid->Len));
+				}
+				break;
+
+			case IE_EXT_CHANNEL_SWITCH_ANNOUNCEMENT:
+				DBGPRINT(RT_DEBUG_TRACE, ("PeerBeaconAndProbeRspSanity - IE_EXT_CHANNEL_SWITCH_ANNOUNCEMENT\n"));
+				break;
+
+		}
+
+		Length = Length + 2 + pEid->Len;  // Eid[1] + Len[1]+ content[Len]	
+		pEid = (PEID_STRUCT)((UCHAR*)pEid + 2 + pEid->Len); 	   
+	}
+
+	return brc;
+
+}
+#endif // DOT11N_DRAFT3 //
+
+#if defined(AP_SCAN_SUPPORT) || defined(CONFIG_STA_SUPPORT)
+/* 
+    ==========================================================================
+    Description:
+        MLME message sanity check
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+    ==========================================================================
+ */
+BOOLEAN MlmeScanReqSanity(
+	IN PRTMP_ADAPTER pAd, 
+	IN VOID *Msg, 
+	IN ULONG MsgLen, 
+	OUT UCHAR *pBssType, 
+	OUT CHAR Ssid[], 
+	OUT UCHAR *pSsidLen, 
+	OUT UCHAR *pScanType) 
+{
+	MLME_SCAN_REQ_STRUCT *Info;
+
+	Info = (MLME_SCAN_REQ_STRUCT *)(Msg);
+	*pBssType = Info->BssType;
+	*pSsidLen = Info->SsidLen;	
+	NdisMoveMemory(Ssid, Info->Ssid, *pSsidLen);
+	*pScanType = Info->ScanType;
+
+	if ((*pBssType == BSS_INFRA || *pBssType == BSS_ADHOC || *pBssType == BSS_ANY)
+		&& (*pScanType == SCAN_ACTIVE || *pScanType == SCAN_PASSIVE
+#ifdef DOT11_N_SUPPORT
+#ifdef DOT11N_DRAFT3
+		|| (*pScanType == SCAN_2040_BSS_COEXIST) 
+#endif //DOT11N_DRAFT3 //
+#endif // DOT11_N_SUPPORT //
+		))
+	{
+		return TRUE;
+	}
+	else
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("MlmeScanReqSanity fail - wrong BssType or ScanType\n"));
+		return FALSE;
+	}
+}
+#endif
+
+// IRQL = DISPATCH_LEVEL
+UCHAR ChannelSanity(
+    IN PRTMP_ADAPTER pAd, 
+    IN UCHAR channel)
+{
+    int i;
+
+    for (i = 0; i < pAd->ChannelListNum; i ++)
+    {
+        if (channel == pAd->ChannelList[i].Channel)
+            return 1;
+    }
+    return 0;
+}
+
+/* 
+    ==========================================================================
+    Description:
+        MLME message sanity check
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+        
+	IRQL = DISPATCH_LEVEL
+
+    ==========================================================================
+ */
+BOOLEAN PeerDeauthSanity(
+    IN PRTMP_ADAPTER pAd, 
+    IN VOID *Msg, 
+    IN ULONG MsgLen, 
+    OUT PUCHAR pAddr1, 
+    OUT PUCHAR pAddr2, 
+    OUT PUCHAR pAddr3, 
+    OUT USHORT *pReason) 
+{
+    PFRAME_802_11 pFrame = (PFRAME_802_11)Msg;
+
+	COPY_MAC_ADDR(pAddr1, pFrame->Hdr.Addr1);
+    COPY_MAC_ADDR(pAddr2, pFrame->Hdr.Addr2);
+	COPY_MAC_ADDR(pAddr3, pFrame->Hdr.Addr3);
+    NdisMoveMemory(pReason, &pFrame->Octet[0], 2);
+
+    return TRUE;
+}
+
+/* 
+    ==========================================================================
+    Description:
+        MLME message sanity check
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+        
+	IRQL = DISPATCH_LEVEL
+
+    ==========================================================================
+ */
+BOOLEAN PeerAuthSanity(
+    IN PRTMP_ADAPTER pAd, 
+    IN VOID *Msg, 
+    IN ULONG MsgLen, 
+    OUT PUCHAR pAddr, 
+    OUT USHORT *pAlg, 
+    OUT USHORT *pSeq, 
+    OUT USHORT *pStatus, 
+    CHAR *pChlgText) 
+{
+    PFRAME_802_11 pFrame = (PFRAME_802_11)Msg;
+
+    COPY_MAC_ADDR(pAddr,   pFrame->Hdr.Addr2);
+    NdisMoveMemory(pAlg,    &pFrame->Octet[0], 2);
+    NdisMoveMemory(pSeq,    &pFrame->Octet[2], 2);
+    NdisMoveMemory(pStatus, &pFrame->Octet[4], 2);
+
+    if (*pAlg == AUTH_MODE_OPEN)
+    {
+        if (*pSeq == 1 || *pSeq == 2) 
+        {
+            return TRUE;
+        } 
+        else 
+        {
+            DBGPRINT(RT_DEBUG_TRACE, ("PeerAuthSanity fail - wrong Seg#\n"));
+            return FALSE;
+        }
+    } 
+    else if (*pAlg == AUTH_MODE_KEY) 
+    {
+        if (*pSeq == 1 || *pSeq == 4) 
+        {
+            return TRUE;
+        } 
+        else if (*pSeq == 2 || *pSeq == 3) 
+        {
+            NdisMoveMemory(pChlgText, &pFrame->Octet[8], CIPHER_TEXT_LEN);
+            return TRUE;
+        } 
+        else 
+        {
+            DBGPRINT(RT_DEBUG_TRACE, ("PeerAuthSanity fail - wrong Seg#\n"));
+            return FALSE;
+        }
+    } 
+    else 
+    {
+        DBGPRINT(RT_DEBUG_TRACE, ("PeerAuthSanity fail - wrong algorithm\n"));
+        return FALSE;
+    }
+}
+
+/* 
+    ==========================================================================
+    Description:
+        MLME message sanity check
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+    ==========================================================================
+ */
+BOOLEAN MlmeAuthReqSanity(
+    IN PRTMP_ADAPTER pAd, 
+    IN VOID *Msg, 
+    IN ULONG MsgLen, 
+    OUT PUCHAR pAddr, 
+    OUT ULONG *pTimeout, 
+    OUT USHORT *pAlg) 
+{
+    MLME_AUTH_REQ_STRUCT *pInfo;
+
+    pInfo  = (MLME_AUTH_REQ_STRUCT *)Msg;
+    COPY_MAC_ADDR(pAddr, pInfo->Addr);
+    *pTimeout = pInfo->Timeout;
+    *pAlg = pInfo->Alg;
+    
+    if (((*pAlg == AUTH_MODE_KEY) ||(*pAlg == AUTH_MODE_OPEN)
+     	) && 
+        ((*pAddr & 0x01) == 0)) 
+    {
+        return TRUE;
+    } 
+    else 
+    {
+        DBGPRINT(RT_DEBUG_TRACE, ("MlmeAuthReqSanity fail - wrong algorithm\n"));
+        return FALSE;
+    }
+}
+
+/* 
+    ==========================================================================
+    Description:
+        MLME message sanity check
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+        
+	IRQL = DISPATCH_LEVEL
+
+    ==========================================================================
+ */
+BOOLEAN MlmeAssocReqSanity(
+    IN PRTMP_ADAPTER pAd, 
+    IN VOID *Msg, 
+    IN ULONG MsgLen, 
+    OUT PUCHAR pApAddr, 
+    OUT USHORT *pCapabilityInfo, 
+    OUT ULONG *pTimeout, 
+    OUT USHORT *pListenIntv) 
+{
+    MLME_ASSOC_REQ_STRUCT *pInfo;
+
+    pInfo = (MLME_ASSOC_REQ_STRUCT *)Msg;
+    *pTimeout = pInfo->Timeout;                             // timeout
+    COPY_MAC_ADDR(pApAddr, pInfo->Addr);                   // AP address
+    *pCapabilityInfo = pInfo->CapabilityInfo;               // capability info
+    *pListenIntv = pInfo->ListenIntv;
+    
+    return TRUE;
+}
+
+/* 
+    ==========================================================================
+    Description:
+        MLME message sanity check
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+        
+	IRQL = DISPATCH_LEVEL
+
+    ==========================================================================
+ */
+BOOLEAN PeerDisassocSanity(
+    IN PRTMP_ADAPTER pAd, 
+    IN VOID *Msg, 
+    IN ULONG MsgLen, 
+    OUT PUCHAR pAddr2, 
+    OUT USHORT *pReason) 
+{
+    PFRAME_802_11 pFrame = (PFRAME_802_11)Msg;
+
+    COPY_MAC_ADDR(pAddr2, pFrame->Hdr.Addr2);
+    NdisMoveMemory(pReason, &pFrame->Octet[0], 2);
+
+    return TRUE;
+}
+
+/*
+	========================================================================
+	Routine Description:
+		Sanity check NetworkType (11b, 11g or 11a)
+		
+	Arguments:
+		pBss - Pointer to BSS table.
+
+	Return Value:
+        Ndis802_11DS .......(11b)
+        Ndis802_11OFDM24....(11g)
+        Ndis802_11OFDM5.....(11a)
+        
+	IRQL = DISPATCH_LEVEL
+	
+	========================================================================
+*/
+NDIS_802_11_NETWORK_TYPE NetworkTypeInUseSanity(
+    IN PBSS_ENTRY pBss)
+{
+	NDIS_802_11_NETWORK_TYPE	NetWorkType;
+	UCHAR						rate, i;
+
+	NetWorkType = Ndis802_11DS;
+	
+	if (pBss->Channel <= 14)
+	{
+		//
+		// First check support Rate.
+		//
+		for (i = 0; i < pBss->SupRateLen; i++)
+		{
+			rate = pBss->SupRate[i] & 0x7f; // Mask out basic rate set bit
+			if ((rate == 2) || (rate == 4) || (rate == 11) || (rate == 22))
+			{
+				continue;
+			}
+			else
+			{
+				//
+				// Otherwise (even rate > 108) means Ndis802_11OFDM24
+				//
+				NetWorkType = Ndis802_11OFDM24;
+				break;
+			}	
+		}
+
+		//
+		// Second check Extend Rate.
+		//
+		if (NetWorkType != Ndis802_11OFDM24)
+		{
+			for (i = 0; i < pBss->ExtRateLen; i++)
+			{
+				rate = pBss->SupRate[i] & 0x7f; // Mask out basic rate set bit
+				if ((rate == 2) || (rate == 4) || (rate == 11) || (rate == 22))
+				{
+					continue;
+				}
+				else
+				{
+					//
+					// Otherwise (even rate > 108) means Ndis802_11OFDM24
+					//
+					NetWorkType = Ndis802_11OFDM24;
+					break;
+				}
+			}
+		}
+	}
+	else
+	{
+		NetWorkType = Ndis802_11OFDM5;
+	}
+
+    if (pBss->HtCapabilityLen != 0)
+    {
+        if (NetWorkType == Ndis802_11OFDM5)
+            NetWorkType = Ndis802_11OFDM5_N;
+        else
+            NetWorkType = Ndis802_11OFDM24_N;
+    }
+
+	return NetWorkType;
+}	
+
+#ifdef CONFIG_STA_SUPPORT
+#ifdef QOS_DLS_SUPPORT
+BOOLEAN MlmeDlsReqSanity(
+	IN PRTMP_ADAPTER pAd, 
+    IN VOID *Msg, 
+    IN ULONG MsgLen,
+    OUT PRT_802_11_DLS *pDLS,
+    OUT PUSHORT pReason)
+{
+	MLME_DLS_REQ_STRUCT *pInfo;
+
+    pInfo = (MLME_DLS_REQ_STRUCT *)Msg;
+    
+	*pDLS = pInfo->pDLS;
+	*pReason = pInfo->Reason;
+
+	return TRUE;
+}
+#endif // QOS_DLS_SUPPORT //
+#endif // CONFIG_STA_SUPPORT //
+
+#ifdef QOS_DLS_SUPPORT
+BOOLEAN PeerDlsReqSanity(
+    IN PRTMP_ADAPTER pAd, 
+    IN VOID *Msg, 
+    IN ULONG MsgLen,
+    OUT PUCHAR pDA,
+    OUT PUCHAR pSA,
+    OUT USHORT *pCapabilityInfo, 
+    OUT USHORT *pDlsTimeout,
+    OUT UCHAR *pRatesLen,
+    OUT UCHAR Rates[],
+	OUT UCHAR *pHtCapabilityLen,
+    OUT HT_CAPABILITY_IE *pHtCapability)
+{
+	CHAR            *Ptr;
+    PFRAME_802_11	Fr = (PFRAME_802_11)Msg;
+	PEID_STRUCT  eid_ptr;
+
+    // to prevent caller from using garbage output value
+    *pCapabilityInfo	= 0;
+    *pDlsTimeout	= 0;
+	*pHtCapabilityLen = 0;
+
+    Ptr = (PCHAR)Fr->Octet;
+
+	// offset to destination MAC address (Category and Action field)
+    Ptr += 2;
+
+    // get DA from payload and advance the pointer
+    NdisMoveMemory(pDA, Ptr, MAC_ADDR_LEN);
+    Ptr += MAC_ADDR_LEN;
+
+    // get SA from payload and advance the pointer
+    NdisMoveMemory(pSA, Ptr, MAC_ADDR_LEN);
+    Ptr += MAC_ADDR_LEN;
+
+    // get capability info from payload and advance the pointer
+    NdisMoveMemory(pCapabilityInfo, Ptr, 2);
+    Ptr += 2;
+
+    // get capability info from payload and advance the pointer
+    NdisMoveMemory(pDlsTimeout, Ptr, 2);
+    Ptr += 2;
+
+	// Category and Action field + DA + SA + capability + Timeout
+	eid_ptr = (PEID_STRUCT) &Fr->Octet[18];	
+
+	while (((UCHAR*)eid_ptr + eid_ptr->Len + 1) < ((UCHAR*)Fr + MsgLen))
+	{
+		switch(eid_ptr->Eid)
+		{
+			case IE_SUPP_RATES:
+                if ((eid_ptr->Len <= MAX_LEN_OF_SUPPORTED_RATES) && (eid_ptr->Len > 0))
+                {
+                    NdisMoveMemory(Rates, eid_ptr->Octet, eid_ptr->Len);
+                    DBGPRINT(RT_DEBUG_TRACE, ("PeerDlsReqSanity - IE_SUPP_RATES., Len=%d. Rates[0]=%x\n",eid_ptr->Len, Rates[0]));
+                    DBGPRINT(RT_DEBUG_TRACE, ("Rates[1]=%x %x %x %x %x %x %x\n", Rates[1], Rates[2], Rates[3], Rates[4], Rates[5], Rates[6], Rates[7]));
+                    *pRatesLen = eid_ptr->Len;
+                }
+                else
+                {
+                    *pRatesLen = 8;
+					Rates[0] = 0x82;
+					Rates[1] = 0x84;
+					Rates[2] = 0x8b;
+					Rates[3] = 0x96;
+					Rates[4] = 0x12;
+					Rates[5] = 0x24;
+					Rates[6] = 0x48;
+					Rates[7] = 0x6c;
+                    DBGPRINT(RT_DEBUG_TRACE, ("PeerDlsReqSanity - wrong IE_SUPP_RATES., Len=%d\n",eid_ptr->Len));
+                }
+				break;
+
+			case IE_EXT_SUPP_RATES:
+                if (eid_ptr->Len + *pRatesLen <= MAX_LEN_OF_SUPPORTED_RATES)
+                {
+                    NdisMoveMemory(&Rates[*pRatesLen], eid_ptr->Octet, eid_ptr->Len);
+                    *pRatesLen = (*pRatesLen) + eid_ptr->Len;
+                }
+                else
+                {
+                    NdisMoveMemory(&Rates[*pRatesLen], eid_ptr->Octet, MAX_LEN_OF_SUPPORTED_RATES - (*pRatesLen));
+                    *pRatesLen = MAX_LEN_OF_SUPPORTED_RATES;
+                }
+				break;
+
+			case IE_HT_CAP:
+				if (eid_ptr->Len >= sizeof(HT_CAPABILITY_IE))
+				{
+					NdisMoveMemory(pHtCapability, eid_ptr->Octet, sizeof(HT_CAPABILITY_IE));
+
+					*(USHORT *)(&pHtCapability->HtCapInfo) = cpu2le16(*(USHORT *)(&pHtCapability->HtCapInfo));
+#ifdef UNALIGNMENT_SUPPORT
+					{
+						EXT_HT_CAP_INFO extHtCapInfo;
+
+						NdisMoveMemory((PUCHAR)(&extHtCapInfo), (PUCHAR)(&pHtCapability->ExtHtCapInfo), sizeof(EXT_HT_CAP_INFO));
+						*(USHORT *)(&extHtCapInfo) = cpu2le16(*(USHORT *)(&extHtCapInfo));
+						NdisMoveMemory((PUCHAR)(&pHtCapability->ExtHtCapInfo), (PUCHAR)(&extHtCapInfo), sizeof(EXT_HT_CAP_INFO));		
+					}
+#else				
+					*(USHORT *)(&pHtCapability->ExtHtCapInfo) = cpu2le16(*(USHORT *)(&pHtCapability->ExtHtCapInfo));
+#endif // UNALIGNMENT_SUPPORT //
+					*pHtCapabilityLen = sizeof(HT_CAPABILITY_IE);
+
+					DBGPRINT(RT_DEBUG_TRACE, ("PeerDlsReqSanity - IE_HT_CAP\n"));
+				}
+				else
+				{
+					DBGPRINT(RT_DEBUG_TRACE, ("PeerDlsReqSanity - wrong IE_HT_CAP.eid_ptr->Len = %d\n", eid_ptr->Len));
+				}
+				break;
+
+			default:
+				break;
+		}
+
+		eid_ptr = (PEID_STRUCT)((UCHAR*)eid_ptr + 2 + eid_ptr->Len);
+	}
+
+    return TRUE;
+}
+
+BOOLEAN PeerDlsRspSanity(
+    IN PRTMP_ADAPTER pAd, 
+    IN VOID *Msg, 
+    IN ULONG MsgLen,
+    OUT PUCHAR pDA,
+    OUT PUCHAR pSA,
+    OUT USHORT *pCapabilityInfo, 
+    OUT USHORT *pStatus,
+    OUT UCHAR *pRatesLen,
+    OUT UCHAR Rates[],
+    OUT UCHAR *pHtCapabilityLen,
+    OUT HT_CAPABILITY_IE *pHtCapability) 
+{
+    CHAR            *Ptr;
+    PFRAME_802_11	Fr = (PFRAME_802_11)Msg;
+	PEID_STRUCT  eid_ptr;
+
+    // to prevent caller from using garbage output value
+    *pStatus		= 0;
+    *pCapabilityInfo	= 0;
+	*pHtCapabilityLen = 0;
+
+    Ptr = (PCHAR)Fr->Octet;
+
+	// offset to destination MAC address (Category and Action field)
+    Ptr += 2;
+
+	// get status code from payload and advance the pointer
+    NdisMoveMemory(pStatus, Ptr, 2);
+    Ptr += 2;
+
+    // get DA from payload and advance the pointer
+    NdisMoveMemory(pDA, Ptr, MAC_ADDR_LEN);
+    Ptr += MAC_ADDR_LEN;
+
+    // get SA from payload and advance the pointer
+    NdisMoveMemory(pSA, Ptr, MAC_ADDR_LEN);
+    Ptr += MAC_ADDR_LEN;
+
+	if (pStatus == 0)
+	{
+	    // get capability info from payload and advance the pointer
+	    NdisMoveMemory(pCapabilityInfo, Ptr, 2);
+	    Ptr += 2;
+	}
+
+	// Category and Action field + status code + DA + SA + capability
+	eid_ptr = (PEID_STRUCT) &Fr->Octet[18];	
+
+	while (((UCHAR*)eid_ptr + eid_ptr->Len + 1) < ((UCHAR*)Fr + MsgLen))
+	{
+		switch(eid_ptr->Eid)
+		{
+			case IE_SUPP_RATES:
+                if ((eid_ptr->Len <= MAX_LEN_OF_SUPPORTED_RATES) && (eid_ptr->Len > 0))
+                {
+                    NdisMoveMemory(Rates, eid_ptr->Octet, eid_ptr->Len);
+                    DBGPRINT(RT_DEBUG_TRACE, ("PeerDlsRspSanity - IE_SUPP_RATES., Len=%d. Rates[0]=%x\n",eid_ptr->Len, Rates[0]));
+                    DBGPRINT(RT_DEBUG_TRACE, ("Rates[1]=%x %x %x %x %x %x %x\n", Rates[1], Rates[2], Rates[3], Rates[4], Rates[5], Rates[6], Rates[7]));
+                    *pRatesLen = eid_ptr->Len;
+                }
+                else
+                {
+                    *pRatesLen = 8;
+					Rates[0] = 0x82;
+					Rates[1] = 0x84;
+					Rates[2] = 0x8b;
+					Rates[3] = 0x96;
+					Rates[4] = 0x12;
+					Rates[5] = 0x24;
+					Rates[6] = 0x48;
+					Rates[7] = 0x6c;
+                    DBGPRINT(RT_DEBUG_TRACE, ("PeerDlsRspSanity - wrong IE_SUPP_RATES., Len=%d\n",eid_ptr->Len));
+                }
+				break;
+
+			case IE_EXT_SUPP_RATES:
+                if (eid_ptr->Len + *pRatesLen <= MAX_LEN_OF_SUPPORTED_RATES)
+                {
+                    NdisMoveMemory(&Rates[*pRatesLen], eid_ptr->Octet, eid_ptr->Len);
+                    *pRatesLen = (*pRatesLen) + eid_ptr->Len;
+                }
+                else
+                {
+                    NdisMoveMemory(&Rates[*pRatesLen], eid_ptr->Octet, MAX_LEN_OF_SUPPORTED_RATES - (*pRatesLen));
+                    *pRatesLen = MAX_LEN_OF_SUPPORTED_RATES;
+                }
+				break;
+
+			case IE_HT_CAP:
+				if (eid_ptr->Len >= sizeof(HT_CAPABILITY_IE))
+				{
+					NdisMoveMemory(pHtCapability, eid_ptr->Octet, sizeof(HT_CAPABILITY_IE));
+
+					*(USHORT *)(&pHtCapability->HtCapInfo) = cpu2le16(*(USHORT *)(&pHtCapability->HtCapInfo));
+#ifdef UNALIGNMENT_SUPPORT
+					{
+						EXT_HT_CAP_INFO extHtCapInfo;
+
+						NdisMoveMemory((PUCHAR)(&extHtCapInfo), (PUCHAR)(&pHtCapability->ExtHtCapInfo), sizeof(EXT_HT_CAP_INFO));
+						*(USHORT *)(&extHtCapInfo) = cpu2le16(*(USHORT *)(&extHtCapInfo));
+						NdisMoveMemory((PUCHAR)(&pHtCapability->ExtHtCapInfo), (PUCHAR)(&extHtCapInfo), sizeof(EXT_HT_CAP_INFO));		
+					}
+#else				
+					*(USHORT *)(&pHtCapability->ExtHtCapInfo) = cpu2le16(*(USHORT *)(&pHtCapability->ExtHtCapInfo));
+#endif // UNALIGNMENT_SUPPORT //
+					*pHtCapabilityLen = sizeof(HT_CAPABILITY_IE);
+
+					DBGPRINT(RT_DEBUG_TRACE, ("PeerDlsRspSanity - IE_HT_CAP\n"));
+				}
+				else
+				{
+					DBGPRINT(RT_DEBUG_TRACE, ("PeerDlsRspSanity - wrong IE_HT_CAP.eid_ptr->Len = %d\n", eid_ptr->Len));
+				}
+				break;
+
+			default:
+				break;
+		}
+
+		eid_ptr = (PEID_STRUCT)((UCHAR*)eid_ptr + 2 + eid_ptr->Len);
+	}
+
+    return TRUE;
+}
+
+BOOLEAN PeerDlsTearDownSanity(
+    IN PRTMP_ADAPTER pAd, 
+    IN VOID *Msg, 
+    IN ULONG MsgLen,
+    OUT PUCHAR pDA,
+    OUT PUCHAR pSA,
+    OUT USHORT *pReason) 
+{
+    CHAR            *Ptr;
+    PFRAME_802_11	Fr = (PFRAME_802_11)Msg;
+
+    // to prevent caller from using garbage output value
+    *pReason	= 0;
+
+    Ptr = (PCHAR)Fr->Octet;
+
+	// offset to destination MAC address (Category and Action field)
+    Ptr += 2;
+
+    // get DA from payload and advance the pointer
+    NdisMoveMemory(pDA, Ptr, MAC_ADDR_LEN);
+    Ptr += MAC_ADDR_LEN;
+
+    // get SA from payload and advance the pointer
+    NdisMoveMemory(pSA, Ptr, MAC_ADDR_LEN);
+    Ptr += MAC_ADDR_LEN;
+
+	// get reason code from payload and advance the pointer
+    NdisMoveMemory(pReason, Ptr, 2);
+    Ptr += 2;
+
+    return TRUE;
+}
+#endif // QOS_DLS_SUPPORT //
+
+/* 
+    ==========================================================================
+    Description:
+        MLME message sanity check
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+    ==========================================================================
+ */
+BOOLEAN PeerProbeReqSanity(
+    IN PRTMP_ADAPTER pAd, 
+    IN VOID *Msg, 
+    IN ULONG MsgLen, 
+    OUT PUCHAR pAddr2,
+    OUT CHAR Ssid[], 
+    OUT UCHAR *SsidLen, 
+    OUT BOOLEAN *bRssiRequested)
+{
+    PFRAME_802_11 Fr = (PFRAME_802_11)Msg;
+    UCHAR		*Ptr;
+    UCHAR		eid =0, eid_len = 0, *eid_data;
+	UINT		total_ie_len = 0;	
+
+    // to prevent caller from using garbage output value
+    *SsidLen = 0;
+
+    COPY_MAC_ADDR(pAddr2, &Fr->Hdr.Addr2);
+
+    if (Fr->Octet[0] != IE_SSID || Fr->Octet[1] > MAX_LEN_OF_SSID) 
+    {
+        DBGPRINT(RT_DEBUG_TRACE, ("APPeerProbeReqSanity fail - wrong SSID IE\n"));
+        return FALSE;
+    } 
+    
+    *SsidLen = Fr->Octet[1];
+    NdisMoveMemory(Ssid, &Fr->Octet[2], *SsidLen);
+	
+
+    Ptr = Fr->Octet;
+    eid = Ptr[0];
+    eid_len = Ptr[1];
+	total_ie_len = eid_len + 2;
+	eid_data = Ptr+2;
+    
+    // get variable fields from payload and advance the pointer
+	while((eid_data + eid_len) <= ((UCHAR*)Fr + MsgLen))
+    {    	
+        switch(eid)
+        {
+	        case IE_VENDOR_SPECIFIC:
+				if (eid_len <= 4)
+					break;
+#ifdef RSSI_FEEDBACK
+                if (bRssiRequested && NdisEqualMemory(eid_data, RALINK_OUI, 3) && (eid_len == 7))
+                {
+					if (*(eid_data + 3/* skip RALINK_OUI */) & 0x8)
+                    	*bRssiRequested = TRUE;
+                    break;
+                }
+#endif // RSSI_FEEDBACK //
+
+
+            default:
+                break;
+        }
+		eid = Ptr[total_ie_len];
+    	eid_len = Ptr[total_ie_len + 1];
+		eid_data = Ptr + total_ie_len + 2;
+		total_ie_len += (eid_len + 2);
+	}
+
+    return TRUE;
+}
+
+
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_sync.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_sync.c
new file mode 100644
index 000000000..f67b03b3f
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_sync.c
@@ -0,0 +1,841 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+	Module Name:
+	cmm_sync.c
+
+	Abstract:
+
+	Revision History:
+	Who			When			What
+	--------	----------		----------------------------------------------
+	John Chang	2004-09-01      modified for rt2561/2661
+*/
+#include "rt_config.h"
+
+// 2.4 Ghz channel plan index in the TxPower arrays.
+#define	BG_BAND_REGION_0_START	0			// 1,2,3,4,5,6,7,8,9,10,11	
+#define	BG_BAND_REGION_0_SIZE	11
+#define	BG_BAND_REGION_1_START	0			// 1,2,3,4,5,6,7,8,9,10,11,12,13
+#define	BG_BAND_REGION_1_SIZE	13
+#define	BG_BAND_REGION_2_START	9			// 10,11
+#define	BG_BAND_REGION_2_SIZE	2
+#define	BG_BAND_REGION_3_START	9			// 10,11,12,13
+#define	BG_BAND_REGION_3_SIZE	4
+#define	BG_BAND_REGION_4_START	13			// 14
+#define	BG_BAND_REGION_4_SIZE	1
+#define	BG_BAND_REGION_5_START	0			// 1,2,3,4,5,6,7,8,9,10,11,12,13,14 
+#define	BG_BAND_REGION_5_SIZE	14
+#define	BG_BAND_REGION_6_START	2			// 3,4,5,6,7,8,9
+#define	BG_BAND_REGION_6_SIZE	7
+#define	BG_BAND_REGION_7_START	4			// 5,6,7,8,9,10,11,12,13
+#define	BG_BAND_REGION_7_SIZE	9
+#define	BG_BAND_REGION_31_START	0			// 1,2,3,4,5,6,7,8,9,10,11,12,13,14 
+#define	BG_BAND_REGION_31_SIZE	14
+
+// 5 Ghz channel plan index in the TxPower arrays.
+UCHAR A_BAND_REGION_0_CHANNEL_LIST[]={36, 40, 44, 48, 52, 56, 60, 64, 149, 153, 157, 161, 165};
+UCHAR A_BAND_REGION_1_CHANNEL_LIST[]={36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140};
+UCHAR A_BAND_REGION_2_CHANNEL_LIST[]={36, 40, 44, 48, 52, 56, 60, 64};
+UCHAR A_BAND_REGION_3_CHANNEL_LIST[]={52, 56, 60, 64, 149, 153, 157, 161};
+UCHAR A_BAND_REGION_4_CHANNEL_LIST[]={149, 153, 157, 161, 165};
+UCHAR A_BAND_REGION_5_CHANNEL_LIST[]={149, 153, 157, 161};
+UCHAR A_BAND_REGION_6_CHANNEL_LIST[]={36, 40, 44, 48};
+UCHAR A_BAND_REGION_7_CHANNEL_LIST[]={36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 149, 153, 157, 161, 165, 169, 173};
+UCHAR A_BAND_REGION_8_CHANNEL_LIST[]={52, 56, 60, 64};
+UCHAR A_BAND_REGION_9_CHANNEL_LIST[]={36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 132, 136, 140, 149, 153, 157, 161, 165};
+UCHAR A_BAND_REGION_10_CHANNEL_LIST[]={36, 40, 44, 48, 149, 153, 157, 161, 165};
+UCHAR A_BAND_REGION_11_CHANNEL_LIST[]={36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 149, 153, 157, 161};
+UCHAR A_BAND_REGION_12_CHANNEL_LIST[]={36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140};
+UCHAR A_BAND_REGION_13_CHANNEL_LIST[]={52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 149, 153, 157, 161};
+UCHAR A_BAND_REGION_14_CHANNEL_LIST[]={36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 136, 140, 149, 153, 157, 161, 165};
+UCHAR A_BAND_REGION_15_CHANNEL_LIST[]={149, 153, 157, 161, 165, 169, 173};
+UCHAR A_BAND_REGION_16_CHANNEL_LIST[]={52, 56, 60, 64, 149, 153, 157, 161, 165};
+
+
+//BaSizeArray follows the 802.11n definition as MaxRxFactor.  2^(13+factor) bytes. When factor =0, it's about Ba buffer size =8.
+UCHAR BaSizeArray[4] = {8,16,32,64};
+
+/* 
+	==========================================================================
+	Description:
+		Update StaCfg->ChannelList[] according to 1) Country Region 2) RF IC type,
+		and 3) PHY-mode user selected.
+		The outcome is used by driver when doing site survey.
+
+	IRQL = PASSIVE_LEVEL
+	IRQL = DISPATCH_LEVEL
+	
+	==========================================================================
+ */
+VOID BuildChannelList(
+	IN PRTMP_ADAPTER pAd)
+{
+	UCHAR i, j, index=0, num=0;
+	PUCHAR	pChannelList = NULL;
+
+	NdisZeroMemory(pAd->ChannelList, MAX_NUM_OF_CHANNELS * sizeof(CHANNEL_TX_POWER));
+
+	// if not 11a-only mode, channel list starts from 2.4Ghz band
+	if ((pAd->CommonCfg.PhyMode != PHY_11A) 
+#ifdef DOT11_N_SUPPORT
+		&& (pAd->CommonCfg.PhyMode != PHY_11AN_MIXED) && (pAd->CommonCfg.PhyMode != PHY_11N_5G)
+#endif // DOT11_N_SUPPORT //
+	)
+	{
+		switch (pAd->CommonCfg.CountryRegion  & 0x7f)
+		{
+			case REGION_0_BG_BAND:	// 1 -11
+				NdisMoveMemory(&pAd->ChannelList[index], &pAd->TxPower[BG_BAND_REGION_0_START], sizeof(CHANNEL_TX_POWER) * BG_BAND_REGION_0_SIZE);
+				index += BG_BAND_REGION_0_SIZE;
+				break;
+			case REGION_1_BG_BAND:	// 1 - 13
+				NdisMoveMemory(&pAd->ChannelList[index], &pAd->TxPower[BG_BAND_REGION_1_START], sizeof(CHANNEL_TX_POWER) * BG_BAND_REGION_1_SIZE);
+				index += BG_BAND_REGION_1_SIZE;
+				break;
+			case REGION_2_BG_BAND:	// 10 - 11
+				NdisMoveMemory(&pAd->ChannelList[index], &pAd->TxPower[BG_BAND_REGION_2_START], sizeof(CHANNEL_TX_POWER) * BG_BAND_REGION_2_SIZE);
+				index += BG_BAND_REGION_2_SIZE;
+				break;
+			case REGION_3_BG_BAND:	// 10 - 13
+				NdisMoveMemory(&pAd->ChannelList[index], &pAd->TxPower[BG_BAND_REGION_3_START], sizeof(CHANNEL_TX_POWER) * BG_BAND_REGION_3_SIZE);
+				index += BG_BAND_REGION_3_SIZE;
+				break;
+			case REGION_4_BG_BAND:	// 14
+				NdisMoveMemory(&pAd->ChannelList[index], &pAd->TxPower[BG_BAND_REGION_4_START], sizeof(CHANNEL_TX_POWER) * BG_BAND_REGION_4_SIZE);
+				index += BG_BAND_REGION_4_SIZE;
+				break;
+			case REGION_5_BG_BAND:	// 1 - 14
+				NdisMoveMemory(&pAd->ChannelList[index], &pAd->TxPower[BG_BAND_REGION_5_START], sizeof(CHANNEL_TX_POWER) * BG_BAND_REGION_5_SIZE);
+				index += BG_BAND_REGION_5_SIZE;
+				break;
+			case REGION_6_BG_BAND:	// 3 - 9
+				NdisMoveMemory(&pAd->ChannelList[index], &pAd->TxPower[BG_BAND_REGION_6_START], sizeof(CHANNEL_TX_POWER) * BG_BAND_REGION_6_SIZE);
+				index += BG_BAND_REGION_6_SIZE;
+				break;
+			case REGION_7_BG_BAND:  // 5 - 13
+				NdisMoveMemory(&pAd->ChannelList[index], &pAd->TxPower[BG_BAND_REGION_7_START], sizeof(CHANNEL_TX_POWER) * BG_BAND_REGION_7_SIZE);
+				index += BG_BAND_REGION_7_SIZE;
+				break;
+			case REGION_31_BG_BAND:	// 1 - 14
+				NdisMoveMemory(&pAd->ChannelList[index], &pAd->TxPower[BG_BAND_REGION_31_START], sizeof(CHANNEL_TX_POWER) * BG_BAND_REGION_31_SIZE);
+				index += BG_BAND_REGION_31_SIZE;
+				break;
+			default:            // Error. should never happen
+				break;
+		}   
+		for (i=0; i<index; i++)
+			pAd->ChannelList[i].MaxTxPwr = 20;
+	}
+
+	if ((pAd->CommonCfg.PhyMode == PHY_11A) || (pAd->CommonCfg.PhyMode == PHY_11ABG_MIXED) 
+#ifdef DOT11_N_SUPPORT
+		|| (pAd->CommonCfg.PhyMode == PHY_11ABGN_MIXED) || (pAd->CommonCfg.PhyMode == PHY_11AN_MIXED) 
+		|| (pAd->CommonCfg.PhyMode == PHY_11AGN_MIXED) || (pAd->CommonCfg.PhyMode == PHY_11N_5G)
+#endif // DOT11_N_SUPPORT //
+	)
+	{
+		switch (pAd->CommonCfg.CountryRegionForABand & 0x7f)
+		{
+			case REGION_0_A_BAND:
+				num = sizeof(A_BAND_REGION_0_CHANNEL_LIST)/sizeof(UCHAR);
+				pChannelList = A_BAND_REGION_0_CHANNEL_LIST;
+				break;
+			case REGION_1_A_BAND:
+				num = sizeof(A_BAND_REGION_1_CHANNEL_LIST)/sizeof(UCHAR);
+				pChannelList = A_BAND_REGION_1_CHANNEL_LIST;
+				break;
+			case REGION_2_A_BAND:
+				num = sizeof(A_BAND_REGION_2_CHANNEL_LIST)/sizeof(UCHAR);
+				pChannelList = A_BAND_REGION_2_CHANNEL_LIST;
+				break;
+			case REGION_3_A_BAND:
+				num = sizeof(A_BAND_REGION_3_CHANNEL_LIST)/sizeof(UCHAR);
+				pChannelList = A_BAND_REGION_3_CHANNEL_LIST;
+				break;
+			case REGION_4_A_BAND:
+				num = sizeof(A_BAND_REGION_4_CHANNEL_LIST)/sizeof(UCHAR);
+				pChannelList = A_BAND_REGION_4_CHANNEL_LIST;
+				break;
+			case REGION_5_A_BAND:
+				num = sizeof(A_BAND_REGION_5_CHANNEL_LIST)/sizeof(UCHAR);
+				pChannelList = A_BAND_REGION_5_CHANNEL_LIST;
+				break;
+			case REGION_6_A_BAND:
+				num = sizeof(A_BAND_REGION_6_CHANNEL_LIST)/sizeof(UCHAR);
+				pChannelList = A_BAND_REGION_6_CHANNEL_LIST;
+				break;
+			case REGION_7_A_BAND:
+				num = sizeof(A_BAND_REGION_7_CHANNEL_LIST)/sizeof(UCHAR);
+				pChannelList = A_BAND_REGION_7_CHANNEL_LIST;
+				break;
+			case REGION_8_A_BAND:
+				num = sizeof(A_BAND_REGION_8_CHANNEL_LIST)/sizeof(UCHAR);
+				pChannelList = A_BAND_REGION_8_CHANNEL_LIST;
+				break;
+			case REGION_9_A_BAND:
+				num = sizeof(A_BAND_REGION_9_CHANNEL_LIST)/sizeof(UCHAR);
+				pChannelList = A_BAND_REGION_9_CHANNEL_LIST;
+				break;
+			case REGION_10_A_BAND:
+				num = sizeof(A_BAND_REGION_10_CHANNEL_LIST)/sizeof(UCHAR);
+				pChannelList = A_BAND_REGION_10_CHANNEL_LIST;
+				break;
+			case REGION_11_A_BAND:
+				num = sizeof(A_BAND_REGION_11_CHANNEL_LIST)/sizeof(UCHAR);
+				pChannelList = A_BAND_REGION_11_CHANNEL_LIST;
+				break;	
+			case REGION_12_A_BAND:
+				num = sizeof(A_BAND_REGION_12_CHANNEL_LIST)/sizeof(UCHAR);
+				pChannelList = A_BAND_REGION_12_CHANNEL_LIST;
+				break;
+			case REGION_13_A_BAND:
+				num = sizeof(A_BAND_REGION_13_CHANNEL_LIST)/sizeof(UCHAR);
+				pChannelList = A_BAND_REGION_13_CHANNEL_LIST;
+				break;
+			case REGION_14_A_BAND:
+				num = sizeof(A_BAND_REGION_14_CHANNEL_LIST)/sizeof(UCHAR);
+				pChannelList = A_BAND_REGION_14_CHANNEL_LIST;
+				break;
+			case REGION_15_A_BAND:
+				num = sizeof(A_BAND_REGION_15_CHANNEL_LIST)/sizeof(UCHAR);
+				pChannelList = A_BAND_REGION_15_CHANNEL_LIST;
+				break;
+			case REGION_16_A_BAND:
+				num = sizeof(A_BAND_REGION_16_CHANNEL_LIST)/sizeof(UCHAR);
+				pChannelList = A_BAND_REGION_16_CHANNEL_LIST;
+				break;
+			default:            // Error. should never happen
+				DBGPRINT(RT_DEBUG_WARN,("countryregion=%d not support", pAd->CommonCfg.CountryRegionForABand));
+				break;
+		}
+
+		if (num != 0)
+		{
+			UCHAR RadarCh[15]={52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140};
+			for (i=0; i<num; i++)
+			{
+				for (j=0; j<MAX_NUM_OF_CHANNELS; j++)
+				{
+					if (pChannelList[i] == pAd->TxPower[j].Channel)
+						NdisMoveMemory(&pAd->ChannelList[index+i], &pAd->TxPower[j], sizeof(CHANNEL_TX_POWER));
+					}
+				for (j=0; j<15; j++)
+				{
+					if (pChannelList[i] == RadarCh[j])
+						pAd->ChannelList[index+i].DfsReq = TRUE;
+				}
+				pAd->ChannelList[index+i].MaxTxPwr = 20;
+			}
+			index += num;
+		}
+	}
+
+	pAd->ChannelListNum = index;	
+	DBGPRINT(RT_DEBUG_TRACE,("country code=%d/%d, RFIC=%d, PHY mode=%d, support %d channels\n", 
+		pAd->CommonCfg.CountryRegion, pAd->CommonCfg.CountryRegionForABand, pAd->RfIcType, pAd->CommonCfg.PhyMode, pAd->ChannelListNum));
+#ifdef DBG	
+	for (i=0;i<pAd->ChannelListNum;i++)
+	{
+		DBGPRINT_RAW(RT_DEBUG_TRACE,("BuildChannel # %d :: Pwr0 = %d, Pwr1 =%d, \n ", pAd->ChannelList[i].Channel, pAd->ChannelList[i].Power, pAd->ChannelList[i].Power2));
+	}
+#endif
+}
+
+/* 
+	==========================================================================
+	Description:
+		This routine return the first channel number according to the country 
+		code selection and RF IC selection (signal band or dual band). It is called
+		whenever driver need to start a site survey of all supported channels.
+	Return:
+		ch - the first channel number of current country code setting
+
+	IRQL = PASSIVE_LEVEL
+
+	==========================================================================
+ */
+UCHAR FirstChannel(
+	IN PRTMP_ADAPTER pAd)
+{
+	return pAd->ChannelList[0].Channel;
+}
+
+/* 
+	==========================================================================
+	Description:
+		This routine returns the next channel number. This routine is called
+		during driver need to start a site survey of all supported channels.
+	Return:
+		next_channel - the next channel number valid in current country code setting.
+	Note:
+		return 0 if no more next channel
+	==========================================================================
+ */
+UCHAR NextChannel(
+	IN PRTMP_ADAPTER pAd, 
+	IN UCHAR channel)
+{
+	int i;
+	UCHAR next_channel = 0;
+			
+	for (i = 0; i < (pAd->ChannelListNum - 1); i++)
+	{
+		if (channel == pAd->ChannelList[i].Channel)
+		{
+#ifdef DOT11_N_SUPPORT
+#ifdef DOT11N_DRAFT3
+			// Only scan effected channel if this is a SCAN_2040_BSS_COEXIST
+			// 2009 PF#2: Nee to handle the second channel of AP fall into affected channel range.
+			if ((pAd->MlmeAux.ScanType == SCAN_2040_BSS_COEXIST) && (pAd->ChannelList[i+1].Channel >14))
+			{
+				channel = pAd->ChannelList[i+1].Channel;
+				continue;
+			}
+			else
+#endif // DOT11N_DRAFT3 //
+#endif // DOT11_N_SUPPORT //
+			{
+				// Record this channel's idx in ChannelList array.
+				next_channel = pAd->ChannelList[i+1].Channel;
+				break;
+			}
+		}
+		
+	}
+	return next_channel;
+}
+
+/* 
+	==========================================================================
+	Description:
+		This routine is for Cisco Compatible Extensions 2.X 
+		Spec31. AP Control of Client Transmit Power
+	Return:
+		None
+	Note:
+	   Required by Aironet dBm(mW)
+		   0dBm(1mW),   1dBm(5mW), 13dBm(20mW), 15dBm(30mW),
+		  17dBm(50mw), 20dBm(100mW)
+
+	   We supported 
+		   3dBm(Lowest), 6dBm(10%), 9dBm(25%), 12dBm(50%),
+		  14dBm(75%),   15dBm(100%)
+
+		The client station's actual transmit power shall be within +/- 5dB of
+		the minimum value or next lower value.
+	==========================================================================
+ */
+VOID ChangeToCellPowerLimit(
+	IN PRTMP_ADAPTER pAd,
+	IN UCHAR         AironetCellPowerLimit)
+{
+	//valud 0xFF means that hasn't found power limit information 
+	//from the AP's Beacon/Probe response.
+	if (AironetCellPowerLimit == 0xFF)
+		return;  
+	
+	if (AironetCellPowerLimit < 6) //Used Lowest Power Percentage.
+		pAd->CommonCfg.TxPowerPercentage = 6; 
+	else if (AironetCellPowerLimit < 9)
+		pAd->CommonCfg.TxPowerPercentage = 10;
+	else if (AironetCellPowerLimit < 12)
+		pAd->CommonCfg.TxPowerPercentage = 25;
+	else if (AironetCellPowerLimit < 14)
+		pAd->CommonCfg.TxPowerPercentage = 50;
+	else if (AironetCellPowerLimit < 15)
+		pAd->CommonCfg.TxPowerPercentage = 75;
+	else
+		pAd->CommonCfg.TxPowerPercentage = 100; //else used maximum
+
+	if (pAd->CommonCfg.TxPowerPercentage > pAd->CommonCfg.TxPowerDefault)
+		pAd->CommonCfg.TxPowerPercentage = pAd->CommonCfg.TxPowerDefault;
+	
+}
+
+CHAR	ConvertToRssi(
+	IN PRTMP_ADAPTER	pAd,
+	IN CHAR				Rssi,
+	IN UCHAR			RssiNumber)
+{
+	UCHAR	RssiOffset, LNAGain;
+
+	// Rssi equals to zero should be an invalid value
+	if (Rssi == 0)
+		return -99;
+
+	LNAGain = GET_LNA_GAIN(pAd);
+    if (pAd->LatchRfRegs.Channel > 14)
+    {
+        if (RssiNumber == 0)
+			RssiOffset = pAd->ARssiOffset0;
+		else if (RssiNumber == 1)
+			RssiOffset = pAd->ARssiOffset1;
+		else
+			RssiOffset = pAd->ARssiOffset2;
+    }
+    else
+    {
+        if (RssiNumber == 0)
+			RssiOffset = pAd->BGRssiOffset0;
+		else if (RssiNumber == 1)
+			RssiOffset = pAd->BGRssiOffset1;
+		else
+			RssiOffset = pAd->BGRssiOffset2;
+    }
+	
+    return (-12 - RssiOffset - LNAGain - Rssi);
+}
+
+#if defined(AP_SCAN_SUPPORT) || defined(CONFIG_STA_SUPPORT)
+/*
+	==========================================================================
+	Description:
+		Scan next channel
+	==========================================================================
+ */
+VOID ScanNextChannel(
+	IN PRTMP_ADAPTER pAd) 
+{
+	HEADER_802_11   Hdr80211;
+	PUCHAR          pOutBuffer = NULL;
+	NDIS_STATUS     NStatus;
+	ULONG           FrameLen = 0;
+	UCHAR           SsidLen = 0, ScanType = pAd->MlmeAux.ScanType, BBPValue = 0;
+#ifdef CONFIG_STA_SUPPORT
+	USHORT          Status;
+	PHEADER_802_11  pHdr80211;
+#endif // CONFIG_STA_SUPPORT //
+	UINT			ScanTimeIn5gChannel = SHORT_CHANNEL_TIME;
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+		if (MONITOR_ON(pAd))
+			return;
+	}
+#endif // CONFIG_STA_SUPPORT //
+
+#ifdef RALINK_ATE
+	// Nothing to do in ATE mode. 
+	if (ATE_ON(pAd))
+		return;
+#endif // RALINK_ATE //
+
+	if (pAd->MlmeAux.Channel == 0) 
+	{
+		if ((pAd->CommonCfg.BBPCurrentBW == BW_40) &&
+			(
+#ifdef CONFIG_STA_SUPPORT
+				INFRA_ON(pAd) || ADHOC_ON(pAd) ||
+#endif // CONFIG_STA_SUPPORT //
+			(0)))
+		{
+			AsicSwitchChannel(pAd, pAd->CommonCfg.CentralChannel, FALSE);
+			AsicLockChannel(pAd, pAd->CommonCfg.CentralChannel);
+			RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R4, &BBPValue);
+			BBPValue &= (~0x18);
+			BBPValue |= 0x10;
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R4, BBPValue);
+			DBGPRINT(RT_DEBUG_TRACE, ("SYNC - End of SCAN, restore to 40MHz channel %d, Total BSS[%02d]\n",pAd->CommonCfg.CentralChannel, pAd->ScanTab.BssNr));
+		}
+		else
+		{
+			AsicSwitchChannel(pAd, pAd->CommonCfg.Channel, FALSE);
+			AsicLockChannel(pAd, pAd->CommonCfg.Channel);
+			DBGPRINT(RT_DEBUG_TRACE, ("SYNC - End of SCAN, restore to channel %d, Total BSS[%02d]\n",pAd->CommonCfg.Channel, pAd->ScanTab.BssNr));
+		}
+		
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		{
+
+			/*
+				If all peer Ad-hoc clients leave, driver would do LinkDown and LinkUp.
+				In LinkUp, CommonCfg.Ssid would copy SSID from MlmeAux. 
+				To prevent SSID is zero or wrong in Beacon, need to recover MlmeAux.SSID here.
+			*/
+			if (ADHOC_ON(pAd))
+			{
+				NdisZeroMemory(pAd->MlmeAux.Ssid, MAX_LEN_OF_SSID);
+				pAd->MlmeAux.SsidLen = pAd->CommonCfg.SsidLen;
+				NdisMoveMemory(pAd->MlmeAux.Ssid, pAd->CommonCfg.Ssid, pAd->CommonCfg.SsidLen);
+			}
+		
+			//
+			// To prevent data lost.
+			// Send an NULL data with turned PSM bit on to current associated AP before SCAN progress.
+			// Now, we need to send an NULL data with turned PSM bit off to AP, when scan progress done 
+			//
+			if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED) && (INFRA_ON(pAd)))
+			{
+				NStatus = MlmeAllocateMemory(pAd, (PVOID)&pOutBuffer);
+				if (NStatus	== NDIS_STATUS_SUCCESS)
+				{
+					pHdr80211 = (PHEADER_802_11) pOutBuffer;
+					MgtMacHeaderInit(pAd, pHdr80211, SUBTYPE_NULL_FUNC, 1, pAd->CommonCfg.Bssid, pAd->CommonCfg.Bssid);
+					pHdr80211->Duration = 0;
+					pHdr80211->FC.Type = BTYPE_DATA;
+					pHdr80211->FC.PwrMgmt = (pAd->StaCfg.Psm == PWR_SAVE);
+
+					// Send using priority queue
+					MiniportMMRequest(pAd, 0, pOutBuffer, sizeof(HEADER_802_11));
+					DBGPRINT(RT_DEBUG_TRACE, ("MlmeScanReqAction -- Send PSM Data frame\n"));
+					MlmeFreeMemory(pAd, pOutBuffer);
+					RTMPusecDelay(5000);
+				}
+			}
+
+			pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE;
+			Status = MLME_SUCCESS;
+			MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_SCAN_CONF, 2, &Status, 0);
+
+			RTMPSendWirelessEvent(pAd, IW_SCAN_COMPLETED_EVENT_FLAG, NULL, BSS0, 0);
+
+#ifdef LINUX
+#ifdef RT_CFG80211_SUPPORT
+			RTEnqueueInternalCmd(pAd, CMDTHREAD_SCAN_END, NULL, 0);
+#endif // RT_CFG80211_SUPPORT //
+#endif // LINUX //	
+		}
+#endif // CONFIG_STA_SUPPORT //
+
+
+
+	} 
+	else 
+	{
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		{
+		// BBP and RF are not accessible in PS mode, we has to wake them up first
+		if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_DOZE))
+			AsicForceWakeup(pAd, TRUE);
+
+			// leave PSM during scanning. otherwise we may lost ProbeRsp & BEACON
+			if (pAd->StaCfg.Psm == PWR_SAVE)
+			{
+				RTMP_SET_PSM_BIT(pAd, PWR_ACTIVE);
+			}
+		}
+#endif // CONFIG_STA_SUPPORT //
+
+		AsicSwitchChannel(pAd, pAd->MlmeAux.Channel, TRUE);
+		AsicLockChannel(pAd, pAd->MlmeAux.Channel);
+
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		{
+			if (pAd->MlmeAux.Channel > 14)
+			{
+				if ((pAd->CommonCfg.bIEEE80211H == 1) && RadarChannelCheck(pAd, pAd->MlmeAux.Channel))
+				{
+					ScanType = SCAN_PASSIVE;
+					ScanTimeIn5gChannel = MIN_CHANNEL_TIME;
+				}
+			}
+
+#ifdef CARRIER_DETECTION_SUPPORT // Roger sync Carrier
+			// carrier detection
+			if (pAd->CommonCfg.CarrierDetect.Enable == TRUE)
+			{
+				ScanType = SCAN_PASSIVE;
+				ScanTimeIn5gChannel = MIN_CHANNEL_TIME;
+			}
+#endif // CARRIER_DETECTION_SUPPORT // 
+		}
+
+#endif // CONFIG_STA_SUPPORT //
+
+		//Global country domain(ch1-11:active scan, ch12-14 passive scan)
+		if (((pAd->MlmeAux.Channel <= 14) &&
+			(pAd->MlmeAux.Channel >= 12) &&
+			((pAd->CommonCfg.CountryRegion & 0x7f) == REGION_31_BG_BAND)) ||
+			(CHAN_PropertyCheck(pAd, pAd->MlmeAux.Channel, CHANNEL_PASSIVE_SCAN) == TRUE))
+		{
+			ScanType = SCAN_PASSIVE;
+		}
+
+		// We need to shorten active scan time in order for WZC connect issue
+		// Chnage the channel scan time for CISCO stuff based on its IAPP announcement
+		if (ScanType == FAST_SCAN_ACTIVE)
+			RTMPSetTimer(&pAd->MlmeAux.ScanTimer, FAST_ACTIVE_SCAN_TIME);
+		else // must be SCAN_PASSIVE or SCAN_ACTIVE
+		{
+			if ((pAd->CommonCfg.PhyMode == PHY_11ABG_MIXED) 
+#ifdef DOT11_N_SUPPORT
+				|| (pAd->CommonCfg.PhyMode == PHY_11ABGN_MIXED) || (pAd->CommonCfg.PhyMode == PHY_11AGN_MIXED)
+#endif // DOT11_N_SUPPORT //
+			)
+			{
+				if (pAd->MlmeAux.Channel > 14)
+					RTMPSetTimer(&pAd->MlmeAux.ScanTimer, ScanTimeIn5gChannel);
+				else	
+				RTMPSetTimer(&pAd->MlmeAux.ScanTimer, MIN_CHANNEL_TIME);
+			}
+			else
+				RTMPSetTimer(&pAd->MlmeAux.ScanTimer, MAX_CHANNEL_TIME);
+		}
+
+		if ((ScanType == SCAN_ACTIVE)
+			|| (ScanType == FAST_SCAN_ACTIVE)
+#ifdef DOT11_N_SUPPORT
+#ifdef DOT11N_DRAFT3
+			|| (ScanType == SCAN_2040_BSS_COEXIST)
+#endif // DOT11N_DRAFT3 //
+#endif // DOT11_N_SUPPORT //
+			)
+		{
+			NStatus = MlmeAllocateMemory(pAd, &pOutBuffer);  //Get an unused nonpaged memory
+			if (NStatus != NDIS_STATUS_SUCCESS)
+			{
+				DBGPRINT(RT_DEBUG_TRACE, ("SYNC - ScanNextChannel() allocate memory fail\n"));
+#ifdef CONFIG_STA_SUPPORT
+				IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+				{
+					pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE;
+					Status = MLME_FAIL_NO_RESOURCE;
+					MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_SCAN_CONF, 2, &Status, 0);
+				}
+#endif // CONFIG_STA_SUPPORT //
+
+				return;
+			}
+
+#ifdef DOT11_N_SUPPORT
+#ifdef DOT11N_DRAFT3
+			if (ScanType == SCAN_2040_BSS_COEXIST)
+			{
+				DBGPRINT(RT_DEBUG_TRACE, ("SYNC - SCAN_2040_BSS_COEXIST !! Prepare to send Probe Request\n"));
+			}
+#endif // DOT11N_DRAFT3 //
+#endif // DOT11_N_SUPPORT //
+			
+			// There is no need to send broadcast probe request if active scan is in effect.
+			if ((ScanType == SCAN_ACTIVE) || (ScanType == FAST_SCAN_ACTIVE)
+				)
+				SsidLen = pAd->MlmeAux.SsidLen;
+			else
+				SsidLen = 0;
+
+#ifdef CONFIG_STA_SUPPORT
+			IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+				MgtMacHeaderInit(pAd, &Hdr80211, SUBTYPE_PROBE_REQ, 0, BROADCAST_ADDR, BROADCAST_ADDR);
+#endif // CONFIG_STA_SUPPORT //
+
+
+			MakeOutgoingFrame(pOutBuffer,               &FrameLen,
+							  sizeof(HEADER_802_11),    &Hdr80211,
+							  1,                        &SsidIe,
+							  1,                        &SsidLen,
+							  SsidLen,			        pAd->MlmeAux.Ssid,
+							  1,                        &SupRateIe,
+							  1,                        &pAd->CommonCfg.SupRateLen,
+							  pAd->CommonCfg.SupRateLen,  pAd->CommonCfg.SupRate, 
+							  END_OF_ARGS);
+
+			if (pAd->CommonCfg.ExtRateLen)
+			{
+				ULONG Tmp;
+				MakeOutgoingFrame(pOutBuffer + FrameLen,            &Tmp,
+								  1,                                &ExtRateIe,
+								  1,                                &pAd->CommonCfg.ExtRateLen,
+								  pAd->CommonCfg.ExtRateLen,          pAd->CommonCfg.ExtRate, 
+								  END_OF_ARGS);
+				FrameLen += Tmp;
+			}
+
+#ifdef DOT11_N_SUPPORT
+			if (pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED)
+			{
+				ULONG	Tmp;
+				UCHAR	HtLen;
+				UCHAR	BROADCOM[4] = {0x0, 0x90, 0x4c, 0x33};
+#ifdef RT_BIG_ENDIAN
+				HT_CAPABILITY_IE HtCapabilityTmp;
+#endif
+				if (pAd->bBroadComHT == TRUE)
+				{
+					HtLen = pAd->MlmeAux.HtCapabilityLen + 4;
+#ifdef RT_BIG_ENDIAN
+					NdisMoveMemory(&HtCapabilityTmp, &pAd->MlmeAux.HtCapability, SIZE_HT_CAP_IE);
+					*(USHORT *)(&HtCapabilityTmp.HtCapInfo) = SWAP16(*(USHORT *)(&HtCapabilityTmp.HtCapInfo));
+#ifdef UNALIGNMENT_SUPPORT
+					{
+						EXT_HT_CAP_INFO extHtCapInfo;
+
+						NdisMoveMemory((PUCHAR)(&extHtCapInfo), (PUCHAR)(&HtCapabilityTmp.ExtHtCapInfo), sizeof(EXT_HT_CAP_INFO));
+						*(USHORT *)(&extHtCapInfo) = cpu2le16(*(USHORT *)(&extHtCapInfo));
+						NdisMoveMemory((PUCHAR)(&HtCapabilityTmp.ExtHtCapInfo), (PUCHAR)(&extHtCapInfo), sizeof(EXT_HT_CAP_INFO));		
+					}
+#else				
+					*(USHORT *)(&HtCapabilityTmp.ExtHtCapInfo) = cpu2le16(*(USHORT *)(&HtCapabilityTmp.ExtHtCapInfo));
+#endif // UNALIGNMENT_SUPPORT //
+
+					MakeOutgoingFrame(pOutBuffer + FrameLen,          &Tmp,
+									1,                                &WpaIe,
+									1,                                &HtLen,
+									4,                                &BROADCOM[0],
+									pAd->MlmeAux.HtCapabilityLen,     &HtCapabilityTmp, 
+									END_OF_ARGS);
+#else
+					MakeOutgoingFrame(pOutBuffer + FrameLen,          &Tmp,
+									1,                                &WpaIe,
+									1,                                &HtLen,
+									4,                                &BROADCOM[0],
+									pAd->MlmeAux.HtCapabilityLen,     &pAd->MlmeAux.HtCapability, 
+									END_OF_ARGS);
+#endif // RT_BIG_ENDIAN //
+				}
+				else				
+				{
+					HtLen = pAd->MlmeAux.HtCapabilityLen;
+#ifdef RT_BIG_ENDIAN
+					NdisMoveMemory(&HtCapabilityTmp, &pAd->CommonCfg.HtCapability, SIZE_HT_CAP_IE);
+					*(USHORT *)(&HtCapabilityTmp.HtCapInfo) = SWAP16(*(USHORT *)(&HtCapabilityTmp.HtCapInfo));
+#ifdef UNALIGNMENT_SUPPORT
+					{
+						EXT_HT_CAP_INFO extHtCapInfo;
+
+						NdisMoveMemory((PUCHAR)(&extHtCapInfo), (PUCHAR)(&HtCapabilityTmp.ExtHtCapInfo), sizeof(EXT_HT_CAP_INFO));
+						*(USHORT *)(&extHtCapInfo) = cpu2le16(*(USHORT *)(&extHtCapInfo));
+						NdisMoveMemory((PUCHAR)(&HtCapabilityTmp.ExtHtCapInfo), (PUCHAR)(&extHtCapInfo), sizeof(EXT_HT_CAP_INFO));		
+					}
+#else				
+					*(USHORT *)(&HtCapabilityTmp.ExtHtCapInfo) = cpu2le16(*(USHORT *)(&HtCapabilityTmp.ExtHtCapInfo));
+#endif // UNALIGNMENT_SUPPORT //
+
+					MakeOutgoingFrame(pOutBuffer + FrameLen,          &Tmp,
+									1,                                &HtCapIe,
+									1,                                &HtLen,
+									HtLen,                            &HtCapabilityTmp, 
+									END_OF_ARGS);
+#else
+					MakeOutgoingFrame(pOutBuffer + FrameLen,          &Tmp,
+									1,                                &HtCapIe,
+									1,                                &HtLen,
+									HtLen,                            &pAd->CommonCfg.HtCapability, 
+									END_OF_ARGS);
+#endif // RT_BIG_ENDIAN //
+				}
+				FrameLen += Tmp;
+
+#ifdef DOT11N_DRAFT3
+				if ((pAd->MlmeAux.Channel <= 14) && (pAd->CommonCfg.bBssCoexEnable == TRUE))
+				{
+					ULONG		Tmp;
+					HtLen = 1;
+					MakeOutgoingFrame(pOutBuffer + FrameLen,            &Tmp,
+									  1,					&ExtHtCapIe,
+									  1,					&HtLen,
+									  1,          			&pAd->CommonCfg.BSSCoexist2040.word, 
+									  END_OF_ARGS);
+
+					FrameLen += Tmp;
+				}
+#endif // DOT11N_DRAFT3 //
+			}
+#endif // DOT11_N_SUPPORT //
+
+
+#ifdef WPA_SUPPLICANT_SUPPORT
+			if ((pAd->OpMode == OPMODE_STA) &&
+				(pAd->StaCfg.WpaSupplicantUP != WPA_SUPPLICANT_DISABLE) &&
+				(pAd->StaCfg.WpsProbeReqIeLen != 0))
+			{
+				ULONG 		WpsTmpLen = 0;
+				
+				MakeOutgoingFrame(pOutBuffer + FrameLen,              &WpsTmpLen,
+								pAd->StaCfg.WpsProbeReqIeLen,	pAd->StaCfg.pWpsProbeReqIe,
+								END_OF_ARGS);
+
+				FrameLen += WpsTmpLen;
+			}
+#endif // WPA_SUPPLICANT_SUPPORT //
+
+			MiniportMMRequest(pAd, 0, pOutBuffer, FrameLen);
+
+#ifdef CONFIG_STA_SUPPORT
+			IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+			{
+				//
+				// To prevent data lost.
+				// Send an NULL data with turned PSM bit on to current associated AP when SCAN in the channel where
+				//  associated AP located.
+				//
+				if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED) && 
+					(INFRA_ON(pAd)) &&
+					(pAd->CommonCfg.Channel == pAd->MlmeAux.Channel))
+				{
+					NdisZeroMemory(pOutBuffer, MGMT_DMA_BUFFER_SIZE);
+					pHdr80211 = (PHEADER_802_11) pOutBuffer;
+					MgtMacHeaderInit(pAd, pHdr80211, SUBTYPE_NULL_FUNC, 1, pAd->CommonCfg.Bssid, pAd->CommonCfg.Bssid);
+					pHdr80211->Duration = 0;
+					pHdr80211->FC.Type = BTYPE_DATA;
+					pHdr80211->FC.PwrMgmt = PWR_ACTIVE;
+
+					// Send using priority queue
+					MiniportMMRequest(pAd, 0, pOutBuffer, sizeof(HEADER_802_11));
+					DBGPRINT(RT_DEBUG_TRACE, ("ScanNextChannel():Send PWA NullData frame to notify the associated AP!\n"));
+				}
+			}
+#endif // CONFIG_STA_SUPPORT //
+
+			MlmeFreeMemory(pAd, pOutBuffer);
+		}
+
+		// For SCAN_CISCO_PASSIVE, do nothing and silently wait for beacon or other probe reponse
+		
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+			pAd->Mlme.SyncMachine.CurrState = SCAN_LISTEN;
+#endif // CONFIG_STA_SUPPORT //
+
+	}
+}
+#endif
+
+VOID MgtProbReqMacHeaderInit(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN OUT PHEADER_802_11 pHdr80211, 
+	IN UCHAR SubType, 
+	IN UCHAR ToDs, 
+	IN PUCHAR pDA, 
+	IN PUCHAR pBssid) 
+{
+	NdisZeroMemory(pHdr80211, sizeof(HEADER_802_11));
+	
+	pHdr80211->FC.Type = BTYPE_MGMT;
+	pHdr80211->FC.SubType = SubType;
+	if (SubType == SUBTYPE_ACK)
+		pHdr80211->FC.Type = BTYPE_CNTL;
+	pHdr80211->FC.ToDs = ToDs;
+	COPY_MAC_ADDR(pHdr80211->Addr1, pDA);
+	COPY_MAC_ADDR(pHdr80211->Addr2, pAd->CurrentAddress);
+	COPY_MAC_ADDR(pHdr80211->Addr3, pBssid);
+}
+
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_tkip.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_tkip.c
new file mode 100644
index 000000000..9561d75b8
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_tkip.c
@@ -0,0 +1,1015 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+	Module Name:
+	cmm_tkip.c
+
+	Abstract:
+
+	Revision History:
+	Who			When			What
+	--------	----------		----------------------------------------------
+	Paul Wu		02-25-02		Initial
+*/
+
+#include	"rt_config.h"
+
+// Rotation functions on 32 bit values 
+#define ROL32( A, n ) \
+	( ((A) << (n)) | ( ((A)>>(32-(n))) & ( (1UL << (n)) - 1 ) ) ) 
+#define ROR32( A, n ) ROL32( (A), 32-(n) ) 
+
+UINT Tkip_Sbox_Lower[256] = 
+{ 
+	0xA5,0x84,0x99,0x8D,0x0D,0xBD,0xB1,0x54, 
+	0x50,0x03,0xA9,0x7D,0x19,0x62,0xE6,0x9A, 
+	0x45,0x9D,0x40,0x87,0x15,0xEB,0xC9,0x0B, 
+	0xEC,0x67,0xFD,0xEA,0xBF,0xF7,0x96,0x5B, 
+	0xC2,0x1C,0xAE,0x6A,0x5A,0x41,0x02,0x4F, 
+	0x5C,0xF4,0x34,0x08,0x93,0x73,0x53,0x3F, 
+	0x0C,0x52,0x65,0x5E,0x28,0xA1,0x0F,0xB5, 
+	0x09,0x36,0x9B,0x3D,0x26,0x69,0xCD,0x9F, 
+	0x1B,0x9E,0x74,0x2E,0x2D,0xB2,0xEE,0xFB, 
+	0xF6,0x4D,0x61,0xCE,0x7B,0x3E,0x71,0x97, 
+	0xF5,0x68,0x00,0x2C,0x60,0x1F,0xC8,0xED, 
+	0xBE,0x46,0xD9,0x4B,0xDE,0xD4,0xE8,0x4A, 
+	0x6B,0x2A,0xE5,0x16,0xC5,0xD7,0x55,0x94, 
+	0xCF,0x10,0x06,0x81,0xF0,0x44,0xBA,0xE3, 
+	0xF3,0xFE,0xC0,0x8A,0xAD,0xBC,0x48,0x04, 
+	0xDF,0xC1,0x75,0x63,0x30,0x1A,0x0E,0x6D, 
+	0x4C,0x14,0x35,0x2F,0xE1,0xA2,0xCC,0x39, 
+	0x57,0xF2,0x82,0x47,0xAC,0xE7,0x2B,0x95, 
+	0xA0,0x98,0xD1,0x7F,0x66,0x7E,0xAB,0x83, 
+	0xCA,0x29,0xD3,0x3C,0x79,0xE2,0x1D,0x76, 
+	0x3B,0x56,0x4E,0x1E,0xDB,0x0A,0x6C,0xE4, 
+	0x5D,0x6E,0xEF,0xA6,0xA8,0xA4,0x37,0x8B, 
+	0x32,0x43,0x59,0xB7,0x8C,0x64,0xD2,0xE0, 
+	0xB4,0xFA,0x07,0x25,0xAF,0x8E,0xE9,0x18, 
+	0xD5,0x88,0x6F,0x72,0x24,0xF1,0xC7,0x51, 
+	0x23,0x7C,0x9C,0x21,0xDD,0xDC,0x86,0x85, 
+	0x90,0x42,0xC4,0xAA,0xD8,0x05,0x01,0x12, 
+	0xA3,0x5F,0xF9,0xD0,0x91,0x58,0x27,0xB9, 
+	0x38,0x13,0xB3,0x33,0xBB,0x70,0x89,0xA7, 
+	0xB6,0x22,0x92,0x20,0x49,0xFF,0x78,0x7A, 
+	0x8F,0xF8,0x80,0x17,0xDA,0x31,0xC6,0xB8, 
+	0xC3,0xB0,0x77,0x11,0xCB,0xFC,0xD6,0x3A 
+};
+
+UINT Tkip_Sbox_Upper[256] = 
+{ 
+	0xC6,0xF8,0xEE,0xF6,0xFF,0xD6,0xDE,0x91, 
+	0x60,0x02,0xCE,0x56,0xE7,0xB5,0x4D,0xEC, 
+	0x8F,0x1F,0x89,0xFA,0xEF,0xB2,0x8E,0xFB, 
+	0x41,0xB3,0x5F,0x45,0x23,0x53,0xE4,0x9B, 
+	0x75,0xE1,0x3D,0x4C,0x6C,0x7E,0xF5,0x83, 
+	0x68,0x51,0xD1,0xF9,0xE2,0xAB,0x62,0x2A, 
+	0x08,0x95,0x46,0x9D,0x30,0x37,0x0A,0x2F, 
+	0x0E,0x24,0x1B,0xDF,0xCD,0x4E,0x7F,0xEA, 
+	0x12,0x1D,0x58,0x34,0x36,0xDC,0xB4,0x5B, 
+	0xA4,0x76,0xB7,0x7D,0x52,0xDD,0x5E,0x13, 
+	0xA6,0xB9,0x00,0xC1,0x40,0xE3,0x79,0xB6, 
+	0xD4,0x8D,0x67,0x72,0x94,0x98,0xB0,0x85, 
+	0xBB,0xC5,0x4F,0xED,0x86,0x9A,0x66,0x11, 
+	0x8A,0xE9,0x04,0xFE,0xA0,0x78,0x25,0x4B, 
+	0xA2,0x5D,0x80,0x05,0x3F,0x21,0x70,0xF1, 
+	0x63,0x77,0xAF,0x42,0x20,0xE5,0xFD,0xBF, 
+	0x81,0x18,0x26,0xC3,0xBE,0x35,0x88,0x2E, 
+	0x93,0x55,0xFC,0x7A,0xC8,0xBA,0x32,0xE6, 
+	0xC0,0x19,0x9E,0xA3,0x44,0x54,0x3B,0x0B, 
+	0x8C,0xC7,0x6B,0x28,0xA7,0xBC,0x16,0xAD, 
+	0xDB,0x64,0x74,0x14,0x92,0x0C,0x48,0xB8, 
+	0x9F,0xBD,0x43,0xC4,0x39,0x31,0xD3,0xF2, 
+	0xD5,0x8B,0x6E,0xDA,0x01,0xB1,0x9C,0x49, 
+	0xD8,0xAC,0xF3,0xCF,0xCA,0xF4,0x47,0x10, 
+	0x6F,0xF0,0x4A,0x5C,0x38,0x57,0x73,0x97, 
+	0xCB,0xA1,0xE8,0x3E,0x96,0x61,0x0D,0x0F, 
+	0xE0,0x7C,0x71,0xCC,0x90,0x06,0xF7,0x1C, 
+	0xC2,0x6A,0xAE,0x69,0x17,0x99,0x3A,0x27, 
+	0xD9,0xEB,0x2B,0x22,0xD2,0xA9,0x07,0x33, 
+	0x2D,0x3C,0x15,0xC9,0x87,0xAA,0x50,0xA5, 
+	0x03,0x59,0x09,0x1A,0x65,0xD7,0x84,0xD0, 
+	0x82,0x29,0x5A,0x1E,0x7B,0xA8,0x6D,0x2C 
+}; 
+
+//
+// Expanded IV for TKIP function.
+//
+typedef	struct	GNU_PACKED _IV_CONTROL_
+{
+	union GNU_PACKED
+	{
+		struct GNU_PACKED
+		{
+			UCHAR		rc0;
+			UCHAR		rc1;
+			UCHAR		rc2;
+
+			union GNU_PACKED
+			{
+				struct GNU_PACKED
+				{
+#ifdef RT_BIG_ENDIAN
+					UCHAR	KeyID:2;
+					UCHAR	ExtIV:1;
+					UCHAR	Rsvd:5;
+#else
+					UCHAR	Rsvd:5;
+					UCHAR	ExtIV:1;
+					UCHAR	KeyID:2;
+#endif
+				}	field;
+				UCHAR		Byte;
+			}	CONTROL;
+		}	field;
+		
+		ULONG	word;
+	}	IV16;
+	
+	ULONG	IV32;
+}	TKIP_IV, *PTKIP_IV;
+
+
+/*
+	========================================================================
+
+	Routine	Description:
+		Convert from UCHAR[] to ULONG in a portable way 
+		
+	Arguments:
+      pMICKey		pointer to MIC Key
+		
+	Return Value:
+		None
+
+	Note:
+		
+	========================================================================
+*/
+ULONG	RTMPTkipGetUInt32( 	
+	IN	PUCHAR	pMICKey)
+{  	
+	ULONG	res = 0; 
+	INT		i;
+	
+	for (i = 0; i < 4; i++) 
+	{ 
+		res |= (*pMICKey++) << (8 * i); 
+	}
+
+	return res; 
+} 
+
+/*
+	========================================================================
+
+	Routine	Description:
+		Convert from ULONG to UCHAR[] in a portable way 
+		
+	Arguments:
+      pDst			pointer to destination for convert ULONG to UCHAR[]
+      val			the value for convert
+		
+	Return Value:
+		None
+
+	IRQL = DISPATCH_LEVEL
+	
+	Note:
+		
+	========================================================================
+*/
+VOID	RTMPTkipPutUInt32(
+	IN OUT	PUCHAR		pDst,
+	IN		ULONG		val)					  
+{ 	
+	INT i;
+	
+	for(i = 0; i < 4; i++) 
+	{ 
+		*pDst++ = (UCHAR) (val & 0xff); 
+		val >>= 8; 
+	} 
+} 
+
+/*
+	========================================================================
+
+	Routine	Description:
+		Set the MIC Key.
+		
+	Arguments:
+      pAd		Pointer to our adapter
+      pMICKey		pointer to MIC Key
+		
+	Return Value:
+		None
+
+	IRQL = DISPATCH_LEVEL
+	
+	Note:
+		
+	========================================================================
+*/
+VOID RTMPTkipSetMICKey(  
+	IN	PTKIP_KEY_INFO	pTkip,	
+	IN	PUCHAR			pMICKey)
+{ 
+	// Set the key 
+	pTkip->K0 = RTMPTkipGetUInt32(pMICKey); 
+	pTkip->K1 = RTMPTkipGetUInt32(pMICKey + 4); 
+	// and reset the message 
+	pTkip->L = pTkip->K0;
+	pTkip->R = pTkip->K1;
+	pTkip->nBytesInM = 0;
+	pTkip->M = 0;
+} 
+
+/*
+	========================================================================
+
+	Routine	Description:
+		Calculate the MIC Value.
+		
+	Arguments:
+      pAd		Pointer to our adapter
+      uChar			Append this uChar
+		
+	Return Value:
+		None
+
+	IRQL = DISPATCH_LEVEL
+	
+	Note:
+		
+	========================================================================
+*/
+VOID	RTMPTkipAppendByte( 
+	IN	PTKIP_KEY_INFO	pTkip,	
+	IN	UCHAR 			uChar)
+{ 
+	// Append the byte to our word-sized buffer 
+	pTkip->M |= (uChar << (8* pTkip->nBytesInM)); 
+	pTkip->nBytesInM++; 
+	// Process the word if it is full. 
+	if( pTkip->nBytesInM >= 4 ) 
+	{ 
+		pTkip->L ^= pTkip->M; 
+		pTkip->R ^= ROL32( pTkip->L, 17 ); 
+		pTkip->L += pTkip->R; 
+		pTkip->R ^= ((pTkip->L & 0xff00ff00) >> 8) | ((pTkip->L & 0x00ff00ff) << 8); 
+		pTkip->L += pTkip->R; 
+		pTkip->R ^= ROL32( pTkip->L, 3 ); 
+		pTkip->L += pTkip->R; 
+		pTkip->R ^= ROR32( pTkip->L, 2 ); 
+		pTkip->L += pTkip->R; 
+		// Clear the buffer 
+		pTkip->M = 0; 
+		pTkip->nBytesInM = 0; 
+	} 
+} 
+
+/*
+	========================================================================
+
+	Routine	Description:
+		Calculate the MIC Value.
+		
+	Arguments:
+      pAd		Pointer to our adapter
+      pSrc			Pointer to source data for Calculate MIC Value
+      Len			Indicate the length of the source data
+		
+	Return Value:
+		None
+
+	IRQL = DISPATCH_LEVEL
+	
+	Note:
+		
+	========================================================================
+*/
+VOID	RTMPTkipAppend( 
+	IN	PTKIP_KEY_INFO	pTkip,	
+	IN	PUCHAR			pSrc,
+	IN	UINT			nBytes)						  
+{ 
+	// This is simple 
+	while(nBytes > 0) 
+	{ 
+		RTMPTkipAppendByte(pTkip, *pSrc++); 
+		nBytes--; 
+	} 
+} 
+
+/*
+	========================================================================
+
+	Routine	Description:
+		Get the MIC Value.
+		
+	Arguments:
+      pAd		Pointer to our adapter
+		
+	Return Value:
+		None
+
+	IRQL = DISPATCH_LEVEL
+	
+	Note:
+		the MIC Value is store in pAd->PrivateInfo.MIC
+	========================================================================
+*/
+VOID	RTMPTkipGetMIC( 
+	IN	PTKIP_KEY_INFO	pTkip)
+{ 
+	// Append the minimum padding
+	RTMPTkipAppendByte(pTkip, 0x5a );	
+	RTMPTkipAppendByte(pTkip, 0 ); 
+	RTMPTkipAppendByte(pTkip, 0 ); 
+	RTMPTkipAppendByte(pTkip, 0 ); 
+	RTMPTkipAppendByte(pTkip, 0 ); 
+	// and then zeroes until the length is a multiple of 4 
+	while( pTkip->nBytesInM != 0 ) 
+	{ 
+		RTMPTkipAppendByte(pTkip, 0 ); 
+	} 
+	// The appendByte function has already computed the result. 
+	RTMPTkipPutUInt32(pTkip->MIC, pTkip->L);
+	RTMPTkipPutUInt32(pTkip->MIC + 4, pTkip->R);
+} 
+
+/*
+	========================================================================
+
+	Routine	Description:
+		Init Tkip function.	
+		
+	Arguments:
+      pAd		Pointer to our adapter
+		pTKey       Pointer to the Temporal Key (TK), TK shall be 128bits.
+		KeyId		TK Key ID
+		pTA			Pointer to transmitter address
+		pMICKey		pointer to MIC Key
+		
+	Return Value:
+		None
+
+	IRQL = DISPATCH_LEVEL
+	
+	Note:
+	
+	========================================================================
+*/
+VOID	RTMPInitTkipEngine(
+	IN	PRTMP_ADAPTER	pAd,	
+	IN	PUCHAR			pKey,
+	IN	UCHAR			KeyId,
+	IN	PUCHAR			pTA,
+	IN	PUCHAR			pMICKey,
+	IN	PUCHAR			pTSC,
+	OUT	PULONG			pIV16,
+	OUT	PULONG			pIV32)
+{
+	TKIP_IV	tkipIv;
+
+	// Prepare 8 bytes TKIP encapsulation for MPDU
+	NdisZeroMemory(&tkipIv, sizeof(TKIP_IV));	
+	tkipIv.IV16.field.rc0 = *(pTSC + 1);	
+	tkipIv.IV16.field.rc1 = (tkipIv.IV16.field.rc0 | 0x20) & 0x7f;	
+	tkipIv.IV16.field.rc2 = *pTSC;	
+	tkipIv.IV16.field.CONTROL.field.ExtIV = 1;  // 0: non-extended IV, 1: an extended IV
+	tkipIv.IV16.field.CONTROL.field.KeyID = KeyId;
+//	tkipIv.IV32 = *(PULONG)(pTSC + 2);
+	NdisMoveMemory(&tkipIv.IV32, (pTSC + 2), 4);   // Copy IV
+
+	*pIV16 = tkipIv.IV16.word;
+	*pIV32 = tkipIv.IV32;
+}
+
+/*
+	========================================================================
+
+	Routine	Description:
+		Init MIC Value calculation function which include set MIC key & 
+		calculate first 16 bytes (DA + SA + priority +  0)
+		
+	Arguments:
+      pAd		Pointer to our adapter
+		pTKey       Pointer to the Temporal Key (TK), TK shall be 128bits.
+		pDA			Pointer to DA address
+		pSA			Pointer to SA address
+		pMICKey		pointer to MIC Key
+		
+	Return Value:
+		None
+
+	Note:
+	
+	========================================================================
+*/
+VOID	RTMPInitMICEngine(
+	IN	PRTMP_ADAPTER	pAd,	
+	IN	PUCHAR			pKey,
+	IN	PUCHAR			pDA,
+	IN	PUCHAR			pSA,
+	IN  UCHAR           UserPriority,
+	IN	PUCHAR			pMICKey)
+{
+	ULONG Priority = UserPriority;
+
+	// Init MIC value calculation
+	RTMPTkipSetMICKey(&pAd->PrivateInfo.Tx, pMICKey);
+	// DA
+	RTMPTkipAppend(&pAd->PrivateInfo.Tx, pDA, MAC_ADDR_LEN);
+	// SA
+	RTMPTkipAppend(&pAd->PrivateInfo.Tx, pSA, MAC_ADDR_LEN);
+	// Priority + 3 bytes of 0
+	RTMPTkipAppend(&pAd->PrivateInfo.Tx, (PUCHAR)&Priority, 4);
+}
+
+/*
+	========================================================================
+
+	Routine	Description:
+		Compare MIC value of received MSDU
+		
+	Arguments:
+		pAd	Pointer to our adapter
+		pSrc        Pointer to the received Plain text data
+		pDA			Pointer to DA address
+		pSA			Pointer to SA address
+		pMICKey		pointer to MIC Key
+		Len         the length of the received plain text data exclude MIC value
+		
+	Return Value:
+		TRUE        MIC value matched
+		FALSE       MIC value mismatched
+		
+	IRQL = DISPATCH_LEVEL
+	
+	Note:
+	
+	========================================================================
+*/
+BOOLEAN	RTMPTkipCompareMICValue(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PUCHAR			pSrc,
+	IN	PUCHAR			pDA,
+	IN	PUCHAR			pSA,
+	IN	PUCHAR			pMICKey,
+	IN	UCHAR			UserPriority,
+	IN	UINT			Len)
+{
+	UCHAR	OldMic[8];
+	ULONG	Priority = UserPriority;
+
+	// Init MIC value calculation
+	RTMPTkipSetMICKey(&pAd->PrivateInfo.Rx, pMICKey);
+	// DA
+	RTMPTkipAppend(&pAd->PrivateInfo.Rx, pDA, MAC_ADDR_LEN);
+	// SA
+	RTMPTkipAppend(&pAd->PrivateInfo.Rx, pSA, MAC_ADDR_LEN);
+	// Priority + 3 bytes of 0
+	RTMPTkipAppend(&pAd->PrivateInfo.Rx, (PUCHAR)&Priority, 4);
+	
+	// Calculate MIC value from plain text data
+	RTMPTkipAppend(&pAd->PrivateInfo.Rx, pSrc, Len);
+
+	// Get MIC valude from received frame
+	NdisMoveMemory(OldMic, pSrc + Len, 8);
+	
+	// Get MIC value from decrypted plain data
+	RTMPTkipGetMIC(&pAd->PrivateInfo.Rx);
+		
+	// Move MIC value from MSDU, this steps should move to data path.
+	// Since the MIC value might cross MPDUs.
+	if(!NdisEqualMemory(pAd->PrivateInfo.Rx.MIC, OldMic, 8))
+	{
+		DBGPRINT_RAW(RT_DEBUG_ERROR, ("RTMPTkipCompareMICValue(): TKIP MIC Error !\n"));  //MIC error.
+
+		
+		return (FALSE);
+	}
+	return (TRUE);
+}
+
+/*
+	========================================================================
+
+	Routine	Description:
+		Compare MIC value of received MSDU
+		
+	Arguments:
+		pAd	Pointer to our adapter
+		pLLC		LLC header
+		pSrc        Pointer to the received Plain text data
+		pDA			Pointer to DA address
+		pSA			Pointer to SA address
+		pMICKey		pointer to MIC Key
+		Len         the length of the received plain text data exclude MIC value
+		
+	Return Value:
+		TRUE        MIC value matched
+		FALSE       MIC value mismatched
+		
+	IRQL = DISPATCH_LEVEL
+	
+	Note:
+	
+	========================================================================
+*/
+BOOLEAN	RTMPTkipCompareMICValueWithLLC(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PUCHAR			pLLC,
+	IN	PUCHAR			pSrc,
+	IN	PUCHAR			pDA,
+	IN	PUCHAR			pSA,
+	IN	PUCHAR			pMICKey,
+	IN	UINT			Len)
+{
+	UCHAR	OldMic[8];
+	ULONG	Priority = 0;
+
+	// Init MIC value calculation
+	RTMPTkipSetMICKey(&pAd->PrivateInfo.Rx, pMICKey);
+	// DA
+	RTMPTkipAppend(&pAd->PrivateInfo.Rx, pDA, MAC_ADDR_LEN);
+	// SA
+	RTMPTkipAppend(&pAd->PrivateInfo.Rx, pSA, MAC_ADDR_LEN);
+	// Priority + 3 bytes of 0
+	RTMPTkipAppend(&pAd->PrivateInfo.Rx, (PUCHAR)&Priority, 4);
+	
+	// Start with LLC header
+	RTMPTkipAppend(&pAd->PrivateInfo.Rx, pLLC, 8);
+
+	// Calculate MIC value from plain text data
+	RTMPTkipAppend(&pAd->PrivateInfo.Rx, pSrc, Len);
+
+	// Get MIC valude from received frame
+	NdisMoveMemory(OldMic, pSrc + Len, 8);
+	
+	// Get MIC value from decrypted plain data
+	RTMPTkipGetMIC(&pAd->PrivateInfo.Rx);
+		
+	// Move MIC value from MSDU, this steps should move to data path.
+	// Since the MIC value might cross MPDUs.
+	if(!NdisEqualMemory(pAd->PrivateInfo.Rx.MIC, OldMic, 8))
+	{
+		DBGPRINT_RAW(RT_DEBUG_ERROR, ("RTMPTkipCompareMICValueWithLLC(): TKIP MIC Error !\n"));  //MIC error.
+	
+		
+		return (FALSE);
+	}
+	return (TRUE);
+}
+/*
+	========================================================================
+
+	Routine	Description:
+		Copy frame from waiting queue into relative ring buffer and set 
+	appropriate ASIC register to kick hardware transmit function
+		
+	Arguments:
+		pAd		Pointer	to our adapter
+		PNDIS_PACKET	Pointer to Ndis Packet for MIC calculation
+		pEncap			Pointer to LLC encap data
+		LenEncap		Total encap length, might be 0 which indicates no encap
+		
+	Return Value:
+		None
+
+	IRQL = DISPATCH_LEVEL
+	
+	Note:
+	
+	========================================================================
+*/
+VOID	RTMPCalculateMICValue(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PNDIS_PACKET	pPacket,
+	IN	PUCHAR			pEncap,
+	IN	PCIPHER_KEY		pKey,
+	IN	UCHAR			apidx)
+{
+	PACKET_INFO		PacketInfo;
+	PUCHAR			pSrcBufVA;
+	UINT			SrcBufLen;
+	PUCHAR			pSrc;
+    UCHAR           UserPriority;
+	UCHAR			vlan_offset = 0;
+
+	RTMP_QueryPacketInfo(pPacket, &PacketInfo, &pSrcBufVA, &SrcBufLen);
+
+	UserPriority = RTMP_GET_PACKET_UP(pPacket);
+	pSrc = pSrcBufVA;
+    
+	// determine if this is a vlan packet 
+	if (((*(pSrc + 12) << 8) + *(pSrc + 13)) == 0x8100)
+		vlan_offset = 4;
+	
+#ifdef CONFIG_STA_SUPPORT
+#endif // CONFIG_STA_SUPPORT //
+	{
+		RTMPInitMICEngine(
+			pAd,
+			pKey->Key,
+			pSrc,
+			pSrc + 6,
+			UserPriority,
+			pKey->TxMic);
+	}
+	
+
+	if (pEncap != NULL)
+	{
+		// LLC encapsulation
+		RTMPTkipAppend(&pAd->PrivateInfo.Tx, pEncap, 6);
+		// Protocol Type
+		RTMPTkipAppend(&pAd->PrivateInfo.Tx, pSrc + 12 + vlan_offset, 2);		
+	}
+	SrcBufLen -= (14 + vlan_offset);
+	pSrc += (14 + vlan_offset);
+	do
+	{
+		if (SrcBufLen > 0)
+		{
+			RTMPTkipAppend(&pAd->PrivateInfo.Tx, pSrc, SrcBufLen);
+		}
+		
+		break;	// No need handle next packet	
+
+	}	while (TRUE);		// End of copying payload
+
+	// Compute the final MIC Value
+	RTMPTkipGetMIC(&pAd->PrivateInfo.Tx);
+}
+
+
+/************************************************************/ 
+/* tkip_sbox()																*/ 
+/* Returns a 16 bit value from a 64K entry table. The Table */ 
+/* is synthesized from two 256 entry byte wide tables.		*/ 
+/************************************************************/ 
+
+UINT tkip_sbox(UINT index) 
+{ 
+	UINT index_low; 
+	UINT index_high; 
+	UINT left, right; 
+
+	index_low = (index % 256); 
+	index_high = ((index >> 8) % 256); 
+
+	left = Tkip_Sbox_Lower[index_low] + (Tkip_Sbox_Upper[index_low] * 256); 
+	right = Tkip_Sbox_Upper[index_high] + (Tkip_Sbox_Lower[index_high] * 256); 
+
+	return (left ^ right); 
+}
+
+UINT rotr1(UINT a) 
+{ 
+	unsigned int b; 
+
+	if ((a & 0x01) == 0x01) 
+	{ 
+		b = (a >> 1) | 0x8000; 
+	} 
+	else 
+	{ 
+		b = (a >> 1) & 0x7fff; 
+	} 
+	b = b % 65536; 
+	return b; 
+} 
+
+VOID RTMPTkipMixKey(
+	UCHAR *key, 
+	UCHAR *ta, 
+	ULONG pnl, /* Least significant 16 bits of PN */
+	ULONG pnh, /* Most significant 32 bits of PN */ 
+	UCHAR *rc4key, 
+	UINT *p1k)
+{
+
+	UINT tsc0; 
+	UINT tsc1;
+	UINT tsc2; 
+
+	UINT ppk0; 
+	UINT ppk1; 
+	UINT ppk2; 
+	UINT ppk3; 
+	UINT ppk4; 
+	UINT ppk5; 
+
+	INT i; 
+	INT j; 
+
+	tsc0 = (unsigned int)((pnh >> 16) % 65536); /* msb */ 
+	tsc1 = (unsigned int)(pnh % 65536); 
+	tsc2 = (unsigned int)(pnl % 65536); /* lsb */ 
+
+	/* Phase 1, step 1 */ 
+	p1k[0] = tsc1; 
+	p1k[1] = tsc0; 
+	p1k[2] = (UINT)(ta[0] + (ta[1]*256)); 
+	p1k[3] = (UINT)(ta[2] + (ta[3]*256)); 
+	p1k[4] = (UINT)(ta[4] + (ta[5]*256)); 
+
+	/* Phase 1, step 2 */ 
+	for (i=0; i<8; i++) 
+	{ 
+		j = 2*(i & 1); 
+		p1k[0] = (p1k[0] + tkip_sbox( (p1k[4] ^ ((256*key[1+j]) + key[j])) % 65536 )) % 65536; 
+		p1k[1] = (p1k[1] + tkip_sbox( (p1k[0] ^ ((256*key[5+j]) + key[4+j])) % 65536 )) % 65536; 
+		p1k[2] = (p1k[2] + tkip_sbox( (p1k[1] ^ ((256*key[9+j]) + key[8+j])) % 65536 )) % 65536; 
+		p1k[3] = (p1k[3] + tkip_sbox( (p1k[2] ^ ((256*key[13+j]) + key[12+j])) % 65536 )) % 65536; 
+		p1k[4] = (p1k[4] + tkip_sbox( (p1k[3] ^ (((256*key[1+j]) + key[j]))) % 65536 )) % 65536; 
+		p1k[4] = (p1k[4] + i) % 65536; 
+	} 
+
+	/* Phase 2, Step 1 */ 
+	ppk0 = p1k[0]; 
+	ppk1 = p1k[1]; 
+	ppk2 = p1k[2]; 
+	ppk3 = p1k[3]; 
+	ppk4 = p1k[4]; 
+	ppk5 = (p1k[4] + tsc2) % 65536; 
+
+	/* Phase2, Step 2 */ 
+	ppk0 = ppk0 + tkip_sbox( (ppk5 ^ ((256*key[1]) + key[0])) % 65536); 
+	ppk1 = ppk1 + tkip_sbox( (ppk0 ^ ((256*key[3]) + key[2])) % 65536); 
+	ppk2 = ppk2 + tkip_sbox( (ppk1 ^ ((256*key[5]) + key[4])) % 65536); 
+	ppk3 = ppk3 + tkip_sbox( (ppk2 ^ ((256*key[7]) + key[6])) % 65536); 
+	ppk4 = ppk4 + tkip_sbox( (ppk3 ^ ((256*key[9]) + key[8])) % 65536); 
+	ppk5 = ppk5 + tkip_sbox( (ppk4 ^ ((256*key[11]) + key[10])) % 65536); 
+
+	ppk0 = ppk0 + rotr1(ppk5 ^ ((256*key[13]) + key[12])); 
+	ppk1 = ppk1 + rotr1(ppk0 ^ ((256*key[15]) + key[14])); 
+	ppk2 = ppk2 + rotr1(ppk1); 
+	ppk3 = ppk3 + rotr1(ppk2); 
+	ppk4 = ppk4 + rotr1(ppk3); 
+	ppk5 = ppk5 + rotr1(ppk4); 
+
+	/* Phase 2, Step 3 */ 
+    /* Phase 2, Step 3 */
+
+	tsc0 = (unsigned int)((pnh >> 16) % 65536); /* msb */ 
+	tsc1 = (unsigned int)(pnh % 65536); 
+	tsc2 = (unsigned int)(pnl % 65536); /* lsb */ 
+
+	rc4key[0] = (tsc2 >> 8) % 256; 
+	rc4key[1] = (((tsc2 >> 8) % 256) | 0x20) & 0x7f; 
+	rc4key[2] = tsc2 % 256; 
+	rc4key[3] = ((ppk5 ^ ((256*key[1]) + key[0])) >> 1) % 256; 
+
+	rc4key[4] = ppk0 % 256; 
+	rc4key[5] = (ppk0 >> 8) % 256; 
+
+	rc4key[6] = ppk1 % 256; 
+	rc4key[7] = (ppk1 >> 8) % 256; 
+
+	rc4key[8] = ppk2 % 256; 
+	rc4key[9] = (ppk2 >> 8) % 256; 
+
+	rc4key[10] = ppk3 % 256; 
+	rc4key[11] = (ppk3 >> 8) % 256; 
+
+	rc4key[12] = ppk4 % 256; 
+	rc4key[13] = (ppk4 >> 8) % 256; 
+
+	rc4key[14] = ppk5 % 256; 
+	rc4key[15] = (ppk5 >> 8) % 256; 
+}
+
+
+//
+// TRUE: Success!
+// FALSE: Decrypt Error!
+//
+//
+// TRUE: Success!
+// FALSE: Decrypt Error!
+//
+BOOLEAN RTMPSoftDecryptTKIP(
+	IN 		PRTMP_ADAPTER 	pAd,
+	IN 		PUCHAR			pHdr,
+	IN 		UCHAR    		UserPriority,
+	IN 		PCIPHER_KEY		pKey,
+	INOUT 	PUCHAR			pData,
+	IN 		UINT16			*DataByteCnt)
+{
+	PHEADER_802_11	pFrame;		
+	UINT8			frame_type;
+	UINT8			frame_subtype;
+	UINT8			from_ds;
+    UINT8			to_ds;
+	UINT8			a4_exists;
+	UINT8			qc_exists;
+	UCHAR			TA[MAC_ADDR_LEN];
+	UCHAR			DA[MAC_ADDR_LEN];
+	UCHAR			SA[MAC_ADDR_LEN];	
+	UCHAR			RC4Key[16];
+	UINT			p1k[5]; //for mix_key;
+	ULONG			pnl;/* Least significant 16 bits of PN */
+	ULONG			pnh;/* Most significant 32 bits of PN */ 
+	ARC4_CTX_STRUC 	ARC4_CTX;
+	PUCHAR			plaintext_ptr;
+	UINT32			plaintext_len;
+	PUCHAR			ciphertext_ptr;
+	UINT32			ciphertext_len;
+	UINT			crc32 = 0;
+	UINT			trailfcs = 0;
+	UCHAR			MIC[8];
+	UCHAR			TrailMIC[8];
+
+#ifdef RT_BIG_ENDIAN
+	RTMPFrameEndianChange(pAd, pHdr, DIR_READ, FALSE);
+#endif
+
+	if (pKey->KeyLen == 0)
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("%s : the key is empty)\n", __FUNCTION__));
+		return FALSE;
+	}
+
+	/* Indicate type and subtype of Frame Control field */
+	frame_type = (((*pHdr) >> 2) & 0x03);
+	frame_subtype = (((*pHdr) >> 4) & 0x0f);	
+
+	/* Indicate the fromDS and ToDS */
+	from_ds = ((*(pHdr + 1)) & 0x2) >> 1;
+	to_ds = ((*(pHdr + 1)) & 0x1);
+
+	/* decide if the Address 4 exist or QoS exist */
+	a4_exists = (from_ds & to_ds);
+	qc_exists = ((frame_subtype == SUBTYPE_QDATA) || 
+				 (frame_subtype == SUBTYPE_QDATA_CFACK) ||
+				 (frame_subtype == SUBTYPE_QDATA_CFPOLL) ||
+				 (frame_subtype == SUBTYPE_QDATA_CFACK_CFPOLL));
+
+	/* pointer to 802.11 header */
+	pFrame = (PHEADER_802_11)pHdr;
+
+	/* Assign DA, SA and TA for TKIP calculation */
+	if (to_ds == 0 && from_ds == 1)
+	{
+		NdisMoveMemory(DA, pFrame->Addr1, MAC_ADDR_LEN);
+		NdisMoveMemory(TA, pFrame->Addr2, MAC_ADDR_LEN);  //BSSID		
+		NdisMoveMemory(SA, pFrame->Addr3, MAC_ADDR_LEN);
+	}	
+	else if (to_ds == 0 && from_ds == 0 )
+	{
+		NdisMoveMemory(DA, pFrame->Addr1, MAC_ADDR_LEN);
+		NdisMoveMemory(TA, pFrame->Addr2, MAC_ADDR_LEN);		
+		NdisMoveMemory(SA, pFrame->Addr2, MAC_ADDR_LEN);
+	}
+	else if (to_ds == 1 && from_ds == 0)
+	{
+		NdisMoveMemory(SA, pFrame->Addr2, MAC_ADDR_LEN);
+		NdisMoveMemory(TA, pFrame->Addr2, MAC_ADDR_LEN);
+		NdisMoveMemory(DA, pFrame->Addr3, MAC_ADDR_LEN);
+	}
+	else if (to_ds == 1 && from_ds == 1)
+	{
+		NdisMoveMemory(TA, pFrame->Addr2, MAC_ADDR_LEN);
+		NdisMoveMemory(DA, pFrame->Addr3, MAC_ADDR_LEN);
+		NdisMoveMemory(SA, pFrame->Octet, MAC_ADDR_LEN);
+	}
+
+	pnl = (*(pData)) << 8 | (*(pData + 2));	
+	pnh = *((PULONG)(pData + 4));
+	pnh = cpu2le32(pnh);	
+	RTMPTkipMixKey(pKey->Key, TA, pnl, pnh, RC4Key, p1k);
+
+	/* skip 8-bytes TKIP IV/EIV header */
+	ciphertext_ptr = pData + LEN_TKIP_IV_HDR;
+	ciphertext_len = *DataByteCnt - LEN_TKIP_IV_HDR;
+
+	/* WEP Decapsulation */
+	/* Generate an RC4 key stream */
+	ARC4_INIT(&ARC4_CTX, &RC4Key[0], 16);
+
+	/* Decrypt the TKIP MPDU by ARC4. 
+	   It shall include plaintext, MIC and ICV.
+	   The result output would overwrite the original TKIP IV/EIV header position */
+	ARC4_Compute(&ARC4_CTX, ciphertext_ptr, ciphertext_len, pData);
+
+	/* Point to the decrypted data frame and its length shall exclude ICV length */
+	plaintext_ptr = pData;
+	plaintext_len = ciphertext_len - LEN_ICV;
+
+	/* Extract peer's ICV */	
+	NdisMoveMemory(&trailfcs, plaintext_ptr + plaintext_len, LEN_ICV);
+	
+	/* Re-computes the ICV and 
+	   bit-wise compares with the peer's ICV. */
+	crc32 = RTMP_CALC_FCS32(PPPINITFCS32, plaintext_ptr, plaintext_len);
+	crc32 ^= 0xffffffff;             /* complement */
+
+    if(crc32 != cpu2le32(trailfcs))
+    {
+		DBGPRINT(RT_DEBUG_ERROR, ("! WEP Data CRC Error !\n"));	 //CRC error.
+		return FALSE;
+	}
+
+	/* Extract peer's MIC and subtract MIC length from total data length */
+	plaintext_len -= LEN_TKIP_MIC;
+	NdisMoveMemory(TrailMIC, plaintext_ptr + plaintext_len, LEN_TKIP_MIC);
+	RTMPInitMICEngine(pAd, pKey->Key, DA, SA, UserPriority, pKey->RxMic);
+	RTMPTkipAppend(&pAd->PrivateInfo.Tx, plaintext_ptr, plaintext_len);
+	RTMPTkipGetMIC(&pAd->PrivateInfo.Tx);
+	NdisMoveMemory(MIC, pAd->PrivateInfo.Tx.MIC, LEN_TKIP_MIC);
+
+	if (!NdisEqualMemory(MIC, TrailMIC, LEN_TKIP_MIC))
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("! TKIP MIC Error !\n"));	 //MIC error.
+		//RTMPReportMicError(pAd, &pWpaKey[KeyID]);	// marked by AlbertY @ 20060630 
+		return FALSE;		
+	}
+
+	/* Update the total data length */
+	*DataByteCnt = plaintext_len;
+
+#ifdef RT_BIG_ENDIAN
+	RTMPFrameEndianChange(pAd, pHdr, DIR_READ, FALSE);
+#endif	
+	return TRUE;
+}
+
+ 
+/*
+	========================================================================
+	
+	Routine Description:
+		Use RC4 to protect the Key Data field of EAPoL frame. 
+		It's defined in IEEE 802.11i-2004 p.84 
+
+	Arguments:
+		
+	Return Value:
+		None
+		
+	Note:
+		
+	========================================================================
+*/
+VOID TKIP_GTK_KEY_WRAP( 
+    IN UCHAR    *key,
+    IN UCHAR	*iv,
+    IN UCHAR    *input_text,
+    IN UINT32    input_len,
+    OUT UCHAR   *output_text)
+{	
+	UCHAR	ekey[LEN_KEY_DESC_IV + LEN_PTK_KEK];	
+	ARC4_CTX_STRUC ARC4_CTX;
+	
+	/* The encryption key is generated by concatenating the
+	   EAPOL-Key IV field and the KEK. */
+	NdisMoveMemory(ekey, iv, LEN_KEY_DESC_IV);
+	NdisMoveMemory(&ekey[LEN_KEY_DESC_IV], key, LEN_PTK_KEK);
+
+	/* RC4 stream cipher initialization with the KEK */	
+	ARC4_INIT(&ARC4_CTX, &ekey[0], LEN_KEY_DESC_IV + LEN_PTK_KEK);
+
+	/* The first 256 octets of the RC4 key stream shall be discarded */
+	ARC4_Discard_KeyLength(&ARC4_CTX, 256);
+
+	/* encryption begins using the 257th key stream octet */
+	ARC4_Compute(&ARC4_CTX, input_text, input_len, output_text);
+	
+}
+
+VOID TKIP_GTK_KEY_UNWRAP( 
+    IN UCHAR    *key,
+    IN UCHAR	*iv,
+    IN UCHAR    *input_text,
+    IN UINT32    input_len,
+    OUT UCHAR   *output_text)
+{
+	TKIP_GTK_KEY_WRAP(key, iv, input_text, input_len, output_text);
+}
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_wep.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_wep.c
new file mode 100644
index 000000000..24458e4ef
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_wep.c
@@ -0,0 +1,342 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+	Module Name:
+	rtmp_wep.c
+
+	Abstract:
+
+	Revision History:
+	Who			When			What
+	--------	----------		----------------------------------------------
+	Paul Wu		10-28-02		Initial
+*/
+
+#include	"rt_config.h"
+
+UINT FCSTAB_32[256] = 
+{
+	0x00000000, 0x77073096, 0xee0e612c, 0x990951ba,
+	0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,
+	0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
+	0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,
+	0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
+	0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
+	0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec,
+	0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,
+	0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
+	0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
+	0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940,
+	0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
+	0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116,
+	0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,
+	0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
+	0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,
+	0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a,
+	0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
+	0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818,
+	0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
+	0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 
+	0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 
+	0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 
+	0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, 
+	0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 
+	0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 
+	0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 
+	0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 
+	0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 
+	0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, 
+	0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 
+	0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 
+	0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 
+	0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 
+	0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 
+	0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 
+	0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 
+	0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, 
+	0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 
+	0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 
+	0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 
+	0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 
+	0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 
+	0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79, 
+	0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 
+	0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 
+	0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 
+	0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, 
+	0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 
+	0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713, 
+	0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 
+	0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 
+	0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 
+	0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, 
+	0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 
+	0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 
+	0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 
+	0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 
+	0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 
+	0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, 
+	0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 
+	0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, 
+	0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 
+	0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d 
+}; 
+
+/*
+	========================================================================
+
+	Routine	Description:
+		Calculate a new FCS given the current FCS and the new data.
+		
+	Arguments:
+		Fcs	      the original FCS value
+		Cp          pointer to the data which will be calculate the FCS
+		Len         the length of the data
+		
+	Return Value:
+		UINT - FCS 32 bits
+		        
+	IRQL = DISPATCH_LEVEL
+
+	Note:
+	
+	========================================================================
+*/
+UINT	RTMP_CALC_FCS32(
+	IN	UINT	Fcs,
+	IN	PUCHAR	Cp,
+	IN	INT		Len)
+{
+	while (Len--)
+	   Fcs = (((Fcs) >> 8) ^ FCSTAB_32[((Fcs) ^ (*Cp++)) & 0xff]);
+
+	return (Fcs); 
+} 
+
+/*
+	========================================================================
+
+	Routine	Description:
+		Init WEP function.	
+		
+	Arguments:
+      pAd		Pointer to our adapter
+		pKey        Pointer to the WEP KEY
+		KeyId		   WEP Key ID
+		KeyLen      the length of WEP KEY
+		pDest       Pointer to the destination which Encryption data will store in.
+		
+	Return Value:
+		None
+
+	IRQL = DISPATCH_LEVEL
+	
+	Note:
+	
+	========================================================================
+*/
+VOID	RTMPInitWepEngine(
+	IN	PUCHAR			pIv,
+	IN	PUCHAR			pKey,
+	IN	UCHAR			KeyLen,
+	OUT	ARC4_CTX_STRUC  *pARC4_CTX)
+{	
+	UCHAR   seed[16];
+	UINT8	seed_len;
+		
+	/* WEP seed construction */
+	NdisZeroMemory(seed, 16);
+	NdisMoveMemory(seed, pIv, 3);
+	NdisMoveMemory(&seed[3], pKey, KeyLen);
+	seed_len = 3 + KeyLen;
+
+	/* RC4 uses a pseudo-random number generator (PRNG) 
+	   to generate a key stream */
+	ARC4_INIT(pARC4_CTX, &seed[0], seed_len);    		
+}
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Construct WEP IV header.
+
+	Arguments:
+		
+	Return Value:
+
+	Note:
+		It's a 4-octets header.
+				
+	========================================================================
+*/
+VOID RTMPConstructWEPIVHdr(
+	IN	UINT8 			key_idx,
+	IN	UCHAR			*pn,	
+	OUT	UCHAR			*iv_hdr)
+{	
+	NdisZeroMemory(iv_hdr, LEN_WEP_IV_HDR);
+
+	NdisMoveMemory(iv_hdr, pn, LEN_WEP_TSC);
+
+	/* Append key index */
+	iv_hdr[3] = (key_idx << 6);        
+}
+
+/*
+	========================================================================
+
+	Routine	Description:
+		WEP MPDU cryptographic encapsulation 	
+		
+	Arguments:
+		pAdapter		Pointer to our adapter
+		pSrc        Pointer to the received data
+		Len         the length of the received data
+		
+	Return Value:
+		
+	Note:
+	
+	========================================================================
+*/
+BOOLEAN	RTMPSoftEncryptWEP(
+	IN 		PRTMP_ADAPTER 	pAd,
+	IN 		PUCHAR			pIvHdr,
+	IN 		PCIPHER_KEY		pKey,
+	INOUT 	PUCHAR			pData,
+	IN 		ULONG			DataByteCnt)
+{
+	ARC4_CTX_STRUC ARC4_CTX; 
+	UINT 	FCSCRC32;
+
+	if (pKey->KeyLen == 0)
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("%s : The key is empty !\n", __FUNCTION__));
+		return FALSE;
+	}
+
+	/* Initialize WEP key stream */
+	RTMPInitWepEngine(pIvHdr, 
+					  pKey->Key, 					   
+					  pKey->KeyLen,
+					  &ARC4_CTX);
+
+	/* WEP computes the ICV over the plaintext data */
+	FCSCRC32 = RTMP_CALC_FCS32(PPPINITFCS32, pData, DataByteCnt);
+	FCSCRC32 ^= 0xffffffff;             /* complement */
+	FCSCRC32 = cpu2le32(FCSCRC32);
+
+	/* Append 4-bytes ICV after the MPDU data */
+	NdisMoveMemory(pData + DataByteCnt, (PUCHAR)&FCSCRC32, LEN_ICV);
+
+	/* Encrypt the MPDU plaintext data and ICV using ARC4 with a seed */
+	ARC4_Compute(&ARC4_CTX, pData, DataByteCnt + LEN_ICV, pData);
+
+	return TRUE;
+}
+
+
+/*
+	========================================================================
+
+	Routine	Description:
+		Decrypt received WEP data	
+		
+	Arguments:
+		pAdapter		Pointer to our adapter
+		pSrc        Pointer to the received data
+		Len         the length of the received data
+		
+	Return Value:
+		TRUE        Decrypt WEP data success
+		FALSE       Decrypt WEP data failed
+		
+	Note:
+	
+	========================================================================
+*/
+BOOLEAN	RTMPSoftDecryptWEP(
+	IN 		PRTMP_ADAPTER 	pAd,
+	IN 		PCIPHER_KEY		pKey,
+	INOUT 	PUCHAR			pData,
+	INOUT 	UINT16			*DataByteCnt)
+{
+	ARC4_CTX_STRUC 	ARC4_CTX; 	
+	PUCHAR			plaintext_ptr;
+	UINT16			plaintext_len;
+	PUCHAR			ciphertext_ptr;
+	UINT16			ciphertext_len;
+	UINT			trailfcs;
+	UINT    		crc32;
+	
+	if (pKey->KeyLen == 0)
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("%s : The key is not available !\n", __FUNCTION__));
+		return FALSE;
+	}
+
+	/* Initialize WEP key stream */
+	RTMPInitWepEngine(pData, 
+					  pKey->Key, 					   
+					  pKey->KeyLen,
+					  &ARC4_CTX);
+
+	/* Skip the WEP IV header (4-bytes) */
+	ciphertext_ptr = pData + LEN_WEP_IV_HDR;
+	ciphertext_len = *DataByteCnt - LEN_WEP_IV_HDR;
+	
+	/* Decrypt the WEP MPDU. It shall include plaintext and ICV.
+	   The result output would overwrite the original WEP IV header position */
+	ARC4_Compute(&ARC4_CTX, 
+				 ciphertext_ptr, 
+				 ciphertext_len, 
+				 pData);
+
+	/* Point to the decrypted data frame and its length shall exclude ICV length */
+	plaintext_ptr = pData;
+	plaintext_len = ciphertext_len - LEN_ICV;
+
+	/* Extract peer's the ICV */
+	NdisMoveMemory(&trailfcs, plaintext_ptr + plaintext_len, LEN_ICV);
+
+	/* WEP recomputes the ICV and 
+	   bit-wise compares it with the decrypted ICV from the MPDU. */
+	crc32 = RTMP_CALC_FCS32(PPPINITFCS32, plaintext_ptr, plaintext_len);
+	crc32 ^= 0xffffffff;             /* complement */
+
+    if(crc32 != cpu2le32(trailfcs))
+    {
+		DBGPRINT(RT_DEBUG_ERROR, ("! WEP Data CRC Error !\n"));	 //CRC error.
+		return FALSE;
+	}
+
+	/* Update the total data length */
+	*DataByteCnt = plaintext_len;
+	
+	return TRUE;
+}
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_wpa.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_wpa.c
new file mode 100644
index 000000000..97f150be3
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/cmm_wpa.c
@@ -0,0 +1,4081 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+	Module Name:
+	wpa.c
+
+	Abstract:
+
+	Revision History:
+	Who			When			What
+	--------	----------		----------------------------------------------
+	Jan	Lee		03-07-22		Initial
+	Paul Lin	03-11-28		Modify for supplicant
+*/
+#include "rt_config.h"
+
+// WPA OUI
+UCHAR		OUI_WPA[3]				= {0x00, 0x50, 0xF2};
+UCHAR		OUI_WPA_NONE_AKM[4]		= {0x00, 0x50, 0xF2, 0x00};
+UCHAR       OUI_WPA_VERSION[4]      = {0x00, 0x50, 0xF2, 0x01};
+UCHAR       OUI_WPA_WEP40[4]      = {0x00, 0x50, 0xF2, 0x01};
+UCHAR       OUI_WPA_TKIP[4]     = {0x00, 0x50, 0xF2, 0x02};
+UCHAR       OUI_WPA_CCMP[4]     = {0x00, 0x50, 0xF2, 0x04};
+UCHAR       OUI_WPA_WEP104[4]      = {0x00, 0x50, 0xF2, 0x05};
+UCHAR       OUI_WPA_8021X_AKM[4]	= {0x00, 0x50, 0xF2, 0x01};
+UCHAR       OUI_WPA_PSK_AKM[4]      = {0x00, 0x50, 0xF2, 0x02};
+// WPA2 OUI
+UCHAR		OUI_WPA2[3]				= {0x00, 0x0F, 0xAC};
+UCHAR       OUI_WPA2_WEP40[4]   = {0x00, 0x0F, 0xAC, 0x01};
+UCHAR       OUI_WPA2_TKIP[4]        = {0x00, 0x0F, 0xAC, 0x02};
+UCHAR       OUI_WPA2_CCMP[4]        = {0x00, 0x0F, 0xAC, 0x04};
+UCHAR       OUI_WPA2_8021X_AKM[4]   = {0x00, 0x0F, 0xAC, 0x01};
+UCHAR       OUI_WPA2_PSK_AKM[4]   	= {0x00, 0x0F, 0xAC, 0x02};
+UCHAR       OUI_WPA2_WEP104[4]   = {0x00, 0x0F, 0xAC, 0x05};
+
+
+
+static VOID	ConstructEapolKeyData(
+	IN	PMAC_TABLE_ENTRY	pEntry,
+	IN	UCHAR			GroupKeyWepStatus,	
+	IN	UCHAR			keyDescVer,
+	IN 	UCHAR			MsgType,
+	IN	UCHAR			DefaultKeyIdx,
+	IN	UCHAR			*GTK,
+	IN	UCHAR			*RSNIE,
+	IN	UCHAR			RSNIE_LEN,
+	OUT PEAPOL_PACKET   pMsg);
+
+static VOID WpaEAPPacketAction(
+    IN PRTMP_ADAPTER pAd, 
+    IN MLME_QUEUE_ELEM *Elem); 
+
+static VOID WpaEAPOLASFAlertAction(
+    IN PRTMP_ADAPTER pAd, 
+    IN MLME_QUEUE_ELEM *Elem); 
+
+static VOID WpaEAPOLLogoffAction(
+    IN PRTMP_ADAPTER pAd, 
+    IN MLME_QUEUE_ELEM *Elem); 
+
+static VOID WpaEAPOLStartAction(
+    IN PRTMP_ADAPTER    pAd, 
+    IN MLME_QUEUE_ELEM  *Elem);
+
+static VOID WpaEAPOLKeyAction(
+    IN PRTMP_ADAPTER    pAd, 
+    IN MLME_QUEUE_ELEM  *Elem);
+
+/*  
+    ==========================================================================
+    Description: 
+        association state machine init, including state transition and timer init
+    Parameters: 
+        S - pointer to the association state machine
+    ==========================================================================
+ */
+VOID WpaStateMachineInit(
+    IN  PRTMP_ADAPTER   pAd, 
+    IN  STATE_MACHINE *S, 
+    OUT STATE_MACHINE_FUNC Trans[]) 
+{
+    StateMachineInit(S, (STATE_MACHINE_FUNC *)Trans, MAX_WPA_PTK_STATE, MAX_WPA_MSG, (STATE_MACHINE_FUNC)Drop, WPA_PTK, WPA_MACHINE_BASE);
+
+    StateMachineSetAction(S, WPA_PTK, MT2_EAPPacket, (STATE_MACHINE_FUNC)WpaEAPPacketAction);
+    StateMachineSetAction(S, WPA_PTK, MT2_EAPOLStart, (STATE_MACHINE_FUNC)WpaEAPOLStartAction);
+    StateMachineSetAction(S, WPA_PTK, MT2_EAPOLLogoff, (STATE_MACHINE_FUNC)WpaEAPOLLogoffAction);
+    StateMachineSetAction(S, WPA_PTK, MT2_EAPOLKey, (STATE_MACHINE_FUNC)WpaEAPOLKeyAction);
+    StateMachineSetAction(S, WPA_PTK, MT2_EAPOLASFAlert, (STATE_MACHINE_FUNC)WpaEAPOLASFAlertAction);
+}
+
+/*
+    ==========================================================================
+    Description:
+        this is state machine function. 
+        When receiving EAP packets which is  for 802.1x authentication use. 
+        Not use in PSK case
+    Return:
+    ==========================================================================
+*/
+VOID WpaEAPPacketAction(
+    IN PRTMP_ADAPTER pAd, 
+    IN MLME_QUEUE_ELEM *Elem) 
+{   
+}
+
+VOID WpaEAPOLASFAlertAction(
+    IN PRTMP_ADAPTER pAd, 
+    IN MLME_QUEUE_ELEM *Elem) 
+{   
+}
+
+VOID WpaEAPOLLogoffAction(
+    IN PRTMP_ADAPTER pAd, 
+    IN MLME_QUEUE_ELEM *Elem) 
+{   
+}
+
+/*
+    ==========================================================================
+    Description:
+       Start 4-way HS when rcv EAPOL_START which may create by our driver in assoc.c
+    Return:
+    ==========================================================================
+*/
+VOID WpaEAPOLStartAction(
+    IN PRTMP_ADAPTER    pAd, 
+    IN MLME_QUEUE_ELEM  *Elem) 
+{   
+    MAC_TABLE_ENTRY     *pEntry;
+    PHEADER_802_11      pHeader;
+
+    DBGPRINT(RT_DEBUG_TRACE, ("WpaEAPOLStartAction ===> \n"));
+    
+    pHeader = (PHEADER_802_11)Elem->Msg;
+    
+    //For normaol PSK, we enqueue an EAPOL-Start command to trigger the process.
+    if (Elem->MsgLen == 6)
+        pEntry = MacTableLookup(pAd, Elem->Msg);
+    else
+    {
+        pEntry = MacTableLookup(pAd, pHeader->Addr2);
+    }
+    
+    if (pEntry) 
+    {
+		DBGPRINT(RT_DEBUG_TRACE, (" PortSecured(%d), WpaState(%d), AuthMode(%d), PMKID_CacheIdx(%d) \n", pEntry->PortSecured, pEntry->WpaState, pEntry->AuthMode, pEntry->PMKID_CacheIdx));
+
+        if ((pEntry->PortSecured == WPA_802_1X_PORT_NOT_SECURED)
+			&& (pEntry->WpaState < AS_PTKSTART)
+            && ((pEntry->AuthMode == Ndis802_11AuthModeWPAPSK) || (pEntry->AuthMode == Ndis802_11AuthModeWPA2PSK) || ((pEntry->AuthMode == Ndis802_11AuthModeWPA2) && (pEntry->PMKID_CacheIdx != ENTRY_NOT_FOUND))))
+        {
+            pEntry->PrivacyFilter = Ndis802_11PrivFilter8021xWEP;
+            pEntry->WpaState = AS_INITPSK;
+            pEntry->PortSecured = WPA_802_1X_PORT_NOT_SECURED;
+            NdisZeroMemory(pEntry->R_Counter, sizeof(pEntry->R_Counter));
+            pEntry->ReTryCounter = PEER_MSG1_RETRY_TIMER_CTR;
+            
+            WPAStart4WayHS(pAd, pEntry, PEER_MSG1_RETRY_EXEC_INTV);
+        }
+    }
+}
+
+/*
+    ==========================================================================
+    Description:
+        This is state machine function. 
+        When receiving EAPOL packets which is  for 802.1x key management. 
+        Use both in WPA, and WPAPSK case. 
+        In this function, further dispatch to different functions according to the received packet.  3 categories are : 
+          1.  normal 4-way pairwisekey and 2-way groupkey handshake
+          2.  MIC error (Countermeasures attack)  report packet from STA.
+          3.  Request for pairwise/group key update from STA
+    Return:
+    ==========================================================================
+*/
+VOID WpaEAPOLKeyAction(
+    IN PRTMP_ADAPTER    pAd, 
+    IN MLME_QUEUE_ELEM  *Elem) 
+{	
+    MAC_TABLE_ENTRY     *pEntry;
+    PHEADER_802_11      pHeader;
+    PEAPOL_PACKET       pEapol_packet;	
+	KEY_INFO			peerKeyInfo;
+	UINT				eapol_len;
+
+    DBGPRINT(RT_DEBUG_TRACE, ("WpaEAPOLKeyAction ===>\n"));
+
+    pHeader = (PHEADER_802_11)Elem->Msg;
+    pEapol_packet = (PEAPOL_PACKET)&Elem->Msg[LENGTH_802_11 + LENGTH_802_1_H];
+	eapol_len = CONV_ARRARY_TO_UINT16(pEapol_packet->Body_Len) + LENGTH_EAPOL_H;
+
+	NdisZeroMemory((PUCHAR)&peerKeyInfo, sizeof(peerKeyInfo));
+	NdisMoveMemory((PUCHAR)&peerKeyInfo, (PUCHAR)&pEapol_packet->KeyDesc.KeyInfo, sizeof(KEY_INFO));
+
+
+	*((USHORT *)&peerKeyInfo) = cpu2le16(*((USHORT *)&peerKeyInfo));
+
+    do
+    {
+        pEntry = MacTableLookup(pAd, pHeader->Addr2);
+
+		if (!pEntry || (!IS_ENTRY_CLIENT(pEntry) && !IS_ENTRY_APCLI(pEntry)))		
+            break;
+
+		if (pEntry->AuthMode < Ndis802_11AuthModeWPA)
+				break;		
+
+		DBGPRINT(RT_DEBUG_TRACE, ("Receive EAPoL-Key frame from STA %02X-%02X-%02X-%02X-%02X-%02X\n", PRINT_MAC(pEntry->Addr)));
+
+		if (eapol_len > Elem->MsgLen - LENGTH_802_11 - LENGTH_802_1_H)
+		{
+            DBGPRINT(RT_DEBUG_ERROR, ("The length of EAPoL packet is invalid \n"));
+            break;
+        }
+
+        if (((pEapol_packet->ProVer != EAPOL_VER) && (pEapol_packet->ProVer != EAPOL_VER2)) || 
+			((pEapol_packet->KeyDesc.Type != WPA1_KEY_DESC) && (pEapol_packet->KeyDesc.Type != WPA2_KEY_DESC)))
+        {
+            DBGPRINT(RT_DEBUG_ERROR, ("Key descripter does not match with WPA rule\n"));
+            break;
+        }
+
+		// The value 1 shall be used for all EAPOL-Key frames to and from a STA when 
+		// neither the group nor pairwise ciphers are CCMP for Key Descriptor 1.
+		if ((pEntry->WepStatus == Ndis802_11Encryption2Enabled) && (peerKeyInfo.KeyDescVer != KEY_DESC_TKIP))
+        {
+	        DBGPRINT(RT_DEBUG_ERROR, ("Key descripter version not match(TKIP) \n"));
+    	    break;
+    	}	
+		// The value 2 shall be used for all EAPOL-Key frames to and from a STA when 
+		// either the pairwise or the group cipher is AES-CCMP for Key Descriptor 2.
+    	else if ((pEntry->WepStatus == Ndis802_11Encryption3Enabled) && (peerKeyInfo.KeyDescVer != KEY_DESC_AES))
+    	{
+        	DBGPRINT(RT_DEBUG_ERROR, ("Key descripter version not match(AES) \n"));
+        	break;
+    	}
+
+		// Check if this STA is in class 3 state and the WPA state is started 						
+        if ((pEntry->Sst == SST_ASSOC) && (pEntry->WpaState >= AS_INITPSK))
+        {			 		
+			// Check the Key Ack (bit 7) of the Key Information to determine the Authenticator 
+			// or not.
+			// An EAPOL-Key frame that is sent by the Supplicant in response to an EAPOL-
+			// Key frame from the Authenticator must not have the Ack bit set.
+			if (peerKeyInfo.KeyAck == 1)
+			{
+				// The frame is snet by Authenticator. 
+				// So the Supplicant side shall handle this.
+
+				if ((peerKeyInfo.Secure == 0) && (peerKeyInfo.Request == 0) && 
+					(peerKeyInfo.Error == 0) && (peerKeyInfo.KeyType == PAIRWISEKEY))
+				{
+					// Process 1. the message 1 of 4-way HS in WPA or WPA2 
+					//			  EAPOL-Key(0,0,1,0,P,0,0,ANonce,0,DataKD_M1)
+					//		   2. the message 3 of 4-way HS in WPA	
+					//			  EAPOL-Key(0,1,1,1,P,0,KeyRSC,ANonce,MIC,DataKD_M3)
+					if (peerKeyInfo.KeyMic == 0)
+                    	PeerPairMsg1Action(pAd, pEntry, Elem);
+	                else                	                	
+    	                PeerPairMsg3Action(pAd, pEntry, Elem);
+				}
+				else if ((peerKeyInfo.Secure == 1) && 
+						 (peerKeyInfo.KeyMic == 1) &&
+						 (peerKeyInfo.Request == 0) && 
+						 (peerKeyInfo.Error == 0))
+				{
+					// Process 1. the message 3 of 4-way HS in WPA2 
+					//			  EAPOL-Key(1,1,1,1,P,0,KeyRSC,ANonce,MIC,DataKD_M3)
+					//		   2. the message 1 of group KS in WPA or WPA2
+					//			  EAPOL-Key(1,1,1,0,G,0,Key RSC,0, MIC,GTK[N])
+					if (peerKeyInfo.KeyType == PAIRWISEKEY)
+						PeerPairMsg3Action(pAd, pEntry, Elem);
+					else
+						PeerGroupMsg1Action(pAd, pEntry, Elem);					
+				}
+			}
+			else
+			{
+				// The frame is snet by Supplicant.		
+				// So the Authenticator side shall handle this.
+				if ((peerKeyInfo.Request == 0) && 
+					 	 (peerKeyInfo.Error == 0) && 
+					 	 (peerKeyInfo.KeyMic == 1))
+				{
+					if (peerKeyInfo.Secure == 0 && peerKeyInfo.KeyType == PAIRWISEKEY)
+					{
+						// EAPOL-Key(0,1,0,0,P,0,0,SNonce,MIC,Data)
+						// Process 1. message 2 of 4-way HS in WPA or WPA2 
+						//		   2. message 4 of 4-way HS in WPA											
+						if (CONV_ARRARY_TO_UINT16(pEapol_packet->KeyDesc.KeyDataLen) == 0)
+						{
+							PeerPairMsg4Action(pAd, pEntry, Elem);
+    	            	}
+						else
+						{
+							PeerPairMsg2Action(pAd, pEntry, Elem);
+						}
+					}
+					else if (peerKeyInfo.Secure == 1 && peerKeyInfo.KeyType == PAIRWISEKEY)
+					{
+						// EAPOL-Key(1,1,0,0,P,0,0,0,MIC,0)						
+						// Process message 4 of 4-way HS in WPA2
+						PeerPairMsg4Action(pAd, pEntry, Elem);
+					}
+					else if (peerKeyInfo.Secure == 1 && peerKeyInfo.KeyType == GROUPKEY)
+					{
+						// EAPOL-Key(1,1,0,0,G,0,0,0,MIC,0)
+						// Process message 2 of Group key HS in WPA or WPA2 
+						PeerGroupMsg2Action(pAd, pEntry, &Elem->Msg[LENGTH_802_11], (Elem->MsgLen - LENGTH_802_11));
+					}
+				}
+			}			            
+        }
+    }while(FALSE);
+}
+
+/*
+	========================================================================
+
+	Routine	Description:
+		Copy frame from waiting queue into relative ring buffer and set 
+	appropriate ASIC register to kick hardware encryption before really
+	sent out to air.
+		
+	Arguments:
+		pAd		Pointer	to our adapter
+		PNDIS_PACKET	Pointer to outgoing Ndis frame
+		NumberOfFrag	Number of fragment required
+		
+	Return Value:
+		None
+
+	Note:
+	
+	========================================================================
+*/
+VOID RTMPToWirelessSta(
+    IN  PRTMP_ADAPTER   	pAd,
+    IN  PMAC_TABLE_ENTRY 	pEntry,
+    IN  PUCHAR          	pHeader802_3,
+    IN  UINT            	HdrLen,
+    IN  PUCHAR          	pData,
+    IN  UINT            	DataLen,
+    IN	BOOLEAN				bClearFrame)
+{
+    PNDIS_PACKET    pPacket;
+    NDIS_STATUS     Status;
+
+	if ((!pEntry) || (!IS_ENTRY_CLIENT(pEntry) && !IS_ENTRY_APCLI(pEntry)
+	))
+		return;
+	
+    do {
+        	// build a NDIS packet
+        	Status = RTMPAllocateNdisPacket(pAd, &pPacket, pHeader802_3, HdrLen, pData, DataLen);
+        	if (Status != NDIS_STATUS_SUCCESS)
+            	break;
+
+        
+			if (bClearFrame)
+				RTMP_SET_PACKET_CLEAR_EAP_FRAME(pPacket, 1);
+			else
+				RTMP_SET_PACKET_CLEAR_EAP_FRAME(pPacket, 0);	
+		{
+			RTMP_SET_PACKET_SOURCE(pPacket, PKTSRC_NDIS);
+
+			RTMP_SET_PACKET_NET_DEVICE_MBSSID(pPacket, MAIN_MBSSID);	// set a default value
+			if(pEntry->apidx != 0)
+        		RTMP_SET_PACKET_NET_DEVICE_MBSSID(pPacket, pEntry->apidx);
+		
+        	RTMP_SET_PACKET_WCID(pPacket, (UCHAR)pEntry->Aid);
+			RTMP_SET_PACKET_MOREDATA(pPacket, FALSE);
+		}
+
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		{
+		    // send out the packet
+	        Status = STASendPacket(pAd, pPacket);
+    	    if (Status == NDIS_STATUS_SUCCESS)
+			{
+				UCHAR   Index;
+				
+				// Dequeue one frame from TxSwQueue0..3 queue and process it
+				// There are three place calling dequeue for TX ring.
+				// 1. Here, right after queueing the frame.
+				// 2. At the end of TxRingTxDone service routine.
+				// 3. Upon NDIS call RTMPSendPackets
+				if((!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS)) && 
+					(!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_RESET_IN_PROGRESS)))
+				{
+					for(Index = 0; Index < 5; Index ++)
+						if(pAd->TxSwQueue[Index].Number > 0)
+							RTMPDeQueuePacket(pAd, FALSE, Index, MAX_TX_PROCESS);
+				}
+			}
+		}
+#endif // CONFIG_STA_SUPPORT //
+  
+    } while (FALSE);
+}
+
+/*
+    ==========================================================================
+    Description:
+        Check the validity of the received EAPoL frame
+    Return:
+        TRUE if all parameters are OK, 
+        FALSE otherwise
+    ==========================================================================
+ */
+BOOLEAN PeerWpaMessageSanity(
+    IN 	PRTMP_ADAPTER 		pAd, 
+    IN 	PEAPOL_PACKET 		pMsg, 
+    IN 	ULONG 				MsgLen, 
+    IN 	UCHAR				MsgType,
+    IN 	MAC_TABLE_ENTRY  	*pEntry)
+{
+	UCHAR			mic[LEN_KEY_DESC_MIC], digest[80], KEYDATA[MAX_LEN_OF_RSNIE];
+	BOOLEAN			bReplayDiff = FALSE;
+	BOOLEAN			bWPA2 = FALSE;
+	KEY_INFO		EapolKeyInfo;	
+	UCHAR			GroupKeyIndex = 0;
+	
+	
+	NdisZeroMemory(mic, sizeof(mic));
+	NdisZeroMemory(digest, sizeof(digest));
+	NdisZeroMemory(KEYDATA, sizeof(KEYDATA));
+	NdisZeroMemory((PUCHAR)&EapolKeyInfo, sizeof(EapolKeyInfo));
+	
+	NdisMoveMemory((PUCHAR)&EapolKeyInfo, (PUCHAR)&pMsg->KeyDesc.KeyInfo, sizeof(KEY_INFO));
+
+	*((USHORT *)&EapolKeyInfo) = cpu2le16(*((USHORT *)&EapolKeyInfo));
+
+	// Choose WPA2 or not
+	if ((pEntry->AuthMode == Ndis802_11AuthModeWPA2) || (pEntry->AuthMode == Ndis802_11AuthModeWPA2PSK))
+		bWPA2 = TRUE;
+
+	// 0. Check MsgType
+	if ((MsgType > EAPOL_GROUP_MSG_2) || (MsgType < EAPOL_PAIR_MSG_1))
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("The message type is invalid(%d)! \n", MsgType));
+		return FALSE;
+	}
+				
+	// 1. Replay counter check	
+ 	if (MsgType == EAPOL_PAIR_MSG_1 || MsgType == EAPOL_PAIR_MSG_3 || MsgType == EAPOL_GROUP_MSG_1)	// For supplicant
+    {
+    	// First validate replay counter, only accept message with larger replay counter.
+		// Let equal pass, some AP start with all zero replay counter
+		UCHAR	ZeroReplay[LEN_KEY_DESC_REPLAY];
+		
+        NdisZeroMemory(ZeroReplay, LEN_KEY_DESC_REPLAY);
+		if ((RTMPCompareMemory(pMsg->KeyDesc.ReplayCounter, pEntry->R_Counter, LEN_KEY_DESC_REPLAY) != 1) &&
+			(RTMPCompareMemory(pMsg->KeyDesc.ReplayCounter, ZeroReplay, LEN_KEY_DESC_REPLAY) != 0))
+    	{
+			bReplayDiff = TRUE;
+    	}						
+ 	}
+	else if (MsgType == EAPOL_PAIR_MSG_2 || MsgType == EAPOL_PAIR_MSG_4 || MsgType == EAPOL_GROUP_MSG_2)	// For authenticator
+	{
+		// check Replay Counter coresponds to MSG from authenticator, otherwise discard
+    	if (!NdisEqualMemory(pMsg->KeyDesc.ReplayCounter, pEntry->R_Counter, LEN_KEY_DESC_REPLAY))
+    	{	
+			bReplayDiff = TRUE;	        
+    	}
+	}
+
+	// Replay Counter different condition
+	if (bReplayDiff)
+	{
+		// send wireless event - for replay counter different
+			RTMPSendWirelessEvent(pAd, IW_REPLAY_COUNTER_DIFF_EVENT_FLAG, pEntry->Addr, pEntry->apidx, 0); 
+
+		if (MsgType < EAPOL_GROUP_MSG_1)
+		{
+           	DBGPRINT(RT_DEBUG_ERROR, ("Replay Counter Different in pairwise msg %d of 4-way handshake!\n", MsgType));
+		}
+		else
+		{
+			DBGPRINT(RT_DEBUG_ERROR, ("Replay Counter Different in group msg %d of 2-way handshake!\n", (MsgType - EAPOL_PAIR_MSG_4)));
+		}
+		
+		hex_dump("Receive replay counter ", pMsg->KeyDesc.ReplayCounter, LEN_KEY_DESC_REPLAY);
+		hex_dump("Current replay counter ", pEntry->R_Counter, LEN_KEY_DESC_REPLAY);	
+        return FALSE;
+	}
+
+	// 2. Verify MIC except Pairwise Msg1
+	if (MsgType != EAPOL_PAIR_MSG_1)
+	{
+		UCHAR			rcvd_mic[LEN_KEY_DESC_MIC];
+		UINT			eapol_len = CONV_ARRARY_TO_UINT16(pMsg->Body_Len) + 4;
+
+		// Record the received MIC for check later
+		NdisMoveMemory(rcvd_mic, pMsg->KeyDesc.KeyMic, LEN_KEY_DESC_MIC);
+		NdisZeroMemory(pMsg->KeyDesc.KeyMic, LEN_KEY_DESC_MIC);
+							
+        if (EapolKeyInfo.KeyDescVer == KEY_DESC_TKIP)	// TKIP
+        {	
+            RT_HMAC_MD5(pEntry->PTK, LEN_PTK_KCK, (PUCHAR)pMsg, eapol_len, mic, MD5_DIGEST_SIZE);
+        }
+        else if (EapolKeyInfo.KeyDescVer == KEY_DESC_AES)	// AES        
+        {                        
+            RT_HMAC_SHA1(pEntry->PTK, LEN_PTK_KCK, (PUCHAR)pMsg, eapol_len, digest, SHA1_DIGEST_SIZE);
+            NdisMoveMemory(mic, digest, LEN_KEY_DESC_MIC);
+        }
+	
+        if (!NdisEqualMemory(rcvd_mic, mic, LEN_KEY_DESC_MIC))
+        {
+			// send wireless event - for MIC different
+				RTMPSendWirelessEvent(pAd, IW_MIC_DIFF_EVENT_FLAG, pEntry->Addr, pEntry->apidx, 0); 
+
+			if (MsgType < EAPOL_GROUP_MSG_1)
+			{
+            	DBGPRINT(RT_DEBUG_ERROR, ("MIC Different in pairwise msg %d of 4-way handshake!\n", MsgType));
+			}
+			else
+			{
+				DBGPRINT(RT_DEBUG_ERROR, ("MIC Different in group msg %d of 2-way handshake!\n", (MsgType - EAPOL_PAIR_MSG_4)));
+			}
+	
+			hex_dump("Received MIC", rcvd_mic, LEN_KEY_DESC_MIC);
+			hex_dump("Desired  MIC", mic, LEN_KEY_DESC_MIC);
+
+			return FALSE;
+        }        
+	}
+
+	// 1. Decrypt the Key Data field if GTK is included.
+	// 2. Extract the context of the Key Data field if it exist.	 
+	// The field in pairwise_msg_2_WPA1(WPA2) & pairwise_msg_3_WPA1 is clear.
+	// The field in group_msg_1_WPA1(WPA2) & pairwise_msg_3_WPA2 is encrypted.
+	if (CONV_ARRARY_TO_UINT16(pMsg->KeyDesc.KeyDataLen) > 0)
+	{		
+		// Decrypt this field		
+		if ((MsgType == EAPOL_PAIR_MSG_3 && bWPA2) || (MsgType == EAPOL_GROUP_MSG_1))
+		{					
+			if(
+				(EapolKeyInfo.KeyDescVer == KEY_DESC_AES))
+			{
+				UINT aes_unwrap_len = 0;
+				
+				// AES 
+				AES_Key_Unwrap(pMsg->KeyDesc.KeyData, 
+									CONV_ARRARY_TO_UINT16(pMsg->KeyDesc.KeyDataLen),
+							   &pEntry->PTK[LEN_PTK_KCK], LEN_PTK_KEK, 
+							   KEYDATA, &aes_unwrap_len);
+				SET_UINT16_TO_ARRARY(pMsg->KeyDesc.KeyDataLen, aes_unwrap_len);
+			} 
+			else	  
+			{
+				TKIP_GTK_KEY_UNWRAP(&pEntry->PTK[LEN_PTK_KCK], 
+									pMsg->KeyDesc.KeyIv,									
+									pMsg->KeyDesc.KeyData, 
+									CONV_ARRARY_TO_UINT16(pMsg->KeyDesc.KeyDataLen),
+									KEYDATA);
+			}	
+
+			if (!bWPA2 && (MsgType == EAPOL_GROUP_MSG_1))
+				GroupKeyIndex = EapolKeyInfo.KeyIndex;
+			
+		}
+		else if ((MsgType == EAPOL_PAIR_MSG_2) || (MsgType == EAPOL_PAIR_MSG_3 && !bWPA2))
+		{					
+			NdisMoveMemory(KEYDATA, pMsg->KeyDesc.KeyData, CONV_ARRARY_TO_UINT16(pMsg->KeyDesc.KeyDataLen));			     
+		}
+		else
+		{
+			
+			return TRUE;
+		}
+
+		// Parse Key Data field to 
+		// 1. verify RSN IE for pairwise_msg_2_WPA1(WPA2) ,pairwise_msg_3_WPA1(WPA2)
+		// 2. verify KDE format for pairwise_msg_3_WPA2, group_msg_1_WPA2
+		// 3. update shared key for pairwise_msg_3_WPA2, group_msg_1_WPA1(WPA2)
+		if (!RTMPParseEapolKeyData(pAd, KEYDATA, 
+								  CONV_ARRARY_TO_UINT16(pMsg->KeyDesc.KeyDataLen), 
+								  GroupKeyIndex, MsgType, bWPA2, pEntry))
+		{
+			return FALSE;
+		}
+	}
+
+	return TRUE;
+	
+}
+
+
+/*
+    ==========================================================================
+    Description:
+        This is a function to initilize 4-way handshake
+        
+    Return:
+         
+    ==========================================================================
+*/
+VOID WPAStart4WayHS(
+    IN PRTMP_ADAPTER    pAd, 
+    IN MAC_TABLE_ENTRY  *pEntry,
+    IN ULONG			TimeInterval) 
+{
+    UCHAR           Header802_3[14];
+	UCHAR   		*mpool;
+    PEAPOL_PACKET	pEapolFrame;
+	PUINT8			pBssid = NULL;
+	UCHAR			group_cipher = Ndis802_11WEPDisabled;
+
+    DBGPRINT(RT_DEBUG_TRACE, ("===> WPAStart4WayHS\n"));
+
+	if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_RESET_IN_PROGRESS | fRTMP_ADAPTER_HALT_IN_PROGRESS))
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("[ERROR]WPAStart4WayHS : The interface is closed...\n"));
+		return;		
+	}
+
+
+	if (pBssid == NULL)
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("[ERROR]WPAStart4WayHS : No corresponding Authenticator.\n"));		
+		return;
+    }
+
+	// Check the status
+    if ((pEntry->WpaState > AS_PTKSTART) || (pEntry->WpaState < AS_INITPMK))
+    {
+        DBGPRINT(RT_DEBUG_ERROR, ("[ERROR]WPAStart4WayHS : Not expect calling\n"));
+        return;
+    }
+    
+    
+	// Increment replay counter by 1
+	ADD_ONE_To_64BIT_VAR(pEntry->R_Counter);
+	
+	// Randomly generate ANonce		
+	GenRandom(pAd, (UCHAR *)pBssid, pEntry->ANonce);	
+
+	// Allocate memory for output
+	os_alloc_mem(NULL, (PUCHAR *)&mpool, TX_EAPOL_BUFFER);
+	if (mpool == NULL)
+    {
+        DBGPRINT(RT_DEBUG_ERROR, ("!!!%s : no memory!!!\n", __FUNCTION__));
+        return;
+    }
+
+	pEapolFrame = (PEAPOL_PACKET)mpool;
+	NdisZeroMemory(pEapolFrame, TX_EAPOL_BUFFER);
+	
+	// Construct EAPoL message - Pairwise Msg 1
+	// EAPOL-Key(0,0,1,0,P,0,0,ANonce,0,DataKD_M1)		
+	ConstructEapolMsg(pEntry,
+					  group_cipher,
+					  EAPOL_PAIR_MSG_1,
+					  0,					// Default key index
+					  pEntry->ANonce,
+					  NULL,					// TxRSC
+					  NULL,					// GTK
+					  NULL,					// RSNIE
+					  0,					// RSNIE length	
+					  pEapolFrame);
+
+		
+	// Make outgoing frame
+    MAKE_802_3_HEADER(Header802_3, pEntry->Addr, pBssid, EAPOL);            
+    RTMPToWirelessSta(pAd, pEntry, Header802_3, 
+					  LENGTH_802_3, (PUCHAR)pEapolFrame, 
+					  CONV_ARRARY_TO_UINT16(pEapolFrame->Body_Len) + 4, 
+					  (pEntry->PortSecured == WPA_802_1X_PORT_SECURED) ? FALSE : TRUE);
+
+	// Trigger Retry Timer
+    RTMPModTimer(&pEntry->RetryTimer, TimeInterval);		
+
+	// Update State
+    pEntry->WpaState = AS_PTKSTART;
+
+	os_free_mem(NULL, mpool);
+
+	DBGPRINT(RT_DEBUG_TRACE, ("<=== WPAStart4WayHS: send Msg1 of 4-way \n"));
+        
+}
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Process Pairwise key Msg-1 of 4-way handshaking and send Msg-2 
+
+	Arguments:
+		pAd			Pointer	to our adapter
+		Elem		Message body
+		
+	Return Value:
+		None
+		
+	Note:
+		
+	========================================================================
+*/
+VOID PeerPairMsg1Action(
+	IN PRTMP_ADAPTER    pAd, 
+    IN MAC_TABLE_ENTRY  *pEntry,
+    IN MLME_QUEUE_ELEM  *Elem) 
+{
+	UCHAR				PTK[80];
+	UCHAR               Header802_3[14];
+	PEAPOL_PACKET		pMsg1;
+	UINT            	MsgLen;	
+	UCHAR   			*mpool;
+    PEAPOL_PACKET		pEapolFrame;
+	PUINT8				pCurrentAddr = NULL;
+	PUINT8				pmk_ptr = NULL;
+	UCHAR				group_cipher = Ndis802_11WEPDisabled;
+	PUINT8				rsnie_ptr = NULL;
+	UCHAR				rsnie_len = 0;
+	   
+	DBGPRINT(RT_DEBUG_TRACE, ("===> PeerPairMsg1Action \n"));
+
+	if ((!pEntry) || (!IS_ENTRY_CLIENT(pEntry) && !IS_ENTRY_APCLI(pEntry)))
+		return;
+
+    if (Elem->MsgLen < (LENGTH_802_11 + LENGTH_802_1_H + LENGTH_EAPOL_H + MIN_LEN_OF_EAPOL_KEY_MSG))
+        return;
+	
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{				
+		pCurrentAddr = pAd->CurrentAddress;
+		pmk_ptr = pAd->StaCfg.PMK;
+		group_cipher = pAd->StaCfg.GroupCipher;
+		rsnie_ptr = pAd->StaCfg.RSN_IE;
+		rsnie_len = pAd->StaCfg.RSNIE_Len;
+	}	
+#endif // CONFIG_STA_SUPPORT //
+
+	// Store the received frame
+	pMsg1 = (PEAPOL_PACKET) &Elem->Msg[LENGTH_802_11 + LENGTH_802_1_H];
+	MsgLen = Elem->MsgLen - LENGTH_802_11 - LENGTH_802_1_H;
+	
+	// Sanity Check peer Pairwise message 1 - Replay Counter
+	if (PeerWpaMessageSanity(pAd, pMsg1, MsgLen, EAPOL_PAIR_MSG_1, pEntry) == FALSE)
+		return;
+	
+	// Store Replay counter, it will use to verify message 3 and construct message 2
+	NdisMoveMemory(pEntry->R_Counter, pMsg1->KeyDesc.ReplayCounter, LEN_KEY_DESC_REPLAY);		
+
+	// Store ANonce
+	NdisMoveMemory(pEntry->ANonce, pMsg1->KeyDesc.KeyNonce, LEN_KEY_DESC_NONCE);
+		
+	// Generate random SNonce
+	GenRandom(pAd, (UCHAR *)pCurrentAddr, pEntry->SNonce);
+
+	{
+	    // Calculate PTK(ANonce, SNonce)
+	    WpaDerivePTK(pAd,
+	    			pmk_ptr,
+			     	pEntry->ANonce,
+				 	pEntry->Addr, 
+				 	pEntry->SNonce,
+				 	pCurrentAddr, 
+				    PTK, 
+				    LEN_PTK);
+
+		// Save key to PTK entry
+		NdisMoveMemory(pEntry->PTK, PTK, LEN_PTK);
+	}		    
+		
+	// Update WpaState
+	pEntry->WpaState = AS_PTKINIT_NEGOTIATING;
+
+	// Allocate memory for output
+	os_alloc_mem(NULL, (PUCHAR *)&mpool, TX_EAPOL_BUFFER);
+	if (mpool == NULL)
+    {
+        DBGPRINT(RT_DEBUG_ERROR, ("!!!%s : no memory!!!\n", __FUNCTION__));
+        return;
+    }
+
+	pEapolFrame = (PEAPOL_PACKET)mpool;
+	NdisZeroMemory(pEapolFrame, TX_EAPOL_BUFFER);
+
+	// Construct EAPoL message - Pairwise Msg 2
+	//  EAPOL-Key(0,1,0,0,P,0,0,SNonce,MIC,DataKD_M2)
+	ConstructEapolMsg(pEntry,
+					  group_cipher,
+					  EAPOL_PAIR_MSG_2,  
+					  0,				// DefaultKeyIdx
+					  pEntry->SNonce,
+					  NULL,				// TxRsc
+					  NULL,				// GTK
+					  (UCHAR *)rsnie_ptr,
+					  rsnie_len,
+					  pEapolFrame);
+
+	// Make outgoing frame
+	MAKE_802_3_HEADER(Header802_3, pEntry->Addr, pCurrentAddr, EAPOL);	
+	
+	RTMPToWirelessSta(pAd, pEntry, 
+					  Header802_3, sizeof(Header802_3), (PUCHAR)pEapolFrame, 
+					  CONV_ARRARY_TO_UINT16(pEapolFrame->Body_Len) + 4, TRUE);
+
+	os_free_mem(NULL, mpool);
+		
+	DBGPRINT(RT_DEBUG_TRACE, ("<=== PeerPairMsg1Action: send Msg2 of 4-way \n"));
+}	
+
+
+/*
+    ==========================================================================
+    Description:
+        When receiving the second packet of 4-way pairwisekey handshake.
+    Return:
+    ==========================================================================
+*/
+VOID PeerPairMsg2Action(
+    IN PRTMP_ADAPTER    pAd, 
+    IN MAC_TABLE_ENTRY  *pEntry,
+    IN MLME_QUEUE_ELEM  *Elem) 
+{   
+	UCHAR				PTK[80];
+    BOOLEAN             Cancelled;
+    PHEADER_802_11      pHeader;
+	UCHAR   			*mpool;
+	PEAPOL_PACKET		pEapolFrame;
+	PEAPOL_PACKET       pMsg2;
+	UINT            	MsgLen;
+    UCHAR               Header802_3[LENGTH_802_3];
+	UCHAR 				TxTsc[6];	
+	PUINT8				pBssid = NULL;
+	PUINT8				pmk_ptr = NULL;
+	PUINT8				gtk_ptr = NULL;
+	UCHAR				default_key = 0;
+	UCHAR				group_cipher = Ndis802_11WEPDisabled;
+	PUINT8				rsnie_ptr = NULL;
+	UCHAR				rsnie_len = 0;
+
+    DBGPRINT(RT_DEBUG_TRACE, ("===> PeerPairMsg2Action \n"));
+
+    if ((!pEntry) || !IS_ENTRY_CLIENT(pEntry))
+        return;
+        
+    if (Elem->MsgLen < (LENGTH_802_11 + LENGTH_802_1_H + LENGTH_EAPOL_H + MIN_LEN_OF_EAPOL_KEY_MSG))
+        return;
+
+    // check Entry in valid State
+    if (pEntry->WpaState < AS_PTKSTART)
+        return;
+
+	
+
+    // pointer to 802.11 header
+	pHeader = (PHEADER_802_11)Elem->Msg;
+
+	// skip 802.11_header(24-byte) and LLC_header(8) 
+	pMsg2 = (PEAPOL_PACKET)&Elem->Msg[LENGTH_802_11 + LENGTH_802_1_H];       
+	MsgLen = Elem->MsgLen - LENGTH_802_11 - LENGTH_802_1_H;
+
+	// Store SNonce
+	NdisMoveMemory(pEntry->SNonce, pMsg2->KeyDesc.KeyNonce, LEN_KEY_DESC_NONCE);
+
+	{
+		// Derive PTK
+		WpaDerivePTK(pAd, 
+					(UCHAR *)pmk_ptr,  
+					pEntry->ANonce, 		// ANONCE
+					(UCHAR *)pBssid, 
+					pEntry->SNonce, 		// SNONCE
+					pEntry->Addr, 
+					PTK, 
+					LEN_PTK); 		
+
+    	NdisMoveMemory(pEntry->PTK, PTK, LEN_PTK);
+	}
+
+	// Sanity Check peer Pairwise message 2 - Replay Counter, MIC, RSNIE
+	if (PeerWpaMessageSanity(pAd, pMsg2, MsgLen, EAPOL_PAIR_MSG_2, pEntry) == FALSE)
+		return;
+
+    do
+    {
+		// Allocate memory for input
+		os_alloc_mem(NULL, (PUCHAR *)&mpool, TX_EAPOL_BUFFER);
+		if (mpool == NULL)
+	    {
+	        DBGPRINT(RT_DEBUG_ERROR, ("!!!%s : no memory!!!\n", __FUNCTION__));
+	        return;
+	    }
+
+		pEapolFrame = (PEAPOL_PACKET)mpool;
+		NdisZeroMemory(pEapolFrame, TX_EAPOL_BUFFER);
+	    
+        // delete retry timer
+		RTMPCancelTimer(&pEntry->RetryTimer, &Cancelled);
+
+		// Change state
+        pEntry->WpaState = AS_PTKINIT_NEGOTIATING;
+
+		// Increment replay counter by 1
+		ADD_ONE_To_64BIT_VAR(pEntry->R_Counter);
+
+		// Construct EAPoL message - Pairwise Msg 3
+		ConstructEapolMsg(pEntry,
+						  group_cipher,
+						  EAPOL_PAIR_MSG_3,
+						  default_key,
+						  pEntry->ANonce,
+						  TxTsc,
+						  (UCHAR *)gtk_ptr,
+						  (UCHAR *)rsnie_ptr,
+						  rsnie_len,
+						  pEapolFrame);
+            
+        // Make outgoing frame
+        MAKE_802_3_HEADER(Header802_3, pEntry->Addr, pBssid, EAPOL);            
+        RTMPToWirelessSta(pAd, pEntry, Header802_3, LENGTH_802_3, 
+						  (PUCHAR)pEapolFrame, 
+						  CONV_ARRARY_TO_UINT16(pEapolFrame->Body_Len) + 4, 
+						  (pEntry->PortSecured == WPA_802_1X_PORT_SECURED) ? FALSE : TRUE);
+
+        pEntry->ReTryCounter = PEER_MSG3_RETRY_TIMER_CTR;
+		RTMPSetTimer(&pEntry->RetryTimer, PEER_MSG3_RETRY_EXEC_INTV);
+        
+		// Update State
+        pEntry->WpaState = AS_PTKINIT_NEGOTIATING;
+		
+		os_free_mem(NULL, mpool);
+	
+    }while(FALSE);
+
+	DBGPRINT(RT_DEBUG_TRACE, ("<=== PeerPairMsg2Action: send Msg3 of 4-way \n"));
+}
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Process Pairwise key Msg 3 of 4-way handshaking and send Msg 4 
+
+	Arguments:
+		pAd	Pointer	to our adapter
+		Elem		Message body
+		
+	Return Value:
+		None
+		
+	Note:
+		
+	========================================================================
+*/
+VOID PeerPairMsg3Action(
+    IN PRTMP_ADAPTER    pAd, 
+    IN MAC_TABLE_ENTRY  *pEntry,
+    IN MLME_QUEUE_ELEM  *Elem) 
+{
+	PHEADER_802_11		pHeader;
+	UCHAR               Header802_3[14];
+	UCHAR				*mpool;
+	PEAPOL_PACKET		pEapolFrame;
+	PEAPOL_PACKET		pMsg3;
+	UINT            	MsgLen;				
+	PUINT8				pCurrentAddr = NULL;
+	UCHAR				group_cipher = Ndis802_11WEPDisabled;
+	   
+	DBGPRINT(RT_DEBUG_TRACE, ("===> PeerPairMsg3Action \n"));
+	
+	if ((!pEntry) || (!IS_ENTRY_CLIENT(pEntry) && !IS_ENTRY_APCLI(pEntry)))
+		return;
+
+    if (Elem->MsgLen < (LENGTH_802_11 + LENGTH_802_1_H + LENGTH_EAPOL_H + MIN_LEN_OF_EAPOL_KEY_MSG))
+		return;
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{				
+		pCurrentAddr = pAd->CurrentAddress;
+		group_cipher = pAd->StaCfg.GroupCipher;
+
+	}	
+#endif // CONFIG_STA_SUPPORT //
+		
+	// Record 802.11 header & the received EAPOL packet Msg3
+	pHeader	= (PHEADER_802_11) Elem->Msg;
+	pMsg3 = (PEAPOL_PACKET) &Elem->Msg[LENGTH_802_11 + LENGTH_802_1_H];
+	MsgLen = Elem->MsgLen - LENGTH_802_11 - LENGTH_802_1_H;
+
+	// Sanity Check peer Pairwise message 3 - Replay Counter, MIC, RSNIE
+	if (PeerWpaMessageSanity(pAd, pMsg3, MsgLen, EAPOL_PAIR_MSG_3, pEntry) == FALSE)
+		return;
+	
+	// Save Replay counter, it will use construct message 4
+	NdisMoveMemory(pEntry->R_Counter, pMsg3->KeyDesc.ReplayCounter, LEN_KEY_DESC_REPLAY);
+
+	// Double check ANonce
+	if (!NdisEqualMemory(pEntry->ANonce, pMsg3->KeyDesc.KeyNonce, LEN_KEY_DESC_NONCE))
+	{
+		return;
+	}
+
+	// Allocate memory for output
+	os_alloc_mem(NULL, (PUCHAR *)&mpool, TX_EAPOL_BUFFER);
+	if (mpool == NULL)
+    {
+        DBGPRINT(RT_DEBUG_ERROR, ("!!!%s : no memory!!!\n", __FUNCTION__));
+        return;
+    }
+
+	pEapolFrame = (PEAPOL_PACKET)mpool;
+	NdisZeroMemory(pEapolFrame, TX_EAPOL_BUFFER);
+
+	// Construct EAPoL message - Pairwise Msg 4
+	ConstructEapolMsg(pEntry,
+					  group_cipher,
+					  EAPOL_PAIR_MSG_4,  
+					  0,					// group key index not used in message 4
+					  NULL,					// Nonce not used in message 4
+					  NULL,					// TxRSC not used in message 4
+					  NULL,					// GTK not used in message 4
+					  NULL,					// RSN IE not used in message 4
+					  0,
+					  pEapolFrame);
+
+	// Update WpaState
+	pEntry->WpaState = AS_PTKINITDONE;	 	
+
+	// Update pairwise key		
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+		NdisMoveMemory(pAd->StaCfg.PTK, pEntry->PTK, LEN_PTK);
+		WPAInstallPairwiseKey(pAd, 
+							  BSS0, 
+							  pEntry, 
+							  FALSE);
+		NdisMoveMemory(&pAd->SharedKey[BSS0][0], &pEntry->PairwiseKey, sizeof(CIPHER_KEY));
+	}
+#endif // CONFIG_STA_SUPPORT //
+
+	// open 802.1x port control and privacy filter
+	if (pEntry->AuthMode == Ndis802_11AuthModeWPA2PSK || 
+		pEntry->AuthMode == Ndis802_11AuthModeWPA2)
+	{
+		pEntry->PortSecured = WPA_802_1X_PORT_SECURED;
+		pEntry->PrivacyFilter = Ndis802_11PrivFilterAcceptAll;	
+
+#ifdef CONFIG_STA_SUPPORT
+		STA_PORT_SECURED(pAd);
+	    // Indicate Connected for GUI
+	    pAd->IndicateMediaState = NdisMediaStateConnected;
+#endif // CONFIG_STA_SUPPORT //
+		DBGPRINT(RT_DEBUG_TRACE, ("PeerPairMsg3Action: AuthMode(%s) PairwiseCipher(%s) GroupCipher(%s) \n",
+									GetAuthMode(pEntry->AuthMode),
+									GetEncryptType(pEntry->WepStatus),
+									GetEncryptType(group_cipher)));
+	}
+	else
+	{	
+	}
+
+	// Init 802.3 header and send out
+	MAKE_802_3_HEADER(Header802_3, pEntry->Addr, pCurrentAddr, EAPOL);	
+	RTMPToWirelessSta(pAd, pEntry, 
+					  Header802_3, sizeof(Header802_3), 
+					  (PUCHAR)pEapolFrame, 
+					  CONV_ARRARY_TO_UINT16(pEapolFrame->Body_Len) + 4, TRUE);
+
+	os_free_mem(NULL, mpool);
+
+	DBGPRINT(RT_DEBUG_TRACE, ("<=== PeerPairMsg3Action: send Msg4 of 4-way \n"));
+}
+
+/*
+    ==========================================================================
+    Description:
+        When receiving the last packet of 4-way pairwisekey handshake.
+        Initilize 2-way groupkey handshake following.
+    Return:
+    ==========================================================================
+*/
+VOID PeerPairMsg4Action(
+    IN PRTMP_ADAPTER    pAd, 
+    IN MAC_TABLE_ENTRY  *pEntry,
+    IN MLME_QUEUE_ELEM  *Elem) 
+{    
+	PEAPOL_PACKET   	pMsg4;    
+    PHEADER_802_11      pHeader;
+    UINT            	MsgLen;
+    BOOLEAN             Cancelled;
+	UCHAR				group_cipher = Ndis802_11WEPDisabled;
+
+    DBGPRINT(RT_DEBUG_TRACE, ("===> PeerPairMsg4Action\n"));
+
+    do
+    {
+        if ((!pEntry) || !IS_ENTRY_CLIENT(pEntry))
+            break;
+		
+        if (Elem->MsgLen < (LENGTH_802_11 + LENGTH_802_1_H + LENGTH_EAPOL_H + MIN_LEN_OF_EAPOL_KEY_MSG ) )
+            break;
+
+        if (pEntry->WpaState < AS_PTKINIT_NEGOTIATING)
+            break;
+
+
+        // pointer to 802.11 header
+        pHeader = (PHEADER_802_11)Elem->Msg;
+
+		// skip 802.11_header(24-byte) and LLC_header(8) 
+		pMsg4 = (PEAPOL_PACKET)&Elem->Msg[LENGTH_802_11 + LENGTH_802_1_H]; 
+		MsgLen = Elem->MsgLen - LENGTH_802_11 - LENGTH_802_1_H;
+
+        // Sanity Check peer Pairwise message 4 - Replay Counter, MIC
+		if (PeerWpaMessageSanity(pAd, pMsg4, MsgLen, EAPOL_PAIR_MSG_4, pEntry) == FALSE)
+			break;
+
+        /* 3. Install pairwise key */
+		WPAInstallPairwiseKey(pAd, pEntry->apidx, pEntry, TRUE);
+        
+        /* 4. upgrade state */
+        pEntry->PrivacyFilter = Ndis802_11PrivFilterAcceptAll;
+        pEntry->WpaState = AS_PTKINITDONE;
+		pEntry->PortSecured = WPA_802_1X_PORT_SECURED;
+        
+
+		if (pEntry->AuthMode == Ndis802_11AuthModeWPA2 || 
+			pEntry->AuthMode == Ndis802_11AuthModeWPA2PSK)
+		{
+			pEntry->GTKState = REKEY_ESTABLISHED;
+			RTMPCancelTimer(&pEntry->RetryTimer, &Cancelled);
+
+
+			// send wireless event - for set key done WPA2
+				RTMPSendWirelessEvent(pAd, IW_SET_KEY_DONE_WPA2_EVENT_FLAG, pEntry->Addr, pEntry->apidx, 0); 
+	 
+	        DBGPRINT(RT_DEBUG_OFF, ("AP SETKEYS DONE - WPA2, AuthMode(%d)=%s, WepStatus(%d)=%s, GroupWepStatus(%d)=%s\n\n", 
+									pEntry->AuthMode, GetAuthMode(pEntry->AuthMode), 
+									pEntry->WepStatus, GetEncryptType(pEntry->WepStatus), 
+									group_cipher, 
+									GetEncryptType(group_cipher)));
+		}
+		else
+		{
+        	// 5. init Group 2-way handshake if necessary.
+	        WPAStart2WayGroupHS(pAd, pEntry);
+
+        	pEntry->ReTryCounter = GROUP_MSG1_RETRY_TIMER_CTR;
+			RTMPModTimer(&pEntry->RetryTimer, PEER_MSG3_RETRY_EXEC_INTV);
+		}
+    }while(FALSE);
+    
+}
+
+/*
+    ==========================================================================
+    Description:
+        This is a function to send the first packet of 2-way groupkey handshake
+    Return:
+         
+    ==========================================================================
+*/
+VOID WPAStart2WayGroupHS(
+    IN PRTMP_ADAPTER    pAd, 
+    IN MAC_TABLE_ENTRY  *pEntry) 
+{
+    UCHAR               Header802_3[14];
+	UCHAR   			TxTsc[6]; 
+	UCHAR   			*mpool;
+	PEAPOL_PACKET		pEapolFrame;
+	UCHAR				group_cipher = Ndis802_11WEPDisabled;	
+	UCHAR				default_key = 0;
+	PUINT8				gnonce_ptr = NULL;
+	PUINT8				gtk_ptr = NULL;
+	PUINT8				pBssid = NULL;
+    
+	DBGPRINT(RT_DEBUG_TRACE, ("===> WPAStart2WayGroupHS\n"));
+
+    if ((!pEntry) || !IS_ENTRY_CLIENT(pEntry))
+        return;
+
+
+	// Allocate memory for output
+	os_alloc_mem(NULL, (PUCHAR *)&mpool, TX_EAPOL_BUFFER);
+	if (mpool == NULL)
+    {
+        DBGPRINT(RT_DEBUG_ERROR, ("!!!%s : no memory!!!\n", __FUNCTION__));
+        return;
+    }
+
+	pEapolFrame = (PEAPOL_PACKET)mpool;
+	NdisZeroMemory(pEapolFrame, TX_EAPOL_BUFFER);
+
+    // Increment replay counter by 1
+	ADD_ONE_To_64BIT_VAR(pEntry->R_Counter);
+		
+	// Construct EAPoL message - Group Msg 1
+	ConstructEapolMsg(pEntry,
+					  group_cipher, 
+					  EAPOL_GROUP_MSG_1,
+					  default_key,
+					  (UCHAR *)gnonce_ptr,
+					  TxTsc,
+					  (UCHAR *)gtk_ptr,
+					  NULL,
+					  0,
+				  	  pEapolFrame);
+
+	// Make outgoing frame
+    MAKE_802_3_HEADER(Header802_3, pEntry->Addr, pBssid, EAPOL);            
+    RTMPToWirelessSta(pAd, pEntry, 
+					  Header802_3, LENGTH_802_3, 
+					  (PUCHAR)pEapolFrame, 
+					  CONV_ARRARY_TO_UINT16(pEapolFrame->Body_Len) + 4, FALSE);
+
+	os_free_mem(NULL, mpool);
+
+    DBGPRINT(RT_DEBUG_TRACE, ("<=== WPAStart2WayGroupHS : send out Group Message 1 \n"));
+        
+    return;
+}
+     
+/*
+	========================================================================
+	
+	Routine Description:
+		Process Group key 2-way handshaking
+
+	Arguments:
+		pAd	Pointer	to our adapter
+		Elem		Message body
+		
+	Return Value:
+		None
+		
+	Note:
+		
+	========================================================================
+*/
+VOID	PeerGroupMsg1Action(
+	IN PRTMP_ADAPTER    pAd, 
+    IN MAC_TABLE_ENTRY  *pEntry,
+    IN MLME_QUEUE_ELEM  *Elem) 
+{
+    UCHAR               Header802_3[14];
+	UCHAR				*mpool;
+	PEAPOL_PACKET		pEapolFrame;
+	PEAPOL_PACKET		pGroup;
+	UINT            	MsgLen;
+	UCHAR				default_key = 0;
+	UCHAR				group_cipher = Ndis802_11WEPDisabled;
+	PUINT8				pCurrentAddr = NULL;
+	
+	DBGPRINT(RT_DEBUG_TRACE, ("===> PeerGroupMsg1Action \n"));
+
+	if ((!pEntry) || (!IS_ENTRY_CLIENT(pEntry) && !IS_ENTRY_APCLI(pEntry)))
+        return;
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{				
+		pCurrentAddr = pAd->CurrentAddress;
+		group_cipher = pAd->StaCfg.GroupCipher;
+		default_key = pAd->StaCfg.DefaultKeyId;
+	}	
+#endif // CONFIG_STA_SUPPORT //
+	   
+	// Process Group Message 1 frame. skip 802.11 header(24) & LLC_SNAP header(8)
+	pGroup = (PEAPOL_PACKET) &Elem->Msg[LENGTH_802_11 + LENGTH_802_1_H];
+	MsgLen = Elem->MsgLen - LENGTH_802_11 - LENGTH_802_1_H;
+
+	// Sanity Check peer group message 1 - Replay Counter, MIC, RSNIE
+	if (PeerWpaMessageSanity(pAd, pGroup, MsgLen, EAPOL_GROUP_MSG_1, pEntry) == FALSE)
+		return;
+
+	// delete retry timer
+
+	// Save Replay counter, it will use to construct message 2
+	NdisMoveMemory(pEntry->R_Counter, pGroup->KeyDesc.ReplayCounter, LEN_KEY_DESC_REPLAY);	
+
+	// Allocate memory for output
+	os_alloc_mem(NULL, (PUCHAR *)&mpool, TX_EAPOL_BUFFER);
+	if (mpool == NULL)
+    {
+        DBGPRINT(RT_DEBUG_ERROR, ("!!!%s : no memory!!!\n", __FUNCTION__));
+        return;
+    }
+
+	pEapolFrame = (PEAPOL_PACKET)mpool;
+	NdisZeroMemory(pEapolFrame, TX_EAPOL_BUFFER);
+
+
+	// Construct EAPoL message - Group Msg 2
+	ConstructEapolMsg(pEntry,
+					  group_cipher,
+					  EAPOL_GROUP_MSG_2,  
+					  default_key,
+					  NULL,					// Nonce not used
+					  NULL,					// TxRSC not used
+					  NULL,					// GTK not used
+					  NULL,					// RSN IE not used
+					  0,
+					  pEapolFrame);
+					
+    // open 802.1x port control and privacy filter
+	pEntry->PortSecured = WPA_802_1X_PORT_SECURED;
+	pEntry->PrivacyFilter = Ndis802_11PrivFilterAcceptAll;
+
+#ifdef CONFIG_STA_SUPPORT
+	STA_PORT_SECURED(pAd);
+    // Indicate Connected for GUI
+    pAd->IndicateMediaState = NdisMediaStateConnected;
+#endif // CONFIG_STA_SUPPORT //
+	
+	DBGPRINT(RT_DEBUG_TRACE, ("PeerGroupMsg1Action: AuthMode(%s) PairwiseCipher(%s) GroupCipher(%s) \n",
+									GetAuthMode(pEntry->AuthMode),
+									GetEncryptType(pEntry->WepStatus),
+									GetEncryptType(group_cipher)));
+		
+	// init header and Fill Packet and send Msg 2 to authenticator	
+	MAKE_802_3_HEADER(Header802_3, pEntry->Addr, pCurrentAddr, EAPOL);	
+	
+#ifdef CONFIG_STA_SUPPORT
+	if ((pAd->OpMode == OPMODE_STA) && INFRA_ON(pAd) && 
+		OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED) &&
+		RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS) &&
+		(pAd->MlmeAux.Channel == pAd->CommonCfg.Channel))
+	{
+		/* Now stop the scanning and need to send the rekey packet out */
+		pAd->MlmeAux.Channel = 0;
+	}
+#endif // CONFIG_STA_SUPPORT //
+
+	RTMPToWirelessSta(pAd, pEntry, 
+					  Header802_3, sizeof(Header802_3), 
+					  (PUCHAR)pEapolFrame, 
+					  CONV_ARRARY_TO_UINT16(pEapolFrame->Body_Len) + 4, FALSE);
+
+	os_free_mem(NULL, mpool);
+
+	DBGPRINT(RT_DEBUG_TRACE, ("<=== PeerGroupMsg1Action: send group message 2\n"));
+}	
+
+
+VOID EnqueueStartForPSKExec(
+    IN PVOID SystemSpecific1, 
+    IN PVOID FunctionContext, 
+    IN PVOID SystemSpecific2, 
+    IN PVOID SystemSpecific3) 
+{
+	MAC_TABLE_ENTRY     *pEntry = (PMAC_TABLE_ENTRY) FunctionContext;
+
+	if ((pEntry) && IS_ENTRY_CLIENT(pEntry) && (pEntry->WpaState < AS_PTKSTART))
+	{
+		PRTMP_ADAPTER pAd = (PRTMP_ADAPTER)pEntry->pAd;
+
+		switch (pEntry->EnqueueEapolStartTimerRunning)
+		{
+			case EAPOL_START_PSK:								
+				DBGPRINT(RT_DEBUG_TRACE, ("Enqueue EAPoL-Start-PSK for sta(%02x:%02x:%02x:%02x:%02x:%02x) \n", PRINT_MAC(pEntry->Addr)));
+
+				MlmeEnqueue(pAd, WPA_STATE_MACHINE, MT2_EAPOLStart, 6, &pEntry->Addr, 0);
+				break;
+			default:
+				break;
+			
+		}
+	}			
+		pEntry->EnqueueEapolStartTimerRunning = EAPOL_START_DISABLE;
+		
+}
+
+
+VOID MlmeDeAuthAction(
+    IN PRTMP_ADAPTER    pAd, 
+    IN MAC_TABLE_ENTRY  *pEntry,
+	IN USHORT           Reason,
+	IN BOOLEAN          bDataFrameFirst)
+{
+    PUCHAR          pOutBuffer = NULL;
+    ULONG           FrameLen = 0;
+    HEADER_802_11   DeAuthHdr;
+    NDIS_STATUS     NStatus;
+
+    if (pEntry)
+    {
+        // Send out a Deauthentication request frame
+        NStatus = MlmeAllocateMemory(pAd, &pOutBuffer);
+        if (NStatus != NDIS_STATUS_SUCCESS)
+            return;
+
+		// send wireless event - for send disassication 
+			RTMPSendWirelessEvent(pAd, IW_DEAUTH_EVENT_FLAG, pEntry->Addr, pEntry->apidx, 0); 
+
+        DBGPRINT(RT_DEBUG_TRACE, ("Send DEAUTH frame with ReasonCode(%d) to %02x:%02x:%02x:%02x:%02x:%02x \n",Reason, PRINT_MAC(pEntry->Addr)));
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+        MgtMacHeaderInit(pAd, &DeAuthHdr, SUBTYPE_DEAUTH, 0, pEntry->Addr, pAd->CommonCfg.Bssid);	
+	}
+#endif // CONFIG_STA_SUPPORT //
+        MakeOutgoingFrame(pOutBuffer,               &FrameLen, 
+                          sizeof(HEADER_802_11),    &DeAuthHdr,
+                          2,                        &Reason,
+                          END_OF_ARGS);
+
+
+
+		if (bDataFrameFirst)
+            MiniportMMRequest(pAd, MGMT_USE_QUEUE_FLAG, pOutBuffer, FrameLen);
+        else
+            MiniportMMRequest(pAd, 0, pOutBuffer, FrameLen);
+        MlmeFreeMemory(pAd, pOutBuffer);
+    
+        // ApLogEvent(pAd, pEntry->Addr, EVENT_DISASSOCIATED);
+        MacTableDeleteEntry(pAd, pEntry->Aid, pEntry->Addr);
+    }
+}
+
+
+/*
+    ==========================================================================
+    Description:
+        When receiving the last packet of 2-way groupkey handshake.
+    Return:
+    ==========================================================================
+*/
+VOID PeerGroupMsg2Action(
+    IN PRTMP_ADAPTER    pAd, 
+    IN MAC_TABLE_ENTRY  *pEntry,
+    IN VOID             *Msg,
+    IN UINT             MsgLen) 
+{
+    UINT            	Len;
+    PUCHAR          	pData;
+    BOOLEAN         	Cancelled;
+	PEAPOL_PACKET       pMsg2;	
+	UCHAR				group_cipher = Ndis802_11WEPDisabled;	
+
+	DBGPRINT(RT_DEBUG_TRACE, ("===> PeerGroupMsg2Action \n"));
+
+    if ((!pEntry) || !IS_ENTRY_CLIENT(pEntry))
+        return;
+            
+    if (MsgLen < (LENGTH_802_1_H + LENGTH_EAPOL_H + MIN_LEN_OF_EAPOL_KEY_MSG))
+        return;
+            
+    if (pEntry->WpaState != AS_PTKINITDONE)
+        return;
+
+
+    do
+    {
+
+        
+        pData = (PUCHAR)Msg;
+		pMsg2 = (PEAPOL_PACKET) (pData + LENGTH_802_1_H);
+        Len = MsgLen - LENGTH_802_1_H;
+
+		// Sanity Check peer group message 2 - Replay Counter, MIC
+		if (PeerWpaMessageSanity(pAd, pMsg2, Len, EAPOL_GROUP_MSG_2, pEntry) == FALSE)
+            break;
+
+        // 3.  upgrade state
+
+		RTMPCancelTimer(&pEntry->RetryTimer, &Cancelled);
+        pEntry->GTKState = REKEY_ESTABLISHED;
+        
+		if ((pEntry->AuthMode == Ndis802_11AuthModeWPA2) || (pEntry->AuthMode == Ndis802_11AuthModeWPA2PSK))
+		{
+			// send wireless event - for set key done WPA2
+				RTMPSendWirelessEvent(pAd, IW_SET_KEY_DONE_WPA2_EVENT_FLAG, pEntry->Addr, pEntry->apidx, 0); 
+
+			DBGPRINT(RT_DEBUG_OFF, ("AP SETKEYS DONE - WPA2, AuthMode(%d)=%s, WepStatus(%d)=%s, GroupWepStatus(%d)=%s\n\n", 
+										pEntry->AuthMode, GetAuthMode(pEntry->AuthMode), 
+										pEntry->WepStatus, GetEncryptType(pEntry->WepStatus), 
+										group_cipher, GetEncryptType(group_cipher)));
+		}
+		else
+		{
+			// send wireless event - for set key done WPA
+				RTMPSendWirelessEvent(pAd, IW_SET_KEY_DONE_WPA1_EVENT_FLAG, pEntry->Addr, pEntry->apidx, 0); 
+
+        	DBGPRINT(RT_DEBUG_OFF, ("AP SETKEYS DONE - WPA1, AuthMode(%d)=%s, WepStatus(%d)=%s, GroupWepStatus(%d)=%s\n\n", 
+										pEntry->AuthMode, GetAuthMode(pEntry->AuthMode), 
+										pEntry->WepStatus, GetEncryptType(pEntry->WepStatus), 
+										group_cipher, GetEncryptType(group_cipher)));
+		}	
+    }while(FALSE);  
+}
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Classify WPA EAP message type
+
+	Arguments:
+		EAPType		Value of EAP message type
+		MsgType		Internal Message definition for MLME state machine
+		
+	Return Value:
+		TRUE		Found appropriate message type
+		FALSE		No appropriate message type
+
+	IRQL = DISPATCH_LEVEL
+	
+	Note:
+		All these constants are defined in wpa_cmm.h
+		For supplicant, there is only EAPOL Key message avaliable
+		
+	========================================================================
+*/
+BOOLEAN	WpaMsgTypeSubst(
+	IN	UCHAR	EAPType,
+	OUT	INT		*MsgType)	
+{
+	switch (EAPType)
+	{
+		case EAPPacket:
+			*MsgType = MT2_EAPPacket;
+			break;
+		case EAPOLStart:
+			*MsgType = MT2_EAPOLStart;
+			break;
+		case EAPOLLogoff:
+			*MsgType = MT2_EAPOLLogoff;
+			break;
+		case EAPOLKey:
+			*MsgType = MT2_EAPOLKey;
+			break;
+		case EAPOLASFAlert:
+			*MsgType = MT2_EAPOLASFAlert;
+			break;
+		default:
+			return FALSE;		
+	}	
+	return TRUE;
+}
+
+/**
+ * inc_iv_byte - Increment arbitrary length byte array
+ * @counter: Pointer to byte array
+ * @len: Length of the counter in bytes
+ *
+ * This function increments the least byte of the counter by one and continues
+ * rolling over to more significant bytes if the byte was incremented from
+ * 0xff to 0x00.
+ */
+void inc_iv_byte(UCHAR *iv, UINT len, UINT cnt)
+{
+	int 	pos = 0;
+	int 	carry = 0;
+	UCHAR	pre_iv;
+
+	while (pos < len)
+	{
+		pre_iv = iv[pos];
+	
+		if (carry == 1)
+			iv[pos] ++;
+		else
+			iv[pos] += cnt;
+		
+		if (iv[pos] > pre_iv)
+			break;	
+		
+		carry = 1;
+		pos++;
+	}
+
+	if (pos >= len)
+		DBGPRINT(RT_DEBUG_WARN, ("!!! inc_iv_byte overflow !!!\n"));	
+}
+
+
+
+/*
+	========================================================================
+
+	Routine Description:
+		The pseudo-random function(PRF) that hashes various inputs to 
+		derive a pseudo-random value. To add liveness to the pseudo-random 
+		value, a nonce should be one of the inputs.
+
+		It is used to generate PTK, GTK or some specific random value.  
+
+	Arguments:
+		UCHAR	*key,		-	the key material for HMAC_SHA1 use
+		INT		key_len		-	the length of key
+		UCHAR	*prefix		-	a prefix label
+		INT		prefix_len	-	the length of the label
+		UCHAR	*data		-	a specific data with variable length		
+		INT		data_len	-	the length of a specific data	
+		INT		len			-	the output lenght
+
+	Return Value:
+		UCHAR	*output		-	the calculated result 
+
+	Note:
+		802.11i-2004	Annex H.3
+
+	========================================================================
+*/
+VOID	PRF(
+	IN	UCHAR	*key,
+	IN	INT		key_len,
+	IN	UCHAR	*prefix,
+	IN	INT		prefix_len,
+	IN	UCHAR	*data,
+	IN	INT		data_len,
+	OUT	UCHAR	*output,
+	IN	INT		len)
+{
+	INT		i;
+    UCHAR   *input;
+	INT		currentindex = 0;
+	INT		total_len;
+
+	// Allocate memory for input
+	os_alloc_mem(NULL, (PUCHAR *)&input, 1024);
+	
+    if (input == NULL)
+    {
+        DBGPRINT(RT_DEBUG_ERROR, ("!!!PRF: no memory!!!\n"));
+        return;
+    }
+	
+	// Generate concatenation input
+	NdisMoveMemory(input, prefix, prefix_len);
+
+	// Concatenate a single octet containing 0
+	input[prefix_len] =	0;
+
+	// Concatenate specific data
+	NdisMoveMemory(&input[prefix_len + 1], data, data_len);
+	total_len =	prefix_len + 1 + data_len;
+
+	// Concatenate a single octet containing 0
+	// This octet shall be update later
+	input[total_len] = 0;
+	total_len++;
+
+	// Iterate to calculate the result by hmac-sha-1
+	// Then concatenate to last result
+	for	(i = 0;	i <	(len + 19) / 20; i++)
+	{
+		RT_HMAC_SHA1(key, key_len, input, total_len, &output[currentindex], SHA1_DIGEST_SIZE);
+		currentindex +=	20;
+
+		// update the last octet 
+		input[total_len - 1]++;
+	}	
+    os_free_mem(NULL, input);
+}
+
+/*
+* F(P, S, c, i) = U1 xor U2 xor ... Uc 
+* U1 = PRF(P, S || Int(i)) 
+* U2 = PRF(P, U1) 
+* Uc = PRF(P, Uc-1) 
+*/ 
+
+static void F(char *password, unsigned char *ssid, int ssidlength, int iterations, int count, unsigned char *output) 
+{ 
+    unsigned char digest[36], digest1[SHA1_DIGEST_SIZE]; 
+    int i, j; 
+
+    /* U1 = PRF(P, S || int(i)) */ 
+    memcpy(digest, ssid, ssidlength); 
+    digest[ssidlength] = (unsigned char)((count>>24) & 0xff); 
+    digest[ssidlength+1] = (unsigned char)((count>>16) & 0xff); 
+    digest[ssidlength+2] = (unsigned char)((count>>8) & 0xff); 
+    digest[ssidlength+3] = (unsigned char)(count & 0xff); 
+    RT_HMAC_SHA1((unsigned char*) password, (int) strlen(password), digest, ssidlength+4, digest1, SHA1_DIGEST_SIZE); // for WPA update
+
+    /* output = U1 */ 
+    memcpy(output, digest1, SHA1_DIGEST_SIZE); 
+
+    for (i = 1; i < iterations; i++) 
+    { 
+        /* Un = PRF(P, Un-1) */ 
+        RT_HMAC_SHA1((unsigned char*) password, (int) strlen(password), digest1, SHA1_DIGEST_SIZE, digest, SHA1_DIGEST_SIZE); // for WPA update
+        memcpy(digest1, digest, SHA1_DIGEST_SIZE); 
+
+        /* output = output xor Un */ 
+        for (j = 0; j < SHA1_DIGEST_SIZE; j++) 
+        { 
+            output[j] ^= digest[j]; 
+        } 
+    } 
+}
+
+/* 
+* password - ascii string up to 63 characters in length 
+* ssid - octet string up to 32 octets 
+* ssidlength - length of ssid in octets 
+* output must be 40 octets in length and outputs 256 bits of key 
+*/ 
+int RtmpPasswordHash(PSTRING password, PUCHAR ssid, INT ssidlength, PUCHAR output) 
+{ 
+    if ((strlen(password) > 63) || (ssidlength > 32)) 
+        return 0; 
+
+    F(password, ssid, ssidlength, 4096, 1, output); 
+    F(password, ssid, ssidlength, 4096, 2, &output[SHA1_DIGEST_SIZE]); 
+    return 1; 
+}
+
+/*
+	========================================================================
+	
+	Routine Description:
+		The key derivation function(KDF) is defined in IEEE 802.11r/D9.0, 8.5.1.5.2
+
+	Arguments:
+
+	Return Value:
+
+	Note:
+		Output �� KDF-Length (K, label, Context) where
+		Input:    K, a 256-bit key derivation key
+				  label, a string identifying the purpose of the keys derived using this KDF
+				  Context, a bit string that provides context to identify the derived key
+				  Length, the length of the derived key in bits
+		Output: a Length-bit derived key
+
+		result �� ""
+		iterations �� (Length+255)/256 
+		do i = 1 to iterations
+			result �� result || HMAC-SHA256(K, i || label || Context || Length)
+		od
+		return first Length bits of result, and securely delete all unused bits
+
+		In this algorithm, i and Length are encoded as 16-bit unsigned integers.
+
+	========================================================================
+*/
+VOID	KDF(
+	IN	PUINT8	key,
+	IN	INT		key_len,
+	IN	PUINT8	label,
+	IN	INT		label_len,
+	IN	PUINT8	data,
+	IN	INT		data_len,
+	OUT	PUINT8	output,
+	IN	USHORT	len)
+{
+	USHORT	i;
+    UCHAR   *input;
+	INT		currentindex = 0;
+	INT		total_len;
+	UINT	len_in_bits = (len << 3);
+
+	os_alloc_mem(NULL, (PUCHAR *)&input, 1024);
+	
+    if (input == NULL)
+    {
+        DBGPRINT(RT_DEBUG_ERROR, ("!!!KDF: no memory!!!\n"));
+        return;
+    } /* End of if */
+
+	NdisZeroMemory(input, 1024);
+	
+	// Initial concatenated value (i || label || Context || Length)
+	// concatenate 16-bit unsigned integer, its initial value is 1.	
+	input[0] = 1;
+	input[1] = 0;	
+	total_len = 2;
+
+	// concatenate a prefix string
+	NdisMoveMemory(&input[total_len], label, label_len);
+	total_len += label_len;
+
+	// concatenate the context
+	NdisMoveMemory(&input[total_len], data, data_len);
+	total_len += data_len;
+
+	// concatenate the length in bits (16-bit unsigned integer)
+	input[total_len] = (len_in_bits & 0xFF);
+	input[total_len + 1] = (len_in_bits & 0xFF00) >> 8;	
+	total_len += 2;
+	 
+	for	(i = 1;	i <= ((len_in_bits + 255) / 256); i++)
+	{
+		// HMAC-SHA256 derives output 
+		RT_HMAC_SHA256((UCHAR *)key, key_len, input, total_len, (UCHAR *)&output[currentindex], 32);		
+
+		currentindex +=	32; // next concatenation location
+		input[0]++;			// increment octet count
+
+	}			
+    os_free_mem(NULL, input);
+}
+
+/*
+	========================================================================
+	
+	Routine Description:
+
+	Arguments:
+		
+	Return Value:
+		
+	Note:
+		
+	========================================================================
+*/
+VOID RTMPDerivePMKID(
+	IN	PUINT8			pAaddr,
+	IN	PUINT8			pSpaddr,
+	IN	PUINT8			pKey,
+	IN	PUINT8			pAkm_oui,
+	OUT	PUINT8			pPMKID)
+{
+	UCHAR	digest[80], text_buf[20];
+	UINT8	text_len;
+			
+	// Concatenate the text for PMKID calculation
+	NdisMoveMemory(&text_buf[0], "PMK Name", 8);	
+	NdisMoveMemory(&text_buf[8], pAaddr, MAC_ADDR_LEN);
+	NdisMoveMemory(&text_buf[14], pSpaddr, MAC_ADDR_LEN);
+	text_len = 20;
+
+	{
+		RT_HMAC_SHA1(pKey, PMK_LEN, text_buf, text_len, digest, SHA1_DIGEST_SIZE);
+	}
+
+	/* Truncate the first 128-bit of output result */
+	NdisMoveMemory(pPMKID, digest, LEN_PMKID);
+
+}
+
+
+
+/*
+	========================================================================
+	
+	Routine Description:
+		It utilizes PRF-384 or PRF-512 to derive session-specific keys from a PMK.
+		It shall be called by 4-way handshake processing.
+
+	Arguments:
+		pAd 	-	pointer to our pAdapter context
+		PMK		-	pointer to PMK
+		ANonce	-	pointer to ANonce
+		AA		-	pointer to Authenticator Address
+		SNonce	-	pointer to SNonce
+		SA		-	pointer to Supplicant Address		
+		len		-	indicate the length of PTK (octet)		
+		
+	Return Value:
+		Output		pointer to the PTK
+
+	Note:
+		Refer to IEEE 802.11i-2004 8.5.1.2
+		
+	========================================================================
+*/
+VOID WpaDerivePTK(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	UCHAR	*PMK,
+	IN	UCHAR	*ANonce,
+	IN	UCHAR	*AA,
+	IN	UCHAR	*SNonce,
+	IN	UCHAR	*SA,
+	OUT	UCHAR	*output,
+	IN	UINT	len)
+{	
+	UCHAR	concatenation[76];
+	UINT	CurrPos = 0;
+	UCHAR	temp[32];
+	UCHAR	Prefix[] = {'P', 'a', 'i', 'r', 'w', 'i', 's', 'e', ' ', 'k', 'e', 'y', ' ', 
+						'e', 'x', 'p', 'a', 'n', 's', 'i', 'o', 'n'};
+
+	// initiate the concatenation input
+	NdisZeroMemory(temp, sizeof(temp));
+	NdisZeroMemory(concatenation, 76);
+
+	// Get smaller address
+	if (RTMPCompareMemory(SA, AA, 6) == 1)
+		NdisMoveMemory(concatenation, AA, 6);
+	else
+		NdisMoveMemory(concatenation, SA, 6);
+	CurrPos += 6;
+
+	// Get larger address
+	if (RTMPCompareMemory(SA, AA, 6) == 1)
+		NdisMoveMemory(&concatenation[CurrPos], SA, 6);
+	else
+		NdisMoveMemory(&concatenation[CurrPos], AA, 6);
+		
+	// store the larger mac address for backward compatible of 
+	// ralink proprietary STA-key issue		
+	NdisMoveMemory(temp, &concatenation[CurrPos], MAC_ADDR_LEN);		
+	CurrPos += 6;
+
+	// Get smaller Nonce
+	if (RTMPCompareMemory(ANonce, SNonce, 32) == 0)
+		NdisMoveMemory(&concatenation[CurrPos], temp, 32);	// patch for ralink proprietary STA-key issue
+	else if (RTMPCompareMemory(ANonce, SNonce, 32) == 1)
+		NdisMoveMemory(&concatenation[CurrPos], SNonce, 32);
+	else
+		NdisMoveMemory(&concatenation[CurrPos], ANonce, 32);
+	CurrPos += 32;
+
+	// Get larger Nonce
+	if (RTMPCompareMemory(ANonce, SNonce, 32) == 0)
+		NdisMoveMemory(&concatenation[CurrPos], temp, 32);	// patch for ralink proprietary STA-key issue
+	else if (RTMPCompareMemory(ANonce, SNonce, 32) == 1)
+		NdisMoveMemory(&concatenation[CurrPos], ANonce, 32);
+	else
+		NdisMoveMemory(&concatenation[CurrPos], SNonce, 32);
+	CurrPos += 32;
+
+	hex_dump("PMK", PMK, LEN_PMK);
+	hex_dump("concatenation=", concatenation, 76);
+
+	// Use PRF to generate PTK
+	PRF(PMK, LEN_PMK, Prefix, 22, concatenation, 76, output, len);
+
+}
+
+VOID WpaDeriveGTK(
+    IN  UCHAR   *GMK,
+    IN  UCHAR   *GNonce,
+    IN  UCHAR   *AA,
+    OUT UCHAR   *output,
+    IN  UINT    len)
+{
+    UCHAR   concatenation[76];
+    UINT    CurrPos=0;
+    UCHAR   Prefix[19];
+    UCHAR   temp[80];   
+
+    NdisMoveMemory(&concatenation[CurrPos], AA, 6);
+    CurrPos += 6;
+
+    NdisMoveMemory(&concatenation[CurrPos], GNonce , 32);
+    CurrPos += 32;
+
+    Prefix[0] = 'G';
+    Prefix[1] = 'r';
+    Prefix[2] = 'o';
+    Prefix[3] = 'u';
+    Prefix[4] = 'p';
+    Prefix[5] = ' ';
+    Prefix[6] = 'k';
+    Prefix[7] = 'e';
+    Prefix[8] = 'y';
+    Prefix[9] = ' ';
+    Prefix[10] = 'e';
+    Prefix[11] = 'x';
+    Prefix[12] = 'p';
+    Prefix[13] = 'a';
+    Prefix[14] = 'n';
+    Prefix[15] = 's';
+    Prefix[16] = 'i';
+    Prefix[17] = 'o';
+    Prefix[18] = 'n';
+
+    PRF(GMK, PMK_LEN, Prefix,  19, concatenation, 38 , temp, len);
+    NdisMoveMemory(output, temp, len);
+}
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Generate random number by software.
+
+	Arguments:
+		pAd		-	pointer to our pAdapter context 
+		macAddr	-	pointer to local MAC address
+		
+	Return Value:
+
+	Note:
+		802.1ii-2004  Annex H.5
+		
+	========================================================================
+*/
+VOID	GenRandom(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	UCHAR			*macAddr,
+	OUT	UCHAR			*random)
+{	
+	INT		i, curr;
+	UCHAR	local[80], KeyCounter[32];
+	UCHAR	result[80];
+	ULONG	CurrentTime;
+	UCHAR	prefix[] = {'I', 'n', 'i', 't', ' ', 'C', 'o', 'u', 'n', 't', 'e', 'r'};
+
+	// Zero the related information
+	NdisZeroMemory(result, 80);
+	NdisZeroMemory(local, 80);
+	NdisZeroMemory(KeyCounter, 32);	
+
+	for	(i = 0;	i <	32;	i++)
+	{		
+		// copy the local MAC address
+		COPY_MAC_ADDR(local, macAddr);
+		curr =	MAC_ADDR_LEN;
+
+		// concatenate the current time
+		NdisGetSystemUpTime(&CurrentTime);
+		NdisMoveMemory(&local[curr],  &CurrentTime,	sizeof(CurrentTime));
+		curr +=	sizeof(CurrentTime);
+
+		// concatenate the last result
+		NdisMoveMemory(&local[curr],  result, 32);
+		curr +=	32;
+		
+		// concatenate a variable 
+		NdisMoveMemory(&local[curr],  &i,  2);		
+		curr +=	2;
+
+		// calculate the result
+		PRF(KeyCounter, 32, prefix,12, local, curr, result, 32); 
+	}
+	
+	NdisMoveMemory(random, result,	32);	
+}
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Build cipher suite in RSN-IE. 
+		It only shall be called by RTMPMakeRSNIE. 
+
+	Arguments:
+		pAd			-	pointer to our pAdapter context	
+    	ElementID	-	indicate the WPA1 or WPA2
+    	WepStatus	-	indicate the encryption type
+		bMixCipher	-	a boolean to indicate the pairwise cipher and group 
+						cipher are the same or not
+		
+	Return Value:
+		
+	Note:
+		
+	========================================================================
+*/
+static VOID RTMPMakeRsnIeCipher(
+	IN  PRTMP_ADAPTER   pAd,
+	IN	UCHAR			ElementID,	
+	IN	UINT			WepStatus,
+	IN	BOOLEAN			bMixCipher,
+	IN	UCHAR			FlexibleCipher,
+	OUT	PUCHAR			pRsnIe,
+	OUT	UCHAR			*rsn_len)
+{		
+	UCHAR	PairwiseCnt;
+
+	*rsn_len = 0;
+
+	// decide WPA2 or WPA1	
+	if (ElementID == Wpa2Ie)
+	{
+		RSNIE2	*pRsnie_cipher = (RSNIE2*)pRsnIe;
+
+		// Assign the verson as 1
+		pRsnie_cipher->version = 1;
+
+        switch (WepStatus)
+        {
+        	// TKIP mode
+            case Ndis802_11Encryption2Enabled:
+                NdisMoveMemory(pRsnie_cipher->mcast, OUI_WPA2_TKIP, 4);
+                pRsnie_cipher->ucount = 1;
+                NdisMoveMemory(pRsnie_cipher->ucast[0].oui, OUI_WPA2_TKIP, 4);
+                *rsn_len = sizeof(RSNIE2);
+                break;
+
+			// AES mode
+            case Ndis802_11Encryption3Enabled:
+				if (bMixCipher)
+					NdisMoveMemory(pRsnie_cipher->mcast, OUI_WPA2_TKIP, 4);
+				else
+					NdisMoveMemory(pRsnie_cipher->mcast, OUI_WPA2_CCMP, 4);								
+                pRsnie_cipher->ucount = 1;
+                NdisMoveMemory(pRsnie_cipher->ucast[0].oui, OUI_WPA2_CCMP, 4);
+                *rsn_len = sizeof(RSNIE2);
+                break;
+
+			// TKIP-AES mix mode
+            case Ndis802_11Encryption4Enabled:
+                NdisMoveMemory(pRsnie_cipher->mcast, OUI_WPA2_TKIP, 4);
+
+				PairwiseCnt = 1;
+				// Insert WPA2 TKIP as the first pairwise cipher 
+				if (MIX_CIPHER_WPA2_TKIP_ON(FlexibleCipher))
+				{
+                	NdisMoveMemory(pRsnie_cipher->ucast[0].oui, OUI_WPA2_TKIP, 4);
+					// Insert WPA2 AES as the secondary pairwise cipher
+					if (MIX_CIPHER_WPA2_AES_ON(FlexibleCipher))
+					{
+                		NdisMoveMemory(pRsnie_cipher->ucast[0].oui + 4, OUI_WPA2_CCMP, 4);
+						PairwiseCnt = 2;
+					}	
+				}
+				else
+				{
+					// Insert WPA2 AES as the first pairwise cipher 
+					NdisMoveMemory(pRsnie_cipher->ucast[0].oui, OUI_WPA2_CCMP, 4);	
+				}
+							
+                pRsnie_cipher->ucount = PairwiseCnt;				
+                *rsn_len = sizeof(RSNIE2) + (4 * (PairwiseCnt - 1));
+                break;			
+        }   
+
+#ifdef CONFIG_STA_SUPPORT
+		if ((pAd->OpMode == OPMODE_STA) &&
+			(pAd->StaCfg.GroupCipher != Ndis802_11Encryption2Enabled) &&
+			(pAd->StaCfg.GroupCipher != Ndis802_11Encryption3Enabled))
+		{
+			UINT	GroupCipher = pAd->StaCfg.GroupCipher;
+			switch(GroupCipher)
+			{
+				case Ndis802_11GroupWEP40Enabled:
+					NdisMoveMemory(pRsnie_cipher->mcast, OUI_WPA2_WEP40, 4);
+					break;
+				case Ndis802_11GroupWEP104Enabled:
+					NdisMoveMemory(pRsnie_cipher->mcast, OUI_WPA2_WEP104, 4);
+					break;
+			}
+		}
+#endif // CONFIG_STA_SUPPORT //
+
+		// swap for big-endian platform
+		pRsnie_cipher->version = cpu2le16(pRsnie_cipher->version);
+	    pRsnie_cipher->ucount = cpu2le16(pRsnie_cipher->ucount);
+	}
+	else
+	{
+		RSNIE	*pRsnie_cipher = (RSNIE*)pRsnIe;
+
+		// Assign OUI and version
+		NdisMoveMemory(pRsnie_cipher->oui, OUI_WPA_VERSION, 4);
+        pRsnie_cipher->version = 1;
+
+		switch (WepStatus)
+		{
+			// TKIP mode
+            case Ndis802_11Encryption2Enabled:
+                NdisMoveMemory(pRsnie_cipher->mcast, OUI_WPA_TKIP, 4);
+                pRsnie_cipher->ucount = 1;
+                NdisMoveMemory(pRsnie_cipher->ucast[0].oui, OUI_WPA_TKIP, 4);
+                *rsn_len = sizeof(RSNIE);
+                break;
+
+			// AES mode
+            case Ndis802_11Encryption3Enabled:				
+				if (bMixCipher)
+					NdisMoveMemory(pRsnie_cipher->mcast, OUI_WPA_TKIP, 4);
+				else
+					NdisMoveMemory(pRsnie_cipher->mcast, OUI_WPA_CCMP, 4);			
+                pRsnie_cipher->ucount = 1;
+                NdisMoveMemory(pRsnie_cipher->ucast[0].oui, OUI_WPA_CCMP, 4);
+                *rsn_len = sizeof(RSNIE);
+                break;
+
+			// TKIP-AES mix mode
+            case Ndis802_11Encryption4Enabled:
+                NdisMoveMemory(pRsnie_cipher->mcast, OUI_WPA_TKIP, 4);
+
+				PairwiseCnt = 1;
+				// Insert WPA TKIP as the first pairwise cipher 
+				if (MIX_CIPHER_WPA_TKIP_ON(FlexibleCipher))
+				{
+                	NdisMoveMemory(pRsnie_cipher->ucast[0].oui, OUI_WPA_TKIP, 4);
+					// Insert WPA AES as the secondary pairwise cipher
+					if (MIX_CIPHER_WPA_AES_ON(FlexibleCipher))
+					{
+                		NdisMoveMemory(pRsnie_cipher->ucast[0].oui + 4, OUI_WPA_CCMP, 4);
+						PairwiseCnt = 2;
+					}	
+				}
+				else
+				{
+					// Insert WPA AES as the first pairwise cipher 
+					NdisMoveMemory(pRsnie_cipher->ucast[0].oui, OUI_WPA_CCMP, 4);	
+				}
+						
+                pRsnie_cipher->ucount = PairwiseCnt;				
+                *rsn_len = sizeof(RSNIE) + (4 * (PairwiseCnt - 1));				
+                break;					
+        }
+
+#ifdef CONFIG_STA_SUPPORT
+		if ((pAd->OpMode == OPMODE_STA) &&
+			(pAd->StaCfg.GroupCipher != Ndis802_11Encryption2Enabled) &&
+			(pAd->StaCfg.GroupCipher != Ndis802_11Encryption3Enabled))
+		{
+			UINT	GroupCipher = pAd->StaCfg.GroupCipher;
+			switch(GroupCipher)
+			{
+				case Ndis802_11GroupWEP40Enabled:
+					NdisMoveMemory(pRsnie_cipher->mcast, OUI_WPA_WEP40, 4);
+					break;
+				case Ndis802_11GroupWEP104Enabled:
+					NdisMoveMemory(pRsnie_cipher->mcast, OUI_WPA_WEP104, 4);
+					break;
+			}
+		}
+#endif // CONFIG_STA_SUPPORT //
+
+		// swap for big-endian platform
+		pRsnie_cipher->version = cpu2le16(pRsnie_cipher->version);
+	    pRsnie_cipher->ucount = cpu2le16(pRsnie_cipher->ucount);
+	}
+}
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Build AKM suite in RSN-IE. 
+		It only shall be called by RTMPMakeRSNIE. 
+
+	Arguments:
+		pAd			-	pointer to our pAdapter context	
+    	ElementID	-	indicate the WPA1 or WPA2
+    	AuthMode	-	indicate the authentication mode
+		apidx		-	indicate the interface index
+		
+	Return Value:
+		
+	Note:
+		
+	========================================================================
+*/
+static VOID RTMPMakeRsnIeAKM(	
+	IN  PRTMP_ADAPTER   pAd,	
+	IN	UCHAR			ElementID,	
+	IN	UINT			AuthMode,
+	IN	UCHAR			apidx,
+	OUT	PUCHAR			pRsnIe,
+	OUT	UCHAR			*rsn_len)
+{
+	RSNIE_AUTH		*pRsnie_auth;	
+	UCHAR			AkmCnt = 1;		// default as 1
+
+	pRsnie_auth = (RSNIE_AUTH*)(pRsnIe + (*rsn_len));
+
+	// decide WPA2 or WPA1	 
+	if (ElementID == Wpa2Ie)
+	{
+
+		switch (AuthMode)
+        {
+            case Ndis802_11AuthModeWPA2:
+            case Ndis802_11AuthModeWPA1WPA2:
+                	NdisMoveMemory(pRsnie_auth->auth[0].oui, OUI_WPA2_8021X_AKM, 4);
+                break;
+
+            case Ndis802_11AuthModeWPA2PSK:
+            case Ndis802_11AuthModeWPA1PSKWPA2PSK:
+                	NdisMoveMemory(pRsnie_auth->auth[0].oui, OUI_WPA2_PSK_AKM, 4);
+                break;
+			default:
+				AkmCnt = 0;
+				break;
+				
+        }
+	}
+	else
+	{
+		switch (AuthMode)
+        {
+            case Ndis802_11AuthModeWPA:
+            case Ndis802_11AuthModeWPA1WPA2:
+                NdisMoveMemory(pRsnie_auth->auth[0].oui, OUI_WPA_8021X_AKM, 4);
+                break;
+
+            case Ndis802_11AuthModeWPAPSK:
+            case Ndis802_11AuthModeWPA1PSKWPA2PSK:
+                NdisMoveMemory(pRsnie_auth->auth[0].oui, OUI_WPA_PSK_AKM, 4);
+                break;
+
+			case Ndis802_11AuthModeWPANone:
+                NdisMoveMemory(pRsnie_auth->auth[0].oui, OUI_WPA_NONE_AKM, 4);
+                break;
+			default:
+				AkmCnt = 0;
+				break;	
+        }			
+	}
+		 
+	pRsnie_auth->acount = AkmCnt;
+	pRsnie_auth->acount = cpu2le16(pRsnie_auth->acount);
+	
+	// update current RSNIE length
+	(*rsn_len) += (sizeof(RSNIE_AUTH) + (4 * (AkmCnt - 1)));	
+
+}
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Build capability in RSN-IE. 
+		It only shall be called by RTMPMakeRSNIE. 
+
+	Arguments:
+		pAd			-	pointer to our pAdapter context	
+    	ElementID	-	indicate the WPA1 or WPA2    	
+		apidx		-	indicate the interface index
+		
+	Return Value:
+		
+	Note:
+		
+	========================================================================
+*/
+static VOID RTMPMakeRsnIeCap(	
+	IN  PRTMP_ADAPTER   pAd,	
+	IN	UCHAR			ElementID,
+	IN	UCHAR			apidx,
+	OUT	PUCHAR			pRsnIe,
+	OUT	UCHAR			*rsn_len)
+{
+	RSN_CAPABILITIES    *pRSN_Cap;
+
+	// it could be ignored in WPA1 mode
+	if (ElementID == WpaIe)
+		return;
+	
+	pRSN_Cap = (RSN_CAPABILITIES*)(pRsnIe + (*rsn_len));
+	
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{		
+	}
+#endif // CONFIG_STA_SUPPORT //			      
+					 
+	pRSN_Cap->word = cpu2le16(pRSN_Cap->word);
+	
+	(*rsn_len) += sizeof(RSN_CAPABILITIES);	// update current RSNIE length
+
+}
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Build PMKID in RSN-IE. 
+		It only shall be called by RTMPMakeRSNIE. 
+
+	Arguments:
+		pAd			-	pointer to our pAdapter context	
+    	ElementID	-	indicate the WPA1 or WPA2    	
+		apidx		-	indicate the interface index
+		
+	Return Value:
+		
+	Note:
+		
+	========================================================================
+*/
+
+/*
+	========================================================================
+
+	Routine Description:
+		Build RSN IE context. It is not included element-ID and length.
+
+	Arguments:
+		pAd			-	pointer to our pAdapter context	
+    	AuthMode	-	indicate the authentication mode
+    	WepStatus	-	indicate the encryption type
+		apidx		-	indicate the interface index
+		
+	Return Value:
+		
+	Note:
+		
+	========================================================================
+*/
+VOID RTMPMakeRSNIE(
+    IN  PRTMP_ADAPTER   pAd,
+    IN  UINT            AuthMode,
+    IN  UINT            WepStatus,
+	IN	UCHAR			apidx)
+{
+	PUCHAR		pRsnIe = NULL;			// primary RSNIE
+	UCHAR 		*rsnielen_cur_p = 0;	// the length of the primary RSNIE 		
+	UCHAR		*rsnielen_ex_cur_p = 0;	// the length of the secondary RSNIE	  	
+	UCHAR		PrimaryRsnie;			
+	BOOLEAN		bMixCipher = FALSE;	// indicate the pairwise and group cipher are different
+	UCHAR		p_offset;		
+	WPA_MIX_PAIR_CIPHER		FlexibleCipher = MIX_CIPHER_NOTUSE;	// it provide the more flexible cipher combination in WPA-WPA2 and TKIPAES mode
+		
+	rsnielen_cur_p = NULL;
+	rsnielen_ex_cur_p = NULL;
+
+	{
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		{
+#ifdef WPA_SUPPLICANT_SUPPORT
+			if (pAd->StaCfg.WpaSupplicantUP != WPA_SUPPLICANT_DISABLE)
+			{
+				if (AuthMode < Ndis802_11AuthModeWPA)
+					return;
+			}
+			else
+#endif // WPA_SUPPLICANT_SUPPORT //
+			{
+				// Support WPAPSK or WPA2PSK in STA-Infra mode
+				// Support WPANone in STA-Adhoc mode
+				if ((AuthMode != Ndis802_11AuthModeWPAPSK) && 
+					(AuthMode != Ndis802_11AuthModeWPA2PSK) && 
+					(AuthMode != Ndis802_11AuthModeWPANone)
+					)
+					return;
+			}	
+	
+			DBGPRINT(RT_DEBUG_TRACE,("==> RTMPMakeRSNIE(STA)\n"));
+
+			// Zero RSNIE context 
+			pAd->StaCfg.RSNIE_Len = 0;
+			NdisZeroMemory(pAd->StaCfg.RSN_IE, MAX_LEN_OF_RSNIE);
+
+			// Pointer to RSNIE 
+			rsnielen_cur_p = &pAd->StaCfg.RSNIE_Len;
+			pRsnIe = pAd->StaCfg.RSN_IE;
+
+			bMixCipher = pAd->StaCfg.bMixCipher;						
+		}
+#endif // CONFIG_STA_SUPPORT //
+	}
+
+	// indicate primary RSNIE as WPA or WPA2
+	if ((AuthMode == Ndis802_11AuthModeWPA) || 
+		(AuthMode == Ndis802_11AuthModeWPAPSK) || 
+		(AuthMode == Ndis802_11AuthModeWPANone) || 
+		(AuthMode == Ndis802_11AuthModeWPA1WPA2) || 
+		(AuthMode == Ndis802_11AuthModeWPA1PSKWPA2PSK))
+		PrimaryRsnie = WpaIe;
+	else
+		PrimaryRsnie = Wpa2Ie;
+
+	{
+		// Build the primary RSNIE
+		// 1. insert cipher suite
+		RTMPMakeRsnIeCipher(pAd, PrimaryRsnie, WepStatus, bMixCipher, FlexibleCipher, pRsnIe, &p_offset);
+
+		// 2. insert AKM
+		RTMPMakeRsnIeAKM(pAd, PrimaryRsnie, AuthMode, apidx, pRsnIe, &p_offset);
+
+		// 3. insert capability
+		RTMPMakeRsnIeCap(pAd, PrimaryRsnie, apidx, pRsnIe, &p_offset);
+
+	}
+
+	// 4. update the RSNIE length
+	*rsnielen_cur_p = p_offset; 
+
+	hex_dump("The primary RSNIE", pRsnIe, (*rsnielen_cur_p));
+
+
+}
+
+/*
+    ==========================================================================
+    Description:
+		Check whether the received frame is EAP frame.
+
+	Arguments:
+		pAd				-	pointer to our pAdapter context	
+		pEntry			-	pointer to active entry
+		pData			-	the received frame
+		DataByteCount 	-	the received frame's length		
+		FromWhichBSSID	-	indicate the interface index
+       
+    Return:
+         TRUE 			-	This frame is EAP frame
+         FALSE 			-	otherwise
+    ==========================================================================
+*/
+BOOLEAN RTMPCheckWPAframe(
+    IN PRTMP_ADAPTER    pAd,
+    IN PMAC_TABLE_ENTRY	pEntry,
+    IN PUCHAR           pData,
+    IN ULONG            DataByteCount,
+	IN UCHAR			FromWhichBSSID)
+{
+	ULONG	Body_len;
+	BOOLEAN Cancelled;
+
+
+    if(DataByteCount < (LENGTH_802_1_H + LENGTH_EAPOL_H))
+        return FALSE;
+
+    
+	// Skip LLC header	
+    if (NdisEqualMemory(SNAP_802_1H, pData, 6) ||
+        // Cisco 1200 AP may send packet with SNAP_BRIDGE_TUNNEL
+        NdisEqualMemory(SNAP_BRIDGE_TUNNEL, pData, 6)) 
+    {
+        pData += 6;
+    }
+	// Skip 2-bytes EAPoL type 
+    if (NdisEqualMemory(EAPOL, pData, 2)) 
+//	if (*(UINT16 *)EAPOL == *(UINT16 *)pData)
+    {
+        pData += 2;         
+    }
+    else    
+        return FALSE;
+
+    switch (*(pData+1))     
+    {   
+        case EAPPacket:
+			Body_len = (*(pData+2)<<8) | (*(pData+3));
+            DBGPRINT(RT_DEBUG_TRACE, ("Receive EAP-Packet frame, TYPE = 0, Length = %ld\n", Body_len));
+            break;
+        case EAPOLStart:
+            DBGPRINT(RT_DEBUG_TRACE, ("Receive EAPOL-Start frame, TYPE = 1 \n"));
+			if (pEntry->EnqueueEapolStartTimerRunning != EAPOL_START_DISABLE)
+            {    
+            	DBGPRINT(RT_DEBUG_TRACE, ("Cancel the EnqueueEapolStartTimerRunning \n"));
+                RTMPCancelTimer(&pEntry->EnqueueStartForPSKTimer, &Cancelled);
+                pEntry->EnqueueEapolStartTimerRunning = EAPOL_START_DISABLE;             
+            }				
+            break;
+        case EAPOLLogoff:
+            DBGPRINT(RT_DEBUG_TRACE, ("Receive EAPOLLogoff frame, TYPE = 2 \n"));
+            break;
+        case EAPOLKey:
+			Body_len = (*(pData+2)<<8) | (*(pData+3));
+            DBGPRINT(RT_DEBUG_TRACE, ("Receive EAPOL-Key frame, TYPE = 3, Length = %ld\n", Body_len));
+            break;
+        case EAPOLASFAlert:
+            DBGPRINT(RT_DEBUG_TRACE, ("Receive EAPOLASFAlert frame, TYPE = 4 \n"));
+            break;
+        default:
+            return FALSE;
+    
+    }   
+    return TRUE;
+}
+
+/*
+    ==========================================================================
+    Description:
+		Report the EAP message type
+
+	Arguments:
+		msg		-	EAPOL_PAIR_MSG_1
+					EAPOL_PAIR_MSG_2
+					EAPOL_PAIR_MSG_3
+					EAPOL_PAIR_MSG_4
+					EAPOL_GROUP_MSG_1
+					EAPOL_GROUP_MSG_2
+											       
+    Return:
+         message type string
+
+    ==========================================================================
+*/
+PSTRING GetEapolMsgType(CHAR msg)
+{
+    if(msg == EAPOL_PAIR_MSG_1)
+        return "Pairwise Message 1";
+    else if(msg == EAPOL_PAIR_MSG_2)
+        return "Pairwise Message 2";
+	else if(msg == EAPOL_PAIR_MSG_3)
+        return "Pairwise Message 3";
+	else if(msg == EAPOL_PAIR_MSG_4)
+        return "Pairwise Message 4";
+	else if(msg == EAPOL_GROUP_MSG_1)
+        return "Group Message 1";
+	else if(msg == EAPOL_GROUP_MSG_2)
+        return "Group Message 2";
+    else
+    	return "Invalid Message";
+}
+
+
+/*
+    ========================================================================
+    
+    Routine Description:
+    Check Sanity RSN IE of EAPoL message
+
+    Arguments:
+        
+    Return Value:
+
+		
+    ========================================================================
+*/
+BOOLEAN RTMPCheckRSNIE(
+	IN  PRTMP_ADAPTER   pAd,
+	IN  PUCHAR          pData,
+	IN  UCHAR           DataLen,
+	IN  MAC_TABLE_ENTRY *pEntry,
+	OUT	UCHAR			*Offset)
+{
+	PUCHAR              pVIE;
+	UCHAR               len;
+	PEID_STRUCT         pEid;
+	BOOLEAN				result = FALSE;
+		
+	pVIE = pData;
+	len	 = DataLen;
+	*Offset = 0;
+
+	while (len > sizeof(RSNIE2))
+	{
+		pEid = (PEID_STRUCT) pVIE;	
+		// WPA RSN IE
+		if ((pEid->Eid == IE_WPA) && (NdisEqualMemory(pEid->Octet, WPA_OUI, 4)))
+		{			
+			if ((pEntry->AuthMode == Ndis802_11AuthModeWPA || pEntry->AuthMode == Ndis802_11AuthModeWPAPSK) &&
+				(NdisEqualMemory(pVIE, pEntry->RSN_IE, pEntry->RSNIE_Len)) &&
+				(pEntry->RSNIE_Len == (pEid->Len + 2)))
+			{
+					result = TRUE;				
+			}		
+			
+			*Offset += (pEid->Len + 2);			
+		}
+		// WPA2 RSN IE, doesn't need to check RSNIE Capabilities field        
+		else if ((pEid->Eid == IE_RSN) && (NdisEqualMemory(pEid->Octet + 2, RSN_OUI, 3)))
+		{
+			if ((pEntry->AuthMode == Ndis802_11AuthModeWPA2 || pEntry->AuthMode == Ndis802_11AuthModeWPA2PSK) &&
+				(pEid->Eid == pEntry->RSN_IE[0]) &&
+				((pEid->Len + 2) >= pEntry->RSNIE_Len) &&
+				(NdisEqualMemory(pEid->Octet, &pEntry->RSN_IE[2], pEntry->RSNIE_Len - 4)))
+			{
+
+					result = TRUE;				
+			}			
+
+			*Offset += (pEid->Len + 2);
+		}		
+		else
+		{			
+			break;
+		}
+
+		pVIE += (pEid->Len + 2);
+		len  -= (pEid->Len + 2);
+	}
+	
+		
+	return result;
+	
+}
+
+
+/*
+    ========================================================================
+    
+    Routine Description:
+    Parse KEYDATA field.  KEYDATA[] May contain 2 RSN IE and optionally GTK.  
+    GTK  is encaptulated in KDE format at  p.83 802.11i D10
+
+    Arguments:
+        
+    Return Value:
+
+    Note:
+        802.11i D10  
+        
+    ========================================================================
+*/
+BOOLEAN RTMPParseEapolKeyData(
+	IN  PRTMP_ADAPTER   pAd,
+	IN  PUCHAR          pKeyData,
+	IN  UCHAR           KeyDataLen,
+	IN	UCHAR			GroupKeyIndex,
+	IN	UCHAR			MsgType,
+	IN	BOOLEAN			bWPA2,
+	IN  MAC_TABLE_ENTRY *pEntry)
+{
+    PUCHAR              pMyKeyData = pKeyData;
+    UCHAR               KeyDataLength = KeyDataLen;
+	UCHAR				GTK[MAX_LEN_GTK];
+    UCHAR               GTKLEN = 0;
+	UCHAR				DefaultIdx = 0;
+	UCHAR				skip_offset = 0;			
+	    
+	// Verify The RSN IE contained in pairewise_msg_2 && pairewise_msg_3 and skip it
+	if (MsgType == EAPOL_PAIR_MSG_2 || MsgType == EAPOL_PAIR_MSG_3)
+    {
+		// Check RSN IE whether it is WPA2/WPA2PSK   		
+		if (!RTMPCheckRSNIE(pAd, pKeyData, KeyDataLen, pEntry, &skip_offset))
+		{
+			// send wireless event - for RSN IE different
+				RTMPSendWirelessEvent(pAd, IW_RSNIE_DIFF_EVENT_FLAG, pEntry->Addr, pEntry->apidx, 0); 
+
+        	DBGPRINT(RT_DEBUG_ERROR, ("RSN_IE Different in msg %d of 4-way handshake!\n", MsgType));			
+			hex_dump("Receive RSN_IE ", pKeyData, KeyDataLen);
+			hex_dump("Desired RSN_IE ", pEntry->RSN_IE, pEntry->RSNIE_Len);	
+					
+			return FALSE;			
+    	}
+    	else
+		{
+			if (bWPA2 && MsgType == EAPOL_PAIR_MSG_3)
+			{
+				//WpaShowAllsuite(pMyKeyData, skip_offset);
+			
+				// skip RSN IE
+				pMyKeyData += skip_offset;
+				KeyDataLength -= skip_offset;
+				DBGPRINT(RT_DEBUG_TRACE, ("RTMPParseEapolKeyData ==> WPA2/WPA2PSK RSN IE matched in Msg 3, Length(%d) \n", skip_offset));
+			}
+			else
+				return TRUE;			
+		}
+	}
+
+	DBGPRINT(RT_DEBUG_TRACE,("RTMPParseEapolKeyData ==> KeyDataLength %d without RSN_IE \n", KeyDataLength));
+	//hex_dump("remain data", pMyKeyData, KeyDataLength);
+
+
+	// Parse KDE format in pairwise_msg_3_WPA2 && group_msg_1_WPA2
+	if (bWPA2 && (MsgType == EAPOL_PAIR_MSG_3 || MsgType == EAPOL_GROUP_MSG_1))
+	{				
+		PEID_STRUCT     pEid;
+			
+		pEid = (PEID_STRUCT) pMyKeyData;
+		skip_offset = 0;
+		while ((skip_offset + 2 + pEid->Len) <= KeyDataLength)
+		{
+			switch(pEid->Eid)
+			{
+				case WPA_KDE_TYPE:
+					{
+						PKDE_HDR	pKDE;
+
+						pKDE = (PKDE_HDR)pEid;
+						if (NdisEqualMemory(pKDE->OUI, OUI_WPA2, 3))
+    					{
+							if (pKDE->DataType == KDE_GTK)
+							{
+								PGTK_KDE pKdeGtk;
+								
+								pKdeGtk = (PGTK_KDE) &pKDE->octet[0];
+								DefaultIdx = pKdeGtk->Kid;
+
+								/* Get GTK length - refer to IEEE 802.11i-2004 p.82 */
+								GTKLEN = pKDE->Len -6;
+								if (GTKLEN < LEN_AES_TK)
+								{
+									DBGPRINT(RT_DEBUG_ERROR, ("ERROR: GTK Key length is too short (%d) \n", GTKLEN));
+        							return FALSE;
+								}
+								NdisMoveMemory(GTK, pKdeGtk->GTK, GTKLEN);
+								DBGPRINT(RT_DEBUG_TRACE, ("GTK in KDE format ,DefaultKeyID=%d, KeyLen=%d \n", DefaultIdx, GTKLEN));
+    						}
+						}
+					}
+					break;
+			}
+			skip_offset = skip_offset + 2 + pEid->Len;
+	        pEid = (PEID_STRUCT)((UCHAR*)pEid + 2 + pEid->Len);   
+		}
+
+		// skip KDE Info
+		pMyKeyData += skip_offset;
+		KeyDataLength -= skip_offset;		
+	}
+	else if (!bWPA2 && MsgType == EAPOL_GROUP_MSG_1)
+	{
+		DefaultIdx = GroupKeyIndex;
+		GTKLEN = KeyDataLength;
+		NdisMoveMemory(GTK, pMyKeyData, KeyDataLength);
+		DBGPRINT(RT_DEBUG_TRACE, ("GTK without KDE, DefaultKeyID=%d, KeyLen=%d \n", DefaultIdx, GTKLEN));
+	}
+		
+	// Sanity check - shared key index must be 0 ~ 3
+	if (DefaultIdx > 3)	
+    {
+     	DBGPRINT(RT_DEBUG_ERROR, ("ERROR: GTK Key index(%d) is invalid in %s %s \n", DefaultIdx, ((bWPA2) ? "WPA2" : "WPA"), GetEapolMsgType(MsgType)));
+        return FALSE;
+    } 
+
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{			
+        if (ADHOC_ON(pAd)) {
+            if (pAd->StaCfg.GroupCipher == Ndis802_11Encryption3Enabled) {
+                NdisZeroMemory(&pEntry->RxGTK, sizeof(CIPHER_KEY));                                
+      			NdisMoveMemory(pEntry->RxGTK.Key, GTK, LEN_TK);
+                pEntry->RxGTK.CipherAlg = CIPHER_AES;
+                pEntry->RxGTK.KeyLen= LEN_TK;
+            }                
+        } else {                        
+    		// set key material, TxMic and RxMic		
+    		NdisMoveMemory(pAd->StaCfg.GTK, GTK, GTKLEN);
+    		pAd->StaCfg.DefaultKeyId = DefaultIdx;
+
+    		WPAInstallSharedKey(pAd, 
+    							pAd->StaCfg.GroupCipher, 
+    							BSS0, 
+    							pAd->StaCfg.DefaultKeyId, 
+    							MCAST_WCID, 
+    							FALSE, 
+    							pAd->StaCfg.GTK);
+        }            
+	}
+#endif // CONFIG_STA_SUPPORT //
+
+	return TRUE;
+ 
+}
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Construct KDE common format  
+		Its format is below,
+		
+		+--------------------+
+		| Type (0xdd)		 |  1 octet
+		+--------------------+
+		| Length			 |	1 octet	
+		+--------------------+
+		| OUI				 |  3 octets
+		+--------------------+
+		| Data Type			 |	1 octet
+		+--------------------+
+		
+	Arguments:
+				
+	Return Value:
+		
+	Note:
+		It's defined in IEEE 802.11-2007 Figure 8-25.
+		
+	========================================================================
+*/
+VOID WPA_ConstructKdeHdr(
+	IN 	UINT8	data_type,	
+	IN 	UINT8 	data_len,
+	OUT PUCHAR 	pBuf)
+{
+	PKDE_HDR	pHdr;
+
+	pHdr = (PKDE_HDR)pBuf;
+
+	NdisZeroMemory(pHdr, sizeof(KDE_HDR));
+
+    pHdr->Type = WPA_KDE_TYPE;
+
+	/* The Length field specifies the number of octets in the OUI, Data
+	   Type, and Data fields. */	   
+	pHdr->Len = 4 + data_len;
+
+	NdisMoveMemory(pHdr->OUI, OUI_WPA2, 3);
+	pHdr->DataType = data_type;
+
+}
+
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Construct EAPoL message for WPA handshaking 
+		Its format is below,
+		
+		+--------------------+
+		| Protocol Version	 |  1 octet
+		+--------------------+
+		| Protocol Type		 |	1 octet	
+		+--------------------+
+		| Body Length		 |  2 octets
+		+--------------------+
+		| Descriptor Type	 |	1 octet
+		+--------------------+
+		| Key Information    |	2 octets
+		+--------------------+
+		| Key Length	     |  1 octet
+		+--------------------+
+		| Key Repaly Counter |	8 octets
+		+--------------------+
+		| Key Nonce		     |  32 octets
+		+--------------------+
+		| Key IV			 |  16 octets
+		+--------------------+
+		| Key RSC			 |  8 octets
+		+--------------------+
+		| Key ID or Reserved |	8 octets
+		+--------------------+
+		| Key MIC			 |	16 octets
+		+--------------------+
+		| Key Data Length	 |	2 octets
+		+--------------------+
+		| Key Data			 |	n octets
+		+--------------------+
+		
+
+	Arguments:
+		pAd			Pointer	to our adapter
+				
+	Return Value:
+		None
+		
+	Note:
+		
+	========================================================================
+*/
+VOID	ConstructEapolMsg(
+	IN 	PMAC_TABLE_ENTRY	pEntry,
+    IN 	UCHAR				GroupKeyWepStatus,
+    IN 	UCHAR				MsgType,  
+    IN	UCHAR				DefaultKeyIdx,
+	IN 	UCHAR				*KeyNonce,
+	IN	UCHAR				*TxRSC,
+	IN	UCHAR				*GTK,
+	IN	UCHAR				*RSNIE,
+	IN	UCHAR				RSNIE_Len,
+    OUT PEAPOL_PACKET       pMsg)
+{
+	BOOLEAN	bWPA2 = FALSE;
+	UCHAR	KeyDescVer;
+
+	// Choose WPA2 or not
+	if ((pEntry->AuthMode == Ndis802_11AuthModeWPA2) || 
+		(pEntry->AuthMode == Ndis802_11AuthModeWPA2PSK))
+		bWPA2 = TRUE;
+		
+    // Init Packet and Fill header    
+    pMsg->ProVer = EAPOL_VER;
+    pMsg->ProType = EAPOLKey;
+
+	// Default 95 bytes, the EAPoL-Key descriptor exclude Key-data field
+	SET_UINT16_TO_ARRARY(pMsg->Body_Len, MIN_LEN_OF_EAPOL_KEY_MSG);
+
+	// Fill in EAPoL descriptor
+	if (bWPA2)
+		pMsg->KeyDesc.Type = WPA2_KEY_DESC;
+	else
+		pMsg->KeyDesc.Type = WPA1_KEY_DESC;
+			
+	// Key Descriptor Version (bits 0-2) specifies the key descriptor version type
+	{
+		// Fill in Key information, refer to IEEE Std 802.11i-2004 page 78 
+		// When either the pairwise or the group cipher is AES, the KEY_DESC_AES shall be used.
+		KeyDescVer = (((pEntry->WepStatus == Ndis802_11Encryption3Enabled) || 
+		        		(GroupKeyWepStatus == Ndis802_11Encryption3Enabled)) ? (KEY_DESC_AES) : (KEY_DESC_TKIP));
+	}
+
+	pMsg->KeyDesc.KeyInfo.KeyDescVer = KeyDescVer;
+
+	// Specify Key Type as Group(0) or Pairwise(1)
+	if (MsgType >= EAPOL_GROUP_MSG_1)
+		pMsg->KeyDesc.KeyInfo.KeyType = GROUPKEY;
+	else
+		pMsg->KeyDesc.KeyInfo.KeyType = PAIRWISEKEY;
+
+	// Specify Key Index, only group_msg1_WPA1
+	if (!bWPA2 && (MsgType >= EAPOL_GROUP_MSG_1))
+		pMsg->KeyDesc.KeyInfo.KeyIndex = DefaultKeyIdx;
+	
+	if (MsgType == EAPOL_PAIR_MSG_3)
+		pMsg->KeyDesc.KeyInfo.Install = 1;
+	
+	if ((MsgType == EAPOL_PAIR_MSG_1) || (MsgType == EAPOL_PAIR_MSG_3) || (MsgType == EAPOL_GROUP_MSG_1))
+		pMsg->KeyDesc.KeyInfo.KeyAck = 1;
+
+	if (MsgType != EAPOL_PAIR_MSG_1)	
+		pMsg->KeyDesc.KeyInfo.KeyMic = 1;
+ 
+	if ((bWPA2 && (MsgType >= EAPOL_PAIR_MSG_3)) || 
+		(!bWPA2 && (MsgType >= EAPOL_GROUP_MSG_1)))
+    {                        
+       	pMsg->KeyDesc.KeyInfo.Secure = 1;                   
+    }
+
+	/* This subfield shall be set, and the Key Data field shall be encrypted, if
+	   any key material (e.g., GTK or SMK) is included in the frame. */
+	if (bWPA2 && ((MsgType == EAPOL_PAIR_MSG_3) || 
+		(MsgType == EAPOL_GROUP_MSG_1)))
+    {                               	
+        pMsg->KeyDesc.KeyInfo.EKD_DL = 1;            
+    }
+
+	// key Information element has done. 
+	*(USHORT *)(&pMsg->KeyDesc.KeyInfo) = cpu2le16(*(USHORT *)(&pMsg->KeyDesc.KeyInfo));
+
+	// Fill in Key Length
+	if (bWPA2)
+	{
+		// In WPA2 mode, the field indicates the length of pairwise key cipher, 
+		// so only pairwise_msg_1 and pairwise_msg_3 need to fill. 
+		if ((MsgType == EAPOL_PAIR_MSG_1) || (MsgType == EAPOL_PAIR_MSG_3))
+			pMsg->KeyDesc.KeyLength[1] = ((pEntry->WepStatus == Ndis802_11Encryption2Enabled) ? LEN_TKIP_TK : LEN_AES_TK);
+	}
+	else if (!bWPA2)
+	{
+		if (MsgType >= EAPOL_GROUP_MSG_1)
+		{
+			// the length of group key cipher
+			pMsg->KeyDesc.KeyLength[1] = ((GroupKeyWepStatus == Ndis802_11Encryption2Enabled) ? LEN_TKIP_GTK : LEN_AES_GTK);
+		}
+		else
+		{
+			// the length of pairwise key cipher
+			pMsg->KeyDesc.KeyLength[1] = ((pEntry->WepStatus == Ndis802_11Encryption2Enabled) ? LEN_TKIP_TK : LEN_AES_TK);			
+		}				
+	}			
+	
+ 	// Fill in replay counter        		
+    NdisMoveMemory(pMsg->KeyDesc.ReplayCounter, pEntry->R_Counter, LEN_KEY_DESC_REPLAY);
+
+	// Fill Key Nonce field		  
+	// ANonce : pairwise_msg1 & pairwise_msg3
+	// SNonce : pairwise_msg2
+	// GNonce : group_msg1_wpa1	
+	if ((MsgType <= EAPOL_PAIR_MSG_3) || ((!bWPA2 && (MsgType == EAPOL_GROUP_MSG_1))))
+    	NdisMoveMemory(pMsg->KeyDesc.KeyNonce, KeyNonce, LEN_KEY_DESC_NONCE);
+
+	// Fill key IV - WPA2 as 0, WPA1 as random
+	if (!bWPA2 && (MsgType == EAPOL_GROUP_MSG_1))
+	{		
+		// Suggest IV be random number plus some number,
+		NdisMoveMemory(pMsg->KeyDesc.KeyIv, &KeyNonce[16], LEN_KEY_DESC_IV);		
+        pMsg->KeyDesc.KeyIv[15] += 2;		
+	}
+	
+    // Fill Key RSC field        
+    // It contains the RSC for the GTK being installed.
+	if ((MsgType == EAPOL_PAIR_MSG_3 && bWPA2) || (MsgType == EAPOL_GROUP_MSG_1))
+	{		
+        NdisMoveMemory(pMsg->KeyDesc.KeyRsc, TxRSC, 6);
+	}
+
+	// Clear Key MIC field for MIC calculation later   
+    NdisZeroMemory(pMsg->KeyDesc.KeyMic, LEN_KEY_DESC_MIC);
+	
+	ConstructEapolKeyData(pEntry,
+						  GroupKeyWepStatus, 
+						  KeyDescVer,
+						  MsgType, 
+						  DefaultKeyIdx, 
+						  GTK,
+						  RSNIE,
+						  RSNIE_Len,
+						  pMsg);
+ 
+	// Calculate MIC and fill in KeyMic Field except Pairwise Msg 1.
+	if (MsgType != EAPOL_PAIR_MSG_1)
+	{
+		CalculateMIC(KeyDescVer, pEntry->PTK, pMsg);
+	}
+
+	DBGPRINT(RT_DEBUG_TRACE, ("===> ConstructEapolMsg for %s %s\n", ((bWPA2) ? "WPA2" : "WPA"), GetEapolMsgType(MsgType)));
+	DBGPRINT(RT_DEBUG_TRACE, ("	     Body length = %d \n", CONV_ARRARY_TO_UINT16(pMsg->Body_Len)));
+	DBGPRINT(RT_DEBUG_TRACE, ("	     Key length  = %d \n", CONV_ARRARY_TO_UINT16(pMsg->KeyDesc.KeyLength)));
+
+
+}
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Construct the Key Data field of EAPoL message 
+
+	Arguments:
+		pAd			Pointer	to our adapter
+		Elem		Message body
+		
+	Return Value:
+		None
+		
+	Note:
+		
+	========================================================================
+*/
+VOID	ConstructEapolKeyData(
+	IN	PMAC_TABLE_ENTRY	pEntry,
+	IN	UCHAR			GroupKeyWepStatus,
+	IN	UCHAR			keyDescVer,
+	IN 	UCHAR			MsgType,
+	IN	UCHAR			DefaultKeyIdx,
+	IN	UCHAR			*GTK,
+	IN	UCHAR			*RSNIE,
+	IN	UCHAR			RSNIE_LEN,
+	OUT PEAPOL_PACKET   pMsg)
+{
+	UCHAR		*mpool, *Key_Data, *eGTK;  	  
+	ULONG		data_offset;
+	BOOLEAN		bWPA2Capable = FALSE;
+	BOOLEAN		GTK_Included = FALSE;
+
+	// Choose WPA2 or not
+	if ((pEntry->AuthMode == Ndis802_11AuthModeWPA2) || 
+		(pEntry->AuthMode == Ndis802_11AuthModeWPA2PSK))
+		bWPA2Capable = TRUE;
+
+	if (MsgType == EAPOL_PAIR_MSG_1 || 
+		MsgType == EAPOL_PAIR_MSG_4 || 
+		MsgType == EAPOL_GROUP_MSG_2)
+		return;
+ 
+	// allocate memory pool
+	os_alloc_mem(NULL, (PUCHAR *)&mpool, 1500);
+
+    if (mpool == NULL)
+		return;
+        
+	/* eGTK Len = 512 */
+	eGTK = (UCHAR *) ROUND_UP(mpool, 4);
+	/* Key_Data Len = 512 */
+	Key_Data = (UCHAR *) ROUND_UP(eGTK + 512, 4);
+
+	NdisZeroMemory(Key_Data, 512);
+	SET_UINT16_TO_ARRARY(pMsg->KeyDesc.KeyDataLen, 0);
+	data_offset = 0;
+	
+	// Encapsulate RSNIE in pairwise_msg2 & pairwise_msg3		
+	if (RSNIE_LEN && ((MsgType == EAPOL_PAIR_MSG_2) || (MsgType == EAPOL_PAIR_MSG_3)))
+	{
+		PUINT8	pmkid_ptr = NULL;
+		UINT8 	pmkid_len = 0;
+
+
+		RTMPInsertRSNIE(&Key_Data[data_offset], 
+						&data_offset,
+						RSNIE, 
+						RSNIE_LEN, 
+						pmkid_ptr, 
+						pmkid_len);
+	}
+
+
+	// Encapsulate GTK 		
+	// Only for pairwise_msg3_WPA2 and group_msg1
+	if ((MsgType == EAPOL_PAIR_MSG_3 && bWPA2Capable) || (MsgType == EAPOL_GROUP_MSG_1))
+	{
+		UINT8	gtk_len;
+
+		/* Decide the GTK length */ 
+		if (GroupKeyWepStatus == Ndis802_11Encryption3Enabled)
+			gtk_len = LEN_AES_GTK;
+		else
+			gtk_len = LEN_TKIP_GTK;
+		
+		/* Insert GTK KDE format in WAP2 mode */
+		if (bWPA2Capable)
+		{
+			/* Construct the common KDE format */
+			WPA_ConstructKdeHdr(KDE_GTK, 2 + gtk_len, &Key_Data[data_offset]);
+			data_offset += sizeof(KDE_HDR);
+
+			// GTK KDE format - 802.11i-2004  Figure-43x
+	        Key_Data[data_offset] = (DefaultKeyIdx & 0x03);
+	        Key_Data[data_offset + 1] = 0x00;	// Reserved Byte
+	        data_offset += 2;
+		}
+
+		/* Fill in GTK */
+		NdisMoveMemory(&Key_Data[data_offset], GTK, gtk_len);
+		data_offset += gtk_len;
+
+
+		GTK_Included = TRUE;
+	}
+
+
+
+	/* If the Encrypted Key Data subfield (of the Key Information field) 
+	   is set, the entire Key Data field shall be encrypted. */
+	// This whole key-data field shall be encrypted if a GTK is included.
+	// Encrypt the data material in key data field with KEK
+	if (GTK_Included)
+	{
+		//hex_dump("GTK_Included", Key_Data, data_offset);
+	
+		if (
+			(keyDescVer == KEY_DESC_AES))
+		{
+			UCHAR 	remainder = 0;
+			UCHAR	pad_len = 0;			
+			UINT	wrap_len =0;
+
+			// Key Descriptor Version 2 or 3: AES key wrap, defined in IETF RFC 3394, 
+			// shall be used to encrypt the Key Data field using the KEK field from 
+			// the derived PTK.
+
+			// If the Key Data field uses the NIST AES key wrap, then the Key Data field 
+			// shall be padded before encrypting if the key data length is less than 16 
+			// octets or if it is not a multiple of 8. The padding consists of appending
+			// a single octet 0xdd followed by zero or more 0x00 octets. 
+			if ((remainder = data_offset & 0x07) != 0)
+			{
+				INT		i;
+			
+				pad_len = (8 - remainder);
+				Key_Data[data_offset] = 0xDD;
+				for (i = 1; i < pad_len; i++)
+					Key_Data[data_offset + i] = 0;
+
+				data_offset += pad_len;
+			}
+		
+			AES_Key_Wrap(Key_Data, (UINT) data_offset, 
+						 &pEntry->PTK[LEN_PTK_KCK], LEN_PTK_KEK, 
+						 eGTK, &wrap_len);	
+			data_offset = wrap_len;
+			
+		}
+		else
+		{
+			TKIP_GTK_KEY_WRAP(&pEntry->PTK[LEN_PTK_KCK], 
+								pMsg->KeyDesc.KeyIv,									
+								Key_Data, 
+								data_offset,
+								eGTK);
+		}
+
+		NdisMoveMemory(pMsg->KeyDesc.KeyData, eGTK, data_offset);
+	}
+	else
+	{
+		NdisMoveMemory(pMsg->KeyDesc.KeyData, Key_Data, data_offset);
+	}
+
+	// Update key data length field and total body length
+	SET_UINT16_TO_ARRARY(pMsg->KeyDesc.KeyDataLen, data_offset);
+	INC_UINT16_TO_ARRARY(pMsg->Body_Len, data_offset);
+
+	os_free_mem(NULL, mpool);
+
+}
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Calcaulate MIC. It is used during 4-ways handsharking.
+
+	Arguments:
+		pAd				-	pointer to our pAdapter context	
+    	PeerWepStatus	-	indicate the encryption type    			 
+		
+	Return Value:
+
+	Note:
+	 The EAPOL-Key MIC is a MIC of the EAPOL-Key frames, 
+	 from and including the EAPOL protocol version field 
+	 to and including the Key Data field, calculated with 
+	 the Key MIC field set to 0.
+		
+	========================================================================
+*/
+VOID	CalculateMIC(
+	IN	UCHAR			KeyDescVer,	
+	IN	UCHAR			*PTK,
+	OUT PEAPOL_PACKET   pMsg)
+{
+    UCHAR   *OutBuffer;
+	ULONG	FrameLen = 0;
+	UCHAR	mic[LEN_KEY_DESC_MIC];
+	UCHAR	digest[80];
+
+	// allocate memory for MIC calculation
+	os_alloc_mem(NULL, (PUCHAR *)&OutBuffer, 512);
+
+    if (OutBuffer == NULL)
+    {
+		DBGPRINT(RT_DEBUG_ERROR, ("!!!CalculateMIC: no memory!!!\n"));
+		return;
+    }
+		
+	// make a frame for calculating MIC.
+    MakeOutgoingFrame(OutBuffer,            	&FrameLen,
+                      CONV_ARRARY_TO_UINT16(pMsg->Body_Len) + 4,  	pMsg,
+                      END_OF_ARGS);
+
+	NdisZeroMemory(mic, sizeof(mic));
+			
+	// Calculate MIC
+    if (KeyDescVer == KEY_DESC_AES)
+ 	{
+		RT_HMAC_SHA1(PTK, LEN_PTK_KCK, OutBuffer,  FrameLen, digest, SHA1_DIGEST_SIZE);
+		NdisMoveMemory(mic, digest, LEN_KEY_DESC_MIC);
+	}
+	else
+	{
+		RT_HMAC_MD5(PTK, LEN_PTK_KCK, OutBuffer, FrameLen, mic, MD5_DIGEST_SIZE);
+	}
+
+	// store the calculated MIC
+	NdisMoveMemory(pMsg->KeyDesc.KeyMic, mic, LEN_KEY_DESC_MIC);
+
+	os_free_mem(NULL, OutBuffer);
+}
+
+UCHAR	RTMPExtractKeyIdxFromIVHdr(	
+	IN	PUCHAR			pIV,
+	IN	UINT8			CipherAlg)
+{
+	UCHAR	keyIdx = 0xFF;
+
+	/* extract the key index from IV header */
+	switch (CipherAlg)
+	{
+		case Ndis802_11Encryption1Enabled:
+		case Ndis802_11Encryption2Enabled:
+		case Ndis802_11Encryption3Enabled:
+			keyIdx = (*(pIV + 3) & 0xc0) >> 6;
+			break;
+
+	}
+
+	return keyIdx;
+
+}
+
+PCIPHER_KEY RTMPSwCipherKeySelection(
+	IN 	PRTMP_ADAPTER 		pAd,
+	IN	PUCHAR				pIV,
+	IN	RX_BLK				*pRxBlk,
+	IN	PMAC_TABLE_ENTRY 	pEntry)
+{
+	PCIPHER_KEY			pKey = NULL;	
+	UCHAR				keyIdx = 0;
+	UINT8				CipherAlg = Ndis802_11EncryptionDisabled;
+	PRT28XX_RXD_STRUC	pRxD = &(pRxBlk->RxD);	
+
+	if ((pEntry == NULL) ||
+		(RX_BLK_TEST_FLAG(pRxBlk, fRX_APCLI)) || 
+		(RX_BLK_TEST_FLAG(pRxBlk, fRX_WDS)) ||
+		(RX_BLK_TEST_FLAG(pRxBlk, fRX_MESH)))
+		return NULL;
+
+	if (pRxD->U2M)
+	{
+		CipherAlg = pEntry->WepStatus;
+	}
+	else
+	{
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		{				
+			CipherAlg = pAd->StaCfg.GroupCipher;
+		}	
+#endif // CONFIG_STA_SUPPORT //		
+	}
+
+	if ((keyIdx = RTMPExtractKeyIdxFromIVHdr(pIV, CipherAlg)) > 3)
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("%s : Invalid key index(%d) !!!\n", 
+								  __FUNCTION__, keyIdx));
+		return NULL;
+	}
+
+	if (CipherAlg == Ndis802_11Encryption1Enabled)
+	{
+		pKey = &pAd->SharedKey[pEntry->apidx][keyIdx];
+	}
+	else if ((CipherAlg == Ndis802_11Encryption2Enabled) ||
+  			 (CipherAlg == Ndis802_11Encryption3Enabled))
+	{
+		if (pRxD->U2M)
+			pKey = &pEntry->PairwiseKey;
+        else
+	    	pKey = &pAd->SharedKey[pEntry->apidx][keyIdx];
+	}
+
+	return pKey;
+	
+}
+
+/*
+	========================================================================
+
+	Routine Description:
+		Some received frames can't decrypt by Asic, so decrypt them by software.  
+
+	Arguments:
+		pAd				-	pointer to our pAdapter context	
+    	PeerWepStatus	-	indicate the encryption type    			 
+
+	Return Value:
+		NDIS_STATUS_SUCCESS		-	decryption successful	
+		NDIS_STATUS_FAILURE		-	decryption failure
+		
+	========================================================================
+*/
+NDIS_STATUS	RTMPSoftDecryptionAction(
+	IN	PRTMP_ADAPTER		pAd,
+	IN 		PUCHAR			pHdr,
+	IN 		UCHAR    		UserPriority,
+	IN 		PCIPHER_KEY		pKey,
+	INOUT 	PUCHAR			pData,
+	INOUT 	UINT16			*DataByteCnt)
+{		
+	switch (pKey->CipherAlg)
+    {    	        	        
+		case CIPHER_WEP64:
+		case CIPHER_WEP128:
+			/* handle WEP decryption */
+			if (RTMPSoftDecryptWEP(pAd, pKey, pData, &(*DataByteCnt)) == FALSE)		
+			{
+				DBGPRINT(RT_DEBUG_ERROR, ("ERROR : SW decrypt WEP data fails.\n"));	
+				// give up this frame
+				return NDIS_STATUS_FAILURE; 
+			}        											
+			break;
+			
+		case CIPHER_TKIP:
+			/* handle TKIP decryption */
+			if (RTMPSoftDecryptTKIP(pAd, pHdr, UserPriority, 
+								pKey, pData, &(*DataByteCnt)) == FALSE)
+			{
+				DBGPRINT(RT_DEBUG_ERROR, ("ERROR : SW decrypt TKIP data fails.\n"));
+				// give up this frame
+				return NDIS_STATUS_FAILURE; 
+			}        											
+			break;
+			
+		case CIPHER_AES:
+			/* handle AES decryption */
+			if (RTMPSoftDecryptCCMP(pAd, pHdr, pKey, pData, &(*DataByteCnt)) == FALSE)
+			{
+				DBGPRINT(RT_DEBUG_ERROR, ("ERROR : SW decrypt AES data fails.\n"));
+				// give up this frame
+				return NDIS_STATUS_FAILURE; 
+        	}
+			break;
+		default:
+			// give up this frame
+			return NDIS_STATUS_FAILURE;  
+			break;			
+	}	
+
+	return NDIS_STATUS_SUCCESS;
+		
+}
+
+VOID RTMPSoftConstructIVHdr(
+	IN	UCHAR			CipherAlg,
+	IN	UCHAR			key_id,
+	IN	PUCHAR			pTxIv,
+	OUT PUCHAR 			pHdrIv,
+	OUT	UINT8			*hdr_iv_len)
+{
+	*hdr_iv_len = 0;
+
+	if ((CipherAlg == CIPHER_WEP64) || (CipherAlg == CIPHER_WEP128))
+	{
+		/* Construct and insert 4-bytes WEP IV header to MPDU header */
+		RTMPConstructWEPIVHdr(key_id, pTxIv, pHdrIv);
+		*hdr_iv_len = LEN_WEP_IV_HDR;	
+	}
+	else if (CipherAlg == CIPHER_TKIP)
+		;
+	else if (CipherAlg == CIPHER_AES)
+	{
+		/* Construct and insert 8-bytes CCMP header to MPDU header */
+		RTMPConstructCCMPHdr(key_id, pTxIv, pHdrIv);	
+		*hdr_iv_len = LEN_CCMP_HDR;
+	}
+
+}
+
+VOID RTMPSoftEncryptionAction(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	UCHAR			CipherAlg,
+	IN	PUCHAR			pHdr,
+	IN	PUCHAR			pSrcBufData,
+	IN	UINT32			SrcBufLen,
+	IN	UCHAR			KeyIdx,
+	IN	PCIPHER_KEY		pKey,
+	OUT	UINT8			*ext_len)
+{
+	*ext_len = 0;
+
+	if ((CipherAlg == CIPHER_WEP64) || (CipherAlg == CIPHER_WEP128))
+	{
+		// Encrypt the MPDU data by software
+		RTMPSoftEncryptWEP(pAd, 
+						   pKey->TxTsc, 
+						   pKey, 
+						   pSrcBufData, 
+						   SrcBufLen);
+				
+		*ext_len = LEN_ICV;	
+	}
+	else if (CipherAlg == CIPHER_TKIP)
+		;
+	else if (CipherAlg == CIPHER_AES)
+	{						
+		// Encrypt the MPDU data by software
+		RTMPSoftEncryptCCMP(pAd, 
+							pHdr,
+							pKey->TxTsc, 
+							pKey->Key, 
+							pSrcBufData, 
+							SrcBufLen);
+				
+		*ext_len = LEN_CCMP_MIC;
+	}
+
+}
+
+PUINT8	WPA_ExtractSuiteFromRSNIE(
+		IN 	PUINT8	rsnie,
+		IN 	UINT	rsnie_len,
+		IN	UINT8	type,
+		OUT	UINT8	*count)
+{
+	PEID_STRUCT pEid;
+	INT			len;
+	PUINT8		pBuf;
+	INT			offset = 0;
+
+	pEid = (PEID_STRUCT)rsnie;
+	len = rsnie_len - 2;	// exclude IE and length
+	pBuf = (PUINT8)&pEid->Octet[0];
+	
+	// set default value
+	*count = 0;
+
+	// Check length
+	if ((len <= 0) || (pEid->Len != len))
+	{
+		DBGPRINT_ERR(("%s : The length is invalid\n", __FUNCTION__));
+		goto out;
+	}
+	
+	// Check WPA or WPA2
+	if (pEid->Eid == IE_WPA)
+	{
+		/* Check the length */
+		if (len < sizeof(RSNIE))
+		{
+			DBGPRINT(RT_DEBUG_ERROR, ("%s : The length is too short for WPA\n", __FUNCTION__));
+			goto out;
+		}
+		else
+		{
+			PRSNIE	pRsnie;
+			UINT16 	u_cnt;
+
+			pRsnie = (PRSNIE)pBuf;
+			u_cnt = cpu2le16(pRsnie->ucount);
+			offset = sizeof(RSNIE) + (LEN_OUI_SUITE * (u_cnt - 1));
+
+			if (len < offset)
+		{
+				DBGPRINT(RT_DEBUG_ERROR, ("%s : The expected lenght(%d) exceed the remaining length(%d) for WPA-RSN \n",
+											__FUNCTION__, offset, len));
+				goto out;
+		}
+			else
+			{
+		// Get the group cipher
+		if (type == GROUP_SUITE)
+		{
+			*count = 1;
+			return pRsnie->mcast;
+		}
+		// Get the pairwise cipher suite
+		else if (type == PAIRWISE_SUITE)
+		{			
+			DBGPRINT(RT_DEBUG_TRACE, ("%s : The count of pairwise cipher is %d\n",
+												__FUNCTION__, u_cnt));
+						*count = u_cnt;			
+			return pRsnie->ucast[0].oui;
+		}
+			}			
+		}
+	}
+	else if (pEid->Eid == IE_RSN)
+	{
+		if (len < sizeof(RSNIE2))
+		{
+			DBGPRINT(RT_DEBUG_ERROR, ("%s : The length is too short for WPA2\n", __FUNCTION__));
+			goto out;
+		}
+		else
+		{
+			PRSNIE2	pRsnie2;
+			UINT16 	u_cnt;
+
+			pRsnie2 = (PRSNIE2)pBuf;
+			u_cnt = cpu2le16(pRsnie2->ucount);
+			offset = sizeof(RSNIE2) + (LEN_OUI_SUITE * (u_cnt - 1));
+
+			if (len < offset)
+		{
+				DBGPRINT(RT_DEBUG_ERROR, ("%s : The expected lenght(%d) exceed the remaining length(%d) for WPA2-RSN \n",
+											__FUNCTION__, offset, len));
+				goto out;
+		}
+			else
+			{
+		// Get the group cipher
+		if (type == GROUP_SUITE)
+		{
+			*count = 1;
+					return pRsnie2->mcast;
+		}
+		// Get the pairwise cipher suite
+		else if (type == PAIRWISE_SUITE)
+		{			
+			DBGPRINT(RT_DEBUG_TRACE, ("%s : The count of pairwise cipher is %d\n",
+										__FUNCTION__, u_cnt));
+					*count = u_cnt;			
+					return pRsnie2->ucast[0].oui;
+				}
+			}
+		}
+	}
+	else
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("%s : Unknown IE (%d)\n", __FUNCTION__, pEid->Eid));
+		goto out;
+	}
+
+	// skip group cipher and pairwise cipher suite	
+	pBuf += offset;
+	len -= offset;
+
+	/* Ready to extract the AKM information and its count */
+	if (len < sizeof(RSNIE_AUTH))
+	{
+		DBGPRINT_ERR(("%s : The length of AKM of RSN is too short\n", __FUNCTION__));
+		goto out;
+	}
+	else
+	{
+		PRSNIE_AUTH	pAkm;
+		UINT16 		a_cnt;
+
+		/* pointer to AKM count */
+	pAkm = (PRSNIE_AUTH)pBuf;
+		a_cnt = cpu2le16(pAkm->acount);
+		offset = sizeof(RSNIE_AUTH) + (LEN_OUI_SUITE * (a_cnt - 1));
+
+		if (len < offset)
+	{
+			DBGPRINT(RT_DEBUG_ERROR, ("%s : The expected lenght(%d) exceed the remaining length(%d) for AKM \n",
+										__FUNCTION__, offset, len));
+			goto out;
+	}
+		else
+		{
+			/* Get the AKM suite */
+	if (type == AKM_SUITE)
+	{			
+		DBGPRINT(RT_DEBUG_TRACE, ("%s : The count of AKM is %d\n",
+											__FUNCTION__, a_cnt));
+				*count = a_cnt;			
+		return pAkm->auth[0].oui;
+	}
+		}
+	}
+
+	/* For WPA1, the remaining shall be ignored. */
+	if (pEid->Eid == IE_WPA)
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("%s : The remaining shall be ignored in WPA mode\n",
+									__FUNCTION__));
+		goto out;
+	}
+
+	/* skip the AKM capability */
+	pBuf += offset;
+	len -= offset;
+
+	/* Parse the RSN Capabilities */
+	if (len < sizeof(RSN_CAPABILITIES))
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("%s : The peer RSNIE doesn't include RSN-Cap\n", __FUNCTION__));
+		goto out;
+	}
+	else
+	{
+		/* Report the content of the RSN capabilities */
+		if (type == RSN_CAP_INFO)
+		{			
+			DBGPRINT(RT_DEBUG_TRACE, ("%s : Extract RSN Capabilities\n", __FUNCTION__));
+			*count = 1;	
+			return pBuf;
+		}
+
+		/* skip RSN capability (2-bytes) */		
+		offset = sizeof(RSN_CAPABILITIES);
+		pBuf += offset;
+		len -= offset;
+	}
+
+	/* Extract PMKID-list field */
+	if (len < sizeof(UINT16))
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("%s : The peer RSNIE doesn't include PMKID list Count\n", __FUNCTION__));
+		goto out;
+	}
+	else
+	{
+		UINT16 	p_count;
+		PUINT8	pPmkidList = NULL;
+		
+		NdisMoveMemory(&p_count, pBuf, sizeof(UINT16));
+		p_count = cpu2le16(p_count);
+
+		/* Get count of the PMKID list */
+		if (p_count > 0)
+		{		
+			PRSNIE_PMKID 	pRsnPmkid;
+
+			/* the expected length of PMKID-List field */
+			offset = sizeof(RSNIE_PMKID) + (LEN_PMKID * (p_count - 1));
+
+			/* sanity check about the length of PMKID-List field */
+			if (len < offset)
+			{
+				DBGPRINT(RT_DEBUG_ERROR, ("%s : The expected lenght(%d) exceed the remaining length(%d) in PMKID-field \n",
+											__FUNCTION__, offset, len));
+				goto out;
+			}
+
+			/* pointer to PMKID field */
+			pRsnPmkid = (PRSNIE_PMKID)pBuf;
+			pPmkidList = pRsnPmkid->pmkid[0].list;
+
+		}	
+		else
+		{
+			/* The PMKID field shall be without PMKID-List */
+			offset = sizeof(UINT16);
+			pPmkidList = NULL;
+		}
+
+
+		/* Extract PMKID list and its count */
+		if (type == PMKID_LIST)
+		{
+			*count = p_count;			
+			return pPmkidList;
+		}	
+
+		/* skip the PMKID field */
+		pBuf += offset;
+		len -= offset;
+
+	}
+
+
+out:
+	*count = 0;	
+	return NULL;
+	
+}	
+
+VOID WpaShowAllsuite(
+	IN 	PUINT8	rsnie,
+	IN 	UINT	rsnie_len)
+{
+	PUINT8 pSuite = NULL;
+	UINT8 count;
+
+	hex_dump("RSNIE", rsnie, rsnie_len);
+	
+	// group cipher
+	if ((pSuite = WPA_ExtractSuiteFromRSNIE(rsnie, rsnie_len, GROUP_SUITE, &count)) != NULL)
+	{			
+		hex_dump("group cipher", pSuite, 4*count);
+	}
+
+	// pairwise cipher
+	if ((pSuite = WPA_ExtractSuiteFromRSNIE(rsnie, rsnie_len, PAIRWISE_SUITE, &count)) != NULL)
+	{			
+		hex_dump("pairwise cipher", pSuite, 4*count);
+	}
+
+	// AKM
+	if ((pSuite = WPA_ExtractSuiteFromRSNIE(rsnie, rsnie_len, AKM_SUITE, &count)) != NULL)
+	{			
+		hex_dump("AKM suite", pSuite, 4*count);
+	}
+
+	// PMKID
+	if ((pSuite = WPA_ExtractSuiteFromRSNIE(rsnie, rsnie_len, PMKID_LIST, &count)) != NULL)
+	{			
+		hex_dump("PMKID", pSuite, LEN_PMKID);
+	}
+
+}	
+
+VOID RTMPInsertRSNIE(
+	IN PUCHAR pFrameBuf,
+	OUT PULONG pFrameLen,
+	IN PUINT8 rsnie_ptr,
+	IN UINT8  rsnie_len,
+	IN PUINT8 pmkid_ptr,
+	IN UINT8  pmkid_len)
+{
+	PUCHAR	pTmpBuf;
+	ULONG 	TempLen = 0;
+	UINT8 	extra_len = 0;
+	UINT16 	pmk_count = 0;
+	UCHAR	ie_num;
+	UINT8 	total_len = 0;	
+    UCHAR	WPA2_OUI[3]={0x00,0x0F,0xAC};
+
+	pTmpBuf = pFrameBuf;
+
+	/* PMKID-List Must larger than 0 and the multiple of 16. */
+	if (pmkid_len > 0 && ((pmkid_len & 0x0f) == 0))
+	{		
+		extra_len = sizeof(UINT16) + pmkid_len;
+
+		pmk_count = (pmkid_len >> 4);
+		pmk_count = cpu2le16(pmk_count);
+	}
+	else
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("%s : The length is PMKID-List is invalid (%d), so don't insert it.\n",
+									__FUNCTION__, pmkid_len));
+	}
+
+	if (rsnie_len != 0)
+	{	
+		ie_num = IE_WPA;
+		total_len = rsnie_len;
+	
+		if (NdisEqualMemory(rsnie_ptr + 2, WPA2_OUI, sizeof(WPA2_OUI)))
+		{	
+			ie_num = IE_RSN;
+			total_len += extra_len;
+		}
+
+		/* construct RSNIE body */
+		MakeOutgoingFrame(pTmpBuf,			&TempLen,
+					  	  1,				&ie_num,
+					  	  1,				&total_len,
+					  	  rsnie_len,		rsnie_ptr,
+					  	  END_OF_ARGS);
+
+		pTmpBuf += TempLen;
+		*pFrameLen = *pFrameLen + TempLen;
+
+		if (ie_num == IE_RSN)
+		{
+			/* Insert PMKID-List field */
+			if (extra_len > 0)
+			{
+				MakeOutgoingFrame(pTmpBuf,					&TempLen,
+							  	  2,						&pmk_count,
+							  	  pmkid_len,				pmkid_ptr,
+							  	  END_OF_ARGS);
+			
+				pTmpBuf += TempLen;
+				*pFrameLen = *pFrameLen + TempLen;
+			}								
+		}
+	}
+		
+	return; 
+}
+
+
+VOID WPAInstallPairwiseKey(
+	PRTMP_ADAPTER		pAd,
+	UINT8				BssIdx,
+	PMAC_TABLE_ENTRY	pEntry,
+	BOOLEAN				bAE)
+{
+    NdisZeroMemory(&pEntry->PairwiseKey, sizeof(CIPHER_KEY));   
+
+	/* Assign the pairwise cipher algorithm	*/
+    if (pEntry->WepStatus == Ndis802_11Encryption2Enabled)
+        pEntry->PairwiseKey.CipherAlg = CIPHER_TKIP;
+    else if (pEntry->WepStatus == Ndis802_11Encryption3Enabled)
+        pEntry->PairwiseKey.CipherAlg = CIPHER_AES;
+	else
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("%s : fails (wcid-%d)\n", 
+										__FUNCTION__, pEntry->Aid));	
+		return;
+	}	
+
+	/* Assign key material and its length */
+    pEntry->PairwiseKey.KeyLen = LEN_TK;
+    NdisMoveMemory(pEntry->PairwiseKey.Key, &pEntry->PTK[OFFSET_OF_PTK_TK], LEN_TK);
+	if (pEntry->PairwiseKey.CipherAlg == CIPHER_TKIP)
+	{
+		if (bAE)
+		{
+		    NdisMoveMemory(pEntry->PairwiseKey.TxMic, &pEntry->PTK[OFFSET_OF_AP_TKIP_TX_MIC], LEN_TKIP_MIC);
+		    NdisMoveMemory(pEntry->PairwiseKey.RxMic, &pEntry->PTK[OFFSET_OF_AP_TKIP_RX_MIC], LEN_TKIP_MIC);
+		}
+		else
+		{
+		    NdisMoveMemory(pEntry->PairwiseKey.TxMic, &pEntry->PTK[OFFSET_OF_STA_TKIP_TX_MIC], LEN_TKIP_MIC);
+		    NdisMoveMemory(pEntry->PairwiseKey.RxMic, &pEntry->PTK[OFFSET_OF_STA_TKIP_RX_MIC], LEN_TKIP_MIC);
+		}
+	}
+
+#ifdef SOFT_ENCRYPT
+	if (CLIENT_STATUS_TEST_FLAG(pEntry, fCLIENT_STATUS_SOFTWARE_ENCRYPT))
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("===> SW_ENC ON(wcid=%d) \n", pEntry->Aid));
+		NdisZeroMemory(pEntry->PairwiseKey.TxTsc, LEN_WPA_TSC);
+		NdisZeroMemory(pEntry->PairwiseKey.RxTsc, LEN_WPA_TSC);		
+	}	
+	else
+#endif // SOFT_ENCRYPT //		
+	{
+		/* Add Pair-wise key to Asic */
+	    AsicAddPairwiseKeyEntry(
+	        pAd, 
+	        (UCHAR)pEntry->Aid, 
+	        &pEntry->PairwiseKey);
+
+		RTMPSetWcidSecurityInfo(pAd, 
+								BssIdx, 
+								0, 
+								pEntry->PairwiseKey.CipherAlg,
+								(UCHAR)pEntry->Aid, 
+								PAIRWISEKEYTABLE);		
+	}
+	
+}
+
+VOID WPAInstallSharedKey(
+	PRTMP_ADAPTER		pAd,
+	UINT8				GroupCipher,
+	UINT8				BssIdx,
+	UINT8				KeyIdx,
+	UINT8				Wcid,
+	BOOLEAN				bAE,
+	PUINT8				pGtk)
+{
+	PCIPHER_KEY 	pSharedKey;
+	
+	if (BssIdx >= MAX_MBSSID_NUM)
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("%s : The BSS-index(%d) is out of range for MBSSID link. \n", 
+									__FUNCTION__, BssIdx));	
+		return;
+	}
+
+	pSharedKey = &pAd->SharedKey[BssIdx][KeyIdx];
+	NdisZeroMemory(pSharedKey, sizeof(CIPHER_KEY));
+	
+	if (GroupCipher == Ndis802_11Encryption2Enabled)
+		pSharedKey->CipherAlg = CIPHER_TKIP;
+	else if (GroupCipher == Ndis802_11Encryption3Enabled)
+		pSharedKey->CipherAlg = CIPHER_AES;
+	else
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("%s : fails (IF/ra%d) \n", 
+										__FUNCTION__, BssIdx));	
+		return;
+	}
+			
+	pSharedKey->KeyLen = LEN_TK;
+	NdisMoveMemory(pSharedKey->Key, pGtk, LEN_TK);
+	if (pSharedKey->CipherAlg == CIPHER_TKIP)
+	{
+		if (bAE)
+		{
+			NdisMoveMemory(pSharedKey->TxMic, pGtk + 16, LEN_TKIP_MIC);
+			NdisMoveMemory(pSharedKey->RxMic, pGtk + 24, LEN_TKIP_MIC);            
+		}
+		else
+		{
+			NdisMoveMemory(pSharedKey->TxMic, pGtk + 24, LEN_TKIP_MIC);
+			NdisMoveMemory(pSharedKey->RxMic, pGtk + 16, LEN_TKIP_MIC);            
+		}
+	}
+    
+	/* Update group key table(0x6C00) and group key mode(0x7000) */
+    AsicAddSharedKeyEntry(
+				pAd, 
+				BssIdx, 
+				KeyIdx, 
+				pSharedKey);
+
+	/* When Wcid isn't zero, it means that this is a Authenticator Role. 
+	   Only Authenticator entity needs to set HW IE/EIV table (0x6000)
+	   and WCID attribute table (0x6800) for group key. */
+	if (Wcid != 0)
+	{	
+		RTMPSetWcidSecurityInfo(pAd, 
+								BssIdx, 
+								KeyIdx, 
+								pSharedKey->CipherAlg,
+								Wcid, 
+								SHAREDKEYTABLE);
+	}
+}
+
+VOID RTMPSetWcidSecurityInfo(
+	PRTMP_ADAPTER		pAd,
+	UINT8				BssIdx,
+	UINT8				KeyIdx,
+	UINT8				CipherAlg,
+	UINT8				Wcid,
+	UINT8				KeyTabFlag)
+{
+	UINT32			IV = 0;
+	UINT8			IV_KEYID = 0;
+	
+	/* Prepare initial IV value */
+	if (CipherAlg == CIPHER_WEP64 || CipherAlg == CIPHER_WEP128)
+	{
+		INT	i;	
+		UCHAR	TxTsc[LEN_WEP_TSC];
+
+		/* Generate 3-bytes IV randomly for encryption using */						
+		for(i = 0; i < LEN_WEP_TSC; i++)
+			TxTsc[i] = RandomByte(pAd);
+
+		/* Update HW IVEIV table */
+		IV_KEYID = (KeyIdx << 6);
+		IV = (IV_KEYID << 24) | 
+			 (TxTsc[2] << 16) |
+			 (TxTsc[1] << 8) |
+			 (TxTsc[0]);	
+	}
+	else if (CipherAlg == CIPHER_TKIP || CipherAlg == CIPHER_AES)
+	{
+		/* Set IVEIV as 1 in Asic -
+		In IEEE 802.11-2007 8.3.3.4.3 described :
+		The PN shall be implemented as a 48-bit monotonically incrementing
+		non-negative integer, initialized to 1 when the corresponding 
+		temporal key is initialized or refreshed. */	
+		IV_KEYID = (KeyIdx << 6) | 0x20;
+		IV = (IV_KEYID << 24) | 1;
+	}
+	else
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("%s : Unsupport cipher Alg (%d) for Wcid-%d \n", 
+										__FUNCTION__, CipherAlg, Wcid));
+		return;
+	}
+	/* Update WCID IV/EIV table */
+	AsicUpdateWCIDIVEIV(pAd, Wcid, IV, 0);
+		
+	/* Update WCID attribute entry */
+	AsicUpdateWcidAttributeEntry(pAd, 
+							BssIdx, 
+							KeyIdx, 
+							CipherAlg,
+							Wcid,
+							KeyTabFlag);
+
+}
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/crypt_aes.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/crypt_aes.c
new file mode 100644
index 000000000..6098ac168
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/crypt_aes.c
@@ -0,0 +1,3504 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************/
+
+
+#include "crypt_aes.h"
+
+
+#define assert(a)   //ASSERT(a)
+
+#undef u32
+#define	u32 unsigned int
+//typedef unsigned int u32;
+
+static const u32 Te0[256] = {
+    0xc66363a5U, 0xf87c7c84U, 0xee777799U, 0xf67b7b8dU,
+    0xfff2f20dU, 0xd66b6bbdU, 0xde6f6fb1U, 0x91c5c554U,
+    0x60303050U, 0x02010103U, 0xce6767a9U, 0x562b2b7dU,
+    0xe7fefe19U, 0xb5d7d762U, 0x4dababe6U, 0xec76769aU,
+    0x8fcaca45U, 0x1f82829dU, 0x89c9c940U, 0xfa7d7d87U,
+    0xeffafa15U, 0xb25959ebU, 0x8e4747c9U, 0xfbf0f00bU,
+    0x41adadecU, 0xb3d4d467U, 0x5fa2a2fdU, 0x45afafeaU,
+    0x239c9cbfU, 0x53a4a4f7U, 0xe4727296U, 0x9bc0c05bU,
+    0x75b7b7c2U, 0xe1fdfd1cU, 0x3d9393aeU, 0x4c26266aU,
+    0x6c36365aU, 0x7e3f3f41U, 0xf5f7f702U, 0x83cccc4fU,
+    0x6834345cU, 0x51a5a5f4U, 0xd1e5e534U, 0xf9f1f108U,
+    0xe2717193U, 0xabd8d873U, 0x62313153U, 0x2a15153fU,
+    0x0804040cU, 0x95c7c752U, 0x46232365U, 0x9dc3c35eU,
+    0x30181828U, 0x379696a1U, 0x0a05050fU, 0x2f9a9ab5U,
+    0x0e070709U, 0x24121236U, 0x1b80809bU, 0xdfe2e23dU,
+    0xcdebeb26U, 0x4e272769U, 0x7fb2b2cdU, 0xea75759fU,
+    0x1209091bU, 0x1d83839eU, 0x582c2c74U, 0x341a1a2eU,
+    0x361b1b2dU, 0xdc6e6eb2U, 0xb45a5aeeU, 0x5ba0a0fbU,
+    0xa45252f6U, 0x763b3b4dU, 0xb7d6d661U, 0x7db3b3ceU,
+    0x5229297bU, 0xdde3e33eU, 0x5e2f2f71U, 0x13848497U,
+    0xa65353f5U, 0xb9d1d168U, 0x00000000U, 0xc1eded2cU,
+    0x40202060U, 0xe3fcfc1fU, 0x79b1b1c8U, 0xb65b5bedU,
+    0xd46a6abeU, 0x8dcbcb46U, 0x67bebed9U, 0x7239394bU,
+    0x944a4adeU, 0x984c4cd4U, 0xb05858e8U, 0x85cfcf4aU,
+    0xbbd0d06bU, 0xc5efef2aU, 0x4faaaae5U, 0xedfbfb16U,
+    0x864343c5U, 0x9a4d4dd7U, 0x66333355U, 0x11858594U,
+    0x8a4545cfU, 0xe9f9f910U, 0x04020206U, 0xfe7f7f81U,
+    0xa05050f0U, 0x783c3c44U, 0x259f9fbaU, 0x4ba8a8e3U,
+    0xa25151f3U, 0x5da3a3feU, 0x804040c0U, 0x058f8f8aU,
+    0x3f9292adU, 0x219d9dbcU, 0x70383848U, 0xf1f5f504U,
+    0x63bcbcdfU, 0x77b6b6c1U, 0xafdada75U, 0x42212163U,
+    0x20101030U, 0xe5ffff1aU, 0xfdf3f30eU, 0xbfd2d26dU,
+    0x81cdcd4cU, 0x180c0c14U, 0x26131335U, 0xc3ecec2fU,
+    0xbe5f5fe1U, 0x359797a2U, 0x884444ccU, 0x2e171739U,
+    0x93c4c457U, 0x55a7a7f2U, 0xfc7e7e82U, 0x7a3d3d47U,
+    0xc86464acU, 0xba5d5de7U, 0x3219192bU, 0xe6737395U,
+    0xc06060a0U, 0x19818198U, 0x9e4f4fd1U, 0xa3dcdc7fU,
+    0x44222266U, 0x542a2a7eU, 0x3b9090abU, 0x0b888883U,
+    0x8c4646caU, 0xc7eeee29U, 0x6bb8b8d3U, 0x2814143cU,
+    0xa7dede79U, 0xbc5e5ee2U, 0x160b0b1dU, 0xaddbdb76U,
+    0xdbe0e03bU, 0x64323256U, 0x743a3a4eU, 0x140a0a1eU,
+    0x924949dbU, 0x0c06060aU, 0x4824246cU, 0xb85c5ce4U,
+    0x9fc2c25dU, 0xbdd3d36eU, 0x43acacefU, 0xc46262a6U,
+    0x399191a8U, 0x319595a4U, 0xd3e4e437U, 0xf279798bU,
+    0xd5e7e732U, 0x8bc8c843U, 0x6e373759U, 0xda6d6db7U,
+    0x018d8d8cU, 0xb1d5d564U, 0x9c4e4ed2U, 0x49a9a9e0U,
+    0xd86c6cb4U, 0xac5656faU, 0xf3f4f407U, 0xcfeaea25U,
+    0xca6565afU, 0xf47a7a8eU, 0x47aeaee9U, 0x10080818U,
+    0x6fbabad5U, 0xf0787888U, 0x4a25256fU, 0x5c2e2e72U,
+    0x381c1c24U, 0x57a6a6f1U, 0x73b4b4c7U, 0x97c6c651U,
+    0xcbe8e823U, 0xa1dddd7cU, 0xe874749cU, 0x3e1f1f21U,
+    0x964b4bddU, 0x61bdbddcU, 0x0d8b8b86U, 0x0f8a8a85U,
+    0xe0707090U, 0x7c3e3e42U, 0x71b5b5c4U, 0xcc6666aaU,
+    0x904848d8U, 0x06030305U, 0xf7f6f601U, 0x1c0e0e12U,
+    0xc26161a3U, 0x6a35355fU, 0xae5757f9U, 0x69b9b9d0U,
+    0x17868691U, 0x99c1c158U, 0x3a1d1d27U, 0x279e9eb9U,
+    0xd9e1e138U, 0xebf8f813U, 0x2b9898b3U, 0x22111133U,
+    0xd26969bbU, 0xa9d9d970U, 0x078e8e89U, 0x339494a7U,
+    0x2d9b9bb6U, 0x3c1e1e22U, 0x15878792U, 0xc9e9e920U,
+    0x87cece49U, 0xaa5555ffU, 0x50282878U, 0xa5dfdf7aU,
+    0x038c8c8fU, 0x59a1a1f8U, 0x09898980U, 0x1a0d0d17U,
+    0x65bfbfdaU, 0xd7e6e631U, 0x844242c6U, 0xd06868b8U,
+    0x824141c3U, 0x299999b0U, 0x5a2d2d77U, 0x1e0f0f11U,
+    0x7bb0b0cbU, 0xa85454fcU, 0x6dbbbbd6U, 0x2c16163aU,
+};
+static const u32 Te1[256] = {
+    0xa5c66363U, 0x84f87c7cU, 0x99ee7777U, 0x8df67b7bU,
+    0x0dfff2f2U, 0xbdd66b6bU, 0xb1de6f6fU, 0x5491c5c5U,
+    0x50603030U, 0x03020101U, 0xa9ce6767U, 0x7d562b2bU,
+    0x19e7fefeU, 0x62b5d7d7U, 0xe64dababU, 0x9aec7676U,
+    0x458fcacaU, 0x9d1f8282U, 0x4089c9c9U, 0x87fa7d7dU,
+    0x15effafaU, 0xebb25959U, 0xc98e4747U, 0x0bfbf0f0U,
+    0xec41adadU, 0x67b3d4d4U, 0xfd5fa2a2U, 0xea45afafU,
+    0xbf239c9cU, 0xf753a4a4U, 0x96e47272U, 0x5b9bc0c0U,
+    0xc275b7b7U, 0x1ce1fdfdU, 0xae3d9393U, 0x6a4c2626U,
+    0x5a6c3636U, 0x417e3f3fU, 0x02f5f7f7U, 0x4f83ccccU,
+    0x5c683434U, 0xf451a5a5U, 0x34d1e5e5U, 0x08f9f1f1U,
+    0x93e27171U, 0x73abd8d8U, 0x53623131U, 0x3f2a1515U,
+    0x0c080404U, 0x5295c7c7U, 0x65462323U, 0x5e9dc3c3U,
+    0x28301818U, 0xa1379696U, 0x0f0a0505U, 0xb52f9a9aU,
+    0x090e0707U, 0x36241212U, 0x9b1b8080U, 0x3ddfe2e2U,
+    0x26cdebebU, 0x694e2727U, 0xcd7fb2b2U, 0x9fea7575U,
+    0x1b120909U, 0x9e1d8383U, 0x74582c2cU, 0x2e341a1aU,
+    0x2d361b1bU, 0xb2dc6e6eU, 0xeeb45a5aU, 0xfb5ba0a0U,
+    0xf6a45252U, 0x4d763b3bU, 0x61b7d6d6U, 0xce7db3b3U,
+    0x7b522929U, 0x3edde3e3U, 0x715e2f2fU, 0x97138484U,
+    0xf5a65353U, 0x68b9d1d1U, 0x00000000U, 0x2cc1ededU,
+    0x60402020U, 0x1fe3fcfcU, 0xc879b1b1U, 0xedb65b5bU,
+    0xbed46a6aU, 0x468dcbcbU, 0xd967bebeU, 0x4b723939U,
+    0xde944a4aU, 0xd4984c4cU, 0xe8b05858U, 0x4a85cfcfU,
+    0x6bbbd0d0U, 0x2ac5efefU, 0xe54faaaaU, 0x16edfbfbU,
+    0xc5864343U, 0xd79a4d4dU, 0x55663333U, 0x94118585U,
+    0xcf8a4545U, 0x10e9f9f9U, 0x06040202U, 0x81fe7f7fU,
+    0xf0a05050U, 0x44783c3cU, 0xba259f9fU, 0xe34ba8a8U,
+    0xf3a25151U, 0xfe5da3a3U, 0xc0804040U, 0x8a058f8fU,
+    0xad3f9292U, 0xbc219d9dU, 0x48703838U, 0x04f1f5f5U,
+    0xdf63bcbcU, 0xc177b6b6U, 0x75afdadaU, 0x63422121U,
+    0x30201010U, 0x1ae5ffffU, 0x0efdf3f3U, 0x6dbfd2d2U,
+    0x4c81cdcdU, 0x14180c0cU, 0x35261313U, 0x2fc3ececU,
+    0xe1be5f5fU, 0xa2359797U, 0xcc884444U, 0x392e1717U,
+    0x5793c4c4U, 0xf255a7a7U, 0x82fc7e7eU, 0x477a3d3dU,
+    0xacc86464U, 0xe7ba5d5dU, 0x2b321919U, 0x95e67373U,
+    0xa0c06060U, 0x98198181U, 0xd19e4f4fU, 0x7fa3dcdcU,
+    0x66442222U, 0x7e542a2aU, 0xab3b9090U, 0x830b8888U,
+    0xca8c4646U, 0x29c7eeeeU, 0xd36bb8b8U, 0x3c281414U,
+    0x79a7dedeU, 0xe2bc5e5eU, 0x1d160b0bU, 0x76addbdbU,
+    0x3bdbe0e0U, 0x56643232U, 0x4e743a3aU, 0x1e140a0aU,
+    0xdb924949U, 0x0a0c0606U, 0x6c482424U, 0xe4b85c5cU,
+    0x5d9fc2c2U, 0x6ebdd3d3U, 0xef43acacU, 0xa6c46262U,
+    0xa8399191U, 0xa4319595U, 0x37d3e4e4U, 0x8bf27979U,
+    0x32d5e7e7U, 0x438bc8c8U, 0x596e3737U, 0xb7da6d6dU,
+    0x8c018d8dU, 0x64b1d5d5U, 0xd29c4e4eU, 0xe049a9a9U,
+    0xb4d86c6cU, 0xfaac5656U, 0x07f3f4f4U, 0x25cfeaeaU,
+    0xafca6565U, 0x8ef47a7aU, 0xe947aeaeU, 0x18100808U,
+    0xd56fbabaU, 0x88f07878U, 0x6f4a2525U, 0x725c2e2eU,
+    0x24381c1cU, 0xf157a6a6U, 0xc773b4b4U, 0x5197c6c6U,
+    0x23cbe8e8U, 0x7ca1ddddU, 0x9ce87474U, 0x213e1f1fU,
+    0xdd964b4bU, 0xdc61bdbdU, 0x860d8b8bU, 0x850f8a8aU,
+    0x90e07070U, 0x427c3e3eU, 0xc471b5b5U, 0xaacc6666U,
+    0xd8904848U, 0x05060303U, 0x01f7f6f6U, 0x121c0e0eU,
+    0xa3c26161U, 0x5f6a3535U, 0xf9ae5757U, 0xd069b9b9U,
+    0x91178686U, 0x5899c1c1U, 0x273a1d1dU, 0xb9279e9eU,
+    0x38d9e1e1U, 0x13ebf8f8U, 0xb32b9898U, 0x33221111U,
+    0xbbd26969U, 0x70a9d9d9U, 0x89078e8eU, 0xa7339494U,
+    0xb62d9b9bU, 0x223c1e1eU, 0x92158787U, 0x20c9e9e9U,
+    0x4987ceceU, 0xffaa5555U, 0x78502828U, 0x7aa5dfdfU,
+    0x8f038c8cU, 0xf859a1a1U, 0x80098989U, 0x171a0d0dU,
+    0xda65bfbfU, 0x31d7e6e6U, 0xc6844242U, 0xb8d06868U,
+    0xc3824141U, 0xb0299999U, 0x775a2d2dU, 0x111e0f0fU,
+    0xcb7bb0b0U, 0xfca85454U, 0xd66dbbbbU, 0x3a2c1616U,
+};
+static const u32 Te2[256] = {
+    0x63a5c663U, 0x7c84f87cU, 0x7799ee77U, 0x7b8df67bU,
+    0xf20dfff2U, 0x6bbdd66bU, 0x6fb1de6fU, 0xc55491c5U,
+    0x30506030U, 0x01030201U, 0x67a9ce67U, 0x2b7d562bU,
+    0xfe19e7feU, 0xd762b5d7U, 0xabe64dabU, 0x769aec76U,
+    0xca458fcaU, 0x829d1f82U, 0xc94089c9U, 0x7d87fa7dU,
+    0xfa15effaU, 0x59ebb259U, 0x47c98e47U, 0xf00bfbf0U,
+    0xadec41adU, 0xd467b3d4U, 0xa2fd5fa2U, 0xafea45afU,
+    0x9cbf239cU, 0xa4f753a4U, 0x7296e472U, 0xc05b9bc0U,
+    0xb7c275b7U, 0xfd1ce1fdU, 0x93ae3d93U, 0x266a4c26U,
+    0x365a6c36U, 0x3f417e3fU, 0xf702f5f7U, 0xcc4f83ccU,
+    0x345c6834U, 0xa5f451a5U, 0xe534d1e5U, 0xf108f9f1U,
+    0x7193e271U, 0xd873abd8U, 0x31536231U, 0x153f2a15U,
+    0x040c0804U, 0xc75295c7U, 0x23654623U, 0xc35e9dc3U,
+    0x18283018U, 0x96a13796U, 0x050f0a05U, 0x9ab52f9aU,
+    0x07090e07U, 0x12362412U, 0x809b1b80U, 0xe23ddfe2U,
+    0xeb26cdebU, 0x27694e27U, 0xb2cd7fb2U, 0x759fea75U,
+    0x091b1209U, 0x839e1d83U, 0x2c74582cU, 0x1a2e341aU,
+    0x1b2d361bU, 0x6eb2dc6eU, 0x5aeeb45aU, 0xa0fb5ba0U,
+    0x52f6a452U, 0x3b4d763bU, 0xd661b7d6U, 0xb3ce7db3U,
+    0x297b5229U, 0xe33edde3U, 0x2f715e2fU, 0x84971384U,
+    0x53f5a653U, 0xd168b9d1U, 0x00000000U, 0xed2cc1edU,
+    0x20604020U, 0xfc1fe3fcU, 0xb1c879b1U, 0x5bedb65bU,
+    0x6abed46aU, 0xcb468dcbU, 0xbed967beU, 0x394b7239U,
+    0x4ade944aU, 0x4cd4984cU, 0x58e8b058U, 0xcf4a85cfU,
+    0xd06bbbd0U, 0xef2ac5efU, 0xaae54faaU, 0xfb16edfbU,
+    0x43c58643U, 0x4dd79a4dU, 0x33556633U, 0x85941185U,
+    0x45cf8a45U, 0xf910e9f9U, 0x02060402U, 0x7f81fe7fU,
+    0x50f0a050U, 0x3c44783cU, 0x9fba259fU, 0xa8e34ba8U,
+    0x51f3a251U, 0xa3fe5da3U, 0x40c08040U, 0x8f8a058fU,
+    0x92ad3f92U, 0x9dbc219dU, 0x38487038U, 0xf504f1f5U,
+    0xbcdf63bcU, 0xb6c177b6U, 0xda75afdaU, 0x21634221U,
+    0x10302010U, 0xff1ae5ffU, 0xf30efdf3U, 0xd26dbfd2U,
+    0xcd4c81cdU, 0x0c14180cU, 0x13352613U, 0xec2fc3ecU,
+    0x5fe1be5fU, 0x97a23597U, 0x44cc8844U, 0x17392e17U,
+    0xc45793c4U, 0xa7f255a7U, 0x7e82fc7eU, 0x3d477a3dU,
+    0x64acc864U, 0x5de7ba5dU, 0x192b3219U, 0x7395e673U,
+    0x60a0c060U, 0x81981981U, 0x4fd19e4fU, 0xdc7fa3dcU,
+    0x22664422U, 0x2a7e542aU, 0x90ab3b90U, 0x88830b88U,
+    0x46ca8c46U, 0xee29c7eeU, 0xb8d36bb8U, 0x143c2814U,
+    0xde79a7deU, 0x5ee2bc5eU, 0x0b1d160bU, 0xdb76addbU,
+    0xe03bdbe0U, 0x32566432U, 0x3a4e743aU, 0x0a1e140aU,
+    0x49db9249U, 0x060a0c06U, 0x246c4824U, 0x5ce4b85cU,
+    0xc25d9fc2U, 0xd36ebdd3U, 0xacef43acU, 0x62a6c462U,
+    0x91a83991U, 0x95a43195U, 0xe437d3e4U, 0x798bf279U,
+    0xe732d5e7U, 0xc8438bc8U, 0x37596e37U, 0x6db7da6dU,
+    0x8d8c018dU, 0xd564b1d5U, 0x4ed29c4eU, 0xa9e049a9U,
+    0x6cb4d86cU, 0x56faac56U, 0xf407f3f4U, 0xea25cfeaU,
+    0x65afca65U, 0x7a8ef47aU, 0xaee947aeU, 0x08181008U,
+    0xbad56fbaU, 0x7888f078U, 0x256f4a25U, 0x2e725c2eU,
+    0x1c24381cU, 0xa6f157a6U, 0xb4c773b4U, 0xc65197c6U,
+    0xe823cbe8U, 0xdd7ca1ddU, 0x749ce874U, 0x1f213e1fU,
+    0x4bdd964bU, 0xbddc61bdU, 0x8b860d8bU, 0x8a850f8aU,
+    0x7090e070U, 0x3e427c3eU, 0xb5c471b5U, 0x66aacc66U,
+    0x48d89048U, 0x03050603U, 0xf601f7f6U, 0x0e121c0eU,
+    0x61a3c261U, 0x355f6a35U, 0x57f9ae57U, 0xb9d069b9U,
+    0x86911786U, 0xc15899c1U, 0x1d273a1dU, 0x9eb9279eU,
+    0xe138d9e1U, 0xf813ebf8U, 0x98b32b98U, 0x11332211U,
+    0x69bbd269U, 0xd970a9d9U, 0x8e89078eU, 0x94a73394U,
+    0x9bb62d9bU, 0x1e223c1eU, 0x87921587U, 0xe920c9e9U,
+    0xce4987ceU, 0x55ffaa55U, 0x28785028U, 0xdf7aa5dfU,
+    0x8c8f038cU, 0xa1f859a1U, 0x89800989U, 0x0d171a0dU,
+    0xbfda65bfU, 0xe631d7e6U, 0x42c68442U, 0x68b8d068U,
+    0x41c38241U, 0x99b02999U, 0x2d775a2dU, 0x0f111e0fU,
+    0xb0cb7bb0U, 0x54fca854U, 0xbbd66dbbU, 0x163a2c16U,
+};
+static const u32 Te3[256] = {
+    0x6363a5c6U, 0x7c7c84f8U, 0x777799eeU, 0x7b7b8df6U,
+    0xf2f20dffU, 0x6b6bbdd6U, 0x6f6fb1deU, 0xc5c55491U,
+    0x30305060U, 0x01010302U, 0x6767a9ceU, 0x2b2b7d56U,
+    0xfefe19e7U, 0xd7d762b5U, 0xababe64dU, 0x76769aecU,
+    0xcaca458fU, 0x82829d1fU, 0xc9c94089U, 0x7d7d87faU,
+    0xfafa15efU, 0x5959ebb2U, 0x4747c98eU, 0xf0f00bfbU,
+    0xadadec41U, 0xd4d467b3U, 0xa2a2fd5fU, 0xafafea45U,
+    0x9c9cbf23U, 0xa4a4f753U, 0x727296e4U, 0xc0c05b9bU,
+    0xb7b7c275U, 0xfdfd1ce1U, 0x9393ae3dU, 0x26266a4cU,
+    0x36365a6cU, 0x3f3f417eU, 0xf7f702f5U, 0xcccc4f83U,
+    0x34345c68U, 0xa5a5f451U, 0xe5e534d1U, 0xf1f108f9U,
+    0x717193e2U, 0xd8d873abU, 0x31315362U, 0x15153f2aU,
+    0x04040c08U, 0xc7c75295U, 0x23236546U, 0xc3c35e9dU,
+    0x18182830U, 0x9696a137U, 0x05050f0aU, 0x9a9ab52fU,
+    0x0707090eU, 0x12123624U, 0x80809b1bU, 0xe2e23ddfU,
+    0xebeb26cdU, 0x2727694eU, 0xb2b2cd7fU, 0x75759feaU,
+    0x09091b12U, 0x83839e1dU, 0x2c2c7458U, 0x1a1a2e34U,
+    0x1b1b2d36U, 0x6e6eb2dcU, 0x5a5aeeb4U, 0xa0a0fb5bU,
+    0x5252f6a4U, 0x3b3b4d76U, 0xd6d661b7U, 0xb3b3ce7dU,
+    0x29297b52U, 0xe3e33eddU, 0x2f2f715eU, 0x84849713U,
+    0x5353f5a6U, 0xd1d168b9U, 0x00000000U, 0xeded2cc1U,
+    0x20206040U, 0xfcfc1fe3U, 0xb1b1c879U, 0x5b5bedb6U,
+    0x6a6abed4U, 0xcbcb468dU, 0xbebed967U, 0x39394b72U,
+    0x4a4ade94U, 0x4c4cd498U, 0x5858e8b0U, 0xcfcf4a85U,
+    0xd0d06bbbU, 0xefef2ac5U, 0xaaaae54fU, 0xfbfb16edU,
+    0x4343c586U, 0x4d4dd79aU, 0x33335566U, 0x85859411U,
+    0x4545cf8aU, 0xf9f910e9U, 0x02020604U, 0x7f7f81feU,
+    0x5050f0a0U, 0x3c3c4478U, 0x9f9fba25U, 0xa8a8e34bU,
+    0x5151f3a2U, 0xa3a3fe5dU, 0x4040c080U, 0x8f8f8a05U,
+    0x9292ad3fU, 0x9d9dbc21U, 0x38384870U, 0xf5f504f1U,
+    0xbcbcdf63U, 0xb6b6c177U, 0xdada75afU, 0x21216342U,
+    0x10103020U, 0xffff1ae5U, 0xf3f30efdU, 0xd2d26dbfU,
+    0xcdcd4c81U, 0x0c0c1418U, 0x13133526U, 0xecec2fc3U,
+    0x5f5fe1beU, 0x9797a235U, 0x4444cc88U, 0x1717392eU,
+    0xc4c45793U, 0xa7a7f255U, 0x7e7e82fcU, 0x3d3d477aU,
+    0x6464acc8U, 0x5d5de7baU, 0x19192b32U, 0x737395e6U,
+    0x6060a0c0U, 0x81819819U, 0x4f4fd19eU, 0xdcdc7fa3U,
+    0x22226644U, 0x2a2a7e54U, 0x9090ab3bU, 0x8888830bU,
+    0x4646ca8cU, 0xeeee29c7U, 0xb8b8d36bU, 0x14143c28U,
+    0xdede79a7U, 0x5e5ee2bcU, 0x0b0b1d16U, 0xdbdb76adU,
+    0xe0e03bdbU, 0x32325664U, 0x3a3a4e74U, 0x0a0a1e14U,
+    0x4949db92U, 0x06060a0cU, 0x24246c48U, 0x5c5ce4b8U,
+    0xc2c25d9fU, 0xd3d36ebdU, 0xacacef43U, 0x6262a6c4U,
+    0x9191a839U, 0x9595a431U, 0xe4e437d3U, 0x79798bf2U,
+    0xe7e732d5U, 0xc8c8438bU, 0x3737596eU, 0x6d6db7daU,
+    0x8d8d8c01U, 0xd5d564b1U, 0x4e4ed29cU, 0xa9a9e049U,
+    0x6c6cb4d8U, 0x5656faacU, 0xf4f407f3U, 0xeaea25cfU,
+    0x6565afcaU, 0x7a7a8ef4U, 0xaeaee947U, 0x08081810U,
+    0xbabad56fU, 0x787888f0U, 0x25256f4aU, 0x2e2e725cU,
+    0x1c1c2438U, 0xa6a6f157U, 0xb4b4c773U, 0xc6c65197U,
+    0xe8e823cbU, 0xdddd7ca1U, 0x74749ce8U, 0x1f1f213eU,
+    0x4b4bdd96U, 0xbdbddc61U, 0x8b8b860dU, 0x8a8a850fU,
+    0x707090e0U, 0x3e3e427cU, 0xb5b5c471U, 0x6666aaccU,
+    0x4848d890U, 0x03030506U, 0xf6f601f7U, 0x0e0e121cU,
+    0x6161a3c2U, 0x35355f6aU, 0x5757f9aeU, 0xb9b9d069U,
+    0x86869117U, 0xc1c15899U, 0x1d1d273aU, 0x9e9eb927U,
+    0xe1e138d9U, 0xf8f813ebU, 0x9898b32bU, 0x11113322U,
+    0x6969bbd2U, 0xd9d970a9U, 0x8e8e8907U, 0x9494a733U,
+    0x9b9bb62dU, 0x1e1e223cU, 0x87879215U, 0xe9e920c9U,
+    0xcece4987U, 0x5555ffaaU, 0x28287850U, 0xdfdf7aa5U,
+    0x8c8c8f03U, 0xa1a1f859U, 0x89898009U, 0x0d0d171aU,
+    0xbfbfda65U, 0xe6e631d7U, 0x4242c684U, 0x6868b8d0U,
+    0x4141c382U, 0x9999b029U, 0x2d2d775aU, 0x0f0f111eU,
+    0xb0b0cb7bU, 0x5454fca8U, 0xbbbbd66dU, 0x16163a2cU,
+};
+
+static const u32 Te4[256] = {
+    0x63636363U, 0x7c7c7c7cU, 0x77777777U, 0x7b7b7b7bU,
+    0xf2f2f2f2U, 0x6b6b6b6bU, 0x6f6f6f6fU, 0xc5c5c5c5U,
+    0x30303030U, 0x01010101U, 0x67676767U, 0x2b2b2b2bU,
+    0xfefefefeU, 0xd7d7d7d7U, 0xababababU, 0x76767676U,
+    0xcacacacaU, 0x82828282U, 0xc9c9c9c9U, 0x7d7d7d7dU,
+    0xfafafafaU, 0x59595959U, 0x47474747U, 0xf0f0f0f0U,
+    0xadadadadU, 0xd4d4d4d4U, 0xa2a2a2a2U, 0xafafafafU,
+    0x9c9c9c9cU, 0xa4a4a4a4U, 0x72727272U, 0xc0c0c0c0U,
+    0xb7b7b7b7U, 0xfdfdfdfdU, 0x93939393U, 0x26262626U,
+    0x36363636U, 0x3f3f3f3fU, 0xf7f7f7f7U, 0xccccccccU,
+    0x34343434U, 0xa5a5a5a5U, 0xe5e5e5e5U, 0xf1f1f1f1U,
+    0x71717171U, 0xd8d8d8d8U, 0x31313131U, 0x15151515U,
+    0x04040404U, 0xc7c7c7c7U, 0x23232323U, 0xc3c3c3c3U,
+    0x18181818U, 0x96969696U, 0x05050505U, 0x9a9a9a9aU,
+    0x07070707U, 0x12121212U, 0x80808080U, 0xe2e2e2e2U,
+    0xebebebebU, 0x27272727U, 0xb2b2b2b2U, 0x75757575U,
+    0x09090909U, 0x83838383U, 0x2c2c2c2cU, 0x1a1a1a1aU,
+    0x1b1b1b1bU, 0x6e6e6e6eU, 0x5a5a5a5aU, 0xa0a0a0a0U,
+    0x52525252U, 0x3b3b3b3bU, 0xd6d6d6d6U, 0xb3b3b3b3U,
+    0x29292929U, 0xe3e3e3e3U, 0x2f2f2f2fU, 0x84848484U,
+    0x53535353U, 0xd1d1d1d1U, 0x00000000U, 0xededededU,
+    0x20202020U, 0xfcfcfcfcU, 0xb1b1b1b1U, 0x5b5b5b5bU,
+    0x6a6a6a6aU, 0xcbcbcbcbU, 0xbebebebeU, 0x39393939U,
+    0x4a4a4a4aU, 0x4c4c4c4cU, 0x58585858U, 0xcfcfcfcfU,
+    0xd0d0d0d0U, 0xefefefefU, 0xaaaaaaaaU, 0xfbfbfbfbU,
+    0x43434343U, 0x4d4d4d4dU, 0x33333333U, 0x85858585U,
+    0x45454545U, 0xf9f9f9f9U, 0x02020202U, 0x7f7f7f7fU,
+    0x50505050U, 0x3c3c3c3cU, 0x9f9f9f9fU, 0xa8a8a8a8U,
+    0x51515151U, 0xa3a3a3a3U, 0x40404040U, 0x8f8f8f8fU,
+    0x92929292U, 0x9d9d9d9dU, 0x38383838U, 0xf5f5f5f5U,
+    0xbcbcbcbcU, 0xb6b6b6b6U, 0xdadadadaU, 0x21212121U,
+    0x10101010U, 0xffffffffU, 0xf3f3f3f3U, 0xd2d2d2d2U,
+    0xcdcdcdcdU, 0x0c0c0c0cU, 0x13131313U, 0xececececU,
+    0x5f5f5f5fU, 0x97979797U, 0x44444444U, 0x17171717U,
+    0xc4c4c4c4U, 0xa7a7a7a7U, 0x7e7e7e7eU, 0x3d3d3d3dU,
+    0x64646464U, 0x5d5d5d5dU, 0x19191919U, 0x73737373U,
+    0x60606060U, 0x81818181U, 0x4f4f4f4fU, 0xdcdcdcdcU,
+    0x22222222U, 0x2a2a2a2aU, 0x90909090U, 0x88888888U,
+    0x46464646U, 0xeeeeeeeeU, 0xb8b8b8b8U, 0x14141414U,
+    0xdedededeU, 0x5e5e5e5eU, 0x0b0b0b0bU, 0xdbdbdbdbU,
+    0xe0e0e0e0U, 0x32323232U, 0x3a3a3a3aU, 0x0a0a0a0aU,
+    0x49494949U, 0x06060606U, 0x24242424U, 0x5c5c5c5cU,
+    0xc2c2c2c2U, 0xd3d3d3d3U, 0xacacacacU, 0x62626262U,
+    0x91919191U, 0x95959595U, 0xe4e4e4e4U, 0x79797979U,
+    0xe7e7e7e7U, 0xc8c8c8c8U, 0x37373737U, 0x6d6d6d6dU,
+    0x8d8d8d8dU, 0xd5d5d5d5U, 0x4e4e4e4eU, 0xa9a9a9a9U,
+    0x6c6c6c6cU, 0x56565656U, 0xf4f4f4f4U, 0xeaeaeaeaU,
+    0x65656565U, 0x7a7a7a7aU, 0xaeaeaeaeU, 0x08080808U,
+    0xbabababaU, 0x78787878U, 0x25252525U, 0x2e2e2e2eU,
+    0x1c1c1c1cU, 0xa6a6a6a6U, 0xb4b4b4b4U, 0xc6c6c6c6U,
+    0xe8e8e8e8U, 0xddddddddU, 0x74747474U, 0x1f1f1f1fU,
+    0x4b4b4b4bU, 0xbdbdbdbdU, 0x8b8b8b8bU, 0x8a8a8a8aU,
+    0x70707070U, 0x3e3e3e3eU, 0xb5b5b5b5U, 0x66666666U,
+    0x48484848U, 0x03030303U, 0xf6f6f6f6U, 0x0e0e0e0eU,
+    0x61616161U, 0x35353535U, 0x57575757U, 0xb9b9b9b9U,
+    0x86868686U, 0xc1c1c1c1U, 0x1d1d1d1dU, 0x9e9e9e9eU,
+    0xe1e1e1e1U, 0xf8f8f8f8U, 0x98989898U, 0x11111111U,
+    0x69696969U, 0xd9d9d9d9U, 0x8e8e8e8eU, 0x94949494U,
+    0x9b9b9b9bU, 0x1e1e1e1eU, 0x87878787U, 0xe9e9e9e9U,
+    0xcecececeU, 0x55555555U, 0x28282828U, 0xdfdfdfdfU,
+    0x8c8c8c8cU, 0xa1a1a1a1U, 0x89898989U, 0x0d0d0d0dU,
+    0xbfbfbfbfU, 0xe6e6e6e6U, 0x42424242U, 0x68686868U,
+    0x41414141U, 0x99999999U, 0x2d2d2d2dU, 0x0f0f0f0fU,
+    0xb0b0b0b0U, 0x54545454U, 0xbbbbbbbbU, 0x16161616U,
+};
+
+static const u32 Td0[256] = {
+    0x51f4a750U, 0x7e416553U, 0x1a17a4c3U, 0x3a275e96U,
+    0x3bab6bcbU, 0x1f9d45f1U, 0xacfa58abU, 0x4be30393U,
+    0x2030fa55U, 0xad766df6U, 0x88cc7691U, 0xf5024c25U,
+    0x4fe5d7fcU, 0xc52acbd7U, 0x26354480U, 0xb562a38fU,
+    0xdeb15a49U, 0x25ba1b67U, 0x45ea0e98U, 0x5dfec0e1U,
+    0xc32f7502U, 0x814cf012U, 0x8d4697a3U, 0x6bd3f9c6U,
+    0x038f5fe7U, 0x15929c95U, 0xbf6d7aebU, 0x955259daU,
+    0xd4be832dU, 0x587421d3U, 0x49e06929U, 0x8ec9c844U,
+    0x75c2896aU, 0xf48e7978U, 0x99583e6bU, 0x27b971ddU,
+    0xbee14fb6U, 0xf088ad17U, 0xc920ac66U, 0x7dce3ab4U,
+    0x63df4a18U, 0xe51a3182U, 0x97513360U, 0x62537f45U,
+    0xb16477e0U, 0xbb6bae84U, 0xfe81a01cU, 0xf9082b94U,
+    0x70486858U, 0x8f45fd19U, 0x94de6c87U, 0x527bf8b7U,
+    0xab73d323U, 0x724b02e2U, 0xe31f8f57U, 0x6655ab2aU,
+    0xb2eb2807U, 0x2fb5c203U, 0x86c57b9aU, 0xd33708a5U,
+    0x302887f2U, 0x23bfa5b2U, 0x02036abaU, 0xed16825cU,
+    0x8acf1c2bU, 0xa779b492U, 0xf307f2f0U, 0x4e69e2a1U,
+    0x65daf4cdU, 0x0605bed5U, 0xd134621fU, 0xc4a6fe8aU,
+    0x342e539dU, 0xa2f355a0U, 0x058ae132U, 0xa4f6eb75U,
+    0x0b83ec39U, 0x4060efaaU, 0x5e719f06U, 0xbd6e1051U,
+    0x3e218af9U, 0x96dd063dU, 0xdd3e05aeU, 0x4de6bd46U,
+    0x91548db5U, 0x71c45d05U, 0x0406d46fU, 0x605015ffU,
+    0x1998fb24U, 0xd6bde997U, 0x894043ccU, 0x67d99e77U,
+    0xb0e842bdU, 0x07898b88U, 0xe7195b38U, 0x79c8eedbU,
+    0xa17c0a47U, 0x7c420fe9U, 0xf8841ec9U, 0x00000000U,
+    0x09808683U, 0x322bed48U, 0x1e1170acU, 0x6c5a724eU,
+    0xfd0efffbU, 0x0f853856U, 0x3daed51eU, 0x362d3927U,
+    0x0a0fd964U, 0x685ca621U, 0x9b5b54d1U, 0x24362e3aU,
+    0x0c0a67b1U, 0x9357e70fU, 0xb4ee96d2U, 0x1b9b919eU,
+    0x80c0c54fU, 0x61dc20a2U, 0x5a774b69U, 0x1c121a16U,
+    0xe293ba0aU, 0xc0a02ae5U, 0x3c22e043U, 0x121b171dU,
+    0x0e090d0bU, 0xf28bc7adU, 0x2db6a8b9U, 0x141ea9c8U,
+    0x57f11985U, 0xaf75074cU, 0xee99ddbbU, 0xa37f60fdU,
+    0xf701269fU, 0x5c72f5bcU, 0x44663bc5U, 0x5bfb7e34U,
+    0x8b432976U, 0xcb23c6dcU, 0xb6edfc68U, 0xb8e4f163U,
+    0xd731dccaU, 0x42638510U, 0x13972240U, 0x84c61120U,
+    0x854a247dU, 0xd2bb3df8U, 0xaef93211U, 0xc729a16dU,
+    0x1d9e2f4bU, 0xdcb230f3U, 0x0d8652ecU, 0x77c1e3d0U,
+    0x2bb3166cU, 0xa970b999U, 0x119448faU, 0x47e96422U,
+    0xa8fc8cc4U, 0xa0f03f1aU, 0x567d2cd8U, 0x223390efU,
+    0x87494ec7U, 0xd938d1c1U, 0x8ccaa2feU, 0x98d40b36U,
+    0xa6f581cfU, 0xa57ade28U, 0xdab78e26U, 0x3fadbfa4U,
+    0x2c3a9de4U, 0x5078920dU, 0x6a5fcc9bU, 0x547e4662U,
+    0xf68d13c2U, 0x90d8b8e8U, 0x2e39f75eU, 0x82c3aff5U,
+    0x9f5d80beU, 0x69d0937cU, 0x6fd52da9U, 0xcf2512b3U,
+    0xc8ac993bU, 0x10187da7U, 0xe89c636eU, 0xdb3bbb7bU,
+    0xcd267809U, 0x6e5918f4U, 0xec9ab701U, 0x834f9aa8U,
+    0xe6956e65U, 0xaaffe67eU, 0x21bccf08U, 0xef15e8e6U,
+    0xbae79bd9U, 0x4a6f36ceU, 0xea9f09d4U, 0x29b07cd6U,
+    0x31a4b2afU, 0x2a3f2331U, 0xc6a59430U, 0x35a266c0U,
+    0x744ebc37U, 0xfc82caa6U, 0xe090d0b0U, 0x33a7d815U,
+    0xf104984aU, 0x41ecdaf7U, 0x7fcd500eU, 0x1791f62fU,
+    0x764dd68dU, 0x43efb04dU, 0xccaa4d54U, 0xe49604dfU,
+    0x9ed1b5e3U, 0x4c6a881bU, 0xc12c1fb8U, 0x4665517fU,
+    0x9d5eea04U, 0x018c355dU, 0xfa877473U, 0xfb0b412eU,
+    0xb3671d5aU, 0x92dbd252U, 0xe9105633U, 0x6dd64713U,
+    0x9ad7618cU, 0x37a10c7aU, 0x59f8148eU, 0xeb133c89U,
+    0xcea927eeU, 0xb761c935U, 0xe11ce5edU, 0x7a47b13cU,
+    0x9cd2df59U, 0x55f2733fU, 0x1814ce79U, 0x73c737bfU,
+    0x53f7cdeaU, 0x5ffdaa5bU, 0xdf3d6f14U, 0x7844db86U,
+    0xcaaff381U, 0xb968c43eU, 0x3824342cU, 0xc2a3405fU,
+    0x161dc372U, 0xbce2250cU, 0x283c498bU, 0xff0d9541U,
+    0x39a80171U, 0x080cb3deU, 0xd8b4e49cU, 0x6456c190U,
+    0x7bcb8461U, 0xd532b670U, 0x486c5c74U, 0xd0b85742U,
+};
+static const u32 Td1[256] = {
+    0x5051f4a7U, 0x537e4165U, 0xc31a17a4U, 0x963a275eU,
+    0xcb3bab6bU, 0xf11f9d45U, 0xabacfa58U, 0x934be303U,
+    0x552030faU, 0xf6ad766dU, 0x9188cc76U, 0x25f5024cU,
+    0xfc4fe5d7U, 0xd7c52acbU, 0x80263544U, 0x8fb562a3U,
+    0x49deb15aU, 0x6725ba1bU, 0x9845ea0eU, 0xe15dfec0U,
+    0x02c32f75U, 0x12814cf0U, 0xa38d4697U, 0xc66bd3f9U,
+    0xe7038f5fU, 0x9515929cU, 0xebbf6d7aU, 0xda955259U,
+    0x2dd4be83U, 0xd3587421U, 0x2949e069U, 0x448ec9c8U,
+    0x6a75c289U, 0x78f48e79U, 0x6b99583eU, 0xdd27b971U,
+    0xb6bee14fU, 0x17f088adU, 0x66c920acU, 0xb47dce3aU,
+    0x1863df4aU, 0x82e51a31U, 0x60975133U, 0x4562537fU,
+    0xe0b16477U, 0x84bb6baeU, 0x1cfe81a0U, 0x94f9082bU,
+    0x58704868U, 0x198f45fdU, 0x8794de6cU, 0xb7527bf8U,
+    0x23ab73d3U, 0xe2724b02U, 0x57e31f8fU, 0x2a6655abU,
+    0x07b2eb28U, 0x032fb5c2U, 0x9a86c57bU, 0xa5d33708U,
+    0xf2302887U, 0xb223bfa5U, 0xba02036aU, 0x5ced1682U,
+    0x2b8acf1cU, 0x92a779b4U, 0xf0f307f2U, 0xa14e69e2U,
+    0xcd65daf4U, 0xd50605beU, 0x1fd13462U, 0x8ac4a6feU,
+    0x9d342e53U, 0xa0a2f355U, 0x32058ae1U, 0x75a4f6ebU,
+    0x390b83ecU, 0xaa4060efU, 0x065e719fU, 0x51bd6e10U,
+    0xf93e218aU, 0x3d96dd06U, 0xaedd3e05U, 0x464de6bdU,
+    0xb591548dU, 0x0571c45dU, 0x6f0406d4U, 0xff605015U,
+    0x241998fbU, 0x97d6bde9U, 0xcc894043U, 0x7767d99eU,
+    0xbdb0e842U, 0x8807898bU, 0x38e7195bU, 0xdb79c8eeU,
+    0x47a17c0aU, 0xe97c420fU, 0xc9f8841eU, 0x00000000U,
+    0x83098086U, 0x48322bedU, 0xac1e1170U, 0x4e6c5a72U,
+    0xfbfd0effU, 0x560f8538U, 0x1e3daed5U, 0x27362d39U,
+    0x640a0fd9U, 0x21685ca6U, 0xd19b5b54U, 0x3a24362eU,
+    0xb10c0a67U, 0x0f9357e7U, 0xd2b4ee96U, 0x9e1b9b91U,
+    0x4f80c0c5U, 0xa261dc20U, 0x695a774bU, 0x161c121aU,
+    0x0ae293baU, 0xe5c0a02aU, 0x433c22e0U, 0x1d121b17U,
+    0x0b0e090dU, 0xadf28bc7U, 0xb92db6a8U, 0xc8141ea9U,
+    0x8557f119U, 0x4caf7507U, 0xbbee99ddU, 0xfda37f60U,
+    0x9ff70126U, 0xbc5c72f5U, 0xc544663bU, 0x345bfb7eU,
+    0x768b4329U, 0xdccb23c6U, 0x68b6edfcU, 0x63b8e4f1U,
+    0xcad731dcU, 0x10426385U, 0x40139722U, 0x2084c611U,
+    0x7d854a24U, 0xf8d2bb3dU, 0x11aef932U, 0x6dc729a1U,
+    0x4b1d9e2fU, 0xf3dcb230U, 0xec0d8652U, 0xd077c1e3U,
+    0x6c2bb316U, 0x99a970b9U, 0xfa119448U, 0x2247e964U,
+    0xc4a8fc8cU, 0x1aa0f03fU, 0xd8567d2cU, 0xef223390U,
+    0xc787494eU, 0xc1d938d1U, 0xfe8ccaa2U, 0x3698d40bU,
+    0xcfa6f581U, 0x28a57adeU, 0x26dab78eU, 0xa43fadbfU,
+    0xe42c3a9dU, 0x0d507892U, 0x9b6a5fccU, 0x62547e46U,
+    0xc2f68d13U, 0xe890d8b8U, 0x5e2e39f7U, 0xf582c3afU,
+    0xbe9f5d80U, 0x7c69d093U, 0xa96fd52dU, 0xb3cf2512U,
+    0x3bc8ac99U, 0xa710187dU, 0x6ee89c63U, 0x7bdb3bbbU,
+    0x09cd2678U, 0xf46e5918U, 0x01ec9ab7U, 0xa8834f9aU,
+    0x65e6956eU, 0x7eaaffe6U, 0x0821bccfU, 0xe6ef15e8U,
+    0xd9bae79bU, 0xce4a6f36U, 0xd4ea9f09U, 0xd629b07cU,
+    0xaf31a4b2U, 0x312a3f23U, 0x30c6a594U, 0xc035a266U,
+    0x37744ebcU, 0xa6fc82caU, 0xb0e090d0U, 0x1533a7d8U,
+    0x4af10498U, 0xf741ecdaU, 0x0e7fcd50U, 0x2f1791f6U,
+    0x8d764dd6U, 0x4d43efb0U, 0x54ccaa4dU, 0xdfe49604U,
+    0xe39ed1b5U, 0x1b4c6a88U, 0xb8c12c1fU, 0x7f466551U,
+    0x049d5eeaU, 0x5d018c35U, 0x73fa8774U, 0x2efb0b41U,
+    0x5ab3671dU, 0x5292dbd2U, 0x33e91056U, 0x136dd647U,
+    0x8c9ad761U, 0x7a37a10cU, 0x8e59f814U, 0x89eb133cU,
+    0xeecea927U, 0x35b761c9U, 0xede11ce5U, 0x3c7a47b1U,
+    0x599cd2dfU, 0x3f55f273U, 0x791814ceU, 0xbf73c737U,
+    0xea53f7cdU, 0x5b5ffdaaU, 0x14df3d6fU, 0x867844dbU,
+    0x81caaff3U, 0x3eb968c4U, 0x2c382434U, 0x5fc2a340U,
+    0x72161dc3U, 0x0cbce225U, 0x8b283c49U, 0x41ff0d95U,
+    0x7139a801U, 0xde080cb3U, 0x9cd8b4e4U, 0x906456c1U,
+    0x617bcb84U, 0x70d532b6U, 0x74486c5cU, 0x42d0b857U,
+};
+static const u32 Td2[256] = {
+    0xa75051f4U, 0x65537e41U, 0xa4c31a17U, 0x5e963a27U,
+    0x6bcb3babU, 0x45f11f9dU, 0x58abacfaU, 0x03934be3U,
+    0xfa552030U, 0x6df6ad76U, 0x769188ccU, 0x4c25f502U,
+    0xd7fc4fe5U, 0xcbd7c52aU, 0x44802635U, 0xa38fb562U,
+    0x5a49deb1U, 0x1b6725baU, 0x0e9845eaU, 0xc0e15dfeU,
+    0x7502c32fU, 0xf012814cU, 0x97a38d46U, 0xf9c66bd3U,
+    0x5fe7038fU, 0x9c951592U, 0x7aebbf6dU, 0x59da9552U,
+    0x832dd4beU, 0x21d35874U, 0x692949e0U, 0xc8448ec9U,
+    0x896a75c2U, 0x7978f48eU, 0x3e6b9958U, 0x71dd27b9U,
+    0x4fb6bee1U, 0xad17f088U, 0xac66c920U, 0x3ab47dceU,
+    0x4a1863dfU, 0x3182e51aU, 0x33609751U, 0x7f456253U,
+    0x77e0b164U, 0xae84bb6bU, 0xa01cfe81U, 0x2b94f908U,
+    0x68587048U, 0xfd198f45U, 0x6c8794deU, 0xf8b7527bU,
+    0xd323ab73U, 0x02e2724bU, 0x8f57e31fU, 0xab2a6655U,
+    0x2807b2ebU, 0xc2032fb5U, 0x7b9a86c5U, 0x08a5d337U,
+    0x87f23028U, 0xa5b223bfU, 0x6aba0203U, 0x825ced16U,
+    0x1c2b8acfU, 0xb492a779U, 0xf2f0f307U, 0xe2a14e69U,
+    0xf4cd65daU, 0xbed50605U, 0x621fd134U, 0xfe8ac4a6U,
+    0x539d342eU, 0x55a0a2f3U, 0xe132058aU, 0xeb75a4f6U,
+    0xec390b83U, 0xefaa4060U, 0x9f065e71U, 0x1051bd6eU,
+    0x8af93e21U, 0x063d96ddU, 0x05aedd3eU, 0xbd464de6U,
+    0x8db59154U, 0x5d0571c4U, 0xd46f0406U, 0x15ff6050U,
+    0xfb241998U, 0xe997d6bdU, 0x43cc8940U, 0x9e7767d9U,
+    0x42bdb0e8U, 0x8b880789U, 0x5b38e719U, 0xeedb79c8U,
+    0x0a47a17cU, 0x0fe97c42U, 0x1ec9f884U, 0x00000000U,
+    0x86830980U, 0xed48322bU, 0x70ac1e11U, 0x724e6c5aU,
+    0xfffbfd0eU, 0x38560f85U, 0xd51e3daeU, 0x3927362dU,
+    0xd9640a0fU, 0xa621685cU, 0x54d19b5bU, 0x2e3a2436U,
+    0x67b10c0aU, 0xe70f9357U, 0x96d2b4eeU, 0x919e1b9bU,
+    0xc54f80c0U, 0x20a261dcU, 0x4b695a77U, 0x1a161c12U,
+    0xba0ae293U, 0x2ae5c0a0U, 0xe0433c22U, 0x171d121bU,
+    0x0d0b0e09U, 0xc7adf28bU, 0xa8b92db6U, 0xa9c8141eU,
+    0x198557f1U, 0x074caf75U, 0xddbbee99U, 0x60fda37fU,
+    0x269ff701U, 0xf5bc5c72U, 0x3bc54466U, 0x7e345bfbU,
+    0x29768b43U, 0xc6dccb23U, 0xfc68b6edU, 0xf163b8e4U,
+    0xdccad731U, 0x85104263U, 0x22401397U, 0x112084c6U,
+    0x247d854aU, 0x3df8d2bbU, 0x3211aef9U, 0xa16dc729U,
+    0x2f4b1d9eU, 0x30f3dcb2U, 0x52ec0d86U, 0xe3d077c1U,
+    0x166c2bb3U, 0xb999a970U, 0x48fa1194U, 0x642247e9U,
+    0x8cc4a8fcU, 0x3f1aa0f0U, 0x2cd8567dU, 0x90ef2233U,
+    0x4ec78749U, 0xd1c1d938U, 0xa2fe8ccaU, 0x0b3698d4U,
+    0x81cfa6f5U, 0xde28a57aU, 0x8e26dab7U, 0xbfa43fadU,
+    0x9de42c3aU, 0x920d5078U, 0xcc9b6a5fU, 0x4662547eU,
+    0x13c2f68dU, 0xb8e890d8U, 0xf75e2e39U, 0xaff582c3U,
+    0x80be9f5dU, 0x937c69d0U, 0x2da96fd5U, 0x12b3cf25U,
+    0x993bc8acU, 0x7da71018U, 0x636ee89cU, 0xbb7bdb3bU,
+    0x7809cd26U, 0x18f46e59U, 0xb701ec9aU, 0x9aa8834fU,
+    0x6e65e695U, 0xe67eaaffU, 0xcf0821bcU, 0xe8e6ef15U,
+    0x9bd9bae7U, 0x36ce4a6fU, 0x09d4ea9fU, 0x7cd629b0U,
+    0xb2af31a4U, 0x23312a3fU, 0x9430c6a5U, 0x66c035a2U,
+    0xbc37744eU, 0xcaa6fc82U, 0xd0b0e090U, 0xd81533a7U,
+    0x984af104U, 0xdaf741ecU, 0x500e7fcdU, 0xf62f1791U,
+    0xd68d764dU, 0xb04d43efU, 0x4d54ccaaU, 0x04dfe496U,
+    0xb5e39ed1U, 0x881b4c6aU, 0x1fb8c12cU, 0x517f4665U,
+    0xea049d5eU, 0x355d018cU, 0x7473fa87U, 0x412efb0bU,
+    0x1d5ab367U, 0xd25292dbU, 0x5633e910U, 0x47136dd6U,
+    0x618c9ad7U, 0x0c7a37a1U, 0x148e59f8U, 0x3c89eb13U,
+    0x27eecea9U, 0xc935b761U, 0xe5ede11cU, 0xb13c7a47U,
+    0xdf599cd2U, 0x733f55f2U, 0xce791814U, 0x37bf73c7U,
+    0xcdea53f7U, 0xaa5b5ffdU, 0x6f14df3dU, 0xdb867844U,
+    0xf381caafU, 0xc43eb968U, 0x342c3824U, 0x405fc2a3U,
+    0xc372161dU, 0x250cbce2U, 0x498b283cU, 0x9541ff0dU,
+    0x017139a8U, 0xb3de080cU, 0xe49cd8b4U, 0xc1906456U,
+    0x84617bcbU, 0xb670d532U, 0x5c74486cU, 0x5742d0b8U,
+};
+static const u32 Td3[256] = {
+    0xf4a75051U, 0x4165537eU, 0x17a4c31aU, 0x275e963aU,
+    0xab6bcb3bU, 0x9d45f11fU, 0xfa58abacU, 0xe303934bU,
+    0x30fa5520U, 0x766df6adU, 0xcc769188U, 0x024c25f5U,
+    0xe5d7fc4fU, 0x2acbd7c5U, 0x35448026U, 0x62a38fb5U,
+    0xb15a49deU, 0xba1b6725U, 0xea0e9845U, 0xfec0e15dU,
+    0x2f7502c3U, 0x4cf01281U, 0x4697a38dU, 0xd3f9c66bU,
+    0x8f5fe703U, 0x929c9515U, 0x6d7aebbfU, 0x5259da95U,
+    0xbe832dd4U, 0x7421d358U, 0xe0692949U, 0xc9c8448eU,
+    0xc2896a75U, 0x8e7978f4U, 0x583e6b99U, 0xb971dd27U,
+    0xe14fb6beU, 0x88ad17f0U, 0x20ac66c9U, 0xce3ab47dU,
+    0xdf4a1863U, 0x1a3182e5U, 0x51336097U, 0x537f4562U,
+    0x6477e0b1U, 0x6bae84bbU, 0x81a01cfeU, 0x082b94f9U,
+    0x48685870U, 0x45fd198fU, 0xde6c8794U, 0x7bf8b752U,
+    0x73d323abU, 0x4b02e272U, 0x1f8f57e3U, 0x55ab2a66U,
+    0xeb2807b2U, 0xb5c2032fU, 0xc57b9a86U, 0x3708a5d3U,
+    0x2887f230U, 0xbfa5b223U, 0x036aba02U, 0x16825cedU,
+    0xcf1c2b8aU, 0x79b492a7U, 0x07f2f0f3U, 0x69e2a14eU,
+    0xdaf4cd65U, 0x05bed506U, 0x34621fd1U, 0xa6fe8ac4U,
+    0x2e539d34U, 0xf355a0a2U, 0x8ae13205U, 0xf6eb75a4U,
+    0x83ec390bU, 0x60efaa40U, 0x719f065eU, 0x6e1051bdU,
+    0x218af93eU, 0xdd063d96U, 0x3e05aeddU, 0xe6bd464dU,
+    0x548db591U, 0xc45d0571U, 0x06d46f04U, 0x5015ff60U,
+    0x98fb2419U, 0xbde997d6U, 0x4043cc89U, 0xd99e7767U,
+    0xe842bdb0U, 0x898b8807U, 0x195b38e7U, 0xc8eedb79U,
+    0x7c0a47a1U, 0x420fe97cU, 0x841ec9f8U, 0x00000000U,
+    0x80868309U, 0x2bed4832U, 0x1170ac1eU, 0x5a724e6cU,
+    0x0efffbfdU, 0x8538560fU, 0xaed51e3dU, 0x2d392736U,
+    0x0fd9640aU, 0x5ca62168U, 0x5b54d19bU, 0x362e3a24U,
+    0x0a67b10cU, 0x57e70f93U, 0xee96d2b4U, 0x9b919e1bU,
+    0xc0c54f80U, 0xdc20a261U, 0x774b695aU, 0x121a161cU,
+    0x93ba0ae2U, 0xa02ae5c0U, 0x22e0433cU, 0x1b171d12U,
+    0x090d0b0eU, 0x8bc7adf2U, 0xb6a8b92dU, 0x1ea9c814U,
+    0xf1198557U, 0x75074cafU, 0x99ddbbeeU, 0x7f60fda3U,
+    0x01269ff7U, 0x72f5bc5cU, 0x663bc544U, 0xfb7e345bU,
+    0x4329768bU, 0x23c6dccbU, 0xedfc68b6U, 0xe4f163b8U,
+    0x31dccad7U, 0x63851042U, 0x97224013U, 0xc6112084U,
+    0x4a247d85U, 0xbb3df8d2U, 0xf93211aeU, 0x29a16dc7U,
+    0x9e2f4b1dU, 0xb230f3dcU, 0x8652ec0dU, 0xc1e3d077U,
+    0xb3166c2bU, 0x70b999a9U, 0x9448fa11U, 0xe9642247U,
+    0xfc8cc4a8U, 0xf03f1aa0U, 0x7d2cd856U, 0x3390ef22U,
+    0x494ec787U, 0x38d1c1d9U, 0xcaa2fe8cU, 0xd40b3698U,
+    0xf581cfa6U, 0x7ade28a5U, 0xb78e26daU, 0xadbfa43fU,
+    0x3a9de42cU, 0x78920d50U, 0x5fcc9b6aU, 0x7e466254U,
+    0x8d13c2f6U, 0xd8b8e890U, 0x39f75e2eU, 0xc3aff582U,
+    0x5d80be9fU, 0xd0937c69U, 0xd52da96fU, 0x2512b3cfU,
+    0xac993bc8U, 0x187da710U, 0x9c636ee8U, 0x3bbb7bdbU,
+    0x267809cdU, 0x5918f46eU, 0x9ab701ecU, 0x4f9aa883U,
+    0x956e65e6U, 0xffe67eaaU, 0xbccf0821U, 0x15e8e6efU,
+    0xe79bd9baU, 0x6f36ce4aU, 0x9f09d4eaU, 0xb07cd629U,
+    0xa4b2af31U, 0x3f23312aU, 0xa59430c6U, 0xa266c035U,
+    0x4ebc3774U, 0x82caa6fcU, 0x90d0b0e0U, 0xa7d81533U,
+    0x04984af1U, 0xecdaf741U, 0xcd500e7fU, 0x91f62f17U,
+    0x4dd68d76U, 0xefb04d43U, 0xaa4d54ccU, 0x9604dfe4U,
+    0xd1b5e39eU, 0x6a881b4cU, 0x2c1fb8c1U, 0x65517f46U,
+    0x5eea049dU, 0x8c355d01U, 0x877473faU, 0x0b412efbU,
+    0x671d5ab3U, 0xdbd25292U, 0x105633e9U, 0xd647136dU,
+    0xd7618c9aU, 0xa10c7a37U, 0xf8148e59U, 0x133c89ebU,
+    0xa927eeceU, 0x61c935b7U, 0x1ce5ede1U, 0x47b13c7aU,
+    0xd2df599cU, 0xf2733f55U, 0x14ce7918U, 0xc737bf73U,
+    0xf7cdea53U, 0xfdaa5b5fU, 0x3d6f14dfU, 0x44db8678U,
+    0xaff381caU, 0x68c43eb9U, 0x24342c38U, 0xa3405fc2U,
+    0x1dc37216U, 0xe2250cbcU, 0x3c498b28U, 0x0d9541ffU,
+    0xa8017139U, 0x0cb3de08U, 0xb4e49cd8U, 0x56c19064U,
+    0xcb84617bU, 0x32b670d5U, 0x6c5c7448U, 0xb85742d0U,
+};
+
+static const u32 Td4[256] = {
+    0x52525252U, 0x09090909U, 0x6a6a6a6aU, 0xd5d5d5d5U,
+    0x30303030U, 0x36363636U, 0xa5a5a5a5U, 0x38383838U,
+    0xbfbfbfbfU, 0x40404040U, 0xa3a3a3a3U, 0x9e9e9e9eU,
+    0x81818181U, 0xf3f3f3f3U, 0xd7d7d7d7U, 0xfbfbfbfbU,
+    0x7c7c7c7cU, 0xe3e3e3e3U, 0x39393939U, 0x82828282U,
+    0x9b9b9b9bU, 0x2f2f2f2fU, 0xffffffffU, 0x87878787U,
+    0x34343434U, 0x8e8e8e8eU, 0x43434343U, 0x44444444U,
+    0xc4c4c4c4U, 0xdedededeU, 0xe9e9e9e9U, 0xcbcbcbcbU,
+    0x54545454U, 0x7b7b7b7bU, 0x94949494U, 0x32323232U,
+    0xa6a6a6a6U, 0xc2c2c2c2U, 0x23232323U, 0x3d3d3d3dU,
+    0xeeeeeeeeU, 0x4c4c4c4cU, 0x95959595U, 0x0b0b0b0bU,
+    0x42424242U, 0xfafafafaU, 0xc3c3c3c3U, 0x4e4e4e4eU,
+    0x08080808U, 0x2e2e2e2eU, 0xa1a1a1a1U, 0x66666666U,
+    0x28282828U, 0xd9d9d9d9U, 0x24242424U, 0xb2b2b2b2U,
+    0x76767676U, 0x5b5b5b5bU, 0xa2a2a2a2U, 0x49494949U,
+    0x6d6d6d6dU, 0x8b8b8b8bU, 0xd1d1d1d1U, 0x25252525U,
+    0x72727272U, 0xf8f8f8f8U, 0xf6f6f6f6U, 0x64646464U,
+    0x86868686U, 0x68686868U, 0x98989898U, 0x16161616U,
+    0xd4d4d4d4U, 0xa4a4a4a4U, 0x5c5c5c5cU, 0xccccccccU,
+    0x5d5d5d5dU, 0x65656565U, 0xb6b6b6b6U, 0x92929292U,
+    0x6c6c6c6cU, 0x70707070U, 0x48484848U, 0x50505050U,
+    0xfdfdfdfdU, 0xededededU, 0xb9b9b9b9U, 0xdadadadaU,
+    0x5e5e5e5eU, 0x15151515U, 0x46464646U, 0x57575757U,
+    0xa7a7a7a7U, 0x8d8d8d8dU, 0x9d9d9d9dU, 0x84848484U,
+    0x90909090U, 0xd8d8d8d8U, 0xababababU, 0x00000000U,
+    0x8c8c8c8cU, 0xbcbcbcbcU, 0xd3d3d3d3U, 0x0a0a0a0aU,
+    0xf7f7f7f7U, 0xe4e4e4e4U, 0x58585858U, 0x05050505U,
+    0xb8b8b8b8U, 0xb3b3b3b3U, 0x45454545U, 0x06060606U,
+    0xd0d0d0d0U, 0x2c2c2c2cU, 0x1e1e1e1eU, 0x8f8f8f8fU,
+    0xcacacacaU, 0x3f3f3f3fU, 0x0f0f0f0fU, 0x02020202U,
+    0xc1c1c1c1U, 0xafafafafU, 0xbdbdbdbdU, 0x03030303U,
+    0x01010101U, 0x13131313U, 0x8a8a8a8aU, 0x6b6b6b6bU,
+    0x3a3a3a3aU, 0x91919191U, 0x11111111U, 0x41414141U,
+    0x4f4f4f4fU, 0x67676767U, 0xdcdcdcdcU, 0xeaeaeaeaU,
+    0x97979797U, 0xf2f2f2f2U, 0xcfcfcfcfU, 0xcecececeU,
+    0xf0f0f0f0U, 0xb4b4b4b4U, 0xe6e6e6e6U, 0x73737373U,
+    0x96969696U, 0xacacacacU, 0x74747474U, 0x22222222U,
+    0xe7e7e7e7U, 0xadadadadU, 0x35353535U, 0x85858585U,
+    0xe2e2e2e2U, 0xf9f9f9f9U, 0x37373737U, 0xe8e8e8e8U,
+    0x1c1c1c1cU, 0x75757575U, 0xdfdfdfdfU, 0x6e6e6e6eU,
+    0x47474747U, 0xf1f1f1f1U, 0x1a1a1a1aU, 0x71717171U,
+    0x1d1d1d1dU, 0x29292929U, 0xc5c5c5c5U, 0x89898989U,
+    0x6f6f6f6fU, 0xb7b7b7b7U, 0x62626262U, 0x0e0e0e0eU,
+    0xaaaaaaaaU, 0x18181818U, 0xbebebebeU, 0x1b1b1b1bU,
+    0xfcfcfcfcU, 0x56565656U, 0x3e3e3e3eU, 0x4b4b4b4bU,
+    0xc6c6c6c6U, 0xd2d2d2d2U, 0x79797979U, 0x20202020U,
+    0x9a9a9a9aU, 0xdbdbdbdbU, 0xc0c0c0c0U, 0xfefefefeU,
+    0x78787878U, 0xcdcdcdcdU, 0x5a5a5a5aU, 0xf4f4f4f4U,
+    0x1f1f1f1fU, 0xddddddddU, 0xa8a8a8a8U, 0x33333333U,
+    0x88888888U, 0x07070707U, 0xc7c7c7c7U, 0x31313131U,
+    0xb1b1b1b1U, 0x12121212U, 0x10101010U, 0x59595959U,
+    0x27272727U, 0x80808080U, 0xececececU, 0x5f5f5f5fU,
+    0x60606060U, 0x51515151U, 0x7f7f7f7fU, 0xa9a9a9a9U,
+    0x19191919U, 0xb5b5b5b5U, 0x4a4a4a4aU, 0x0d0d0d0dU,
+    0x2d2d2d2dU, 0xe5e5e5e5U, 0x7a7a7a7aU, 0x9f9f9f9fU,
+    0x93939393U, 0xc9c9c9c9U, 0x9c9c9c9cU, 0xefefefefU,
+    0xa0a0a0a0U, 0xe0e0e0e0U, 0x3b3b3b3bU, 0x4d4d4d4dU,
+    0xaeaeaeaeU, 0x2a2a2a2aU, 0xf5f5f5f5U, 0xb0b0b0b0U,
+    0xc8c8c8c8U, 0xebebebebU, 0xbbbbbbbbU, 0x3c3c3c3cU,
+    0x83838383U, 0x53535353U, 0x99999999U, 0x61616161U,
+    0x17171717U, 0x2b2b2b2bU, 0x04040404U, 0x7e7e7e7eU,
+    0xbabababaU, 0x77777777U, 0xd6d6d6d6U, 0x26262626U,
+    0xe1e1e1e1U, 0x69696969U, 0x14141414U, 0x63636363U,
+    0x55555555U, 0x21212121U, 0x0c0c0c0cU, 0x7d7d7d7dU,
+};
+
+static const u32 rcon[] = {
+	0x01000000, 0x02000000, 0x04000000, 0x08000000,
+	0x10000000, 0x20000000, 0x40000000, 0x80000000,
+	0x1B000000, 0x36000000, /* for 128-bit blocks, Rijndael never uses more than 10 rcon values */
+};
+
+/*
+ * Encrypt a single block
+ * in and out can overlap
+ */
+void evp_aes_encrypt(const unsigned char *in, unsigned char *out, const AES_KEY *key) 
+{
+
+	const u32 *rk;
+	u32 s0, s1, s2, s3, t0, t1, t2, t3;
+#ifndef FULL_UNROLL
+	int r;
+#endif /* ?FULL_UNROLL */
+
+	assert(in && out && key);
+	rk = key->rd_key;
+
+	/*
+	 * map byte array block to cipher state
+	 * and add initial round key:
+	 */
+	s0 = GETU32(in     ) ^ rk[0];
+	s1 = GETU32(in +  4) ^ rk[1];
+	s2 = GETU32(in +  8) ^ rk[2];
+	s3 = GETU32(in + 12) ^ rk[3];
+#ifdef FULL_UNROLL
+	/* round 1: */
+   	t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >>  8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[ 4];
+   	t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >>  8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[ 5];
+   	t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >>  8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[ 6];
+   	t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >>  8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[ 7];
+   	/* round 2: */
+   	s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >>  8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[ 8];
+   	s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >>  8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[ 9];
+   	s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >>  8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[10];
+   	s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >>  8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[11];
+	/* round 3: */
+   	t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >>  8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[12];
+   	t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >>  8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[13];
+   	t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >>  8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[14];
+   	t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >>  8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[15];
+   	/* round 4: */
+   	s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >>  8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[16];
+   	s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >>  8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[17];
+   	s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >>  8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[18];
+   	s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >>  8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[19];
+	/* round 5: */
+   	t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >>  8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[20];
+   	t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >>  8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[21];
+   	t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >>  8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[22];
+   	t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >>  8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[23];
+   	/* round 6: */
+   	s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >>  8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[24];
+   	s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >>  8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[25];
+   	s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >>  8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[26];
+   	s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >>  8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[27];
+	/* round 7: */
+   	t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >>  8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[28];
+   	t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >>  8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[29];
+   	t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >>  8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[30];
+   	t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >>  8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[31];
+   	/* round 8: */
+   	s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >>  8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[32];
+   	s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >>  8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[33];
+   	s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >>  8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[34];
+   	s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >>  8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[35];
+	/* round 9: */
+   	t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >>  8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[36];
+   	t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >>  8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[37];
+   	t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >>  8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[38];
+   	t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >>  8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[39];
+    if (key->rounds > 10) {
+        /* round 10: */
+        s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >>  8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[40];
+        s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >>  8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[41];
+        s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >>  8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[42];
+        s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >>  8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[43];
+        /* round 11: */
+        t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >>  8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[44];
+        t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >>  8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[45];
+        t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >>  8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[46];
+        t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >>  8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[47];
+        if (key->rounds > 12) {
+            /* round 12: */
+            s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >>  8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[48];
+            s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >>  8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[49];
+            s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >>  8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[50];
+            s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >>  8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[51];
+            /* round 13: */
+            t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >>  8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[52];
+            t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >>  8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[53];
+            t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >>  8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[54];
+            t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >>  8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[55];
+        }
+    }
+    rk += key->rounds << 2;
+#else  /* !FULL_UNROLL */
+    /*
+     * Nr - 1 full rounds:
+     */
+    r = key->rounds >> 1;
+    for (;;) {
+        t0 =
+            Te0[(s0 >> 24)       ] ^
+            Te1[(s1 >> 16) & 0xff] ^
+            Te2[(s2 >>  8) & 0xff] ^
+            Te3[(s3      ) & 0xff] ^
+            rk[4];
+        t1 =
+            Te0[(s1 >> 24)       ] ^
+            Te1[(s2 >> 16) & 0xff] ^
+            Te2[(s3 >>  8) & 0xff] ^
+            Te3[(s0      ) & 0xff] ^
+            rk[5];
+        t2 =
+            Te0[(s2 >> 24)       ] ^
+            Te1[(s3 >> 16) & 0xff] ^
+            Te2[(s0 >>  8) & 0xff] ^
+            Te3[(s1      ) & 0xff] ^
+            rk[6];
+        t3 =
+            Te0[(s3 >> 24)       ] ^
+            Te1[(s0 >> 16) & 0xff] ^
+            Te2[(s1 >>  8) & 0xff] ^
+            Te3[(s2      ) & 0xff] ^
+            rk[7];
+
+        rk += 8;
+        if (--r == 0) {
+            break;
+        }
+
+        s0 =
+            Te0[(t0 >> 24)       ] ^
+            Te1[(t1 >> 16) & 0xff] ^
+            Te2[(t2 >>  8) & 0xff] ^
+            Te3[(t3      ) & 0xff] ^
+            rk[0];
+        s1 =
+            Te0[(t1 >> 24)       ] ^
+            Te1[(t2 >> 16) & 0xff] ^
+            Te2[(t3 >>  8) & 0xff] ^
+            Te3[(t0      ) & 0xff] ^
+            rk[1];
+        s2 =
+            Te0[(t2 >> 24)       ] ^
+            Te1[(t3 >> 16) & 0xff] ^
+            Te2[(t0 >>  8) & 0xff] ^
+            Te3[(t1      ) & 0xff] ^
+            rk[2];
+        s3 =
+            Te0[(t3 >> 24)       ] ^
+            Te1[(t0 >> 16) & 0xff] ^
+            Te2[(t1 >>  8) & 0xff] ^
+            Te3[(t2      ) & 0xff] ^
+            rk[3];
+    }
+#endif /* ?FULL_UNROLL */
+    /*
+	 * apply last round and
+	 * map cipher state to byte array block:
+	 */
+	s0 =
+		(Te4[(t0 >> 24)       ] & 0xff000000) ^
+		(Te4[(t1 >> 16) & 0xff] & 0x00ff0000) ^
+		(Te4[(t2 >>  8) & 0xff] & 0x0000ff00) ^
+		(Te4[(t3      ) & 0xff] & 0x000000ff) ^
+		rk[0];
+	PUTU32(out     , s0);
+	s1 =
+		(Te4[(t1 >> 24)       ] & 0xff000000) ^
+		(Te4[(t2 >> 16) & 0xff] & 0x00ff0000) ^
+		(Te4[(t3 >>  8) & 0xff] & 0x0000ff00) ^
+		(Te4[(t0      ) & 0xff] & 0x000000ff) ^
+		rk[1];
+	PUTU32(out +  4, s1);
+	s2 =
+		(Te4[(t2 >> 24)       ] & 0xff000000) ^
+		(Te4[(t3 >> 16) & 0xff] & 0x00ff0000) ^
+		(Te4[(t0 >>  8) & 0xff] & 0x0000ff00) ^
+		(Te4[(t1      ) & 0xff] & 0x000000ff) ^
+		rk[2];
+	PUTU32(out +  8, s2);
+	s3 =
+		(Te4[(t3 >> 24)       ] & 0xff000000) ^
+		(Te4[(t0 >> 16) & 0xff] & 0x00ff0000) ^
+		(Te4[(t1 >>  8) & 0xff] & 0x0000ff00) ^
+		(Te4[(t2      ) & 0xff] & 0x000000ff) ^
+		rk[3];
+	PUTU32(out + 12, s3);
+}
+
+/*
+ * Decrypt a single block
+ * in and out can overlap
+ */
+void evp_aes_decrypt(const unsigned char *in, unsigned char *out, const AES_KEY *key) 
+{
+
+	const u32 *rk;
+	u32 s0, s1, s2, s3, t0, t1, t2, t3;
+#ifndef FULL_UNROLL
+	int r;
+#endif /* ?FULL_UNROLL */
+
+	assert(in && out && key);
+	rk = key->rd_key;
+
+	/*
+	 * map byte array block to cipher state
+	 * and add initial round key:
+	 */
+    s0 = GETU32(in     ) ^ rk[0];
+    s1 = GETU32(in +  4) ^ rk[1];
+    s2 = GETU32(in +  8) ^ rk[2];
+    s3 = GETU32(in + 12) ^ rk[3];
+#ifdef FULL_UNROLL
+    /* round 1: */
+    t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >>  8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[ 4];
+    t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >>  8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[ 5];
+    t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >>  8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[ 6];
+    t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >>  8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[ 7];
+    /* round 2: */
+    s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >>  8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[ 8];
+    s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >>  8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[ 9];
+    s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >>  8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[10];
+    s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >>  8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[11];
+    /* round 3: */
+    t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >>  8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[12];
+    t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >>  8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[13];
+    t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >>  8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[14];
+    t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >>  8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[15];
+    /* round 4: */
+    s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >>  8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[16];
+    s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >>  8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[17];
+    s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >>  8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[18];
+    s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >>  8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[19];
+    /* round 5: */
+    t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >>  8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[20];
+    t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >>  8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[21];
+    t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >>  8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[22];
+    t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >>  8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[23];
+    /* round 6: */
+    s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >>  8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[24];
+    s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >>  8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[25];
+    s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >>  8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[26];
+    s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >>  8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[27];
+    /* round 7: */
+    t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >>  8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[28];
+    t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >>  8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[29];
+    t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >>  8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[30];
+    t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >>  8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[31];
+    /* round 8: */
+    s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >>  8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[32];
+    s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >>  8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[33];
+    s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >>  8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[34];
+    s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >>  8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[35];
+    /* round 9: */
+    t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >>  8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[36];
+    t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >>  8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[37];
+    t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >>  8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[38];
+    t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >>  8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[39];
+    if (key->rounds > 10) {
+        /* round 10: */
+        s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >>  8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[40];
+        s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >>  8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[41];
+        s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >>  8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[42];
+        s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >>  8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[43];
+        /* round 11: */
+        t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >>  8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[44];
+        t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >>  8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[45];
+        t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >>  8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[46];
+        t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >>  8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[47];
+        if (key->rounds > 12) {
+            /* round 12: */
+            s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >>  8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[48];
+            s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >>  8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[49];
+            s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >>  8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[50];
+            s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >>  8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[51];
+            /* round 13: */
+            t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >>  8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[52];
+            t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >>  8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[53];
+            t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >>  8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[54];
+            t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >>  8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[55];
+        }
+    }
+	rk += key->rounds << 2;
+#else  /* !FULL_UNROLL */
+    /*
+     * Nr - 1 full rounds:
+     */
+    r = key->rounds >> 1;
+    for (;;) {
+        t0 =
+            Td0[(s0 >> 24)       ] ^
+            Td1[(s3 >> 16) & 0xff] ^
+            Td2[(s2 >>  8) & 0xff] ^
+            Td3[(s1      ) & 0xff] ^
+            rk[4];
+        t1 =
+            Td0[(s1 >> 24)       ] ^
+            Td1[(s0 >> 16) & 0xff] ^
+            Td2[(s3 >>  8) & 0xff] ^
+            Td3[(s2      ) & 0xff] ^
+            rk[5];
+        t2 =
+            Td0[(s2 >> 24)       ] ^
+            Td1[(s1 >> 16) & 0xff] ^
+            Td2[(s0 >>  8) & 0xff] ^
+            Td3[(s3      ) & 0xff] ^
+            rk[6];
+        t3 =
+            Td0[(s3 >> 24)       ] ^
+            Td1[(s2 >> 16) & 0xff] ^
+            Td2[(s1 >>  8) & 0xff] ^
+            Td3[(s0      ) & 0xff] ^
+            rk[7];
+
+        rk += 8;
+        if (--r == 0) {
+            break;
+        }
+
+        s0 =
+            Td0[(t0 >> 24)       ] ^
+            Td1[(t3 >> 16) & 0xff] ^
+            Td2[(t2 >>  8) & 0xff] ^
+            Td3[(t1      ) & 0xff] ^
+            rk[0];
+        s1 =
+            Td0[(t1 >> 24)       ] ^
+            Td1[(t0 >> 16) & 0xff] ^
+            Td2[(t3 >>  8) & 0xff] ^
+            Td3[(t2      ) & 0xff] ^
+            rk[1];
+        s2 =
+            Td0[(t2 >> 24)       ] ^
+            Td1[(t1 >> 16) & 0xff] ^
+            Td2[(t0 >>  8) & 0xff] ^
+            Td3[(t3      ) & 0xff] ^
+            rk[2];
+        s3 =
+            Td0[(t3 >> 24)       ] ^
+            Td1[(t2 >> 16) & 0xff] ^
+            Td2[(t1 >>  8) & 0xff] ^
+            Td3[(t0      ) & 0xff] ^
+            rk[3];
+    }
+#endif /* ?FULL_UNROLL */
+    /*
+	 * apply last round and
+	 * map cipher state to byte array block:
+	 */
+   	s0 =
+   		(Td4[(t0 >> 24)       ] & 0xff000000) ^
+   		(Td4[(t3 >> 16) & 0xff] & 0x00ff0000) ^
+   		(Td4[(t2 >>  8) & 0xff] & 0x0000ff00) ^
+   		(Td4[(t1      ) & 0xff] & 0x000000ff) ^
+   		rk[0];
+	PUTU32(out     , s0);
+   	s1 =
+   		(Td4[(t1 >> 24)       ] & 0xff000000) ^
+   		(Td4[(t0 >> 16) & 0xff] & 0x00ff0000) ^
+   		(Td4[(t3 >>  8) & 0xff] & 0x0000ff00) ^
+   		(Td4[(t2      ) & 0xff] & 0x000000ff) ^
+   		rk[1];
+	PUTU32(out +  4, s1);
+   	s2 =
+   		(Td4[(t2 >> 24)       ] & 0xff000000) ^
+   		(Td4[(t1 >> 16) & 0xff] & 0x00ff0000) ^
+   		(Td4[(t0 >>  8) & 0xff] & 0x0000ff00) ^
+   		(Td4[(t3      ) & 0xff] & 0x000000ff) ^
+   		rk[2];
+	PUTU32(out +  8, s2);
+   	s3 =
+   		(Td4[(t3 >> 24)       ] & 0xff000000) ^
+   		(Td4[(t2 >> 16) & 0xff] & 0x00ff0000) ^
+   		(Td4[(t1 >>  8) & 0xff] & 0x0000ff00) ^
+   		(Td4[(t0      ) & 0xff] & 0x000000ff) ^
+   		rk[3];
+	PUTU32(out + 12, s3);
+}
+
+/**
+ * Expand the cipher key into the encryption key schedule.
+ */
+int AES_set_encrypt_key(const unsigned char *userKey, const int bits, AES_KEY *key) 
+{
+
+	u32 *rk;
+   	int i = 0;
+	u32 temp;
+
+	if (!userKey || !key)
+		return -1;
+	if (bits != 128 && bits != 192 && bits != 256)
+		return -2;
+
+	rk = key->rd_key;
+
+	if (bits==128)
+		key->rounds = 10;
+	else if (bits==192)
+		key->rounds = 12;
+	else
+		key->rounds = 14;
+
+	rk[0] = GETU32(userKey     );
+	rk[1] = GETU32(userKey +  4);
+	rk[2] = GETU32(userKey +  8);
+	rk[3] = GETU32(userKey + 12);
+	if (bits == 128) {
+		while (1) {
+			temp  = rk[3];
+			rk[4] = rk[0] ^
+				(Te4[(temp >> 16) & 0xff] & 0xff000000) ^
+				(Te4[(temp >>  8) & 0xff] & 0x00ff0000) ^
+				(Te4[(temp      ) & 0xff] & 0x0000ff00) ^
+				(Te4[(temp >> 24)       ] & 0x000000ff) ^
+				rcon[i];
+			rk[5] = rk[1] ^ rk[4];
+			rk[6] = rk[2] ^ rk[5];
+			rk[7] = rk[3] ^ rk[6];
+			if (++i == 10) {
+				return 0;
+			}
+			rk += 4;
+		}
+	}
+	rk[4] = GETU32(userKey + 16);
+	rk[5] = GETU32(userKey + 20);
+	if (bits == 192) {
+		while (1) {
+			temp = rk[ 5];
+			rk[ 6] = rk[ 0] ^
+				(Te4[(temp >> 16) & 0xff] & 0xff000000) ^
+				(Te4[(temp >>  8) & 0xff] & 0x00ff0000) ^
+				(Te4[(temp      ) & 0xff] & 0x0000ff00) ^
+				(Te4[(temp >> 24)       ] & 0x000000ff) ^
+				rcon[i];
+			rk[ 7] = rk[ 1] ^ rk[ 6];
+			rk[ 8] = rk[ 2] ^ rk[ 7];
+			rk[ 9] = rk[ 3] ^ rk[ 8];
+			if (++i == 8) {
+				return 0;
+			}
+			rk[10] = rk[ 4] ^ rk[ 9];
+			rk[11] = rk[ 5] ^ rk[10];
+			rk += 6;
+		}
+	}
+	rk[6] = GETU32(userKey + 24);
+	rk[7] = GETU32(userKey + 28);
+	if (bits == 256) {
+		while (1) {
+			temp = rk[ 7];
+			rk[ 8] = rk[ 0] ^
+				(Te4[(temp >> 16) & 0xff] & 0xff000000) ^
+				(Te4[(temp >>  8) & 0xff] & 0x00ff0000) ^
+				(Te4[(temp      ) & 0xff] & 0x0000ff00) ^
+				(Te4[(temp >> 24)       ] & 0x000000ff) ^
+				rcon[i];
+			rk[ 9] = rk[ 1] ^ rk[ 8];
+			rk[10] = rk[ 2] ^ rk[ 9];
+			rk[11] = rk[ 3] ^ rk[10];
+			if (++i == 7) {
+				return 0;
+			}
+			temp = rk[11];
+			rk[12] = rk[ 4] ^
+				(Te4[(temp >> 24)       ] & 0xff000000) ^
+				(Te4[(temp >> 16) & 0xff] & 0x00ff0000) ^
+				(Te4[(temp >>  8) & 0xff] & 0x0000ff00) ^
+				(Te4[(temp      ) & 0xff] & 0x000000ff);
+			rk[13] = rk[ 5] ^ rk[12];
+			rk[14] = rk[ 6] ^ rk[13];
+			rk[15] = rk[ 7] ^ rk[14];
+
+			rk += 8;
+        	}
+	}
+	return 0;   //Success
+}
+
+void evp_aes_cbc_encrypt(const unsigned char *in, unsigned char *out,
+		     const unsigned long length, const AES_KEY *key,
+		     unsigned char *ivec, const int enc) 
+{
+
+	unsigned long n;
+	unsigned long len = length;
+	unsigned char tmp[AES_BLOCK_SIZE];
+	const unsigned char *iv = ivec;
+
+	assert(in && out && key && ivec);
+	assert((AES_ENCRYPT == enc)||(AES_DECRYPT == enc));
+
+	if (AES_ENCRYPT == enc) {
+		while (len >= AES_BLOCK_SIZE) {
+			for(n=0; n < AES_BLOCK_SIZE; ++n)
+				out[n] = in[n] ^ iv[n];
+			evp_aes_encrypt(out, out, key);
+			iv = out;
+			len -= AES_BLOCK_SIZE;
+			in += AES_BLOCK_SIZE;
+			out += AES_BLOCK_SIZE;
+		}
+		if (len) {
+			for(n=0; n < len; ++n)
+				out[n] = in[n] ^ iv[n];
+			for(n=len; n < AES_BLOCK_SIZE; ++n)
+				out[n] = iv[n];
+			evp_aes_encrypt(out, out, key);
+			iv = out;
+		}
+		memcpy(ivec,iv,AES_BLOCK_SIZE);
+	} else if (in != out) {
+		while (len >= AES_BLOCK_SIZE) {
+			evp_aes_decrypt(in, out, key);
+			for(n=0; n < AES_BLOCK_SIZE; ++n)
+				out[n] ^= iv[n];
+			iv = in;
+			len -= AES_BLOCK_SIZE;
+			in  += AES_BLOCK_SIZE;
+			out += AES_BLOCK_SIZE;
+		}
+		if (len) {
+			evp_aes_decrypt(in,tmp,key);
+			for(n=0; n < len; ++n)
+				out[n] = tmp[n] ^ iv[n];
+			iv = in;
+		}
+		memcpy(ivec,iv,AES_BLOCK_SIZE);
+	} else {
+		while (len >= AES_BLOCK_SIZE) {
+			memcpy(tmp, in, AES_BLOCK_SIZE);
+			evp_aes_decrypt(in, out, key);
+			for(n=0; n < AES_BLOCK_SIZE; ++n)
+				out[n] ^= ivec[n];
+			memcpy(ivec, tmp, AES_BLOCK_SIZE);
+			len -= AES_BLOCK_SIZE;
+			in += AES_BLOCK_SIZE;
+			out += AES_BLOCK_SIZE;
+		}
+		if (len) {
+			memcpy(tmp, in, AES_BLOCK_SIZE);
+			evp_aes_decrypt(tmp, out, key);
+			for(n=0; n < len; ++n)
+				out[n] ^= ivec[n];
+			for(n=len; n < AES_BLOCK_SIZE; ++n)
+				out[n] = tmp[n];
+			memcpy(ivec, tmp, AES_BLOCK_SIZE);
+		}
+	}
+}
+
+/**
+ * Expand the cipher key into the decryption key schedule.
+ */
+int AES_set_decrypt_key(const unsigned char *userKey, const int bits, AES_KEY *key) 
+{
+
+        u32 *rk;
+	int i, j, status;
+	u32 temp;
+
+	/* first, start with an encryption schedule */
+	status = AES_set_encrypt_key(userKey, bits, key);
+	if (status < 0)
+		return status;
+
+	rk = key->rd_key;
+
+	/* invert the order of the round keys: */
+	for (i = 0, j = 4*(key->rounds); i < j; i += 4, j -= 4) {
+		temp = rk[i    ]; rk[i    ] = rk[j    ]; rk[j    ] = temp;
+		temp = rk[i + 1]; rk[i + 1] = rk[j + 1]; rk[j + 1] = temp;
+		temp = rk[i + 2]; rk[i + 2] = rk[j + 2]; rk[j + 2] = temp;
+		temp = rk[i + 3]; rk[i + 3] = rk[j + 3]; rk[j + 3] = temp;
+	}
+	/* apply the inverse MixColumn transform to all round keys but the first and the last: */
+	for (i = 1; i < (key->rounds); i++) {
+		rk += 4;
+		rk[0] =
+			Td0[Te4[(rk[0] >> 24)       ] & 0xff] ^
+			Td1[Te4[(rk[0] >> 16) & 0xff] & 0xff] ^
+			Td2[Te4[(rk[0] >>  8) & 0xff] & 0xff] ^
+			Td3[Te4[(rk[0]      ) & 0xff] & 0xff];
+		rk[1] =
+			Td0[Te4[(rk[1] >> 24)       ] & 0xff] ^
+			Td1[Te4[(rk[1] >> 16) & 0xff] & 0xff] ^
+			Td2[Te4[(rk[1] >>  8) & 0xff] & 0xff] ^
+			Td3[Te4[(rk[1]      ) & 0xff] & 0xff];
+		rk[2] =
+			Td0[Te4[(rk[2] >> 24)       ] & 0xff] ^
+			Td1[Te4[(rk[2] >> 16) & 0xff] & 0xff] ^
+			Td2[Te4[(rk[2] >>  8) & 0xff] & 0xff] ^
+			Td3[Te4[(rk[2]      ) & 0xff] & 0xff];
+		rk[3] =
+			Td0[Te4[(rk[3] >> 24)       ] & 0xff] ^
+			Td1[Te4[(rk[3] >> 16) & 0xff] & 0xff] ^
+			Td2[Te4[(rk[3] >>  8) & 0xff] & 0xff] ^
+			Td3[Te4[(rk[3]      ) & 0xff] & 0xff];
+	}
+	return 0;
+}
+
+int EVP_aes_128_cbc()
+{
+	return 128; //aes_128_cbc
+}
+
+int EVP_EncryptInit(EVP_CIPHER_CTX *ctx, int type, unsigned char *key, unsigned char *iv)
+{
+	int ret;
+
+	memset(ctx, 0x00, sizeof(EVP_CIPHER_CTX));
+
+	ctx->flag = 1;   //Init ok.
+	ctx->type = type;
+	ctx->encrypt = 1;  //Do Encrypt
+	
+
+	memcpy(ctx->key, key, 16);
+	memcpy(ctx->iv, iv, 16);
+	
+	ret = AES_set_encrypt_key(key, 128, &ctx->aesKey);
+
+	return ret;
+}
+
+int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *outbuf, int *outlen, unsigned char *inbuf, int inlen)
+{
+	int encryptSize = 0;
+
+	if ((ctx->flag == 0) || (inlen == 0) || (ctx->encrypt == 0))
+		return 0;  //Failed, ctx not been initializzd or input size is empty.
+
+	while (inlen >= AES_BLOCK_SIZE)
+	{
+		evp_aes_cbc_encrypt(inbuf + encryptSize, outbuf + encryptSize, AES_BLOCK_SIZE, &ctx->aesKey, ctx->iv, ctx->encrypt);
+		encryptSize += AES_BLOCK_SIZE;
+		inlen       -= AES_BLOCK_SIZE;
+	}
+
+	if (inlen == 0)
+	{
+		*outlen = encryptSize;
+		memset(ctx->buffer, AES_BLOCK_SIZE, AES_BLOCK_SIZE);
+		ctx->bufferlen = AES_BLOCK_SIZE;
+	}
+	else
+	{
+		*outlen = encryptSize;
+		memcpy(ctx->buffer, inbuf + encryptSize, inlen);
+		memset(ctx->buffer + inlen, AES_BLOCK_SIZE - inlen, AES_BLOCK_SIZE - inlen);
+		ctx->bufferlen = AES_BLOCK_SIZE;
+	}
+
+	return 1; //Success
+}
+
+int EVP_EncryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *outbuf, int *outlen)
+{
+	if ((ctx->flag == 0) || (ctx->bufferlen == 0) || (ctx->encrypt == 0))
+	{
+		*outlen = 0;
+		return 0; //Failed, ctx not been initialized or buffer is empty.
+	}
+
+	*outlen = AES_BLOCK_SIZE;
+	evp_aes_cbc_encrypt(ctx->buffer, outbuf, AES_BLOCK_SIZE, &ctx->aesKey, ctx->iv, ctx->encrypt);
+
+	return 1; //Success
+}
+
+int EVP_DecryptInit(EVP_CIPHER_CTX *ctx, int type, unsigned char *key, unsigned char *iv)
+{
+	int ret;
+
+	memset(ctx, 0x00, sizeof(EVP_CIPHER_CTX));
+
+	ctx->flag = 1;   //Init ok.
+	ctx->type = type;
+	ctx->encrypt = 0;  //Do Decrypt
+	
+	memcpy(ctx->key, key, 16);
+	memcpy(ctx->iv, iv, 16);
+	
+	ret = AES_set_decrypt_key(key, 128, &ctx->aesKey);
+
+	return ret;
+}
+
+int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *outbuf, int *outlen, unsigned char *inbuf, int inlen)
+{
+	int decryptSize = 0;
+
+	if ((ctx->flag == 0) || (inlen == 0) || (ctx->encrypt == 1))
+		return 0;  //Failed, ctx not been initializzd or input size is empty.
+
+	while (inlen >= AES_BLOCK_SIZE)
+	{
+		if (inlen <= AES_BLOCK_SIZE)
+			break;
+
+		evp_aes_cbc_encrypt(inbuf + decryptSize, outbuf + decryptSize, AES_BLOCK_SIZE, &ctx->aesKey, ctx->iv, ctx->encrypt);
+		decryptSize += AES_BLOCK_SIZE;
+		inlen       -= AES_BLOCK_SIZE;
+	}
+
+	if (inlen == AES_BLOCK_SIZE)
+	{
+		ctx->bufferlen = inlen;
+		evp_aes_cbc_encrypt(inbuf + decryptSize, ctx->buffer, AES_BLOCK_SIZE, &ctx->aesKey, ctx->iv, ctx->encrypt);
+	}
+	*outlen = decryptSize;
+
+	return 1; //Success.
+}
+
+int EVP_DecryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *outbuf, int *outlen)
+{
+	unsigned char lastchar = 0;
+	int datasize = 0;
+
+	if ((ctx->flag == 0) || (ctx->bufferlen == 0) || (ctx->encrypt == 1))
+	{
+		*outlen = 0;
+		return 0; //Failed, ctx not been initialized or buffer is empty.
+	}
+
+	lastchar = ctx->buffer[AES_BLOCK_SIZE - 1];
+	if (lastchar < AES_BLOCK_SIZE)
+	{
+		datasize = AES_BLOCK_SIZE - lastchar;
+		memcpy(outbuf, ctx->buffer, datasize);
+	}
+
+	*outlen = datasize;
+
+	return 1; //Success
+}
+
+
+
+/*  Wifi-Simple-Configure                               *
+ *  Encryption algorithm : AES-128-CBC per FIPS 197     */
+
+/* 
+ * WscEncryptData
+ * @ plainText: input data
+ * @ ptx_len:
+ * @ key: KeyWrapKey derived from KDK, len=aes-128-bit (in bytes)
+ * @ iv: a random iv, len=aes-128-bit (in bytes)
+ * @ cipherText: output data
+ * @ ctx_len:
+ */
+void WscEncryptData(
+    unsigned char *plainText,   int ptx_len,
+    unsigned char *key, unsigned char *iv,
+    unsigned char *cipherText,  int *ctx_len)
+{
+    EVP_CIPHER_CTX ctx;
+    int bufLen = 1024;
+    unsigned char outBuf[1024];
+    int outLen, currentLength;
+    
+    //block size = 1024 bytes - 128 bits, 
+    //leave 128 bits at the end to accommodate any possible padding 
+    //and avoid a buffer overflow
+    int blockSize = bufLen - AES_BLOCK_SIZE; 
+    unsigned char *bufPtr=NULL;
+    int data_len;
+
+    // init buffer
+    bufPtr = plainText;
+    data_len = ptx_len;
+
+    if(0 != EVP_EncryptInit(&ctx, EVP_aes_128_cbc(), key, iv))
+    {
+        DBGPRINT(RT_DEBUG_INFO, ("WscEncryptData: EncryptInit failed\n"));
+    }
+
+    *ctx_len = 0;
+    while(data_len)
+    {
+        if(data_len > blockSize)
+            currentLength = blockSize;
+        else
+            currentLength = data_len;
+
+        if(0 == EVP_EncryptUpdate(&ctx, outBuf, &outLen, bufPtr, currentLength))
+        {
+            DBGPRINT(RT_DEBUG_INFO, ("WscEncryptData: EncryptUpdate failed\n")); 
+        }
+        
+        // fill in output cipherText
+        memcpy(cipherText, outBuf, outLen);
+        cipherText += outLen;
+        *ctx_len += outLen;
+        
+        bufPtr += currentLength;
+        data_len -= currentLength;
+    }
+
+    
+    if(0 == EVP_EncryptFinal(&ctx, outBuf, &outLen))
+    {
+        DBGPRINT(RT_DEBUG_INFO, ("WscEncryptData: EncryptFinal failed\n"));
+    }
+
+    // fill in output cipherText
+    memcpy(cipherText, outBuf, outLen);
+    *ctx_len += outLen;
+    
+}
+
+
+/* WscDecryptData
+ * @ cipherText: input data
+ * @ ctx_len:
+ * @ key: KeyWrapKey derived from KDK, len=aes-128-bit (in bytes)
+ * @ iv: a random iv, len=aes-128-bit (in bytes)
+ * @ plainText: output data
+ * @ ptx_len:
+ */
+void WscDecryptData(
+    unsigned char *cipherText,  int ctx_len, 
+    unsigned char *key, unsigned char *iv,
+    unsigned char *plainText,   int *ptx_len)
+{
+    EVP_CIPHER_CTX ctx;
+    int bufLen = 1024;
+    unsigned char  outBuf[1024];
+    int outLen = 0, currentLength;
+    
+    //block size = 1024 bytes - 128 bits, 
+    //leave 128 bits at the end to accommodate any possible padding 
+    //and avoid a buffer overflow
+    int blockSize = bufLen - AES_BLOCK_SIZE;
+    unsigned char *bufPtr=NULL;
+    int data_len;
+    
+    // init buffer
+    bufPtr = cipherText;
+    data_len = ctx_len;
+
+    if(0 != EVP_DecryptInit(&ctx, EVP_aes_128_cbc(), key, iv))
+    {
+        DBGPRINT(RT_DEBUG_INFO, ("WscEncryptData: DecryptInit failed\n"));
+    }
+
+    *ptx_len=0;
+    while(data_len)
+    {
+        if(data_len > blockSize)
+            currentLength = blockSize;
+        else
+            currentLength = data_len;
+
+        if(0 == EVP_DecryptUpdate(&ctx, outBuf, &outLen, bufPtr, currentLength))
+        {
+            DBGPRINT(RT_DEBUG_INFO, ("WscDecryptData: DecryptUpdate failed\n"));
+        }
+
+
+        // fill in output plainText
+        memcpy(plainText, outBuf, outLen);
+        plainText += outLen;
+        *ptx_len += outLen;
+        
+        bufPtr += currentLength;
+        data_len -= currentLength;
+    }
+
+
+    if(0 == EVP_DecryptFinal(&ctx, outBuf, &outLen))
+    {
+        DBGPRINT(RT_DEBUG_INFO, ("WscDecryptData: DecryptFinal failed\n"));
+    }
+
+    // fill in output plainText
+    memcpy(plainText, outBuf, outLen);
+    *ptx_len += outLen;
+    
+}
+
+/* =========================  AES En/Decryption ========================== */
+
+/* forward S-box */
+static uint32 FSb[256] =
+{
+	0x63, 0x7C,	0x77, 0x7B,	0xF2, 0x6B,	0x6F, 0xC5,
+	0x30, 0x01,	0x67, 0x2B,	0xFE, 0xD7,	0xAB, 0x76,
+	0xCA, 0x82,	0xC9, 0x7D,	0xFA, 0x59,	0x47, 0xF0,
+	0xAD, 0xD4,	0xA2, 0xAF,	0x9C, 0xA4,	0x72, 0xC0,
+	0xB7, 0xFD,	0x93, 0x26,	0x36, 0x3F,	0xF7, 0xCC,
+	0x34, 0xA5,	0xE5, 0xF1,	0x71, 0xD8,	0x31, 0x15,
+	0x04, 0xC7,	0x23, 0xC3,	0x18, 0x96,	0x05, 0x9A,
+	0x07, 0x12,	0x80, 0xE2,	0xEB, 0x27,	0xB2, 0x75,
+	0x09, 0x83,	0x2C, 0x1A,	0x1B, 0x6E,	0x5A, 0xA0,
+	0x52, 0x3B,	0xD6, 0xB3,	0x29, 0xE3,	0x2F, 0x84,
+	0x53, 0xD1,	0x00, 0xED,	0x20, 0xFC,	0xB1, 0x5B,
+	0x6A, 0xCB,	0xBE, 0x39,	0x4A, 0x4C,	0x58, 0xCF,
+	0xD0, 0xEF,	0xAA, 0xFB,	0x43, 0x4D,	0x33, 0x85,
+	0x45, 0xF9,	0x02, 0x7F,	0x50, 0x3C,	0x9F, 0xA8,
+	0x51, 0xA3,	0x40, 0x8F,	0x92, 0x9D,	0x38, 0xF5,
+	0xBC, 0xB6,	0xDA, 0x21,	0x10, 0xFF,	0xF3, 0xD2,
+	0xCD, 0x0C,	0x13, 0xEC,	0x5F, 0x97,	0x44, 0x17,
+	0xC4, 0xA7,	0x7E, 0x3D,	0x64, 0x5D,	0x19, 0x73,
+	0x60, 0x81,	0x4F, 0xDC,	0x22, 0x2A,	0x90, 0x88,
+	0x46, 0xEE,	0xB8, 0x14,	0xDE, 0x5E,	0x0B, 0xDB,
+	0xE0, 0x32,	0x3A, 0x0A,	0x49, 0x06,	0x24, 0x5C,
+	0xC2, 0xD3,	0xAC, 0x62,	0x91, 0x95,	0xE4, 0x79,
+	0xE7, 0xC8,	0x37, 0x6D,	0x8D, 0xD5,	0x4E, 0xA9,
+	0x6C, 0x56,	0xF4, 0xEA,	0x65, 0x7A,	0xAE, 0x08,
+	0xBA, 0x78,	0x25, 0x2E,	0x1C, 0xA6,	0xB4, 0xC6,
+	0xE8, 0xDD,	0x74, 0x1F,	0x4B, 0xBD,	0x8B, 0x8A,
+	0x70, 0x3E,	0xB5, 0x66,	0x48, 0x03,	0xF6, 0x0E,
+	0x61, 0x35,	0x57, 0xB9,	0x86, 0xC1,	0x1D, 0x9E,
+	0xE1, 0xF8,	0x98, 0x11,	0x69, 0xD9,	0x8E, 0x94,
+	0x9B, 0x1E,	0x87, 0xE9,	0xCE, 0x55,	0x28, 0xDF,
+	0x8C, 0xA1,	0x89, 0x0D,	0xBF, 0xE6,	0x42, 0x68,
+	0x41, 0x99,	0x2D, 0x0F,	0xB0, 0x54,	0xBB, 0x16
+};
+
+/* forward table */
+#define	FT \
+\
+	V(C6,63,63,A5),	V(F8,7C,7C,84),	V(EE,77,77,99),	V(F6,7B,7B,8D),	\
+	V(FF,F2,F2,0D),	V(D6,6B,6B,BD),	V(DE,6F,6F,B1),	V(91,C5,C5,54),	\
+	V(60,30,30,50),	V(02,01,01,03),	V(CE,67,67,A9),	V(56,2B,2B,7D),	\
+	V(E7,FE,FE,19),	V(B5,D7,D7,62),	V(4D,AB,AB,E6),	V(EC,76,76,9A),	\
+	V(8F,CA,CA,45),	V(1F,82,82,9D),	V(89,C9,C9,40),	V(FA,7D,7D,87),	\
+	V(EF,FA,FA,15),	V(B2,59,59,EB),	V(8E,47,47,C9),	V(FB,F0,F0,0B),	\
+	V(41,AD,AD,EC),	V(B3,D4,D4,67),	V(5F,A2,A2,FD),	V(45,AF,AF,EA),	\
+	V(23,9C,9C,BF),	V(53,A4,A4,F7),	V(E4,72,72,96),	V(9B,C0,C0,5B),	\
+	V(75,B7,B7,C2),	V(E1,FD,FD,1C),	V(3D,93,93,AE),	V(4C,26,26,6A),	\
+	V(6C,36,36,5A),	V(7E,3F,3F,41),	V(F5,F7,F7,02),	V(83,CC,CC,4F),	\
+	V(68,34,34,5C),	V(51,A5,A5,F4),	V(D1,E5,E5,34),	V(F9,F1,F1,08),	\
+	V(E2,71,71,93),	V(AB,D8,D8,73),	V(62,31,31,53),	V(2A,15,15,3F),	\
+	V(08,04,04,0C),	V(95,C7,C7,52),	V(46,23,23,65),	V(9D,C3,C3,5E),	\
+	V(30,18,18,28),	V(37,96,96,A1),	V(0A,05,05,0F),	V(2F,9A,9A,B5),	\
+	V(0E,07,07,09),	V(24,12,12,36),	V(1B,80,80,9B),	V(DF,E2,E2,3D),	\
+	V(CD,EB,EB,26),	V(4E,27,27,69),	V(7F,B2,B2,CD),	V(EA,75,75,9F),	\
+	V(12,09,09,1B),	V(1D,83,83,9E),	V(58,2C,2C,74),	V(34,1A,1A,2E),	\
+	V(36,1B,1B,2D),	V(DC,6E,6E,B2),	V(B4,5A,5A,EE),	V(5B,A0,A0,FB),	\
+	V(A4,52,52,F6),	V(76,3B,3B,4D),	V(B7,D6,D6,61),	V(7D,B3,B3,CE),	\
+	V(52,29,29,7B),	V(DD,E3,E3,3E),	V(5E,2F,2F,71),	V(13,84,84,97),	\
+	V(A6,53,53,F5),	V(B9,D1,D1,68),	V(00,00,00,00),	V(C1,ED,ED,2C),	\
+	V(40,20,20,60),	V(E3,FC,FC,1F),	V(79,B1,B1,C8),	V(B6,5B,5B,ED),	\
+	V(D4,6A,6A,BE),	V(8D,CB,CB,46),	V(67,BE,BE,D9),	V(72,39,39,4B),	\
+	V(94,4A,4A,DE),	V(98,4C,4C,D4),	V(B0,58,58,E8),	V(85,CF,CF,4A),	\
+	V(BB,D0,D0,6B),	V(C5,EF,EF,2A),	V(4F,AA,AA,E5),	V(ED,FB,FB,16),	\
+	V(86,43,43,C5),	V(9A,4D,4D,D7),	V(66,33,33,55),	V(11,85,85,94),	\
+	V(8A,45,45,CF),	V(E9,F9,F9,10),	V(04,02,02,06),	V(FE,7F,7F,81),	\
+	V(A0,50,50,F0),	V(78,3C,3C,44),	V(25,9F,9F,BA),	V(4B,A8,A8,E3),	\
+	V(A2,51,51,F3),	V(5D,A3,A3,FE),	V(80,40,40,C0),	V(05,8F,8F,8A),	\
+	V(3F,92,92,AD),	V(21,9D,9D,BC),	V(70,38,38,48),	V(F1,F5,F5,04),	\
+	V(63,BC,BC,DF),	V(77,B6,B6,C1),	V(AF,DA,DA,75),	V(42,21,21,63),	\
+	V(20,10,10,30),	V(E5,FF,FF,1A),	V(FD,F3,F3,0E),	V(BF,D2,D2,6D),	\
+	V(81,CD,CD,4C),	V(18,0C,0C,14),	V(26,13,13,35),	V(C3,EC,EC,2F),	\
+	V(BE,5F,5F,E1),	V(35,97,97,A2),	V(88,44,44,CC),	V(2E,17,17,39),	\
+	V(93,C4,C4,57),	V(55,A7,A7,F2),	V(FC,7E,7E,82),	V(7A,3D,3D,47),	\
+	V(C8,64,64,AC),	V(BA,5D,5D,E7),	V(32,19,19,2B),	V(E6,73,73,95),	\
+	V(C0,60,60,A0),	V(19,81,81,98),	V(9E,4F,4F,D1),	V(A3,DC,DC,7F),	\
+	V(44,22,22,66),	V(54,2A,2A,7E),	V(3B,90,90,AB),	V(0B,88,88,83),	\
+	V(8C,46,46,CA),	V(C7,EE,EE,29),	V(6B,B8,B8,D3),	V(28,14,14,3C),	\
+	V(A7,DE,DE,79),	V(BC,5E,5E,E2),	V(16,0B,0B,1D),	V(AD,DB,DB,76),	\
+	V(DB,E0,E0,3B),	V(64,32,32,56),	V(74,3A,3A,4E),	V(14,0A,0A,1E),	\
+	V(92,49,49,DB),	V(0C,06,06,0A),	V(48,24,24,6C),	V(B8,5C,5C,E4),	\
+	V(9F,C2,C2,5D),	V(BD,D3,D3,6E),	V(43,AC,AC,EF),	V(C4,62,62,A6),	\
+	V(39,91,91,A8),	V(31,95,95,A4),	V(D3,E4,E4,37),	V(F2,79,79,8B),	\
+	V(D5,E7,E7,32),	V(8B,C8,C8,43),	V(6E,37,37,59),	V(DA,6D,6D,B7),	\
+	V(01,8D,8D,8C),	V(B1,D5,D5,64),	V(9C,4E,4E,D2),	V(49,A9,A9,E0),	\
+	V(D8,6C,6C,B4),	V(AC,56,56,FA),	V(F3,F4,F4,07),	V(CF,EA,EA,25),	\
+	V(CA,65,65,AF),	V(F4,7A,7A,8E),	V(47,AE,AE,E9),	V(10,08,08,18),	\
+	V(6F,BA,BA,D5),	V(F0,78,78,88),	V(4A,25,25,6F),	V(5C,2E,2E,72),	\
+	V(38,1C,1C,24),	V(57,A6,A6,F1),	V(73,B4,B4,C7),	V(97,C6,C6,51),	\
+	V(CB,E8,E8,23),	V(A1,DD,DD,7C),	V(E8,74,74,9C),	V(3E,1F,1F,21),	\
+	V(96,4B,4B,DD),	V(61,BD,BD,DC),	V(0D,8B,8B,86),	V(0F,8A,8A,85),	\
+	V(E0,70,70,90),	V(7C,3E,3E,42),	V(71,B5,B5,C4),	V(CC,66,66,AA),	\
+	V(90,48,48,D8),	V(06,03,03,05),	V(F7,F6,F6,01),	V(1C,0E,0E,12),	\
+	V(C2,61,61,A3),	V(6A,35,35,5F),	V(AE,57,57,F9),	V(69,B9,B9,D0),	\
+	V(17,86,86,91),	V(99,C1,C1,58),	V(3A,1D,1D,27),	V(27,9E,9E,B9),	\
+	V(D9,E1,E1,38),	V(EB,F8,F8,13),	V(2B,98,98,B3),	V(22,11,11,33),	\
+	V(D2,69,69,BB),	V(A9,D9,D9,70),	V(07,8E,8E,89),	V(33,94,94,A7),	\
+	V(2D,9B,9B,B6),	V(3C,1E,1E,22),	V(15,87,87,92),	V(C9,E9,E9,20),	\
+	V(87,CE,CE,49),	V(AA,55,55,FF),	V(50,28,28,78),	V(A5,DF,DF,7A),	\
+	V(03,8C,8C,8F),	V(59,A1,A1,F8),	V(09,89,89,80),	V(1A,0D,0D,17),	\
+	V(65,BF,BF,DA),	V(D7,E6,E6,31),	V(84,42,42,C6),	V(D0,68,68,B8),	\
+	V(82,41,41,C3),	V(29,99,99,B0),	V(5A,2D,2D,77),	V(1E,0F,0F,11),	\
+	V(7B,B0,B0,CB),	V(A8,54,54,FC),	V(6D,BB,BB,D6),	V(2C,16,16,3A)
+
+#define	V(a,b,c,d) 0x##a##b##c##d
+static uint32 FT0[256] = { FT };
+#undef V
+
+#define	V(a,b,c,d) 0x##d##a##b##c
+static uint32 FT1[256] = { FT };
+#undef V
+
+#define	V(a,b,c,d) 0x##c##d##a##b
+static uint32 FT2[256] = { FT };
+#undef V
+
+#define	V(a,b,c,d) 0x##b##c##d##a
+static uint32 FT3[256] = { FT };
+#undef V
+
+#undef FT
+
+/* reverse S-box */
+
+static uint32 RSb[256] =
+{
+	0x52, 0x09,	0x6A, 0xD5,	0x30, 0x36,	0xA5, 0x38,
+	0xBF, 0x40,	0xA3, 0x9E,	0x81, 0xF3,	0xD7, 0xFB,
+	0x7C, 0xE3,	0x39, 0x82,	0x9B, 0x2F,	0xFF, 0x87,
+	0x34, 0x8E,	0x43, 0x44,	0xC4, 0xDE,	0xE9, 0xCB,
+	0x54, 0x7B,	0x94, 0x32,	0xA6, 0xC2,	0x23, 0x3D,
+	0xEE, 0x4C,	0x95, 0x0B,	0x42, 0xFA,	0xC3, 0x4E,
+	0x08, 0x2E,	0xA1, 0x66,	0x28, 0xD9,	0x24, 0xB2,
+	0x76, 0x5B,	0xA2, 0x49,	0x6D, 0x8B,	0xD1, 0x25,
+	0x72, 0xF8,	0xF6, 0x64,	0x86, 0x68,	0x98, 0x16,
+	0xD4, 0xA4,	0x5C, 0xCC,	0x5D, 0x65,	0xB6, 0x92,
+	0x6C, 0x70,	0x48, 0x50,	0xFD, 0xED,	0xB9, 0xDA,
+	0x5E, 0x15,	0x46, 0x57,	0xA7, 0x8D,	0x9D, 0x84,
+	0x90, 0xD8,	0xAB, 0x00,	0x8C, 0xBC,	0xD3, 0x0A,
+	0xF7, 0xE4,	0x58, 0x05,	0xB8, 0xB3,	0x45, 0x06,
+	0xD0, 0x2C,	0x1E, 0x8F,	0xCA, 0x3F,	0x0F, 0x02,
+	0xC1, 0xAF,	0xBD, 0x03,	0x01, 0x13,	0x8A, 0x6B,
+	0x3A, 0x91,	0x11, 0x41,	0x4F, 0x67,	0xDC, 0xEA,
+	0x97, 0xF2,	0xCF, 0xCE,	0xF0, 0xB4,	0xE6, 0x73,
+	0x96, 0xAC,	0x74, 0x22,	0xE7, 0xAD,	0x35, 0x85,
+	0xE2, 0xF9,	0x37, 0xE8,	0x1C, 0x75,	0xDF, 0x6E,
+	0x47, 0xF1,	0x1A, 0x71,	0x1D, 0x29,	0xC5, 0x89,
+	0x6F, 0xB7,	0x62, 0x0E,	0xAA, 0x18,	0xBE, 0x1B,
+	0xFC, 0x56,	0x3E, 0x4B,	0xC6, 0xD2,	0x79, 0x20,
+	0x9A, 0xDB,	0xC0, 0xFE,	0x78, 0xCD,	0x5A, 0xF4,
+	0x1F, 0xDD,	0xA8, 0x33,	0x88, 0x07,	0xC7, 0x31,
+	0xB1, 0x12,	0x10, 0x59,	0x27, 0x80,	0xEC, 0x5F,
+	0x60, 0x51,	0x7F, 0xA9,	0x19, 0xB5,	0x4A, 0x0D,
+	0x2D, 0xE5,	0x7A, 0x9F,	0x93, 0xC9,	0x9C, 0xEF,
+	0xA0, 0xE0,	0x3B, 0x4D,	0xAE, 0x2A,	0xF5, 0xB0,
+	0xC8, 0xEB,	0xBB, 0x3C,	0x83, 0x53,	0x99, 0x61,
+	0x17, 0x2B,	0x04, 0x7E,	0xBA, 0x77,	0xD6, 0x26,
+	0xE1, 0x69,	0x14, 0x63,	0x55, 0x21,	0x0C, 0x7D
+};
+
+/* reverse table */
+
+#define	RT \
+\
+	V(51,F4,A7,50),	V(7E,41,65,53),	V(1A,17,A4,C3),	V(3A,27,5E,96),	\
+	V(3B,AB,6B,CB),	V(1F,9D,45,F1),	V(AC,FA,58,AB),	V(4B,E3,03,93),	\
+	V(20,30,FA,55),	V(AD,76,6D,F6),	V(88,CC,76,91),	V(F5,02,4C,25),	\
+	V(4F,E5,D7,FC),	V(C5,2A,CB,D7),	V(26,35,44,80),	V(B5,62,A3,8F),	\
+	V(DE,B1,5A,49),	V(25,BA,1B,67),	V(45,EA,0E,98),	V(5D,FE,C0,E1),	\
+	V(C3,2F,75,02),	V(81,4C,F0,12),	V(8D,46,97,A3),	V(6B,D3,F9,C6),	\
+	V(03,8F,5F,E7),	V(15,92,9C,95),	V(BF,6D,7A,EB),	V(95,52,59,DA),	\
+	V(D4,BE,83,2D),	V(58,74,21,D3),	V(49,E0,69,29),	V(8E,C9,C8,44),	\
+	V(75,C2,89,6A),	V(F4,8E,79,78),	V(99,58,3E,6B),	V(27,B9,71,DD),	\
+	V(BE,E1,4F,B6),	V(F0,88,AD,17),	V(C9,20,AC,66),	V(7D,CE,3A,B4),	\
+	V(63,DF,4A,18),	V(E5,1A,31,82),	V(97,51,33,60),	V(62,53,7F,45),	\
+	V(B1,64,77,E0),	V(BB,6B,AE,84),	V(FE,81,A0,1C),	V(F9,08,2B,94),	\
+	V(70,48,68,58),	V(8F,45,FD,19),	V(94,DE,6C,87),	V(52,7B,F8,B7),	\
+	V(AB,73,D3,23),	V(72,4B,02,E2),	V(E3,1F,8F,57),	V(66,55,AB,2A),	\
+	V(B2,EB,28,07),	V(2F,B5,C2,03),	V(86,C5,7B,9A),	V(D3,37,08,A5),	\
+	V(30,28,87,F2),	V(23,BF,A5,B2),	V(02,03,6A,BA),	V(ED,16,82,5C),	\
+	V(8A,CF,1C,2B),	V(A7,79,B4,92),	V(F3,07,F2,F0),	V(4E,69,E2,A1),	\
+	V(65,DA,F4,CD),	V(06,05,BE,D5),	V(D1,34,62,1F),	V(C4,A6,FE,8A),	\
+	V(34,2E,53,9D),	V(A2,F3,55,A0),	V(05,8A,E1,32),	V(A4,F6,EB,75),	\
+	V(0B,83,EC,39),	V(40,60,EF,AA),	V(5E,71,9F,06),	V(BD,6E,10,51),	\
+	V(3E,21,8A,F9),	V(96,DD,06,3D),	V(DD,3E,05,AE),	V(4D,E6,BD,46),	\
+	V(91,54,8D,B5),	V(71,C4,5D,05),	V(04,06,D4,6F),	V(60,50,15,FF),	\
+	V(19,98,FB,24),	V(D6,BD,E9,97),	V(89,40,43,CC),	V(67,D9,9E,77),	\
+	V(B0,E8,42,BD),	V(07,89,8B,88),	V(E7,19,5B,38),	V(79,C8,EE,DB),	\
+	V(A1,7C,0A,47),	V(7C,42,0F,E9),	V(F8,84,1E,C9),	V(00,00,00,00),	\
+	V(09,80,86,83),	V(32,2B,ED,48),	V(1E,11,70,AC),	V(6C,5A,72,4E),	\
+	V(FD,0E,FF,FB),	V(0F,85,38,56),	V(3D,AE,D5,1E),	V(36,2D,39,27),	\
+	V(0A,0F,D9,64),	V(68,5C,A6,21),	V(9B,5B,54,D1),	V(24,36,2E,3A),	\
+	V(0C,0A,67,B1),	V(93,57,E7,0F),	V(B4,EE,96,D2),	V(1B,9B,91,9E),	\
+	V(80,C0,C5,4F),	V(61,DC,20,A2),	V(5A,77,4B,69),	V(1C,12,1A,16),	\
+	V(E2,93,BA,0A),	V(C0,A0,2A,E5),	V(3C,22,E0,43),	V(12,1B,17,1D),	\
+	V(0E,09,0D,0B),	V(F2,8B,C7,AD),	V(2D,B6,A8,B9),	V(14,1E,A9,C8),	\
+	V(57,F1,19,85),	V(AF,75,07,4C),	V(EE,99,DD,BB),	V(A3,7F,60,FD),	\
+	V(F7,01,26,9F),	V(5C,72,F5,BC),	V(44,66,3B,C5),	V(5B,FB,7E,34),	\
+	V(8B,43,29,76),	V(CB,23,C6,DC),	V(B6,ED,FC,68),	V(B8,E4,F1,63),	\
+	V(D7,31,DC,CA),	V(42,63,85,10),	V(13,97,22,40),	V(84,C6,11,20),	\
+	V(85,4A,24,7D),	V(D2,BB,3D,F8),	V(AE,F9,32,11),	V(C7,29,A1,6D),	\
+	V(1D,9E,2F,4B),	V(DC,B2,30,F3),	V(0D,86,52,EC),	V(77,C1,E3,D0),	\
+	V(2B,B3,16,6C),	V(A9,70,B9,99),	V(11,94,48,FA),	V(47,E9,64,22),	\
+	V(A8,FC,8C,C4),	V(A0,F0,3F,1A),	V(56,7D,2C,D8),	V(22,33,90,EF),	\
+	V(87,49,4E,C7),	V(D9,38,D1,C1),	V(8C,CA,A2,FE),	V(98,D4,0B,36),	\
+	V(A6,F5,81,CF),	V(A5,7A,DE,28),	V(DA,B7,8E,26),	V(3F,AD,BF,A4),	\
+	V(2C,3A,9D,E4),	V(50,78,92,0D),	V(6A,5F,CC,9B),	V(54,7E,46,62),	\
+	V(F6,8D,13,C2),	V(90,D8,B8,E8),	V(2E,39,F7,5E),	V(82,C3,AF,F5),	\
+	V(9F,5D,80,BE),	V(69,D0,93,7C),	V(6F,D5,2D,A9),	V(CF,25,12,B3),	\
+	V(C8,AC,99,3B),	V(10,18,7D,A7),	V(E8,9C,63,6E),	V(DB,3B,BB,7B),	\
+	V(CD,26,78,09),	V(6E,59,18,F4),	V(EC,9A,B7,01),	V(83,4F,9A,A8),	\
+	V(E6,95,6E,65),	V(AA,FF,E6,7E),	V(21,BC,CF,08),	V(EF,15,E8,E6),	\
+	V(BA,E7,9B,D9),	V(4A,6F,36,CE),	V(EA,9F,09,D4),	V(29,B0,7C,D6),	\
+	V(31,A4,B2,AF),	V(2A,3F,23,31),	V(C6,A5,94,30),	V(35,A2,66,C0),	\
+	V(74,4E,BC,37),	V(FC,82,CA,A6),	V(E0,90,D0,B0),	V(33,A7,D8,15),	\
+	V(F1,04,98,4A),	V(41,EC,DA,F7),	V(7F,CD,50,0E),	V(17,91,F6,2F),	\
+	V(76,4D,D6,8D),	V(43,EF,B0,4D),	V(CC,AA,4D,54),	V(E4,96,04,DF),	\
+	V(9E,D1,B5,E3),	V(4C,6A,88,1B),	V(C1,2C,1F,B8),	V(46,65,51,7F),	\
+	V(9D,5E,EA,04),	V(01,8C,35,5D),	V(FA,87,74,73),	V(FB,0B,41,2E),	\
+	V(B3,67,1D,5A),	V(92,DB,D2,52),	V(E9,10,56,33),	V(6D,D6,47,13),	\
+	V(9A,D7,61,8C),	V(37,A1,0C,7A),	V(59,F8,14,8E),	V(EB,13,3C,89),	\
+	V(CE,A9,27,EE),	V(B7,61,C9,35),	V(E1,1C,E5,ED),	V(7A,47,B1,3C),	\
+	V(9C,D2,DF,59),	V(55,F2,73,3F),	V(18,14,CE,79),	V(73,C7,37,BF),	\
+	V(53,F7,CD,EA),	V(5F,FD,AA,5B),	V(DF,3D,6F,14),	V(78,44,DB,86),	\
+	V(CA,AF,F3,81),	V(B9,68,C4,3E),	V(38,24,34,2C),	V(C2,A3,40,5F),	\
+	V(16,1D,C3,72),	V(BC,E2,25,0C),	V(28,3C,49,8B),	V(FF,0D,95,41),	\
+	V(39,A8,01,71),	V(08,0C,B3,DE),	V(D8,B4,E4,9C),	V(64,56,C1,90),	\
+	V(7B,CB,84,61),	V(D5,32,B6,70),	V(48,6C,5C,74),	V(D0,B8,57,42)
+
+#define	V(a,b,c,d) 0x##a##b##c##d
+static uint32 RT0[256] = { RT };
+#undef V
+
+#define	V(a,b,c,d) 0x##d##a##b##c
+static uint32 RT1[256] = { RT };
+#undef V
+
+#define	V(a,b,c,d) 0x##c##d##a##b
+static uint32 RT2[256] = { RT };
+#undef V
+
+#define	V(a,b,c,d) 0x##b##c##d##a
+static uint32 RT3[256] = { RT };
+#undef V
+
+#undef RT
+
+/* round constants */
+
+static uint32 RCON[10] =
+{
+	0x01000000,	0x02000000,	0x04000000,	0x08000000,
+	0x10000000,	0x20000000,	0x40000000,	0x80000000,
+	0x1B000000,	0x36000000
+};
+
+/* key schedule	tables */
+
+static int KT_init = 1;
+
+static uint32 KT0[256];
+static uint32 KT1[256];
+static uint32 KT2[256];
+static uint32 KT3[256];
+
+/* platform-independant	32-bit integer manipulation	macros */
+
+#define	GET_UINT32(n,b,i)						\
+{												\
+	(n)	= (	(uint32) (b)[(i)	] << 24	)		\
+		| (	(uint32) (b)[(i) + 1] << 16	)		\
+		| (	(uint32) (b)[(i) + 2] <<  8	)		\
+		| (	(uint32) (b)[(i) + 3]		);		\
+}
+
+#define	PUT_UINT32(n,b,i)						\
+{												\
+	(b)[(i)	   ] = (uint8) ( (n) >>	24 );		\
+	(b)[(i)	+ 1] = (uint8) ( (n) >>	16 );		\
+	(b)[(i)	+ 2] = (uint8) ( (n) >>	 8 );		\
+	(b)[(i)	+ 3] = (uint8) ( (n)	   );		\
+}
+
+/* AES key scheduling routine */
+
+int	rtmp_aes_set_key( aes_context *ctx, uint8 *key, int nbits )
+{
+	int	i;
+	uint32 *RK,	*SK;
+
+	switch(	nbits )
+	{
+		case 128: ctx->nr =	10;	break;
+		case 192: ctx->nr =	12;	break;
+		case 256: ctx->nr =	14;	break;
+		default	: return( 1	);
+	}
+
+	RK = ctx->erk;
+
+	for( i = 0;	i <	(nbits >> 5); i++ )
+	{
+		GET_UINT32(	RK[i], key,	i *	4 );
+	}
+
+	/* setup encryption	round keys */
+
+	switch(	nbits )
+	{
+	case 128:
+
+		for( i = 0;	i <	10;	i++, RK	+= 4 )
+		{
+			RK[4]  = RK[0] ^ RCON[i] ^
+						( FSb[ (uint8) ( RK[3] >> 16 ) ] <<	24 ) ^
+						( FSb[ (uint8) ( RK[3] >>  8 ) ] <<	16 ) ^
+						( FSb[ (uint8) ( RK[3]		 ) ] <<	 8 ) ^
+						( FSb[ (uint8) ( RK[3] >> 24 ) ]	   );
+
+			RK[5]  = RK[1] ^ RK[4];
+			RK[6]  = RK[2] ^ RK[5];
+			RK[7]  = RK[3] ^ RK[6];
+		}
+		break;
+
+	case 192:
+
+		for( i = 0;	i <	8; i++,	RK += 6	)
+		{
+			RK[6]  = RK[0] ^ RCON[i] ^
+						( FSb[ (uint8) ( RK[5] >> 16 ) ] <<	24 ) ^
+						( FSb[ (uint8) ( RK[5] >>  8 ) ] <<	16 ) ^
+						( FSb[ (uint8) ( RK[5]		 ) ] <<	 8 ) ^
+						( FSb[ (uint8) ( RK[5] >> 24 ) ]	   );
+
+			RK[7]  = RK[1] ^ RK[6];
+			RK[8]  = RK[2] ^ RK[7];
+			RK[9]  = RK[3] ^ RK[8];
+			RK[10] = RK[4] ^ RK[9];
+			RK[11] = RK[5] ^ RK[10];
+		}
+		break;
+
+	case 256:
+
+		for( i = 0;	i <	7; i++,	RK += 8	)
+		{
+			RK[8]  = RK[0] ^ RCON[i] ^
+						( FSb[ (uint8) ( RK[7] >> 16 ) ] <<	24 ) ^
+						( FSb[ (uint8) ( RK[7] >>  8 ) ] <<	16 ) ^
+						( FSb[ (uint8) ( RK[7]		 ) ] <<	 8 ) ^
+						( FSb[ (uint8) ( RK[7] >> 24 ) ]	   );
+
+			RK[9]  = RK[1] ^ RK[8];
+			RK[10] = RK[2] ^ RK[9];
+			RK[11] = RK[3] ^ RK[10];
+
+			RK[12] = RK[4] ^
+						( FSb[ (uint8) ( RK[11]	>> 24 )	] << 24	) ^
+						( FSb[ (uint8) ( RK[11]	>> 16 )	] << 16	) ^
+						( FSb[ (uint8) ( RK[11]	>>	8 )	] <<  8	) ^
+						( FSb[ (uint8) ( RK[11]		  )	]		);
+
+			RK[13] = RK[5] ^ RK[12];
+			RK[14] = RK[6] ^ RK[13];
+			RK[15] = RK[7] ^ RK[14];
+		}
+		break;
+	}
+
+	/* setup decryption	round keys */
+
+	if(	KT_init	)
+	{
+		for( i = 0;	i <	256; i++ )
+		{
+			KT0[i] = RT0[ FSb[i] ];
+			KT1[i] = RT1[ FSb[i] ];
+			KT2[i] = RT2[ FSb[i] ];
+			KT3[i] = RT3[ FSb[i] ];
+		}
+
+		KT_init	= 0;
+	}
+
+	SK = ctx->drk;
+
+	*SK++ =	*RK++;
+	*SK++ =	*RK++;
+	*SK++ =	*RK++;
+	*SK++ =	*RK++;
+
+	for( i = 1;	i <	ctx->nr; i++ )
+	{
+		RK -= 8;
+
+		*SK++ =	KT0[ (uint8) ( *RK >> 24 ) ] ^
+				KT1[ (uint8) ( *RK >> 16 ) ] ^
+				KT2[ (uint8) ( *RK >>  8 ) ] ^
+				KT3[ (uint8) ( *RK		 ) ]; RK++;
+
+		*SK++ =	KT0[ (uint8) ( *RK >> 24 ) ] ^
+				KT1[ (uint8) ( *RK >> 16 ) ] ^
+				KT2[ (uint8) ( *RK >>  8 ) ] ^
+				KT3[ (uint8) ( *RK		 ) ]; RK++;
+
+		*SK++ =	KT0[ (uint8) ( *RK >> 24 ) ] ^
+				KT1[ (uint8) ( *RK >> 16 ) ] ^
+				KT2[ (uint8) ( *RK >>  8 ) ] ^
+				KT3[ (uint8) ( *RK		 ) ]; RK++;
+
+		*SK++ =	KT0[ (uint8) ( *RK >> 24 ) ] ^
+				KT1[ (uint8) ( *RK >> 16 ) ] ^
+				KT2[ (uint8) ( *RK >>  8 ) ] ^
+				KT3[ (uint8) ( *RK		 ) ]; RK++;
+	}
+
+	RK -= 8;
+
+	*SK++ =	*RK++;
+	*SK++ =	*RK++;
+	*SK++ =	*RK++;
+	*SK++ =	*RK++;
+
+	return(	0 );
+}
+
+/* AES 128-bit block encryption	routine	*/
+
+void rtmp_aes_encrypt(aes_context *ctx, uint8 input[16],	uint8 output[16] )
+{
+	uint32 *RK,	X0,	X1,	X2,	X3,	Y0,	Y1,	Y2,	Y3;
+
+	RK = ctx->erk;
+	GET_UINT32(	X0,	input,	0 ); X0	^= RK[0];
+	GET_UINT32(	X1,	input,	4 ); X1	^= RK[1];
+	GET_UINT32(	X2,	input,	8 ); X2	^= RK[2];
+	GET_UINT32(	X3,	input, 12 ); X3	^= RK[3];
+
+#define	AES_FROUND(X0,X1,X2,X3,Y0,Y1,Y2,Y3)		\
+{												\
+	RK += 4;									\
+												\
+	X0 = RK[0] ^ FT0[ (uint8) (	Y0 >> 24 ) ] ^	\
+				 FT1[ (uint8) (	Y1 >> 16 ) ] ^	\
+				 FT2[ (uint8) (	Y2 >>  8 ) ] ^	\
+				 FT3[ (uint8) (	Y3		 ) ];	\
+												\
+	X1 = RK[1] ^ FT0[ (uint8) (	Y1 >> 24 ) ] ^	\
+				 FT1[ (uint8) (	Y2 >> 16 ) ] ^	\
+				 FT2[ (uint8) (	Y3 >>  8 ) ] ^	\
+				 FT3[ (uint8) (	Y0		 ) ];	\
+												\
+	X2 = RK[2] ^ FT0[ (uint8) (	Y2 >> 24 ) ] ^	\
+				 FT1[ (uint8) (	Y3 >> 16 ) ] ^	\
+				 FT2[ (uint8) (	Y0 >>  8 ) ] ^	\
+				 FT3[ (uint8) (	Y1		 ) ];	\
+												\
+	X3 = RK[3] ^ FT0[ (uint8) (	Y3 >> 24 ) ] ^	\
+				 FT1[ (uint8) (	Y0 >> 16 ) ] ^	\
+				 FT2[ (uint8) (	Y1 >>  8 ) ] ^	\
+				 FT3[ (uint8) (	Y2		 ) ];	\
+}
+
+	AES_FROUND(	Y0,	Y1,	Y2,	Y3,	X0,	X1,	X2,	X3 );		/* round 1 */
+	AES_FROUND(	X0,	X1,	X2,	X3,	Y0,	Y1,	Y2,	Y3 );		/* round 2 */
+	AES_FROUND(	Y0,	Y1,	Y2,	Y3,	X0,	X1,	X2,	X3 );		/* round 3 */
+	AES_FROUND(	X0,	X1,	X2,	X3,	Y0,	Y1,	Y2,	Y3 );		/* round 4 */
+	AES_FROUND(	Y0,	Y1,	Y2,	Y3,	X0,	X1,	X2,	X3 );		/* round 5 */
+	AES_FROUND(	X0,	X1,	X2,	X3,	Y0,	Y1,	Y2,	Y3 );		/* round 6 */
+	AES_FROUND(	Y0,	Y1,	Y2,	Y3,	X0,	X1,	X2,	X3 );		/* round 7 */
+	AES_FROUND(	X0,	X1,	X2,	X3,	Y0,	Y1,	Y2,	Y3 );		/* round 8 */
+	AES_FROUND(	Y0,	Y1,	Y2,	Y3,	X0,	X1,	X2,	X3 );		/* round 9 */
+
+	if(	ctx->nr	> 10 )
+	{
+		AES_FROUND(	X0,	X1,	X2,	X3,	Y0,	Y1,	Y2,	Y3 );	/* round 10	*/
+		AES_FROUND(	Y0,	Y1,	Y2,	Y3,	X0,	X1,	X2,	X3 );	/* round 11	*/
+	}
+
+	if(	ctx->nr	> 12 )
+	{
+		AES_FROUND(	X0,	X1,	X2,	X3,	Y0,	Y1,	Y2,	Y3 );	/* round 12	*/
+		AES_FROUND(	Y0,	Y1,	Y2,	Y3,	X0,	X1,	X2,	X3 );	/* round 13	*/
+	}
+
+	/* last	round */
+
+	RK += 4;
+
+	X0 = RK[0] ^ ( FSb[	(uint8)	( Y0 >>	24 ) ] << 24 ) ^
+				 ( FSb[	(uint8)	( Y1 >>	16 ) ] << 16 ) ^
+				 ( FSb[	(uint8)	( Y2 >>	 8 ) ] <<  8 ) ^
+				 ( FSb[	(uint8)	( Y3	   ) ]		 );
+
+	X1 = RK[1] ^ ( FSb[	(uint8)	( Y1 >>	24 ) ] << 24 ) ^
+				 ( FSb[	(uint8)	( Y2 >>	16 ) ] << 16 ) ^
+				 ( FSb[	(uint8)	( Y3 >>	 8 ) ] <<  8 ) ^
+				 ( FSb[	(uint8)	( Y0	   ) ]		 );
+
+	X2 = RK[2] ^ ( FSb[	(uint8)	( Y2 >>	24 ) ] << 24 ) ^
+				 ( FSb[	(uint8)	( Y3 >>	16 ) ] << 16 ) ^
+				 ( FSb[	(uint8)	( Y0 >>	 8 ) ] <<  8 ) ^
+				 ( FSb[	(uint8)	( Y1	   ) ]		 );
+
+	X3 = RK[3] ^ ( FSb[	(uint8)	( Y3 >>	24 ) ] << 24 ) ^
+				 ( FSb[	(uint8)	( Y0 >>	16 ) ] << 16 ) ^
+				 ( FSb[	(uint8)	( Y1 >>	 8 ) ] <<  8 ) ^
+				 ( FSb[	(uint8)	( Y2	   ) ]		 );
+
+	PUT_UINT32(	X0,	output,	 0 );
+	PUT_UINT32(	X1,	output,	 4 );
+	PUT_UINT32(	X2,	output,	 8 );
+	PUT_UINT32(	X3,	output,	12 );
+}
+
+/* AES 128-bit block decryption	routine	*/
+
+void rtmp_aes_decrypt( aes_context *ctx,	uint8 input[16], uint8 output[16] )
+{
+	uint32 *RK,	X0,	X1,	X2,	X3,	Y0,	Y1,	Y2,	Y3;
+
+	RK = ctx->drk;
+
+	GET_UINT32(	X0,	input,	0 ); X0	^= RK[0];
+	GET_UINT32(	X1,	input,	4 ); X1	^= RK[1];
+	GET_UINT32(	X2,	input,	8 ); X2	^= RK[2];
+	GET_UINT32(	X3,	input, 12 ); X3	^= RK[3];
+
+#define	AES_RROUND(X0,X1,X2,X3,Y0,Y1,Y2,Y3)		\
+{												\
+	RK += 4;									\
+												\
+	X0 = RK[0] ^ RT0[ (uint8) (	Y0 >> 24 ) ] ^	\
+				 RT1[ (uint8) (	Y3 >> 16 ) ] ^	\
+				 RT2[ (uint8) (	Y2 >>  8 ) ] ^	\
+				 RT3[ (uint8) (	Y1		 ) ];	\
+												\
+	X1 = RK[1] ^ RT0[ (uint8) (	Y1 >> 24 ) ] ^	\
+				 RT1[ (uint8) (	Y0 >> 16 ) ] ^	\
+				 RT2[ (uint8) (	Y3 >>  8 ) ] ^	\
+				 RT3[ (uint8) (	Y2		 ) ];	\
+												\
+	X2 = RK[2] ^ RT0[ (uint8) (	Y2 >> 24 ) ] ^	\
+				 RT1[ (uint8) (	Y1 >> 16 ) ] ^	\
+				 RT2[ (uint8) (	Y0 >>  8 ) ] ^	\
+				 RT3[ (uint8) (	Y3		 ) ];	\
+												\
+	X3 = RK[3] ^ RT0[ (uint8) (	Y3 >> 24 ) ] ^	\
+				 RT1[ (uint8) (	Y2 >> 16 ) ] ^	\
+				 RT2[ (uint8) (	Y1 >>  8 ) ] ^	\
+				 RT3[ (uint8) (	Y0		 ) ];	\
+}
+
+	AES_RROUND(	Y0,	Y1,	Y2,	Y3,	X0,	X1,	X2,	X3 );		/* round 1 */
+	AES_RROUND(	X0,	X1,	X2,	X3,	Y0,	Y1,	Y2,	Y3 );		/* round 2 */
+	AES_RROUND(	Y0,	Y1,	Y2,	Y3,	X0,	X1,	X2,	X3 );		/* round 3 */
+	AES_RROUND(	X0,	X1,	X2,	X3,	Y0,	Y1,	Y2,	Y3 );		/* round 4 */
+	AES_RROUND(	Y0,	Y1,	Y2,	Y3,	X0,	X1,	X2,	X3 );		/* round 5 */
+	AES_RROUND(	X0,	X1,	X2,	X3,	Y0,	Y1,	Y2,	Y3 );		/* round 6 */
+	AES_RROUND(	Y0,	Y1,	Y2,	Y3,	X0,	X1,	X2,	X3 );		/* round 7 */
+	AES_RROUND(	X0,	X1,	X2,	X3,	Y0,	Y1,	Y2,	Y3 );		/* round 8 */
+	AES_RROUND(	Y0,	Y1,	Y2,	Y3,	X0,	X1,	X2,	X3 );		/* round 9 */
+
+	if(	ctx->nr	> 10 )
+	{
+		AES_RROUND(	X0,	X1,	X2,	X3,	Y0,	Y1,	Y2,	Y3 );	/* round 10	*/
+		AES_RROUND(	Y0,	Y1,	Y2,	Y3,	X0,	X1,	X2,	X3 );	/* round 11	*/
+	}
+
+	if(	ctx->nr	> 12 )
+	{
+		AES_RROUND(	X0,	X1,	X2,	X3,	Y0,	Y1,	Y2,	Y3 );	/* round 12	*/
+		AES_RROUND(	Y0,	Y1,	Y2,	Y3,	X0,	X1,	X2,	X3 );	/* round 13	*/
+	}
+
+	/* last	round */
+
+	RK += 4;
+
+	X0 = RK[0] ^ ( RSb[	(uint8)	( Y0 >>	24 ) ] << 24 ) ^
+				 ( RSb[	(uint8)	( Y3 >>	16 ) ] << 16 ) ^
+				 ( RSb[	(uint8)	( Y2 >>	 8 ) ] <<  8 ) ^
+				 ( RSb[	(uint8)	( Y1	   ) ]		 );
+
+	X1 = RK[1] ^ ( RSb[	(uint8)	( Y1 >>	24 ) ] << 24 ) ^
+				 ( RSb[	(uint8)	( Y0 >>	16 ) ] << 16 ) ^
+				 ( RSb[	(uint8)	( Y3 >>	 8 ) ] <<  8 ) ^
+				 ( RSb[	(uint8)	( Y2	   ) ]		 );
+
+	X2 = RK[2] ^ ( RSb[	(uint8)	( Y2 >>	24 ) ] << 24 ) ^
+				 ( RSb[	(uint8)	( Y1 >>	16 ) ] << 16 ) ^
+				 ( RSb[	(uint8)	( Y0 >>	 8 ) ] <<  8 ) ^
+				 ( RSb[	(uint8)	( Y3	   ) ]		 );
+
+	X3 = RK[3] ^ ( RSb[	(uint8)	( Y3 >>	24 ) ] << 24 ) ^
+				 ( RSb[	(uint8)	( Y2 >>	16 ) ] << 16 ) ^
+				 ( RSb[	(uint8)	( Y1 >>	 8 ) ] <<  8 ) ^
+				 ( RSb[	(uint8)	( Y0	   ) ]		 );
+
+	PUT_UINT32(	X0,	output,	 0 );
+	PUT_UINT32(	X1,	output,	 4 );
+	PUT_UINT32(	X2,	output,	 8 );
+	PUT_UINT32(	X3,	output,	12 );
+}
+
+/*
+    ==========================================================================
+    Description:
+        ENCRYPT AES GTK before sending in EAPOL frame.
+        AES GTK length = 128 bit,  so fix blocks for aes-key-wrap as 2 in this function.
+        This function references to RFC 3394 for aes key wrap algorithm.
+    Return:
+    ==========================================================================
+*/  
+VOID AES_GTK_KEY_WRAP( 
+    IN UCHAR    *key,
+    IN UCHAR    *plaintext,
+    IN UINT     p_len,
+    OUT UCHAR   *ciphertext,
+	OUT UINT    *c_len) 
+{
+    UCHAR       A[8], BIN[16], BOUT[16];
+    UCHAR       R[512];
+    INT         num_blocks = p_len/8;   // unit:64bits
+    INT         i, j;
+    aes_context aesctx;
+    UCHAR       xor;
+
+    rtmp_aes_set_key(&aesctx, key, 128);
+
+    // Init IA
+    for (i = 0; i < 8; i++)
+        A[i] = 0xa6;
+
+    //Input plaintext
+    for (i = 0; i < num_blocks; i++)
+    {
+        for (j = 0 ; j < 8; j++)
+            R[8 * (i + 1) + j] = plaintext[8 * i + j];
+    }
+
+    // Key Mix
+    for (j = 0; j < 6; j++)
+    {
+        for(i = 1; i <= num_blocks; i++)
+        {
+            //phase 1
+            NdisMoveMemory(BIN, A, 8);
+            NdisMoveMemory(&BIN[8], &R[8 * i], 8);
+            rtmp_aes_encrypt(&aesctx, BIN, BOUT);
+
+            NdisMoveMemory(A, &BOUT[0], 8);
+            xor = num_blocks * j + i;
+            A[7] = BOUT[7] ^ xor;
+            NdisMoveMemory(&R[8 * i], &BOUT[8], 8);
+        }
+    }
+
+    // Output ciphertext
+    NdisMoveMemory(ciphertext, A, 8);
+
+    for (i = 1; i <= num_blocks; i++)
+    {
+        for (j = 0 ; j < 8; j++)
+            ciphertext[8 * i + j] = R[8 * i + j];
+    }
+    *c_len = p_len + 8;
+}
+
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Misc function to decrypt AES body
+	
+	Arguments:
+			
+	Return Value:
+	
+	Note:
+		This function references to	RFC	3394 for aes key unwrap algorithm.
+			
+	========================================================================
+*/
+VOID	AES_GTK_KEY_UNWRAP( 
+	IN	UCHAR	*key,
+	OUT	UCHAR	*plaintext,
+	OUT	UINT    *p_len,
+	IN	UCHAR	*ciphertext,
+	IN	UINT    c_len)
+	
+{
+	UCHAR       A[8], BIN[16], BOUT[16];
+	UCHAR       xor;
+	INT         i, j;
+	aes_context aesctx;
+	UCHAR       *R;
+	INT         num_blocks = c_len/8;	// unit:64bits
+
+	
+	os_alloc_mem(NULL, (PUCHAR *)&R, 512);
+
+	if (R == NULL)
+    {
+        DBGPRINT(RT_DEBUG_ERROR, ("!!!AES_GTK_KEY_UNWRAP: no memory!!!\n"));
+        return;
+    } /* End of if */
+
+	// Initialize
+	NdisMoveMemory(A, ciphertext, 8);
+	//Input plaintext
+	for(i = 0; i < (c_len-8); i++)
+	{
+		R[ i] = ciphertext[i + 8];
+	}
+
+	rtmp_aes_set_key(&aesctx, key, 128);
+
+	for(j = 5; j >= 0; j--)
+	{
+		for(i = (num_blocks-1); i > 0; i--)
+		{
+			xor = (num_blocks -1 )* j + i;
+			NdisMoveMemory(BIN, A, 8);
+			BIN[7] = A[7] ^ xor;
+			NdisMoveMemory(&BIN[8], &R[(i-1)*8], 8);
+			rtmp_aes_decrypt(&aesctx, BIN, BOUT);
+			NdisMoveMemory(A, &BOUT[0], 8);
+			NdisMoveMemory(&R[(i-1)*8], &BOUT[8], 8);
+		}
+	}
+
+	// OUTPUT
+	for(i = 0; i < c_len; i++)
+	{
+		plaintext[i] = R[i];
+	}
+
+	DBGPRINT_RAW(RT_DEBUG_INFO, ("plaintext = \n"));
+	for(i = 0; i < (num_blocks *8); i++)
+	{
+		DBGPRINT_RAW(RT_DEBUG_INFO, ("%2x ", plaintext[i]));
+		if(i%16 == 15)
+			DBGPRINT_RAW(RT_DEBUG_INFO, ("\n "));
+	}
+	DBGPRINT_RAW(RT_DEBUG_INFO, ("\n  \n"));	
+
+    *p_len = c_len - 8;    
+	os_free_mem(NULL, R);
+}
+
+
+/* The value given by [x^(i-1),{00},{00},{00}], with x^(i-1) being powers of x in the field GF(2^8). */
+static const UINT32 aes_rcon[] = {
+	0x00000000, 0x01000000, 0x02000000, 0x04000000, 
+    0x08000000, 0x10000000, 0x20000000, 0x40000000, 
+    0x80000000, 0x1B000000, 0x36000000};
+
+static const UINT8 aes_sbox_enc[] = {
+  /*  0     1     2     3     4     5     6     7     8     9     a     b     c     d     e     f    */
+    0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5, 0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7 ,0xab, 0x76, /* 0 */
+    0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0, 0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4 ,0x72, 0xc0, /* 1 */
+    0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc, 0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8 ,0x31, 0x15, /* 2 */
+    0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a, 0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27 ,0xb2, 0x75, /* 3 */
+    0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0, 0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3 ,0x2f, 0x84, /* 4 */
+    0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b, 0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c ,0x58, 0xcf, /* 5 */
+    0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85, 0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c ,0x9f, 0xa8, /* 6 */
+    0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5, 0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff ,0xf3, 0xd2, /* 7 */
+    0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17, 0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d ,0x19, 0x73, /* 8 */
+    0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88, 0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e ,0x0b, 0xdb, /* 9 */
+    0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c, 0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95 ,0xe4, 0x79, /* a */
+    0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9, 0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a ,0xae, 0x08, /* b */
+    0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6, 0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd ,0x8b, 0x8a, /* c */
+    0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e, 0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1 ,0x1d, 0x9e, /* d */
+    0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94, 0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55 ,0x28, 0xdf, /* e */
+    0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68, 0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54 ,0xbb, 0x16, /* f */
+};
+
+static const UINT8 aes_sbox_dec[] = {
+  /*  0     1     2     3     4     5     6     7     8     9     a     b     c     d     e     f    */
+    0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38, 0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb, /* 0 */
+    0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87, 0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb, /* 1 */
+    0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d, 0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e, /* 2 */
+    0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2, 0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25, /* 3 */
+    0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16, 0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92, /* 4 */
+    0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda, 0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84, /* 5 */
+    0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a, 0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06, /* 6 */
+    0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02, 0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b, /* 7 */
+    0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea, 0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73, /* 8 */
+    0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85, 0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e, /* 9 */
+    0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89, 0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b, /* a */
+    0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20, 0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4, /* b */
+    0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31, 0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f, /* c */
+    0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d, 0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef, /* d */
+    0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0, 0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61, /* e */
+    0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26, 0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d, /* f */
+};
+
+/* ArrayIndex*{02} */
+static const UINT8 aes_mul_2[] = {
+  /*  0     1     2     3     4     5     6     7     8     9     a     b     c     d     e     f    */
+    0x00, 0x02, 0x04, 0x06, 0x08, 0x0a, 0x0c, 0x0e, 0x10, 0x12, 0x14, 0x16, 0x18, 0x1a, 0x1c, 0x1e, /* 0 */
+    0x20, 0x22, 0x24, 0x26, 0x28, 0x2a, 0x2c, 0x2e, 0x30, 0x32, 0x34, 0x36, 0x38, 0x3a, 0x3c, 0x3e, /* 1 */
+    0x40, 0x42, 0x44, 0x46, 0x48, 0x4a, 0x4c, 0x4e, 0x50, 0x52, 0x54, 0x56, 0x58, 0x5a, 0x5c, 0x5e, /* 2 */
+    0x60, 0x62, 0x64, 0x66, 0x68, 0x6a, 0x6c, 0x6e, 0x70, 0x72, 0x74, 0x76, 0x78, 0x7a, 0x7c, 0x7e, /* 3 */
+    0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c, 0x8e, 0x90, 0x92, 0x94, 0x96, 0x98, 0x9a, 0x9c, 0x9e, /* 4 */
+    0xa0, 0xa2, 0xa4, 0xa6, 0xa8, 0xaa, 0xac, 0xae, 0xb0, 0xb2, 0xb4, 0xb6, 0xb8, 0xba, 0xbc, 0xbe, /* 5 */
+    0xc0, 0xc2, 0xc4, 0xc6, 0xc8, 0xca, 0xcc, 0xce, 0xd0, 0xd2, 0xd4, 0xd6, 0xd8, 0xda, 0xdc, 0xde, /* 6 */
+    0xe0, 0xe2, 0xe4, 0xe6, 0xe8, 0xea, 0xec, 0xee, 0xf0, 0xf2, 0xf4, 0xf6, 0xf8, 0xfa, 0xfc, 0xfe, /* 7 */
+    0x1b, 0x19, 0x1f, 0x1d, 0x13, 0x11, 0x17, 0x15, 0x0b, 0x09, 0x0f, 0x0d, 0x03, 0x01, 0x07, 0x05, /* 8 */
+    0x3b, 0x39, 0x3f, 0x3d, 0x33, 0x31, 0x37, 0x35, 0x2b, 0x29, 0x2f, 0x2d, 0x23, 0x21, 0x27, 0x25, /* 9 */
+    0x5b, 0x59, 0x5f, 0x5d, 0x53, 0x51, 0x57, 0x55, 0x4b, 0x49, 0x4f, 0x4d, 0x43, 0x41, 0x47, 0x45, /* a */
+    0x7b, 0x79, 0x7f, 0x7d, 0x73, 0x71, 0x77, 0x75, 0x6b, 0x69, 0x6f, 0x6d, 0x63, 0x61, 0x67, 0x65, /* b */
+    0x9b, 0x99, 0x9f, 0x9d, 0x93, 0x91, 0x97, 0x95, 0x8b, 0x89, 0x8f, 0x8d, 0x83, 0x81, 0x87, 0x85, /* c */
+    0xbb, 0xb9, 0xbf, 0xbd, 0xb3, 0xb1, 0xb7, 0xb5, 0xab, 0xa9, 0xaf, 0xad, 0xa3, 0xa1, 0xa7, 0xa5, /* d */
+    0xdb, 0xd9, 0xdf, 0xdd, 0xd3, 0xd1, 0xd7, 0xd5, 0xcb, 0xc9, 0xcf, 0xcd, 0xc3, 0xc1, 0xc7, 0xc5, /* e */
+    0xfb, 0xf9, 0xff, 0xfd, 0xf3, 0xf1, 0xf7, 0xf5, 0xeb, 0xe9, 0xef, 0xed, 0xe3, 0xe1, 0xe7, 0xe5, /* f */
+};
+
+/* ArrayIndex*{03} */
+static const UINT8 aes_mul_3[] = {
+  /*  0     1     2     3     4     5     6     7     8     9     a     b     c     d     e     f    */
+    0x00, 0x03, 0x06, 0x05, 0x0c, 0x0f, 0x0a, 0x09, 0x18, 0x1b, 0x1e, 0x1d, 0x14, 0x17, 0x12, 0x11, /* 0 */
+    0x30, 0x33, 0x36, 0x35, 0x3c, 0x3f, 0x3a, 0x39, 0x28, 0x2b, 0x2e, 0x2d, 0x24, 0x27, 0x22, 0x21, /* 1 */
+    0x60, 0x63, 0x66, 0x65, 0x6c, 0x6f, 0x6a, 0x69, 0x78, 0x7b, 0x7e, 0x7d, 0x74, 0x77, 0x72, 0x71, /* 2 */
+    0x50, 0x53, 0x56, 0x55, 0x5c, 0x5f, 0x5a, 0x59, 0x48, 0x4b, 0x4e, 0x4d, 0x44, 0x47, 0x42, 0x41, /* 3 */
+    0xc0, 0xc3, 0xc6, 0xc5, 0xcc, 0xcf, 0xca, 0xc9, 0xd8, 0xdb, 0xde, 0xdd, 0xd4, 0xd7, 0xd2, 0xd1, /* 4 */
+    0xf0, 0xf3, 0xf6, 0xf5, 0xfc, 0xff, 0xfa, 0xf9, 0xe8, 0xeb, 0xee, 0xed, 0xe4, 0xe7, 0xe2, 0xe1, /* 5 */
+    0xa0, 0xa3, 0xa6, 0xa5, 0xac, 0xaf, 0xaa, 0xa9, 0xb8, 0xbb, 0xbe, 0xbd, 0xb4, 0xb7, 0xb2, 0xb1, /* 6 */
+    0x90, 0x93, 0x96, 0x95, 0x9c, 0x9f, 0x9a, 0x99, 0x88, 0x8b, 0x8e, 0x8d, 0x84, 0x87, 0x82, 0x81, /* 7 */
+    0x9b, 0x98, 0x9d, 0x9e, 0x97, 0x94, 0x91, 0x92, 0x83, 0x80, 0x85, 0x86, 0x8f, 0x8c, 0x89, 0x8a, /* 8 */
+    0xab, 0xa8, 0xad, 0xae, 0xa7, 0xa4, 0xa1, 0xa2, 0xb3, 0xb0, 0xb5, 0xb6, 0xbf, 0xbc, 0xb9, 0xba, /* 9 */
+    0xfb, 0xf8, 0xfd, 0xfe, 0xf7, 0xf4, 0xf1, 0xf2, 0xe3, 0xe0, 0xe5, 0xe6, 0xef, 0xec, 0xe9, 0xea, /* a */
+    0xcb, 0xc8, 0xcd, 0xce, 0xc7, 0xc4, 0xc1, 0xc2, 0xd3, 0xd0, 0xd5, 0xd6, 0xdf, 0xdc, 0xd9, 0xda, /* b */
+    0x5b, 0x58, 0x5d, 0x5e, 0x57, 0x54, 0x51, 0x52, 0x43, 0x40, 0x45, 0x46, 0x4f, 0x4c, 0x49, 0x4a, /* c */
+    0x6b, 0x68, 0x6d, 0x6e, 0x67, 0x64, 0x61, 0x62, 0x73, 0x70, 0x75, 0x76, 0x7f, 0x7c, 0x79, 0x7a, /* d */
+    0x3b, 0x38, 0x3d, 0x3e, 0x37, 0x34, 0x31, 0x32, 0x23, 0x20, 0x25, 0x26, 0x2f, 0x2c, 0x29, 0x2a, /* e */
+    0x0b, 0x08, 0x0d, 0x0e, 0x07, 0x04, 0x01, 0x02, 0x13, 0x10, 0x15, 0x16, 0x1f, 0x1c, 0x19, 0x1a, /* f */
+};
+
+/* ArrayIndex*{09} */
+static const UINT8 aes_mul_9[] = {
+  /*  0     1     2     3     4     5     6     7     8     9     a     b     c     d     e     f    */
+    0x00, 0x09, 0x12, 0x1b, 0x24, 0x2d, 0x36, 0x3f, 0x48, 0x41, 0x5a, 0x53, 0x6c, 0x65, 0x7e, 0x77, /* 0 */
+    0x90, 0x99, 0x82, 0x8b, 0xb4, 0xbd, 0xa6, 0xaf, 0xd8, 0xd1, 0xca, 0xc3, 0xfc, 0xf5, 0xee, 0xe7, /* 1 */
+    0x3b, 0x32, 0x29, 0x20, 0x1f, 0x16, 0x0d, 0x04, 0x73, 0x7a, 0x61, 0x68, 0x57, 0x5e, 0x45, 0x4c, /* 2 */
+    0xab, 0xa2, 0xb9, 0xb0, 0x8f, 0x86, 0x9d, 0x94, 0xe3, 0xea, 0xf1, 0xf8, 0xc7, 0xce, 0xd5, 0xdc, /* 3 */
+    0x76, 0x7f, 0x64, 0x6d, 0x52, 0x5b, 0x40, 0x49, 0x3e, 0x37, 0x2c, 0x25, 0x1a, 0x13, 0x08, 0x01, /* 4 */
+    0xe6, 0xef, 0xf4, 0xfd, 0xc2, 0xcb, 0xd0, 0xd9, 0xae, 0xa7, 0xbc, 0xb5, 0x8a, 0x83, 0x98, 0x91, /* 5 */
+    0x4d, 0x44, 0x5f, 0x56, 0x69, 0x60, 0x7b, 0x72, 0x05, 0x0c, 0x17, 0x1e, 0x21, 0x28, 0x33, 0x3a, /* 6 */
+    0xdd, 0xd4, 0xcf, 0xc6, 0xf9, 0xf0, 0xeb, 0xe2, 0x95, 0x9c, 0x87, 0x8e, 0xb1, 0xb8, 0xa3, 0xaa, /* 7 */
+    0xec, 0xe5, 0xfe, 0xf7, 0xc8, 0xc1, 0xda, 0xd3, 0xa4, 0xad, 0xb6, 0xbf, 0x80, 0x89, 0x92, 0x9b, /* 8 */
+    0x7c, 0x75, 0x6e, 0x67, 0x58, 0x51, 0x4a, 0x43, 0x34, 0x3d, 0x26, 0x2f, 0x10, 0x19, 0x02, 0x0b, /* 9 */
+    0xd7, 0xde, 0xc5, 0xcc, 0xf3, 0xfa, 0xe1, 0xe8, 0x9f, 0x96, 0x8d, 0x84, 0xbb, 0xb2, 0xa9, 0xa0, /* a */
+    0x47, 0x4e, 0x55, 0x5c, 0x63, 0x6a, 0x71, 0x78, 0x0f, 0x06, 0x1d, 0x14, 0x2b, 0x22, 0x39, 0x30, /* b */
+    0x9a, 0x93, 0x88, 0x81, 0xbe, 0xb7, 0xac, 0xa5, 0xd2, 0xdb, 0xc0, 0xc9, 0xf6, 0xff, 0xe4, 0xed, /* c */
+    0x0a, 0x03, 0x18, 0x11, 0x2e, 0x27, 0x3c, 0x35, 0x42, 0x4b, 0x50, 0x59, 0x66, 0x6f, 0x74, 0x7d, /* d */
+    0xa1, 0xa8, 0xb3, 0xba, 0x85, 0x8c, 0x97, 0x9e, 0xe9, 0xe0, 0xfb, 0xf2, 0xcd, 0xc4, 0xdf, 0xd6, /* e */
+    0x31, 0x38, 0x23, 0x2a, 0x15, 0x1c, 0x07, 0x0e, 0x79, 0x70, 0x6b, 0x62, 0x5d, 0x54, 0x4f, 0x46, /* f */
+};
+
+/* ArrayIndex*{0b} */
+static const UINT8 aes_mul_b[] = {
+  /*  0     1     2     3     4     5     6     7     8     9     a     b     c     d     e     f    */
+    0x00, 0x0b, 0x16, 0x1d, 0x2c, 0x27, 0x3a, 0x31, 0x58, 0x53, 0x4e, 0x45, 0x74, 0x7f, 0x62, 0x69, /* 0 */
+    0xb0, 0xbb, 0xa6, 0xad, 0x9c, 0x97, 0x8a, 0x81, 0xe8, 0xe3, 0xfe, 0xf5, 0xc4, 0xcf, 0xd2, 0xd9, /* 1 */
+    0x7b, 0x70, 0x6d, 0x66, 0x57, 0x5c, 0x41, 0x4a, 0x23, 0x28, 0x35, 0x3e, 0x0f, 0x04, 0x19, 0x12, /* 2 */
+    0xcb, 0xc0, 0xdd, 0xd6, 0xe7, 0xec, 0xf1, 0xfa, 0x93, 0x98, 0x85, 0x8e, 0xbf, 0xb4, 0xa9, 0xa2, /* 3 */
+    0xf6, 0xfd, 0xe0, 0xeb, 0xda, 0xd1, 0xcc, 0xc7, 0xae, 0xa5, 0xb8, 0xb3, 0x82, 0x89, 0x94, 0x9f, /* 4 */
+    0x46, 0x4d, 0x50, 0x5b, 0x6a, 0x61, 0x7c, 0x77, 0x1e, 0x15, 0x08, 0x03, 0x32, 0x39, 0x24, 0x2f, /* 5 */
+    0x8d, 0x86, 0x9b, 0x90, 0xa1, 0xaa, 0xb7, 0xbc, 0xd5, 0xde, 0xc3, 0xc8, 0xf9, 0xf2, 0xef, 0xe4, /* 6 */
+    0x3d, 0x36, 0x2b, 0x20, 0x11, 0x1a, 0x07, 0x0c, 0x65, 0x6e, 0x73, 0x78, 0x49, 0x42, 0x5f, 0x54, /* 7 */
+    0xf7, 0xfc, 0xe1, 0xea, 0xdb, 0xd0, 0xcd, 0xc6, 0xaf, 0xa4, 0xb9, 0xb2, 0x83, 0x88, 0x95, 0x9e, /* 8 */
+    0x47, 0x4c, 0x51, 0x5a, 0x6b, 0x60, 0x7d, 0x76, 0x1f, 0x14, 0x09, 0x02, 0x33, 0x38, 0x25, 0x2e, /* 9 */
+    0x8c, 0x87, 0x9a, 0x91, 0xa0, 0xab, 0xb6, 0xbd, 0xd4, 0xdf, 0xc2, 0xc9, 0xf8, 0xf3, 0xee, 0xe5, /* a */
+    0x3c, 0x37, 0x2a, 0x21, 0x10, 0x1b, 0x06, 0x0d, 0x64, 0x6f, 0x72, 0x79, 0x48, 0x43, 0x5e, 0x55, /* b */
+    0x01, 0x0a, 0x17, 0x1c, 0x2d, 0x26, 0x3b, 0x30, 0x59, 0x52, 0x4f, 0x44, 0x75, 0x7e, 0x63, 0x68, /* c */
+    0xb1, 0xba, 0xa7, 0xac, 0x9d, 0x96, 0x8b, 0x80, 0xe9, 0xe2, 0xff, 0xf4, 0xc5, 0xce, 0xd3, 0xd8, /* d */
+    0x7a, 0x71, 0x6c, 0x67, 0x56, 0x5d, 0x40, 0x4b, 0x22, 0x29, 0x34, 0x3f, 0x0e, 0x05, 0x18, 0x13, /* e */
+    0xca, 0xc1, 0xdc, 0xd7, 0xe6, 0xed, 0xf0, 0xfb, 0x92, 0x99, 0x84, 0x8f, 0xbe, 0xb5, 0xa8, 0xa3, /* f */
+};
+
+/* ArrayIndex*{0d} */
+static const UINT8 aes_mul_d[] = {
+  /*  0     1     2     3     4     5     6     7     8     9     a     b     c     d     e     f    */
+    0x00, 0x0d, 0x1a, 0x17, 0x34, 0x39, 0x2e, 0x23, 0x68, 0x65, 0x72, 0x7f, 0x5c, 0x51, 0x46, 0x4b, /* 0 */
+    0xd0, 0xdd, 0xca, 0xc7, 0xe4, 0xe9, 0xfe, 0xf3, 0xb8, 0xb5, 0xa2, 0xaf, 0x8c, 0x81, 0x96, 0x9b, /* 1 */
+    0xbb, 0xb6, 0xa1, 0xac, 0x8f, 0x82, 0x95, 0x98, 0xd3, 0xde, 0xc9, 0xc4, 0xe7, 0xea, 0xfd, 0xf0, /* 2 */
+    0x6b, 0x66, 0x71, 0x7c, 0x5f, 0x52, 0x45, 0x48, 0x03, 0x0e, 0x19, 0x14, 0x37, 0x3a, 0x2d, 0x20, /* 3 */
+    0x6d, 0x60, 0x77, 0x7a, 0x59, 0x54, 0x43, 0x4e, 0x05, 0x08, 0x1f, 0x12, 0x31, 0x3c, 0x2b, 0x26, /* 4 */
+    0xbd, 0xb0, 0xa7, 0xaa, 0x89, 0x84, 0x93, 0x9e, 0xd5, 0xd8, 0xcf, 0xc2, 0xe1, 0xec, 0xfb, 0xf6, /* 5 */
+    0xd6, 0xdb, 0xcc, 0xc1, 0xe2, 0xef, 0xf8, 0xf5, 0xbe, 0xb3, 0xa4, 0xa9, 0x8a, 0x87, 0x90, 0x9d, /* 6 */
+    0x06, 0x0b, 0x1c, 0x11, 0x32, 0x3f, 0x28, 0x25, 0x6e, 0x63, 0x74, 0x79, 0x5a, 0x57, 0x40, 0x4d, /* 7 */
+    0xda, 0xd7, 0xc0, 0xcd, 0xee, 0xe3, 0xf4, 0xf9, 0xb2, 0xbf, 0xa8, 0xa5, 0x86, 0x8b, 0x9c, 0x91, /* 8 */
+    0x0a, 0x07, 0x10, 0x1d, 0x3e, 0x33, 0x24, 0x29, 0x62, 0x6f, 0x78, 0x75, 0x56, 0x5b, 0x4c, 0x41, /* 9 */
+    0x61, 0x6c, 0x7b, 0x76, 0x55, 0x58, 0x4f, 0x42, 0x09, 0x04, 0x13, 0x1e, 0x3d, 0x30, 0x27, 0x2a, /* a */
+    0xb1, 0xbc, 0xab, 0xa6, 0x85, 0x88, 0x9f, 0x92, 0xd9, 0xd4, 0xc3, 0xce, 0xed, 0xe0, 0xf7, 0xfa, /* b */
+    0xb7, 0xba, 0xad, 0xa0, 0x83, 0x8e, 0x99, 0x94, 0xdf, 0xd2, 0xc5, 0xc8, 0xeb, 0xe6, 0xf1, 0xfc, /* c */
+    0x67, 0x6a, 0x7d, 0x70, 0x53, 0x5e, 0x49, 0x44, 0x0f, 0x02, 0x15, 0x18, 0x3b, 0x36, 0x21, 0x2c, /* d */
+    0x0c, 0x01, 0x16, 0x1b, 0x38, 0x35, 0x22, 0x2f, 0x64, 0x69, 0x7e, 0x73, 0x50, 0x5d, 0x4a, 0x47, /* e */
+    0xdc, 0xd1, 0xc6, 0xcb, 0xe8, 0xe5, 0xf2, 0xff, 0xb4, 0xb9, 0xae, 0xa3, 0x80, 0x8d, 0x9a, 0x97, /* f */
+};
+
+/* ArrayIndex*{0e} */
+static const UINT8 aes_mul_e[] = {
+  /*  0     1     2     3     4     5     6     7     8     9     a     b     c     d     e     f    */
+    0x00, 0x0e, 0x1c, 0x12, 0x38, 0x36, 0x24, 0x2a, 0x70, 0x7e, 0x6c, 0x62, 0x48, 0x46, 0x54, 0x5a, /* 0 */
+    0xe0, 0xee, 0xfc, 0xf2, 0xd8, 0xd6, 0xc4, 0xca, 0x90, 0x9e, 0x8c, 0x82, 0xa8, 0xa6, 0xb4, 0xba, /* 1 */
+    0xdb, 0xd5, 0xc7, 0xc9, 0xe3, 0xed, 0xff, 0xf1, 0xab, 0xa5, 0xb7, 0xb9, 0x93, 0x9d, 0x8f, 0x81, /* 2 */
+    0x3b, 0x35, 0x27, 0x29, 0x03, 0x0d, 0x1f, 0x11, 0x4b, 0x45, 0x57, 0x59, 0x73, 0x7d, 0x6f, 0x61, /* 3 */
+    0xad, 0xa3, 0xb1, 0xbf, 0x95, 0x9b, 0x89, 0x87, 0xdd, 0xd3, 0xc1, 0xcf, 0xe5, 0xeb, 0xf9, 0xf7, /* 4 */
+    0x4d, 0x43, 0x51, 0x5f, 0x75, 0x7b, 0x69, 0x67, 0x3d, 0x33, 0x21, 0x2f, 0x05, 0x0b, 0x19, 0x17, /* 5 */
+    0x76, 0x78, 0x6a, 0x64, 0x4e, 0x40, 0x52, 0x5c, 0x06, 0x08, 0x1a, 0x14, 0x3e, 0x30, 0x22, 0x2c, /* 6 */
+    0x96, 0x98, 0x8a, 0x84, 0xae, 0xa0, 0xb2, 0xbc, 0xe6, 0xe8, 0xfa, 0xf4, 0xde, 0xd0, 0xc2, 0xcc, /* 7 */
+    0x41, 0x4f, 0x5d, 0x53, 0x79, 0x77, 0x65, 0x6b, 0x31, 0x3f, 0x2d, 0x23, 0x09, 0x07, 0x15, 0x1b, /* 8 */
+    0xa1, 0xaf, 0xbd, 0xb3, 0x99, 0x97, 0x85, 0x8b, 0xd1, 0xdf, 0xcd, 0xc3, 0xe9, 0xe7, 0xf5, 0xfb, /* 9 */
+    0x9a, 0x94, 0x86, 0x88, 0xa2, 0xac, 0xbe, 0xb0, 0xea, 0xe4, 0xf6, 0xf8, 0xd2, 0xdc, 0xce, 0xc0, /* a */
+    0x7a, 0x74, 0x66, 0x68, 0x42, 0x4c, 0x5e, 0x50, 0x0a, 0x04, 0x16, 0x18, 0x32, 0x3c, 0x2e, 0x20, /* b */
+    0xec, 0xe2, 0xf0, 0xfe, 0xd4, 0xda, 0xc8, 0xc6, 0x9c, 0x92, 0x80, 0x8e, 0xa4, 0xaa, 0xb8, 0xb6, /* c */
+    0x0c, 0x02, 0x10, 0x1e, 0x34, 0x3a, 0x28, 0x26, 0x7c, 0x72, 0x60, 0x6e, 0x44, 0x4a, 0x58, 0x56, /* d */
+    0x37, 0x39, 0x2b, 0x25, 0x0f, 0x01, 0x13, 0x1d, 0x47, 0x49, 0x5b, 0x55, 0x7f, 0x71, 0x63, 0x6d, /* e */
+    0xd7, 0xd9, 0xcb, 0xc5, 0xef, 0xe1, 0xf3, 0xfd, 0xa7, 0xa9, 0xbb, 0xb5, 0x9f, 0x91, 0x83, 0x8d, /* f */
+};
+
+/* For AES_CMAC */
+#define AES_MAC_LENGTH 16 /* 128-bit string */
+static UINT8 Const_Zero[16] = {
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+static UINT8 Const_Rb[16] = {
+    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87};
+   
+/*
+========================================================================
+Routine Description:
+    AES key expansion (key schedule)
+
+Arguments:
+    Key              Cipher key, it may be 16, 24, or 32 bytes (128, 192, or 256 bits)
+    KeyLength        The length of cipher key in bytes
+    paes_ctx         Pointer to AES_CTX_STRUC
+
+Return Value:
+    paes_ctx         Retrun the KeyWordExpansion of AES_CTX_STRUC
+
+Note:
+    Pseudo code for key expansion
+    ------------------------------------------
+       Nk = (key length/4);
+       
+       while (i < Nk)
+           KeyWordExpansion[i] = word(key[4*i], key[4*i + 1], key[4*i + 2], key[4*i + 3]);
+           i++;
+       end while
+
+       while (i < ((key length/4 + 6 + 1)*4) )
+           temp = KeyWordExpansion[i - 1];
+           if (i % Nk ==0)
+               temp = SubWord(RotWord(temp)) ^ Rcon[i/Nk];
+           else if ((Nk > 6) && (i % 4 == 4))
+               temp = SubWord(temp);
+           end if
+
+           KeyWordExpansion[i] = KeyWordExpansion[i - Nk]^ temp;
+           i++;
+       end while
+========================================================================
+*/
+VOID RT_AES_KeyExpansion (
+    IN UINT8 Key[],
+    IN UINT KeyLength,
+    INOUT AES_CTX_STRUC *paes_ctx)
+{
+    UINT KeyIndex = 0;
+    UINT NumberOfWordOfKey, NumberOfWordOfKeyExpansion;
+    UINT8  TempWord[AES_KEY_ROWS], Temp;
+    UINT32 Temprcon;
+
+    NumberOfWordOfKey = KeyLength >> 2;
+    while (KeyIndex < NumberOfWordOfKey)
+    {
+        paes_ctx->KeyWordExpansion[0][KeyIndex] = Key[4*KeyIndex];
+        paes_ctx->KeyWordExpansion[1][KeyIndex] = Key[4*KeyIndex + 1];
+        paes_ctx->KeyWordExpansion[2][KeyIndex] = Key[4*KeyIndex + 2];
+        paes_ctx->KeyWordExpansion[3][KeyIndex] = Key[4*KeyIndex + 3];
+        KeyIndex++;
+    } /* End of while */
+
+    NumberOfWordOfKeyExpansion = ((UINT) AES_KEY_ROWS) * ((KeyLength >> 2) + 6 + 1);    
+    while (KeyIndex < NumberOfWordOfKeyExpansion)
+    {
+        TempWord[0] = paes_ctx->KeyWordExpansion[0][KeyIndex - 1];
+        TempWord[1] = paes_ctx->KeyWordExpansion[1][KeyIndex - 1];
+        TempWord[2] = paes_ctx->KeyWordExpansion[2][KeyIndex - 1];
+        TempWord[3] = paes_ctx->KeyWordExpansion[3][KeyIndex - 1];
+        if ((KeyIndex % NumberOfWordOfKey) == 0) {
+            Temprcon = aes_rcon[KeyIndex/NumberOfWordOfKey];
+            Temp = aes_sbox_enc[TempWord[1]]^((Temprcon >> 24) & 0xff);
+            TempWord[1] = aes_sbox_enc[TempWord[2]]^((Temprcon >> 16) & 0xff);
+            TempWord[2] = aes_sbox_enc[TempWord[3]]^((Temprcon >>  8) & 0xff);
+            TempWord[3] = aes_sbox_enc[TempWord[0]]^((Temprcon      ) & 0xff);
+            TempWord[0] = Temp;
+        } else if ((NumberOfWordOfKey > 6) && ((KeyIndex % NumberOfWordOfKey) == 4)) {
+            Temp = aes_sbox_enc[TempWord[0]];
+            TempWord[1] = aes_sbox_enc[TempWord[1]];
+            TempWord[2] = aes_sbox_enc[TempWord[2]];
+            TempWord[3] = aes_sbox_enc[TempWord[3]];
+            TempWord[0] = Temp;
+        }
+        paes_ctx->KeyWordExpansion[0][KeyIndex] = paes_ctx->KeyWordExpansion[0][KeyIndex - NumberOfWordOfKey]^TempWord[0];
+        paes_ctx->KeyWordExpansion[1][KeyIndex] = paes_ctx->KeyWordExpansion[1][KeyIndex - NumberOfWordOfKey]^TempWord[1];
+        paes_ctx->KeyWordExpansion[2][KeyIndex] = paes_ctx->KeyWordExpansion[2][KeyIndex - NumberOfWordOfKey]^TempWord[2];
+        paes_ctx->KeyWordExpansion[3][KeyIndex] = paes_ctx->KeyWordExpansion[3][KeyIndex - NumberOfWordOfKey]^TempWord[3];
+        KeyIndex++;
+    } /* End of while */
+} /* End of RT_AES_KeyExpansion */
+
+
+/*
+========================================================================
+Routine Description:
+    AES encryption
+
+Arguments:
+    PlainBlock       The block of plain text, 16 bytes(128 bits) each block
+    PlainBlockSize   The length of block of plain text in bytes
+    Key              Cipher key, it may be 16, 24, or 32 bytes (128, 192, or 256 bits)
+    KeyLength        The length of cipher key in bytes
+    CipherBlockSize  The length of allocated cipher block in bytes
+
+Return Value:
+    CipherBlock      Return cipher text
+    CipherBlockSize  Return the length of real used cipher block in bytes
+
+Note:
+    Reference to FIPS-PUB 197
+    1. Check if block size is 16 bytes(128 bits) and if key length is 16, 24, or 32 bytes(128, 192, or 256 bits)
+    2. Transfer the plain block to state block 
+    3. Main encryption rounds
+    4. Transfer the state block to cipher block
+    ------------------------------------------
+       NumberOfRound = (key length / 4) + 6;
+       state block = plain block;
+       
+       AddRoundKey(state block, key);
+       for round = 1 to NumberOfRound
+           SubBytes(state block)
+           ShiftRows(state block)
+           MixColumns(state block)
+           AddRoundKey(state block, key);
+       end for
+
+       SubBytes(state block)
+       ShiftRows(state block)
+       AddRoundKey(state block, key);
+
+       cipher block = state block;
+========================================================================
+*/
+VOID RT_AES_Encrypt (
+    IN UINT8 PlainBlock[],
+    IN UINT PlainBlockSize,
+    IN UINT8 Key[],
+    IN UINT KeyLength,
+    OUT UINT8 CipherBlock[],
+    INOUT UINT *CipherBlockSize)
+{
+    AES_CTX_STRUC aes_ctx;
+    UINT RowIndex, ColumnIndex;
+    UINT RoundIndex, NumberOfRound = 0;
+    UINT8 Temp, Row0, Row1, Row2, Row3;
+
+    /*   
+     * 1. Check if block size is 16 bytes(128 bits) and if key length is 16, 24, or 32 bytes(128, 192, or 256 bits) 
+     */
+    if (PlainBlockSize != AES_BLOCK_SIZES) {
+    	DBGPRINT(RT_DEBUG_ERROR, ("RT_AES_Encrypt: plain block size is %d bytes, it must be %d bytes(128 bits).\n", 
+            PlainBlockSize, AES_BLOCK_SIZES));
+        return;
+    } /* End of if */
+    if ((KeyLength != AES_KEY128_LENGTH) && (KeyLength != AES_KEY192_LENGTH) && (KeyLength != AES_KEY256_LENGTH)) {
+    	DBGPRINT(RT_DEBUG_ERROR, ("RT_AES_Encrypt: key length is %d bytes, it must be %d, %d, or %d bytes(128, 192, or 256 bits).\n", 
+            KeyLength, AES_KEY128_LENGTH, AES_KEY192_LENGTH, AES_KEY256_LENGTH));
+        return;
+    } /* End of if */
+    if (*CipherBlockSize < AES_BLOCK_SIZES) {
+    	DBGPRINT(RT_DEBUG_ERROR, ("RT_AES_Encrypt: cipher block size is %d bytes, it must be %d bytes(128 bits).\n", 
+            *CipherBlockSize, AES_BLOCK_SIZES));
+        return;
+    } /* End of if */
+
+    /* 
+     * 2. Transfer the plain block to state block 
+     */
+    for (RowIndex = 0; RowIndex < AES_STATE_ROWS;RowIndex++)
+        for (ColumnIndex = 0; ColumnIndex < AES_STATE_COLUMNS;ColumnIndex++)
+            aes_ctx.State[RowIndex][ColumnIndex] = PlainBlock[RowIndex + 4*ColumnIndex];
+
+    /* 
+     *  3. Main encryption rounds
+     */
+    RT_AES_KeyExpansion(Key, KeyLength, &aes_ctx);
+    NumberOfRound = (KeyLength >> 2) + 6;
+
+    /* AES_AddRoundKey */
+    RoundIndex = 0;
+    for (RowIndex = 0; RowIndex < AES_STATE_ROWS;RowIndex++)
+        for (ColumnIndex = 0; ColumnIndex < AES_STATE_COLUMNS;ColumnIndex++)
+            aes_ctx.State[RowIndex][ColumnIndex] ^= aes_ctx.KeyWordExpansion[RowIndex][(RoundIndex*((UINT) AES_STATE_COLUMNS)) + ColumnIndex];
+
+    for (RoundIndex = 1; RoundIndex < NumberOfRound;RoundIndex++)
+    {
+        /* AES_SubBytes */
+        for (RowIndex = 0; RowIndex < AES_STATE_ROWS;RowIndex++)
+            for (ColumnIndex = 0; ColumnIndex < AES_STATE_COLUMNS;ColumnIndex++)
+                aes_ctx.State[RowIndex][ColumnIndex] = aes_sbox_enc[aes_ctx.State[RowIndex][ColumnIndex]];
+
+        /* AES_ShiftRows */
+        Temp = aes_ctx.State[1][0];
+        aes_ctx.State[1][0] = aes_ctx.State[1][1];
+        aes_ctx.State[1][1] = aes_ctx.State[1][2];
+        aes_ctx.State[1][2] = aes_ctx.State[1][3];
+        aes_ctx.State[1][3] = Temp;
+        Temp = aes_ctx.State[2][0];
+        aes_ctx.State[2][0] = aes_ctx.State[2][2];
+        aes_ctx.State[2][2] = Temp;
+        Temp = aes_ctx.State[2][1];
+        aes_ctx.State[2][1] = aes_ctx.State[2][3];
+        aes_ctx.State[2][3] = Temp;
+        Temp = aes_ctx.State[3][3];
+        aes_ctx.State[3][3] = aes_ctx.State[3][2];
+        aes_ctx.State[3][2] = aes_ctx.State[3][1];
+        aes_ctx.State[3][1] = aes_ctx.State[3][0];
+        aes_ctx.State[3][0] = Temp;
+
+        /* AES_MixColumns */
+        for (ColumnIndex = 0; ColumnIndex < AES_STATE_COLUMNS;ColumnIndex++)
+        {
+            Row0 = aes_ctx.State[0][ColumnIndex];
+            Row1 = aes_ctx.State[1][ColumnIndex];
+            Row2 = aes_ctx.State[2][ColumnIndex];
+            Row3 = aes_ctx.State[3][ColumnIndex];
+            aes_ctx.State[0][ColumnIndex] = aes_mul_2[Row0]^aes_mul_3[Row1]^Row2^Row3;
+            aes_ctx.State[1][ColumnIndex] = Row0^aes_mul_2[Row1]^aes_mul_3[Row2]^Row3;
+            aes_ctx.State[2][ColumnIndex] = Row0^Row1^aes_mul_2[Row2]^aes_mul_3[Row3];
+            aes_ctx.State[3][ColumnIndex] = aes_mul_3[Row0]^Row1^Row2^aes_mul_2[Row3];
+        }
+
+        /* AES_AddRoundKey */
+        for (RowIndex = 0; RowIndex < AES_STATE_ROWS;RowIndex++)
+            for (ColumnIndex = 0; ColumnIndex < AES_STATE_COLUMNS;ColumnIndex++)
+                aes_ctx.State[RowIndex][ColumnIndex] ^= aes_ctx.KeyWordExpansion[RowIndex][(RoundIndex*((UINT) AES_STATE_COLUMNS)) + ColumnIndex];
+    } /* End of for */
+
+    /* AES_SubBytes */
+    for (RowIndex = 0; RowIndex < AES_STATE_ROWS;RowIndex++)
+        for (ColumnIndex = 0; ColumnIndex < AES_STATE_COLUMNS;ColumnIndex++)
+            aes_ctx.State[RowIndex][ColumnIndex] = aes_sbox_enc[aes_ctx.State[RowIndex][ColumnIndex]];
+    /* AES_ShiftRows */
+    Temp = aes_ctx.State[1][0];
+    aes_ctx.State[1][0] = aes_ctx.State[1][1];
+    aes_ctx.State[1][1] = aes_ctx.State[1][2];
+    aes_ctx.State[1][2] = aes_ctx.State[1][3];
+    aes_ctx.State[1][3] = Temp;
+    Temp = aes_ctx.State[2][0];
+    aes_ctx.State[2][0] = aes_ctx.State[2][2];
+    aes_ctx.State[2][2] = Temp;
+    Temp = aes_ctx.State[2][1];
+    aes_ctx.State[2][1] = aes_ctx.State[2][3];
+    aes_ctx.State[2][3] = Temp;
+    Temp = aes_ctx.State[3][3];
+    aes_ctx.State[3][3] = aes_ctx.State[3][2];
+    aes_ctx.State[3][2] = aes_ctx.State[3][1];
+    aes_ctx.State[3][1] = aes_ctx.State[3][0];
+    aes_ctx.State[3][0] = Temp;
+    /* AES_AddRoundKey */
+    for (RowIndex = 0; RowIndex < AES_STATE_ROWS;RowIndex++)
+        for (ColumnIndex = 0; ColumnIndex < AES_STATE_COLUMNS;ColumnIndex++)
+            aes_ctx.State[RowIndex][ColumnIndex] ^= aes_ctx.KeyWordExpansion[RowIndex][(RoundIndex*((UINT) AES_STATE_COLUMNS)) + ColumnIndex];
+
+    /* 
+     * 4. Transfer the state block to cipher block 
+     */
+    for (RowIndex = 0; RowIndex < AES_STATE_ROWS;RowIndex++)
+        for (ColumnIndex = 0; ColumnIndex < AES_STATE_COLUMNS;ColumnIndex++)
+            CipherBlock[RowIndex + 4*ColumnIndex] = aes_ctx.State[RowIndex][ColumnIndex];
+
+    *CipherBlockSize = ((UINT) AES_STATE_ROWS)*((UINT) AES_STATE_COLUMNS);
+} /* End of RT_AES_Encrypt */
+
+
+/*
+========================================================================
+Routine Description:
+    AES decryption
+
+Arguments:
+    CipherBlock      The block of cipher text, 16 bytes(128 bits) each block
+    CipherBlockSize  The length of block of cipher text in bytes
+    Key              Cipher key, it may be 16, 24, or 32 bytes (128, 192, or 256 bits)
+    KeyLength        The length of cipher key in bytes
+    PlainBlockSize   The length of allocated plain block in bytes
+
+Return Value:
+    PlainBlock       Return plain text
+    PlainBlockSize  Return the length of real used plain block in bytes
+
+Note:
+    Reference to FIPS-PUB 197
+    1. Check if block size is 16 bytes(128 bits) and if key length is 16, 24, or 32 bytes(128, 192, or 256 bits)
+    2. Transfer the cipher block to state block 
+    3. Main decryption rounds
+    4. Transfer the state block to plain block
+    ------------------------------------------
+       NumberOfRound = (key length / 4) + 6;
+       state block = cipher block;
+       
+       AddRoundKey(state block, key);
+       for round = NumberOfRound to 1
+           InvSubBytes(state block)
+           InvShiftRows(state block)
+           InvMixColumns(state block)
+           AddRoundKey(state block, key);
+       end for
+
+       InvSubBytes(state block)
+       InvShiftRows(state block)
+       AddRoundKey(state block, key);
+
+       plain block = state block;
+========================================================================
+*/
+VOID RT_AES_Decrypt (
+    IN UINT8 CipherBlock[],
+    IN UINT CipherBlockSize,
+    IN UINT8 Key[],
+    IN UINT KeyLength,
+    OUT UINT8 PlainBlock[],
+    INOUT UINT *PlainBlockSize)
+{
+    AES_CTX_STRUC aes_ctx;
+    UINT RowIndex, ColumnIndex;
+    UINT RoundIndex, NumberOfRound = 0;
+    UINT8 Temp, Row0, Row1, Row2, Row3;
+
+    /*   
+     * 1. Check if block size is 16 bytes(128 bits) and if key length is 16, 24, or 32 bytes(128, 192, or 256 bits) 
+     */
+    if (*PlainBlockSize < AES_BLOCK_SIZES) {
+    	DBGPRINT(RT_DEBUG_ERROR, ("RT_AES_Decrypt: plain block size is %d bytes, it must be %d bytes(128 bits).\n", 
+            *PlainBlockSize, AES_BLOCK_SIZES));
+        return;
+    } /* End of if */
+    if ((KeyLength != AES_KEY128_LENGTH) && (KeyLength != AES_KEY192_LENGTH) && (KeyLength != AES_KEY256_LENGTH)) {
+    	DBGPRINT(RT_DEBUG_ERROR, ("RT_AES_Decrypt: key length is %d bytes, it must be %d, %d, or %d bytes(128, 192, or 256 bits).\n", 
+            KeyLength, AES_KEY128_LENGTH, AES_KEY192_LENGTH, AES_KEY256_LENGTH));
+        return;
+    } /* End of if */
+    if (CipherBlockSize != AES_BLOCK_SIZES) {
+    	DBGPRINT(RT_DEBUG_ERROR, ("RT_AES_Decrypt: cipher block size is %d bytes, it must be %d bytes(128 bits).\n", 
+            CipherBlockSize, AES_BLOCK_SIZES));
+        return;
+    } /* End of if */
+
+    /* 
+     * 2. Transfer the cipher block to state block 
+     */
+    for (RowIndex = 0; RowIndex < AES_STATE_ROWS;RowIndex++)
+        for (ColumnIndex = 0; ColumnIndex < AES_STATE_COLUMNS;ColumnIndex++)
+            aes_ctx.State[RowIndex][ColumnIndex] = CipherBlock[RowIndex + 4*ColumnIndex];
+
+    /* 
+     *  3. Main decryption rounds
+     */
+    RT_AES_KeyExpansion(Key, KeyLength, &aes_ctx);
+    NumberOfRound = (KeyLength >> 2) + 6;
+
+    /* AES_AddRoundKey */
+    RoundIndex = NumberOfRound;
+    for (RowIndex = 0; RowIndex < AES_STATE_ROWS;RowIndex++)
+        for (ColumnIndex = 0; ColumnIndex < AES_STATE_COLUMNS;ColumnIndex++)
+            aes_ctx.State[RowIndex][ColumnIndex] ^= aes_ctx.KeyWordExpansion[RowIndex][(RoundIndex*((UINT) AES_STATE_COLUMNS)) + ColumnIndex];
+
+    for (RoundIndex = (NumberOfRound - 1); RoundIndex > 0 ;RoundIndex--)
+    {
+        /* AES_InvShiftRows */
+        Temp = aes_ctx.State[1][3];
+        aes_ctx.State[1][3] = aes_ctx.State[1][2];
+        aes_ctx.State[1][2] = aes_ctx.State[1][1];
+        aes_ctx.State[1][1] = aes_ctx.State[1][0];
+        aes_ctx.State[1][0] = Temp;
+        Temp = aes_ctx.State[2][0];
+        aes_ctx.State[2][0] = aes_ctx.State[2][2];
+        aes_ctx.State[2][2] = Temp;
+        Temp = aes_ctx.State[2][1];
+        aes_ctx.State[2][1] = aes_ctx.State[2][3];
+        aes_ctx.State[2][3] = Temp;
+        Temp = aes_ctx.State[3][0];
+        aes_ctx.State[3][0] = aes_ctx.State[3][1];
+        aes_ctx.State[3][1] = aes_ctx.State[3][2];
+        aes_ctx.State[3][2] = aes_ctx.State[3][3];
+        aes_ctx.State[3][3] = Temp;
+
+        /* AES_InvSubBytes */
+        for (RowIndex = 0; RowIndex < AES_STATE_ROWS;RowIndex++)
+            for (ColumnIndex = 0; ColumnIndex < AES_STATE_COLUMNS;ColumnIndex++)
+                aes_ctx.State[RowIndex][ColumnIndex] = aes_sbox_dec[aes_ctx.State[RowIndex][ColumnIndex]];
+
+        /* AES_AddRoundKey */
+        for (RowIndex = 0; RowIndex < AES_STATE_ROWS;RowIndex++)
+            for (ColumnIndex = 0; ColumnIndex < AES_STATE_COLUMNS;ColumnIndex++)
+                aes_ctx.State[RowIndex][ColumnIndex] ^= aes_ctx.KeyWordExpansion[RowIndex][(RoundIndex*((UINT) AES_STATE_COLUMNS)) + ColumnIndex];
+
+        /* AES_InvMixColumns */
+        for (ColumnIndex = 0; ColumnIndex < AES_STATE_COLUMNS;ColumnIndex++)
+        {
+            Row0 = aes_ctx.State[0][ColumnIndex];
+            Row1 = aes_ctx.State[1][ColumnIndex];
+            Row2 = aes_ctx.State[2][ColumnIndex];
+            Row3 = aes_ctx.State[3][ColumnIndex];
+            aes_ctx.State[0][ColumnIndex] = aes_mul_e[Row0]^aes_mul_b[Row1]^aes_mul_d[Row2]^aes_mul_9[Row3];
+            aes_ctx.State[1][ColumnIndex] = aes_mul_9[Row0]^aes_mul_e[Row1]^aes_mul_b[Row2]^aes_mul_d[Row3];
+            aes_ctx.State[2][ColumnIndex] = aes_mul_d[Row0]^aes_mul_9[Row1]^aes_mul_e[Row2]^aes_mul_b[Row3];
+            aes_ctx.State[3][ColumnIndex] = aes_mul_b[Row0]^aes_mul_d[Row1]^aes_mul_9[Row2]^aes_mul_e[Row3];
+        }
+    } /* End of for */
+
+    /* AES_InvShiftRows */
+    Temp = aes_ctx.State[1][3];
+    aes_ctx.State[1][3] = aes_ctx.State[1][2];
+    aes_ctx.State[1][2] = aes_ctx.State[1][1];
+    aes_ctx.State[1][1] = aes_ctx.State[1][0];
+    aes_ctx.State[1][0] = Temp;
+    Temp = aes_ctx.State[2][0];
+    aes_ctx.State[2][0] = aes_ctx.State[2][2];
+    aes_ctx.State[2][2] = Temp;
+    Temp = aes_ctx.State[2][1];
+    aes_ctx.State[2][1] = aes_ctx.State[2][3];
+    aes_ctx.State[2][3] = Temp;
+    Temp = aes_ctx.State[3][0];
+    aes_ctx.State[3][0] = aes_ctx.State[3][1];
+    aes_ctx.State[3][1] = aes_ctx.State[3][2];
+    aes_ctx.State[3][2] = aes_ctx.State[3][3];
+    aes_ctx.State[3][3] = Temp;
+    /* AES_InvSubBytes */
+    for (RowIndex = 0; RowIndex < AES_STATE_ROWS;RowIndex++)
+        for (ColumnIndex = 0; ColumnIndex < AES_STATE_COLUMNS;ColumnIndex++)
+            aes_ctx.State[RowIndex][ColumnIndex] = aes_sbox_dec[aes_ctx.State[RowIndex][ColumnIndex]];
+    /* AES_AddRoundKey */
+    for (RowIndex = 0; RowIndex < AES_STATE_ROWS;RowIndex++)
+        for (ColumnIndex = 0; ColumnIndex < AES_STATE_COLUMNS;ColumnIndex++)
+            aes_ctx.State[RowIndex][ColumnIndex] ^= aes_ctx.KeyWordExpansion[RowIndex][(RoundIndex*((UINT) AES_STATE_COLUMNS)) + ColumnIndex];
+
+    /* 
+     * 4. Transfer the state block to plain block 
+     */
+    for (RowIndex = 0; RowIndex < AES_STATE_ROWS;RowIndex++)
+        for (ColumnIndex = 0; ColumnIndex < AES_STATE_COLUMNS;ColumnIndex++)
+            PlainBlock[RowIndex + 4*ColumnIndex] = aes_ctx.State[RowIndex][ColumnIndex];
+
+    *PlainBlockSize = ((UINT) AES_STATE_ROWS)*((UINT) AES_STATE_COLUMNS);
+} /* End of RT_AES_Decrypt */
+
+
+
+/*
+========================================================================
+Routine Description:
+    AES-CBCMAC 
+
+Arguments:
+    Payload        Data
+    PayloadLength  The length of data in bytes
+    Key              Cipher key
+    KeyLength        The length of cipher key in bytes depend on block cipher (16, 24, or 32 bytes)
+    Nonce            Nonce
+    NonceLength      The length of nonce in bytes
+    AAD              Additional authenticated data
+    AADLength        The length of AAD in bytes
+    MACLength        The length of MAC in bytes
+
+Return Value:
+    MACText       The mac
+
+Note:
+    Reference to RFC 3601, and NIST 800-38C.
+========================================================================
+*/
+VOID AES_CCM_MAC (
+    IN UINT8 Payload[],
+    IN UINT  PayloadLength,
+    IN UINT8 Key[],
+    IN UINT  KeyLength,
+    IN UINT8 Nonce[],
+    IN UINT  NonceLength,
+    IN UINT8 AAD[],
+    IN UINT  AADLength,
+    IN UINT  MACLength,
+    OUT UINT8 MACText[])
+{
+    UINT8 Block[AES_BLOCK_SIZES], Block_MAC[AES_BLOCK_SIZES];
+    UINT  Block_Index = 0, ADD_Index = 0, Payload_Index = 0;
+    UINT  Temp_Value = 0, Temp_Index = 0, Temp_Length = 0, Copy_Length = 0;
+
+    /*   
+     * 1. Formatting of the Control Information and the Nonce
+     */
+    NdisZeroMemory(Block, AES_BLOCK_SIZES);
+    if (AADLength > 0)
+        Block[0] |= 0x40; /* Set bit 6 to 1 */
+    Temp_Value = ((MACLength - 2) >> 1) << 3; /* Set bit 3-5 to (t-2)/2 */
+    Block[0] |= Temp_Value;
+    Temp_Value = (15 - NonceLength) - 1; /* Set bit 0-2 to (q-1), q = 15 - Nonce Length */
+    Block[0] |= Temp_Value;
+    for (Temp_Index = 0; Temp_Index < NonceLength; Temp_Index++)
+        Block[Temp_Index + 1] = Nonce[Temp_Index];
+    if (NonceLength < 12)
+        Block[12] = (PayloadLength >> 24) & 0xff;
+    if (NonceLength < 13)
+        Block[13] = (PayloadLength >> 16) & 0xff;
+    Block[14] = (PayloadLength >> 8) & 0xff;
+    Block[15] = PayloadLength & 0xff;
+
+    NdisZeroMemory(Block_MAC, AES_BLOCK_SIZES);
+    Temp_Length = sizeof(Block_MAC);
+    RT_AES_Encrypt(Block, AES_BLOCK_SIZES , Key, KeyLength, Block_MAC, &Temp_Length);
+
+    /*
+     * 2. Formatting of the Associated Data
+     *      If 0 < AADLength < (2^16 - 2^8), AData_Length = 2
+     *      If (2^16 - 2^8) < AADLength < 2^32, AData_Length = 6
+     *      If 2^32 < AADLength < 2^64, AData_Length = 10 (not implement)
+     */    
+    NdisZeroMemory(Block, AES_BLOCK_SIZES);
+    if ((AADLength > 0) && (AADLength < 0xFF00)) {
+        Block_Index = 2;
+        Block[0] = (AADLength >> 8) & 0xff;
+        Block[1] = AADLength & 0xff;
+    } else {
+        Block_Index = 6;
+        Block[2] = (AADLength >> 24) & 0xff;
+        Block[3] = (AADLength >> 16) & 0xff;
+        Block[4] = (AADLength >> 8) & 0xff;
+        Block[5] = AADLength & 0xff;
+    } /* End of if */
+
+    while (ADD_Index < AADLength) 
+    {
+        Copy_Length = AADLength - ADD_Index;
+        if (Copy_Length > AES_BLOCK_SIZES)
+            Copy_Length = AES_BLOCK_SIZES;
+        if ((Copy_Length + Block_Index) > AES_BLOCK_SIZES) {
+            Copy_Length = AES_BLOCK_SIZES - Block_Index;
+        } /* End of if */                    
+        for (Temp_Index = 0; Temp_Index < Copy_Length; Temp_Index++)
+            Block[Temp_Index + Block_Index] = AAD[ADD_Index + Temp_Index];        
+        for (Temp_Index = 0; Temp_Index < AES_BLOCK_SIZES; Temp_Index++)
+            Block[Temp_Index] ^= Block_MAC[Temp_Index];
+        NdisZeroMemory(Block_MAC, AES_BLOCK_SIZES);
+        Temp_Length = sizeof(Block_MAC);        
+        RT_AES_Encrypt(Block, AES_BLOCK_SIZES , Key, KeyLength, Block_MAC, &Temp_Length);
+        ADD_Index += Copy_Length;
+        Block_Index = 0;        
+        NdisZeroMemory(Block, AES_BLOCK_SIZES);
+    } /* End of while */
+
+    /*
+     * 3. Calculate the MAC (MIC)
+     */
+    while (Payload_Index < PayloadLength) 
+    {
+        NdisZeroMemory(Block, AES_BLOCK_SIZES);
+        Copy_Length = PayloadLength - Payload_Index;
+        if (Copy_Length > AES_BLOCK_SIZES)
+            Copy_Length = AES_BLOCK_SIZES;
+        for (Temp_Index = 0; Temp_Index < Copy_Length; Temp_Index++)
+            Block[Temp_Index] = Payload[Payload_Index + Temp_Index];        
+        for (Temp_Index = 0; Temp_Index < AES_BLOCK_SIZES; Temp_Index++)
+            Block[Temp_Index] ^= Block_MAC[Temp_Index];
+        NdisZeroMemory(Block_MAC, AES_BLOCK_SIZES);
+        Temp_Length = sizeof(Block_MAC);
+        RT_AES_Encrypt(Block, AES_BLOCK_SIZES , Key, KeyLength, Block_MAC, &Temp_Length);
+        Payload_Index += Copy_Length;
+    } /* End of while */
+    for (Temp_Index = 0; Temp_Index < MACLength; Temp_Index++)
+        MACText[Temp_Index] = Block_MAC[Temp_Index];
+} /* End of AES_CCM_MAC */
+
+
+/*
+========================================================================
+Routine Description:
+    AES-CBCMAC Encryption
+
+Arguments:
+    PlainText        Plain text
+    PlainTextLength  The length of plain text in bytes
+    Key              Cipher key
+    KeyLength        The length of cipher key in bytes depend on block cipher (16, 24, or 32 bytes)
+    Nonce            Nonce
+    NonceLength      The length of nonce in bytes
+    AAD              Additional authenticated data
+    AADLength        The length of AAD in bytes
+    MACLength        The length of MAC in bytes
+    CipherTextLength    The length of allocated memory spaces in bytes
+
+Return Value:
+    CipherText       The ciphertext
+    CipherTextLength Return the length of the ciphertext in bytes
+
+Function Value:
+     0: Success
+    -1: The key length must be 16 bytes.
+    -2: A valid nonce length is 7-13 bytes.
+    -3: The MAC length  must be 4, 6, 8, 10, 12, 14, or 16 bytes.
+    -4: The CipherTextLength is not enough.
+
+Note:
+    Reference to RFC 3601, and NIST 800-38C.
+    Here, the implement of AES_CCM is suitable for WI_FI.
+========================================================================
+*/
+INT AES_CCM_Encrypt (
+    IN UINT8 PlainText[],
+    IN UINT PlainTextLength,
+    IN UINT8 Key[],
+    IN UINT KeyLength,
+    IN UINT8 Nonce[],
+    IN UINT NonceLength,
+    IN UINT8 AAD[],
+    IN UINT AADLength,
+    IN UINT MACLength,
+    OUT UINT8 CipherText[],
+    INOUT UINT *CipherTextLength)
+{
+    UINT8 Block_MAC[AES_BLOCK_SIZES];
+    UINT8 Block_CTR[AES_BLOCK_SIZES], Block_CTR_Cipher[AES_BLOCK_SIZES];
+    UINT  Cipher_Index = 0;
+    UINT Temp_Value = 0, Temp_Index = 0, Temp_Length = 0, Copy_Length = 0;
+
+    /*   
+     * 1. Check Input Values
+     *    - Key length must be 16 bytes
+     *    - Nonce length range is form 7 to 13 bytes
+     *    - MAC length must be 4, 6, 8, 10, 12, 14, or 16 bytes
+     *    - CipherTextLength > PlainTextLength + MACLength
+     */
+    if (KeyLength != AES_KEY128_LENGTH) {
+    	DBGPRINT(RT_DEBUG_ERROR, ("AES_CCM_Encrypt: The key length must be %d bytes\n", AES_KEY128_LENGTH));
+        return -1;
+    } /* End of if */
+
+    if ((NonceLength < 7) || (NonceLength > 13)) {
+    	DBGPRINT(RT_DEBUG_ERROR, ("AES_CCM_Encrypt: A valid nonce length is 7-13 bytes\n"));
+        return -2;
+    } /* End of if */
+
+    if ((MACLength != 4) && (MACLength != 6) && (MACLength != 8) && (MACLength != 10)
+        && (MACLength != 12) && (MACLength != 14) && (MACLength != 16)) {
+    	DBGPRINT(RT_DEBUG_ERROR, ("AES_CCM_Encrypt: The MAC length  must be 4, 6, 8, 10, 12, 14, or 16 bytes\n"));
+        return -3;
+    } /* End of if */
+
+    if (*CipherTextLength < (PlainTextLength + MACLength)) {
+    	DBGPRINT(RT_DEBUG_ERROR, ("AES_CCM_Encrypt: The CipherTextLength is not enough.\n"));
+        return -4;
+    } /* End of if */
+
+
+    /*   
+     * 1. Formatting of the Counter Block
+     */
+    NdisZeroMemory(Block_CTR, AES_BLOCK_SIZES);
+    Temp_Value = (15 - NonceLength) - 1; /* Set bit 0-2 to (q-1), q = 15 - Nonce Length */
+    Block_CTR[0] |= Temp_Value;
+    for (Temp_Index = 0; Temp_Index < NonceLength; Temp_Index++)
+        Block_CTR[Temp_Index + 1] = Nonce[Temp_Index];
+
+    /*
+     * 2. Calculate the MAC (MIC)
+     */
+    AES_CCM_MAC(PlainText, PlainTextLength, Key, KeyLength, Nonce, NonceLength, AAD, AADLength, MACLength, Block_MAC);
+    Temp_Length = sizeof(Block_CTR_Cipher);
+    RT_AES_Encrypt(Block_CTR, AES_BLOCK_SIZES , Key, KeyLength, Block_CTR_Cipher, &Temp_Length);
+    for (Temp_Index = 0; Temp_Index < MACLength; Temp_Index++)
+        Block_MAC[Temp_Index] ^= Block_CTR_Cipher[Temp_Index];
+
+    /*   
+     * 3. Cipher Payload
+     */
+    while (Cipher_Index < PlainTextLength) 
+    {
+        Block_CTR[15] += 1;
+        Temp_Length = sizeof(Block_CTR_Cipher);
+        RT_AES_Encrypt(Block_CTR, AES_BLOCK_SIZES , Key, KeyLength, Block_CTR_Cipher, &Temp_Length);
+
+        Copy_Length = PlainTextLength - Cipher_Index;
+        if (Copy_Length > AES_BLOCK_SIZES)
+            Copy_Length = AES_BLOCK_SIZES;                
+        for (Temp_Index = 0; Temp_Index < Copy_Length; Temp_Index++)
+            CipherText[Cipher_Index + Temp_Index] = PlainText[Cipher_Index + Temp_Index]^Block_CTR_Cipher[Temp_Index];
+
+        Cipher_Index += Copy_Length;
+    } /* End of while */
+    for (Temp_Index = 0; Temp_Index < MACLength; Temp_Index++)
+            CipherText[PlainTextLength + Temp_Index] = Block_MAC[Temp_Index];    
+    *CipherTextLength = PlainTextLength + MACLength;
+
+    return 0;
+} /* End of AES_CCM_Encrypt */
+
+
+/*
+========================================================================
+Routine Description:
+    AES-CBCMAC Decryption
+
+Arguments:
+    CipherText       The ciphertext
+    CipherTextLength The length of cipher text in bytes
+    Key              Cipher key
+    KeyLength        The length of cipher key in bytes depend on block cipher (16, 24, or 32 bytes)
+    Nonce            Nonce
+    NonceLength      The length of nonce in bytes
+    AAD              Additional authenticated data
+    AADLength        The length of AAD in bytes
+    CipherTextLength    The length of allocated memory spaces in bytes
+
+Return Value:
+    PlainText        Plain text
+    PlainTextLength  Return the length of the plain text in bytes
+
+Function Value:
+     0: Success
+    -1: The key length must be 16 bytes.
+    -2: A valid nonce length is 7-13 bytes.
+    -3: The MAC length  must be 4, 6, 8, 10, 12, 14, or 16 bytes.
+    -4: The PlainTextLength is not enough.
+    -5: The MIC does not match.
+    
+Note:
+    Reference to RFC 3601, and NIST 800-38C.
+    Here, the implement of AES_CCM is suitable for WI_FI.
+========================================================================
+*/
+INT AES_CCM_Decrypt (
+    IN UINT8 CipherText[],
+    IN UINT  CipherTextLength,
+    IN UINT8 Key[],
+    IN UINT  KeyLength,
+    IN UINT8 Nonce[],
+    IN UINT  NonceLength,
+    IN UINT8 AAD[],
+    IN UINT  AADLength,
+    IN UINT  MACLength,    
+    OUT UINT8 PlainText[],
+    INOUT UINT *PlainTextLength)
+{
+    UINT8 Block_MAC[AES_BLOCK_SIZES], Block_MAC_From_Cipher[AES_BLOCK_SIZES];
+    UINT8 Block_CTR[AES_BLOCK_SIZES], Block_CTR_Cipher[AES_BLOCK_SIZES];
+    UINT  Block_Index = 0, Cipher_Index = 0;
+    UINT Temp_Value = 0, Temp_Index = 0, Temp_Length = 0, Copy_Length = 0;
+
+
+    /*   
+     * 1. Check Input Values
+     *    - Key length must be 16 bytes
+     *    - Nonce length range is form 7 to 13 bytes
+     */
+    if (KeyLength != AES_KEY128_LENGTH) {
+    	DBGPRINT(RT_DEBUG_ERROR, ("AES_CCM_Decrypt: The key length must be %d bytes\n", AES_KEY128_LENGTH));
+        return -1;
+    } /* End of if */
+
+    if ((NonceLength < 7) || (NonceLength > 13)) {
+    	DBGPRINT(RT_DEBUG_ERROR, ("AES_CCM_Decrypt: A valid nonce length is 7-13 bytes\n"));
+        return -2;
+    } /* End of if */
+    
+    if ((MACLength != 4) && (MACLength != 6) && (MACLength != 8) && (MACLength != 10)
+        && (MACLength != 12) && (MACLength != 14) && (MACLength != 16)) {
+    	DBGPRINT(RT_DEBUG_ERROR, ("AES_CCM_Decrypt: The MAC length  must be 4, 6, 8, 10, 12, 14, or 16 bytes\n"));
+        return -3;
+    } /* End of if */
+    
+    if (*PlainTextLength < (CipherTextLength - MACLength)) {
+    	DBGPRINT(RT_DEBUG_ERROR, ("AES_CCM_Decrypt: The PlainTextLength is not enough.\n"));
+        return -4;
+    } /* End of if */
+
+    /*   
+     * 2. Formatting of the Counter Block
+     */
+    NdisZeroMemory(Block_CTR, AES_BLOCK_SIZES);
+    Temp_Value = (15 - NonceLength) - 1; /* Set bit 0-2 to (q-1), q = 15 - Nonce Length */
+    Block_CTR[0] |= Temp_Value;
+    for (Temp_Index = 0; Temp_Index < NonceLength; Temp_Index++)
+        Block_CTR[Temp_Index + 1] = Nonce[Temp_Index];
+    Temp_Length = sizeof(Block_CTR_Cipher);
+    RT_AES_Encrypt(Block_CTR, AES_BLOCK_SIZES , Key, KeyLength, Block_CTR_Cipher, &Temp_Length);
+
+    /*
+     * 3. Catch the MAC (MIC) from CipherText
+     */
+    Block_Index = 0;
+    for (Temp_Index = (CipherTextLength - MACLength); Temp_Index < CipherTextLength; Temp_Index++, Block_Index++)
+        Block_MAC_From_Cipher[Block_Index] = CipherText[Temp_Index]^Block_CTR_Cipher[Block_Index];
+
+    /*
+     * 4. Decryption the Payload
+     */     
+    while (Cipher_Index < (CipherTextLength - MACLength)) 
+    {
+        Block_CTR[15] += 1;
+        Temp_Length = sizeof(Block_CTR_Cipher);
+        RT_AES_Encrypt(Block_CTR, AES_BLOCK_SIZES , Key, KeyLength, Block_CTR_Cipher, &Temp_Length);
+
+        Copy_Length = (CipherTextLength - MACLength) - Cipher_Index;
+        if (Copy_Length > AES_BLOCK_SIZES)
+            Copy_Length = AES_BLOCK_SIZES;                
+        for (Temp_Index = 0; Temp_Index < Copy_Length; Temp_Index++)
+            PlainText[Cipher_Index + Temp_Index] = CipherText[Cipher_Index + Temp_Index]^Block_CTR_Cipher[Temp_Index];
+        Cipher_Index += Copy_Length;
+    } /* End of while */
+    *PlainTextLength = CipherTextLength - MACLength;
+    
+    /*
+     * 5. Calculate the MAC (MIC) from Payload
+     */
+    AES_CCM_MAC(PlainText, *PlainTextLength, Key, KeyLength, Nonce, NonceLength, AAD, AADLength, MACLength, Block_MAC);
+
+    /*
+     * 6. Check the MIC
+     */
+    if (NdisCmpMemory(Block_MAC_From_Cipher, Block_MAC, MACLength) != 0) {
+    	DBGPRINT(RT_DEBUG_ERROR, ("AES_CCM_Decrypt: The MIC does not match.\n"));
+        return -5;
+    } /* End of if */
+
+    return 0;
+} /* End of AES_CCM_Decrypt */
+
+
+/*
+========================================================================
+Routine Description:
+    AES-CMAC generate subkey
+
+Arguments:
+    Key        Cipher key 128 bits
+    KeyLength  The length of Cipher key in bytes
+
+Return Value:
+    SubKey1    SubKey 1 128 bits
+    SubKey2    SubKey 2 128 bits
+
+Note:
+    Reference to RFC 4493
+    
+    Step 1.  L := AES-128(K, const_Zero);
+    Step 2.  if MSB(L) is equal to 0
+                then    K1 := L << 1;
+                else    K1 := (L << 1) XOR const_Rb;
+    Step 3.  if MSB(K1) is equal to 0
+                then    K2 := K1 << 1;
+                else    K2 := (K1 << 1) XOR const_Rb;
+    Step 4.  return K1, K2;
+========================================================================
+*/
+VOID AES_CMAC_GenerateSubKey (
+    IN UINT8 Key[],
+    IN UINT KeyLength,
+    OUT UINT8 SubKey1[],
+    OUT UINT8 SubKey2[])
+{
+    UINT8 MSB_L = 0, MSB_K1 = 0, Top_Bit = 0;
+    UINT  SubKey1_Length = 0;
+    INT   Index = 0;
+
+    if (KeyLength != AES_KEY128_LENGTH) {
+    	DBGPRINT(RT_DEBUG_ERROR, ("AES_CMAC_GenerateSubKey: key length is %d bytes, it must be %d bytes(128 bits).\n", 
+            KeyLength, AES_KEY128_LENGTH));
+        return;
+    } /* End of if */
+
+    /* Step 1: L := AES-128(K, const_Zero); */
+    SubKey1_Length = 16;
+    RT_AES_Encrypt(Const_Zero, sizeof(Const_Zero), Key, KeyLength, SubKey1, &SubKey1_Length);
+
+    /*
+     * Step 2.  if MSB(L) is equal to 0
+     *           then    K1 := L << 1;
+     *           else    K1 := (L << 1) XOR const_Rb;
+     */
+    MSB_L = SubKey1[0] & 0x80;    
+    for(Index = 0; Index < 15; Index++) {
+        Top_Bit = (SubKey1[Index + 1] & 0x80)?1:0;
+        SubKey1[Index] <<= 1;
+        SubKey1[Index] |= Top_Bit;
+    }
+    SubKey1[15] <<= 1;
+    if (MSB_L > 0) {
+        for(Index = 0; Index < 16; Index++)
+            SubKey1[Index] ^= Const_Rb[Index];
+    } /* End of if */
+
+    /*
+     * Step 3.  if MSB(K1) is equal to 0
+     *           then    K2 := K1 << 1;
+     *           else    K2 := (K1 << 1) XOR const_Rb;
+     */
+    MSB_K1 = SubKey1[0] & 0x80;
+    for(Index = 0; Index < 15; Index++) {
+        Top_Bit = (SubKey1[Index + 1] & 0x80)?1:0;
+        SubKey2[Index] = SubKey1[Index] << 1;
+        SubKey2[Index] |= Top_Bit;
+    }
+    SubKey2[15] = SubKey1[15] << 1;
+    if (MSB_K1 > 0) {
+        for(Index = 0; Index < 16; Index++)
+            SubKey2[Index] ^= Const_Rb[Index];
+    } /* End of if */
+} /* End of AES_CMAC_GenerateSubKey */
+
+
+/*
+========================================================================
+Routine Description:
+    AES-CMAC
+
+Arguments:
+    PlainText        Plain text
+    PlainTextLength  The length of plain text in bytes
+    Key              Cipher key, it may be 16, 24, or 32 bytes (128, 192, or 256 bits)
+    KeyLength        The length of cipher key in bytes
+    MACTextLength    The length of allocated memory spaces in bytes
+
+Return Value:
+    MACText       Message authentication code (128-bit string)
+    MACTextLength Return the length of Message authentication code in bytes
+
+Note:
+    Reference to RFC 4493
+========================================================================
+*/
+VOID AES_CMAC (
+    IN UINT8 PlainText[],
+    IN UINT PlainTextLength,
+    IN UINT8 Key[],
+    IN UINT KeyLength,
+    OUT UINT8 MACText[],
+    INOUT UINT *MACTextLength)
+{
+    UINT  PlainBlockStart;
+    UINT8 X[AES_BLOCK_SIZES], Y[AES_BLOCK_SIZES];
+    UINT8 SubKey1[16];
+    UINT8 SubKey2[16];
+    INT Index;
+    UINT X_Length;
+
+    if (*MACTextLength < AES_MAC_LENGTH) {
+    	DBGPRINT(RT_DEBUG_ERROR, ("AES_CMAC: MAC text length is less than %d bytes).\n", 
+            AES_MAC_LENGTH));
+        return;
+    } /* End of if */
+    if (KeyLength != AES_KEY128_LENGTH) {
+    	DBGPRINT(RT_DEBUG_ERROR, ("AES_CMAC: key length is %d bytes, it must be %d bytes(128 bits).\n", 
+            KeyLength, AES_KEY128_LENGTH));
+        return;
+    } /* End of if */
+
+    /* Step 1.  (K1,K2) := Generate_Subkey(K); */
+    NdisZeroMemory(SubKey1, 16);
+    NdisZeroMemory(SubKey2, 16);   
+    AES_CMAC_GenerateSubKey(Key, KeyLength, SubKey1, SubKey2);
+
+    /*   
+     * 2. Main algorithm
+     *    - Plain text divide into serveral blocks (16 bytes/block)
+     *    - If plain text is not divided with no remainder by block, padding size = (block - remainder plain text)
+     *    - Execute RT_AES_Encrypt procedure.
+     */
+    PlainBlockStart = 0;
+    NdisMoveMemory(X, Const_Zero, AES_BLOCK_SIZES);
+    while ((PlainTextLength - PlainBlockStart) > AES_BLOCK_SIZES)
+    {
+        for (Index = 0; Index < AES_BLOCK_SIZES; Index++)
+                Y[Index] = PlainText[PlainBlockStart + Index]^X[Index];
+
+        X_Length = sizeof(X);
+        RT_AES_Encrypt(Y, sizeof(Y) , Key, KeyLength, X, &X_Length);
+        PlainBlockStart += ((UINT) AES_BLOCK_SIZES);
+    } /* End of while */
+    if ((PlainTextLength - PlainBlockStart) == AES_BLOCK_SIZES) {
+        for (Index = 0; Index < AES_BLOCK_SIZES; Index++)
+                Y[Index] = PlainText[PlainBlockStart + Index]^X[Index]^SubKey1[Index];        
+    } else {    
+        NdisZeroMemory(Y, AES_BLOCK_SIZES);
+        NdisMoveMemory(Y, &PlainText[PlainBlockStart], (PlainTextLength - PlainBlockStart));
+        Y[(PlainTextLength - PlainBlockStart)] = 0x80;
+        for (Index = 0; Index < AES_BLOCK_SIZES; Index++)
+                Y[Index] = Y[Index]^X[Index]^SubKey2[Index];
+    } /* End of if */
+    RT_AES_Encrypt(Y, sizeof(Y) , Key, KeyLength, MACText, MACTextLength);
+} /* End of AES_CMAC */
+
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/crypt_arc4.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/crypt_arc4.c
new file mode 100644
index 000000000..0fffda8a4
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/crypt_arc4.c
@@ -0,0 +1,152 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************/
+
+
+
+/****************************************************************************
+    Module Name:
+    RC4
+
+    Abstract:
+    
+    Revision History:
+    Who         When            What
+    --------    ----------      ------------------------------------------
+    Eddy        2009/05/13      ARC4
+***************************************************************************/
+
+#include "crypt_arc4.h"
+
+
+/*
+========================================================================
+Routine Description:
+    ARC4 initialize the key block
+
+Arguments:
+    pARC4_CTX        Pointer to ARC4 CONTEXT
+    Key              Cipher key, it may be 16, 24, or 32 bytes (128, 192, or 256 bits)
+    KeyLength        The length of cipher key in bytes
+
+========================================================================
+*/
+VOID ARC4_INIT (
+    IN ARC4_CTX_STRUC *pARC4_CTX,
+    IN PUCHAR pKey,
+	IN UINT KeyLength)
+{
+    UINT BlockIndex = 0, SWAPIndex = 0, KeyIndex = 0;
+    UINT8 TempValue = 0;
+
+    //Initialize the block value
+    pARC4_CTX->BlockIndex1 = 0;
+    pARC4_CTX->BlockIndex2 = 0;
+    for (BlockIndex = 0; BlockIndex < ARC4_KEY_BLOCK_SIZE; BlockIndex++)
+        pARC4_CTX->KeyBlock[BlockIndex] = (UINT8) BlockIndex;
+
+    //Key schedule
+    for (BlockIndex = 0; BlockIndex < ARC4_KEY_BLOCK_SIZE; BlockIndex++)
+    {
+        TempValue = pARC4_CTX->KeyBlock[BlockIndex];
+        KeyIndex = BlockIndex % KeyLength;
+        SWAPIndex = (SWAPIndex + TempValue + pKey[KeyIndex]) & 0xff;
+        pARC4_CTX->KeyBlock[BlockIndex] = pARC4_CTX->KeyBlock[SWAPIndex];
+        pARC4_CTX->KeyBlock[SWAPIndex] = TempValue;                
+    } /* End of for */
+
+} /* End of ARC4_INIT */
+
+
+/*
+========================================================================
+Routine Description:
+    ARC4 encryption/decryption
+
+Arguments:
+    pARC4_CTX       Pointer to ARC4 CONTEXT
+    InputText       Input text
+    InputTextLength The length of input text in bytes
+
+Return Value:
+    OutputBlock       Return output text
+ ========================================================================
+*/
+VOID ARC4_Compute (
+    IN ARC4_CTX_STRUC *pARC4_CTX,
+    IN UINT8 InputBlock[],
+    IN UINT InputBlockSize,
+    OUT UINT8 OutputBlock[])
+{
+    UINT InputIndex = 0;
+    UINT8 TempValue = 0;
+
+    for (InputIndex = 0; InputIndex < InputBlockSize; InputIndex++)
+    {
+        pARC4_CTX->BlockIndex1 = (pARC4_CTX->BlockIndex1 + 1) & 0xff;
+        TempValue = pARC4_CTX->KeyBlock[pARC4_CTX->BlockIndex1];
+        pARC4_CTX->BlockIndex2 = (pARC4_CTX->BlockIndex2 + TempValue) & 0xff;
+        
+        pARC4_CTX->KeyBlock[pARC4_CTX->BlockIndex1] = pARC4_CTX->KeyBlock[pARC4_CTX->BlockIndex2];
+        pARC4_CTX->KeyBlock[pARC4_CTX->BlockIndex2] = TempValue;
+        
+        TempValue = (TempValue + pARC4_CTX->KeyBlock[pARC4_CTX->BlockIndex1]) & 0xff;
+        OutputBlock[InputIndex] = InputBlock[InputIndex]^pARC4_CTX->KeyBlock[TempValue];
+
+    } /* End of for */
+} /* End of ARC4_Compute */
+
+
+/*
+========================================================================
+Routine Description:
+    Discard the key length
+
+Arguments:
+    pARC4_CTX   Pointer to ARC4 CONTEXT
+    Length      Discard the key length
+
+========================================================================
+*/
+VOID ARC4_Discard_KeyLength (
+    IN ARC4_CTX_STRUC *pARC4_CTX,
+    IN UINT Length)    
+{
+    UINT Index = 0;
+    UINT8 TempValue = 0;
+    
+    for (Index = 0; Index < Length; Index++)
+    {
+        pARC4_CTX->BlockIndex1 = (pARC4_CTX->BlockIndex1 + 1) & 0xff;
+        TempValue = pARC4_CTX->KeyBlock[pARC4_CTX->BlockIndex1];
+        pARC4_CTX->BlockIndex2 = (pARC4_CTX->BlockIndex2 + TempValue) & 0xff;
+        
+        pARC4_CTX->KeyBlock[pARC4_CTX->BlockIndex1] = pARC4_CTX->KeyBlock[pARC4_CTX->BlockIndex2];
+        pARC4_CTX->KeyBlock[pARC4_CTX->BlockIndex2] = TempValue;
+    } /* End of for */
+
+} /* End of ARC4_Discard_KeyLength */
+
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/crypt_hmac.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/crypt_hmac.c
new file mode 100644
index 000000000..7615941bc
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/crypt_hmac.c
@@ -0,0 +1,142 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************/
+
+
+#include "crypt_hmac.h"
+
+
+#if defined(__cplusplus)
+extern "C"
+{
+#endif
+
+/* initialise the HMAC context to zero */
+void hmac_sha_begin(hmac_ctx cx[1])
+{
+    memset(cx, 0, sizeof(hmac_ctx));
+}
+
+/* input the HMAC key (can be called multiple times)    */
+int hmac_sha_key(const unsigned char key[], unsigned int key_len, hmac_ctx cx[1])
+{
+    if(cx->klen == HMAC_IN_DATA)                /* error if further key input   */
+        return HMAC_BAD_MODE;                   /* is attempted in data mode    */
+
+    if(cx->klen + key_len > HASH_INPUT_SIZE)    /* if the key has to be hashed  */
+    {
+        if(cx->klen <= HASH_INPUT_SIZE)         /* if the hash has not yet been */
+        {                                       /* started, initialise it and   */
+            sha_begin(cx->ctx);                /* hash stored key characters   */
+            sha_hash(cx->key, cx->klen, cx->ctx);
+        }
+
+        sha_hash(key, key_len, cx->ctx);       /* hash long key data into hash */
+    }
+    else                                        /* otherwise store key data     */
+        memcpy(cx->key + cx->klen, key, key_len);
+
+    cx->klen += key_len;                        /* update the key length count  */
+    return HMAC_OK;
+}
+
+/* input the HMAC data (can be called multiple times) - */
+/* note that this call terminates the key input phase   */
+void hmac_sha_data(const unsigned char data[], unsigned int data_len, hmac_ctx cx[1])
+{   unsigned int i;
+
+    if(cx->klen != HMAC_IN_DATA)                /* if not yet in data phase */
+    {
+        if(cx->klen > HASH_INPUT_SIZE)          /* if key is being hashed   */
+        {                                       /* complete the hash and    */
+            sha_end(cx->key, cx->ctx);         /* store the result as the  */
+            cx->klen = HASH_OUTPUT_SIZE;        /* key and set new length   */
+        }
+
+        /* pad the key if necessary */
+        memset(cx->key + cx->klen, 0, HASH_INPUT_SIZE - cx->klen);
+
+        /* xor ipad into key value  */
+        for(i = 0; i < (HASH_INPUT_SIZE >> 2); ++i)
+            ((unsigned int*)cx->key)[i] ^= 0x36363636;
+
+        /* and start hash operation */
+        sha_begin(cx->ctx);
+        sha_hash(cx->key, HASH_INPUT_SIZE, cx->ctx);
+
+        /* mark as now in data mode */
+        cx->klen = HMAC_IN_DATA;
+    }
+
+    /* hash the data (if any)       */
+    if(data_len)
+        sha_hash(data, data_len, cx->ctx);
+}
+
+/* compute and output the MAC value */
+void hmac_sha_end(unsigned char mac[], unsigned int mac_len, hmac_ctx cx[1])
+{   unsigned char dig[HASH_OUTPUT_SIZE];
+    unsigned int i;
+
+    /* if no data has been entered perform a null data phase        */
+    if(cx->klen != HMAC_IN_DATA)
+        hmac_sha_data((const unsigned char*)0, 0, cx);
+
+    sha_end(dig, cx->ctx);         /* complete the inner hash      */
+
+    /* set outer key value using opad and removing ipad */
+    for(i = 0; i < (HASH_INPUT_SIZE >> 2); ++i)
+        ((unsigned int*)cx->key)[i] ^= 0x36363636 ^ 0x5c5c5c5c;
+
+    /* perform the outer hash operation */
+    sha_begin(cx->ctx);
+    sha_hash(cx->key, HASH_INPUT_SIZE, cx->ctx);
+    sha_hash(dig, HASH_OUTPUT_SIZE, cx->ctx);
+    sha_end(dig, cx->ctx);
+
+    /* output the hash value            */
+    for(i = 0; i < mac_len; ++i)
+        mac[i] = dig[i];
+}
+
+/* 'do it all in one go' subroutine     */
+void hmac_sha(const unsigned char key[], unsigned int key_len,
+          const unsigned char data[], unsigned int data_len,
+          unsigned char mac[], unsigned int mac_len)
+{   hmac_ctx    cx[1];
+
+    hmac_sha_begin(cx);
+    hmac_sha_key(key, key_len, cx);
+    hmac_sha_data(data, data_len, cx);
+    hmac_sha_end(mac, mac_len, cx);
+}
+
+#if defined(__cplusplus)
+}
+#endif
+
+
+/* End of crypt_hmac.c */
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/crypt_md5.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/crypt_md5.c
new file mode 100644
index 000000000..0e7da291c
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/crypt_md5.c
@@ -0,0 +1,756 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************/
+
+
+#include "rt_config.h"
+
+
+/**
+ * md5_mac:
+ * @key: pointer to	the	key	used for MAC generation
+ * @key_len: length	of the key in bytes
+ * @data: pointer to the data area for which the MAC is	generated
+ * @data_len: length of	the	data in	bytes
+ * @mac: pointer to	the	buffer holding space for the MAC; the buffer should
+ * have	space for 128-bit (16 bytes) MD5 hash value
+ *
+ * md5_mac() determines	the	message	authentication code	by using secure	hash
+ * MD5(key | data |	key).
+ */
+void md5_mac(u8 *key, size_t key_len, u8 *data, size_t data_len, u8 *mac)
+{
+	MD5_CTX	context;
+
+	MD5Init(&context);
+	MD5Update(&context,	key, key_len);
+	MD5Update(&context,	data, data_len);
+	MD5Update(&context,	key, key_len);
+	MD5Final(mac, &context);
+}
+
+/**
+ * hmac_md5:
+ * @key: pointer to	the	key	used for MAC generation
+ * @key_len: length	of the key in bytes
+ * @data: pointer to the data area for which the MAC is	generated
+ * @data_len: length of	the	data in	bytes
+ * @mac: pointer to	the	buffer holding space for the MAC; the buffer should
+ * have	space for 128-bit (16 bytes) MD5 hash value
+ *
+ * hmac_md5() determines the message authentication	code using HMAC-MD5.
+ * This	implementation is based	on the sample code presented in	RFC	2104.
+ */
+void hmac_md5(u8 *key, size_t key_len, u8 *data, size_t data_len, u8 *mac)
+{
+	MD5_CTX	context;
+    u8 k_ipad[65]; /* inner padding - key XORd with ipad */
+    u8 k_opad[65]; /* outer padding - key XORd with opad */
+    u8 tk[16];
+	int	i;
+
+	//assert(key != NULL && data != NULL && mac != NULL);
+
+	/* if key is longer	than 64	bytes reset	it to key =	MD5(key) */
+	if (key_len	> 64) {
+		MD5_CTX	ttcontext;
+
+		MD5Init(&ttcontext);
+		MD5Update(&ttcontext, key, key_len);
+		MD5Final(tk, &ttcontext);
+		//key=(PUCHAR)ttcontext.buf;
+		key	= tk;
+		key_len	= 16;
+	}
+
+	/* the HMAC_MD5	transform looks	like:
+	 *
+	 * MD5(K XOR opad, MD5(K XOR ipad, text))
+	 *
+	 * where K is an n byte	key
+	 * ipad	is the byte	0x36 repeated 64 times
+	 * opad	is the byte	0x5c repeated 64 times
+	 * and text	is the data	being protected	*/
+
+	/* start out by	storing	key	in pads	*/
+	NdisZeroMemory(k_ipad, sizeof(k_ipad));
+	NdisZeroMemory(k_opad,	sizeof(k_opad));
+	//assert(key_len < sizeof(k_ipad));
+	NdisMoveMemory(k_ipad, key,	key_len);
+	NdisMoveMemory(k_opad, key,	key_len);
+
+	/* XOR key with	ipad and opad values */
+	for	(i = 0;	i <	64;	i++) {
+		k_ipad[i] ^= 0x36;
+		k_opad[i] ^= 0x5c;
+	}
+
+	/* perform inner MD5 */
+	MD5Init(&context);					 /*	init context for 1st pass */
+	MD5Update(&context,	k_ipad,	64);	 /*	start with inner pad */
+	MD5Update(&context,	data, data_len); /*	then text of datagram */
+	MD5Final(mac, &context);			 /*	finish up 1st pass */
+
+	/* perform outer MD5 */
+	MD5Init(&context);					 /*	init context for 2nd pass */
+	MD5Update(&context,	k_opad,	64);	 /*	start with outer pad */
+	MD5Update(&context,	mac, 16);		 /*	then results of	1st	hash */
+	MD5Final(mac, &context);			 /*	finish up 2nd pass */
+}
+
+#ifndef RT_BIG_ENDIAN
+#define byteReverse(buf, len)   /* Nothing */
+#else
+void byteReverse(unsigned char *buf, unsigned longs);
+void byteReverse(unsigned char *buf, unsigned longs)
+{
+    do {
+        *(ULONG *)buf = SWAP32(*(ULONG *)buf);
+        buf += 4;
+    } while (--longs);
+}
+#endif
+
+
+/* ==========================  MD5 implementation =========================== */ 
+// four base functions for MD5 
+#define MD5_F1(x, y, z) (((x) & (y)) | ((~x) & (z))) 
+#define MD5_F2(x, y, z) (((x) & (z)) | ((y) & (~z))) 
+#define MD5_F3(x, y, z) ((x) ^ (y) ^ (z))
+#define MD5_F4(x, y, z) ((y) ^ ((x) | (~z)))
+#define CYCLIC_LEFT_SHIFT(w, s) (((w) << (s)) | ((w) >> (32-(s))))
+
+#define	MD5Step(f, w, x, y,	z, data, t, s)	\
+	( w	+= f(x,	y, z) +	data + t,  w = (CYCLIC_LEFT_SHIFT(w, s)) & 0xffffffff, w +=	x )
+
+
+/*
+ *  Function Description:
+ *      Initiate MD5 Context satisfied in RFC 1321
+ *
+ *  Arguments:
+ *      pCtx        Pointer	to MD5 context
+ *
+ *  Return Value:
+ *      None	    
+ */
+VOID MD5Init(MD5_CTX *pCtx)
+{
+    pCtx->Buf[0]=0x67452301;
+    pCtx->Buf[1]=0xefcdab89;
+    pCtx->Buf[2]=0x98badcfe;
+    pCtx->Buf[3]=0x10325476;
+
+    pCtx->LenInBitCount[0]=0;
+    pCtx->LenInBitCount[1]=0;
+}
+
+
+/*
+ *  Function Description:
+ *      Update MD5 Context, allow of an arrary of octets as the next portion 
+ *      of the message
+ *      
+ *  Arguments:
+ *      pCtx		Pointer	to MD5 context
+ * 	    pData       Pointer to input data
+ *      LenInBytes  The length of input data (unit: byte)
+ *
+ *  Return Value:
+ *      None
+ *
+ *  Note:
+ *      Called after MD5Init or MD5Update(itself)   
+ */
+VOID MD5Update(MD5_CTX *pCtx, UCHAR *pData, ULONG LenInBytes)
+{
+    
+    ULONG TfTimes;
+    ULONG temp;
+	unsigned int i;
+    
+    temp = pCtx->LenInBitCount[0];
+
+    pCtx->LenInBitCount[0] = (ULONG) (pCtx->LenInBitCount[0] + (LenInBytes << 3));
+ 
+    if (pCtx->LenInBitCount[0] < temp)
+        pCtx->LenInBitCount[1]++;   //carry in
+
+    pCtx->LenInBitCount[1] += LenInBytes >> 29;
+
+    // mod 64 bytes
+    temp = (temp >> 3) & 0x3f;  
+    
+    // process lacks of 64-byte data 
+    if (temp) 
+    {
+        UCHAR *pAds = (UCHAR *) pCtx->Input + temp;
+        
+        if ((temp+LenInBytes) < 64)
+        {
+            NdisMoveMemory(pAds, (UCHAR *)pData, LenInBytes);   
+            return;
+        }
+        
+        NdisMoveMemory(pAds, (UCHAR *)pData, 64-temp);               
+        byteReverse(pCtx->Input, 16);
+        MD5Transform(pCtx->Buf, (ULONG *)pCtx->Input);
+
+        pData += 64-temp;
+        LenInBytes -= 64-temp; 
+    } // end of if (temp)
+    
+     
+    TfTimes = (LenInBytes >> 6);
+
+    for (i=TfTimes; i>0; i--)
+    {
+        NdisMoveMemory(pCtx->Input, (UCHAR *)pData, 64);
+        byteReverse(pCtx->Input, 16);
+        MD5Transform(pCtx->Buf, (ULONG *)pCtx->Input);
+        pData += 64;
+        LenInBytes -= 64;
+    } // end of for
+
+    // buffering lacks of 64-byte data
+    if(LenInBytes)
+        NdisMoveMemory(pCtx->Input, (UCHAR *)pData, LenInBytes);   
+   
+}
+
+
+/*
+ *  Function Description:
+ *      Append padding bits and length of original message in the tail 
+ *      The message digest has to be completed in the end  
+ *  
+ *  Arguments:
+ *      Digest		Output of Digest-Message for MD5
+ *  	pCtx        Pointer	to MD5 context
+ * 	
+ *  Return Value:
+ *      None
+ *  
+ *  Note:
+ *      Called after MD5Update  
+ */
+VOID MD5Final(UCHAR Digest[16], MD5_CTX *pCtx)
+{
+    UCHAR Remainder;
+    UCHAR PadLenInBytes;
+    UCHAR *pAppend=0;
+    unsigned int i;
+    
+    Remainder = (UCHAR)((pCtx->LenInBitCount[0] >> 3) & 0x3f);
+
+    PadLenInBytes = (Remainder < 56) ? (56-Remainder) : (120-Remainder);
+    
+    pAppend = (UCHAR *)pCtx->Input + Remainder;
+
+    // padding bits without crossing block(64-byte based) boundary
+    if (Remainder < 56)
+    {
+        *pAppend = 0x80;
+        PadLenInBytes --;
+        
+        NdisZeroMemory((UCHAR *)pCtx->Input + Remainder+1, PadLenInBytes); 
+		
+		// add data-length field, from low to high
+       	for (i=0; i<4; i++)
+        {
+        	pCtx->Input[56+i] = (UCHAR)((pCtx->LenInBitCount[0] >> (i << 3)) & 0xff);
+        	pCtx->Input[60+i] = (UCHAR)((pCtx->LenInBitCount[1] >> (i << 3)) & 0xff);
+      	}
+      	
+        byteReverse(pCtx->Input, 16);
+        MD5Transform(pCtx->Buf, (ULONG *)pCtx->Input);
+    } // end of if
+    
+    // padding bits with crossing block(64-byte based) boundary
+    else
+    {
+        // the first block ===
+        *pAppend = 0x80;
+        PadLenInBytes --;
+       
+        NdisZeroMemory((UCHAR *)pCtx->Input + Remainder+1, (64-Remainder-1)); 
+        PadLenInBytes -= (64 - Remainder - 1);
+        
+        byteReverse(pCtx->Input, 16);
+        MD5Transform(pCtx->Buf, (ULONG *)pCtx->Input);
+        
+
+        // the second block ===
+        NdisZeroMemory((UCHAR *)pCtx->Input, PadLenInBytes); 
+
+        // add data-length field
+        for (i=0; i<4; i++)
+        {
+        	pCtx->Input[56+i] = (UCHAR)((pCtx->LenInBitCount[0] >> (i << 3)) & 0xff);
+        	pCtx->Input[60+i] = (UCHAR)((pCtx->LenInBitCount[1] >> (i << 3)) & 0xff);
+      	}
+
+        byteReverse(pCtx->Input, 16);
+        MD5Transform(pCtx->Buf, (ULONG *)pCtx->Input);
+    } // end of else
+
+
+    NdisMoveMemory((UCHAR *)Digest, (ULONG *)pCtx->Buf, 16); // output
+    byteReverse((UCHAR *)Digest, 4);
+    NdisZeroMemory(pCtx, sizeof(pCtx)); // memory free 
+}
+
+
+/*
+ *  Function Description:
+ *      The central algorithm of MD5, consists of four rounds and sixteen 
+ *  	steps per round
+ * 
+ *  Arguments:
+ *      Buf     Buffers of four states (output: 16 bytes)		
+ * 	    Mes     Input data (input: 64 bytes) 
+ *  
+ *  Return Value:
+ *      None
+ *  	
+ *  Note:
+ *      Called by MD5Update or MD5Final
+ */
+VOID MD5Transform(ULONG Buf[4], ULONG Mes[16])
+{  
+    ULONG Reg[4], Temp; 
+	unsigned int i;
+    
+    static UCHAR LShiftVal[16] = 
+    { 	
+        7, 12, 17, 22, 	
+		5, 9 , 14, 20, 
+		4, 11, 16, 23, 
+ 		6, 10, 15, 21, 
+ 	};
+
+	
+	// [equal to 4294967296*abs(sin(index))]
+    static ULONG MD5Table[64] = 
+	{ 
+		0xd76aa478,	0xe8c7b756,	0x242070db,	0xc1bdceee,	
+		0xf57c0faf,	0x4787c62a,	0xa8304613, 0xfd469501,	
+		0x698098d8,	0x8b44f7af,	0xffff5bb1,	0x895cd7be,
+    	0x6b901122,	0xfd987193,	0xa679438e,	0x49b40821,
+    	
+    	0xf61e2562,	0xc040b340,	0x265e5a51,	0xe9b6c7aa,
+    	0xd62f105d,	0x02441453,	0xd8a1e681,	0xe7d3fbc8,
+    	0x21e1cde6,	0xc33707d6,	0xf4d50d87,	0x455a14ed,
+    	0xa9e3e905,	0xfcefa3f8,	0x676f02d9,	0x8d2a4c8a,
+    	           
+    	0xfffa3942,	0x8771f681,	0x6d9d6122,	0xfde5380c,
+    	0xa4beea44,	0x4bdecfa9,	0xf6bb4b60,	0xbebfbc70,
+    	0x289b7ec6,	0xeaa127fa,	0xd4ef3085,	0x04881d05,
+    	0xd9d4d039,	0xe6db99e5,	0x1fa27cf8,	0xc4ac5665,
+    	           
+    	0xf4292244,	0x432aff97,	0xab9423a7,	0xfc93a039,
+   		0x655b59c3,	0x8f0ccc92,	0xffeff47d,	0x85845dd1,
+    	0x6fa87e4f,	0xfe2ce6e0,	0xa3014314,	0x4e0811a1,
+    	0xf7537e82,	0xbd3af235,	0x2ad7d2bb,	0xeb86d391
+	};
+ 
+				
+    for (i=0; i<4; i++)
+        Reg[i]=Buf[i];
+			
+				
+    // 64 steps in MD5 algorithm
+    for (i=0; i<16; i++)                    
+    {
+        MD5Step(MD5_F1, Reg[0], Reg[1], Reg[2], Reg[3], Mes[i],               
+                MD5Table[i], LShiftVal[i & 0x3]);
+
+        // one-word right shift
+        Temp   = Reg[3]; 
+        Reg[3] = Reg[2];
+        Reg[2] = Reg[1];
+        Reg[1] = Reg[0];
+        Reg[0] = Temp;            
+    }
+    for (i=16; i<32; i++)                    
+    {
+        MD5Step(MD5_F2, Reg[0], Reg[1], Reg[2], Reg[3], Mes[(5*(i & 0xf)+1) & 0xf], 
+                MD5Table[i], LShiftVal[(0x1 << 2)+(i & 0x3)]);    
+
+        // one-word right shift
+        Temp   = Reg[3]; 
+        Reg[3] = Reg[2];
+        Reg[2] = Reg[1];
+        Reg[1] = Reg[0];
+        Reg[0] = Temp;           
+    }
+    for (i=32; i<48; i++)                    
+    {
+        MD5Step(MD5_F3, Reg[0], Reg[1], Reg[2], Reg[3], Mes[(3*(i & 0xf)+5) & 0xf], 
+                MD5Table[i], LShiftVal[(0x1 << 3)+(i & 0x3)]);        
+
+        // one-word right shift
+        Temp   = Reg[3]; 
+        Reg[3] = Reg[2];
+        Reg[2] = Reg[1];
+        Reg[1] = Reg[0];
+        Reg[0] = Temp;          
+    }
+    for (i=48; i<64; i++)                    
+    {
+        MD5Step(MD5_F4, Reg[0], Reg[1], Reg[2], Reg[3], Mes[(7*(i & 0xf)) & 0xf], 
+                MD5Table[i], LShiftVal[(0x3 << 2)+(i & 0x3)]);   
+
+        // one-word right shift
+        Temp   = Reg[3]; 
+        Reg[3] = Reg[2];
+        Reg[2] = Reg[1];
+        Reg[1] = Reg[0];
+        Reg[0] = Temp;           
+    }
+    
+      
+    // (temporary)output
+    for (i=0; i<4; i++)
+        Buf[i] += Reg[i];
+
+}
+
+
+
+/* =========================  SHA-1 implementation ========================== */
+// four base functions for SHA-1
+#define SHA1_F1(b, c, d)    (((b) & (c)) | ((~b) & (d)))         
+#define SHA1_F2(b, c, d)    ((b) ^ (c) ^ (d)) 
+#define SHA1_F3(b, c, d)    (((b) & (c)) | ((b) & (d)) | ((c) & (d)))
+
+
+#define SHA1Step(f, a, b, c, d, e, w, k)    \
+    ( e	+= ( f(b, c, d) + w + k + CYCLIC_LEFT_SHIFT(a, 5)) & 0xffffffff, \
+      b = CYCLIC_LEFT_SHIFT(b, 30) )
+
+//Initiate SHA-1 Context satisfied in RFC 3174  
+VOID SHAInit(SHA_CTX *pCtx)
+{
+    pCtx->Buf[0]=0x67452301;
+    pCtx->Buf[1]=0xefcdab89;
+    pCtx->Buf[2]=0x98badcfe;
+    pCtx->Buf[3]=0x10325476;
+    pCtx->Buf[4]=0xc3d2e1f0;
+    
+    pCtx->LenInBitCount[0]=0;
+    pCtx->LenInBitCount[1]=0;
+}
+
+/*
+ *  Function Description:
+ *      Update SHA-1 Context, allow of an arrary of octets as the next
+ *      portion of the message
+ *      
+ *  Arguments:
+ *      pCtx		Pointer	to SHA-1 context
+ * 	    pData       Pointer to input data
+ *      LenInBytes  The length of input data (unit: byte)
+ *
+ *  Return Value:
+ *      error       indicate more than pow(2,64) bits of data  
+ *
+ *  Note:
+ *      Called after SHAInit or SHAUpdate(itself)   
+ */
+UCHAR SHAUpdate(SHA_CTX *pCtx, UCHAR *pData, ULONG LenInBytes)
+{
+    ULONG TfTimes;
+    ULONG temp1,temp2;
+	unsigned int i;
+	UCHAR err=1;
+    
+    temp1 = pCtx->LenInBitCount[0];
+    temp2 = pCtx->LenInBitCount[1];
+
+    pCtx->LenInBitCount[0] = (ULONG) (pCtx->LenInBitCount[0] + (LenInBytes << 3));
+    if (pCtx->LenInBitCount[0] < temp1)
+        pCtx->LenInBitCount[1]++;   //carry in
+
+
+    pCtx->LenInBitCount[1] = (ULONG) (pCtx->LenInBitCount[1] +(LenInBytes >> 29));
+    if (pCtx->LenInBitCount[1] < temp2)
+        return (err);   //check total length of original data
+ 
+
+    // mod 64 bytes
+    temp1 = (temp1 >> 3) & 0x3f;  
+    
+    // process lacks of 64-byte data 
+    if (temp1) 
+    {
+        UCHAR *pAds = (UCHAR *) pCtx->Input + temp1;
+        
+        if ((temp1+LenInBytes) < 64)
+        {
+            NdisMoveMemory(pAds, (UCHAR *)pData, LenInBytes);   
+            return (0);
+        }
+        
+        NdisMoveMemory(pAds, (UCHAR *)pData, 64-temp1);              
+        byteReverse((UCHAR *)pCtx->Input, 16);               
+        
+        NdisZeroMemory((UCHAR *)pCtx->Input + 64, 16);
+        SHATransform(pCtx->Buf, (ULONG *)pCtx->Input);
+
+        pData += 64-temp1;
+        LenInBytes -= 64-temp1; 
+    } // end of if (temp1)
+    
+     
+    TfTimes = (LenInBytes >> 6);
+
+    for (i=TfTimes; i>0; i--)
+    {
+        NdisMoveMemory(pCtx->Input, (UCHAR *)pData, 64);
+        byteReverse((UCHAR *)pCtx->Input, 16);
+        
+        NdisZeroMemory((UCHAR *)pCtx->Input + 64, 16);
+        SHATransform(pCtx->Buf, (ULONG *)pCtx->Input);
+        pData += 64;
+        LenInBytes -= 64;
+    } // end of for
+
+    // buffering lacks of 64-byte data
+    if(LenInBytes)
+        NdisMoveMemory(pCtx->Input, (UCHAR *)pData, LenInBytes);
+
+	return (0);
+
+}
+
+// Append padding bits and length of original message in the tail 
+// The message digest has to be completed in the end 
+VOID SHAFinal(SHA_CTX *pCtx, UCHAR Digest[20])
+{
+    UCHAR Remainder;
+    UCHAR PadLenInBytes;
+    UCHAR *pAppend=0;
+    unsigned int i;
+
+    Remainder = (UCHAR)((pCtx->LenInBitCount[0] >> 3) & 0x3f);
+
+    pAppend = (UCHAR *)pCtx->Input + Remainder;
+
+    PadLenInBytes = (Remainder < 56) ? (56-Remainder) : (120-Remainder);
+    
+    // padding bits without crossing block(64-byte based) boundary
+    if (Remainder < 56)
+    {       
+        *pAppend = 0x80;
+        PadLenInBytes --;
+        
+        NdisZeroMemory((UCHAR *)pCtx->Input + Remainder+1, PadLenInBytes); 
+		 
+		// add data-length field, from high to low
+        for (i=0; i<4; i++)
+        {
+        	pCtx->Input[56+i] = (UCHAR)((pCtx->LenInBitCount[1] >> ((3-i) << 3)) & 0xff);
+        	pCtx->Input[60+i] = (UCHAR)((pCtx->LenInBitCount[0] >> ((3-i) << 3)) & 0xff);
+      	}
+      	
+        byteReverse((UCHAR *)pCtx->Input, 16);
+        NdisZeroMemory((UCHAR *)pCtx->Input + 64, 14);
+        SHATransform(pCtx->Buf, (ULONG *)pCtx->Input);
+    } // end of if
+    
+    // padding bits with crossing block(64-byte based) boundary
+    else
+    {
+        // the first block ===
+        *pAppend = 0x80;
+        PadLenInBytes --;
+        
+        NdisZeroMemory((UCHAR *)pCtx->Input + Remainder+1, (64-Remainder-1)); 
+        PadLenInBytes -= (64 - Remainder - 1);
+        
+        byteReverse((UCHAR *)pCtx->Input, 16);
+        NdisZeroMemory((UCHAR *)pCtx->Input + 64, 16);
+        SHATransform(pCtx->Buf, (ULONG *)pCtx->Input);
+
+
+        // the second block ===
+        NdisZeroMemory((UCHAR *)pCtx->Input, PadLenInBytes); 
+			
+		// add data-length field
+		for (i=0; i<4; i++)
+        {
+        	pCtx->Input[56+i] = (UCHAR)((pCtx->LenInBitCount[1] >> ((3-i) << 3)) & 0xff);
+        	pCtx->Input[60+i] = (UCHAR)((pCtx->LenInBitCount[0] >> ((3-i) << 3)) & 0xff);
+      	}
+      	
+        byteReverse((UCHAR *)pCtx->Input, 16);
+        NdisZeroMemory((UCHAR *)pCtx->Input + 64, 16); 
+        SHATransform(pCtx->Buf, (ULONG *)pCtx->Input);
+    } // end of else
+	
+		
+    //Output, bytereverse
+    for (i=0; i<20; i++)
+    {
+        Digest [i] = (UCHAR)(pCtx->Buf[i>>2] >> 8*(3-(i & 0x3)));
+    }
+    
+    NdisZeroMemory(pCtx, sizeof(pCtx)); // memory free 
+}
+
+
+// The central algorithm of SHA-1, consists of four rounds and 
+// twenty steps per round
+VOID SHATransform(ULONG Buf[5], ULONG Mes[20])
+{
+    ULONG Reg[5],Temp; 
+	unsigned int i;
+    ULONG W[80]; 
+   
+    static ULONG SHA1Table[4] = { 0x5a827999, 0x6ed9eba1, 
+                                  0x8f1bbcdc, 0xca62c1d6 };
+ 
+    Reg[0]=Buf[0];
+	Reg[1]=Buf[1];
+	Reg[2]=Buf[2];
+	Reg[3]=Buf[3];
+	Reg[4]=Buf[4];
+
+    //the first octet of a word is stored in the 0th element, bytereverse
+	for(i = 0; i < 16; i++)
+    { 
+    	W[i]  = (Mes[i] >> 24) & 0xff;
+        W[i] |= (Mes[i] >> 8 ) & 0xff00;
+        W[i] |= (Mes[i] << 8 ) & 0xff0000;
+        W[i] |= (Mes[i] << 24) & 0xff000000;
+    }
+    
+		 
+    for	(i = 0; i < 64; i++)
+	    W[16+i] = CYCLIC_LEFT_SHIFT(W[i] ^ W[2+i] ^ W[8+i] ^ W[13+i], 1);
+	    
+    
+    // 80 steps in SHA-1 algorithm
+    for (i=0; i<80; i++)                    
+    {
+        if (i<20)
+            SHA1Step(SHA1_F1, Reg[0], Reg[1], Reg[2], Reg[3], Reg[4], 
+                     W[i], SHA1Table[0]);
+        
+        else if (i>=20 && i<40)
+            SHA1Step(SHA1_F2, Reg[0], Reg[1], Reg[2], Reg[3], Reg[4], 
+                     W[i], SHA1Table[1]);
+			
+		else if (i>=40 && i<60)
+            SHA1Step(SHA1_F3, Reg[0], Reg[1], Reg[2], Reg[3], Reg[4], 
+                      W[i], SHA1Table[2]);
+			
+        else
+            SHA1Step(SHA1_F2, Reg[0], Reg[1], Reg[2], Reg[3], Reg[4], 
+                     W[i], SHA1Table[3]);
+			
+
+       // one-word right shift
+		Temp   = Reg[4];
+        Reg[4] = Reg[3];
+        Reg[3] = Reg[2];
+        Reg[2] = Reg[1];
+        Reg[1] = Reg[0];
+        Reg[0] = Temp;       
+  
+    } // end of for-loop
+
+
+    // (temporary)output
+    for (i=0; i<5; i++)
+        Buf[i] += Reg[i];
+    
+}
+
+
+/*
+	========================================================================
+	
+	Routine Description:
+		SHA1 function 
+
+	Arguments:
+		
+	Return Value:
+
+	Note:
+		
+	========================================================================
+*/
+VOID	HMAC_SHA1(
+	IN	UCHAR	*text,
+	IN	UINT	text_len,
+	IN	UCHAR	*key,
+	IN	UINT	key_len,
+	IN	UCHAR	*digest)
+{
+	SHA_CTX	context;
+	UCHAR	k_ipad[65]; /* inner padding - key XORd with ipad	*/
+	UCHAR	k_opad[65]; /* outer padding - key XORd with opad	*/
+	INT		i;
+
+	// if key is longer	than 64	bytes reset	it to key=SHA1(key)	
+	if (key_len	> 64) 
+	{
+		SHA_CTX		 tctx;
+		SHAInit(&tctx);
+		SHAUpdate(&tctx, key, key_len);
+		SHAFinal(&tctx,	key);
+		key_len	= 20;
+	}
+	NdisZeroMemory(k_ipad, sizeof(k_ipad));
+	NdisZeroMemory(k_opad, sizeof(k_opad));
+	NdisMoveMemory(k_ipad, key,	key_len);
+	NdisMoveMemory(k_opad, key,	key_len);
+
+	// XOR key with	ipad and opad values  
+	for	(i = 0;	i <	64;	i++) 
+	{	
+		k_ipad[i] ^= 0x36;
+		k_opad[i] ^= 0x5c;
+	}
+
+	// perform inner SHA1 
+	SHAInit(&context); 						/* init context for 1st pass */
+	SHAUpdate(&context,	k_ipad,	64);		/*	start with inner pad */
+	SHAUpdate(&context,	text, text_len);	/*	then text of datagram */
+	SHAFinal(&context, digest);				/* finish up 1st pass */
+
+	//perform outer	SHA1  
+	SHAInit(&context);					/* init context for 2nd pass */
+	SHAUpdate(&context,	k_opad,	64);	/*	start with outer pad */
+	SHAUpdate(&context,	digest,	20);	/*	then results of	1st	hash */
+	SHAFinal(&context, digest);			/* finish up 2nd pass */
+}
+
+
+/* End of crypt_md5.c */
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/crypt_sha2.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/crypt_sha2.c
new file mode 100644
index 000000000..8a30b10a5
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/crypt_sha2.c
@@ -0,0 +1,715 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************/
+
+
+#include "rt_config.h"
+
+
+#if defined(__cplusplus)
+extern "C"
+{
+#endif
+
+#ifdef _MSC_VER
+#pragma intrinsic(memcpy)
+#endif
+
+#if 0 && defined(_MSC_VER)
+#define rotl32 _lrotl
+#define rotr32 _lrotr
+#else
+#define rotl32(x,n)   (((x) << n) | ((x) >> (32 - n)))
+#define rotr32(x,n)   (((x) >> n) | ((x) << (32 - n)))
+#endif
+
+#if !defined(bswap_32)
+#define bswap_32(x) ((rotr32((x), 24) & 0x00ff00ff) | (rotr32((x), 8) & 0xff00ff00))
+#endif
+
+#ifdef	__BIG_ENDIAN
+#undef  SWAP_BYTES
+#else
+#define SWAP_BYTES
+#endif
+
+
+#define ch(x,y,z)       ((z) ^ ((x) & ((y) ^ (z))))
+#define maj(x,y,z)      (((x) & (y)) | ((z) & ((x) ^ (y))))
+
+
+/* round transforms for SHA256 and SHA512 compression functions */
+
+#define vf(n,i) v[(n - i) & 7]
+
+#define hf(i) (p[i & 15] += \
+    g_1(p[(i + 14) & 15]) + p[(i + 9) & 15] + g_0(p[(i + 1) & 15]))
+
+#define v_cycle(i,j)                                \
+    vf(7,i) += (j ? hf(i) : p[i]) + k_0[i+j]        \
+    + s_1(vf(4,i)) + ch(vf(4,i),vf(5,i),vf(6,i));   \
+    vf(3,i) += vf(7,i);                             \
+    vf(7,i) += s_0(vf(0,i))+ maj(vf(0,i),vf(1,i),vf(2,i))
+
+#if defined(SHA_224) || defined(SHA_256)
+
+#define SHA256_MASK (SHA256_BLOCK_SIZE - 1)
+
+#if defined(SWAP_BYTES)
+#define bsw_32(p,n) \
+    { int _i = (n); while(_i--) ((uint_32t*)p)[_i] = bswap_32(((uint_32t*)p)[_i]); }
+#else
+#define bsw_32(p,n)
+#endif
+
+#define s_0(x)  (rotr32((x),  2) ^ rotr32((x), 13) ^ rotr32((x), 22))
+#define s_1(x)  (rotr32((x),  6) ^ rotr32((x), 11) ^ rotr32((x), 25))
+#define g_0(x)  (rotr32((x),  7) ^ rotr32((x), 18) ^ ((x) >>  3))
+#define g_1(x)  (rotr32((x), 17) ^ rotr32((x), 19) ^ ((x) >> 10))
+#define k_0     k256
+
+/* rotated SHA256 round definition. Rather than swapping variables as in    */
+/* FIPS-180, different variables are 'rotated' on each round, returning     */
+/* to their starting positions every eight rounds                           */
+
+#define q(n)  v##n
+
+#define one_cycle(a,b,c,d,e,f,g,h,k,w)  \
+    q(h) += s_1(q(e)) + ch(q(e), q(f), q(g)) + k + w; \
+    q(d) += q(h); q(h) += s_0(q(a)) + maj(q(a), q(b), q(c))
+
+/* SHA256 mixing data   */
+
+const uint_32t k256[64] =
+{   0x428a2f98ul, 0x71374491ul, 0xb5c0fbcful, 0xe9b5dba5ul,
+    0x3956c25bul, 0x59f111f1ul, 0x923f82a4ul, 0xab1c5ed5ul,
+    0xd807aa98ul, 0x12835b01ul, 0x243185beul, 0x550c7dc3ul,
+    0x72be5d74ul, 0x80deb1feul, 0x9bdc06a7ul, 0xc19bf174ul,
+    0xe49b69c1ul, 0xefbe4786ul, 0x0fc19dc6ul, 0x240ca1ccul,
+    0x2de92c6ful, 0x4a7484aaul, 0x5cb0a9dcul, 0x76f988daul,
+    0x983e5152ul, 0xa831c66dul, 0xb00327c8ul, 0xbf597fc7ul,
+    0xc6e00bf3ul, 0xd5a79147ul, 0x06ca6351ul, 0x14292967ul,
+    0x27b70a85ul, 0x2e1b2138ul, 0x4d2c6dfcul, 0x53380d13ul,
+    0x650a7354ul, 0x766a0abbul, 0x81c2c92eul, 0x92722c85ul,
+    0xa2bfe8a1ul, 0xa81a664bul, 0xc24b8b70ul, 0xc76c51a3ul,
+    0xd192e819ul, 0xd6990624ul, 0xf40e3585ul, 0x106aa070ul,
+    0x19a4c116ul, 0x1e376c08ul, 0x2748774cul, 0x34b0bcb5ul,
+    0x391c0cb3ul, 0x4ed8aa4aul, 0x5b9cca4ful, 0x682e6ff3ul,
+    0x748f82eeul, 0x78a5636ful, 0x84c87814ul, 0x8cc70208ul,
+    0x90befffaul, 0xa4506cebul, 0xbef9a3f7ul, 0xc67178f2ul,
+};
+
+/* Compile 64 bytes of hash data into SHA256 digest value   */
+/* NOTE: this routine assumes that the byte order in the    */
+/* ctx->wbuf[] at this point is such that low address bytes */
+/* in the ORIGINAL byte stream will go into the high end of */
+/* words on BOTH big and little endian systems              */
+
+void_ret sha256_compile(sha256_ctx ctx[1])
+{
+#if !defined(UNROLL_SHA2)
+
+    uint_32t j, *p = ctx->wbuf, v[8];
+
+    memcpy(v, ctx->hash, 8 * sizeof(uint_32t));
+
+    for(j = 0; j < 64; j += 16)
+    {
+        v_cycle( 0, j); v_cycle( 1, j);
+        v_cycle( 2, j); v_cycle( 3, j);
+        v_cycle( 4, j); v_cycle( 5, j);
+        v_cycle( 6, j); v_cycle( 7, j);
+        v_cycle( 8, j); v_cycle( 9, j);
+        v_cycle(10, j); v_cycle(11, j);
+        v_cycle(12, j); v_cycle(13, j);
+        v_cycle(14, j); v_cycle(15, j);
+    }
+
+    ctx->hash[0] += v[0]; ctx->hash[1] += v[1];
+    ctx->hash[2] += v[2]; ctx->hash[3] += v[3];
+    ctx->hash[4] += v[4]; ctx->hash[5] += v[5];
+    ctx->hash[6] += v[6]; ctx->hash[7] += v[7];
+
+#else
+
+    uint_32t *p = ctx->wbuf,v0,v1,v2,v3,v4,v5,v6,v7;
+
+    v0 = ctx->hash[0]; v1 = ctx->hash[1];
+    v2 = ctx->hash[2]; v3 = ctx->hash[3];
+    v4 = ctx->hash[4]; v5 = ctx->hash[5];
+    v6 = ctx->hash[6]; v7 = ctx->hash[7];
+
+    one_cycle(0,1,2,3,4,5,6,7,k256[ 0],p[ 0]);
+    one_cycle(7,0,1,2,3,4,5,6,k256[ 1],p[ 1]);
+    one_cycle(6,7,0,1,2,3,4,5,k256[ 2],p[ 2]);
+    one_cycle(5,6,7,0,1,2,3,4,k256[ 3],p[ 3]);
+    one_cycle(4,5,6,7,0,1,2,3,k256[ 4],p[ 4]);
+    one_cycle(3,4,5,6,7,0,1,2,k256[ 5],p[ 5]);
+    one_cycle(2,3,4,5,6,7,0,1,k256[ 6],p[ 6]);
+    one_cycle(1,2,3,4,5,6,7,0,k256[ 7],p[ 7]);
+    one_cycle(0,1,2,3,4,5,6,7,k256[ 8],p[ 8]);
+    one_cycle(7,0,1,2,3,4,5,6,k256[ 9],p[ 9]);
+    one_cycle(6,7,0,1,2,3,4,5,k256[10],p[10]);
+    one_cycle(5,6,7,0,1,2,3,4,k256[11],p[11]);
+    one_cycle(4,5,6,7,0,1,2,3,k256[12],p[12]);
+    one_cycle(3,4,5,6,7,0,1,2,k256[13],p[13]);
+    one_cycle(2,3,4,5,6,7,0,1,k256[14],p[14]);
+    one_cycle(1,2,3,4,5,6,7,0,k256[15],p[15]);
+
+    one_cycle(0,1,2,3,4,5,6,7,k256[16],hf( 0));
+    one_cycle(7,0,1,2,3,4,5,6,k256[17],hf( 1));
+    one_cycle(6,7,0,1,2,3,4,5,k256[18],hf( 2));
+    one_cycle(5,6,7,0,1,2,3,4,k256[19],hf( 3));
+    one_cycle(4,5,6,7,0,1,2,3,k256[20],hf( 4));
+    one_cycle(3,4,5,6,7,0,1,2,k256[21],hf( 5));
+    one_cycle(2,3,4,5,6,7,0,1,k256[22],hf( 6));
+    one_cycle(1,2,3,4,5,6,7,0,k256[23],hf( 7));
+    one_cycle(0,1,2,3,4,5,6,7,k256[24],hf( 8));
+    one_cycle(7,0,1,2,3,4,5,6,k256[25],hf( 9));
+    one_cycle(6,7,0,1,2,3,4,5,k256[26],hf(10));
+    one_cycle(5,6,7,0,1,2,3,4,k256[27],hf(11));
+    one_cycle(4,5,6,7,0,1,2,3,k256[28],hf(12));
+    one_cycle(3,4,5,6,7,0,1,2,k256[29],hf(13));
+    one_cycle(2,3,4,5,6,7,0,1,k256[30],hf(14));
+    one_cycle(1,2,3,4,5,6,7,0,k256[31],hf(15));
+
+    one_cycle(0,1,2,3,4,5,6,7,k256[32],hf( 0));
+    one_cycle(7,0,1,2,3,4,5,6,k256[33],hf( 1));
+    one_cycle(6,7,0,1,2,3,4,5,k256[34],hf( 2));
+    one_cycle(5,6,7,0,1,2,3,4,k256[35],hf( 3));
+    one_cycle(4,5,6,7,0,1,2,3,k256[36],hf( 4));
+    one_cycle(3,4,5,6,7,0,1,2,k256[37],hf( 5));
+    one_cycle(2,3,4,5,6,7,0,1,k256[38],hf( 6));
+    one_cycle(1,2,3,4,5,6,7,0,k256[39],hf( 7));
+    one_cycle(0,1,2,3,4,5,6,7,k256[40],hf( 8));
+    one_cycle(7,0,1,2,3,4,5,6,k256[41],hf( 9));
+    one_cycle(6,7,0,1,2,3,4,5,k256[42],hf(10));
+    one_cycle(5,6,7,0,1,2,3,4,k256[43],hf(11));
+    one_cycle(4,5,6,7,0,1,2,3,k256[44],hf(12));
+    one_cycle(3,4,5,6,7,0,1,2,k256[45],hf(13));
+    one_cycle(2,3,4,5,6,7,0,1,k256[46],hf(14));
+    one_cycle(1,2,3,4,5,6,7,0,k256[47],hf(15));
+
+    one_cycle(0,1,2,3,4,5,6,7,k256[48],hf( 0));
+    one_cycle(7,0,1,2,3,4,5,6,k256[49],hf( 1));
+    one_cycle(6,7,0,1,2,3,4,5,k256[50],hf( 2));
+    one_cycle(5,6,7,0,1,2,3,4,k256[51],hf( 3));
+    one_cycle(4,5,6,7,0,1,2,3,k256[52],hf( 4));
+    one_cycle(3,4,5,6,7,0,1,2,k256[53],hf( 5));
+    one_cycle(2,3,4,5,6,7,0,1,k256[54],hf( 6));
+    one_cycle(1,2,3,4,5,6,7,0,k256[55],hf( 7));
+    one_cycle(0,1,2,3,4,5,6,7,k256[56],hf( 8));
+    one_cycle(7,0,1,2,3,4,5,6,k256[57],hf( 9));
+    one_cycle(6,7,0,1,2,3,4,5,k256[58],hf(10));
+    one_cycle(5,6,7,0,1,2,3,4,k256[59],hf(11));
+    one_cycle(4,5,6,7,0,1,2,3,k256[60],hf(12));
+    one_cycle(3,4,5,6,7,0,1,2,k256[61],hf(13));
+    one_cycle(2,3,4,5,6,7,0,1,k256[62],hf(14));
+    one_cycle(1,2,3,4,5,6,7,0,k256[63],hf(15));
+
+    ctx->hash[0] += v0; ctx->hash[1] += v1;
+    ctx->hash[2] += v2; ctx->hash[3] += v3;
+    ctx->hash[4] += v4; ctx->hash[5] += v5;
+    ctx->hash[6] += v6; ctx->hash[7] += v7;
+#endif
+}
+
+/* SHA256 hash data in an array of bytes into hash buffer   */
+/* and call the hash_compile function as required.          */
+
+void_ret sha256_hash(const unsigned char data[], unsigned int len, sha256_ctx ctx[1])
+{   uint_32t pos = (uint_32t)(ctx->count[0] & SHA256_MASK),
+             space = SHA256_BLOCK_SIZE - pos;
+    const unsigned char *sp = data;
+
+    if((ctx->count[0] += len) < len)
+        ++(ctx->count[1]);
+
+    while(len >= space)     /* tranfer whole blocks while possible  */
+    {
+        memcpy(((unsigned char*)ctx->wbuf) + pos, sp, space);
+        sp += space; len -= space; space = SHA256_BLOCK_SIZE; pos = 0;
+        bsw_32(ctx->wbuf, SHA256_BLOCK_SIZE >> 2)
+        sha256_compile(ctx);
+    }
+
+    memcpy(((unsigned char*)ctx->wbuf) + pos, sp, len);
+}
+
+/* SHA256 Final padding and digest calculation  */
+
+static void sha_end1(unsigned char hval[], sha256_ctx ctx[1], const unsigned int hlen)
+{   uint_32t    i = (uint_32t)(ctx->count[0] & SHA256_MASK);
+
+    /* put bytes in the buffer in an order in which references to   */
+    /* 32-bit words will put bytes with lower addresses into the    */
+    /* top of 32 bit words on BOTH big and little endian machines   */
+    bsw_32(ctx->wbuf, (i + 3) >> 2)
+
+    /* we now need to mask valid bytes and add the padding which is */
+    /* a single 1 bit and as many zero bits as necessary. Note that */
+    /* we can always add the first padding byte here because the    */
+    /* buffer always has at least one empty slot                    */
+    ctx->wbuf[i >> 2] &= 0xffffff80 << 8 * (~i & 3);
+    ctx->wbuf[i >> 2] |= 0x00000080 << 8 * (~i & 3);
+
+    /* we need 9 or more empty positions, one for the padding byte  */
+    /* (above) and eight for the length count.  If there is not     */
+    /* enough space pad and empty the buffer                        */
+    if(i > SHA256_BLOCK_SIZE - 9)
+    {
+        if(i < 60) ctx->wbuf[15] = 0;
+        sha256_compile(ctx);
+        i = 0;
+    }
+    else    /* compute a word index for the empty buffer positions  */
+        i = (i >> 2) + 1;
+
+    while(i < 14) /* and zero pad all but last two positions        */
+        ctx->wbuf[i++] = 0;
+
+    /* the following 32-bit length fields are assembled in the      */
+    /* wrong byte order on little endian machines but this is       */
+    /* corrected later since they are only ever used as 32-bit      */
+    /* word values.                                                 */
+    ctx->wbuf[14] = (ctx->count[1] << 3) | (ctx->count[0] >> 29);
+    ctx->wbuf[15] = ctx->count[0] << 3;
+    sha256_compile(ctx);
+
+    /* extract the hash value as bytes in case the hash buffer is   */
+    /* mislaigned for 32-bit words                                  */
+    for(i = 0; i < hlen; ++i)
+        hval[i] = (unsigned char)(ctx->hash[i >> 2] >> (8 * (~i & 3)));
+}
+
+#endif
+
+#if defined(SHA_224)
+
+const uint_32t i224[8] =
+{
+    0xc1059ed8ul, 0x367cd507ul, 0x3070dd17ul, 0xf70e5939ul,
+    0xffc00b31ul, 0x68581511ul, 0x64f98fa7ul, 0xbefa4fa4ul
+};
+
+void_ret sha224_begin(sha224_ctx ctx[1])
+{
+    ctx->count[0] = ctx->count[1] = 0;
+    memcpy(ctx->hash, i224, 8 * sizeof(uint_32t));
+}
+
+void_ret sha224_end(unsigned char hval[], sha224_ctx ctx[1])
+{
+    sha_end1(hval, ctx, SHA224_DIGEST_SIZE);
+}
+
+void_ret sha224(unsigned char hval[], const unsigned char data[], unsigned int len)
+{   sha224_ctx  cx[1];
+
+    sha224_begin(cx);
+    sha224_hash(data, len, cx);
+    sha_end1(hval, cx, SHA224_DIGEST_SIZE);
+}
+
+#endif
+
+#if defined(SHA_256)
+
+const uint_32t i256[8] =
+{
+    0x6a09e667ul, 0xbb67ae85ul, 0x3c6ef372ul, 0xa54ff53aul,
+    0x510e527ful, 0x9b05688cul, 0x1f83d9abul, 0x5be0cd19ul
+};
+
+void_ret sha256_begin(sha256_ctx ctx[1])
+{
+    ctx->count[0] = ctx->count[1] = 0;
+    memcpy(ctx->hash, i256, 8 * sizeof(uint_32t));
+}
+
+void_ret sha256_end(unsigned char hval[], sha256_ctx ctx[1])
+{
+    sha_end1(hval, ctx, SHA256_DIGEST_SIZE);
+}
+
+void_ret sha256(unsigned char hval[], const unsigned char data[], unsigned int len)
+{   sha256_ctx  cx[1];
+
+    sha256_begin(cx);
+    sha256_hash(data, len, cx);
+    sha_end1(hval, cx, SHA256_DIGEST_SIZE);
+}
+
+#endif
+
+#if defined(SHA_384) || defined(SHA_512)
+
+#define SHA512_MASK (SHA512_BLOCK_SIZE - 1)
+
+#define rotr64(x,n)   (((x) >> n) | ((x) << (64 - n)))
+
+#if !defined(bswap_64)
+#define bswap_64(x) (((uint_64t)(bswap_32((uint_32t)(x)))) << 32 | bswap_32((uint_32t)((x) >> 32)))
+#endif
+
+#if defined(SWAP_BYTES)
+#define bsw_64(p,n) \
+    { int _i = (n); while(_i--) ((uint_64t*)p)[_i] = bswap_64(((uint_64t*)p)[_i]); }
+#else
+#define bsw_64(p,n)
+#endif
+
+/* SHA512 mixing function definitions   */
+
+#ifdef   s_0
+# undef  s_0
+# undef  s_1
+# undef  g_0
+# undef  g_1
+# undef  k_0
+#endif
+
+#define s_0(x)  (rotr64((x), 28) ^ rotr64((x), 34) ^ rotr64((x), 39))
+#define s_1(x)  (rotr64((x), 14) ^ rotr64((x), 18) ^ rotr64((x), 41))
+#define g_0(x)  (rotr64((x),  1) ^ rotr64((x),  8) ^ ((x) >>  7))
+#define g_1(x)  (rotr64((x), 19) ^ rotr64((x), 61) ^ ((x) >>  6))
+#define k_0     k512
+
+/* SHA384/SHA512 mixing data    */
+
+const uint_64t  k512[80] =
+{
+    li_64(428a2f98d728ae22), li_64(7137449123ef65cd),
+    li_64(b5c0fbcfec4d3b2f), li_64(e9b5dba58189dbbc),
+    li_64(3956c25bf348b538), li_64(59f111f1b605d019),
+    li_64(923f82a4af194f9b), li_64(ab1c5ed5da6d8118),
+    li_64(d807aa98a3030242), li_64(12835b0145706fbe),
+    li_64(243185be4ee4b28c), li_64(550c7dc3d5ffb4e2),
+    li_64(72be5d74f27b896f), li_64(80deb1fe3b1696b1),
+    li_64(9bdc06a725c71235), li_64(c19bf174cf692694),
+    li_64(e49b69c19ef14ad2), li_64(efbe4786384f25e3),
+    li_64(0fc19dc68b8cd5b5), li_64(240ca1cc77ac9c65),
+    li_64(2de92c6f592b0275), li_64(4a7484aa6ea6e483),
+    li_64(5cb0a9dcbd41fbd4), li_64(76f988da831153b5),
+    li_64(983e5152ee66dfab), li_64(a831c66d2db43210),
+    li_64(b00327c898fb213f), li_64(bf597fc7beef0ee4),
+    li_64(c6e00bf33da88fc2), li_64(d5a79147930aa725),
+    li_64(06ca6351e003826f), li_64(142929670a0e6e70),
+    li_64(27b70a8546d22ffc), li_64(2e1b21385c26c926),
+    li_64(4d2c6dfc5ac42aed), li_64(53380d139d95b3df),
+    li_64(650a73548baf63de), li_64(766a0abb3c77b2a8),
+    li_64(81c2c92e47edaee6), li_64(92722c851482353b),
+    li_64(a2bfe8a14cf10364), li_64(a81a664bbc423001),
+    li_64(c24b8b70d0f89791), li_64(c76c51a30654be30),
+    li_64(d192e819d6ef5218), li_64(d69906245565a910),
+    li_64(f40e35855771202a), li_64(106aa07032bbd1b8),
+    li_64(19a4c116b8d2d0c8), li_64(1e376c085141ab53),
+    li_64(2748774cdf8eeb99), li_64(34b0bcb5e19b48a8),
+    li_64(391c0cb3c5c95a63), li_64(4ed8aa4ae3418acb),
+    li_64(5b9cca4f7763e373), li_64(682e6ff3d6b2b8a3),
+    li_64(748f82ee5defb2fc), li_64(78a5636f43172f60),
+    li_64(84c87814a1f0ab72), li_64(8cc702081a6439ec),
+    li_64(90befffa23631e28), li_64(a4506cebde82bde9),
+    li_64(bef9a3f7b2c67915), li_64(c67178f2e372532b),
+    li_64(ca273eceea26619c), li_64(d186b8c721c0c207),
+    li_64(eada7dd6cde0eb1e), li_64(f57d4f7fee6ed178),
+    li_64(06f067aa72176fba), li_64(0a637dc5a2c898a6),
+    li_64(113f9804bef90dae), li_64(1b710b35131c471b),
+    li_64(28db77f523047d84), li_64(32caab7b40c72493),
+    li_64(3c9ebe0a15c9bebc), li_64(431d67c49c100d4c),
+    li_64(4cc5d4becb3e42b6), li_64(597f299cfc657e2a),
+    li_64(5fcb6fab3ad6faec), li_64(6c44198c4a475817)
+};
+
+/* Compile 128 bytes of hash data into SHA384/512 digest    */
+/* NOTE: this routine assumes that the byte order in the    */
+/* ctx->wbuf[] at this point is such that low address bytes */
+/* in the ORIGINAL byte stream will go into the high end of */
+/* words on BOTH big and little endian systems              */
+
+void_ret sha512_compile(sha512_ctx ctx[1])
+{   uint_64t    v[8], *p = ctx->wbuf;
+    uint_32t    j;
+
+    memcpy(v, ctx->hash, 8 * sizeof(uint_64t));
+
+    for(j = 0; j < 80; j += 16)
+    {
+        v_cycle( 0, j); v_cycle( 1, j);
+        v_cycle( 2, j); v_cycle( 3, j);
+        v_cycle( 4, j); v_cycle( 5, j);
+        v_cycle( 6, j); v_cycle( 7, j);
+        v_cycle( 8, j); v_cycle( 9, j);
+        v_cycle(10, j); v_cycle(11, j);
+        v_cycle(12, j); v_cycle(13, j);
+        v_cycle(14, j); v_cycle(15, j);
+    }
+
+    ctx->hash[0] += v[0]; ctx->hash[1] += v[1];
+    ctx->hash[2] += v[2]; ctx->hash[3] += v[3];
+    ctx->hash[4] += v[4]; ctx->hash[5] += v[5];
+    ctx->hash[6] += v[6]; ctx->hash[7] += v[7];
+}
+
+/* Compile 128 bytes of hash data into SHA256 digest value  */
+/* NOTE: this routine assumes that the byte order in the    */
+/* ctx->wbuf[] at this point is in such an order that low   */
+/* address bytes in the ORIGINAL byte stream placed in this */
+/* buffer will now go to the high end of words on BOTH big  */
+/* and little endian systems                                */
+
+void_ret sha512_hash(const unsigned char data[], unsigned int len, sha512_ctx ctx[1])
+{   uint_32t pos = (uint_32t)(ctx->count[0] & SHA512_MASK),
+             space = SHA512_BLOCK_SIZE - pos;
+    const unsigned char *sp = data;
+
+    if((ctx->count[0] += len) < len)
+        ++(ctx->count[1]);
+
+    while(len >= space)     /* tranfer whole blocks while possible  */
+    {
+        memcpy(((unsigned char*)ctx->wbuf) + pos, sp, space);
+        sp += space; len -= space; space = SHA512_BLOCK_SIZE; pos = 0;
+        bsw_64(ctx->wbuf, SHA512_BLOCK_SIZE >> 3);
+        sha512_compile(ctx);
+    }
+
+    memcpy(((unsigned char*)ctx->wbuf) + pos, sp, len);
+}
+
+/* SHA384/512 Final padding and digest calculation  */
+
+static void sha_end2(unsigned char hval[], sha512_ctx ctx[1], const unsigned int hlen)
+{   uint_32t    i = (uint_32t)(ctx->count[0] & SHA512_MASK);
+
+    /* put bytes in the buffer in an order in which references to   */
+    /* 32-bit words will put bytes with lower addresses into the    */
+    /* top of 32 bit words on BOTH big and little endian machines   */
+    bsw_64(ctx->wbuf, (i + 7) >> 3);
+
+    /* we now need to mask valid bytes and add the padding which is */
+    /* a single 1 bit and as many zero bits as necessary. Note that */
+    /* we can always add the first padding byte here because the    */
+    /* buffer always has at least one empty slot                    */
+    ctx->wbuf[i >> 3] &= li_64(ffffffffffffff00) << 8 * (~i & 7);
+    ctx->wbuf[i >> 3] |= li_64(0000000000000080) << 8 * (~i & 7);
+
+    /* we need 17 or more empty byte positions, one for the padding */
+    /* byte (above) and sixteen for the length count.  If there is  */
+    /* not enough space pad and empty the buffer                    */
+    if(i > SHA512_BLOCK_SIZE - 17)
+    {
+        if(i < 120) ctx->wbuf[15] = 0;
+        sha512_compile(ctx);
+        i = 0;
+    }
+    else
+        i = (i >> 3) + 1;
+
+    while(i < 14)
+        ctx->wbuf[i++] = 0;
+
+    /* the following 64-bit length fields are assembled in the      */
+    /* wrong byte order on little endian machines but this is       */
+    /* corrected later since they are only ever used as 64-bit      */
+    /* word values.                                                 */
+    ctx->wbuf[14] = (ctx->count[1] << 3) | (ctx->count[0] >> 61);
+    ctx->wbuf[15] = ctx->count[0] << 3;
+    sha512_compile(ctx);
+
+    /* extract the hash value as bytes in case the hash buffer is   */
+    /* misaligned for 32-bit words                                  */
+    for(i = 0; i < hlen; ++i)
+        hval[i] = (unsigned char)(ctx->hash[i >> 3] >> (8 * (~i & 7)));
+}
+
+#endif
+
+#if defined(SHA_384)
+
+/* SHA384 initialisation data   */
+
+const uint_64t  i384[80] =
+{
+    li_64(cbbb9d5dc1059ed8), li_64(629a292a367cd507),
+    li_64(9159015a3070dd17), li_64(152fecd8f70e5939),
+    li_64(67332667ffc00b31), li_64(8eb44a8768581511),
+    li_64(db0c2e0d64f98fa7), li_64(47b5481dbefa4fa4)
+};
+
+void_ret sha384_begin(sha384_ctx ctx[1])
+{
+    ctx->count[0] = ctx->count[1] = 0;
+    memcpy(ctx->hash, i384, 8 * sizeof(uint_64t));
+}
+
+void_ret sha384_end(unsigned char hval[], sha384_ctx ctx[1])
+{
+    sha_end2(hval, ctx, SHA384_DIGEST_SIZE);
+}
+
+void_ret sha384(unsigned char hval[], const unsigned char data[], unsigned int len)
+{   sha384_ctx  cx[1];
+
+    sha384_begin(cx);
+    sha384_hash(data, len, cx);
+    sha_end2(hval, cx, SHA384_DIGEST_SIZE);
+}
+
+#endif
+
+#if defined(SHA_512)
+
+/* SHA512 initialisation data   */
+
+const uint_64t  i512[80] =
+{
+    li_64(6a09e667f3bcc908), li_64(bb67ae8584caa73b),
+    li_64(3c6ef372fe94f82b), li_64(a54ff53a5f1d36f1),
+    li_64(510e527fade682d1), li_64(9b05688c2b3e6c1f),
+    li_64(1f83d9abfb41bd6b), li_64(5be0cd19137e2179)
+};
+
+void_ret sha512_begin(sha512_ctx ctx[1])
+{
+    ctx->count[0] = ctx->count[1] = 0;
+    memcpy(ctx->hash, i512, 8 * sizeof(uint_64t));
+}
+
+void_ret sha512_end(unsigned char hval[], sha512_ctx ctx[1])
+{
+    sha_end2(hval, ctx, SHA512_DIGEST_SIZE);
+}
+
+void_ret sha512(unsigned char hval[], const unsigned char data[], unsigned int len)
+{   sha512_ctx  cx[1];
+
+    sha512_begin(cx);
+    sha512_hash(data, len, cx);
+    sha_end2(hval, cx, SHA512_DIGEST_SIZE);
+}
+
+#endif
+
+#if defined(SHA_2)
+
+#define CTX_224(x)  ((x)->uu->ctx256)
+#define CTX_256(x)  ((x)->uu->ctx256)
+#define CTX_384(x)  ((x)->uu->ctx512)
+#define CTX_512(x)  ((x)->uu->ctx512)
+
+/* SHA2 initialisation */
+
+int_ret sha2_begin(unsigned int len, sha2_ctx ctx[1])
+{
+    switch(len)
+    {
+#if defined(SHA_224)
+        case 224:
+        case  28:   CTX_256(ctx)->count[0] = CTX_256(ctx)->count[1] = 0;
+                    memcpy(CTX_256(ctx)->hash, i224, 32);
+                    ctx->sha2_len = 28; return EXIT_SUCCESS;
+#endif
+#if defined(SHA_256)
+        case 256:
+        case  32:   CTX_256(ctx)->count[0] = CTX_256(ctx)->count[1] = 0;
+                    memcpy(CTX_256(ctx)->hash, i256, 32);
+                    ctx->sha2_len = 32; return EXIT_SUCCESS;
+#endif
+#if defined(SHA_384)
+        case 384:
+        case  48:   CTX_384(ctx)->count[0] = CTX_384(ctx)->count[1] = 0;
+                    memcpy(CTX_384(ctx)->hash, i384, 64);
+                    ctx->sha2_len = 48; return EXIT_SUCCESS;
+#endif
+#if defined(SHA_512)
+        case 512:
+        case  64:   CTX_512(ctx)->count[0] = CTX_512(ctx)->count[1] = 0;
+                    memcpy(CTX_512(ctx)->hash, i512, 64);
+                    ctx->sha2_len = 64; return EXIT_SUCCESS;
+#endif
+        default:    return EXIT_FAILURE;
+    }
+}
+
+void_ret sha2_hash(const unsigned char data[], unsigned int len, sha2_ctx ctx[1])
+{
+    switch(ctx->sha2_len)
+    {
+#if defined(SHA_224)
+        case 28: sha224_hash(data, len, CTX_224(ctx)); return;
+#endif
+#if defined(SHA_256)
+        case 32: sha256_hash(data, len, CTX_256(ctx)); return;
+#endif
+#if defined(SHA_384)
+        case 48: sha384_hash(data, len, CTX_384(ctx)); return;
+#endif
+#if defined(SHA_512)
+        case 64: sha512_hash(data, len, CTX_512(ctx)); return;
+#endif
+    }
+}
+
+void_ret sha2_end(unsigned char hval[], sha2_ctx ctx[1])
+{
+    switch(ctx->sha2_len)
+    {
+#if defined(SHA_224)
+        case 28: sha_end1(hval, CTX_224(ctx), SHA224_DIGEST_SIZE); return;
+#endif
+#if defined(SHA_256)
+        case 32: sha_end1(hval, CTX_256(ctx), SHA256_DIGEST_SIZE); return;
+#endif
+#if defined(SHA_384)
+        case 48: sha_end2(hval, CTX_384(ctx), SHA384_DIGEST_SIZE); return;
+#endif
+#if defined(SHA_512)
+        case 64: sha_end2(hval, CTX_512(ctx), SHA512_DIGEST_SIZE); return;
+#endif
+    }
+}
+
+int_ret sha2(unsigned char hval[], unsigned int size,
+                                const unsigned char data[], unsigned int len)
+{   sha2_ctx    cx[1];
+
+    if(sha2_begin(size, cx) == EXIT_SUCCESS)
+    {
+        sha2_hash(data, len, cx); sha2_end(hval, cx); return EXIT_SUCCESS;
+    }
+    else
+        return EXIT_FAILURE;
+}
+
+#endif
+
+#if defined(__cplusplus)
+}
+#endif
+
+
+/* End of crypt_sha2.c */
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/dfs.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/dfs.c
new file mode 100644
index 000000000..c95594b12
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/dfs.c
@@ -0,0 +1,483 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+    Module Name:
+    ap_dfs.c
+
+    Abstract:
+    Support DFS function.
+
+    Revision History:
+    Who       When            What
+    --------  ----------      ----------------------------------------------
+*/
+
+#include "rt_config.h"
+
+typedef struct _RADAR_DURATION_TABLE
+{
+	ULONG RDDurRegion;
+	ULONG RadarSignalDuration;
+	ULONG Tolerance;
+} RADAR_DURATION_TABLE, *PRADAR_DURATION_TABLE;
+
+
+
+UCHAR RdIdleTimeTable[MAX_RD_REGION][4] =
+{
+	{9, 250, 250, 250},		// CE
+#ifdef DFS_FCC_BW40_FIX
+	{1, 250, 250, 250},		// FCC
+#else
+	{4, 250, 250, 250},		// FCC
+#endif
+	{4, 250, 250, 250},		// JAP
+	{15, 250, 250, 250},	// JAP_W53
+	{4, 250, 250, 250}		// JAP_W56
+};
+
+#ifdef TONE_RADAR_DETECT_SUPPORT
+static void ToneRadarProgram(PRTMP_ADAPTER pAd);
+static void ToneRadarEnable(PRTMP_ADAPTER pAd);
+#endif // TONE_RADAR_DETECT_SUPPORT //
+
+#ifdef DFS_SUPPORT
+/*
+	========================================================================
+
+	Routine Description:
+		Bbp Radar detection routine
+
+	Arguments:
+		pAd 	Pointer to our adapter
+
+	Return Value:
+
+	========================================================================
+*/
+VOID BbpRadarDetectionStart(
+	IN PRTMP_ADAPTER pAd)
+{
+	UINT8 RadarPeriod;
+
+	RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, 114, 0x02);
+	RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, 121, 0x20);
+	RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, 122, 0x00);
+	RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, 123, 0x08/*0x80*/);
+	RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, 124, 0x28);
+	RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, 125, 0xff);
+
+#ifdef MERGE_ARCH_TEAM
+	if ((pAd->CommonCfg.RadarDetect.RDDurRegion == JAP) || (pAd->CommonCfg.RadarDetect.RDDurRegion == JAP_W53) || (pAd->CommonCfg.RadarDetect.RDDurRegion == JAP_W56))
+	{
+		pAd->CommonCfg.RadarDetect.RDDurRegion = JAP;
+		pAd->CommonCfg.RadarDetect.RDDurRegion = JapRadarType(pAd);
+		if (pAd->CommonCfg.RadarDetect.RDDurRegion == JAP_W56)
+		{
+			pAd->CommonCfg.RadarDetect.DfsSessionTime = 13;
+		}
+		else if (pAd->CommonCfg.RadarDetect.RDDurRegion == JAP_W53)
+		{
+			pAd->CommonCfg.RadarDetect.DfsSessionTime = 15;
+		}
+#ifdef CARRIER_DETECTION_SUPPORT
+		pAd->CommonCfg.CarrierDetect.Enable = 1;
+#endif // CARRIER_DETECTION_SUPPORT //
+	}
+#endif // MERGE_ARCH_TEAM //
+
+	RadarPeriod = ((UINT)RdIdleTimeTable[pAd->CommonCfg.RadarDetect.RDDurRegion][0] + (UINT)pAd->CommonCfg.RadarDetect.DfsSessionTime) < 250 ?
+			(RdIdleTimeTable[pAd->CommonCfg.RadarDetect.RDDurRegion][0] + pAd->CommonCfg.RadarDetect.DfsSessionTime) : 250;
+
+#ifdef MERGE_ARCH_TEAM
+
+
+#else // Original RT28xx source code.
+	RTMP_IO_WRITE8(pAd, 0x7020, 0x1d);
+	RTMP_IO_WRITE8(pAd, 0x7021, 0x40);
+#endif // MERGE_ARCH_TEAM //
+
+	RadarDetectionStart(pAd, 0, RadarPeriod);
+	return;
+}
+
+/*
+	========================================================================
+
+	Routine Description:
+		Bbp Radar detection routine
+
+	Arguments:
+		pAd 	Pointer to our adapter
+
+	Return Value:
+
+	========================================================================
+*/
+VOID BbpRadarDetectionStop(
+	IN PRTMP_ADAPTER pAd)
+{
+	RTMP_IO_WRITE8(pAd, 0x7020, 0x1d);
+	RTMP_IO_WRITE8(pAd, 0x7021, 0x60);
+
+	RadarDetectionStop(pAd);
+	return;
+}
+
+/*
+	========================================================================
+
+	Routine Description:
+		Radar detection routine
+
+	Arguments:
+		pAd 	Pointer to our adapter
+
+	Return Value:
+
+	========================================================================
+*/
+VOID RadarDetectionStart(
+	IN PRTMP_ADAPTER pAd,
+	IN BOOLEAN CTSProtect,
+	IN UINT8 CTSPeriod)
+{
+	UINT8 DfsActiveTime = (pAd->CommonCfg.RadarDetect.DfsSessionTime & 0x1f);
+	UINT8 CtsProtect = (CTSProtect == 1) ? 0x02 : 0x01; // CTS protect.
+
+	if (CTSProtect != 0)
+	{
+		switch(pAd->CommonCfg.RadarDetect.RDDurRegion)
+		{
+		case FCC:
+		case JAP_W56:
+			CtsProtect = 0x03;
+			break;
+
+		case JAP:
+			{
+				UCHAR RDDurRegion;
+				RDDurRegion = JapRadarType(pAd);
+				if (RDDurRegion == JAP_W56)
+					CtsProtect = 0x03;
+				else
+					CtsProtect = 0x02;
+				break;
+			}
+
+		case CE:
+		case JAP_W53:
+		default:
+			CtsProtect = 0x02;
+			break;
+		}
+	}
+	else
+		CtsProtect = 0x01;
+	
+
+	// send start-RD with CTS protection command to MCU
+	// highbyte [7]		reserve
+	// highbyte [6:5]	0x: stop Carrier/Radar detection
+	// highbyte [10]:	Start Carrier/Radar detection without CTS protection, 11: Start Carrier/Radar detection with CTS protection
+	// highbyte [4:0]	Radar/carrier detection duration. In 1ms.
+
+	// lowbyte [7:0]	Radar/carrier detection period, in 1ms.
+	AsicSendCommandToMcu(pAd, 0x60, 0xff, CTSPeriod, DfsActiveTime | (CtsProtect << 5));
+	//AsicSendCommandToMcu(pAd, 0x63, 0xff, 10, 0);
+
+	return;
+}
+
+/*
+	========================================================================
+
+	Routine Description:
+		Radar detection routine
+
+	Arguments:
+		pAd 	Pointer to our adapter
+
+	Return Value:
+		TRUE	Found radar signal
+		FALSE	Not found radar signal
+
+	========================================================================
+*/
+VOID RadarDetectionStop(
+	IN PRTMP_ADAPTER	pAd)
+{
+	DBGPRINT(RT_DEBUG_TRACE,("RadarDetectionStop.\n"));
+	AsicSendCommandToMcu(pAd, 0x60, 0xff, 0x00, 0x00);	// send start-RD with CTS protection command to MCU
+
+	return;
+}
+#endif // DFS_SUPPORT //
+
+
+/*
+	========================================================================
+
+	Routine Description:
+		Radar channel check routine
+
+	Arguments:
+		pAd 	Pointer to our adapter
+
+	Return Value:
+		TRUE	need to do radar detect
+		FALSE	need not to do radar detect
+
+	========================================================================
+*/
+BOOLEAN RadarChannelCheck(
+	IN PRTMP_ADAPTER	pAd,
+	IN UCHAR			Ch)
+{
+	INT		i;
+	BOOLEAN result = FALSE;
+
+	for (i=0; i<pAd->ChannelListNum; i++)
+	{
+		if (Ch == pAd->ChannelList[i].Channel)
+		{
+			result = pAd->ChannelList[i].DfsReq;
+			break;
+		}
+	}
+
+	return result;
+}
+
+#ifdef DFS_SUPPORT
+
+ULONG JapRadarType(
+	IN PRTMP_ADAPTER pAd)
+{
+	ULONG		i;
+	const UCHAR	Channel[15]={52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140};
+
+	if (pAd->CommonCfg.RadarDetect.RDDurRegion != JAP)
+	{
+		return pAd->CommonCfg.RadarDetect.RDDurRegion;
+	}
+
+	for (i=0; i<15; i++)
+	{
+		if (pAd->CommonCfg.Channel == Channel[i])
+		{
+			break;
+		}
+	}
+
+	if (i < 4)
+		return JAP_W53;
+	else if (i < 15)
+		return JAP_W56;
+	else
+		return JAP; // W52
+
+}
+
+ULONG RTMPBbpReadRadarDuration(
+	IN PRTMP_ADAPTER	pAd)
+{
+	UINT8 byteValue = 0;
+	ULONG result;
+
+	BBP_IO_READ8_BY_REG_ID(pAd, BBP_R115, &byteValue);
+
+	result = 0;
+	switch (byteValue)
+	{
+	case 1: // radar signal detected by pulse mode.
+	case 2: // radar signal detected by width mode.
+		result = RTMPReadRadarDuration(pAd);
+		break;
+
+	case 0: // No radar signal.
+	default:
+
+		result = 0;
+		break;
+	}
+
+	return result;
+}
+
+ULONG RTMPReadRadarDuration(
+	IN PRTMP_ADAPTER	pAd)
+{
+	ULONG result = 0;
+
+#ifdef DFS_SUPPORT
+	UINT8 duration1 = 0, duration2 = 0, duration3 = 0;
+
+
+	BBP_IO_READ8_BY_REG_ID(pAd, BBP_R116, &duration1);
+	BBP_IO_READ8_BY_REG_ID(pAd, BBP_R117, &duration2);
+	BBP_IO_READ8_BY_REG_ID(pAd, BBP_R118, &duration3);
+	result = (duration1 << 16) + (duration2 << 8) + duration3;
+#endif // DFS_SUPPORT //
+
+	return result;
+
+}
+
+VOID RTMPCleanRadarDuration(
+	IN PRTMP_ADAPTER	pAd)
+{
+	return;
+}
+
+/*
+    ========================================================================
+    Routine Description:
+        Radar wave detection. The API should be invoke each second.
+        
+    Arguments:
+        pAd         - Adapter pointer
+        
+    Return Value:
+        None
+        
+    ========================================================================
+*/
+VOID ApRadarDetectPeriodic(
+	IN PRTMP_ADAPTER pAd)
+{
+	INT	i;
+
+	pAd->CommonCfg.RadarDetect.InServiceMonitorCount++;
+
+	for (i=0; i<pAd->ChannelListNum; i++)
+	{
+
+		if (pAd->ChannelList[i].RemainingTimeForUse > 0)
+		{
+			pAd->ChannelList[i].RemainingTimeForUse --;
+			if ((pAd->Mlme.PeriodicRound%5) == 0)
+			{
+				DBGPRINT(RT_DEBUG_TRACE, ("RadarDetectPeriodic - ch=%d, RemainingTimeForUse=%d\n", pAd->ChannelList[i].Channel, pAd->ChannelList[i].RemainingTimeForUse));
+			}
+		}
+	}
+
+	//radar detect
+	if ((pAd->CommonCfg.Channel > 14)
+		&& (pAd->CommonCfg.bIEEE80211H == 1)
+		&& RadarChannelCheck(pAd, pAd->CommonCfg.Channel))
+	{
+		RadarDetectPeriodic(pAd);
+	}
+
+	return;
+}
+
+// Periodic Radar detection, switch channel will occur in RTMPHandleTBTTInterrupt()
+// Before switch channel, driver needs doing channel switch announcement.
+VOID RadarDetectPeriodic(
+	IN PRTMP_ADAPTER	pAd)
+{
+
+	// need to check channel availability, after switch channel
+	if (pAd->CommonCfg.RadarDetect.RDMode != RD_SILENCE_MODE)
+			return;
+
+
+
+	// channel availability check time is 60sec, use 65 for assurance
+	if (pAd->CommonCfg.RadarDetect.RDCount++ > pAd->CommonCfg.RadarDetect.ChMovingTime)
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("Not found radar signal, start send beacon and radar detection in service monitor\n\n"));
+		BbpRadarDetectionStop(pAd);
+
+
+		AsicEnableBssSync(pAd);
+		pAd->CommonCfg.RadarDetect.RDMode = RD_NORMAL_MODE;
+
+
+
+		return;
+	}
+
+	return;
+}
+#endif // DFS_SUPPORT //
+
+#ifdef DFS_SUPPORT
+/* 
+    ==========================================================================
+    Description:
+		change channel moving time for DFS testing.
+
+	Arguments:
+	    pAdapter                    Pointer to our adapter
+	    wrq                         Pointer to the ioctl argument
+
+    Return Value:
+        None
+
+    Note:
+        Usage: 
+               1.) iwpriv ra0 set ChMovTime=[value]
+    ==========================================================================
+*/
+INT Set_ChMovingTime_Proc(
+	IN PRTMP_ADAPTER pAd, 
+	IN PSTRING arg)
+{
+	UINT8 Value;
+
+	Value = (UINT8) simple_strtol(arg, 0, 10);
+
+	pAd->CommonCfg.RadarDetect.ChMovingTime = Value;
+
+	DBGPRINT(RT_DEBUG_TRACE, ("%s:: %d\n", __FUNCTION__,
+		pAd->CommonCfg.RadarDetect.ChMovingTime));
+
+	return TRUE;
+}
+
+INT Set_LongPulseRadarTh_Proc(
+	IN PRTMP_ADAPTER pAd, 
+	IN PSTRING arg)
+{
+	UINT8 Value;
+
+	Value = (UINT8) simple_strtol(arg, 0, 10) > 10 ? 10 : simple_strtol(arg, 0, 10);
+	
+	pAd->CommonCfg.RadarDetect.LongPulseRadarTh = Value;
+
+	DBGPRINT(RT_DEBUG_TRACE, ("%s:: %d\n", __FUNCTION__,
+		pAd->CommonCfg.RadarDetect.LongPulseRadarTh));
+
+	return TRUE;
+}
+#endif // DFS_SUPPORT //
+
+
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/ee_efuse.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/ee_efuse.c
new file mode 100644
index 000000000..f67694d4c
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/ee_efuse.c
@@ -0,0 +1,1590 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+	Module Name:
+	ee_efuse.c
+
+	Abstract:
+	Miniport generic portion header file
+
+	Revision History:
+	Who         When          What
+	--------    ----------    ----------------------------------------------
+*/
+
+#ifdef RTMP_EFUSE_SUPPORT
+
+#include	"rt_config.h"
+
+#ifndef RT35xx
+#define EFUSE_USAGE_MAP_START	0x2d0
+#define EFUSE_USAGE_MAP_END		0x2fc      
+#define EFUSE_USAGE_MAP_SIZE	45
+#endif // !RT35xx //
+
+#ifdef RT35xx
+#define EFUSE_USAGE_MAP_START	0x3c0
+#define EFUSE_USAGE_MAP_END		0x3fb      
+#define EFUSE_USAGE_MAP_SIZE	60
+#endif // RT35xx //
+
+
+#define EFUSE_EEPROM_DEFULT_FILE	"RT30xxEEPROM.bin"
+#define MAX_EEPROM_BIN_FILE_SIZE	1024
+
+
+
+#define EFUSE_TAG				0x2fe
+
+
+#ifdef RT_BIG_ENDIAN
+typedef	union	_EFUSE_CTRL_STRUC {
+	struct	{
+		UINT32            SEL_EFUSE:1;
+		UINT32            EFSROM_KICK:1;
+		UINT32            RESERVED:4;
+		UINT32            EFSROM_AIN:10;
+		UINT32            EFSROM_LDO_ON_TIME:2;
+		UINT32            EFSROM_LDO_OFF_TIME:6;
+		UINT32            EFSROM_MODE:2;
+		UINT32            EFSROM_AOUT:6;   
+	}	field;
+	UINT32			word;
+}	EFUSE_CTRL_STRUC, *PEFUSE_CTRL_STRUC;
+#else
+typedef	union	_EFUSE_CTRL_STRUC {
+	struct	{
+		UINT32            EFSROM_AOUT:6;
+		UINT32            EFSROM_MODE:2;
+		UINT32            EFSROM_LDO_OFF_TIME:6;
+		UINT32            EFSROM_LDO_ON_TIME:2;
+		UINT32            EFSROM_AIN:10;
+		UINT32            RESERVED:4;
+		UINT32            EFSROM_KICK:1;
+		UINT32            SEL_EFUSE:1;
+	}	field;
+	UINT32			word;
+}	EFUSE_CTRL_STRUC, *PEFUSE_CTRL_STRUC;
+#endif // RT_BIG_ENDIAN //
+
+static UCHAR eFuseReadRegisters(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	USHORT Offset, 
+	IN	USHORT Length, 
+	OUT	USHORT* pData);
+
+static VOID eFuseReadPhysical( 
+	IN	PRTMP_ADAPTER	pAd, 
+  	IN	PUSHORT lpInBuffer,
+  	IN	ULONG nInBufferSize,
+  	OUT	PUSHORT lpOutBuffer,
+  	IN	ULONG nOutBufferSize);
+
+static VOID eFusePhysicalWriteRegisters(
+	IN	PRTMP_ADAPTER	pAd,	
+	IN	USHORT Offset, 
+	IN	USHORT Length, 
+	OUT	USHORT* pData);
+
+static NTSTATUS eFuseWriteRegisters(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	USHORT Offset, 
+	IN	USHORT Length, 
+	IN	USHORT* pData);
+
+static VOID eFuseWritePhysical( 
+	IN	PRTMP_ADAPTER	pAd,	
+  	PUSHORT lpInBuffer,
+	ULONG nInBufferSize,
+  	PUCHAR lpOutBuffer,
+  	ULONG nOutBufferSize);
+
+
+static NTSTATUS eFuseWriteRegistersFromBin(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	USHORT Offset, 
+	IN	USHORT Length, 
+	IN	USHORT* pData);
+
+
+/*
+========================================================================
+	
+	Routine Description:
+
+	Arguments:
+
+	Return Value:
+
+	Note:
+	
+========================================================================
+*/
+UCHAR eFuseReadRegisters(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	USHORT Offset, 
+	IN	USHORT Length, 
+	OUT	USHORT* pData)
+{
+	EFUSE_CTRL_STRUC		eFuseCtrlStruc;
+	int	i;
+	USHORT	efuseDataOffset;
+	UINT32	data;
+	
+	RTMP_IO_READ32(pAd, EFUSE_CTRL, &eFuseCtrlStruc.word);
+
+	//Step0. Write 10-bit of address to EFSROM_AIN (0x580, bit25:bit16). The address must be 16-byte alignment.
+	//Use the eeprom logical address and covert to address to block number
+	eFuseCtrlStruc.field.EFSROM_AIN = Offset & 0xfff0;
+
+	//Step1. Write EFSROM_MODE (0x580, bit7:bit6) to 0.
+	eFuseCtrlStruc.field.EFSROM_MODE = 0;
+
+	//Step2. Write EFSROM_KICK (0x580, bit30) to 1 to kick-off physical read procedure.
+	eFuseCtrlStruc.field.EFSROM_KICK = 1;
+	
+	NdisMoveMemory(&data, &eFuseCtrlStruc, 4);
+	RTMP_IO_WRITE32(pAd, EFUSE_CTRL, data);
+
+	//Step3. Polling EFSROM_KICK(0x580, bit30) until it become 0 again.
+	i = 0;
+	while(i < 500)
+	{
+		if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_NIC_NOT_EXIST))			
+			return 0;
+		
+		//rtmp.HwMemoryReadDword(EFUSE_CTRL, (DWORD *) &eFuseCtrlStruc, 4);
+		RTMP_IO_READ32(pAd, EFUSE_CTRL, &eFuseCtrlStruc.word);
+		if(eFuseCtrlStruc.field.EFSROM_KICK == 0)
+		{
+			break;
+		}	
+		RTMPusecDelay(2);
+		i++;	
+	}
+
+	//if EFSROM_AOUT is not found in physical address, write 0xffff
+	if (eFuseCtrlStruc.field.EFSROM_AOUT == 0x3f)
+	{
+		for(i=0; i<Length/2; i++)
+			*(pData+2*i) = 0xffff;
+	}
+	else
+	{
+		//Step4. Read 16-byte of data from EFUSE_DATA0-3 (0x590-0x59C)
+		efuseDataOffset =  EFUSE_DATA3 - (Offset & 0xC);	
+		//data hold 4 bytes data.
+		//In RTMP_IO_READ32 will automatically execute 32-bytes swapping
+		RTMP_IO_READ32(pAd, efuseDataOffset, &data);
+		//Decide the upper 2 bytes or the bottom 2 bytes.
+		// Little-endian		S	|	S	Big-endian
+		// addr	3	2	1	0	|	0	1	2	3
+		// Ori-V	D	C	B	A	|	A	B	C	D
+		//After swapping
+		//		D	C	B	A	|	D	C	B	A
+		//Return 2-bytes
+		//The return byte statrs from S. Therefore, the little-endian will return BA, the Big-endian will return DC.
+		//For returning the bottom 2 bytes, the Big-endian should shift right 2-bytes.
+#ifdef RT_BIG_ENDIAN
+		data = data << (8*((Offset & 0x3)^0x2));		  
+#else
+		data = data >> (8*(Offset & 0x3));		
+#endif // RT_BIG_ENDIAN //
+		
+		NdisMoveMemory(pData, &data, Length);
+	}
+
+	return (UCHAR) eFuseCtrlStruc.field.EFSROM_AOUT;
+	
+}
+
+/*
+========================================================================
+	
+	Routine Description:
+
+	Arguments:
+
+	Return Value:
+
+	Note:
+	
+========================================================================
+*/
+VOID eFusePhysicalReadRegisters( 
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	USHORT Offset, 
+	IN	USHORT Length, 
+	OUT	USHORT* pData)
+{
+	EFUSE_CTRL_STRUC		eFuseCtrlStruc;
+	int	i;
+	USHORT	efuseDataOffset;
+	UINT32	data;
+
+	RTMP_IO_READ32(pAd, EFUSE_CTRL, &eFuseCtrlStruc.word);
+
+	//Step0. Write 10-bit of address to EFSROM_AIN (0x580, bit25:bit16). The address must be 16-byte alignment.
+	eFuseCtrlStruc.field.EFSROM_AIN = Offset & 0xfff0;
+
+	//Step1. Write EFSROM_MODE (0x580, bit7:bit6) to 1.
+	//Read in physical view
+	eFuseCtrlStruc.field.EFSROM_MODE = 1;
+
+	//Step2. Write EFSROM_KICK (0x580, bit30) to 1 to kick-off physical read procedure.
+	eFuseCtrlStruc.field.EFSROM_KICK = 1;
+
+	NdisMoveMemory(&data, &eFuseCtrlStruc, 4);	
+	RTMP_IO_WRITE32(pAd, EFUSE_CTRL, data);	
+
+	//Step3. Polling EFSROM_KICK(0x580, bit30) until it become 0 again.
+	i = 0;
+	while(i < 500)
+	{	
+		if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_NIC_NOT_EXIST))			
+			return;
+		
+		RTMP_IO_READ32(pAd, EFUSE_CTRL, &eFuseCtrlStruc.word);	
+		if(eFuseCtrlStruc.field.EFSROM_KICK == 0)
+			break;
+		RTMPusecDelay(2);
+		i++;	
+	}
+
+	//Step4. Read 16-byte of data from EFUSE_DATA0-3 (0x59C-0x590)
+	//Because the size of each EFUSE_DATA is 4 Bytes, the size of address of each is 2 bits.
+	//The previous 2 bits is the EFUSE_DATA number, the last 2 bits is used to decide which bytes
+	//Decide which EFUSE_DATA to read
+	//590:F E D C 
+	//594:B A 9 8 
+	//598:7 6 5 4
+	//59C:3 2 1 0
+	efuseDataOffset =  EFUSE_DATA3 - (Offset & 0xC)  ;	
+
+	RTMP_IO_READ32(pAd, efuseDataOffset, &data);
+
+#ifdef RT_BIG_ENDIAN
+		data = data << (8*((Offset & 0x3)^0x2));	
+#else
+	data = data >> (8*(Offset & 0x3));
+#endif // RT_BIG_ENDIAN //
+
+	NdisMoveMemory(pData, &data, Length);	
+	
+}
+
+/*
+========================================================================
+	
+	Routine Description:
+
+	Arguments:
+
+	Return Value:
+	
+	Note:
+	
+========================================================================
+*/
+static VOID eFuseReadPhysical( 
+	IN	PRTMP_ADAPTER	pAd, 
+  	IN	PUSHORT lpInBuffer,
+  	IN	ULONG nInBufferSize,
+  	OUT	PUSHORT lpOutBuffer,
+  	IN	ULONG nOutBufferSize  
+)
+{
+	USHORT* pInBuf = (USHORT*)lpInBuffer;
+	USHORT* pOutBuf = (USHORT*)lpOutBuffer;
+
+	USHORT Offset = pInBuf[0];					//addr
+	USHORT Length = pInBuf[1];					//length
+	int 		i;
+	
+	for(i=0; i<Length; i+=2)
+	{
+		eFusePhysicalReadRegisters(pAd,Offset+i, 2, &pOutBuf[i/2]);	
+	} 	
+}
+
+/*
+========================================================================
+	
+	Routine Description:
+
+	Arguments:
+
+	Return Value:
+	
+	Note:
+	
+========================================================================
+*/
+NTSTATUS eFuseRead(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	USHORT			Offset,
+	OUT	PUSHORT			pData,
+	IN	USHORT			Length)
+{
+	NTSTATUS Status = STATUS_SUCCESS;
+	UCHAR	EFSROM_AOUT;
+	int	i;
+	
+	for(i=0; i<Length; i+=2)
+	{
+		EFSROM_AOUT = eFuseReadRegisters(pAd, Offset+i, 2, &pData[i/2]);
+	} 
+	return Status;
+}
+
+/*
+========================================================================
+	
+	Routine Description:
+
+	Arguments:
+
+	Return Value:
+	
+	Note:
+	
+========================================================================
+*/
+static VOID eFusePhysicalWriteRegisters(
+	IN	PRTMP_ADAPTER	pAd,	
+	IN	USHORT Offset, 
+	IN	USHORT Length, 
+	OUT	USHORT* pData)
+{
+	EFUSE_CTRL_STRUC		eFuseCtrlStruc;
+	int	i;
+	USHORT	efuseDataOffset;
+	UINT32	data, eFuseDataBuffer[4];
+
+	//Step0. Write 16-byte of data to EFUSE_DATA0-3 (0x590-0x59C), where EFUSE_DATA0 is the LSB DW, EFUSE_DATA3 is the MSB DW.
+
+	/////////////////////////////////////////////////////////////////
+	//read current values of 16-byte block	
+	RTMP_IO_READ32(pAd, EFUSE_CTRL,  &eFuseCtrlStruc.word);
+
+	//Step0. Write 10-bit of address to EFSROM_AIN (0x580, bit25:bit16). The address must be 16-byte alignment.
+	eFuseCtrlStruc.field.EFSROM_AIN = Offset & 0xfff0;
+
+	//Step1. Write EFSROM_MODE (0x580, bit7:bit6) to 1.
+	eFuseCtrlStruc.field.EFSROM_MODE = 1;
+
+	//Step2. Write EFSROM_KICK (0x580, bit30) to 1 to kick-off physical read procedure.
+	eFuseCtrlStruc.field.EFSROM_KICK = 1;
+
+	NdisMoveMemory(&data, &eFuseCtrlStruc, 4);
+	RTMP_IO_WRITE32(pAd, EFUSE_CTRL, data);	
+
+	//Step3. Polling EFSROM_KICK(0x580, bit30) until it become 0 again.
+	i = 0;
+	while(i < 500)
+	{	
+		RTMP_IO_READ32(pAd, EFUSE_CTRL, &eFuseCtrlStruc.word);
+
+		if(eFuseCtrlStruc.field.EFSROM_KICK == 0)
+			break;
+		RTMPusecDelay(2);
+		i++;	
+	}
+
+	//Step4. Read 16-byte of data from EFUSE_DATA0-3 (0x59C-0x590)
+	efuseDataOffset =  EFUSE_DATA3;		
+	for(i=0; i< 4; i++)
+	{
+		RTMP_IO_READ32(pAd, efuseDataOffset, (PUINT32) &eFuseDataBuffer[i]);
+		efuseDataOffset -=  4;		
+	}
+
+	//Update the value, the offset is multiple of 2, length is 2
+	efuseDataOffset = (Offset & 0xc) >> 2;
+	data = pData[0] & 0xffff;
+	//The offset should be 0x***10 or 0x***00
+	if((Offset % 4) != 0)
+	{
+		eFuseDataBuffer[efuseDataOffset] = (eFuseDataBuffer[efuseDataOffset] & 0xffff) | (data << 16);
+	}
+	else
+	{
+		eFuseDataBuffer[efuseDataOffset] = (eFuseDataBuffer[efuseDataOffset] & 0xffff0000) | data;
+	}
+
+	efuseDataOffset =  EFUSE_DATA3;
+	for(i=0; i< 4; i++)
+	{
+		RTMP_IO_WRITE32(pAd, efuseDataOffset, eFuseDataBuffer[i]);			
+		efuseDataOffset -= 4;		
+	}
+	/////////////////////////////////////////////////////////////////
+
+	//Step1. Write 10-bit of address to EFSROM_AIN (0x580, bit25:bit16). The address must be 16-byte alignment.
+
+	RTMP_IO_READ32(pAd, EFUSE_CTRL, &eFuseCtrlStruc.word);
+
+	eFuseCtrlStruc.field.EFSROM_AIN = Offset & 0xfff0;
+
+	//Step2. Write EFSROM_MODE (0x580, bit7:bit6) to 3.
+	eFuseCtrlStruc.field.EFSROM_MODE = 3;
+	
+	//Step3. Write EFSROM_KICK (0x580, bit30) to 1 to kick-off physical write procedure.
+	eFuseCtrlStruc.field.EFSROM_KICK = 1;
+
+	NdisMoveMemory(&data, &eFuseCtrlStruc, 4);	
+	RTMP_IO_WRITE32(pAd, EFUSE_CTRL, data);	
+
+	//Step4. Polling EFSROM_KICK(0x580, bit30) until it become 0 again. It��s done.
+	i = 0;
+
+	while(i < 500)
+	{	
+		RTMP_IO_READ32(pAd, EFUSE_CTRL, &eFuseCtrlStruc.word);
+
+		if(eFuseCtrlStruc.field.EFSROM_KICK == 0)
+			break;
+		
+		RTMPusecDelay(2);	
+		i++;	
+	}
+}
+
+/*
+========================================================================
+	
+	Routine Description:
+
+	Arguments:
+
+	Return Value:
+
+	Note:
+	
+========================================================================
+*/
+static NTSTATUS eFuseWriteRegisters(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	USHORT Offset, 
+	IN	USHORT Length, 
+	IN	USHORT* pData)
+{
+	USHORT	i,Loop=0;
+	USHORT	eFuseData;
+	USHORT	LogicalAddress, BlkNum = 0xffff;
+	UCHAR	EFSROM_AOUT;
+
+	USHORT addr,tmpaddr, InBuf[3], tmpOffset;
+	USHORT buffer[8];
+	BOOLEAN		bWriteSuccess = TRUE;
+
+	DBGPRINT(RT_DEBUG_TRACE, ("eFuseWriteRegisters Offset=%x, pData=%x\n", Offset, *pData));
+
+	//Step 0. find the entry in the mapping table
+	//The address of EEPROM is 2-bytes alignment.
+	//The last bit is used for alignment, so it must be 0.
+	tmpOffset = Offset & 0xfffe;
+	EFSROM_AOUT = eFuseReadRegisters(pAd, tmpOffset, 2, &eFuseData);
+	
+	if( EFSROM_AOUT == 0x3f)
+	{	//find available logical address pointer	
+		//the logical address does not exist, find an empty one
+		//from the first address of block 45=16*45=0x2d0 to the last address of block 47
+		//==>48*16-3(reserved)=2FC
+		for (i=EFUSE_USAGE_MAP_START; i<=EFUSE_USAGE_MAP_END; i+=2)
+		{
+			//Retrive the logical block nubmer form each logical address pointer
+			//It will access two logical address pointer each time.
+			eFusePhysicalReadRegisters(pAd, i, 2, &LogicalAddress);
+			if( (LogicalAddress & 0xff) == 0)
+			{//Not used logical address pointer
+				BlkNum = i-EFUSE_USAGE_MAP_START;
+				break;
+			}
+			else if(( (LogicalAddress >> 8) & 0xff) == 0)
+			{//Not used logical address pointer
+				if (i != EFUSE_USAGE_MAP_END)
+				{		
+					BlkNum = i-EFUSE_USAGE_MAP_START+1;	
+				}				
+				break;
+			}
+		}
+	}
+	else
+	{
+		BlkNum = EFSROM_AOUT;
+	}	
+
+	DBGPRINT(RT_DEBUG_TRACE, ("eFuseWriteRegisters BlkNum = %d \n", BlkNum));
+
+	if(BlkNum == 0xffff)
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("eFuseWriteRegisters: out of free E-fuse space!!!\n"));
+		return FALSE;
+	}	
+
+	//Step 1. Save data of this block	which is pointed by the avaible logical address pointer
+	// read and save the original block data
+	for(i =0; i<8; i++)
+	{
+		addr = BlkNum * 0x10 ;
+		
+		InBuf[0] = addr+2*i;
+		InBuf[1] = 2;
+		InBuf[2] = 0x0;	
+		
+		eFuseReadPhysical(pAd, &InBuf[0], 4, &InBuf[2], 2);
+
+		buffer[i] = InBuf[2];
+	}
+
+	//Step 2. Update the data in buffer, and write the data to Efuse
+	buffer[ (Offset >> 1) % 8] = pData[0];
+
+	do
+	{	Loop++;
+		//Step 3. Write the data to Efuse
+		if(!bWriteSuccess)
+		{
+			for(i =0; i<8; i++)
+			{
+				addr = BlkNum * 0x10 ;
+				
+				InBuf[0] = addr+2*i;
+				InBuf[1] = 2;
+				InBuf[2] = buffer[i];	
+				
+				eFuseWritePhysical(pAd, &InBuf[0], 6, NULL, 2);		
+			}
+		}
+		else
+		{
+				addr = BlkNum * 0x10 ;
+				
+				InBuf[0] = addr+(Offset % 16);
+				InBuf[1] = 2;
+				InBuf[2] = pData[0];	
+				
+				eFuseWritePhysical(pAd, &InBuf[0], 6, NULL, 2);	
+		}
+	
+		//Step 4. Write mapping table
+		addr = EFUSE_USAGE_MAP_START+BlkNum;
+
+		tmpaddr = addr;
+
+		if(addr % 2 != 0)
+			addr = addr -1; 
+		InBuf[0] = addr;
+		InBuf[1] = 2;
+
+		//convert the address from 10 to 8 bit ( bit7, 6 = parity and bit5 ~ 0 = bit9~4), and write to logical map entry
+		tmpOffset = Offset;
+		tmpOffset >>= 4;
+		tmpOffset |= ((~((tmpOffset & 0x01) ^ ( tmpOffset >> 1 & 0x01) ^  (tmpOffset >> 2 & 0x01) ^  (tmpOffset >> 3 & 0x01))) << 6) & 0x40;
+		tmpOffset |= ((~( (tmpOffset >> 2 & 0x01) ^ (tmpOffset >> 3 & 0x01) ^ (tmpOffset >> 4 & 0x01) ^ ( tmpOffset >> 5 & 0x01))) << 7) & 0x80;
+
+		// write the logical address
+		if(tmpaddr%2 != 0) 	
+			InBuf[2] = tmpOffset<<8;	
+		else          
+			InBuf[2] = tmpOffset;
+
+		eFuseWritePhysical(pAd,&InBuf[0], 6, NULL, 0);
+
+		//Step 5. Compare data if not the same, invalidate the mapping entry, then re-write the data until E-fuse is exhausted
+		bWriteSuccess = TRUE;
+		for(i =0; i<8; i++)
+		{
+			addr = BlkNum * 0x10 ;
+			
+			InBuf[0] = addr+2*i;
+			InBuf[1] = 2;
+			InBuf[2] = 0x0;	
+			
+			eFuseReadPhysical(pAd, &InBuf[0], 4, &InBuf[2], 2);
+
+			if(buffer[i] != InBuf[2])
+			{
+				bWriteSuccess = FALSE;
+				break;
+			}	
+		}
+
+		//Step 6. invlidate mapping entry and find a free mapping entry if not succeed
+		if (!bWriteSuccess)
+		{
+			DBGPRINT(RT_DEBUG_TRACE, ("Not bWriteSuccess BlkNum = %d\n", BlkNum));
+
+			// the offset of current mapping entry
+			addr = EFUSE_USAGE_MAP_START+BlkNum;			
+
+			//find a new mapping entry
+			BlkNum = 0xffff;
+			for (i=EFUSE_USAGE_MAP_START; i<=EFUSE_USAGE_MAP_END; i+=2)
+			{
+				eFusePhysicalReadRegisters(pAd, i, 2, &LogicalAddress);
+				if( (LogicalAddress & 0xff) == 0)
+				{
+					BlkNum = i-EFUSE_USAGE_MAP_START;
+					break;
+				}
+				else if(( (LogicalAddress >> 8) & 0xff) == 0)
+				{
+					if (i != EFUSE_USAGE_MAP_END)
+					{		
+						BlkNum = i+1-EFUSE_USAGE_MAP_START;	
+					}				
+					break;
+				}
+			}
+			DBGPRINT(RT_DEBUG_TRACE, ("Not bWriteSuccess new BlkNum = %d\n", BlkNum));	
+			if(BlkNum == 0xffff)
+			{
+				DBGPRINT(RT_DEBUG_TRACE, ("eFuseWriteRegisters: out of free E-fuse space!!!\n"));
+				return FALSE;
+			}
+
+			//invalidate the original mapping entry if new entry is not found
+			tmpaddr = addr;
+
+			if(addr % 2 != 0)
+				addr = addr -1; 
+			InBuf[0] = addr;
+			InBuf[1] = 2;		
+			
+			eFuseReadPhysical(pAd, &InBuf[0], 4, &InBuf[2], 2);				
+
+			// write the logical address
+			if(tmpaddr%2 != 0) 
+			{
+				// Invalidate the high byte
+				for (i=8; i<15; i++)
+				{
+					if( ( (InBuf[2] >> i) & 0x01) == 0)
+					{
+						InBuf[2] |= (0x1 <<i);
+						break;
+					}	
+				}		
+			}	
+			else
+			{
+				// invalidate the low byte
+				for (i=0; i<8; i++)
+				{
+					if( ( (InBuf[2] >> i) & 0x01) == 0)
+					{
+						InBuf[2] |= (0x1 <<i);
+						break;
+					}	
+				}					
+			}
+			eFuseWritePhysical(pAd, &InBuf[0], 6, NULL, 0);	
+		}	
+	}	
+	while (!bWriteSuccess&&Loop<2);	
+	if(!bWriteSuccess)
+		DBGPRINT(RT_DEBUG_ERROR,("Efsue Write Failed!!\n"));
+	return TRUE;
+}
+
+
+/*
+========================================================================
+	
+	Routine Description:
+
+	Arguments:
+
+	Return Value:
+	
+	Note:
+	
+========================================================================
+*/
+static VOID eFuseWritePhysical( 
+	IN	PRTMP_ADAPTER	pAd,	
+  	PUSHORT lpInBuffer,
+	ULONG nInBufferSize,
+  	PUCHAR lpOutBuffer,
+  	ULONG nOutBufferSize  
+)
+{
+	USHORT* pInBuf = (USHORT*)lpInBuffer;
+	int 		i;
+	//USHORT* pOutBuf = (USHORT*)ioBuffer;
+	USHORT Offset = pInBuf[0];					// addr
+	USHORT Length = pInBuf[1];					// length
+	USHORT* pValueX = &pInBuf[2];				// value ...		
+
+	DBGPRINT(RT_DEBUG_TRACE, ("eFuseWritePhysical Offset=0x%x, length=%d\n", Offset, Length));
+
+	{
+		// Little-endian		S	|	S	Big-endian
+		// addr	3	2	1	0	|	0	1	2	3
+		// Ori-V	D	C	B	A	|	A	B	C	D
+		// After swapping
+		//		D	C	B	A	|	D	C	B	A
+		// Both the little and big-endian use the same sequence to write  data.
+		// Therefore, we only need swap data when read the data.
+		for (i=0; i<Length; i+=2)
+		{
+			eFusePhysicalWriteRegisters(pAd, Offset+i, 2, &pValueX[i/2]);	
+		}	
+	}
+}
+
+
+/*
+========================================================================
+	
+	Routine Description:
+
+	Arguments:
+
+	Return Value:
+	
+	Note:
+	
+========================================================================
+*/
+NTSTATUS eFuseWrite(  
+   	IN	PRTMP_ADAPTER	pAd,
+	IN	USHORT			Offset,
+	IN	PUSHORT			pData,
+	IN	USHORT			length)
+{
+	int i;
+	USHORT* pValueX = (PUSHORT) pData;				//value ...		
+	PUSHORT OddWriteByteBuf;
+	OddWriteByteBuf=(PUSHORT)kmalloc(sizeof(USHORT)*2, MEM_ALLOC_FLAG);
+	// The input value=3070 will be stored as following
+	// Little-endian		S	|	S	Big-endian
+	// addr			1	0	|	0	1	
+	// Ori-V			30	70	|	30	70	
+	// After swapping
+	//				30	70	|	70	30
+	// Casting
+	//				3070	|	7030 (x)
+	// The swapping should be removed for big-endian
+	if((Offset%2)!=0)
+	{
+		length+=2;
+		Offset-=1;
+		eFuseRead(pAd,Offset,OddWriteByteBuf,2);
+		eFuseRead(pAd,Offset+2,(OddWriteByteBuf+1),2);
+		*OddWriteByteBuf&=0x00ff;
+		*OddWriteByteBuf|=((*pData)&0xff)<<8;
+		*(OddWriteByteBuf+1)&=0xff00;
+		*(OddWriteByteBuf+1)|=(*pData&0xff00)>>8;
+		pValueX=OddWriteByteBuf;
+		
+	}
+	
+	for(i=0; i<length; i+=2)
+	{
+		eFuseWriteRegisters(pAd, Offset+i, 2, &pValueX[i/2]);	
+	}
+	kfree(OddWriteByteBuf);
+	return TRUE;
+}
+
+
+/*
+========================================================================
+	
+	Routine Description:
+
+	Arguments:
+
+	Return Value:
+	
+	Note:
+	
+========================================================================
+*/
+INT set_eFuseGetFreeBlockCount_Proc(  
+   	IN	PRTMP_ADAPTER	pAd,
+	IN	PSTRING			arg)
+{
+	USHORT i;
+	USHORT	LogicalAddress;
+	USHORT efusefreenum=0;
+	if (!pAd->bUseEfuse)
+		return FALSE;
+	for (i = EFUSE_USAGE_MAP_START; i <= EFUSE_USAGE_MAP_END; i+=2)
+	{
+		eFusePhysicalReadRegisters(pAd, i, 2, &LogicalAddress);
+		if( (LogicalAddress & 0xff) == 0)
+		{
+			efusefreenum= (UCHAR) (EFUSE_USAGE_MAP_END-i+1);
+			break;
+		}
+		else if(( (LogicalAddress >> 8) & 0xff) == 0)
+		{
+			efusefreenum = (UCHAR) (EFUSE_USAGE_MAP_END-i);
+			break;
+		}
+
+		if(i == EFUSE_USAGE_MAP_END)
+			efusefreenum = 0;
+	}
+	printk("efuseFreeNumber is %d\n",efusefreenum);
+	return TRUE;
+}
+
+
+INT set_eFusedump_Proc(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PSTRING			arg)
+{
+	USHORT InBuf[3];
+	INT i=0;
+	if (!pAd->bUseEfuse)
+		return FALSE;
+	for(i =0; i<EFUSE_USAGE_MAP_END/2; i++)
+	{
+		InBuf[0] = 2*i;
+		InBuf[1] = 2;
+		InBuf[2] = 0x0;	
+		
+		eFuseReadPhysical(pAd, &InBuf[0], 4, &InBuf[2], 2);
+		if(i%4==0)
+		printk("\nBlock %x:",i/8);
+		printk("%04x ",InBuf[2]);
+	}
+	return TRUE;
+}
+
+
+INT	set_eFuseLoadFromBin_Proc(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PSTRING			arg)
+{
+	PSTRING					src;
+	RTMP_OS_FD				srcf;
+	RTMP_OS_FS_INFO			osfsInfo;
+	INT 						retval, memSize;
+	PSTRING					buffer, memPtr;
+	INT						TotalByte= 0,ReadedByte=0,CompareBuf=1;
+	USHORT					*PDATA;
+	USHORT					DATA;
+	
+	memSize = 128 + MAX_EEPROM_BIN_FILE_SIZE + sizeof(USHORT) * 8;
+	memPtr = kmalloc(memSize, MEM_ALLOC_FLAG);
+	if (memPtr == NULL)
+		return FALSE;
+
+	NdisZeroMemory(memPtr, memSize);
+	src = memPtr; // kmalloc(128, MEM_ALLOC_FLAG);
+	buffer = src + 128;		// kmalloc(MAX_EEPROM_BIN_FILE_SIZE, MEM_ALLOC_FLAG);
+	PDATA = (USHORT*)(buffer + MAX_EEPROM_BIN_FILE_SIZE);	// kmalloc(sizeof(USHORT)*8,MEM_ALLOC_FLAG);
+	
+ 	if(strlen(arg)>0)
+		NdisMoveMemory(src, arg, strlen(arg));
+	else
+		NdisMoveMemory(src, EFUSE_EEPROM_DEFULT_FILE, strlen(EFUSE_EEPROM_DEFULT_FILE));
+	DBGPRINT(RT_DEBUG_TRACE, ("FileName=%s\n",src));
+
+	RtmpOSFSInfoChange(&osfsInfo, TRUE);
+
+	srcf = RtmpOSFileOpen(src, O_RDONLY, 0);
+	if (IS_FILE_OPEN_ERR(srcf)) 
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("--> Error opening file %s\n", src));
+		retval = FALSE;
+		goto recoverFS;
+	}
+	else 
+	{
+		// The object must have a read method
+		while(RtmpOSFileRead(srcf, &buffer[TotalByte], 1)==1)
+		{
+          		TotalByte++;
+			if(TotalByte>MAX_EEPROM_BIN_FILE_SIZE)
+			{
+				DBGPRINT(RT_DEBUG_ERROR, ("--> Error reading file %s, file size too large[>%d]\n", src, MAX_EEPROM_BIN_FILE_SIZE));
+				retval = FALSE;
+				goto closeFile;
+			}
+		}
+
+		retval = RtmpOSFileClose(srcf);
+		if (retval)
+			DBGPRINT(RT_DEBUG_TRACE, ("--> Error closing file %s\n", src));
+  	}
+
+	
+	RtmpOSFSInfoChange(&osfsInfo, FALSE);
+
+	for(ReadedByte=0;ReadedByte<TotalByte;ReadedByte++)
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("%02X ",buffer[ReadedByte]&0xff));
+		if((ReadedByte+1)%2==0)
+			PDATA[ReadedByte/2%8]=((buffer[ReadedByte]<<8)&0xff00)|(buffer[ReadedByte-1]&0xff);
+		if(ReadedByte%16==0)
+		{
+			CompareBuf=buffer[ReadedByte]&0xff;
+		
+		}
+		else
+		{
+			CompareBuf&=buffer[ReadedByte];
+			if((ReadedByte+1)%16==0)
+			{
+				DBGPRINT(RT_DEBUG_TRACE, (" result=%02X,blk=%02x\n",CompareBuf,ReadedByte/16));
+
+				if(CompareBuf!=0xff)
+					eFuseWriteRegistersFromBin(pAd,(USHORT)ReadedByte-15, 16, PDATA);
+				else
+				{
+					if(eFuseReadRegisters(pAd,ReadedByte, 2,(PUSHORT)&DATA)!=0x3f)
+						eFuseWriteRegistersFromBin(pAd,(USHORT)ReadedByte-15, 16, PDATA);
+				}
+				/*
+				for(l=0;l<8;l++)
+					printk("%04x ",PDATA[l]);
+				printk("\n");
+				*/
+				NdisZeroMemory(PDATA,16);
+			}
+		}
+	}
+	
+	return TRUE;
+
+closeFile:
+	if (srcf)
+		RtmpOSFileClose(srcf);	
+
+recoverFS:
+	RtmpOSFSInfoChange(&osfsInfo, FALSE);
+	
+
+	if (memPtr)
+		kfree(memPtr);
+	
+	return retval;
+}
+
+
+static NTSTATUS eFuseWriteRegistersFromBin(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	USHORT Offset, 
+	IN	USHORT Length, 
+	IN	USHORT* pData)
+{
+	USHORT	i;
+	USHORT	eFuseData;
+	USHORT	LogicalAddress, BlkNum = 0xffff;
+	UCHAR	EFSROM_AOUT,Loop=0;
+	EFUSE_CTRL_STRUC		eFuseCtrlStruc;
+	USHORT	efuseDataOffset;
+	UINT32	data,tempbuffer;
+	USHORT addr,tmpaddr, InBuf[3], tmpOffset;
+	UINT32 buffer[4];
+	BOOLEAN		bWriteSuccess = TRUE;
+	BOOLEAN		bNotWrite=TRUE;
+	BOOLEAN		bAllocateNewBlk=TRUE;
+
+	DBGPRINT(RT_DEBUG_TRACE, ("eFuseWriteRegistersFromBin Offset=%x, pData=%04x:%04x:%04x:%04x\n", Offset, *pData,*(pData+1),*(pData+2),*(pData+3)));
+
+	do
+	{
+	//Step 0. find the entry in the mapping table
+	//The address of EEPROM is 2-bytes alignment.
+	//The last bit is used for alignment, so it must be 0.
+	Loop++;
+	tmpOffset = Offset & 0xfffe;
+	EFSROM_AOUT = eFuseReadRegisters(pAd, tmpOffset, 2, &eFuseData);
+	
+	if( EFSROM_AOUT == 0x3f)
+	{	//find available logical address pointer	
+		//the logical address does not exist, find an empty one
+		//from the first address of block 45=16*45=0x2d0 to the last address of block 47
+		//==>48*16-3(reserved)=2FC
+		bAllocateNewBlk=TRUE;
+		for (i=EFUSE_USAGE_MAP_START; i<=EFUSE_USAGE_MAP_END; i+=2)
+		{
+			//Retrive the logical block nubmer form each logical address pointer
+			//It will access two logical address pointer each time.
+			eFusePhysicalReadRegisters(pAd, i, 2, &LogicalAddress);
+			if( (LogicalAddress & 0xff) == 0)
+			{//Not used logical address pointer
+				BlkNum = i-EFUSE_USAGE_MAP_START;
+				break;
+			}
+			else if(( (LogicalAddress >> 8) & 0xff) == 0)
+			{//Not used logical address pointer
+				if (i != EFUSE_USAGE_MAP_END)
+				{		
+					BlkNum = i-EFUSE_USAGE_MAP_START+1;	
+				}				
+				break;
+			}
+		}
+	}
+	else
+	{
+		bAllocateNewBlk=FALSE;
+		BlkNum = EFSROM_AOUT;
+	}	
+
+	DBGPRINT(RT_DEBUG_TRACE, ("eFuseWriteRegisters BlkNum = %d \n", BlkNum));
+
+	if(BlkNum == 0xffff)
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("eFuseWriteRegisters: out of free E-fuse space!!!\n"));
+		return FALSE;
+	}	
+	//Step 1.1.0
+	//If the block is not existing in mapping table, create one 
+	//and write down the 16-bytes data to the new block
+	if(bAllocateNewBlk)
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("Allocate New Blk\n"));
+		efuseDataOffset =  EFUSE_DATA3;
+		for(i=0; i< 4; i++)
+		{
+			DBGPRINT(RT_DEBUG_TRACE, ("Allocate New Blk, Data%d=%04x%04x\n",3-i,pData[2*i+1],pData[2*i]));
+			tempbuffer=((pData[2*i+1]<<16)&0xffff0000)|pData[2*i];
+
+
+			RTMP_IO_WRITE32(pAd, efuseDataOffset,tempbuffer);			
+			efuseDataOffset -= 4;		
+
+		}
+		/////////////////////////////////////////////////////////////////
+
+		//Step1.1.1. Write 10-bit of address to EFSROM_AIN (0x580, bit25:bit16). The address must be 16-byte alignment.
+		RTMP_IO_READ32(pAd, EFUSE_CTRL, &eFuseCtrlStruc.word);
+		eFuseCtrlStruc.field.EFSROM_AIN = BlkNum* 0x10 ;
+
+		//Step1.1.2. Write EFSROM_MODE (0x580, bit7:bit6) to 3.
+		eFuseCtrlStruc.field.EFSROM_MODE = 3;
+		
+		//Step1.1.3. Write EFSROM_KICK (0x580, bit30) to 1 to kick-off physical write procedure.
+		eFuseCtrlStruc.field.EFSROM_KICK = 1;
+
+		NdisMoveMemory(&data, &eFuseCtrlStruc, 4);	
+		
+		RTMP_IO_WRITE32(pAd, EFUSE_CTRL, data);	
+
+		//Step1.1.4. Polling EFSROM_KICK(0x580, bit30) until it become 0 again. It��s done.
+		i = 0;
+		while(i < 100)
+		{	
+			RTMP_IO_READ32(pAd, EFUSE_CTRL, (PUINT32) &eFuseCtrlStruc);
+
+			if(eFuseCtrlStruc.field.EFSROM_KICK == 0)
+				break;
+			
+			RTMPusecDelay(2);	
+			i++;	
+		}
+		
+	}
+	else
+	{	//Step1.2.
+		//If the same logical number is existing, check if the writting data and the data 
+		//saving in this block are the same.
+		/////////////////////////////////////////////////////////////////
+		//read current values of 16-byte block	
+		RTMP_IO_READ32(pAd, EFUSE_CTRL, &eFuseCtrlStruc.word);
+
+		//Step1.2.0. Write 10-bit of address to EFSROM_AIN (0x580, bit25:bit16). The address must be 16-byte alignment.
+		eFuseCtrlStruc.field.EFSROM_AIN = Offset & 0xfff0;
+
+		//Step1.2.1. Write EFSROM_MODE (0x580, bit7:bit6) to 1.
+		eFuseCtrlStruc.field.EFSROM_MODE = 0;
+
+		//Step1.2.2. Write EFSROM_KICK (0x580, bit30) to 1 to kick-off physical read procedure.
+		eFuseCtrlStruc.field.EFSROM_KICK = 1;
+
+		NdisMoveMemory(&data, &eFuseCtrlStruc, 4);
+		RTMP_IO_WRITE32(pAd, EFUSE_CTRL, data);	
+
+		//Step1.2.3. Polling EFSROM_KICK(0x580, bit30) until it become 0 again.
+		i = 0;
+		while(i < 500)
+		{	
+			RTMP_IO_READ32(pAd, EFUSE_CTRL, (PUINT32) &eFuseCtrlStruc);
+
+			if(eFuseCtrlStruc.field.EFSROM_KICK == 0)
+				break;
+			RTMPusecDelay(2);
+			i++;	
+		}
+
+		//Step1.2.4. Read 16-byte of data from EFUSE_DATA0-3 (0x59C-0x590)
+		efuseDataOffset =  EFUSE_DATA3;		
+		for(i=0; i< 4; i++)
+		{
+			RTMP_IO_READ32(pAd, efuseDataOffset, (PUINT32) &buffer[i]);
+			efuseDataOffset -=  4;		
+		}
+		//Step1.2.5. Check if the data of efuse and the writing data are the same.
+		for(i =0; i<4; i++)
+		{
+			tempbuffer=((pData[2*i+1]<<16)&0xffff0000)|pData[2*i];
+			DBGPRINT(RT_DEBUG_TRACE, ("buffer[%d]=%x,pData[%d]=%x,pData[%d]=%x,tempbuffer=%x\n",i,buffer[i],2*i,pData[2*i],2*i+1,pData[2*i+1],tempbuffer));
+			
+			if(((buffer[i]&0xffff0000)==(pData[2*i+1]<<16))&&((buffer[i]&0xffff)==pData[2*i]))
+				bNotWrite&=TRUE;
+			else
+			{
+				bNotWrite&=FALSE;
+				break;
+			}
+		}
+		if(!bNotWrite)
+		{
+		printk("The data is not the same\n");
+		
+			for(i =0; i<8; i++)
+			{
+				addr = BlkNum * 0x10 ;
+				
+				InBuf[0] = addr+2*i;
+				InBuf[1] = 2;
+				InBuf[2] = pData[i];	
+				
+				eFuseWritePhysical(pAd, &InBuf[0], 6, NULL, 2);		
+			}
+			
+		}
+		else
+			return TRUE;
+	     }
+	
+
+
+		//Step 2. Write mapping table
+		addr = EFUSE_USAGE_MAP_START+BlkNum;
+
+		tmpaddr = addr;
+
+		if(addr % 2 != 0)
+			addr = addr -1; 
+		InBuf[0] = addr;
+		InBuf[1] = 2;
+
+		//convert the address from 10 to 8 bit ( bit7, 6 = parity and bit5 ~ 0 = bit9~4), and write to logical map entry
+		tmpOffset = Offset;
+		tmpOffset >>= 4;
+		tmpOffset |= ((~((tmpOffset & 0x01) ^ ( tmpOffset >> 1 & 0x01) ^  (tmpOffset >> 2 & 0x01) ^  (tmpOffset >> 3 & 0x01))) << 6) & 0x40;
+		tmpOffset |= ((~( (tmpOffset >> 2 & 0x01) ^ (tmpOffset >> 3 & 0x01) ^ (tmpOffset >> 4 & 0x01) ^ ( tmpOffset >> 5 & 0x01))) << 7) & 0x80;
+
+		// write the logical address
+		if(tmpaddr%2 != 0) 	
+			InBuf[2] = tmpOffset<<8;	
+		else          
+			InBuf[2] = tmpOffset;
+
+		eFuseWritePhysical(pAd,&InBuf[0], 6, NULL, 0);
+
+		//Step 3. Compare data if not the same, invalidate the mapping entry, then re-write the data until E-fuse is exhausted
+		bWriteSuccess = TRUE;
+		for(i =0; i<8; i++)
+		{
+			addr = BlkNum * 0x10 ;
+			
+			InBuf[0] = addr+2*i;
+			InBuf[1] = 2;
+			InBuf[2] = 0x0;	
+			
+			eFuseReadPhysical(pAd, &InBuf[0], 4, &InBuf[2], 2);
+			DBGPRINT(RT_DEBUG_TRACE, ("addr=%x, buffer[i]=%x,InBuf[2]=%x\n",InBuf[0],pData[i],InBuf[2]));
+			if(pData[i] != InBuf[2])
+			{
+				bWriteSuccess = FALSE;
+				break;
+			}	
+		}
+
+		//Step 4. invlidate mapping entry and find a free mapping entry if not succeed
+		
+		if (!bWriteSuccess&&Loop<2)
+		{
+			DBGPRINT(RT_DEBUG_TRACE, ("eFuseWriteRegistersFromBin::Not bWriteSuccess BlkNum = %d\n", BlkNum));
+		
+			// the offset of current mapping entry
+			addr = EFUSE_USAGE_MAP_START+BlkNum;			
+
+			//find a new mapping entry
+			BlkNum = 0xffff;
+			for (i=EFUSE_USAGE_MAP_START; i<=EFUSE_USAGE_MAP_END; i+=2)
+			{
+				eFusePhysicalReadRegisters(pAd, i, 2, &LogicalAddress);
+				if( (LogicalAddress & 0xff) == 0)
+				{
+					BlkNum = i-EFUSE_USAGE_MAP_START;
+					break;
+				}
+				else if(( (LogicalAddress >> 8) & 0xff) == 0)
+				{
+					if (i != EFUSE_USAGE_MAP_END)
+					{		
+						BlkNum = i+1-EFUSE_USAGE_MAP_START;	
+					}				
+					break;
+				}
+			}
+			DBGPRINT(RT_DEBUG_TRACE, ("eFuseWriteRegistersFromBin::Not bWriteSuccess new BlkNum = %d\n", BlkNum));	
+			if(BlkNum == 0xffff)
+			{
+				DBGPRINT(RT_DEBUG_TRACE, ("eFuseWriteRegistersFromBin: out of free E-fuse space!!!\n"));
+				return FALSE;
+			}
+
+			//invalidate the original mapping entry if new entry is not found
+			tmpaddr = addr;
+
+			if(addr % 2 != 0)
+				addr = addr -1; 
+			InBuf[0] = addr;
+			InBuf[1] = 2;		
+			
+			eFuseReadPhysical(pAd, &InBuf[0], 4, &InBuf[2], 2);				
+
+			// write the logical address
+			if(tmpaddr%2 != 0) 
+			{
+				// Invalidate the high byte
+				for (i=8; i<15; i++)
+				{
+					if( ( (InBuf[2] >> i) & 0x01) == 0)
+					{
+						InBuf[2] |= (0x1 <<i);
+						break;
+					}	
+				}		
+			}	
+			else
+			{
+				// invalidate the low byte
+				for (i=0; i<8; i++)
+				{
+					if( ( (InBuf[2] >> i) & 0x01) == 0)
+					{
+						InBuf[2] |= (0x1 <<i);
+						break;
+					}	
+				}					
+			}
+			eFuseWritePhysical(pAd, &InBuf[0], 6, NULL, 0);	
+		}	
+		
+	}
+	while(!bWriteSuccess&&Loop<2);
+
+	return TRUE;
+}
+
+
+int rtmp_ee_efuse_read16(
+	IN RTMP_ADAPTER *pAd, 
+	IN USHORT Offset,
+	OUT USHORT *pValue)
+{
+	if (pAd->bFroceEEPROMBuffer
+#ifdef RALINK_ATE
+			||pAd->bEEPROMFile
+#endif // RALINK_ATE //
+		)
+	{
+	    DBGPRINT(RT_DEBUG_TRACE,  ("Read from EEPROM Buffer\n"));
+	    NdisMoveMemory(pValue, &(pAd->EEPROMImage[Offset]), 2);
+	}
+	else
+		eFuseReadRegisters(pAd, Offset, 2, pValue);
+	return (*pValue);
+}
+
+
+int rtmp_ee_efuse_write16(
+	IN RTMP_ADAPTER *pAd, 
+	IN USHORT Offset, 
+	IN USHORT data)
+{
+    if (pAd->bFroceEEPROMBuffer
+#ifdef RALINK_ATE
+			||pAd->bEEPROMFile
+#endif // RALINK_ATE //
+		)
+    {
+        DBGPRINT(RT_DEBUG_TRACE,  ("Write to EEPROM Buffer\n"));
+        NdisMoveMemory(&(pAd->EEPROMImage[Offset]), &data, 2);
+    }
+    else
+        eFuseWrite(pAd,Offset ,&data, 2);
+	return 0;
+}
+
+
+int RtmpEfuseSupportCheck(
+	IN RTMP_ADAPTER *pAd)
+{
+	USHORT value;
+	
+	if (IS_RT30xx(pAd))
+	{
+		eFusePhysicalReadRegisters(pAd, EFUSE_TAG, 2, &value);
+		pAd->EFuseTag = (value & 0xff);
+	}
+	return 0;
+}
+
+
+#ifdef RALINK_ATE
+INT set_eFuseBufferModeWriteBack_Proc(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PSTRING			arg)
+{
+	UINT Enable;
+	
+
+ 	if(strlen(arg)>0)	
+	{
+		Enable= simple_strtol(arg, 0, 16);
+ 	}
+	else
+		return FALSE;
+	if(Enable==1)
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("set_eFuseBufferMode_Proc:: Call WRITEEEPROMBUF"));	
+		eFuseWriteEeeppromBuf(pAd);
+	}
+	else
+		return FALSE;
+	return TRUE;
+}
+#endif // RALINK_ATE //
+
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Load EEPROM from bin file for eFuse mode
+
+	Arguments:
+		Adapter						Pointer to our adapter
+
+	Return Value:
+		NDIS_STATUS_SUCCESS         firmware image load ok
+		NDIS_STATUS_FAILURE         image not found
+
+	IRQL = PASSIVE_LEVEL
+		
+	========================================================================
+*/
+INT eFuseLoadEEPROM(
+	IN PRTMP_ADAPTER pAd)
+{
+	PSTRING					src = NULL;
+	INT 						retval;			
+	RTMP_OS_FD				srcf;
+	RTMP_OS_FS_INFO			osFSInfo;
+
+	
+	src=EFUSE_BUFFER_PATH;
+	DBGPRINT(RT_DEBUG_TRACE, ("FileName=%s\n",src));
+
+
+	RtmpOSFSInfoChange(&osFSInfo, TRUE);
+
+	if (src && *src)
+	{
+		srcf = RtmpOSFileOpen(src, O_RDONLY, 0);
+		if (IS_FILE_OPEN_ERR(srcf)) 
+		{
+			DBGPRINT(RT_DEBUG_ERROR, ("--> Error opening %s\n", src));
+			return FALSE;
+		}
+		else 
+		{
+
+				memset(pAd->EEPROMImage, 0x00, MAX_EEPROM_BIN_FILE_SIZE);
+				
+
+			retval =RtmpOSFileRead(srcf, (PSTRING)pAd->EEPROMImage, MAX_EEPROM_BIN_FILE_SIZE);
+			if (retval > 0)
+							{
+				
+				retval = NDIS_STATUS_SUCCESS;
+			}
+			else
+				DBGPRINT(RT_DEBUG_ERROR, ("Read file \"%s\" failed(errCode=%d)!\n", src, retval));
+
+      		}
+
+
+	}
+	else
+		{
+					DBGPRINT(RT_DEBUG_ERROR, ("--> Error src  or srcf is null\n"));
+					return FALSE;
+
+		}
+
+	retval=RtmpOSFileClose(srcf);
+			
+	if (retval)
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("--> Error %d closing %s\n", -retval, src));
+	}
+
+
+	RtmpOSFSInfoChange(&osFSInfo, FALSE);
+
+	return TRUE;	
+}
+
+INT eFuseWriteEeeppromBuf(
+	IN PRTMP_ADAPTER pAd)
+{
+
+	PSTRING					src = NULL;
+	INT 						retval;			
+	RTMP_OS_FD				srcf;
+	RTMP_OS_FS_INFO			osFSInfo;
+						
+	
+	src=EFUSE_BUFFER_PATH;
+	DBGPRINT(RT_DEBUG_TRACE, ("FileName=%s\n",src));
+
+	RtmpOSFSInfoChange(&osFSInfo, TRUE);
+	
+
+
+	if (src && *src)
+	{
+		srcf = RtmpOSFileOpen(src, O_WRONLY|O_CREAT, 0);
+
+		if (IS_FILE_OPEN_ERR(srcf)) 
+		{
+			DBGPRINT(RT_DEBUG_ERROR, ("--> Error opening %s\n", src));
+			return FALSE;
+		}
+		else 
+		{
+/*
+			// The object must have a read method
+			if (srcf->f_op && srcf->f_op->write)
+			{
+				// The object must have a read method
+                        srcf->f_op->write(srcf, pAd->EEPROMImage, 1024, &srcf->f_pos);
+                   
+			}
+			else
+			{
+						DBGPRINT(RT_DEBUG_ERROR, ("--> Error!! System doest not support read function\n"));
+						return FALSE;
+			}
+*/
+
+			RtmpOSFileWrite(srcf, (PSTRING)pAd->EEPROMImage,MAX_EEPROM_BIN_FILE_SIZE);
+
+      		}
+
+
+	}
+	else
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("--> Error src  or srcf is null\n"));
+		return FALSE;
+
+	}
+
+	retval=RtmpOSFileClose(srcf);
+			
+	if (retval)
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("--> Error %d closing %s\n", -retval, src));
+	}
+	
+	RtmpOSFSInfoChange(&osFSInfo, FALSE);
+	return TRUE;	
+}
+
+
+VOID eFuseGetFreeBlockCount(IN PRTMP_ADAPTER pAd, 
+	PUINT EfuseFreeBlock)
+{
+	USHORT i;
+	USHORT	LogicalAddress;
+	if(!pAd->bUseEfuse)
+		{
+		DBGPRINT(RT_DEBUG_TRACE,("eFuseGetFreeBlockCount Only supports efuse Mode\n"));
+		return ;
+		}
+	for (i = EFUSE_USAGE_MAP_START; i <= EFUSE_USAGE_MAP_END; i+=2)
+	{
+		eFusePhysicalReadRegisters(pAd, i, 2, &LogicalAddress);
+		if( (LogicalAddress & 0xff) == 0)
+		{
+			*EfuseFreeBlock= (UCHAR) (EFUSE_USAGE_MAP_END-i+1);
+			break;
+		}
+		else if(( (LogicalAddress >> 8) & 0xff) == 0)
+		{
+			*EfuseFreeBlock = (UCHAR) (EFUSE_USAGE_MAP_END-i);
+			break;
+		}
+
+		if(i == EFUSE_USAGE_MAP_END)
+			*EfuseFreeBlock = 0;
+	}
+	DBGPRINT(RT_DEBUG_TRACE,("eFuseGetFreeBlockCount is 0x%x\n",*EfuseFreeBlock));
+}
+
+INT eFuse_init(
+	IN PRTMP_ADAPTER pAd)
+{
+	UINT	EfuseFreeBlock=0;
+	DBGPRINT(RT_DEBUG_ERROR, ("NVM is Efuse and its size =%x[%x-%x] \n",EFUSE_USAGE_MAP_SIZE,EFUSE_USAGE_MAP_START,EFUSE_USAGE_MAP_END));
+	eFuseGetFreeBlockCount(pAd, &EfuseFreeBlock);
+	//If the used block of efuse is less than 5. We assume the default value
+	// of this efuse is empty and change to the buffer mode in odrder to 
+	//bring up interfaces successfully.
+	if(EfuseFreeBlock > (EFUSE_USAGE_MAP_END-5))
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("NVM is Efuse and the information is too less to bring up interface. Force to use EEPROM Buffer Mode\n"));
+		pAd->bFroceEEPROMBuffer = TRUE;
+		eFuseLoadEEPROM(pAd);
+	}
+	else
+		pAd->bFroceEEPROMBuffer = FALSE;
+	DBGPRINT(RT_DEBUG_TRACE, ("NVM is Efuse and force to use EEPROM Buffer Mode=%x\n",pAd->bFroceEEPROMBuffer));
+
+	return 0;
+}
+
+#endif // RTMP_EFUSE_SUPPORT //
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/ee_prom.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/ee_prom.c
new file mode 100644
index 000000000..ee712eb8d
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/ee_prom.c
@@ -0,0 +1,272 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+	Module Name:
+	ee_prom.c
+
+	Abstract:
+	Miniport generic portion header file
+
+	Revision History:
+	Who         When          What
+	--------    ----------    ----------------------------------------------
+*/
+
+
+#include	"rt_config.h"
+
+
+
+// IRQL = PASSIVE_LEVEL
+static inline VOID RaiseClock(
+    IN	PRTMP_ADAPTER	pAd,
+    IN  UINT32 *x)
+{
+	*x = *x | EESK;
+	RTMP_IO_WRITE32(pAd, E2PROM_CSR, *x);
+	RTMPusecDelay(1);				// Max frequency = 1MHz in Spec. definition 
+}
+
+// IRQL = PASSIVE_LEVEL
+static inline VOID LowerClock(
+    IN	PRTMP_ADAPTER	pAd,
+    IN  UINT32 *x)
+{
+	*x = *x & ~EESK;
+	RTMP_IO_WRITE32(pAd, E2PROM_CSR, *x);
+	RTMPusecDelay(1);
+}
+
+// IRQL = PASSIVE_LEVEL
+static inline USHORT ShiftInBits(
+	IN PRTMP_ADAPTER	pAd)
+{
+	UINT32		x,i;
+	USHORT      data=0;
+
+	RTMP_IO_READ32(pAd, E2PROM_CSR, &x);
+
+	x &= ~( EEDO | EEDI);
+
+	for(i=0; i<16; i++)
+	{
+		data = data << 1;
+		RaiseClock(pAd, &x);
+
+		RTMP_IO_READ32(pAd, E2PROM_CSR, &x);
+		LowerClock(pAd, &x); //prevent read failed
+		
+		x &= ~(EEDI);
+		if(x & EEDO)
+		    data |= 1;
+	}
+
+	return data;
+}
+
+
+// IRQL = PASSIVE_LEVEL
+static inline VOID ShiftOutBits(
+	IN PRTMP_ADAPTER	pAd,
+	IN USHORT			data,
+	IN USHORT			count)
+{
+	UINT32       x,mask;
+
+	mask = 0x01 << (count - 1);
+	RTMP_IO_READ32(pAd, E2PROM_CSR, &x);
+
+	x &= ~(EEDO | EEDI);
+
+	do
+	{
+	    x &= ~EEDI;
+	    if(data & mask)		x |= EEDI;
+
+	    RTMP_IO_WRITE32(pAd, E2PROM_CSR, x);
+
+	    RaiseClock(pAd, &x);
+	    LowerClock(pAd, &x);
+
+	    mask = mask >> 1;
+	} while(mask);
+
+	x &= ~EEDI;
+	RTMP_IO_WRITE32(pAd, E2PROM_CSR, x);
+}
+
+
+// IRQL = PASSIVE_LEVEL
+static inline VOID EEpromCleanup(
+	IN PRTMP_ADAPTER	pAd)
+{
+	UINT32 x;
+
+	RTMP_IO_READ32(pAd, E2PROM_CSR, &x);
+
+	x &= ~(EECS | EEDI);
+	RTMP_IO_WRITE32(pAd, E2PROM_CSR, x);
+
+	RaiseClock(pAd, &x);
+	LowerClock(pAd, &x);	
+}
+
+
+static inline VOID EWEN(
+	IN PRTMP_ADAPTER	pAd)
+{
+	UINT32	x;
+
+	// reset bits and set EECS
+	RTMP_IO_READ32(pAd, E2PROM_CSR, &x);
+	x &= ~(EEDI | EEDO | EESK);
+	x |= EECS;
+	RTMP_IO_WRITE32(pAd, E2PROM_CSR, x);
+
+	// kick a pulse
+	RaiseClock(pAd, &x);
+	LowerClock(pAd, &x);
+
+	// output the read_opcode and six pulse in that order    
+	ShiftOutBits(pAd, EEPROM_EWEN_OPCODE, 5);
+	ShiftOutBits(pAd, 0, 6);
+
+	EEpromCleanup(pAd);    
+}
+
+
+static inline VOID EWDS(
+	IN PRTMP_ADAPTER	pAd)
+{
+	UINT32	x;
+
+	// reset bits and set EECS
+	RTMP_IO_READ32(pAd, E2PROM_CSR, &x);
+	x &= ~(EEDI | EEDO | EESK);
+	x |= EECS;
+	RTMP_IO_WRITE32(pAd, E2PROM_CSR, x);
+
+	// kick a pulse
+	RaiseClock(pAd, &x);
+	LowerClock(pAd, &x);
+
+	// output the read_opcode and six pulse in that order    
+	ShiftOutBits(pAd, EEPROM_EWDS_OPCODE, 5);
+	ShiftOutBits(pAd, 0, 6);
+
+	EEpromCleanup(pAd);    
+}
+
+
+// IRQL = PASSIVE_LEVEL
+int rtmp_ee_prom_read16(
+	IN PRTMP_ADAPTER	pAd,
+	IN USHORT			Offset,
+	OUT USHORT			*pValue)
+{
+	UINT32		x;
+	USHORT		data;
+
+
+	Offset /= 2;
+	// reset bits and set EECS
+	RTMP_IO_READ32(pAd, E2PROM_CSR, &x);
+	x &= ~(EEDI | EEDO | EESK);
+	x |= EECS;
+	RTMP_IO_WRITE32(pAd, E2PROM_CSR, x);
+
+	// patch can not access e-Fuse issue
+	if (!(IS_RT3090(pAd) || IS_RT3572(pAd) || IS_RT3390(pAd)))
+	{
+		// kick a pulse
+		RaiseClock(pAd, &x);
+		LowerClock(pAd, &x);
+	}
+
+	// output the read_opcode and register number in that order    
+	ShiftOutBits(pAd, EEPROM_READ_OPCODE, 3);
+	ShiftOutBits(pAd, Offset, pAd->EEPROMAddressNum);
+
+	// Now read the data (16 bits) in from the selected EEPROM word
+	data = ShiftInBits(pAd);
+
+	EEpromCleanup(pAd);
+
+
+	*pValue = data;
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+int rtmp_ee_prom_write16(
+    IN  PRTMP_ADAPTER	pAd,
+    IN  USHORT Offset,
+    IN  USHORT Data)
+{
+	UINT32 x;
+
+
+	Offset /= 2;
+
+	EWEN(pAd);
+
+	// reset bits and set EECS
+	RTMP_IO_READ32(pAd, E2PROM_CSR, &x);
+	x &= ~(EEDI | EEDO | EESK);
+	x |= EECS;
+	RTMP_IO_WRITE32(pAd, E2PROM_CSR, x);
+
+	// patch can not access e-Fuse issue
+	if (!(IS_RT3090(pAd) || IS_RT3572(pAd) || IS_RT3390(pAd)))
+	{
+		// kick a pulse
+		RaiseClock(pAd, &x);
+		LowerClock(pAd, &x);
+	}
+	
+	// output the read_opcode ,register number and data in that order    
+	ShiftOutBits(pAd, EEPROM_WRITE_OPCODE, 3);
+	ShiftOutBits(pAd, Offset, pAd->EEPROMAddressNum);
+	ShiftOutBits(pAd, Data, 16);		// 16-bit access
+
+	// read DO status
+	RTMP_IO_READ32(pAd, E2PROM_CSR, &x);
+
+	EEpromCleanup(pAd);
+
+	RTMPusecDelay(10000);	//delay for twp(MAX)=10ms
+
+	EWDS(pAd);
+
+	EEpromCleanup(pAd);
+
+
+	return NDIS_STATUS_SUCCESS;
+	
+}
+
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/eeprom.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/eeprom.c
new file mode 100644
index 000000000..2971fd01a
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/eeprom.c
@@ -0,0 +1,104 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+	Module Name:
+	eeprom.c
+
+	Abstract:
+
+	Revision History:
+	Who			When			What
+	--------	----------		----------------------------------------------
+	Name		Date			Modification logs
+*/
+#include "rt_config.h"
+
+
+INT RtmpChipOpsEepromHook(
+	IN RTMP_ADAPTER *pAd,
+	IN INT			infType)
+{
+	RTMP_CHIP_OP	*pChipOps = &pAd->chipOps;
+#ifdef RT30xx
+#ifdef RTMP_EFUSE_SUPPORT
+	UINT32			eFuseCtrl, MacCsr0;
+	int index;
+	
+	index = 0;
+	do
+	{
+		if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_NIC_NOT_EXIST))			
+			return -1;
+		
+		RTMP_IO_READ32(pAd, MAC_CSR0, &MacCsr0);
+		pAd->MACVersion = MacCsr0;
+
+		if ((pAd->MACVersion != 0x00) && (pAd->MACVersion != 0xFFFFFFFF))
+			break;
+
+		RTMPusecDelay(10);
+	} while (index++ < 100);
+	
+	pAd->bUseEfuse=FALSE;
+	RTMP_IO_READ32(pAd, EFUSE_CTRL, &eFuseCtrl);
+	pAd->bUseEfuse = ( (eFuseCtrl & 0x80000000) == 0x80000000) ? 1 : 0;	
+	if(pAd->bUseEfuse)
+	{
+		pChipOps->eeinit = eFuse_init;
+		pChipOps->eeread = rtmp_ee_efuse_read16;
+		pChipOps->eewrite = rtmp_ee_efuse_write16;
+		DBGPRINT(RT_DEBUG_TRACE, ("NVM is EFUSE\n"));
+		return 0 ;	
+	}
+	else
+	{
+		pAd->bFroceEEPROMBuffer = FALSE;
+		DBGPRINT(RT_DEBUG_TRACE, ("NVM is EEPROM\n"));
+	}
+#endif // RTMP_EFUSE_SUPPORT //
+#endif // RT30xx //
+
+	switch(infType) 
+	{
+#ifdef RTMP_PCI_SUPPORT
+		case RTMP_DEV_INF_PCI:
+		case RTMP_DEV_INF_PCIE:
+
+			pChipOps->eeinit = NULL;
+			pChipOps->eeread = rtmp_ee_prom_read16;
+			pChipOps->eewrite = rtmp_ee_prom_write16;
+			break;
+#endif // RTMP_PCI_SUPPORT //
+
+
+		default:
+			DBGPRINT(RT_DEBUG_ERROR, ("RtmpChipOpsEepromHook() failed!\n"));
+			break;
+	}
+
+	return 0;
+}
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/mlme.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/mlme.c
new file mode 100644
index 000000000..166e5b74d
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/mlme.c
@@ -0,0 +1,6766 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+	Module Name:
+	mlme.c
+
+	Abstract:
+
+	Revision History:
+	Who			When			What
+	--------	----------		----------------------------------------------
+	John Chang	2004-08-25		Modify from RT2500 code base
+	John Chang	2004-09-06		modified for RT2600
+*/
+
+#include "rt_config.h"
+#include <stdarg.h>
+
+UCHAR	CISCO_OUI[] = {0x00, 0x40, 0x96};
+
+UCHAR	WPA_OUI[] = {0x00, 0x50, 0xf2, 0x01};
+UCHAR	RSN_OUI[] = {0x00, 0x0f, 0xac};
+UCHAR	WAPI_OUI[] = {0x00, 0x14, 0x72};
+UCHAR   WME_INFO_ELEM[]  = {0x00, 0x50, 0xf2, 0x02, 0x00, 0x01};
+UCHAR   WME_PARM_ELEM[] = {0x00, 0x50, 0xf2, 0x02, 0x01, 0x01};
+UCHAR	Ccx2QosInfo[] = {0x00, 0x40, 0x96, 0x04};
+//UCHAR   RALINK_OUI[]  = {0x00, 0x0c, 0x43};
+UCHAR   BROADCOM_OUI[]  = {0x00, 0x90, 0x4c};
+UCHAR   WPS_OUI[] = {0x00, 0x50, 0xf2, 0x04};
+#ifdef CONFIG_STA_SUPPORT
+#ifdef DOT11_N_SUPPORT
+UCHAR	PRE_N_HT_OUI[]	= {0x00, 0x90, 0x4c};
+#endif // DOT11_N_SUPPORT //
+#endif // CONFIG_STA_SUPPORT //
+
+UCHAR RateSwitchTable[] = {
+// Item No.   Mode   Curr-MCS   TrainUp   TrainDown		// Mode- Bit0: STBC, Bit1: Short GI, Bit4,5: Mode(0:CCK, 1:OFDM, 2:HT Mix, 3:HT GF)
+    0x11, 0x00,  0,  0,  0,						// Initial used item after association
+    0x00, 0x00,  0, 40, 101,
+    0x01, 0x00,  1, 40, 50,
+    0x02, 0x00,  2, 35, 45,
+    0x03, 0x00,  3, 20, 45,
+    0x04, 0x21,  0, 30, 50,
+    0x05, 0x21,  1, 20, 50,
+    0x06, 0x21,  2, 20, 50,
+    0x07, 0x21,  3, 15, 50,
+    0x08, 0x21,  4, 15, 30,
+    0x09, 0x21,  5, 10, 25,
+    0x0a, 0x21,  6,  8, 25,
+    0x0b, 0x21,  7,  8, 25,
+    0x0c, 0x20, 12,  15, 30,
+    0x0d, 0x20, 13,  8, 20,
+    0x0e, 0x20, 14,  8, 20,
+    0x0f, 0x20, 15,  8, 25,
+    0x10, 0x22, 15,  8, 25,
+    0x11, 0x00,  0,  0,  0,
+    0x12, 0x00,  0,  0,  0,
+    0x13, 0x00,  0,  0,  0,
+    0x14, 0x00,  0,  0,  0,
+    0x15, 0x00,  0,  0,  0,
+    0x16, 0x00,  0,  0,  0,
+    0x17, 0x00,  0,  0,  0,
+    0x18, 0x00,  0,  0,  0,
+    0x19, 0x00,  0,  0,  0,
+    0x1a, 0x00,  0,  0,  0,
+    0x1b, 0x00,  0,  0,  0,
+    0x1c, 0x00,  0,  0,  0,
+    0x1d, 0x00,  0,  0,  0,
+    0x1e, 0x00,  0,  0,  0,
+    0x1f, 0x00,  0,  0,  0,
+};
+
+UCHAR RateSwitchTable11B[] = {
+// Item No.   Mode   Curr-MCS   TrainUp   TrainDown		// Mode- Bit0: STBC, Bit1: Short GI, Bit4,5: Mode(0:CCK, 1:OFDM, 2:HT Mix, 3:HT GF)
+    0x04, 0x03,  0,  0,  0,						// Initial used item after association
+    0x00, 0x00,  0, 40, 101,
+    0x01, 0x00,  1, 40, 50,
+    0x02, 0x00,  2, 35, 45,
+    0x03, 0x00,  3, 20, 45,
+};
+
+UCHAR RateSwitchTable11BG[] = {
+// Item No.   Mode   Curr-MCS   TrainUp   TrainDown		// Mode- Bit0: STBC, Bit1: Short GI, Bit4,5: Mode(0:CCK, 1:OFDM, 2:HT Mix, 3:HT GF)
+    0x0a, 0x00,  0,  0,  0,						// Initial used item after association
+    0x00, 0x00,  0, 40, 101,
+    0x01, 0x00,  1, 40, 50,
+    0x02, 0x00,  2, 35, 45,
+    0x03, 0x00,  3, 20, 45,
+    0x04, 0x10,  2, 20, 35,
+    0x05, 0x10,  3, 16, 35,
+    0x06, 0x10,  4, 10, 25,
+    0x07, 0x10,  5, 16, 25,
+    0x08, 0x10,  6, 10, 25,
+    0x09, 0x10,  7, 10, 13,
+};
+
+UCHAR RateSwitchTable11G[] = {
+// Item No.   Mode   Curr-MCS   TrainUp   TrainDown		// Mode- Bit0: STBC, Bit1: Short GI, Bit4,5: Mode(0:CCK, 1:OFDM, 2:HT Mix, 3:HT GF)
+    0x08, 0x00,  0,  0,  0,						// Initial used item after association
+    0x00, 0x10,  0, 20, 101,
+    0x01, 0x10,  1, 20, 35,
+    0x02, 0x10,  2, 20, 35,
+    0x03, 0x10,  3, 16, 35,
+    0x04, 0x10,  4, 10, 25,
+    0x05, 0x10,  5, 16, 25,
+    0x06, 0x10,  6, 10, 25,
+    0x07, 0x10,  7, 10, 13,
+};
+
+#ifdef DOT11_N_SUPPORT
+UCHAR RateSwitchTable11N1S[] = {
+// Item No.   Mode   Curr-MCS   TrainUp   TrainDown		// Mode- Bit0: STBC, Bit1: Short GI, Bit4,5: Mode(0:CCK, 1:OFDM, 2:HT Mix, 3:HT GF)
+    0x0c, 0x0a,  0,  0,  0,						// Initial used item after association
+    0x00, 0x00,  0, 40, 101,
+    0x01, 0x00,  1, 40, 50,
+    0x02, 0x00,  2, 25, 45,
+    0x03, 0x21,  0, 20, 35,
+    0x04, 0x21,  1, 20, 35,
+    0x05, 0x21,  2, 20, 35,
+    0x06, 0x21,  3, 15, 35,
+    0x07, 0x21,  4, 15, 30,
+    0x08, 0x21,  5, 10, 25,
+    0x09, 0x21,  6,  8, 14,
+    0x0a, 0x21,  7,  8, 14,
+    0x0b, 0x23,  7,  8, 14,
+};
+
+UCHAR RateSwitchTable11N2S[] = {
+// Item No.   Mode   Curr-MCS   TrainUp   TrainDown		// Mode- Bit0: STBC, Bit1: Short GI, Bit4,5: Mode(0:CCK, 1:OFDM, 2:HT Mix, 3:HT GF)
+    0x0e, 0x0c,  0,  0,  0,						// Initial used item after association
+    0x00, 0x00,  0, 40, 101,
+    0x01, 0x00,  1, 40, 50,
+    0x02, 0x00,  2, 25, 45,
+    0x03, 0x21,  0, 20, 35,
+    0x04, 0x21,  1, 20, 35,
+    0x05, 0x21,  2, 20, 35,
+    0x06, 0x21,  3, 15, 35,
+    0x07, 0x21,  4, 15, 30,
+    0x08, 0x20, 11, 15, 30,
+    0x09, 0x20, 12, 15, 30,
+    0x0a, 0x20, 13,  8, 20,
+    0x0b, 0x20, 14,  8, 20,
+    0x0c, 0x20, 15,  8, 25,
+    0x0d, 0x22, 15,  8, 15,
+};
+
+#ifdef NEW_RATE_ADAPT_SUPPORT
+UCHAR RateSwitchTable11N3S[] = {
+// Item No.	Mode	Curr-MCS	TrainUp	TrainDown	// Mode- Bit0: STBC, Bit1: Short GI, Bit4,5: Mode(0:CCK, 1:OFDM, 2:HT Mix, 3:HT GF)
+// item no.     mcs     highPERThrd
+//          mode     lowPERThrd
+//                                    downMcs upMcs2 
+//                                           upMcs3 upMcs1
+    0x19, 0x18,  0,  0,   0,   0,   0,   0,   0,   0,// Initial used item after association: the number of rate indexes, the initial mcs
+    0x00, 0x21,  0, 30, 101,   0,  16,   8,   1,   7,//mcs0
+    0x01, 0x21,  1, 20,  50,   0,  16,   9,   2,  13,//mcs1
+    0x02, 0x21,  2, 20,  50,   1,  17,   9,   3,  20,//mcs2
+    0x03, 0x21,  3, 15,  50,   2,  17,  10,   4,  26,//mcs3
+    0x04, 0x21,  4, 15,  30,   3,  18,  11,   5,  39,//mcs4
+    0x05, 0x21,  5, 10,  25,   4,  18,  12,   6,  52,//mcs5
+    0x06, 0x21,  6,  8,  14,   5,  19,  12,   7,  59,//mcs6
+    0x07, 0x21,  7,  8,  14,   6,  19,  12,   7,  65,//mcs7
+    0x08, 0x20,  8, 30,  50,   0,  16,   9,   2,  13,//mcs8
+    0x09, 0x20,  9, 20,  50,   8,  17,  10,   4,  26,//mcs9
+    0x0a, 0x20, 10, 20,  50,   9,  18,  11,   5,  39,//mcs10
+    0x0b, 0x20, 11, 15,  30,  10,  18,  12,   6,  52,//mcs11
+    0x0c, 0x20, 12, 15,  30,  11,  20,  13,  12,  78,//mcs12
+    0x0d, 0x20, 13,  8,  20,  12,  20,  14,  13, 104,//mcs13
+    0x0e, 0x20, 14,  8,  20,  13,  21,  15,  14, 117,//mcs14
+    0x0f, 0x20, 15,  8,  25,  14,  21,  15,  15, 130,//mcs15
+    0x10, 0x20, 16, 30,  50,   8,  17,   9,   3,  20,//mcs16
+    0x11, 0x20, 17, 20,  50,  16,  18,  11,   5,  39,//mcs17
+    0x12, 0x20, 18, 20,  50,  17,  19,  12,   7,  59,//mcs18
+    0x13, 0x20, 19, 15,  30,  18,  20,  13,  19,  78,//mcs19
+    0x14, 0x20, 20, 15,  30,  19,  21,  15,  20, 117,//mcs20
+    0x15, 0x20, 21,  8,  20,  20,  22,  21,  21, 156,//mcs21
+    0x16, 0x20, 22,  8,  20,  21,  23,  22,  22, 176,//mcs22
+    0x17, 0x20, 23,  8,  25,  22,  24,  23,  23, 196,//mcs23
+    0x18, 0x22, 23,  8,  25,  23,  24,  24,  24, 217,//mcs23+shortGI
+
+		};
+#else
+UCHAR RateSwitchTable11N3S[] = {
+// Item No.	Mode	Curr-MCS	TrainUp	TrainDown	// Mode- Bit0: STBC, Bit1: Short GI, Bit4,5: Mode(0:CCK, 1:OFDM, 2:HT Mix, 3:HT GF)
+	0x0e, 0x00,  0,  0,  0,	// 0x0a, 0x00,  0,  0,  0,      // Initial used item after association
+    0x00, 0x21,  0, 30, 101,
+    0x01, 0x21,  1, 20, 50,
+    0x02, 0x21,  2, 20, 50,
+    0x03, 0x21,  3, 15, 50,
+    0x04, 0x21,  4, 15, 30,
+    0x05, 0x20, 11, 15, 30,	// Required by System-Alan @ 20080812 
+    0x06, 0x20, 12, 15, 30,	// 0x05, 0x20, 12, 15, 30,
+    0x07, 0x20, 13,  8, 20,	// 0x06, 0x20, 13,  8, 20,
+    0x08, 0x20, 14,  8, 20,	// 0x07, 0x20, 14,  8, 20,
+    0x09, 0x20, 15,  8, 25,	// 0x08, 0x20, 15,  8, 25,
+	//0x0a, 0x22, 15,  8, 15,	// 0x09, 0x22, 15,  8, 25,
+	//0x0a, 0x20, 20, 15, 30,
+	0x0a, 0x20, 21,  8, 20,
+	0x0b, 0x20, 22,  8, 20,
+	0x0c, 0x20, 23,  8, 25,
+	0x0d, 0x22, 23,  8, 25,
+};
+#endif // NEW_RATE_ADAPT_SUPPORT //
+
+UCHAR RateSwitchTable11N2SForABand[] = {
+// Item No.   Mode   Curr-MCS   TrainUp   TrainDown		// Mode- Bit0: STBC, Bit1: Short GI, Bit4,5: Mode(0:CCK, 1:OFDM, 2:HT Mix, 3:HT GF)
+    0x0b, 0x09,  0,  0,  0,						// Initial used item after association
+    0x00, 0x21,  0, 30, 101,
+    0x01, 0x21,  1, 20, 50,
+    0x02, 0x21,  2, 20, 50,
+    0x03, 0x21,  3, 15, 50,
+    0x04, 0x21,  4, 15, 30,
+    0x05, 0x21,  5, 15, 30,
+    0x06, 0x20, 12,  15, 30,
+    0x07, 0x20, 13,  8, 20,
+    0x08, 0x20, 14,  8, 20,
+    0x09, 0x20, 15,  8, 25,
+    0x0a, 0x22, 15,  8, 25,
+};
+
+UCHAR RateSwitchTable11N3SForABand[] = { // 3*3
+// Item No.   Mode   Curr-MCS   TrainUp   TrainDown		// Mode- Bit0: STBC, Bit1: Short GI, Bit4,5: Mode(0:CCK, 1:OFDM, 2:HT Mix, 3:HT GF)
+    0x0b, 0x09,  0,  0,  0,						// Initial used item after association
+    0x00, 0x21,  0, 30, 101,
+    0x01, 0x21,  1, 20, 50,
+    0x02, 0x21,  2, 20, 50,
+    0x03, 0x21,  3, 15, 50,
+    0x04, 0x21,  4, 15, 30,
+    0x05, 0x21,  5, 15, 30,
+    0x06, 0x20, 12,  15, 30,
+    0x07, 0x20, 13,  8, 20,
+    0x08, 0x20, 14,  8, 20,
+    0x09, 0x20, 15,  8, 25,
+    0x0a, 0x22, 15,  8, 25,
+};
+
+UCHAR RateSwitchTable11BGN1S[] = {
+// Item No.   Mode   Curr-MCS   TrainUp   TrainDown		// Mode- Bit0: STBC, Bit1: Short GI, Bit4,5: Mode(0:CCK, 1:OFDM, 2:HT Mix, 3:HT GF)
+    0x0c, 0x0a,  0,  0,  0,						// Initial used item after association
+    0x00, 0x00,  0, 40, 101,
+    0x01, 0x00,  1, 40, 50,
+    0x02, 0x00,  2, 25, 45,
+    0x03, 0x21,  0, 20, 35,
+    0x04, 0x21,  1, 20, 35,
+    0x05, 0x21,  2, 20, 35,
+    0x06, 0x21,  3, 15, 35,
+    0x07, 0x21,  4, 15, 30,
+    0x08, 0x21,  5, 10, 25,
+    0x09, 0x21,  6,  8, 14,
+    0x0a, 0x21,  7,  8, 14,
+    0x0b, 0x23,  7,  8, 14,
+};
+
+UCHAR RateSwitchTable11BGN2S[] = {
+// Item No.   Mode   Curr-MCS   TrainUp   TrainDown		// Mode- Bit0: STBC, Bit1: Short GI, Bit4,5: Mode(0:CCK, 1:OFDM, 2:HT Mix, 3:HT GF)
+    0x0e, 0x0c,  0,  0,  0,						// Initial used item after association
+    0x00, 0x00,  0, 40, 101,
+    0x01, 0x00,  1, 40, 50,
+    0x02, 0x00,  2, 25, 45,
+    0x03, 0x21,  0, 20, 35,
+    0x04, 0x21,  1, 20, 35,
+    0x05, 0x21,  2, 20, 35,
+    0x06, 0x21,  3, 15, 35,
+    0x07, 0x21,  4, 15, 30,
+    0x08, 0x20, 11, 15, 30,
+    0x09, 0x20, 12, 15, 22,
+    0x0a, 0x20, 13,  8, 20,
+    0x0b, 0x20, 14,  8, 20,
+    0x0c, 0x20, 15,  8, 20,
+    0x0d, 0x22, 15,  8, 15,
+};
+
+UCHAR RateSwitchTable11BGN3S[] = { // 3*3
+// Item No.   Mode   Curr-MCS   TrainUp   TrainDown		// Mode- Bit0: STBC, Bit1: Short GI, Bit4,5: Mode(0:CCK, 1:OFDM, 2:HT Mix, 3:HT GF)
+    0x0a, 0x00,  0,  0,  0,						// Initial used item after association
+    0x00, 0x21,  0, 30,101,	//50
+    0x01, 0x21,  1, 20, 50,
+    0x02, 0x21,  2, 20, 50,
+    0x03, 0x21,  3, 20, 50,
+    0x04, 0x21,  4, 15, 50,
+    0x05, 0x20, 20, 15, 30,
+    0x06, 0x20, 21,  8, 20,
+    0x07, 0x20, 22,  8, 20,
+    0x08, 0x20, 23,  8, 25,
+    0x09, 0x22, 23,  8, 25,
+};
+
+UCHAR RateSwitchTable11BGN2SForABand[] = {
+// Item No.   Mode   Curr-MCS   TrainUp   TrainDown		// Mode- Bit0: STBC, Bit1: Short GI, Bit4,5: Mode(0:CCK, 1:OFDM, 2:HT Mix, 3:HT GF)
+    0x0b, 0x09,  0,  0,  0,						// Initial used item after association
+    0x00, 0x21,  0, 30,101,	//50
+    0x01, 0x21,  1, 20, 50,
+    0x02, 0x21,  2, 20, 50,
+    0x03, 0x21,  3, 15, 50,
+    0x04, 0x21,  4, 15, 30,
+    0x05, 0x21,  5, 15, 30,
+    0x06, 0x20, 12, 15, 30,
+    0x07, 0x20, 13,  8, 20,
+    0x08, 0x20, 14,  8, 20,
+    0x09, 0x20, 15,  8, 25,
+    0x0a, 0x22, 15,  8, 25,
+};
+
+UCHAR RateSwitchTable11BGN3SForABand[] = { // 3*3
+// Item No.   Mode   Curr-MCS   TrainUp   TrainDown		// Mode- Bit0: STBC, Bit1: Short GI, Bit4,5: Mode(0:CCK, 1:OFDM, 2:HT Mix, 3:HT GF)
+    0x0c, 0x09,  0,  0,  0,						// Initial used item after association
+    0x00, 0x21,  0, 30,101,	//50
+    0x01, 0x21,  1, 20, 50,
+    0x02, 0x21,  2, 20, 50,
+    0x03, 0x21,  3, 15, 50,
+    0x04, 0x21,  4, 15, 30,
+    0x05, 0x21,  5, 15, 30,
+    0x06, 0x21, 12, 15, 30,
+    0x07, 0x20, 20, 15, 30,
+    0x08, 0x20, 21,  8, 20,
+    0x09, 0x20, 22,  8, 20,
+    0x0a, 0x20, 23,  8, 25,
+    0x0b, 0x22, 23,  8, 25,
+};
+#endif // DOT11_N_SUPPORT //
+
+
+extern UCHAR	 OfdmRateToRxwiMCS[];
+// since RT61 has better RX sensibility, we have to limit TX ACK rate not to exceed our normal data TX rate.
+// otherwise the WLAN peer may not be able to receive the ACK thus downgrade its data TX rate
+ULONG BasicRateMask[12]				= {0xfffff001 /* 1-Mbps */, 0xfffff003 /* 2 Mbps */, 0xfffff007 /* 5.5 */, 0xfffff00f /* 11 */,
+									  0xfffff01f /* 6 */	 , 0xfffff03f /* 9 */	  , 0xfffff07f /* 12 */ , 0xfffff0ff /* 18 */,
+									  0xfffff1ff /* 24 */	 , 0xfffff3ff /* 36 */	  , 0xfffff7ff /* 48 */ , 0xffffffff /* 54 */};
+
+UCHAR BROADCAST_ADDR[MAC_ADDR_LEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
+UCHAR ZERO_MAC_ADDR[MAC_ADDR_LEN]  = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+
+// e.g. RssiSafeLevelForTxRate[RATE_36]" means if the current RSSI is greater than 
+//		this value, then it's quaranteed capable of operating in 36 mbps TX rate in 
+//		clean environment.
+//								  TxRate: 1   2   5.5	11	 6	  9    12	18	 24   36   48	54	 72  100
+signed char RssiSafeLevelForTxRate[] ={  -92, -91, -90, -87, -88, -86, -85, -83, -81, -78, -72, -71, -40, -40 };
+
+unsigned char  RateIdToMbps[]	 = { 1, 2, 5, 11, 6, 9, 12, 18, 24, 36, 48, 54, 72, 100};
+USHORT RateIdTo500Kbps[] = { 2, 4, 11, 22, 12, 18, 24, 36, 48, 72, 96, 108, 144, 200};
+
+UCHAR  SsidIe	 = IE_SSID;
+UCHAR  SupRateIe = IE_SUPP_RATES;
+UCHAR  ExtRateIe = IE_EXT_SUPP_RATES;
+#ifdef DOT11_N_SUPPORT
+UCHAR  HtCapIe = IE_HT_CAP;
+UCHAR  AddHtInfoIe = IE_ADD_HT;
+UCHAR  NewExtChanIe = IE_SECONDARY_CH_OFFSET;
+UCHAR  BssCoexistIe = IE_2040_BSS_COEXIST;
+UCHAR  ExtHtCapIe = IE_EXT_CAPABILITY;
+#endif // DOT11_N_SUPPORT //
+UCHAR  ExtCapIe = IE_EXT_CAPABILITY;
+UCHAR  ErpIe	 = IE_ERP;
+UCHAR  DsIe 	 = IE_DS_PARM;
+UCHAR  TimIe	 = IE_TIM;
+UCHAR  WpaIe	 = IE_WPA;
+UCHAR  Wpa2Ie	 = IE_WPA2;
+UCHAR  IbssIe	 = IE_IBSS_PARM;
+UCHAR  Ccx2Ie	 = IE_CCX_V2;
+UCHAR  WapiIe	 = IE_WAPI;
+
+extern UCHAR	WPA_OUI[];
+
+UCHAR	SES_OUI[] = {0x00, 0x90, 0x4c};
+
+UCHAR	ZeroSsid[32] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
+
+
+#ifdef INF_AMAZON_SE	
+UINT16 MaxBulkOutsSizeLimit[5][4] =
+{
+	// Priority high -> low
+	{ 24576, 2048, 2048, 2048 },	// 0 AC	
+	{ 24576, 2048, 2048, 2048 },	// 1 AC	 
+	{ 24576, 2048, 2048, 2048 }, 	// 2 ACs
+	{ 24576, 6144, 2048, 2048 }, 	// 3 ACs
+	{ 24576, 6144, 4096, 2048 }		// 4 ACs
+};
+
+VOID SoftwareFlowControl(
+	IN PRTMP_ADAPTER pAd) 
+{
+
+		BOOLEAN ResetBulkOutSize=FALSE;
+		UCHAR i=0,RunningQueueNo=0,QueIdx=0,HighWorkingAcCount=0;
+		UINT PacketsInQueueSize=0;
+		UCHAR Priority[]={1,0,2,3};
+		
+		for (i=0;i<NUM_OF_TX_RING;i++)
+		{
+
+			if (pAd->TxContext[i].CurWritePosition>=pAd->TxContext[i].NextBulkOutPosition)
+			{
+				PacketsInQueueSize=pAd->TxContext[i].CurWritePosition-pAd->TxContext[i].NextBulkOutPosition;
+			}
+			else 
+			{
+				PacketsInQueueSize=MAX_TXBULK_SIZE-pAd->TxContext[i].NextBulkOutPosition+pAd->TxContext[i].CurWritePosition;
+			}		
+
+			if (pAd->BulkOutDataSizeCount[i]>20480 || PacketsInQueueSize>6144)
+			{
+				RunningQueueNo++;
+				pAd->BulkOutDataFlag[i]=TRUE;
+			}
+			else
+				pAd->BulkOutDataFlag[i]=FALSE;
+
+			pAd->BulkOutDataSizeCount[i]=0;
+		}
+
+		if (RunningQueueNo>pAd->LastRunningQueueNo)
+		{
+			DBGPRINT(RT_DEBUG_INFO,("SoftwareFlowControl  reset %d > %d \n",RunningQueueNo,pAd->LastRunningQueueNo));
+			
+ResetBulkOutSize=TRUE;
+			 pAd->RunningQueueNoCount=0;
+			 pAd->LastRunningQueueNo=RunningQueueNo;
+		}
+		else if (RunningQueueNo==pAd->LastRunningQueueNo)
+		{
+pAd->RunningQueueNoCount=0;
+		}
+		else if (RunningQueueNo<pAd->LastRunningQueueNo)
+		{
+			DBGPRINT(RT_DEBUG_INFO,("SoftwareFlowControl  reset %d < %d \n",RunningQueueNo,pAd->LastRunningQueueNo));
+			pAd->RunningQueueNoCount++;
+			if (pAd->RunningQueueNoCount>=6)
+			{
+				ResetBulkOutSize=TRUE;
+				pAd->RunningQueueNoCount=0;
+				pAd->LastRunningQueueNo=RunningQueueNo;
+			}
+		}
+
+		if (ResetBulkOutSize==TRUE)
+		{
+			for (QueIdx=0;QueIdx<NUM_OF_TX_RING;QueIdx++)
+			{
+				HighWorkingAcCount=0;
+				for (i=0;i<NUM_OF_TX_RING;i++)
+				{
+					if (QueIdx==i)
+						continue;
+
+					if (pAd->BulkOutDataFlag[i]==TRUE && Priority[i]>Priority[QueIdx])
+							HighWorkingAcCount++;
+					
+				}
+				pAd->BulkOutDataSizeLimit[QueIdx]=MaxBulkOutsSizeLimit[RunningQueueNo][HighWorkingAcCount];
+			}
+
+				DBGPRINT(RT_DEBUG_TRACE, ("Reset bulkout size AC0(BE):%7d AC1(BK):%7d AC2(VI):%7d AC3(VO):%7d %d\n",pAd->BulkOutDataSizeLimit[0]
+				,pAd->BulkOutDataSizeLimit[1]
+				,pAd->BulkOutDataSizeLimit[2]
+				,pAd->BulkOutDataSizeLimit[3]
+				,RunningQueueNo));			
+		}
+
+}
+#endif // INF_AMAZON_SE //
+
+/*
+	==========================================================================
+	Description:
+		initialize the MLME task and its data structure (queue, spinlock, 
+		timer, state machines).
+
+	IRQL = PASSIVE_LEVEL
+
+	Return:
+		always return NDIS_STATUS_SUCCESS
+
+	==========================================================================
+*/
+NDIS_STATUS MlmeInit(
+	IN PRTMP_ADAPTER pAd) 
+{
+	NDIS_STATUS Status = NDIS_STATUS_SUCCESS;
+
+	DBGPRINT(RT_DEBUG_TRACE, ("--> MLME Initialize\n"));
+
+	do 
+	{
+		Status = MlmeQueueInit(&pAd->Mlme.Queue);
+		if(Status != NDIS_STATUS_SUCCESS) 
+			break;
+
+		pAd->Mlme.bRunning = FALSE;
+		NdisAllocateSpinLock(&pAd->Mlme.TaskLock);
+
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		{
+			BssTableInit(&pAd->ScanTab);
+
+			// init STA state machines
+			AssocStateMachineInit(pAd, &pAd->Mlme.AssocMachine, pAd->Mlme.AssocFunc);
+			AuthStateMachineInit(pAd, &pAd->Mlme.AuthMachine, pAd->Mlme.AuthFunc);
+			AuthRspStateMachineInit(pAd, &pAd->Mlme.AuthRspMachine, pAd->Mlme.AuthRspFunc);
+			SyncStateMachineInit(pAd, &pAd->Mlme.SyncMachine, pAd->Mlme.SyncFunc);
+
+#ifdef QOS_DLS_SUPPORT
+			DlsStateMachineInit(pAd, &pAd->Mlme.DlsMachine, pAd->Mlme.DlsFunc);
+#endif // QOS_DLS_SUPPORT //
+
+
+
+
+
+			// Since we are using switch/case to implement it, the init is different from the above 
+			// state machine init
+			MlmeCntlInit(pAd, &pAd->Mlme.CntlMachine, NULL);
+		}
+#endif // CONFIG_STA_SUPPORT //
+		
+
+		WpaStateMachineInit(pAd, &pAd->Mlme.WpaMachine, pAd->Mlme.WpaFunc);
+
+
+		ActionStateMachineInit(pAd, &pAd->Mlme.ActMachine, pAd->Mlme.ActFunc);
+
+		// Init mlme periodic timer
+		RTMPInitTimer(pAd, &pAd->Mlme.PeriodicTimer, GET_TIMER_FUNCTION(MlmePeriodicExec), pAd, TRUE);
+
+		// Set mlme periodic timer
+		RTMPSetTimer(&pAd->Mlme.PeriodicTimer, MLME_TASK_EXEC_INTV);
+
+		// software-based RX Antenna diversity
+		RTMPInitTimer(pAd, &pAd->Mlme.RxAntEvalTimer, GET_TIMER_FUNCTION(AsicRxAntEvalTimeout), pAd, FALSE);
+
+
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		{
+#ifdef PCIE_PS_SUPPORT
+			if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_ADVANCE_POWER_SAVE_PCIE_DEVICE))
+			{
+			    // only PCIe cards need these two timers
+				RTMPInitTimer(pAd, &pAd->Mlme.PsPollTimer, GET_TIMER_FUNCTION(PsPollWakeExec), pAd, FALSE);
+				RTMPInitTimer(pAd, &pAd->Mlme.RadioOnOffTimer, GET_TIMER_FUNCTION(RadioOnExec), pAd, FALSE);
+			}
+#endif // PCIE_PS_SUPPORT //
+
+			RTMPInitTimer(pAd, &pAd->Mlme.LinkDownTimer, GET_TIMER_FUNCTION(LinkDownExec), pAd, FALSE);
+
+		}
+#endif // CONFIG_STA_SUPPORT //
+
+	} while (FALSE);
+
+	DBGPRINT(RT_DEBUG_TRACE, ("<-- MLME Initialize\n"));
+
+	return Status;
+}
+
+/*
+	==========================================================================
+	Description:
+		main loop of the MLME
+	Pre:
+		Mlme has to be initialized, and there are something inside the queue
+	Note:
+		This function is invoked from MPSetInformation and MPReceive;
+		This task guarantee only one MlmeHandler will run. 
+
+	IRQL = DISPATCH_LEVEL
+	
+	==========================================================================
+ */
+VOID MlmeHandler(
+	IN PRTMP_ADAPTER pAd) 
+{
+	MLME_QUEUE_ELEM 	   *Elem = NULL;
+#ifdef APCLI_SUPPORT
+	SHORT apcliIfIndex;
+#endif // APCLI_SUPPORT //
+
+	// Only accept MLME and Frame from peer side, no other (control/data) frame should
+	// get into this state machine
+
+	NdisAcquireSpinLock(&pAd->Mlme.TaskLock);
+	if(pAd->Mlme.bRunning) 
+	{
+		NdisReleaseSpinLock(&pAd->Mlme.TaskLock);
+		return;
+	} 
+	else 
+	{
+		pAd->Mlme.bRunning = TRUE;
+	}
+	NdisReleaseSpinLock(&pAd->Mlme.TaskLock);
+
+	while (!MlmeQueueEmpty(&pAd->Mlme.Queue)) 
+	{
+		if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_MLME_RESET_IN_PROGRESS) ||
+			RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_HALT_IN_PROGRESS) ||
+			RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_NIC_NOT_EXIST))
+		{
+			DBGPRINT(RT_DEBUG_TRACE, ("Device Halted or Removed or MlmeRest, exit MlmeHandler! (queue num = %ld)\n", pAd->Mlme.Queue.Num));
+			break;
+		}
+		
+#ifdef RALINK_ATE			
+		if(ATE_ON(pAd))
+		{
+			DBGPRINT(RT_DEBUG_TRACE, ("The driver is in ATE mode now in MlmeHandler\n"));
+			break;
+		}	
+#endif // RALINK_ATE //
+
+		//From message type, determine which state machine I should drive
+		if (MlmeDequeue(&pAd->Mlme.Queue, &Elem)) 
+		{
+
+			// if dequeue success
+			switch (Elem->Machine) 
+			{
+				// STA state machines
+#ifdef CONFIG_STA_SUPPORT
+				case ASSOC_STATE_MACHINE:
+					StateMachinePerformAction(pAd, &pAd->Mlme.AssocMachine,
+										Elem, pAd->Mlme.AssocMachine.CurrState);
+					break;
+
+				case AUTH_STATE_MACHINE:
+					StateMachinePerformAction(pAd, &pAd->Mlme.AuthMachine,
+										Elem, pAd->Mlme.AuthMachine.CurrState);
+					break;
+
+				case AUTH_RSP_STATE_MACHINE:
+					StateMachinePerformAction(pAd, &pAd->Mlme.AuthRspMachine,
+										Elem, pAd->Mlme.AuthRspMachine.CurrState);
+					break;
+
+				case SYNC_STATE_MACHINE:
+					StateMachinePerformAction(pAd, &pAd->Mlme.SyncMachine,
+										Elem, pAd->Mlme.SyncMachine.CurrState);
+					break;
+
+				case MLME_CNTL_STATE_MACHINE:
+					MlmeCntlMachinePerformAction(pAd, &pAd->Mlme.CntlMachine, Elem);
+					break;
+
+				case WPA_PSK_STATE_MACHINE:
+					StateMachinePerformAction(pAd, &pAd->Mlme.WpaPskMachine,
+										Elem, pAd->Mlme.WpaPskMachine.CurrState);
+					break;	
+
+#ifdef QOS_DLS_SUPPORT
+				case DLS_STATE_MACHINE:
+					StateMachinePerformAction(pAd, &pAd->Mlme.DlsMachine,
+										Elem, pAd->Mlme.DlsMachine.CurrState);
+					break;
+#endif // QOS_DLS_SUPPORT //
+
+
+
+
+#endif // CONFIG_STA_SUPPORT //						
+
+				case ACTION_STATE_MACHINE:
+					StateMachinePerformAction(pAd, &pAd->Mlme.ActMachine,
+										Elem, pAd->Mlme.ActMachine.CurrState);
+					break;	
+
+				case WPA_STATE_MACHINE:
+					StateMachinePerformAction(pAd, &pAd->Mlme.WpaMachine, Elem, pAd->Mlme.WpaMachine.CurrState);
+					break;
+
+
+				default:
+					DBGPRINT(RT_DEBUG_TRACE, ("ERROR: Illegal machine %ld in MlmeHandler()\n", Elem->Machine));
+					break;
+			} // end of switch
+
+			// free MLME element
+			Elem->Occupied = FALSE;
+			Elem->MsgLen = 0;
+
+		}
+		else {
+			DBGPRINT_ERR(("MlmeHandler: MlmeQueue empty\n"));
+		}
+	}
+
+	NdisAcquireSpinLock(&pAd->Mlme.TaskLock);
+	pAd->Mlme.bRunning = FALSE;
+	NdisReleaseSpinLock(&pAd->Mlme.TaskLock);
+}
+
+/*
+	==========================================================================
+	Description:
+		Destructor of MLME (Destroy queue, state machine, spin lock and timer)
+	Parameters:
+		Adapter - NIC Adapter pointer
+	Post:
+		The MLME task will no longer work properly
+
+	IRQL = PASSIVE_LEVEL
+
+	==========================================================================
+ */
+VOID MlmeHalt(
+	IN PRTMP_ADAPTER pAd) 
+{
+	BOOLEAN 	  Cancelled;
+
+	DBGPRINT(RT_DEBUG_TRACE, ("==> MlmeHalt\n"));
+
+	if (!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_NIC_NOT_EXIST))
+	{
+		// disable BEACON generation and other BEACON related hardware timers
+		AsicDisableSync(pAd);
+	}
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+#ifdef QOS_DLS_SUPPORT
+		UCHAR		i;
+#endif // QOS_DLS_SUPPORT //
+
+		// Cancel pending timers
+		RTMPCancelTimer(&pAd->MlmeAux.AssocTimer,		&Cancelled);
+		RTMPCancelTimer(&pAd->MlmeAux.ReassocTimer,		&Cancelled);
+		RTMPCancelTimer(&pAd->MlmeAux.DisassocTimer,	&Cancelled);
+		RTMPCancelTimer(&pAd->MlmeAux.AuthTimer,		&Cancelled);
+		RTMPCancelTimer(&pAd->MlmeAux.BeaconTimer,		&Cancelled);
+		RTMPCancelTimer(&pAd->MlmeAux.ScanTimer,		&Cancelled);
+
+
+#ifdef PCIE_PS_SUPPORT
+	    if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_ADVANCE_POWER_SAVE_PCIE_DEVICE)
+			&&(pAd->StaCfg.PSControl.field.EnableNewPS == TRUE))
+	    {
+	   	    RTMPCancelTimer(&pAd->Mlme.PsPollTimer,		&Cancelled);
+		    RTMPCancelTimer(&pAd->Mlme.RadioOnOffTimer,		&Cancelled);
+		}
+#endif // PCIE_PS_SUPPORT //
+
+#ifdef QOS_DLS_SUPPORT
+		for (i=0; i<MAX_NUM_OF_DLS_ENTRY; i++)
+		{
+			RTMPCancelTimer(&pAd->StaCfg.DLSEntry[i].Timer, &Cancelled);
+		}
+#endif // QOS_DLS_SUPPORT //
+		RTMPCancelTimer(&pAd->Mlme.LinkDownTimer,		&Cancelled);
+
+
+
+	}
+#endif // CONFIG_STA_SUPPORT //
+
+	RTMPCancelTimer(&pAd->Mlme.PeriodicTimer,		&Cancelled);
+	RTMPCancelTimer(&pAd->Mlme.RxAntEvalTimer,		&Cancelled);
+
+
+
+	if (!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_NIC_NOT_EXIST))
+	{
+		RTMP_CHIP_OP *pChipOps = &pAd->chipOps;
+		
+		// Set LED
+		RTMPSetLED(pAd, LED_HALT);
+		RTMPSetSignalLED(pAd, -100);	// Force signal strength Led to be turned off, firmware is not done it.
+
+		if (pChipOps->AsicHaltAction)
+			pChipOps->AsicHaltAction(pAd);
+	}
+
+	RTMPusecDelay(5000);    //  5 msec to gurantee Ant Diversity timer canceled
+
+	MlmeQueueDestroy(&pAd->Mlme.Queue);
+	NdisFreeSpinLock(&pAd->Mlme.TaskLock);
+
+	DBGPRINT(RT_DEBUG_TRACE, ("<== MlmeHalt\n"));
+}
+
+VOID MlmeResetRalinkCounters(
+	IN  PRTMP_ADAPTER   pAd)
+{
+	pAd->RalinkCounters.LastOneSecRxOkDataCnt = pAd->RalinkCounters.OneSecRxOkDataCnt;
+
+
+	/* for performace enchanement */
+	NdisZeroMemory(&pAd->RalinkCounters,
+					(UINT32)&pAd->RalinkCounters.OneSecEnd -
+					(UINT32)&pAd->RalinkCounters.OneSecStart);
+
+	return;
+}
+
+
+/*
+	==========================================================================
+	Description:
+		This routine is executed periodically to -
+		1. Decide if it's a right time to turn on PwrMgmt bit of all 
+		   outgoiing frames
+		2. Calculate ChannelQuality based on statistics of the last
+		   period, so that TX rate won't toggling very frequently between a 
+		   successful TX and a failed TX.
+		3. If the calculated ChannelQuality indicated current connection not 
+		   healthy, then a ROAMing attempt is tried here.
+
+	IRQL = DISPATCH_LEVEL
+
+	==========================================================================
+ */
+#define ADHOC_BEACON_LOST_TIME		(8*OS_HZ)  // 8 sec
+VOID MlmePeriodicExec(
+	IN PVOID SystemSpecific1, 
+	IN PVOID FunctionContext, 
+	IN PVOID SystemSpecific2, 
+	IN PVOID SystemSpecific3) 
+{
+	ULONG			TxTotalCnt;
+	PRTMP_ADAPTER	pAd = (RTMP_ADAPTER *)FunctionContext;
+
+#ifdef INF_AMAZON_SE
+	SoftwareFlowControl(pAd);
+#endif // INF_AMAZON_SE //
+
+#ifdef CONFIG_STA_SUPPORT
+#ifdef RTMP_MAC_PCI
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+	    // If Hardware controlled Radio enabled, we have to check GPIO pin2 every 2 second.
+		// Move code to here, because following code will return when radio is off
+		if ((pAd->Mlme.PeriodicRound % (MLME_TASK_EXEC_MULTIPLE * 2) == 0) && (pAd->StaCfg.bHardwareRadio == TRUE) &&
+			(!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_NIC_NOT_EXIST)) &&
+			(!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_HALT_IN_PROGRESS)) 
+			/*&&(pAd->bPCIclkOff == FALSE)*/)
+		{
+			UINT32				data = 0;
+
+			// Read GPIO pin2 as Hardware controlled radio state
+//#ifndef RT3090
+			//RTMP_IO_READ32(pAd, GPIO_CTRL_CFG, &data);
+//#endif // RT3090 //
+//KH(PCIE PS):Added based on Jane<--
+#ifdef PCIE_PS_SUPPORT
+// Read GPIO pin2 as Hardware controlled radio state
+// We need to Read GPIO if HW said so no mater what advance power saving
+if ((pAd->OpMode == OPMODE_STA) && (IDLE_ON(pAd))
+	&& (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_IDLE_RADIO_OFF))
+	&& (pAd->StaCfg.PSControl.field.EnablePSinIdle == TRUE))
+	{
+	// Want to make sure device goes to L0 state before reading register.
+	RTMPPCIeLinkCtrlValueRestore(pAd, 0);
+	RTMP_IO_FORCE_READ32(pAd, GPIO_CTRL_CFG, &data);
+	RTMPPCIeLinkCtrlSetting(pAd, 3);
+	}
+else
+	RTMP_IO_FORCE_READ32(pAd, GPIO_CTRL_CFG, &data);
+#else
+			RTMP_IO_READ32(pAd, GPIO_CTRL_CFG, &data);
+#endif // defined(RT3090) || defined(RT3592) || defined(RT3390) //
+//KH(PCIE PS):Added based on Jane-->
+
+			if (data & 0x04)
+			{
+				pAd->StaCfg.bHwRadio = TRUE;
+			}
+			else
+			{
+				pAd->StaCfg.bHwRadio = FALSE;
+			}
+			if (pAd->StaCfg.bRadio != (pAd->StaCfg.bHwRadio && pAd->StaCfg.bSwRadio))
+			{
+				pAd->StaCfg.bRadio = (pAd->StaCfg.bHwRadio && pAd->StaCfg.bSwRadio);
+				if (pAd->StaCfg.bRadio == TRUE)
+				{
+					MlmeRadioOn(pAd);
+					// Update extra information
+					pAd->ExtraInfo = EXTRA_INFO_CLEAR;
+				}
+				else
+				{			    
+					MlmeRadioOff(pAd);
+					// Update extra information
+					pAd->ExtraInfo = HW_RADIO_OFF;
+				}
+			}		
+		}
+	}
+#endif // RTMP_MAC_PCI //
+#endif // CONFIG_STA_SUPPORT //
+
+	// Do nothing if the driver is starting halt state.
+	// This might happen when timer already been fired before cancel timer with mlmehalt
+	if ((RTMP_TEST_FLAG(pAd, (fRTMP_ADAPTER_HALT_IN_PROGRESS |
+								fRTMP_ADAPTER_RADIO_OFF |
+								fRTMP_ADAPTER_RADIO_MEASUREMENT |
+								fRTMP_ADAPTER_RESET_IN_PROGRESS |
+								fRTMP_ADAPTER_NIC_NOT_EXIST))))
+		return;
+	
+	RTMP_MLME_PRE_SANITY_CHECK(pAd);
+
+#ifdef RALINK_ATE
+	/* Do not show RSSI until "Normal 1 second Mlme PeriodicExec". */
+	if (ATE_ON(pAd))
+	{
+		if (pAd->Mlme.PeriodicRound % MLME_TASK_EXEC_MULTIPLE != (MLME_TASK_EXEC_MULTIPLE - 1))
+	{
+			pAd->Mlme.PeriodicRound ++;
+			return;
+		}
+	}
+#endif // RALINK_ATE //
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+		// Do nothing if monitor mode is on
+		if (MONITOR_ON(pAd))
+			return;
+
+		if (pAd->Mlme.PeriodicRound & 0x1)
+		{
+			// This is the fix for wifi 11n extension channel overlapping test case.  for 2860D
+			if (((pAd->MACVersion & 0xffff) == 0x0101) && 
+				(STA_TGN_WIFI_ON(pAd)) &&
+				(pAd->CommonCfg.IOTestParm.bToggle == FALSE))
+
+				{
+					RTMP_IO_WRITE32(pAd, TXOP_CTRL_CFG, 0x24Bf);
+					pAd->CommonCfg.IOTestParm.bToggle = TRUE;
+				}
+				else if ((STA_TGN_WIFI_ON(pAd)) &&
+						((pAd->MACVersion & 0xffff) == 0x0101))
+				{
+					RTMP_IO_WRITE32(pAd, TXOP_CTRL_CFG, 0x243f);
+					pAd->CommonCfg.IOTestParm.bToggle = FALSE;
+				}
+		}
+	}
+#endif // CONFIG_STA_SUPPORT //
+
+	pAd->bUpdateBcnCntDone = FALSE;
+	
+//	RECBATimerTimeout(SystemSpecific1,FunctionContext,SystemSpecific2,SystemSpecific3);
+	pAd->Mlme.PeriodicRound ++;
+
+
+	// execute every 500ms 
+	if ((pAd->Mlme.PeriodicRound % 5 == 0) && RTMPAutoRateSwitchCheck(pAd)/*(OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_TX_RATE_SWITCH_ENABLED))*/)
+	{
+#ifdef CONFIG_STA_SUPPORT
+		// perform dynamic tx rate switching based on past TX history
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		{
+			if ((OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED)
+					)
+				&& (!OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_DOZE)))
+				MlmeDynamicTxRateSwitching(pAd);
+		}
+#endif // CONFIG_STA_SUPPORT //
+	}
+
+	// Normal 1 second Mlme PeriodicExec.
+	if (pAd->Mlme.PeriodicRound %MLME_TASK_EXEC_MULTIPLE == 0)
+	{
+                pAd->Mlme.OneSecPeriodicRound ++;
+
+#ifdef RALINK_ATE
+    	if (ATE_ON(pAd))
+    	{
+			/* request from Baron : move this routine from later to here */
+			/* for showing Rx error count in ATE RXFRAME */
+            NICUpdateRawCounters(pAd);
+			if (pAd->ate.bRxFER == 1)
+			{
+				pAd->ate.RxTotalCnt += pAd->ate.RxCntPerSec;
+			    ate_print(KERN_EMERG "MlmePeriodicExec: Rx packet cnt = %d/%d\n", pAd->ate.RxCntPerSec, pAd->ate.RxTotalCnt);
+				pAd->ate.RxCntPerSec = 0;
+
+				if (pAd->ate.RxAntennaSel == 0)
+					ate_print(KERN_EMERG "MlmePeriodicExec: Rx AvgRssi0=%d, AvgRssi1=%d, AvgRssi2=%d\n\n",
+						pAd->ate.AvgRssi0, pAd->ate.AvgRssi1, pAd->ate.AvgRssi2);
+				else
+					ate_print(KERN_EMERG "MlmePeriodicExec: Rx AvgRssi=%d\n\n", pAd->ate.AvgRssi0);
+			}
+			MlmeResetRalinkCounters(pAd);
+			return;
+    	}
+#endif // RALINK_ATE //
+
+
+
+		//ORIBATimerTimeout(pAd);
+		
+		// Media status changed, report to NDIS
+		if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_MEDIA_STATE_CHANGE)) 
+		{
+			RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_MEDIA_STATE_CHANGE);
+			if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED))
+			{
+				pAd->IndicateMediaState = NdisMediaStateConnected;
+				RTMP_IndicateMediaState(pAd);
+			}
+			else
+			{
+				pAd->IndicateMediaState = NdisMediaStateDisconnected;
+				RTMP_IndicateMediaState(pAd);
+			}
+		}
+
+		NdisGetSystemUpTime(&pAd->Mlme.Now32);
+
+		// add the most up-to-date h/w raw counters into software variable, so that
+		// the dynamic tuning mechanism below are based on most up-to-date information
+		/* Hint: throughput impact is very serious in the function */
+		NICUpdateRawCounters(pAd);																										
+
+
+#ifdef DOT11_N_SUPPORT
+   		// Need statistics after read counter. So put after NICUpdateRawCounters
+		ORIBATimerTimeout(pAd);
+#endif // DOT11_N_SUPPORT //
+
+		// if MGMT RING is full more than twice within 1 second, we consider there's
+		// a hardware problem stucking the TX path. In this case, try a hardware reset
+		// to recover the system
+	//	if (pAd->RalinkCounters.MgmtRingFullCount >= 2)
+	//		RTMP_SET_FLAG(pAd, fRTMP_ADAPTER_HARDWARE_ERROR);
+	//	else
+	//		pAd->RalinkCounters.MgmtRingFullCount = 0;
+
+		// The time period for checking antenna is according to traffic
+		{
+			if (pAd->Mlme.bEnableAutoAntennaCheck)
+			{
+				TxTotalCnt = pAd->RalinkCounters.OneSecTxNoRetryOkCount + 
+								 pAd->RalinkCounters.OneSecTxRetryOkCount + 
+								 pAd->RalinkCounters.OneSecTxFailCount;
+				
+				// dynamic adjust antenna evaluation period according to the traffic
+				if (TxTotalCnt > 50)
+				{
+					if (pAd->Mlme.OneSecPeriodicRound % 10 == 0)
+					{
+						AsicEvaluateRxAnt(pAd);
+					}
+				}
+				else
+				{
+					if (pAd->Mlme.OneSecPeriodicRound % 3 == 0)
+					{
+						AsicEvaluateRxAnt(pAd);
+					}
+				}
+			}
+		}
+
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+			STAMlmePeriodicExec(pAd);
+#endif // CONFIG_STA_SUPPORT //
+
+		MlmeResetRalinkCounters(pAd);
+
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		{
+#ifdef RTMP_MAC_PCI		
+			if (!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_NIC_NOT_EXIST) && (pAd->bPCIclkOff == FALSE))
+#endif // RTMP_MAC_PCI //
+			{
+
+
+			UINT32	MacReg = 0;
+			
+			RTMP_IO_READ32(pAd, 0x10F4, &MacReg);
+			if (((MacReg & 0x20000000) && (MacReg & 0x80)) || ((MacReg & 0x20000000) && (MacReg & 0x20)))
+			{
+				RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, 0x1);
+				RTMPusecDelay(1);
+				RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, 0xC);
+
+				DBGPRINT(RT_DEBUG_WARN,("Warning, MAC specific condition occurs \n"));
+			}
+		}
+		}
+#endif // CONFIG_STA_SUPPORT //
+
+		RTMP_MLME_HANDLER(pAd);
+	}
+
+
+	pAd->bUpdateBcnCntDone = FALSE;
+}
+
+
+/*
+	==========================================================================
+	Validate SSID for connection try and rescan purpose
+	Valid SSID will have visible chars only.
+	The valid length is from 0 to 32.
+	IRQL = DISPATCH_LEVEL
+	==========================================================================
+ */
+BOOLEAN MlmeValidateSSID(
+	IN PUCHAR	pSsid,
+	IN UCHAR	SsidLen)
+{
+	int	index;
+
+	if (SsidLen > MAX_LEN_OF_SSID)
+		return (FALSE);
+
+	// Check each character value
+	for (index = 0; index < SsidLen; index++)
+	{
+		if (pSsid[index] < 0x20)
+			return (FALSE);
+	}
+
+	// All checked
+	return (TRUE);
+}
+
+VOID MlmeSelectTxRateTable(
+	IN PRTMP_ADAPTER		pAd,
+	IN PMAC_TABLE_ENTRY		pEntry,
+	IN PUCHAR				*ppTable,
+	IN PUCHAR				pTableSize,
+	IN PUCHAR				pInitTxRateIdx)
+{
+
+	do
+	{
+		// decide the rate table for tuning
+		if (pAd->CommonCfg.TxRateTableSize > 0)
+		{
+			*ppTable = RateSwitchTable;
+			*pTableSize = RateSwitchTable[0];
+			*pInitTxRateIdx = RateSwitchTable[1];
+
+			break;
+		}
+
+#ifdef CONFIG_STA_SUPPORT
+		if ((pAd->OpMode == OPMODE_STA) && ADHOC_ON(pAd))
+		{
+#ifdef DOT11_N_SUPPORT
+			if ((pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED) && 
+				(pEntry->HTCapability.MCSSet[0] == 0xff) && 
+				((pEntry->HTCapability.MCSSet[1] == 0x00) || (pAd->Antenna.field.TxPath == 1)))
+			{// 11N 1S Adhoc
+				*ppTable = RateSwitchTable11N1S;
+				*pTableSize = RateSwitchTable11N1S[0];
+				*pInitTxRateIdx = RateSwitchTable11N1S[1];
+				
+			}
+			else if ((pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED) && 
+					(pEntry->HTCapability.MCSSet[0] == 0xff) && 
+					(pEntry->HTCapability.MCSSet[1] == 0xff) &&
+					(pAd->Antenna.field.TxPath == 2))
+			{// 11N 2S Adhoc
+				if (pAd->LatchRfRegs.Channel <= 14)
+				{
+					*ppTable = RateSwitchTable11N2S;
+					*pTableSize = RateSwitchTable11N2S[0];
+					*pInitTxRateIdx = RateSwitchTable11N2S[1];
+				}
+				else
+				{
+					*ppTable = RateSwitchTable11N2SForABand;
+					*pTableSize = RateSwitchTable11N2SForABand[0];
+					*pInitTxRateIdx = RateSwitchTable11N2SForABand[1];
+				}
+				
+			}
+			else
+#endif // DOT11_N_SUPPORT //				
+				if ((pEntry->RateLen == 4)
+#ifdef DOT11_N_SUPPORT
+					&& (pEntry->HTCapability.MCSSet[0] == 0) && (pEntry->HTCapability.MCSSet[1] == 0)
+#endif // DOT11_N_SUPPORT //
+					)
+			{
+				*ppTable = RateSwitchTable11B;
+				*pTableSize = RateSwitchTable11B[0];
+				*pInitTxRateIdx = RateSwitchTable11B[1];
+				
+			}
+			else if (pAd->LatchRfRegs.Channel <= 14)
+			{
+				*ppTable = RateSwitchTable11BG;
+				*pTableSize = RateSwitchTable11BG[0];
+				*pInitTxRateIdx = RateSwitchTable11BG[1];
+				
+			}
+			else
+			{
+				*ppTable = RateSwitchTable11G;
+				*pTableSize = RateSwitchTable11G[0];
+				*pInitTxRateIdx = RateSwitchTable11G[1];
+				
+			}
+			break;
+		}
+#endif // CONFIG_STA_SUPPORT //
+
+#ifdef DOT11_N_SUPPORT
+		//if ((pAd->StaActive.SupRateLen + pAd->StaActive.ExtRateLen == 12) && (pAd->StaActive.SupportedPhyInfo.MCSSet[0] == 0xff) &&
+		//	((pAd->StaActive.SupportedPhyInfo.MCSSet[1] == 0x00) || (pAd->Antenna.field.TxPath == 1)))
+		if (((pEntry->RateLen == 12) || (pAd->OpMode == OPMODE_STA)) && (pEntry->HTCapability.MCSSet[0] == 0xff) &&
+			((pEntry->HTCapability.MCSSet[1] == 0x00) || (pAd->CommonCfg.TxStream == 1)))
+		{// 11BGN 1S AP
+			*ppTable = RateSwitchTable11BGN1S;
+			*pTableSize = RateSwitchTable11BGN1S[0];
+			*pInitTxRateIdx = RateSwitchTable11BGN1S[1];
+			
+			break;
+		}
+
+		//else if ((pAd->StaActive.SupRateLen + pAd->StaActive.ExtRateLen == 12) && (pAd->StaActive.SupportedPhyInfo.MCSSet[0] == 0xff) &&
+		//	(pAd->StaActive.SupportedPhyInfo.MCSSet[1] == 0xff) && (pAd->Antenna.field.TxPath == 2))
+		if (((pEntry->RateLen == 12) || (pAd->OpMode == OPMODE_STA)) && (pEntry->HTCapability.MCSSet[0] == 0xff) &&
+			(pEntry->HTCapability.MCSSet[1] == 0xff) && (pAd->CommonCfg.TxStream == 2))
+		{// 11BGN 2S AP
+			if (pAd->LatchRfRegs.Channel <= 14)
+			{
+				*ppTable = RateSwitchTable11BGN2S;
+				*pTableSize = RateSwitchTable11BGN2S[0];
+				*pInitTxRateIdx = RateSwitchTable11BGN2S[1];
+				
+			}
+			else
+			{
+				*ppTable = RateSwitchTable11BGN2SForABand;
+				*pTableSize = RateSwitchTable11BGN2SForABand[0];
+				*pInitTxRateIdx = RateSwitchTable11BGN2SForABand[1];
+                		
+			}
+			break;
+		}
+
+
+		//else if ((pAd->StaActive.SupportedPhyInfo.MCSSet[0] == 0xff) && ((pAd->StaActive.SupportedPhyInfo.MCSSet[1] == 0x00) || (pAd->Antenna.field.TxPath == 1)))
+		if ((pEntry->HTCapability.MCSSet[0] == 0xff) && ((pEntry->HTCapability.MCSSet[1] == 0x00) || (pAd->CommonCfg.TxStream == 1)))
+		{// 11N 1S AP
+			*ppTable = RateSwitchTable11N1S;
+			*pTableSize = RateSwitchTable11N1S[0];
+			*pInitTxRateIdx = RateSwitchTable11N1S[1];
+			
+			break;
+		}
+
+		//else if ((pAd->StaActive.SupportedPhyInfo.MCSSet[0] == 0xff) && (pAd->StaActive.SupportedPhyInfo.MCSSet[1] == 0xff) && (pAd->Antenna.field.TxPath == 2))
+		if ((pEntry->HTCapability.MCSSet[0] == 0xff) && (pEntry->HTCapability.MCSSet[1] == 0xff) && (pAd->CommonCfg.TxStream == 2))
+		{// 11N 2S AP
+			if (pAd->LatchRfRegs.Channel <= 14)
+			{
+			*ppTable = RateSwitchTable11N2S;
+			*pTableSize = RateSwitchTable11N2S[0];
+			*pInitTxRateIdx = RateSwitchTable11N2S[1];
+			}
+			else
+			{
+				*ppTable = RateSwitchTable11N2SForABand;
+				*pTableSize = RateSwitchTable11N2SForABand[0];
+				*pInitTxRateIdx = RateSwitchTable11N2SForABand[1];
+			}
+			
+			break;
+		}
+
+
+#endif // DOT11_N_SUPPORT //
+		//else if ((pAd->StaActive.SupRateLen == 4) && (pAd->StaActive.ExtRateLen == 0) && (pAd->StaActive.SupportedPhyInfo.MCSSet[0] == 0) && (pAd->StaActive.SupportedPhyInfo.MCSSet[1] == 0))
+		if ((pEntry->RateLen == 4 || pAd->CommonCfg.PhyMode==PHY_11B) 
+#ifdef DOT11_N_SUPPORT
+		//Iverson mark for Adhoc b mode,sta will use rate 54  Mbps when connect with sta b/g/n mode 
+		/* && (pEntry->HTCapability.MCSSet[0] == 0) && (pEntry->HTCapability.MCSSet[1] == 0)*/
+#endif // DOT11_N_SUPPORT //
+			)
+		{// B only AP
+			*ppTable = RateSwitchTable11B;
+			*pTableSize = RateSwitchTable11B[0];
+			*pInitTxRateIdx = RateSwitchTable11B[1];
+			
+			break;
+		}
+
+		//else if ((pAd->StaActive.SupRateLen + pAd->StaActive.ExtRateLen > 8) && (pAd->StaActive.SupportedPhyInfo.MCSSet[0] == 0) && (pAd->StaActive.SupportedPhyInfo.MCSSet[1] == 0))
+		if ((pEntry->RateLen > 8) 
+#ifdef DOT11_N_SUPPORT
+			&& (pEntry->HTCapability.MCSSet[0] == 0) && (pEntry->HTCapability.MCSSet[1] == 0)
+#endif // DOT11_N_SUPPORT //
+			)
+		{// B/G  mixed AP
+			*ppTable = RateSwitchTable11BG;
+			*pTableSize = RateSwitchTable11BG[0];
+			*pInitTxRateIdx = RateSwitchTable11BG[1];
+			
+			break;
+		}
+
+		//else if ((pAd->StaActive.SupRateLen + pAd->StaActive.ExtRateLen == 8) && (pAd->StaActive.SupportedPhyInfo.MCSSet[0] == 0) && (pAd->StaActive.SupportedPhyInfo.MCSSet[1] == 0))
+		if ((pEntry->RateLen == 8) 
+#ifdef DOT11_N_SUPPORT
+			&& (pEntry->HTCapability.MCSSet[0] == 0) && (pEntry->HTCapability.MCSSet[1] == 0)
+#endif // DOT11_N_SUPPORT //
+			)
+		{// G only AP
+			*ppTable = RateSwitchTable11G;
+			*pTableSize = RateSwitchTable11G[0];
+			*pInitTxRateIdx = RateSwitchTable11G[1];
+			
+			break;
+		}
+#ifdef DOT11_N_SUPPORT
+#endif // DOT11_N_SUPPORT //
+
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		{
+#ifdef DOT11_N_SUPPORT
+			//else if ((pAd->StaActive.SupportedPhyInfo.MCSSet[0] == 0) && (pAd->StaActive.SupportedPhyInfo.MCSSet[1] == 0))
+			if ((pEntry->HTCapability.MCSSet[0] == 0) && (pEntry->HTCapability.MCSSet[1] == 0))
+#endif // DOT11_N_SUPPORT //
+			{	// Legacy mode
+				if (pAd->CommonCfg.MaxTxRate <= RATE_11)
+				{
+					*ppTable = RateSwitchTable11B;
+					*pTableSize = RateSwitchTable11B[0];
+					*pInitTxRateIdx = RateSwitchTable11B[1];
+				}
+				else if ((pAd->CommonCfg.MaxTxRate > RATE_11) && (pAd->CommonCfg.MinTxRate > RATE_11))
+				{
+					*ppTable = RateSwitchTable11G;
+					*pTableSize = RateSwitchTable11G[0];
+					*pInitTxRateIdx = RateSwitchTable11G[1];
+					
+				}
+				else		
+				{
+					*ppTable = RateSwitchTable11BG;
+					*pTableSize = RateSwitchTable11BG[0];
+					*pInitTxRateIdx = RateSwitchTable11BG[1];
+				}
+				break;
+			}
+#ifdef DOT11_N_SUPPORT
+			if (pAd->LatchRfRegs.Channel <= 14)
+			{
+				if (pAd->CommonCfg.TxStream == 1)
+				{
+					*ppTable = RateSwitchTable11N1S;
+					*pTableSize = RateSwitchTable11N1S[0];
+					*pInitTxRateIdx = RateSwitchTable11N1S[1];
+					DBGPRINT_RAW(RT_DEBUG_ERROR,("DRS: unkown mode,default use 11N 1S AP \n"));
+				}
+				else
+				{
+					*ppTable = RateSwitchTable11N2S;
+					*pTableSize = RateSwitchTable11N2S[0];
+					*pInitTxRateIdx = RateSwitchTable11N2S[1];
+				}
+			}
+			else
+			{
+				if (pAd->CommonCfg.TxStream == 1)
+				{
+					*ppTable = RateSwitchTable11N1S;
+					*pTableSize = RateSwitchTable11N1S[0];
+					*pInitTxRateIdx = RateSwitchTable11N1S[1];
+					DBGPRINT_RAW(RT_DEBUG_ERROR,("DRS: unkown mode,default use 11N 1S AP \n"));
+				}
+				else
+				{
+					*ppTable = RateSwitchTable11N2SForABand;
+					*pTableSize = RateSwitchTable11N2SForABand[0];
+					*pInitTxRateIdx = RateSwitchTable11N2SForABand[1];
+				}
+			}
+#endif // DOT11_N_SUPPORT //
+			DBGPRINT_RAW(RT_DEBUG_ERROR,("DRS: unkown mode (SupRateLen=%d, ExtRateLen=%d, MCSSet[0]=0x%x, MCSSet[1]=0x%x)\n",
+				pAd->StaActive.SupRateLen, pAd->StaActive.ExtRateLen, pAd->StaActive.SupportedPhyInfo.MCSSet[0], pAd->StaActive.SupportedPhyInfo.MCSSet[1]));
+		}
+#endif // CONFIG_STA_SUPPORT //
+	} while(FALSE);
+
+}
+
+
+#ifdef CONFIG_STA_SUPPORT
+VOID STAMlmePeriodicExec(
+	PRTMP_ADAPTER pAd)
+{
+	ULONG			    TxTotalCnt;
+	int 	i;
+
+
+	/*
+		We return here in ATE mode, because the statistics 
+		that ATE need are not collected via this routine.
+	*/
+#ifdef RALINK_ATE
+	if (ATE_ON(pAd))
+	return;
+#endif // RALINK_ATE //
+
+#ifdef WPA_SUPPLICANT_SUPPORT
+    if (pAd->StaCfg.WpaSupplicantUP == WPA_SUPPLICANT_DISABLE)    
+#endif // WPA_SUPPLICANT_SUPPORT //        
+    {
+    	// WPA MIC error should block association attempt for 60 seconds
+		if (pAd->StaCfg.bBlockAssoc && 
+			RTMP_TIME_AFTER(pAd->Mlme.Now32, pAd->StaCfg.LastMicErrorTime + (60*OS_HZ)))
+    		pAd->StaCfg.bBlockAssoc = FALSE;
+    }
+
+    if (pAd->PreMediaState != pAd->IndicateMediaState)
+	{
+		if (pAd->IndicateMediaState == NdisMediaStateConnected)
+		{
+			RTMPSendWirelessEvent(pAd, IW_STA_LINKUP_EVENT_FLAG, NULL, BSS0, 0); 
+		}
+		pAd->PreMediaState = pAd->IndicateMediaState;  
+	}
+
+
+	
+
+	if (ADHOC_ON(pAd))
+	{
+	}
+	else
+	{
+    	AsicStaBbpTuning(pAd);
+	}
+	
+	TxTotalCnt = pAd->RalinkCounters.OneSecTxNoRetryOkCount + 
+					 pAd->RalinkCounters.OneSecTxRetryOkCount + 
+					 pAd->RalinkCounters.OneSecTxFailCount;
+
+	if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED))
+	{
+		// update channel quality for Roaming and UI LinkQuality display
+		MlmeCalculateChannelQuality(pAd, NULL, pAd->Mlme.Now32);
+	}
+
+	// must be AFTER MlmeDynamicTxRateSwitching() because it needs to know if
+	// Radio is currently in noisy environment
+	if (!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS)) 
+		AsicAdjustTxPower(pAd);
+
+	/*
+		Driver needs to up date value of LastOneSecTotalTxCount here;
+		otherwise UI couldn't do scanning sometimes when STA doesn't connect to AP or peer Ad-Hoc.
+	*/
+	pAd->RalinkCounters.LastOneSecTotalTxCount = TxTotalCnt;
+	
+	if (INFRA_ON(pAd))
+	{
+#ifdef QOS_DLS_SUPPORT
+		// Check DLS time out, then tear down those session
+		RTMPCheckDLSTimeOut(pAd);
+#endif // QOS_DLS_SUPPORT //
+
+
+		// Is PSM bit consistent with user power management policy?
+		// This is the only place that will set PSM bit ON.
+		if (!OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_DOZE))
+		MlmeCheckPsmChange(pAd, pAd->Mlme.Now32);
+
+		/*
+			When we are connected and do the scan progress, it's very possible we cannot receive
+			the beacon of the AP. So, here we simulate that we received the beacon.
+		*/
+		if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS) &&
+			(RTMP_TIME_AFTER(pAd->Mlme.Now32, pAd->StaCfg.LastBeaconRxTime + (1*OS_HZ))))
+		{
+			ULONG BPtoJiffies;
+			LONG timeDiff;
+
+			BPtoJiffies = (((pAd->CommonCfg.BeaconPeriod * 1024 / 1000) * OS_HZ) / 1000);
+			timeDiff = (pAd->Mlme.Now32 - pAd->StaCfg.LastBeaconRxTime) / BPtoJiffies;
+			if (timeDiff > 0) 
+				pAd->StaCfg.LastBeaconRxTime += (timeDiff * BPtoJiffies);
+
+			if (RTMP_TIME_AFTER(pAd->StaCfg.LastBeaconRxTime, pAd->Mlme.Now32))
+			{
+				DBGPRINT(RT_DEBUG_TRACE, ("MMCHK - BeaconRxTime adjust wrong(BeaconRx=0x%lx, Now=0x%lx)\n", 
+								pAd->StaCfg.LastBeaconRxTime, pAd->Mlme.Now32));
+			}
+		}
+		
+		if ((RTMP_TIME_AFTER(pAd->Mlme.Now32, pAd->StaCfg.LastBeaconRxTime + (1*OS_HZ))) &&
+			(!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS)) &&
+			(((TxTotalCnt + pAd->RalinkCounters.OneSecRxOkCnt) < 600)))
+		{
+			RTMPSetAGCInitValue(pAd, BW_20);
+			DBGPRINT(RT_DEBUG_TRACE, ("MMCHK - No BEACON. restore R66 to the low bound(%d) \n", (0x2E + GET_LNA_GAIN(pAd))));
+		}
+
+        //if ((pAd->RalinkCounters.OneSecTxNoRetryOkCount == 0) &&
+        //    (pAd->RalinkCounters.OneSecTxRetryOkCount == 0))
+       if ((!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS)))
+        {
+    		if (pAd->CommonCfg.bAPSDCapable && pAd->CommonCfg.APEdcaParm.bAPSDCapable)
+    		{
+    		    // When APSD is enabled, the period changes as 20 sec
+    			if ((pAd->Mlme.OneSecPeriodicRound % 20) == 8)
+    			{
+    				RTMPSendNullFrame(pAd, pAd->CommonCfg.TxRate, TRUE);
+    			}
+    		}
+    		else
+    		{
+    		    // Send out a NULL frame every 10 sec to inform AP that STA is still alive (Avoid being age out)
+    			if ((pAd->Mlme.OneSecPeriodicRound % 10) == 8)
+			{
+				RTMPSendNullFrame(pAd, pAd->CommonCfg.TxRate, pAd->CommonCfg.bWmmCapable);
+			}
+    		}
+        }
+
+		if (CQI_IS_DEAD(pAd->Mlme.ChannelQuality))
+			{
+			DBGPRINT(RT_DEBUG_TRACE, ("MMCHK - No BEACON. Dead CQI. Auto Recovery attempt #%ld\n", pAd->RalinkCounters.BadCQIAutoRecoveryCount));
+
+#ifdef WPA_SUPPLICANT_SUPPORT
+			if ((pAd->StaCfg.WpaSupplicantUP != WPA_SUPPLICANT_DISABLE) &&
+				(pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2))
+				pAd->StaCfg.bLostAp = TRUE;
+#endif // WPA_SUPPLICANT_SUPPORT //
+
+			pAd->MlmeAux.CurrReqIsFromNdis = FALSE;
+			// Lost AP, send disconnect & link down event
+			LinkDown(pAd, FALSE);
+			
+
+#ifdef WPA_SUPPLICANT_SUPPORT
+#ifndef NATIVE_WPA_SUPPLICANT_SUPPORT
+			//send disassociate event to wpa_supplicant
+			if (pAd->StaCfg.WpaSupplicantUP) 
+			{
+				RtmpOSWrielessEventSend(pAd, IWEVCUSTOM, RT_DISASSOC_EVENT_FLAG, NULL, NULL, 0);
+			} 
+#endif // NATIVE_WPA_SUPPLICANT_SUPPORT //
+#endif // WPA_SUPPLICANT_SUPPORT //
+			
+#ifdef NATIVE_WPA_SUPPLICANT_SUPPORT
+		RtmpOSWrielessEventSend(pAd, SIOCGIWAP, -1, NULL, NULL, 0);
+#endif // NATIVE_WPA_SUPPLICANT_SUPPORT //        
+			
+			// RTMPPatchMacBbpBug(pAd);
+			MlmeAutoReconnectLastSSID(pAd);
+		}
+		else if (CQI_IS_BAD(pAd->Mlme.ChannelQuality))
+		{
+			pAd->RalinkCounters.BadCQIAutoRecoveryCount ++;
+			DBGPRINT(RT_DEBUG_TRACE, ("MMCHK - Bad CQI. Auto Recovery attempt #%ld\n", pAd->RalinkCounters.BadCQIAutoRecoveryCount));
+			MlmeAutoReconnectLastSSID(pAd);
+		}
+		
+		if (pAd->StaCfg.bAutoRoaming)
+		{
+			BOOLEAN	rv = FALSE;
+			CHAR	dBmToRoam = pAd->StaCfg.dBmToRoam;
+			CHAR 	MaxRssi = RTMPMaxRssi(pAd, 
+										  pAd->StaCfg.RssiSample.LastRssi0, 
+										  pAd->StaCfg.RssiSample.LastRssi1, 
+										  pAd->StaCfg.RssiSample.LastRssi2);			
+			
+			// Scanning, ignore Roaming
+			if (!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS) &&
+				(pAd->Mlme.SyncMachine.CurrState == SYNC_IDLE) &&
+				(MaxRssi <= dBmToRoam))
+			{
+				DBGPRINT(RT_DEBUG_TRACE, ("Rssi=%d, dBmToRoam=%d\n", MaxRssi, (CHAR)dBmToRoam));
+
+
+				// Add auto seamless roaming
+				if (rv == FALSE)
+					rv = MlmeCheckForFastRoaming(pAd);
+				
+				if (rv == FALSE)
+				{
+					if ((pAd->StaCfg.LastScanTime + 10 * OS_HZ) < pAd->Mlme.Now32)
+					{
+						DBGPRINT(RT_DEBUG_TRACE, ("MMCHK - Roaming, No eligable entry, try new scan!\n"));
+						pAd->StaCfg.ScanCnt = 2;
+						pAd->StaCfg.LastScanTime = pAd->Mlme.Now32;
+						MlmeAutoScan(pAd);
+					}
+				}
+			}
+		}
+	}
+	else if (ADHOC_ON(pAd))
+	{
+
+		// If all peers leave, and this STA becomes the last one in this IBSS, then change MediaState
+		// to DISCONNECTED. But still holding this IBSS (i.e. sending BEACON) so that other STAs can
+		// join later.
+		if ((RTMP_TIME_AFTER(pAd->Mlme.Now32, pAd->StaCfg.LastBeaconRxTime + ADHOC_BEACON_LOST_TIME)
+			|| (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2PSK))
+			&& OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED))
+		{
+
+			for (i = 1; i < MAX_LEN_OF_MAC_TABLE; i++) 
+			{
+				MAC_TABLE_ENTRY *pEntry = &pAd->MacTab.Content[i];
+
+				if (!IS_ENTRY_CLIENT(pEntry))
+					continue;
+
+				if (RTMP_TIME_AFTER(pAd->Mlme.Now32, pEntry->LastBeaconRxTime + ADHOC_BEACON_LOST_TIME))
+                    MlmeDeAuthAction(pAd, pEntry, REASON_DISASSOC_STA_LEAVING, FALSE);
+			}
+
+            if (pAd->MacTab.Size == 0)
+            {			                
+    			OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED);
+    			pAd->IndicateMediaState = NdisMediaStateDisconnected;
+    			RTMP_IndicateMediaState(pAd);
+            }            
+			pAd->StaCfg.LastScanTime = pAd->Mlme.Now32;
+		}
+			
+	}
+	else // no INFRA nor ADHOC connection
+	{
+
+#ifdef WPA_SUPPLICANT_SUPPORT
+		if (pAd->StaCfg.WpaSupplicantUP & 0x80)
+			goto SKIP_AUTO_SCAN_CONN;
+#endif // WPA_SUPPLICANT_SUPPORT //
+
+		if (pAd->StaCfg.bScanReqIsFromWebUI &&
+			RTMP_TIME_BEFORE(pAd->Mlme.Now32, pAd->StaCfg.LastScanTime + (30 * OS_HZ)))
+			goto SKIP_AUTO_SCAN_CONN;
+		else
+			pAd->StaCfg.bScanReqIsFromWebUI = FALSE;
+        
+		if ((pAd->StaCfg.bAutoReconnect == TRUE)
+			&& RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_START_UP)
+			&& (MlmeValidateSSID(pAd->MlmeAux.AutoReconnectSsid, pAd->MlmeAux.AutoReconnectSsidLen) == TRUE))
+		{
+			if ((pAd->ScanTab.BssNr==0) && (pAd->Mlme.CntlMachine.CurrState == CNTL_IDLE))
+			{
+				MLME_SCAN_REQ_STRUCT	   ScanReq;
+
+				if (RTMP_TIME_AFTER(pAd->Mlme.Now32, pAd->StaCfg.LastScanTime + (10 * OS_HZ))
+					||(pAd->StaCfg.bNotFirstScan == FALSE))
+				{
+					DBGPRINT(RT_DEBUG_TRACE, ("STAMlmePeriodicExec():CNTL - ScanTab.BssNr==0, start a new ACTIVE scan SSID[%s]\n", pAd->MlmeAux.AutoReconnectSsid));
+					pAd->StaCfg.bNotFirstScan = TRUE;
+					ScanParmFill(pAd, &ScanReq, (PSTRING) pAd->MlmeAux.AutoReconnectSsid, pAd->MlmeAux.AutoReconnectSsidLen, BSS_ANY, SCAN_ACTIVE);
+					MlmeEnqueue(pAd, SYNC_STATE_MACHINE, MT2_MLME_SCAN_REQ, sizeof(MLME_SCAN_REQ_STRUCT), &ScanReq, 0);
+					pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_OID_LIST_SCAN;
+					// Reset Missed scan number
+					pAd->StaCfg.LastScanTime = pAd->Mlme.Now32;
+				}
+				else if (pAd->StaCfg.BssType == BSS_ADHOC)	// Quit the forever scan when in a very clean room
+					MlmeAutoReconnectLastSSID(pAd);
+			}
+			else if (pAd->Mlme.CntlMachine.CurrState == CNTL_IDLE)
+			{
+#ifdef CARRIER_DETECTION_SUPPORT // Roger sync Carrier
+				if (pAd->CommonCfg.CarrierDetect.Enable == TRUE)
+				{
+					if ((pAd->Mlme.OneSecPeriodicRound % 5) == 1)
+						MlmeAutoReconnectLastSSID(pAd);
+				}
+				else
+#endif // CARRIER_DETECTION_SUPPORT // 
+					MlmeAutoReconnectLastSSID(pAd);
+			}
+		}
+	}
+
+SKIP_AUTO_SCAN_CONN:
+
+#ifdef DOT11_N_SUPPORT
+    if ((pAd->MacTab.Content[BSSID_WCID].TXBAbitmap !=0) && (pAd->MacTab.fAnyBASession == FALSE))
+	{
+		pAd->MacTab.fAnyBASession = TRUE;
+		AsicUpdateProtect(pAd, HT_FORCERTSCTS,  ALLN_SETPROTECT, FALSE, FALSE);
+	}
+	else if ((pAd->MacTab.Content[BSSID_WCID].TXBAbitmap ==0) && (pAd->MacTab.fAnyBASession == TRUE))
+	{
+		pAd->MacTab.fAnyBASession = FALSE;
+		AsicUpdateProtect(pAd, pAd->MlmeAux.AddHtInfo.AddHtInfo2.OperaionMode,  ALLN_SETPROTECT, FALSE, FALSE);
+	}
+#endif // DOT11_N_SUPPORT //
+
+
+#ifdef DOT11_N_SUPPORT
+#ifdef DOT11N_DRAFT3
+	// Perform 20/40 BSS COEX scan every Dot11BssWidthTriggerScanInt	
+	if ((OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_SCAN_2040)) && 
+		(pAd->CommonCfg.Dot11BssWidthTriggerScanInt != 0) && 
+		((pAd->Mlme.OneSecPeriodicRound % pAd->CommonCfg.Dot11BssWidthTriggerScanInt) == (pAd->CommonCfg.Dot11BssWidthTriggerScanInt-1)))
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("MMCHK - LastOneSecTotalTxCount/LastOneSecRxOkDataCnt  = %d/%d \n", 
+								pAd->RalinkCounters.LastOneSecTotalTxCount,
+								pAd->RalinkCounters.LastOneSecRxOkDataCnt));
+		
+		// Check last scan time at least 30 seconds from now. 		
+		// Check traffic is less than about 1.5~2Mbps.
+		// it might cause data lost if we enqueue scanning.
+		// This criteria needs to be considered
+		if ((pAd->RalinkCounters.LastOneSecTotalTxCount < 70) && (pAd->RalinkCounters.LastOneSecRxOkDataCnt < 70)
+			/*&& ((pAd->StaCfg.LastScanTime + 10 * OS_HZ) < pAd->Mlme.Now32) */)		
+		{
+			MLME_SCAN_REQ_STRUCT            ScanReq;
+			// Fill out stuff for scan request and kick to scan
+			ScanParmFill(pAd, &ScanReq, ZeroSsid, 0, BSS_ANY, SCAN_2040_BSS_COEXIST);
+			MlmeEnqueue(pAd, SYNC_STATE_MACHINE, MT2_MLME_SCAN_REQ, sizeof(MLME_SCAN_REQ_STRUCT), &ScanReq, 0);
+			pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_OID_LIST_SCAN;
+			// Set InfoReq = 1, So after scan , alwats sebd 20/40 Coexistence frame to AP
+			pAd->CommonCfg.BSSCoexist2040.field.InfoReq = 1;
+			RTMP_MLME_HANDLER(pAd);
+		}
+
+		DBGPRINT(RT_DEBUG_TRACE, (" LastOneSecTotalTxCount/LastOneSecRxOkDataCnt  = %d/%d \n", 
+							pAd->RalinkCounters.LastOneSecTotalTxCount, 
+							pAd->RalinkCounters.LastOneSecRxOkDataCnt));	
+	}
+#endif // DOT11N_DRAFT3 //
+#endif // DOT11_N_SUPPORT //
+
+	return;
+}
+
+// Link down report
+VOID LinkDownExec(
+	IN PVOID SystemSpecific1, 
+	IN PVOID FunctionContext, 
+	IN PVOID SystemSpecific2, 
+	IN PVOID SystemSpecific3) 
+{
+	RTMP_ADAPTER *pAd = (RTMP_ADAPTER *)FunctionContext;
+
+	if (pAd != NULL)
+	{
+		MLME_DISASSOC_REQ_STRUCT   DisassocReq;
+		
+		if ((pAd->StaCfg.PortSecured == WPA_802_1X_PORT_NOT_SECURED) &&
+			(INFRA_ON(pAd)))
+		{
+			DBGPRINT(RT_DEBUG_TRACE, ("LinkDownExec(): disassociate with current AP...\n"));
+			DisassocParmFill(pAd, &DisassocReq, pAd->CommonCfg.Bssid, REASON_DISASSOC_STA_LEAVING);
+			MlmeEnqueue(pAd, ASSOC_STATE_MACHINE, MT2_MLME_DISASSOC_REQ, 
+						sizeof(MLME_DISASSOC_REQ_STRUCT), &DisassocReq, 0);
+			pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_DISASSOC;
+
+			pAd->IndicateMediaState = NdisMediaStateDisconnected;
+			RTMP_IndicateMediaState(pAd);
+		    pAd->ExtraInfo = GENERAL_LINK_DOWN;
+		}	
+	}
+}
+
+// IRQL = DISPATCH_LEVEL
+VOID MlmeAutoScan(
+	IN PRTMP_ADAPTER pAd)
+{
+	// check CntlMachine.CurrState to avoid collision with NDIS SetOID request
+	if (pAd->Mlme.CntlMachine.CurrState == CNTL_IDLE)
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("MMCHK - Driver auto scan\n"));
+		MlmeEnqueue(pAd, 
+					MLME_CNTL_STATE_MACHINE, 
+					OID_802_11_BSSID_LIST_SCAN, 
+					pAd->MlmeAux.AutoReconnectSsidLen, 
+					pAd->MlmeAux.AutoReconnectSsid, 0);
+		RTMP_MLME_HANDLER(pAd);
+	}
+}
+	
+// IRQL = DISPATCH_LEVEL
+VOID MlmeAutoReconnectLastSSID(
+	IN PRTMP_ADAPTER pAd)
+{
+	if (pAd->StaCfg.bAutoConnectByBssid)
+	{	
+		DBGPRINT(RT_DEBUG_TRACE, ("Driver auto reconnect to last OID_802_11_BSSID setting - %02X:%02X:%02X:%02X:%02X:%02X\n",
+									pAd->MlmeAux.Bssid[0],
+									pAd->MlmeAux.Bssid[1],
+									pAd->MlmeAux.Bssid[2],
+									pAd->MlmeAux.Bssid[3],
+									pAd->MlmeAux.Bssid[4],
+									pAd->MlmeAux.Bssid[5]));
+
+		pAd->MlmeAux.Channel = pAd->CommonCfg.Channel;
+		MlmeEnqueue(pAd,
+			 MLME_CNTL_STATE_MACHINE,
+			 OID_802_11_BSSID,
+			 MAC_ADDR_LEN,
+			 pAd->MlmeAux.Bssid, 0);
+
+		pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE;
+
+		RTMP_MLME_HANDLER(pAd);
+	}
+	// check CntlMachine.CurrState to avoid collision with NDIS SetOID request
+	else if ((pAd->Mlme.CntlMachine.CurrState == CNTL_IDLE) && 
+		(MlmeValidateSSID(pAd->MlmeAux.AutoReconnectSsid, pAd->MlmeAux.AutoReconnectSsidLen) == TRUE))
+	{
+		NDIS_802_11_SSID OidSsid;
+		OidSsid.SsidLength = pAd->MlmeAux.AutoReconnectSsidLen;
+		NdisMoveMemory(OidSsid.Ssid, pAd->MlmeAux.AutoReconnectSsid, pAd->MlmeAux.AutoReconnectSsidLen);
+
+		DBGPRINT(RT_DEBUG_TRACE, ("Driver auto reconnect to last OID_802_11_SSID setting - %s, len - %d\n", pAd->MlmeAux.AutoReconnectSsid, pAd->MlmeAux.AutoReconnectSsidLen));
+		MlmeEnqueue(pAd, 
+					MLME_CNTL_STATE_MACHINE, 
+					OID_802_11_SSID, 
+					sizeof(NDIS_802_11_SSID), 
+					&OidSsid, 0);
+		RTMP_MLME_HANDLER(pAd);
+	}
+}
+
+
+/*
+	==========================================================================
+	Description:
+		This routine checks if there're other APs out there capable for
+		roaming. Caller should call this routine only when Link up in INFRA mode
+		and channel quality is below CQI_GOOD_THRESHOLD.
+
+	IRQL = DISPATCH_LEVEL
+
+	Output:
+	==========================================================================
+ */
+VOID MlmeCheckForRoaming(
+	IN PRTMP_ADAPTER pAd,
+	IN ULONG	Now32)
+{
+	USHORT	   i;
+	BSS_TABLE  *pRoamTab = &pAd->MlmeAux.RoamTab;
+	BSS_ENTRY  *pBss;
+
+	DBGPRINT(RT_DEBUG_TRACE, ("==> MlmeCheckForRoaming\n"));
+	// put all roaming candidates into RoamTab, and sort in RSSI order
+	BssTableInit(pRoamTab);
+	for (i = 0; i < pAd->ScanTab.BssNr; i++)
+	{
+		pBss = &pAd->ScanTab.BssEntry[i];
+
+		if ((pBss->LastBeaconRxTime + pAd->StaCfg.BeaconLostTime) < Now32) 
+			continue;	 // AP disappear
+		if (pBss->Rssi <= RSSI_THRESHOLD_FOR_ROAMING)
+			continue;	 // RSSI too weak. forget it.
+		if (MAC_ADDR_EQUAL(pBss->Bssid, pAd->CommonCfg.Bssid))
+			continue;	 // skip current AP
+		if (pBss->Rssi < (pAd->StaCfg.RssiSample.LastRssi0 + RSSI_DELTA))
+			continue;	 // only AP with stronger RSSI is eligible for roaming
+
+		// AP passing all above rules is put into roaming candidate table		 
+		NdisMoveMemory(&pRoamTab->BssEntry[pRoamTab->BssNr], pBss, sizeof(BSS_ENTRY));
+		pRoamTab->BssNr += 1;
+	}
+
+	if (pRoamTab->BssNr > 0)
+	{
+		// check CntlMachine.CurrState to avoid collision with NDIS SetOID request
+		if (pAd->Mlme.CntlMachine.CurrState == CNTL_IDLE)
+		{
+			pAd->RalinkCounters.PoorCQIRoamingCount ++;
+			DBGPRINT(RT_DEBUG_TRACE, ("MMCHK - Roaming attempt #%ld\n", pAd->RalinkCounters.PoorCQIRoamingCount));
+			MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_MLME_ROAMING_REQ, 0, NULL, 0);
+			RTMP_MLME_HANDLER(pAd);
+		}
+	}
+	DBGPRINT(RT_DEBUG_TRACE, ("<== MlmeCheckForRoaming(# of candidate= %d)\n",pRoamTab->BssNr));   
+}
+
+/*
+	==========================================================================
+	Description:
+		This routine checks if there're other APs out there capable for
+		roaming. Caller should call this routine only when link up in INFRA mode
+		and channel quality is below CQI_GOOD_THRESHOLD.
+
+	IRQL = DISPATCH_LEVEL
+
+	Output:
+	==========================================================================
+ */
+BOOLEAN MlmeCheckForFastRoaming(
+	IN	PRTMP_ADAPTER	pAd)
+{
+	USHORT		i;
+	BSS_TABLE	*pRoamTab = &pAd->MlmeAux.RoamTab;
+	BSS_ENTRY	*pBss;
+
+	DBGPRINT(RT_DEBUG_TRACE, ("==> MlmeCheckForFastRoaming\n"));
+	// put all roaming candidates into RoamTab, and sort in RSSI order
+	BssTableInit(pRoamTab);
+	for (i = 0; i < pAd->ScanTab.BssNr; i++)
+	{
+		pBss = &pAd->ScanTab.BssEntry[i];
+
+        if ((pBss->Rssi <= -50) && (pBss->Channel == pAd->CommonCfg.Channel))
+			continue;	 // RSSI too weak. forget it.
+		if (MAC_ADDR_EQUAL(pBss->Bssid, pAd->CommonCfg.Bssid))
+			continue;	 // skip current AP
+		if (!SSID_EQUAL(pBss->Ssid, pBss->SsidLen, pAd->CommonCfg.Ssid, pAd->CommonCfg.SsidLen))
+			continue;	 // skip different SSID
+        if (pBss->Rssi < (RTMPMaxRssi(pAd, pAd->StaCfg.RssiSample.LastRssi0, pAd->StaCfg.RssiSample.LastRssi1, pAd->StaCfg.RssiSample.LastRssi2) + RSSI_DELTA)) 
+			continue;	 // skip AP without better RSSI
+		
+        DBGPRINT(RT_DEBUG_TRACE, ("LastRssi0 = %d, pBss->Rssi = %d\n", RTMPMaxRssi(pAd, pAd->StaCfg.RssiSample.LastRssi0, pAd->StaCfg.RssiSample.LastRssi1, pAd->StaCfg.RssiSample.LastRssi2), pBss->Rssi));
+		// AP passing all above rules is put into roaming candidate table		 
+		NdisMoveMemory(&pRoamTab->BssEntry[pRoamTab->BssNr], pBss, sizeof(BSS_ENTRY));
+		pRoamTab->BssNr += 1;
+	}
+
+	DBGPRINT(RT_DEBUG_TRACE, ("<== MlmeCheckForFastRoaming (BssNr=%d)\n", pRoamTab->BssNr));
+	if (pRoamTab->BssNr > 0)
+	{
+		// check CntlMachine.CurrState to avoid collision with NDIS SetOID request
+		if (pAd->Mlme.CntlMachine.CurrState == CNTL_IDLE)
+		{
+			pAd->RalinkCounters.PoorCQIRoamingCount ++;
+			DBGPRINT(RT_DEBUG_TRACE, ("MMCHK - Roaming attempt #%ld\n", pAd->RalinkCounters.PoorCQIRoamingCount));
+			MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_MLME_ROAMING_REQ, 0, NULL, 0);
+			RTMP_MLME_HANDLER(pAd);
+			return TRUE;
+		}
+	}
+
+	return FALSE;
+}
+
+VOID MlmeSetTxRate(
+	IN PRTMP_ADAPTER		pAd,
+	IN PMAC_TABLE_ENTRY		pEntry,
+	IN PRTMP_TX_RATE_SWITCH	pTxRate)
+{
+	UCHAR	MaxMode = MODE_OFDM;
+	
+#ifdef DOT11_N_SUPPORT
+	MaxMode = MODE_HTGREENFIELD;
+
+	if (pTxRate->STBC && (pAd->StaCfg.MaxHTPhyMode.field.STBC) && (pAd->Antenna.field.TxPath == 2))
+		pAd->StaCfg.HTPhyMode.field.STBC = STBC_USE;
+	else
+#endif // DOT11_N_SUPPORT //
+		pAd->StaCfg.HTPhyMode.field.STBC = STBC_NONE;
+
+	if (pTxRate->CurrMCS < MCS_AUTO)
+		pAd->StaCfg.HTPhyMode.field.MCS = pTxRate->CurrMCS;
+
+	if (pAd->StaCfg.HTPhyMode.field.MCS > 7)
+		pAd->StaCfg.HTPhyMode.field.STBC = STBC_NONE; 
+	
+   	if (ADHOC_ON(pAd))
+	{
+		// If peer adhoc is b-only mode, we can't send 11g rate.
+		pAd->StaCfg.HTPhyMode.field.ShortGI = GI_800;
+		pEntry->HTPhyMode.field.STBC	= STBC_NONE;
+
+		//
+		// For Adhoc MODE_CCK, driver will use AdhocBOnlyJoined flag to roll back to B only if necessary
+		//
+		pEntry->HTPhyMode.field.MODE	= pTxRate->Mode;
+		pEntry->HTPhyMode.field.ShortGI	= pAd->StaCfg.HTPhyMode.field.ShortGI;
+		pEntry->HTPhyMode.field.MCS		= pAd->StaCfg.HTPhyMode.field.MCS;
+
+		// Patch speed error in status page
+		pAd->StaCfg.HTPhyMode.field.MODE = pEntry->HTPhyMode.field.MODE;
+	}
+	else
+    {
+#ifdef DOT11_N_SUPPORT
+        if ((pAd->CommonCfg.RegTransmitSetting.field.HTMODE == HTMODE_GF) &&
+			(pAd->MlmeAux.HtCapability.HtCapInfo.GF == HTMODE_GF))
+            pAd->StaCfg.HTPhyMode.field.MODE = MODE_HTGREENFIELD;
+		else
+#endif // DOT11_N_SUPPORT //		
+		if (pTxRate->Mode <= MaxMode)
+			pAd->StaCfg.HTPhyMode.field.MODE = pTxRate->Mode;
+
+#ifdef DOT11_N_SUPPORT
+        if (pTxRate->ShortGI && (pAd->StaCfg.MaxHTPhyMode.field.ShortGI))
+			pAd->StaCfg.HTPhyMode.field.ShortGI = GI_400;
+		else
+#endif // DOT11_N_SUPPORT //
+			pAd->StaCfg.HTPhyMode.field.ShortGI = GI_800;
+
+#ifdef DOT11_N_SUPPORT
+		// Reexam each bandwidth's SGI support.
+		if (pAd->StaCfg.HTPhyMode.field.ShortGI == GI_400)
+		{
+			if ((pEntry->HTPhyMode.field.BW == BW_20) && (!CLIENT_STATUS_TEST_FLAG(pEntry, fCLIENT_STATUS_SGI20_CAPABLE)))
+				pAd->StaCfg.HTPhyMode.field.ShortGI = GI_800;
+			if ((pEntry->HTPhyMode.field.BW == BW_40) && (!CLIENT_STATUS_TEST_FLAG(pEntry, fCLIENT_STATUS_SGI40_CAPABLE)))
+				pAd->StaCfg.HTPhyMode.field.ShortGI = GI_800;
+		}
+
+        // Turn RTS/CTS rate to 6Mbps.
+		if ((pEntry->HTPhyMode.field.MCS == 0) && (pAd->StaCfg.HTPhyMode.field.MCS != 0))
+		{
+			pEntry->HTPhyMode.field.MCS		= pAd->StaCfg.HTPhyMode.field.MCS;
+			if (pAd->MacTab.fAnyBASession)
+			{
+				AsicUpdateProtect(pAd, HT_FORCERTSCTS, ALLN_SETPROTECT, TRUE, (BOOLEAN)pAd->MlmeAux.AddHtInfo.AddHtInfo2.NonGfPresent);
+			}
+			else
+			{
+				AsicUpdateProtect(pAd, pAd->MlmeAux.AddHtInfo.AddHtInfo2.OperaionMode, ALLN_SETPROTECT, TRUE, (BOOLEAN)pAd->MlmeAux.AddHtInfo.AddHtInfo2.NonGfPresent);
+			}
+		}
+		else if ((pEntry->HTPhyMode.field.MCS == 8) && (pAd->StaCfg.HTPhyMode.field.MCS != 8))
+		{
+			pEntry->HTPhyMode.field.MCS		= pAd->StaCfg.HTPhyMode.field.MCS;
+			if (pAd->MacTab.fAnyBASession)
+			{
+				AsicUpdateProtect(pAd, HT_FORCERTSCTS, ALLN_SETPROTECT, TRUE, (BOOLEAN)pAd->MlmeAux.AddHtInfo.AddHtInfo2.NonGfPresent);
+			}
+			else
+			{
+				AsicUpdateProtect(pAd, pAd->MlmeAux.AddHtInfo.AddHtInfo2.OperaionMode, ALLN_SETPROTECT, TRUE, (BOOLEAN)pAd->MlmeAux.AddHtInfo.AddHtInfo2.NonGfPresent);
+			}
+		}
+		else if ((pEntry->HTPhyMode.field.MCS != 0) && (pAd->StaCfg.HTPhyMode.field.MCS == 0))
+		{
+			AsicUpdateProtect(pAd, HT_RTSCTS_6M, ALLN_SETPROTECT, TRUE, (BOOLEAN)pAd->MlmeAux.AddHtInfo.AddHtInfo2.NonGfPresent);
+
+		}
+		else if ((pEntry->HTPhyMode.field.MCS != 8) && (pAd->StaCfg.HTPhyMode.field.MCS == 8))
+		{
+			AsicUpdateProtect(pAd, HT_RTSCTS_6M, ALLN_SETPROTECT, TRUE, (BOOLEAN)pAd->MlmeAux.AddHtInfo.AddHtInfo2.NonGfPresent);
+		}
+#endif // DOT11_N_SUPPORT //
+        
+		pEntry->HTPhyMode.field.STBC	= pAd->StaCfg.HTPhyMode.field.STBC;
+		pEntry->HTPhyMode.field.ShortGI	= pAd->StaCfg.HTPhyMode.field.ShortGI;
+		pEntry->HTPhyMode.field.MCS		= pAd->StaCfg.HTPhyMode.field.MCS;
+		pEntry->HTPhyMode.field.MODE	= pAd->StaCfg.HTPhyMode.field.MODE;
+    }
+	
+    pAd->LastTxRate = (USHORT)(pEntry->HTPhyMode.word);
+}
+
+/*
+	==========================================================================
+	Description:
+		This routine calculates the acumulated TxPER of eaxh TxRate. And 
+		according to the calculation result, change CommonCfg.TxRate which 
+		is the stable TX Rate we expect the Radio situation could sustained. 
+
+		CommonCfg.TxRate will change dynamically within {RATE_1/RATE_6, MaxTxRate} 
+	Output:
+		CommonCfg.TxRate - 
+
+	IRQL = DISPATCH_LEVEL
+
+	NOTE:
+		call this routine every second
+	==========================================================================
+ */
+VOID MlmeDynamicTxRateSwitching(
+	IN PRTMP_ADAPTER pAd)
+{
+	UCHAR					UpRateIdx = 0, DownRateIdx = 0, CurrRateIdx;
+	ULONG					i, AccuTxTotalCnt = 0, TxTotalCnt;
+	ULONG					TxErrorRatio = 0;
+	BOOLEAN					bTxRateChanged = FALSE, bUpgradeQuality = FALSE;
+	PRTMP_TX_RATE_SWITCH	pCurrTxRate, pNextTxRate = NULL;
+	PUCHAR					pTable;
+	UCHAR					TableSize = 0;
+	UCHAR					InitTxRateIdx = 0, TrainUp, TrainDown;
+	CHAR					Rssi, RssiOffset = 0;
+	TX_STA_CNT1_STRUC		StaTx1;
+	TX_STA_CNT0_STRUC		TxStaCnt0;
+	ULONG					TxRetransmit = 0, TxSuccess = 0, TxFailCount = 0;
+	MAC_TABLE_ENTRY			*pEntry;
+	RSSI_SAMPLE				*pRssi = &pAd->StaCfg.RssiSample;
+
+#ifdef RALINK_ATE
+	if (ATE_ON(pAd))
+	{
+		return;
+	}
+#endif // RALINK_ATE //
+
+	// Update statistic counter
+	RTMP_IO_READ32(pAd, TX_STA_CNT0, &TxStaCnt0.word);
+	RTMP_IO_READ32(pAd, TX_STA_CNT1, &StaTx1.word);
+	pAd->bUpdateBcnCntDone = TRUE;
+	TxRetransmit = StaTx1.field.TxRetransmit;
+	TxSuccess = StaTx1.field.TxSuccess;
+	TxFailCount = TxStaCnt0.field.TxFailCount;
+	TxTotalCnt = TxRetransmit + TxSuccess + TxFailCount;
+
+	pAd->RalinkCounters.OneSecTxRetryOkCount += StaTx1.field.TxRetransmit;
+	pAd->RalinkCounters.OneSecTxNoRetryOkCount += StaTx1.field.TxSuccess;
+	pAd->RalinkCounters.OneSecTxFailCount += TxStaCnt0.field.TxFailCount;
+
+#ifdef STATS_COUNT_SUPPORT
+	pAd->WlanCounters.TransmittedFragmentCount.u.LowPart += StaTx1.field.TxSuccess;
+	pAd->WlanCounters.RetryCount.u.LowPart += StaTx1.field.TxRetransmit;
+	pAd->WlanCounters.FailedCount.u.LowPart += TxStaCnt0.field.TxFailCount;
+#endif // STATS_COUNT_SUPPORT //
+
+	//
+	// walk through MAC table, see if need to change AP's TX rate toward each entry
+	//
+   	for (i = 1; i < MAX_LEN_OF_MAC_TABLE; i++) 
+	{
+		pEntry = &pAd->MacTab.Content[i];
+		
+	// check if this entry need to switch rate automatically
+		if (RTMPCheckEntryEnableAutoRateSwitch(pAd, pEntry) == FALSE)
+			continue;
+
+		if ((pAd->MacTab.Size == 1) || IS_ENTRY_DLS(pEntry))
+		{
+			Rssi = RTMPMaxRssi(pAd, 
+							   pRssi->AvgRssi0, 
+							   pRssi->AvgRssi1, 
+							   pRssi->AvgRssi2);
+					
+			// if no traffic in the past 1-sec period, don't change TX rate,
+			// but clear all bad history. because the bad history may affect the next 
+			// Chariot throughput test
+			AccuTxTotalCnt = pAd->RalinkCounters.OneSecTxNoRetryOkCount + 
+						 pAd->RalinkCounters.OneSecTxRetryOkCount + 
+						 pAd->RalinkCounters.OneSecTxFailCount;
+			
+			if (TxTotalCnt)
+				TxErrorRatio = ((TxRetransmit + TxFailCount) * 100) / TxTotalCnt;
+		}
+		else
+		{
+			if (INFRA_ON(pAd) && (i == 1))
+				Rssi = RTMPMaxRssi(pAd, 
+								   pRssi->AvgRssi0, 
+								   pRssi->AvgRssi1, 
+								   pRssi->AvgRssi2);
+			else
+				Rssi = RTMPMaxRssi(pAd, 
+								   pEntry->RssiSample.AvgRssi0, 
+								   pEntry->RssiSample.AvgRssi1, 
+								   pEntry->RssiSample.AvgRssi2);
+			
+			TxTotalCnt = pEntry->OneSecTxNoRetryOkCount + 
+				 pEntry->OneSecTxRetryOkCount + 
+				 pEntry->OneSecTxFailCount;
+
+			if (TxTotalCnt)
+				TxErrorRatio = ((pEntry->OneSecTxRetryOkCount + pEntry->OneSecTxFailCount) * 100) / TxTotalCnt;
+		}
+
+		if (TxTotalCnt)
+		{
+			/*
+				Three AdHoc connections can not work normally if one AdHoc connection is disappeared from a heavy traffic environment generated by ping tool
+				We force to set LongRtyLimit and ShortRtyLimit to 0 to stop retransmitting packet, after a while, resoring original settings
+			*/
+			if (TxErrorRatio == 100)
+			{
+				TX_RTY_CFG_STRUC	TxRtyCfg,TxRtyCfgtmp;
+				ULONG	Index;
+				ULONG	MACValue;			
+
+				RTMP_IO_READ32(pAd, TX_RTY_CFG, &TxRtyCfg.word);
+				TxRtyCfgtmp.word = TxRtyCfg.word; 
+				TxRtyCfg.field.LongRtyLimit = 0x0;
+				TxRtyCfg.field.ShortRtyLimit = 0x0;
+				RTMP_IO_WRITE32(pAd, TX_RTY_CFG, TxRtyCfg.word);
+
+				RTMPusecDelay(1);
+
+				Index = 0;
+				MACValue = 0;
+				do 
+				{
+					RTMP_IO_READ32(pAd, TXRXQ_PCNT, &MACValue);
+					if ((MACValue & 0xffffff) == 0)
+						break;
+					Index++;
+					RTMPusecDelay(1000);
+				}while((Index < 330)&&(!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_HALT_IN_PROGRESS)));
+
+				RTMP_IO_READ32(pAd, TX_RTY_CFG, &TxRtyCfg.word);
+				TxRtyCfg.field.LongRtyLimit = TxRtyCfgtmp.field.LongRtyLimit;
+				TxRtyCfg.field.ShortRtyLimit = TxRtyCfgtmp.field.ShortRtyLimit;
+				RTMP_IO_WRITE32(pAd, TX_RTY_CFG, TxRtyCfg.word);							
+			}		
+		}
+
+		CurrRateIdx = pEntry->CurrTxRateIndex;
+
+		MlmeSelectTxRateTable(pAd, pEntry, &pTable, &TableSize, &InitTxRateIdx);
+
+		if (CurrRateIdx >= TableSize)
+		{
+			CurrRateIdx = TableSize - 1;
+		}
+
+		// When switch from Fixed rate -> auto rate, the REAL TX rate might be different from pAd->CommonCfg.TxRateIndex.
+		// So need to sync here.
+		pCurrTxRate = (PRTMP_TX_RATE_SWITCH) &pTable[(CurrRateIdx+1)*5];
+		if ((pEntry->HTPhyMode.field.MCS != pCurrTxRate->CurrMCS) 
+			//&& (pAd->StaCfg.bAutoTxRateSwitch == TRUE)
+			)
+		{
+			
+			// Need to sync Real Tx rate and our record. 
+			// Then return for next DRS.
+			pCurrTxRate = (PRTMP_TX_RATE_SWITCH) &pTable[(InitTxRateIdx+1)*5];
+			pEntry->CurrTxRateIndex = InitTxRateIdx;
+			MlmeSetTxRate(pAd, pEntry, pCurrTxRate);
+
+			// reset all OneSecTx counters
+			RESET_ONE_SEC_TX_CNT(pEntry);
+			continue;
+		}
+
+		// decide the next upgrade rate and downgrade rate, if any
+		if ((CurrRateIdx > 0) && (CurrRateIdx < (TableSize - 1)))
+		{
+			UpRateIdx = CurrRateIdx + 1;
+			DownRateIdx = CurrRateIdx -1;
+		}
+		else if (CurrRateIdx == 0)
+		{
+			UpRateIdx = CurrRateIdx + 1;
+			DownRateIdx = CurrRateIdx;
+		}
+		else if (CurrRateIdx == (TableSize - 1))
+		{
+			UpRateIdx = CurrRateIdx;
+			DownRateIdx = CurrRateIdx - 1;
+		}
+
+		pCurrTxRate = (PRTMP_TX_RATE_SWITCH) &pTable[(CurrRateIdx+1)*5];
+
+#ifdef DOT11_N_SUPPORT
+		if ((Rssi > -65) && (pCurrTxRate->Mode >= MODE_HTMIX))
+		{
+			TrainUp		= (pCurrTxRate->TrainUp + (pCurrTxRate->TrainUp >> 1));
+			TrainDown	= (pCurrTxRate->TrainDown + (pCurrTxRate->TrainDown >> 1));
+		}
+		else
+#endif // DOT11_N_SUPPORT //
+		{
+			TrainUp		= pCurrTxRate->TrainUp;
+			TrainDown	= pCurrTxRate->TrainDown;
+		}
+
+		//pAd->DrsCounters.LastTimeTxRateChangeAction = pAd->DrsCounters.LastSecTxRateChangeAction;
+		
+		//
+		// Keep the last time TxRateChangeAction status.
+		//
+		pEntry->LastTimeTxRateChangeAction = pEntry->LastSecTxRateChangeAction;
+		
+		
+
+		//
+		// CASE 1. when TX samples are fewer than 15, then decide TX rate solely on RSSI
+		//         (criteria copied from RT2500 for Netopia case)
+		//
+		if (TxTotalCnt <= 15)
+		{
+			CHAR	idx = 0;
+			UCHAR	TxRateIdx;
+			UCHAR	MCS0 = 0, MCS1 = 0, MCS2 = 0, MCS3 = 0, MCS4 = 0,  MCS5 =0, MCS6 = 0, MCS7 = 0;			
+	        UCHAR	MCS12 = 0, MCS13 = 0, MCS14 = 0, MCS15 = 0;
+			UCHAR	MCS20 = 0, MCS21 = 0, MCS22 = 0, MCS23 = 0; // 3*3
+
+			// check the existence and index of each needed MCS
+			while (idx < pTable[0])
+			{
+				pCurrTxRate = (PRTMP_TX_RATE_SWITCH) &pTable[(idx+1)*5];
+
+				if (pCurrTxRate->CurrMCS == MCS_0)
+				{
+					MCS0 = idx;
+				}
+				else if (pCurrTxRate->CurrMCS == MCS_1)
+				{
+					MCS1 = idx;
+				}
+				else if (pCurrTxRate->CurrMCS == MCS_2)
+				{
+					MCS2 = idx;
+				}
+				else if (pCurrTxRate->CurrMCS == MCS_3)
+				{
+					MCS3 = idx;
+				}
+				else if (pCurrTxRate->CurrMCS == MCS_4)
+				{
+					MCS4 = idx;
+				}
+	            else if (pCurrTxRate->CurrMCS == MCS_5)
+	            {
+	                MCS5 = idx;
+	            }
+	            else if (pCurrTxRate->CurrMCS == MCS_6)
+	            {
+	                MCS6 = idx;
+	            }
+				//else if (pCurrTxRate->CurrMCS == MCS_7)
+				else if ((pCurrTxRate->CurrMCS == MCS_7) && (pCurrTxRate->ShortGI == GI_800))	// prevent the highest MCS using short GI when 1T and low throughput
+				{
+					MCS7 = idx;
+				}
+				else if (pCurrTxRate->CurrMCS == MCS_12)
+				{
+					MCS12 = idx;
+				}
+				else if (pCurrTxRate->CurrMCS == MCS_13)
+				{
+					MCS13 = idx;
+				}
+				else if (pCurrTxRate->CurrMCS == MCS_14)
+				{
+					MCS14 = idx;
+				}
+				//else if ((pCurrTxRate->CurrMCS == MCS_15)/* && (pCurrTxRate->ShortGI == GI_800)*/)	//we hope to use ShortGI as initial rate
+				else if ((pCurrTxRate->CurrMCS == MCS_15) && (pCurrTxRate->ShortGI == GI_800))	//we hope to use ShortGI as initial rate, however Atheros's chip has bugs when short GI
+				{
+					MCS15 = idx;
+				}
+				else if (pCurrTxRate->CurrMCS == MCS_20) // 3*3
+				{
+					MCS20 = idx;
+				}
+				else if (pCurrTxRate->CurrMCS == MCS_21)
+				{
+					MCS21 = idx;
+				}
+				else if (pCurrTxRate->CurrMCS == MCS_22)
+				{
+					MCS22 = idx;
+				}
+				else if (pCurrTxRate->CurrMCS == MCS_23)
+				{
+					MCS23 = idx;
+				}
+				idx ++;
+			}
+
+			if (pAd->LatchRfRegs.Channel <= 14)
+			{
+				if (pAd->NicConfig2.field.ExternalLNAForG)
+				{
+					RssiOffset = 2;
+				}
+				else
+				{
+					RssiOffset = 5;
+				}
+			}
+			else
+			{
+				if (pAd->NicConfig2.field.ExternalLNAForA)
+				{
+					RssiOffset = 5;
+				}
+				else
+				{
+					RssiOffset = 8;
+				}
+			}
+#ifdef DOT11_N_SUPPORT			
+			/*if (MCS15)*/
+			if ((pTable == RateSwitchTable11BGN3S) ||
+				(pTable == RateSwitchTable11N3S) ||
+				(pTable == RateSwitchTable))
+			{// N mode with 3 stream // 3*3
+				if (MCS23 && (Rssi >= -70))
+					TxRateIdx = MCS23;
+				else if (MCS22 && (Rssi >= -72))
+					TxRateIdx = MCS22;
+        	    else if (MCS21 && (Rssi >= -76))
+					TxRateIdx = MCS21;
+				else if (MCS20 && (Rssi >= -78))
+					TxRateIdx = MCS20;
+			else if (MCS4 && (Rssi >= -82))
+				TxRateIdx = MCS4;
+			else if (MCS3 && (Rssi >= -84))
+				TxRateIdx = MCS3;
+			else if (MCS2 && (Rssi >= -86))
+				TxRateIdx = MCS2;
+			else if (MCS1 && (Rssi >= -88))
+				TxRateIdx = MCS1;
+			else
+				TxRateIdx = MCS0;
+		}
+//		else if ((pTable == RateSwitchTable11BGN2S) || (pTable == RateSwitchTable11BGN2SForABand) ||(pTable == RateSwitchTable11N2S) ||(pTable == RateSwitchTable11N2SForABand) || (pTable == RateSwitchTable))
+		else if ((pTable == RateSwitchTable11BGN2S) || (pTable == RateSwitchTable11BGN2SForABand) ||(pTable == RateSwitchTable11N2S) ||(pTable == RateSwitchTable11N2SForABand)) // 3*3
+			{// N mode with 2 stream
+				if (MCS15 && (Rssi >= (-70+RssiOffset)))
+					TxRateIdx = MCS15;
+				else if (MCS14 && (Rssi >= (-72+RssiOffset)))
+					TxRateIdx = MCS14;
+				else if (MCS13 && (Rssi >= (-76+RssiOffset)))
+					TxRateIdx = MCS13;
+				else if (MCS12 && (Rssi >= (-78+RssiOffset)))
+					TxRateIdx = MCS12;
+				else if (MCS4 && (Rssi >= (-82+RssiOffset)))
+					TxRateIdx = MCS4;
+				else if (MCS3 && (Rssi >= (-84+RssiOffset)))
+					TxRateIdx = MCS3;
+				else if (MCS2 && (Rssi >= (-86+RssiOffset)))
+					TxRateIdx = MCS2;
+				else if (MCS1 && (Rssi >= (-88+RssiOffset)))
+					TxRateIdx = MCS1;
+				else
+					TxRateIdx = MCS0;
+			}
+			else if ((pTable == RateSwitchTable11BGN1S) || (pTable == RateSwitchTable11N1S))
+			{// N mode with 1 stream
+				if (MCS7 && (Rssi > (-72+RssiOffset)))
+					TxRateIdx = MCS7;
+				else if (MCS6 && (Rssi > (-74+RssiOffset)))
+					TxRateIdx = MCS6;
+				else if (MCS5 && (Rssi > (-77+RssiOffset)))
+					TxRateIdx = MCS5;
+				else if (MCS4 && (Rssi > (-79+RssiOffset)))
+					TxRateIdx = MCS4;
+				else if (MCS3 && (Rssi > (-81+RssiOffset)))
+					TxRateIdx = MCS3;
+				else if (MCS2 && (Rssi > (-83+RssiOffset)))
+					TxRateIdx = MCS2;
+				else if (MCS1 && (Rssi > (-86+RssiOffset)))
+					TxRateIdx = MCS1;
+				else
+					TxRateIdx = MCS0;
+			}
+			else
+#endif // DOT11_N_SUPPORT //
+			{// Legacy mode
+				if (MCS7 && (Rssi > -70))
+					TxRateIdx = MCS7;
+				else if (MCS6 && (Rssi > -74))
+					TxRateIdx = MCS6;
+				else if (MCS5 && (Rssi > -78))
+					TxRateIdx = MCS5;
+				else if (MCS4 && (Rssi > -82))
+					TxRateIdx = MCS4;
+				else if (MCS4 == 0)	// for B-only mode
+					TxRateIdx = MCS3;
+				else if (MCS3 && (Rssi > -85))
+					TxRateIdx = MCS3;
+				else if (MCS2 && (Rssi > -87))
+					TxRateIdx = MCS2;
+				else if (MCS1 && (Rssi > -90))
+					TxRateIdx = MCS1;
+				else
+					TxRateIdx = MCS0;
+			}
+
+	//		if (TxRateIdx != pAd->CommonCfg.TxRateIndex)
+			{
+				pEntry->CurrTxRateIndex = TxRateIdx;
+				pNextTxRate = (PRTMP_TX_RATE_SWITCH) &pTable[(pEntry->CurrTxRateIndex+1)*5];
+				MlmeSetTxRate(pAd, pEntry, pNextTxRate);
+			}
+
+			NdisZeroMemory(pEntry->TxQuality, sizeof(USHORT) * MAX_STEP_OF_TX_RATE_SWITCH);
+			NdisZeroMemory(pEntry->PER, sizeof(UCHAR) * MAX_STEP_OF_TX_RATE_SWITCH);
+			pEntry->fLastSecAccordingRSSI = TRUE;
+			// reset all OneSecTx counters
+			RESET_ONE_SEC_TX_CNT(pEntry);
+
+			continue;
+		}
+
+		if (pEntry->fLastSecAccordingRSSI == TRUE)
+		{
+			pEntry->fLastSecAccordingRSSI = FALSE;
+			pEntry->LastSecTxRateChangeAction = 0;
+			// reset all OneSecTx counters
+			RESET_ONE_SEC_TX_CNT(pEntry);
+
+			continue;
+		}
+
+		do
+		{
+			BOOLEAN	bTrainUpDown = FALSE;
+			
+			pEntry->CurrTxRateStableTime ++;
+
+			// downgrade TX quality if PER >= Rate-Down threshold
+			if (TxErrorRatio >= TrainDown)
+			{
+				bTrainUpDown = TRUE;
+				pEntry->TxQuality[CurrRateIdx] = DRS_TX_QUALITY_WORST_BOUND;
+			}
+			// upgrade TX quality if PER <= Rate-Up threshold
+			else if (TxErrorRatio <= TrainUp)
+			{
+				bTrainUpDown = TRUE;
+				bUpgradeQuality = TRUE;
+				if (pEntry->TxQuality[CurrRateIdx])
+					pEntry->TxQuality[CurrRateIdx] --;  // quality very good in CurrRate
+
+				if (pEntry->TxRateUpPenalty)
+					pEntry->TxRateUpPenalty --;
+				else if (pEntry->TxQuality[UpRateIdx])
+					pEntry->TxQuality[UpRateIdx] --;    // may improve next UP rate's quality
+			}
+
+			pEntry->PER[CurrRateIdx] = (UCHAR)TxErrorRatio;
+
+			if (bTrainUpDown)
+			{
+				// perform DRS - consider TxRate Down first, then rate up.
+				if ((CurrRateIdx != DownRateIdx) && (pEntry->TxQuality[CurrRateIdx] >= DRS_TX_QUALITY_WORST_BOUND))
+				{
+					pEntry->CurrTxRateIndex = DownRateIdx;
+				}
+				else if ((CurrRateIdx != UpRateIdx) && (pEntry->TxQuality[UpRateIdx] <= 0))
+				{
+					pEntry->CurrTxRateIndex = UpRateIdx;
+				}
+			}
+		} while (FALSE);
+
+		// if rate-up happen, clear all bad history of all TX rates
+		if (pEntry->CurrTxRateIndex > CurrRateIdx)
+		{
+			pEntry->CurrTxRateStableTime = 0;
+			pEntry->TxRateUpPenalty = 0;
+			pEntry->LastSecTxRateChangeAction = 1; // rate UP
+			NdisZeroMemory(pEntry->TxQuality, sizeof(USHORT) * MAX_STEP_OF_TX_RATE_SWITCH);
+			NdisZeroMemory(pEntry->PER, sizeof(UCHAR) * MAX_STEP_OF_TX_RATE_SWITCH);
+
+			//
+			// For TxRate fast train up
+			// 
+			if (!pAd->StaCfg.StaQuickResponeForRateUpTimerRunning)
+			{
+				RTMPSetTimer(&pAd->StaCfg.StaQuickResponeForRateUpTimer, 100);
+
+				pAd->StaCfg.StaQuickResponeForRateUpTimerRunning = TRUE;
+			}
+			bTxRateChanged = TRUE;
+		}
+		// if rate-down happen, only clear DownRate's bad history
+		else if (pEntry->CurrTxRateIndex < CurrRateIdx)
+		{
+			pEntry->CurrTxRateStableTime = 0;
+			pEntry->TxRateUpPenalty = 0;           // no penalty
+			pEntry->LastSecTxRateChangeAction = 2; // rate DOWN
+			pEntry->TxQuality[pEntry->CurrTxRateIndex] = 0;
+			pEntry->PER[pEntry->CurrTxRateIndex] = 0;
+
+			//
+			// For TxRate fast train down
+			// 
+			if (!pAd->StaCfg.StaQuickResponeForRateUpTimerRunning)
+			{
+				RTMPSetTimer(&pAd->StaCfg.StaQuickResponeForRateUpTimer, 100);
+
+				pAd->StaCfg.StaQuickResponeForRateUpTimerRunning = TRUE;
+			}
+			bTxRateChanged = TRUE;
+		}
+		else
+		{
+			pEntry->LastSecTxRateChangeAction = 0; // rate no change
+			bTxRateChanged = FALSE;
+		}
+
+		pEntry->LastTxOkCount = TxSuccess;
+
+		pNextTxRate = (PRTMP_TX_RATE_SWITCH) &pTable[(pEntry->CurrTxRateIndex+1)*5];
+		if (bTxRateChanged && pNextTxRate)
+		{
+			MlmeSetTxRate(pAd, pEntry, pNextTxRate);
+		}
+		// reset all OneSecTx counters
+		RESET_ONE_SEC_TX_CNT(pEntry);
+	}
+}
+
+/*
+	========================================================================
+	Routine Description:
+		Station side, Auto TxRate faster train up timer call back function.
+
+	Arguments:
+		SystemSpecific1			- Not used.
+		FunctionContext			- Pointer to our Adapter context.
+		SystemSpecific2			- Not used.
+		SystemSpecific3			- Not used.
+
+	Return Value:
+		None
+
+	========================================================================
+*/
+VOID StaQuickResponeForRateUpExec(
+	IN PVOID SystemSpecific1, 
+	IN PVOID FunctionContext, 
+	IN PVOID SystemSpecific2, 
+	IN PVOID SystemSpecific3) 
+{
+	PRTMP_ADAPTER			pAd = (PRTMP_ADAPTER)FunctionContext;
+	UCHAR					UpRateIdx = 0, DownRateIdx = 0, CurrRateIdx = 0;
+	ULONG					TxTotalCnt;
+	ULONG					TxErrorRatio = 0;
+	BOOLEAN					bTxRateChanged; //, bUpgradeQuality = FALSE;
+	PRTMP_TX_RATE_SWITCH	pCurrTxRate, pNextTxRate = NULL;
+	PUCHAR					pTable;
+	UCHAR					TableSize = 0;
+	UCHAR					InitTxRateIdx = 0, TrainUp, TrainDown;
+	TX_STA_CNT1_STRUC		StaTx1;
+	TX_STA_CNT0_STRUC		TxStaCnt0;
+	CHAR					Rssi, ratio;
+	ULONG					TxRetransmit = 0, TxSuccess = 0, TxFailCount = 0;
+	MAC_TABLE_ENTRY			*pEntry;
+	ULONG					i;
+
+	pAd->StaCfg.StaQuickResponeForRateUpTimerRunning = FALSE;
+
+    //
+    // walk through MAC table, see if need to change AP's TX rate toward each entry
+    //
+	for (i = 1; i < MAX_LEN_OF_MAC_TABLE; i++) 
+	{
+		pEntry = &pAd->MacTab.Content[i];
+
+		// check if this entry need to switch rate automatically
+		if (RTMPCheckEntryEnableAutoRateSwitch(pAd, pEntry) == FALSE)
+			continue;
+
+		if (INFRA_ON(pAd) && (i == 1))
+			Rssi = RTMPMaxRssi(pAd, 
+							   pAd->StaCfg.RssiSample.AvgRssi0, 
+							   pAd->StaCfg.RssiSample.AvgRssi1, 
+							   pAd->StaCfg.RssiSample.AvgRssi2);
+		else
+			Rssi = RTMPMaxRssi(pAd, 
+							   pEntry->RssiSample.AvgRssi0, 
+							   pEntry->RssiSample.AvgRssi1, 
+							   pEntry->RssiSample.AvgRssi2);
+
+	CurrRateIdx = pAd->CommonCfg.TxRateIndex;
+
+			MlmeSelectTxRateTable(pAd, pEntry, &pTable, &TableSize, &InitTxRateIdx);
+
+	// decide the next upgrade rate and downgrade rate, if any
+	if ((CurrRateIdx > 0) && (CurrRateIdx < (TableSize - 1)))
+	{
+		UpRateIdx = CurrRateIdx + 1;
+		DownRateIdx = CurrRateIdx -1;
+	}
+	else if (CurrRateIdx == 0)
+	{
+		UpRateIdx = CurrRateIdx + 1;
+		DownRateIdx = CurrRateIdx;
+	}
+	else if (CurrRateIdx == (TableSize - 1))
+	{
+		UpRateIdx = CurrRateIdx;
+		DownRateIdx = CurrRateIdx - 1;
+	}
+
+	pCurrTxRate = (PRTMP_TX_RATE_SWITCH) &pTable[(CurrRateIdx+1)*5];
+
+#ifdef DOT11_N_SUPPORT
+	if ((Rssi > -65) && (pCurrTxRate->Mode >= MODE_HTMIX))
+	{
+		TrainUp		= (pCurrTxRate->TrainUp + (pCurrTxRate->TrainUp >> 1));
+		TrainDown	= (pCurrTxRate->TrainDown + (pCurrTxRate->TrainDown >> 1));
+	}
+	else
+#endif // DOT11_N_SUPPORT //
+	{
+		TrainUp		= pCurrTxRate->TrainUp;
+		TrainDown	= pCurrTxRate->TrainDown;
+	}
+
+		if (pAd->MacTab.Size == 1)
+		{
+	// Update statistic counter
+	RTMP_IO_READ32(pAd, TX_STA_CNT0, &TxStaCnt0.word);
+	RTMP_IO_READ32(pAd, TX_STA_CNT1, &StaTx1.word);
+
+	TxRetransmit = StaTx1.field.TxRetransmit;
+	TxSuccess = StaTx1.field.TxSuccess;
+	TxFailCount = TxStaCnt0.field.TxFailCount;
+	TxTotalCnt = TxRetransmit + TxSuccess + TxFailCount;
+
+	pAd->RalinkCounters.OneSecTxRetryOkCount += StaTx1.field.TxRetransmit;
+	pAd->RalinkCounters.OneSecTxNoRetryOkCount += StaTx1.field.TxSuccess;
+	pAd->RalinkCounters.OneSecTxFailCount += TxStaCnt0.field.TxFailCount;
+
+#ifdef STATS_COUNT_SUPPORT
+			pAd->WlanCounters.TransmittedFragmentCount.u.LowPart += StaTx1.field.TxSuccess;
+			pAd->WlanCounters.RetryCount.u.LowPart += StaTx1.field.TxRetransmit;
+			pAd->WlanCounters.FailedCount.u.LowPart += TxStaCnt0.field.TxFailCount;
+#endif // STATS_COUNT_SUPPORT //
+
+	if (TxTotalCnt)
+		TxErrorRatio = ((TxRetransmit + TxFailCount) * 100) / TxTotalCnt;
+		}
+		else
+		{
+			TxTotalCnt = pEntry->OneSecTxNoRetryOkCount + 
+				 pEntry->OneSecTxRetryOkCount + 
+				 pEntry->OneSecTxFailCount;
+
+			if (TxTotalCnt)
+				TxErrorRatio = ((pEntry->OneSecTxRetryOkCount + pEntry->OneSecTxFailCount) * 100) / TxTotalCnt;
+		}
+
+
+	//
+	// CASE 1. when TX samples are fewer than 15, then decide TX rate solely on RSSI
+	//         (criteria copied from RT2500 for Netopia case)
+	//
+	if (TxTotalCnt <= 12)
+	{
+		NdisZeroMemory(pAd->DrsCounters.TxQuality, sizeof(USHORT) * MAX_STEP_OF_TX_RATE_SWITCH);
+		NdisZeroMemory(pAd->DrsCounters.PER, sizeof(UCHAR) * MAX_STEP_OF_TX_RATE_SWITCH);
+
+		if ((pAd->DrsCounters.LastSecTxRateChangeAction == 1) && (CurrRateIdx != DownRateIdx))
+		{
+			pAd->CommonCfg.TxRateIndex = DownRateIdx;
+			pAd->DrsCounters.TxQuality[CurrRateIdx] = DRS_TX_QUALITY_WORST_BOUND;
+		}
+		else if ((pAd->DrsCounters.LastSecTxRateChangeAction == 2) && (CurrRateIdx != UpRateIdx))
+		{
+			pAd->CommonCfg.TxRateIndex = UpRateIdx;
+		}
+
+		DBGPRINT_RAW(RT_DEBUG_TRACE,("QuickDRS: TxTotalCnt <= 15, train back to original rate \n"));
+		return;
+	}
+
+	do
+	{
+		ULONG OneSecTxNoRetryOKRationCount;
+
+		if (pAd->DrsCounters.LastTimeTxRateChangeAction == 0)
+			ratio = 5;
+		else
+			ratio = 4;
+
+		// downgrade TX quality if PER >= Rate-Down threshold
+		if (TxErrorRatio >= TrainDown)
+		{
+			pAd->DrsCounters.TxQuality[CurrRateIdx] = DRS_TX_QUALITY_WORST_BOUND;
+		}
+
+		pAd->DrsCounters.PER[CurrRateIdx] = (UCHAR)TxErrorRatio;
+
+		OneSecTxNoRetryOKRationCount = (TxSuccess * ratio);
+
+		// perform DRS - consider TxRate Down first, then rate up.
+		if ((pAd->DrsCounters.LastSecTxRateChangeAction == 1) && (CurrRateIdx != DownRateIdx))
+		{
+			if ((pAd->DrsCounters.LastTxOkCount + 2) >= OneSecTxNoRetryOKRationCount)
+		{
+			pAd->CommonCfg.TxRateIndex = DownRateIdx;
+				pAd->DrsCounters.TxQuality[CurrRateIdx] = DRS_TX_QUALITY_WORST_BOUND;
+					
+			}
+				
+		}
+		else if ((pAd->DrsCounters.LastSecTxRateChangeAction == 2) && (CurrRateIdx != UpRateIdx))
+		{
+			if ((TxErrorRatio >= 50) || (TxErrorRatio >= TrainDown))
+			{
+					
+			}
+			else if ((pAd->DrsCounters.LastTxOkCount + 2) >= OneSecTxNoRetryOKRationCount)
+			{
+				pAd->CommonCfg.TxRateIndex = UpRateIdx;
+			}
+		}
+	}while (FALSE);
+
+	// if rate-up happen, clear all bad history of all TX rates
+	if (pAd->CommonCfg.TxRateIndex > CurrRateIdx)
+	{
+		pAd->DrsCounters.TxRateUpPenalty = 0;
+		NdisZeroMemory(pAd->DrsCounters.TxQuality, sizeof(USHORT) * MAX_STEP_OF_TX_RATE_SWITCH);
+		NdisZeroMemory(pAd->DrsCounters.PER, sizeof(UCHAR) * MAX_STEP_OF_TX_RATE_SWITCH);
+			bTxRateChanged = TRUE;
+	}
+	// if rate-down happen, only clear DownRate's bad history
+	else if (pAd->CommonCfg.TxRateIndex < CurrRateIdx)
+	{
+		DBGPRINT_RAW(RT_DEBUG_TRACE,("QuickDRS: --TX rate from %d to %d \n", CurrRateIdx, pAd->CommonCfg.TxRateIndex));
+		
+		pAd->DrsCounters.TxRateUpPenalty = 0;           // no penalty
+		pAd->DrsCounters.TxQuality[pAd->CommonCfg.TxRateIndex] = 0;
+		pAd->DrsCounters.PER[pAd->CommonCfg.TxRateIndex] = 0;
+			bTxRateChanged = TRUE;
+	}
+	else
+	{
+		bTxRateChanged = FALSE;
+	}
+
+	pNextTxRate = (PRTMP_TX_RATE_SWITCH) &pTable[(pAd->CommonCfg.TxRateIndex+1)*5];
+	if (bTxRateChanged && pNextTxRate)
+	{
+			MlmeSetTxRate(pAd, pEntry, pNextTxRate);
+		}
+	}
+}
+
+/*
+	==========================================================================
+	Description:
+		This routine is executed periodically inside MlmePeriodicExec() after 
+		association with an AP.
+		It checks if StaCfg.Psm is consistent with user policy (recorded in
+		StaCfg.WindowsPowerMode). If not, enforce user policy. However, 
+		there're some conditions to consider:
+		1. we don't support power-saving in ADHOC mode, so Psm=PWR_ACTIVE all
+		   the time when Mibss==TRUE
+		2. When link up in INFRA mode, Psm should not be switch to PWR_SAVE
+		   if outgoing traffic available in TxRing or MgmtRing.
+	Output:
+		1. change pAd->StaCfg.Psm to PWR_SAVE or leave it untouched
+
+	IRQL = DISPATCH_LEVEL
+
+	==========================================================================
+ */
+VOID MlmeCheckPsmChange(
+	IN PRTMP_ADAPTER pAd,
+	IN ULONG	Now32)
+{
+	ULONG	PowerMode;
+
+	// condition -
+	// 1. Psm maybe ON only happen in INFRASTRUCTURE mode
+	// 2. user wants either MAX_PSP or FAST_PSP
+	// 3. but current psm is not in PWR_SAVE
+	// 4. CNTL state machine is not doing SCANning
+	// 5. no TX SUCCESS event for the past 1-sec period
+	PowerMode = pAd->StaCfg.WindowsPowerMode;
+
+	if (INFRA_ON(pAd) &&
+		(PowerMode != Ndis802_11PowerModeCAM) &&
+		(pAd->StaCfg.Psm == PWR_ACTIVE) &&
+//		(! RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS))
+		(pAd->Mlme.CntlMachine.CurrState == CNTL_IDLE)
+#ifdef PCIE_PS_SUPPORT
+		&& RTMP_TEST_PSFLAG(pAd, fRTMP_PS_CAN_GO_SLEEP)
+#endif // PCIE_PS_SUPPORT //
+
+		 /*&&
+		(pAd->RalinkCounters.OneSecTxNoRetryOkCount == 0) &&
+		(pAd->RalinkCounters.OneSecTxRetryOkCount == 0)*/)
+	{
+		NdisGetSystemUpTime(&pAd->Mlme.LastSendNULLpsmTime);
+		pAd->RalinkCounters.RxCountSinceLastNULL = 0;
+		RTMP_SET_PSM_BIT(pAd, PWR_SAVE);
+		if (!(pAd->CommonCfg.bAPSDCapable && pAd->CommonCfg.APEdcaParm.bAPSDCapable))
+		{
+			RTMPSendNullFrame(pAd, pAd->CommonCfg.TxRate, FALSE);
+		}
+		else
+		{
+			RTMPSendNullFrame(pAd, pAd->CommonCfg.TxRate, TRUE);
+		}
+	}
+}
+
+// IRQL = PASSIVE_LEVEL
+// IRQL = DISPATCH_LEVEL
+VOID MlmeSetPsmBit(
+	IN PRTMP_ADAPTER pAd, 
+	IN USHORT psm)
+{
+
+	pAd->StaCfg.Psm = psm;
+
+	DBGPRINT(RT_DEBUG_TRACE, ("MlmeSetPsmBit = %d\n", psm));
+}
+#endif // CONFIG_STA_SUPPORT //
+
+/*
+	==========================================================================
+	Description:
+		This routine calculates TxPER, RxPER of the past N-sec period. And 
+		according to the calculation result, ChannelQuality is calculated here 
+		to decide if current AP is still doing the job. 
+
+		If ChannelQuality is not good, a ROAMing attempt may be tried later.
+	Output:
+		StaCfg.ChannelQuality - 0..100
+
+	IRQL = DISPATCH_LEVEL
+
+	NOTE: This routine decide channle quality based on RX CRC error ratio.
+		Caller should make sure a function call to NICUpdateRawCounters(pAd)
+		is performed right before this routine, so that this routine can decide
+		channel quality based on the most up-to-date information
+	==========================================================================
+ */
+VOID MlmeCalculateChannelQuality(
+	IN PRTMP_ADAPTER pAd,
+	IN PMAC_TABLE_ENTRY pMacEntry,
+	IN ULONG Now32)
+{
+	ULONG TxOkCnt, TxCnt, TxPER, TxPRR;
+	ULONG RxCnt, RxPER;
+	UCHAR NorRssi;
+	CHAR  MaxRssi;
+	RSSI_SAMPLE *pRssiSample = NULL;
+	UINT32 OneSecTxNoRetryOkCount = 0;
+	UINT32 OneSecTxRetryOkCount = 0;
+	UINT32 OneSecTxFailCount = 0;
+	UINT32 OneSecRxOkCnt = 0;
+	UINT32 OneSecRxFcsErrCnt = 0;
+	ULONG ChannelQuality = 0;  // 0..100, Channel Quality Indication for Roaming
+#ifdef CONFIG_STA_SUPPORT
+	ULONG BeaconLostTime = pAd->StaCfg.BeaconLostTime;
+#endif // CONFIG_STA_SUPPORT //
+
+#ifdef CONFIG_STA_SUPPORT
+#ifdef CARRIER_DETECTION_SUPPORT // Roger sync Carrier
+	// longer beacon lost time when carrier detection enabled
+	if (pAd->CommonCfg.CarrierDetect.Enable == TRUE)
+	{
+		BeaconLostTime = pAd->StaCfg.BeaconLostTime + (pAd->StaCfg.BeaconLostTime/2);
+	}
+#endif // CARRIER_DETECTION_SUPPORT //
+#endif // CONFIG_STA_SUPPORT //
+
+#ifdef CONFIG_STA_SUPPORT
+	if (pAd->OpMode == OPMODE_STA)
+	{
+		pRssiSample = &pAd->StaCfg.RssiSample;
+		OneSecTxNoRetryOkCount = pAd->RalinkCounters.OneSecTxNoRetryOkCount;
+		OneSecTxRetryOkCount = pAd->RalinkCounters.OneSecTxRetryOkCount;
+		OneSecTxFailCount = pAd->RalinkCounters.OneSecTxFailCount;
+		OneSecRxOkCnt = pAd->RalinkCounters.OneSecRxOkCnt;
+		OneSecRxFcsErrCnt = pAd->RalinkCounters.OneSecRxFcsErrCnt;
+	}
+#endif // CONFIG_STA_SUPPORT //
+
+	MaxRssi = RTMPMaxRssi(pAd, pRssiSample->LastRssi0,
+								pRssiSample->LastRssi1,
+								pRssiSample->LastRssi2);
+
+	//
+	// calculate TX packet error ratio and TX retry ratio - if too few TX samples, skip TX related statistics
+	//
+	TxOkCnt = OneSecTxNoRetryOkCount + OneSecTxRetryOkCount;
+	TxCnt = TxOkCnt + OneSecTxFailCount;
+	if (TxCnt < 5) 
+	{
+		TxPER = 0;
+		TxPRR = 0;
+	}
+	else 
+	{
+		TxPER = (OneSecTxFailCount * 100) / TxCnt; 
+		TxPRR = ((TxCnt - OneSecTxNoRetryOkCount) * 100) / TxCnt;
+	}
+
+	//
+	// calculate RX PER - don't take RxPER into consideration if too few sample
+	//
+	RxCnt = OneSecRxOkCnt + OneSecRxFcsErrCnt;
+	if (RxCnt < 5)
+		RxPER = 0;	
+	else
+		RxPER = (OneSecRxFcsErrCnt * 100) / RxCnt;
+
+	//
+	// decide ChannelQuality based on: 1)last BEACON received time, 2)last RSSI, 3)TxPER, and 4)RxPER
+	//
+#ifdef CONFIG_STA_SUPPORT
+	if ((pAd->OpMode == OPMODE_STA) &&
+		INFRA_ON(pAd) && 
+		(OneSecTxNoRetryOkCount < 2) && // no heavy traffic
+		RTMP_TIME_AFTER(Now32, pAd->StaCfg.LastBeaconRxTime + BeaconLostTime))
+		/*((pAd->StaCfg.LastBeaconRxTime + BeaconLostTime) < Now32))*/
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("BEACON lost > %ld msec with TxOkCnt=%ld -> CQI=0\n", BeaconLostTime, TxOkCnt)); 
+		ChannelQuality = 0;
+	}
+	else
+#endif // CONFIG_STA_SUPPORT //
+	{
+		// Normalize Rssi
+		if (MaxRssi > -40)
+			NorRssi = 100;
+		else if (MaxRssi < -90)
+			NorRssi = 0;
+		else
+			NorRssi = (MaxRssi + 90) * 2;
+		
+		// ChannelQuality = W1*RSSI + W2*TxPRR + W3*RxPER	 (RSSI 0..100), (TxPER 100..0), (RxPER 100..0)
+		ChannelQuality = (RSSI_WEIGHTING * NorRssi + 
+								   TX_WEIGHTING * (100 - TxPRR) + 
+								   RX_WEIGHTING* (100 - RxPER)) / 100;
+	}
+
+
+#ifdef CONFIG_STA_SUPPORT
+	if (pAd->OpMode == OPMODE_STA)
+		pAd->Mlme.ChannelQuality = (ChannelQuality > 100) ? 100 : ChannelQuality;
+#endif // CONFIG_STA_SUPPORT //
+
+	
+}
+
+
+// IRQL = DISPATCH_LEVEL
+VOID MlmeSetTxPreamble(
+	IN PRTMP_ADAPTER pAd, 
+	IN USHORT TxPreamble)
+{
+	AUTO_RSP_CFG_STRUC csr4;
+
+	//
+	// Always use Long preamble before verifiation short preamble functionality works well.
+	// Todo: remove the following line if short preamble functionality works
+	//
+	//TxPreamble = Rt802_11PreambleLong;
+	
+	RTMP_IO_READ32(pAd, AUTO_RSP_CFG, &csr4.word);
+	if (TxPreamble == Rt802_11PreambleLong)
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("MlmeSetTxPreamble (= LONG PREAMBLE)\n"));
+		OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_SHORT_PREAMBLE_INUSED); 
+		csr4.field.AutoResponderPreamble = 0;
+	}
+	else
+	{
+		// NOTE: 1Mbps should always use long preamble
+		DBGPRINT(RT_DEBUG_TRACE, ("MlmeSetTxPreamble (= SHORT PREAMBLE)\n"));
+		OPSTATUS_SET_FLAG(pAd, fOP_STATUS_SHORT_PREAMBLE_INUSED);
+		csr4.field.AutoResponderPreamble = 1;
+	}
+
+	RTMP_IO_WRITE32(pAd, AUTO_RSP_CFG, csr4.word);
+}
+
+/*
+    ==========================================================================
+    Description:
+        Update basic rate bitmap
+    ==========================================================================
+ */
+ 
+VOID UpdateBasicRateBitmap(
+    IN  PRTMP_ADAPTER   pAdapter)
+{
+    INT  i, j;
+                  /* 1  2  5.5, 11,  6,  9, 12, 18, 24, 36, 48,  54 */
+    UCHAR rate[] = { 2, 4,  11, 22, 12, 18, 24, 36, 48, 72, 96, 108 };
+    UCHAR *sup_p = pAdapter->CommonCfg.SupRate;
+    UCHAR *ext_p = pAdapter->CommonCfg.ExtRate;
+    ULONG bitmap = pAdapter->CommonCfg.BasicRateBitmap;
+
+
+    /* if A mode, always use fix BasicRateBitMap */
+    //if (pAdapter->CommonCfg.Channel == PHY_11A)
+	if (pAdapter->CommonCfg.Channel > 14)
+        pAdapter->CommonCfg.BasicRateBitmap = 0x150; /* 6, 12, 24M */
+    /* End of if */
+
+    if (pAdapter->CommonCfg.BasicRateBitmap > 4095)
+    {
+        /* (2 ^ MAX_LEN_OF_SUPPORTED_RATES) -1 */
+        return;
+    } /* End of if */
+
+    for(i=0; i<MAX_LEN_OF_SUPPORTED_RATES; i++)
+    {
+        sup_p[i] &= 0x7f;
+        ext_p[i] &= 0x7f;
+    } /* End of for */
+
+    for(i=0; i<MAX_LEN_OF_SUPPORTED_RATES; i++)
+    {
+        if (bitmap & (1 << i))
+        {
+            for(j=0; j<MAX_LEN_OF_SUPPORTED_RATES; j++)
+            {
+                if (sup_p[j] == rate[i])
+                    sup_p[j] |= 0x80;
+                /* End of if */
+            } /* End of for */
+
+            for(j=0; j<MAX_LEN_OF_SUPPORTED_RATES; j++)
+            {
+                if (ext_p[j] == rate[i])
+                    ext_p[j] |= 0x80;
+                /* End of if */
+            } /* End of for */
+        } /* End of if */
+    } /* End of for */
+} /* End of UpdateBasicRateBitmap */
+
+// IRQL = PASSIVE_LEVEL
+// IRQL = DISPATCH_LEVEL
+// bLinkUp is to identify the inital link speed.
+// TRUE indicates the rate update at linkup, we should not try to set the rate at 54Mbps.
+VOID MlmeUpdateTxRates(
+	IN PRTMP_ADAPTER 		pAd,
+	IN 	BOOLEAN		 		bLinkUp,
+	IN	UCHAR				apidx)
+{
+	int i, num;
+	UCHAR Rate = RATE_6, MaxDesire = RATE_1, MaxSupport = RATE_1;
+	UCHAR MinSupport = RATE_54;
+	ULONG BasicRateBitmap = 0;
+	UCHAR CurrBasicRate = RATE_1;
+	UCHAR *pSupRate, SupRateLen, *pExtRate, ExtRateLen;
+	PHTTRANSMIT_SETTING		pHtPhy = NULL;
+	PHTTRANSMIT_SETTING		pMaxHtPhy = NULL;
+	PHTTRANSMIT_SETTING		pMinHtPhy = NULL;	
+	BOOLEAN 				*auto_rate_cur_p;
+	UCHAR					HtMcs = MCS_AUTO;
+
+	// find max desired rate
+	UpdateBasicRateBitmap(pAd);
+	
+	num = 0;
+	auto_rate_cur_p = NULL;
+	for (i=0; i<MAX_LEN_OF_SUPPORTED_RATES; i++)
+	{
+		switch (pAd->CommonCfg.DesireRate[i] & 0x7f)
+		{
+			case 2:  Rate = RATE_1;   num++;   break;
+			case 4:  Rate = RATE_2;   num++;   break;
+			case 11: Rate = RATE_5_5; num++;   break;
+			case 22: Rate = RATE_11;  num++;   break;
+			case 12: Rate = RATE_6;   num++;   break;
+			case 18: Rate = RATE_9;   num++;   break;
+			case 24: Rate = RATE_12;  num++;   break;
+			case 36: Rate = RATE_18;  num++;   break;
+			case 48: Rate = RATE_24;  num++;   break;
+			case 72: Rate = RATE_36;  num++;   break;
+			case 96: Rate = RATE_48;  num++;   break;
+			case 108: Rate = RATE_54; num++;   break;
+			//default: Rate = RATE_1;   break;
+		}
+		if (MaxDesire < Rate)  MaxDesire = Rate;
+	}
+
+//===========================================================================
+//===========================================================================
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+		pHtPhy 		= &pAd->StaCfg.HTPhyMode;
+		pMaxHtPhy	= &pAd->StaCfg.MaxHTPhyMode;
+		pMinHtPhy	= &pAd->StaCfg.MinHTPhyMode;		
+		
+		auto_rate_cur_p = &pAd->StaCfg.bAutoTxRateSwitch;
+		HtMcs 		= pAd->StaCfg.DesiredTransmitSetting.field.MCS;
+
+		if ((pAd->StaCfg.BssType == BSS_ADHOC) &&
+			(pAd->CommonCfg.PhyMode == PHY_11B) && 
+		(MaxDesire > RATE_11))
+		{
+			MaxDesire = RATE_11;
+		}
+	}
+#endif // CONFIG_STA_SUPPORT //
+
+	pAd->CommonCfg.MaxDesiredRate = MaxDesire;
+	pMinHtPhy->word = 0;
+	pMaxHtPhy->word = 0;
+	pHtPhy->word = 0;
+
+	// Auto rate switching is enabled only if more than one DESIRED RATES are 
+	// specified; otherwise disabled
+	if (num <= 1)
+	{
+		//OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_TX_RATE_SWITCH_ENABLED);
+		//pAd->CommonCfg.bAutoTxRateSwitch	= FALSE;
+		*auto_rate_cur_p = FALSE;
+	}
+	else
+	{
+		//OPSTATUS_SET_FLAG(pAd, fOP_STATUS_TX_RATE_SWITCH_ENABLED); 
+		//pAd->CommonCfg.bAutoTxRateSwitch	= TRUE;
+		*auto_rate_cur_p = TRUE;
+	}
+
+	if (HtMcs != MCS_AUTO)
+	{
+		//OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_TX_RATE_SWITCH_ENABLED);
+		//pAd->CommonCfg.bAutoTxRateSwitch	= FALSE;
+		*auto_rate_cur_p = FALSE;
+	}
+	else
+	{
+		//OPSTATUS_SET_FLAG(pAd, fOP_STATUS_TX_RATE_SWITCH_ENABLED); 
+		//pAd->CommonCfg.bAutoTxRateSwitch	= TRUE;
+		*auto_rate_cur_p = TRUE;
+	}
+
+#ifdef CONFIG_STA_SUPPORT
+	if ((ADHOC_ON(pAd) || INFRA_ON(pAd)) && (pAd->OpMode == OPMODE_STA))
+	{
+		pSupRate = &pAd->StaActive.SupRate[0];
+		pExtRate = &pAd->StaActive.ExtRate[0];
+		SupRateLen = pAd->StaActive.SupRateLen;
+		ExtRateLen = pAd->StaActive.ExtRateLen;
+	}
+	else
+#endif // CONFIG_STA_SUPPORT //	
+	{
+		pSupRate = &pAd->CommonCfg.SupRate[0];
+		pExtRate = &pAd->CommonCfg.ExtRate[0];
+		SupRateLen = pAd->CommonCfg.SupRateLen;
+		ExtRateLen = pAd->CommonCfg.ExtRateLen;
+	}
+
+	// find max supported rate
+	for (i=0; i<SupRateLen; i++)
+	{
+		switch (pSupRate[i] & 0x7f)
+		{
+			case 2:   Rate = RATE_1;	if (pSupRate[i] & 0x80) BasicRateBitmap |= 0x0001;	 break;
+			case 4:   Rate = RATE_2;	if (pSupRate[i] & 0x80) BasicRateBitmap |= 0x0002;	 break;
+			case 11:  Rate = RATE_5_5;	if (pSupRate[i] & 0x80) BasicRateBitmap |= 0x0004;	 break;
+			case 22:  Rate = RATE_11;	if (pSupRate[i] & 0x80) BasicRateBitmap |= 0x0008;	 break;
+			case 12:  Rate = RATE_6;	/*if (pSupRate[i] & 0x80)*/  BasicRateBitmap |= 0x0010;  break;
+			case 18:  Rate = RATE_9;	if (pSupRate[i] & 0x80) BasicRateBitmap |= 0x0020;	 break;
+			case 24:  Rate = RATE_12;	/*if (pSupRate[i] & 0x80)*/  BasicRateBitmap |= 0x0040;  break;
+			case 36:  Rate = RATE_18;	if (pSupRate[i] & 0x80) BasicRateBitmap |= 0x0080;	 break;
+			case 48:  Rate = RATE_24;	/*if (pSupRate[i] & 0x80)*/  BasicRateBitmap |= 0x0100;  break;
+			case 72:  Rate = RATE_36;	if (pSupRate[i] & 0x80) BasicRateBitmap |= 0x0200;	 break;
+			case 96:  Rate = RATE_48;	if (pSupRate[i] & 0x80) BasicRateBitmap |= 0x0400;	 break;
+			case 108: Rate = RATE_54;	if (pSupRate[i] & 0x80) BasicRateBitmap |= 0x0800;	 break;
+			default:  Rate = RATE_1;	break;
+		}
+		if (MaxSupport < Rate)	MaxSupport = Rate;
+
+		if (MinSupport > Rate) MinSupport = Rate;		
+	}
+	
+	for (i=0; i<ExtRateLen; i++)
+	{
+		switch (pExtRate[i] & 0x7f)
+		{
+			case 2:   Rate = RATE_1;	if (pExtRate[i] & 0x80) BasicRateBitmap |= 0x0001;	 break;
+			case 4:   Rate = RATE_2;	if (pExtRate[i] & 0x80) BasicRateBitmap |= 0x0002;	 break;
+			case 11:  Rate = RATE_5_5;	if (pExtRate[i] & 0x80) BasicRateBitmap |= 0x0004;	 break;
+			case 22:  Rate = RATE_11;	if (pExtRate[i] & 0x80) BasicRateBitmap |= 0x0008;	 break;
+			case 12:  Rate = RATE_6;	/*if (pExtRate[i] & 0x80)*/  BasicRateBitmap |= 0x0010;  break;
+			case 18:  Rate = RATE_9;	if (pExtRate[i] & 0x80) BasicRateBitmap |= 0x0020;	 break;
+			case 24:  Rate = RATE_12;	/*if (pExtRate[i] & 0x80)*/  BasicRateBitmap |= 0x0040;  break;
+			case 36:  Rate = RATE_18;	if (pExtRate[i] & 0x80) BasicRateBitmap |= 0x0080;	 break;
+			case 48:  Rate = RATE_24;	/*if (pExtRate[i] & 0x80)*/  BasicRateBitmap |= 0x0100;  break;
+			case 72:  Rate = RATE_36;	if (pExtRate[i] & 0x80) BasicRateBitmap |= 0x0200;	 break;
+			case 96:  Rate = RATE_48;	if (pExtRate[i] & 0x80) BasicRateBitmap |= 0x0400;	 break;
+			case 108: Rate = RATE_54;	if (pExtRate[i] & 0x80) BasicRateBitmap |= 0x0800;	 break;
+			default:  Rate = RATE_1;	break;
+		}
+		if (MaxSupport < Rate)	MaxSupport = Rate;
+
+		if (MinSupport > Rate) MinSupport = Rate;		
+	}
+
+	RTMP_IO_WRITE32(pAd, LEGACY_BASIC_RATE, BasicRateBitmap);
+	
+	// bug fix 
+	// pAd->CommonCfg.BasicRateBitmap = BasicRateBitmap;
+
+	// calculate the exptected ACK rate for each TX rate. This info is used to caculate
+	// the DURATION field of outgoing uniicast DATA/MGMT frame
+	for (i=0; i<MAX_LEN_OF_SUPPORTED_RATES; i++)
+	{
+		if (BasicRateBitmap & (0x01 << i))
+			CurrBasicRate = (UCHAR)i;
+		pAd->CommonCfg.ExpectedACKRate[i] = CurrBasicRate;
+	}
+
+	DBGPRINT(RT_DEBUG_TRACE,("MlmeUpdateTxRates[MaxSupport = %d] = MaxDesire %d Mbps\n", RateIdToMbps[MaxSupport], RateIdToMbps[MaxDesire]));
+	// max tx rate = min {max desire rate, max supported rate}
+	if (MaxSupport < MaxDesire)
+		pAd->CommonCfg.MaxTxRate = MaxSupport;
+	else
+		pAd->CommonCfg.MaxTxRate = MaxDesire;
+
+	pAd->CommonCfg.MinTxRate = MinSupport;
+	// 2003-07-31 john - 2500 doesn't have good sensitivity at high OFDM rates. to increase the success
+	// ratio of initial DHCP packet exchange, TX rate starts from a lower rate depending
+	// on average RSSI
+	//	 1. RSSI >= -70db, start at 54 Mbps (short distance)
+	//	 2. -70 > RSSI >= -75, start at 24 Mbps (mid distance)
+	//	 3. -75 > RSSI, start at 11 Mbps (long distance)
+	//if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_TX_RATE_SWITCH_ENABLED)/* &&
+	//	OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED)*/)
+	if (*auto_rate_cur_p)
+	{
+		short dbm = 0;
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+			dbm = pAd->StaCfg.RssiSample.AvgRssi0 - pAd->BbpRssiToDbmDelta;
+#endif // CONFIG_STA_SUPPORT //
+		if (bLinkUp == TRUE)
+			pAd->CommonCfg.TxRate = RATE_24;
+		else
+			pAd->CommonCfg.TxRate = pAd->CommonCfg.MaxTxRate; 
+
+		if (dbm < -75)
+			pAd->CommonCfg.TxRate = RATE_11;
+		else if (dbm < -70)
+			pAd->CommonCfg.TxRate = RATE_24;
+
+		// should never exceed MaxTxRate (consider 11B-only mode)
+		if (pAd->CommonCfg.TxRate > pAd->CommonCfg.MaxTxRate)
+			pAd->CommonCfg.TxRate = pAd->CommonCfg.MaxTxRate; 
+
+		pAd->CommonCfg.TxRateIndex = 0;
+	}
+	else
+	{
+		pAd->CommonCfg.TxRate = pAd->CommonCfg.MaxTxRate;
+		//pHtPhy->field.MCS	= (pAd->CommonCfg.MaxTxRate > 3) ? (pAd->CommonCfg.MaxTxRate - 4) : pAd->CommonCfg.MaxTxRate;
+		//pHtPhy->field.MODE	= (pAd->CommonCfg.MaxTxRate > 3) ? MODE_OFDM : MODE_CCK;
+
+		/* Choose the Desire Tx MCS in CCK/OFDM mode */
+		if (num > RATE_6)
+		{
+			if (HtMcs <= MCS_7)		
+				MaxDesire = RxwiMCSToOfdmRate[HtMcs];
+			else
+				MaxDesire = MinSupport;
+		}
+		else
+		{
+			if (HtMcs <= MCS_3)		
+				MaxDesire = HtMcs;
+			else
+				MaxDesire = MinSupport;
+		}
+		
+		pAd->MacTab.Content[BSSID_WCID].HTPhyMode.field.STBC	= pHtPhy->field.STBC;
+		pAd->MacTab.Content[BSSID_WCID].HTPhyMode.field.ShortGI	= pHtPhy->field.ShortGI;
+		pAd->MacTab.Content[BSSID_WCID].HTPhyMode.field.MCS		= pHtPhy->field.MCS;
+		pAd->MacTab.Content[BSSID_WCID].HTPhyMode.field.MODE	= pHtPhy->field.MODE;
+	}
+
+	if (pAd->CommonCfg.TxRate <= RATE_11)
+	{
+		pMaxHtPhy->field.MODE = MODE_CCK;
+
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		{
+		pMaxHtPhy->field.MCS = pAd->CommonCfg.TxRate;
+		pMinHtPhy->field.MCS = pAd->CommonCfg.MinTxRate;
+	}
+#endif // CONFIG_STA_SUPPORT //
+
+	}
+	else
+	{
+		pMaxHtPhy->field.MODE = MODE_OFDM;
+
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		{
+		pMaxHtPhy->field.MCS = OfdmRateToRxwiMCS[pAd->CommonCfg.TxRate];
+		if (pAd->CommonCfg.MinTxRate >= RATE_6 && (pAd->CommonCfg.MinTxRate <= RATE_54))
+			{pMinHtPhy->field.MCS = OfdmRateToRxwiMCS[pAd->CommonCfg.MinTxRate];}
+		else
+			{pMinHtPhy->field.MCS = pAd->CommonCfg.MinTxRate;}
+	}
+#endif // CONFIG_STA_SUPPORT //
+
+	}
+
+	pHtPhy->word = (pMaxHtPhy->word);
+	if (bLinkUp && (pAd->OpMode == OPMODE_STA))
+	{
+			pAd->MacTab.Content[BSSID_WCID].HTPhyMode.word = pHtPhy->word;
+			pAd->MacTab.Content[BSSID_WCID].MaxHTPhyMode.word = pMaxHtPhy->word;
+			pAd->MacTab.Content[BSSID_WCID].MinHTPhyMode.word = pMinHtPhy->word;
+	}
+	else
+	{
+		switch (pAd->CommonCfg.PhyMode) 
+		{
+			case PHY_11BG_MIXED:
+			case PHY_11B:
+#ifdef DOT11_N_SUPPORT
+			case PHY_11BGN_MIXED:
+#endif // DOT11_N_SUPPORT //
+				pAd->CommonCfg.MlmeRate = RATE_1;
+				pAd->CommonCfg.MlmeTransmit.field.MODE = MODE_CCK;
+				pAd->CommonCfg.MlmeTransmit.field.MCS = RATE_1;
+				
+//#ifdef	WIFI_TEST			
+				pAd->CommonCfg.RtsRate = RATE_11;
+//#else
+//				pAd->CommonCfg.RtsRate = RATE_1;
+//#endif
+				break;
+			case PHY_11G:
+			case PHY_11A:
+#ifdef DOT11_N_SUPPORT
+			case PHY_11AGN_MIXED:
+			case PHY_11GN_MIXED:
+			case PHY_11N_2_4G:
+			case PHY_11AN_MIXED:
+			case PHY_11N_5G:	
+#endif // DOT11_N_SUPPORT //
+				pAd->CommonCfg.MlmeRate = RATE_6;
+				pAd->CommonCfg.RtsRate = RATE_6;
+				pAd->CommonCfg.MlmeTransmit.field.MODE = MODE_OFDM;
+				pAd->CommonCfg.MlmeTransmit.field.MCS = OfdmRateToRxwiMCS[pAd->CommonCfg.MlmeRate];
+				break;
+			case PHY_11ABG_MIXED:
+#ifdef DOT11_N_SUPPORT
+			case PHY_11ABGN_MIXED:
+#endif // DOT11_N_SUPPORT //
+				if (pAd->CommonCfg.Channel <= 14)
+				{
+					pAd->CommonCfg.MlmeRate = RATE_1;
+					pAd->CommonCfg.RtsRate = RATE_1;
+					pAd->CommonCfg.MlmeTransmit.field.MODE = MODE_CCK;
+					pAd->CommonCfg.MlmeTransmit.field.MCS = RATE_1;
+				}
+				else
+				{
+					pAd->CommonCfg.MlmeRate = RATE_6;
+					pAd->CommonCfg.RtsRate = RATE_6;
+					pAd->CommonCfg.MlmeTransmit.field.MODE = MODE_OFDM;
+					pAd->CommonCfg.MlmeTransmit.field.MCS = OfdmRateToRxwiMCS[pAd->CommonCfg.MlmeRate];
+				}
+				break;
+			default: // error
+				pAd->CommonCfg.MlmeRate = RATE_6;
+                        	pAd->CommonCfg.MlmeTransmit.field.MODE = MODE_OFDM;
+				pAd->CommonCfg.MlmeTransmit.field.MCS = OfdmRateToRxwiMCS[pAd->CommonCfg.MlmeRate];
+				pAd->CommonCfg.RtsRate = RATE_1;
+				break;
+		}
+		//
+		// Keep Basic Mlme Rate.
+		//
+		pAd->MacTab.Content[MCAST_WCID].HTPhyMode.word = pAd->CommonCfg.MlmeTransmit.word;
+		if (pAd->CommonCfg.MlmeTransmit.field.MODE == MODE_OFDM)
+			pAd->MacTab.Content[MCAST_WCID].HTPhyMode.field.MCS = OfdmRateToRxwiMCS[RATE_24];
+		else
+			pAd->MacTab.Content[MCAST_WCID].HTPhyMode.field.MCS = RATE_1;
+		pAd->CommonCfg.BasicMlmeRate = pAd->CommonCfg.MlmeRate;
+	}
+
+	DBGPRINT(RT_DEBUG_TRACE, (" MlmeUpdateTxRates (MaxDesire=%d, MaxSupport=%d, MaxTxRate=%d, MinRate=%d, Rate Switching =%d)\n", 
+			 RateIdToMbps[MaxDesire], RateIdToMbps[MaxSupport], RateIdToMbps[pAd->CommonCfg.MaxTxRate], RateIdToMbps[pAd->CommonCfg.MinTxRate], 
+			 /*OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_TX_RATE_SWITCH_ENABLED)*/*auto_rate_cur_p));
+	DBGPRINT(RT_DEBUG_TRACE, (" MlmeUpdateTxRates (TxRate=%d, RtsRate=%d, BasicRateBitmap=0x%04lx)\n", 
+			 RateIdToMbps[pAd->CommonCfg.TxRate], RateIdToMbps[pAd->CommonCfg.RtsRate], BasicRateBitmap));
+	DBGPRINT(RT_DEBUG_TRACE, ("MlmeUpdateTxRates (MlmeTransmit=0x%x, MinHTPhyMode=%x, MaxHTPhyMode=0x%x, HTPhyMode=0x%x)\n", 
+			 pAd->CommonCfg.MlmeTransmit.word, pAd->MacTab.Content[BSSID_WCID].MinHTPhyMode.word ,pAd->MacTab.Content[BSSID_WCID].MaxHTPhyMode.word ,pAd->MacTab.Content[BSSID_WCID].HTPhyMode.word ));
+}
+
+#ifdef DOT11_N_SUPPORT
+/*
+	==========================================================================
+	Description:
+		This function update HT Rate setting.
+		Input Wcid value is valid for 2 case :
+		1. it's used for Station in infra mode that copy AP rate to Mactable.
+		2. OR Station 	in adhoc mode to copy peer's HT rate to Mactable. 
+
+	IRQL = DISPATCH_LEVEL
+
+	==========================================================================
+ */
+VOID MlmeUpdateHtTxRates(
+	IN PRTMP_ADAPTER 		pAd,
+	IN	UCHAR				apidx)
+{
+	UCHAR	StbcMcs; //j, StbcMcs, bitmask;
+	CHAR 	i; // 3*3
+	RT_HT_CAPABILITY 	*pRtHtCap = NULL;
+	RT_HT_PHY_INFO		*pActiveHtPhy = NULL;	
+	ULONG		BasicMCS;
+	UCHAR j, bitmask;
+	PRT_HT_PHY_INFO			pDesireHtPhy = NULL;
+	PHTTRANSMIT_SETTING		pHtPhy = NULL;
+	PHTTRANSMIT_SETTING		pMaxHtPhy = NULL;
+	PHTTRANSMIT_SETTING		pMinHtPhy = NULL;	
+	BOOLEAN 				*auto_rate_cur_p;
+	
+	DBGPRINT(RT_DEBUG_TRACE,("MlmeUpdateHtTxRates===> \n"));
+
+	auto_rate_cur_p = NULL;
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{		
+		pDesireHtPhy	= &pAd->StaCfg.DesiredHtPhyInfo;
+		pActiveHtPhy	= &pAd->StaCfg.DesiredHtPhyInfo;
+		pHtPhy 		= &pAd->StaCfg.HTPhyMode;
+		pMaxHtPhy	= &pAd->StaCfg.MaxHTPhyMode;
+		pMinHtPhy	= &pAd->StaCfg.MinHTPhyMode;		
+		
+		auto_rate_cur_p = &pAd->StaCfg.bAutoTxRateSwitch;
+	}		
+#endif // CONFIG_STA_SUPPORT //
+
+#ifdef CONFIG_STA_SUPPORT	
+	if ((ADHOC_ON(pAd) || INFRA_ON(pAd)) && (pAd->OpMode == OPMODE_STA))
+	{
+		if (pAd->StaActive.SupportedPhyInfo.bHtEnable == FALSE)
+			return;
+
+		pRtHtCap = &pAd->StaActive.SupportedHtPhy;
+		pActiveHtPhy = &pAd->StaActive.SupportedPhyInfo;
+		StbcMcs = (UCHAR)pAd->MlmeAux.AddHtInfo.AddHtInfo3.StbcMcs;
+		BasicMCS =pAd->MlmeAux.AddHtInfo.MCSSet[0]+(pAd->MlmeAux.AddHtInfo.MCSSet[1]<<8)+(StbcMcs<<16);
+		if ((pAd->CommonCfg.DesiredHtPhy.TxSTBC) && (pRtHtCap->RxSTBC) && (pAd->Antenna.field.TxPath == 2))
+			pMaxHtPhy->field.STBC = STBC_USE;
+		else
+			pMaxHtPhy->field.STBC = STBC_NONE;
+	}
+	else
+#endif // CONFIG_STA_SUPPORT //
+	{
+		if (pDesireHtPhy->bHtEnable == FALSE)
+			return;
+
+		pRtHtCap = &pAd->CommonCfg.DesiredHtPhy;
+		StbcMcs = (UCHAR)pAd->CommonCfg.AddHTInfo.AddHtInfo3.StbcMcs;
+		BasicMCS = pAd->CommonCfg.AddHTInfo.MCSSet[0]+(pAd->CommonCfg.AddHTInfo.MCSSet[1]<<8)+(StbcMcs<<16);
+		if ((pAd->CommonCfg.DesiredHtPhy.TxSTBC) && (pRtHtCap->RxSTBC) && (pAd->Antenna.field.TxPath == 2))
+			pMaxHtPhy->field.STBC = STBC_USE;
+		else
+			pMaxHtPhy->field.STBC = STBC_NONE;
+	}
+
+	// Decide MAX ht rate.
+	if ((pRtHtCap->GF) && (pAd->CommonCfg.DesiredHtPhy.GF))
+		pMaxHtPhy->field.MODE = MODE_HTGREENFIELD;
+	else
+		pMaxHtPhy->field.MODE = MODE_HTMIX;
+
+    if ((pAd->CommonCfg.DesiredHtPhy.ChannelWidth) && (pRtHtCap->ChannelWidth))
+		pMaxHtPhy->field.BW = BW_40;
+	else
+		pMaxHtPhy->field.BW = BW_20;
+
+    if (pMaxHtPhy->field.BW == BW_20)
+		pMaxHtPhy->field.ShortGI = (pAd->CommonCfg.DesiredHtPhy.ShortGIfor20 & pRtHtCap->ShortGIfor20);
+	else
+		pMaxHtPhy->field.ShortGI = (pAd->CommonCfg.DesiredHtPhy.ShortGIfor40 & pRtHtCap->ShortGIfor40);
+
+	if (pDesireHtPhy->MCSSet[4] != 0)
+	{
+		pMaxHtPhy->field.MCS = 32;	
+	}
+
+	for (i=23; i>=0; i--) // 3*3
+	{ 
+		j = i/8; 
+		bitmask = (1<<(i-(j*8)));
+
+		if ((pActiveHtPhy->MCSSet[j] & bitmask) && (pDesireHtPhy->MCSSet[j] & bitmask))
+		{
+			pMaxHtPhy->field.MCS = i;
+			break;
+		}
+
+		if (i==0)
+			break;
+	}
+
+	// Copy MIN ht rate.  rt2860???
+	pMinHtPhy->field.BW = BW_20;
+	pMinHtPhy->field.MCS = 0;
+	pMinHtPhy->field.STBC = 0;
+	pMinHtPhy->field.ShortGI = 0;
+	//If STA assigns fixed rate. update to fixed here.
+#ifdef CONFIG_STA_SUPPORT
+	if ( (pAd->OpMode == OPMODE_STA) && (pDesireHtPhy->MCSSet[0] != 0xff))
+	{
+		if (pDesireHtPhy->MCSSet[4] != 0)
+		{
+			pMaxHtPhy->field.MCS = 32;
+			pMinHtPhy->field.MCS = 32;
+			DBGPRINT(RT_DEBUG_TRACE,("MlmeUpdateHtTxRates<=== Use Fixed MCS = %d\n",pMinHtPhy->field.MCS));
+		}
+		
+		for (i=23; (CHAR)i >= 0; i--) // 3*3
+		{	
+			j = i/8;	
+			bitmask = (1<<(i-(j*8)));
+			if ( (pDesireHtPhy->MCSSet[j] & bitmask) && (pActiveHtPhy->MCSSet[j] & bitmask))
+			{
+				pMaxHtPhy->field.MCS = i;
+				pMinHtPhy->field.MCS = i;
+				break;
+			}
+			if (i==0)
+				break;
+		}
+	}
+#endif // CONFIG_STA_SUPPORT //
+	
+	
+	// Decide ht rate
+	pHtPhy->field.STBC = pMaxHtPhy->field.STBC;
+	pHtPhy->field.BW = pMaxHtPhy->field.BW;
+	pHtPhy->field.MODE = pMaxHtPhy->field.MODE;
+	pHtPhy->field.MCS = pMaxHtPhy->field.MCS;
+	pHtPhy->field.ShortGI = pMaxHtPhy->field.ShortGI;
+
+	// use default now. rt2860
+	if (pDesireHtPhy->MCSSet[0] != 0xff)
+		*auto_rate_cur_p = FALSE;
+	else
+		*auto_rate_cur_p = TRUE;
+	
+	DBGPRINT(RT_DEBUG_TRACE, (" MlmeUpdateHtTxRates<---.AMsduSize = %d  \n", pAd->CommonCfg.DesiredHtPhy.AmsduSize ));
+	DBGPRINT(RT_DEBUG_TRACE,("TX: MCS[0] = %x (choose %d), BW = %d, ShortGI = %d, MODE = %d,  \n", pActiveHtPhy->MCSSet[0],pHtPhy->field.MCS,
+		pHtPhy->field.BW, pHtPhy->field.ShortGI, pHtPhy->field.MODE));
+	DBGPRINT(RT_DEBUG_TRACE,("MlmeUpdateHtTxRates<=== \n"));
+}
+
+
+VOID BATableInit(
+	IN PRTMP_ADAPTER pAd, 
+    IN BA_TABLE *Tab) 
+{
+	int i;
+
+	Tab->numAsOriginator = 0;
+	Tab->numAsRecipient = 0;
+	Tab->numDoneOriginator = 0;
+	NdisAllocateSpinLock(&pAd->BATabLock);
+	for (i = 0; i < MAX_LEN_OF_BA_REC_TABLE; i++) 
+	{
+		Tab->BARecEntry[i].REC_BA_Status = Recipient_NONE;
+		NdisAllocateSpinLock(&(Tab->BARecEntry[i].RxReRingLock));
+	}
+	for (i = 0; i < MAX_LEN_OF_BA_ORI_TABLE; i++) 
+	{
+		Tab->BAOriEntry[i].ORI_BA_Status = Originator_NONE;
+	}
+}
+
+VOID BATableExit(	
+	IN RTMP_ADAPTER *pAd)
+{	
+	int i;		
+	for (i=0; i<MAX_LEN_OF_BA_REC_TABLE; i++)	
+	{		
+		NdisFreeSpinLock(&pAd->BATable.BARecEntry[i].RxReRingLock);	
+	}	
+	NdisFreeSpinLock(&pAd->BATabLock);
+}
+#endif // DOT11_N_SUPPORT //
+
+// IRQL = DISPATCH_LEVEL
+VOID MlmeRadioOff(
+	IN PRTMP_ADAPTER pAd)
+{
+	RTMP_MLME_RADIO_OFF(pAd);
+}
+
+// IRQL = DISPATCH_LEVEL
+VOID MlmeRadioOn(
+	IN PRTMP_ADAPTER pAd)
+{	
+	RTMP_MLME_RADIO_ON(pAd);
+}
+
+// ===========================================================================================
+// bss_table.c
+// ===========================================================================================
+
+
+/*! \brief initialize BSS table
+ *	\param p_tab pointer to the table
+ *	\return none
+ *	\pre
+ *	\post
+
+ IRQL = PASSIVE_LEVEL
+ IRQL = DISPATCH_LEVEL
+  
+ */
+VOID BssTableInit(
+	IN BSS_TABLE *Tab) 
+{
+	int i;
+
+	Tab->BssNr = 0;
+    Tab->BssOverlapNr = 0;
+	
+	for (i = 0; i < MAX_LEN_OF_BSS_TABLE; i++) 
+	{
+		UCHAR *pOldAddr = Tab->BssEntry[i].pVarIeFromProbRsp;
+		NdisZeroMemory(&Tab->BssEntry[i], sizeof(BSS_ENTRY));
+		Tab->BssEntry[i].Rssi = -127;	// initial the rssi as a minimum value 
+		if (pOldAddr)
+		{
+			RTMPZeroMemory(pOldAddr, MAX_VIE_LEN);
+			Tab->BssEntry[i].pVarIeFromProbRsp = pOldAddr;
+		}
+	}
+}
+
+
+/*! \brief search the BSS table by SSID
+ *	\param p_tab pointer to the bss table
+ *	\param ssid SSID string 
+ *	\return index of the table, BSS_NOT_FOUND if not in the table
+ *	\pre
+ *	\post
+ *	\note search by sequential search
+
+ IRQL = DISPATCH_LEVEL
+
+ */
+ULONG BssTableSearch(
+	IN BSS_TABLE *Tab, 
+	IN PUCHAR	 pBssid,
+	IN UCHAR	 Channel) 
+{
+	UCHAR i;
+
+	for (i = 0; i < Tab->BssNr; i++) 
+	{
+		//
+		// Some AP that support A/B/G mode that may used the same BSSID on 11A and 11B/G.
+		// We should distinguish this case.
+		//		
+		if ((((Tab->BssEntry[i].Channel <= 14) && (Channel <= 14)) ||
+			 ((Tab->BssEntry[i].Channel > 14) && (Channel > 14))) &&
+			MAC_ADDR_EQUAL(Tab->BssEntry[i].Bssid, pBssid)) 
+		{ 
+			return i;
+		}
+	}
+	return (ULONG)BSS_NOT_FOUND;
+}
+
+ULONG BssSsidTableSearch(
+	IN BSS_TABLE *Tab, 
+	IN PUCHAR	 pBssid,
+	IN PUCHAR	 pSsid,
+	IN UCHAR	 SsidLen,
+	IN UCHAR	 Channel) 
+{
+	UCHAR i;
+
+	for (i = 0; i < Tab->BssNr; i++) 
+	{
+		//
+		// Some AP that support A/B/G mode that may used the same BSSID on 11A and 11B/G.
+		// We should distinguish this case.
+		//		
+		if ((((Tab->BssEntry[i].Channel <= 14) && (Channel <= 14)) ||
+			 ((Tab->BssEntry[i].Channel > 14) && (Channel > 14))) &&
+			MAC_ADDR_EQUAL(Tab->BssEntry[i].Bssid, pBssid) &&
+			SSID_EQUAL(pSsid, SsidLen, Tab->BssEntry[i].Ssid, Tab->BssEntry[i].SsidLen)) 
+		{ 
+			return i;
+		}
+	}
+	return (ULONG)BSS_NOT_FOUND;
+}
+
+ULONG BssTableSearchWithSSID(
+	IN BSS_TABLE *Tab, 
+	IN PUCHAR	 Bssid,
+	IN PUCHAR	 pSsid,
+	IN UCHAR	 SsidLen,
+	IN UCHAR	 Channel)
+{
+	UCHAR i;
+
+	for (i = 0; i < Tab->BssNr; i++) 
+	{
+		if ((((Tab->BssEntry[i].Channel <= 14) && (Channel <= 14)) ||
+			((Tab->BssEntry[i].Channel > 14) && (Channel > 14))) &&
+			MAC_ADDR_EQUAL(&(Tab->BssEntry[i].Bssid), Bssid) &&
+			(SSID_EQUAL(pSsid, SsidLen, Tab->BssEntry[i].Ssid, Tab->BssEntry[i].SsidLen) ||
+			(NdisEqualMemory(pSsid, ZeroSsid, SsidLen)) || 
+			(NdisEqualMemory(Tab->BssEntry[i].Ssid, ZeroSsid, Tab->BssEntry[i].SsidLen))))
+		{ 
+			return i;
+		}
+	}
+	return (ULONG)BSS_NOT_FOUND;
+}
+
+
+ULONG BssSsidTableSearchBySSID(
+	IN BSS_TABLE *Tab,
+	IN PUCHAR	 pSsid,
+	IN UCHAR	 SsidLen)
+{
+	UCHAR i;
+
+	for (i = 0; i < Tab->BssNr; i++) 
+	{
+		if (SSID_EQUAL(pSsid, SsidLen, Tab->BssEntry[i].Ssid, Tab->BssEntry[i].SsidLen)) 
+		{ 
+			return i;
+		}
+	}
+	return (ULONG)BSS_NOT_FOUND;
+}
+
+
+// IRQL = DISPATCH_LEVEL
+VOID BssTableDeleteEntry(
+	IN OUT	BSS_TABLE *Tab, 
+	IN		PUCHAR	  pBssid,
+	IN		UCHAR	  Channel)
+{
+	UCHAR i, j;
+
+	for (i = 0; i < Tab->BssNr; i++) 
+	{
+		if ((Tab->BssEntry[i].Channel == Channel) && 
+			(MAC_ADDR_EQUAL(Tab->BssEntry[i].Bssid, pBssid)))
+		{
+			UCHAR *pOldAddr = NULL;
+			
+			for (j = i; j < Tab->BssNr - 1; j++)
+			{
+				pOldAddr = Tab->BssEntry[j].pVarIeFromProbRsp;
+				NdisMoveMemory(&(Tab->BssEntry[j]), &(Tab->BssEntry[j + 1]), sizeof(BSS_ENTRY));
+				if (pOldAddr)
+				{
+					RTMPZeroMemory(pOldAddr, MAX_VIE_LEN);
+					NdisMoveMemory(pOldAddr, 
+								   Tab->BssEntry[j + 1].pVarIeFromProbRsp, 
+								   Tab->BssEntry[j + 1].VarIeFromProbeRspLen);
+					Tab->BssEntry[j].pVarIeFromProbRsp = pOldAddr;
+				}
+			}			
+
+			pOldAddr = Tab->BssEntry[Tab->BssNr - 1].pVarIeFromProbRsp;
+			NdisZeroMemory(&(Tab->BssEntry[Tab->BssNr - 1]), sizeof(BSS_ENTRY));
+			if (pOldAddr)
+			{
+				RTMPZeroMemory(pOldAddr, MAX_VIE_LEN);
+				Tab->BssEntry[Tab->BssNr - 1].pVarIeFromProbRsp = pOldAddr;
+			}
+			
+			Tab->BssNr -= 1;
+			return;
+		}
+	}
+}
+
+#ifdef DOT11_N_SUPPORT
+/*
+	========================================================================
+	Routine Description:
+		Delete the Originator Entry in BAtable. Or decrease numAs Originator by 1 if needed.
+		
+	Arguments:
+	// IRQL = DISPATCH_LEVEL
+	========================================================================
+*/
+VOID BATableDeleteORIEntry(
+	IN OUT	PRTMP_ADAPTER pAd, 
+	IN		BA_ORI_ENTRY	*pBAORIEntry)
+{
+
+	if (pBAORIEntry->ORI_BA_Status != Originator_NONE)
+	{
+		NdisAcquireSpinLock(&pAd->BATabLock);
+		if (pBAORIEntry->ORI_BA_Status == Originator_Done)
+		{
+			pAd->BATable.numAsOriginator -= 1;
+			DBGPRINT(RT_DEBUG_TRACE, ("BATableDeleteORIEntry numAsOriginator= %ld\n", pAd->BATable.numAsRecipient));
+			// Erase Bitmap flag.
+		}
+		pAd->MacTab.Content[pBAORIEntry->Wcid].TXBAbitmap &= (~(1<<(pBAORIEntry->TID) ));	// If STA mode,  erase flag here
+		pAd->MacTab.Content[pBAORIEntry->Wcid].BAOriWcidArray[pBAORIEntry->TID] = 0;	// If STA mode,  erase flag here
+		pBAORIEntry->ORI_BA_Status = Originator_NONE;
+		pBAORIEntry->Token = 1;
+		// Not clear Sequence here.
+		NdisReleaseSpinLock(&pAd->BATabLock);
+	}
+}
+#endif // DOT11_N_SUPPORT //
+
+/*! \brief
+ *	\param 
+ *	\return
+ *	\pre
+ *	\post
+	 
+ IRQL = DISPATCH_LEVEL
+ 
+ */
+VOID BssEntrySet(
+	IN PRTMP_ADAPTER	pAd, 
+	OUT BSS_ENTRY *pBss, 
+	IN PUCHAR pBssid, 
+	IN CHAR Ssid[], 
+	IN UCHAR SsidLen, 
+	IN UCHAR BssType, 
+	IN USHORT BeaconPeriod, 
+	IN PCF_PARM pCfParm, 
+	IN USHORT AtimWin, 
+	IN USHORT CapabilityInfo, 
+	IN UCHAR SupRate[], 
+	IN UCHAR SupRateLen,
+	IN UCHAR ExtRate[], 
+	IN UCHAR ExtRateLen,
+	IN HT_CAPABILITY_IE *pHtCapability,
+	IN ADD_HT_INFO_IE *pAddHtInfo,	// AP might use this additional ht info IE 
+	IN UCHAR			HtCapabilityLen,
+	IN UCHAR			AddHtInfoLen,
+	IN UCHAR			NewExtChanOffset,
+	IN UCHAR Channel,
+	IN CHAR Rssi,
+	IN LARGE_INTEGER TimeStamp,
+	IN UCHAR CkipFlag,
+	IN PEDCA_PARM pEdcaParm,
+	IN PQOS_CAPABILITY_PARM pQosCapability,
+	IN PQBSS_LOAD_PARM pQbssLoad,
+	IN USHORT LengthVIE,	
+	IN PNDIS_802_11_VARIABLE_IEs pVIE) 
+{
+	COPY_MAC_ADDR(pBss->Bssid, pBssid);
+	// Default Hidden SSID to be TRUE, it will be turned to FALSE after coping SSID
+	pBss->Hidden = 1;	
+	if (SsidLen > 0)
+	{
+		// For hidden SSID AP, it might send beacon with SSID len equal to 0
+		// Or send beacon /probe response with SSID len matching real SSID length,
+		// but SSID is all zero. such as "00-00-00-00" with length 4.
+		// We have to prevent this case overwrite correct table
+		if (NdisEqualMemory(Ssid, ZeroSsid, SsidLen) == 0)
+		{
+		    NdisZeroMemory(pBss->Ssid, MAX_LEN_OF_SSID);
+			NdisMoveMemory(pBss->Ssid, Ssid, SsidLen);
+			pBss->SsidLen = SsidLen;
+			pBss->Hidden = 0;
+		}
+	}
+	else
+	{
+		/* avoid  Hidden SSID form beacon to overwirite correct SSID from probe response */
+		if (NdisEqualMemory(pBss->Ssid, ZeroSsid, pBss->SsidLen))
+		{
+			NdisZeroMemory(pBss->Ssid, MAX_LEN_OF_SSID);
+			pBss->SsidLen = 0;
+		}
+	}
+	
+	pBss->BssType = BssType;
+	pBss->BeaconPeriod = BeaconPeriod;
+	if (BssType == BSS_INFRA) 
+	{
+		if (pCfParm->bValid) 
+		{
+			pBss->CfpCount = pCfParm->CfpCount;
+			pBss->CfpPeriod = pCfParm->CfpPeriod;
+			pBss->CfpMaxDuration = pCfParm->CfpMaxDuration;
+			pBss->CfpDurRemaining = pCfParm->CfpDurRemaining;
+		}
+	} 
+	else 
+	{
+		pBss->AtimWin = AtimWin;
+	}
+
+	pBss->CapabilityInfo = CapabilityInfo;
+	// The privacy bit indicate security is ON, it maight be WEP, TKIP or AES
+	// Combine with AuthMode, they will decide the connection methods.
+	pBss->Privacy = CAP_IS_PRIVACY_ON(pBss->CapabilityInfo);
+	ASSERT(SupRateLen <= MAX_LEN_OF_SUPPORTED_RATES);
+	if (SupRateLen <= MAX_LEN_OF_SUPPORTED_RATES)		
+		NdisMoveMemory(pBss->SupRate, SupRate, SupRateLen);
+	else		
+		NdisMoveMemory(pBss->SupRate, SupRate, MAX_LEN_OF_SUPPORTED_RATES);	
+	pBss->SupRateLen = SupRateLen;
+	ASSERT(ExtRateLen <= MAX_LEN_OF_SUPPORTED_RATES);
+	NdisMoveMemory(pBss->ExtRate, ExtRate, ExtRateLen);
+	pBss->NewExtChanOffset = NewExtChanOffset;
+	pBss->ExtRateLen = ExtRateLen;
+	pBss->Channel = Channel;
+	pBss->CentralChannel = Channel;
+	pBss->Rssi = Rssi;
+	// Update CkipFlag. if not exists, the value is 0x0
+	pBss->CkipFlag = CkipFlag;
+
+	// New for microsoft Fixed IEs
+	NdisMoveMemory(pBss->FixIEs.Timestamp, &TimeStamp, 8);
+	pBss->FixIEs.BeaconInterval = BeaconPeriod;
+	pBss->FixIEs.Capabilities = CapabilityInfo;
+
+	// New for microsoft Variable IEs
+	if (LengthVIE != 0)
+	{
+		pBss->VarIELen = LengthVIE;
+		NdisMoveMemory(pBss->VarIEs, pVIE, pBss->VarIELen);
+	}
+	else
+	{
+		pBss->VarIELen = 0;
+	}
+
+	pBss->AddHtInfoLen = 0;
+	pBss->HtCapabilityLen = 0;
+#ifdef DOT11_N_SUPPORT
+	if (HtCapabilityLen> 0)
+	{
+		pBss->HtCapabilityLen = HtCapabilityLen;
+		NdisMoveMemory(&pBss->HtCapability, pHtCapability, HtCapabilityLen);
+		if (AddHtInfoLen > 0)
+		{
+			pBss->AddHtInfoLen = AddHtInfoLen;
+			NdisMoveMemory(&pBss->AddHtInfo, pAddHtInfo, AddHtInfoLen);
+			
+	 			if ((pAddHtInfo->ControlChan > 2)&& (pAddHtInfo->AddHtInfo.ExtChanOffset == EXTCHA_BELOW) && (pHtCapability->HtCapInfo.ChannelWidth == BW_40))
+	 			{
+	 				pBss->CentralChannel = pAddHtInfo->ControlChan - 2;
+	 			}
+	 			else if ((pAddHtInfo->AddHtInfo.ExtChanOffset == EXTCHA_ABOVE) && (pHtCapability->HtCapInfo.ChannelWidth == BW_40))
+				{
+		 				pBss->CentralChannel = pAddHtInfo->ControlChan + 2;
+				}
+		}
+	}
+#endif // DOT11_N_SUPPORT //
+	
+	BssCipherParse(pBss);
+
+	// new for QOS
+	if (pEdcaParm)
+		NdisMoveMemory(&pBss->EdcaParm, pEdcaParm, sizeof(EDCA_PARM));
+	else
+		pBss->EdcaParm.bValid = FALSE;
+	if (pQosCapability)
+		NdisMoveMemory(&pBss->QosCapability, pQosCapability, sizeof(QOS_CAPABILITY_PARM));
+	else
+		pBss->QosCapability.bValid = FALSE;
+	if (pQbssLoad)
+		NdisMoveMemory(&pBss->QbssLoad, pQbssLoad, sizeof(QBSS_LOAD_PARM));
+	else
+		pBss->QbssLoad.bValid = FALSE;
+
+	{
+		PEID_STRUCT     pEid;
+		USHORT          Length = 0;
+
+
+#ifdef CONFIG_STA_SUPPORT
+		NdisZeroMemory(&pBss->WpaIE.IE[0], MAX_CUSTOM_LEN);
+		NdisZeroMemory(&pBss->RsnIE.IE[0], MAX_CUSTOM_LEN);
+#ifdef EXT_BUILD_CHANNEL_LIST
+		NdisZeroMemory(&pBss->CountryString[0], 3);
+		pBss->bHasCountryIE = FALSE;
+#endif // EXT_BUILD_CHANNEL_LIST //
+#endif // CONFIG_STA_SUPPORT //
+		pEid = (PEID_STRUCT) pVIE;
+		while ((Length + 2 + (USHORT)pEid->Len) <= LengthVIE)    
+		{
+			switch(pEid->Eid)
+			{				
+				case IE_WPA:
+
+#ifdef CONFIG_STA_SUPPORT
+					if (NdisEqualMemory(pEid->Octet, WPA_OUI, 4))
+					{
+						if ((pEid->Len + 2) > MAX_CUSTOM_LEN)
+						{
+							pBss->WpaIE.IELen = 0;
+							break;
+						}
+						pBss->WpaIE.IELen = pEid->Len + 2;
+						NdisMoveMemory(pBss->WpaIE.IE, pEid, pBss->WpaIE.IELen);
+					}
+					break;
+#endif // CONFIG_STA_SUPPORT //
+
+#ifdef CONFIG_STA_SUPPORT
+				case IE_RSN:
+					if (NdisEqualMemory(pEid->Octet + 2, RSN_OUI, 3))
+					{
+						if ((pEid->Len + 2) > MAX_CUSTOM_LEN)
+						{
+							pBss->RsnIE.IELen = 0;
+							break;
+						}
+						pBss->RsnIE.IELen = pEid->Len + 2;
+						NdisMoveMemory(pBss->RsnIE.IE, pEid, pBss->RsnIE.IELen);
+					}
+					break;
+#ifdef EXT_BUILD_CHANNEL_LIST					
+				case IE_COUNTRY:					
+					NdisMoveMemory(&pBss->CountryString[0], pEid->Octet, 3);
+					pBss->bHasCountryIE = TRUE;
+					break;
+#endif // EXT_BUILD_CHANNEL_LIST //
+#endif // CONFIG_STA_SUPPORT //
+			}
+			Length = Length + 2 + (USHORT)pEid->Len;  // Eid[1] + Len[1]+ content[Len]
+			pEid = (PEID_STRUCT)((UCHAR*)pEid + 2 + pEid->Len);        
+		}
+	}
+}
+
+/*! 
+ *	\brief insert an entry into the bss table
+ *	\param p_tab The BSS table
+ *	\param Bssid BSSID
+ *	\param ssid SSID
+ *	\param ssid_len Length of SSID
+ *	\param bss_type
+ *	\param beacon_period
+ *	\param timestamp
+ *	\param p_cf
+ *	\param atim_win
+ *	\param cap
+ *	\param rates
+ *	\param rates_len
+ *	\param channel_idx
+ *	\return none
+ *	\pre
+ *	\post
+ *	\note If SSID is identical, the old entry will be replaced by the new one
+	 
+ IRQL = DISPATCH_LEVEL
+ 
+ */
+ULONG BssTableSetEntry(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT BSS_TABLE *Tab, 
+	IN PUCHAR pBssid, 
+	IN CHAR Ssid[], 
+	IN UCHAR SsidLen, 
+	IN UCHAR BssType, 
+	IN USHORT BeaconPeriod, 
+	IN CF_PARM *CfParm, 
+	IN USHORT AtimWin, 
+	IN USHORT CapabilityInfo, 
+	IN UCHAR SupRate[],
+	IN UCHAR SupRateLen,
+	IN UCHAR ExtRate[],
+	IN UCHAR ExtRateLen,
+	IN HT_CAPABILITY_IE *pHtCapability,
+	IN ADD_HT_INFO_IE *pAddHtInfo,	// AP might use this additional ht info IE 
+	IN UCHAR			HtCapabilityLen,
+	IN UCHAR			AddHtInfoLen,
+	IN UCHAR			NewExtChanOffset,
+	IN UCHAR ChannelNo,
+	IN CHAR Rssi,
+	IN LARGE_INTEGER TimeStamp,
+	IN UCHAR CkipFlag,
+	IN PEDCA_PARM pEdcaParm,
+	IN PQOS_CAPABILITY_PARM pQosCapability,
+	IN PQBSS_LOAD_PARM pQbssLoad,
+	IN USHORT LengthVIE,	
+	IN PNDIS_802_11_VARIABLE_IEs pVIE)
+{
+	ULONG	Idx;
+
+	//Idx = BssTableSearchWithSSID(Tab, pBssid,  (UCHAR *)Ssid, SsidLen, ChannelNo);
+	Idx = BssTableSearch(Tab, pBssid, ChannelNo);
+	if (Idx == BSS_NOT_FOUND) 
+	{
+		if (Tab->BssNr >= MAX_LEN_OF_BSS_TABLE)
+	    {
+			//
+			// It may happen when BSS Table was full.
+			// The desired AP will not be added into BSS Table
+			// In this case, if we found the desired AP then overwrite BSS Table.
+			//
+			if(!OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED))
+			{
+				if (MAC_ADDR_EQUAL(pAd->MlmeAux.Bssid, pBssid) ||
+					SSID_EQUAL(pAd->MlmeAux.Ssid, pAd->MlmeAux.SsidLen, Ssid, SsidLen))
+				{
+					Idx = Tab->BssOverlapNr;
+					BssEntrySet(pAd, &Tab->BssEntry[Idx], pBssid, Ssid, SsidLen, BssType, BeaconPeriod, CfParm, AtimWin, 
+						CapabilityInfo, SupRate, SupRateLen, ExtRate, ExtRateLen,pHtCapability, pAddHtInfo,HtCapabilityLen, AddHtInfoLen,
+						NewExtChanOffset, ChannelNo, Rssi, TimeStamp, CkipFlag, pEdcaParm, pQosCapability, pQbssLoad, LengthVIE, pVIE);
+                    Tab->BssOverlapNr = (Tab->BssOverlapNr++) % MAX_LEN_OF_BSS_TABLE;
+				}
+				return Idx;
+			}
+			else
+			{
+			return BSS_NOT_FOUND;
+			}
+		}
+		Idx = Tab->BssNr;
+		BssEntrySet(pAd, &Tab->BssEntry[Idx], pBssid, Ssid, SsidLen, BssType, BeaconPeriod, CfParm, AtimWin, 
+					CapabilityInfo, SupRate, SupRateLen, ExtRate, ExtRateLen,pHtCapability, pAddHtInfo,HtCapabilityLen, AddHtInfoLen,
+					NewExtChanOffset, ChannelNo, Rssi, TimeStamp, CkipFlag, pEdcaParm, pQosCapability, pQbssLoad, LengthVIE, pVIE);
+		Tab->BssNr++;
+	} 
+	else
+	{
+		BssEntrySet(pAd, &Tab->BssEntry[Idx], pBssid, Ssid, SsidLen, BssType, BeaconPeriod,CfParm, AtimWin, 
+					CapabilityInfo, SupRate, SupRateLen, ExtRate, ExtRateLen,pHtCapability, pAddHtInfo,HtCapabilityLen, AddHtInfoLen,
+					NewExtChanOffset, ChannelNo, Rssi, TimeStamp, CkipFlag, pEdcaParm, pQosCapability, pQbssLoad, LengthVIE, pVIE);
+	}
+
+	return Idx;
+}
+
+#ifdef CONFIG_STA_SUPPORT
+#ifdef DOT11_N_SUPPORT
+#ifdef DOT11N_DRAFT3
+VOID  TriEventInit(
+	IN	PRTMP_ADAPTER	pAd) 
+{
+	UCHAR		i;
+
+	for (i = 0;i < MAX_TRIGGER_EVENT;i++)
+		pAd->CommonCfg.TriggerEventTab.EventA[i].bValid = FALSE;
+	
+	pAd->CommonCfg.TriggerEventTab.EventANo = 0;
+	pAd->CommonCfg.TriggerEventTab.EventBCountDown = 0;
+}
+
+INT TriEventTableSetEntry(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT TRIGGER_EVENT_TAB *Tab, 
+	IN PUCHAR pBssid, 
+	IN HT_CAPABILITY_IE *pHtCapability,
+	IN UCHAR			HtCapabilityLen,
+	IN UCHAR			RegClass,
+	IN UCHAR ChannelNo)
+{
+	// Event A, legacy AP exist.
+	if (HtCapabilityLen == 0)
+	{
+		UCHAR index;
+		
+		/*
+			Check if we already set this entry in the Event Table.
+		*/
+		for (index = 0; index<MAX_TRIGGER_EVENT; index++)
+		{
+			if ((Tab->EventA[index].bValid == TRUE) && 
+				(Tab->EventA[index].Channel == ChannelNo) && 
+				(Tab->EventA[index].RegClass == RegClass)
+			)
+			{
+				DBGPRINT(RT_DEBUG_TRACE, ("ReturnDueToAlreadyInserted(EventIdx=%d,Ch=%d,Reg=%d)\n", 
+											index, ChannelNo, RegClass));
+				return 0;
+			}
+		}
+		
+		/*
+			If not set, add it to the Event table
+		*/
+		if (Tab->EventANo < MAX_TRIGGER_EVENT)
+		{
+			RTMPMoveMemory(Tab->EventA[Tab->EventANo].BSSID, pBssid, 6);
+			Tab->EventA[Tab->EventANo].bValid = TRUE;
+			Tab->EventA[Tab->EventANo].Channel = ChannelNo;
+			if (RegClass != 0)
+			{
+				// Beacon has Regulatory class IE. So use beacon's
+				Tab->EventA[Tab->EventANo].RegClass = RegClass;
+			}
+			else
+			{
+				// Use Station's Regulatory class instead.
+				// If no Reg Class in Beacon, set to "unknown"
+				// TODO:  Need to check if this's valid
+				Tab->EventA[Tab->EventANo].RegClass = 0; // ????????????????? need to check
+			}
+				
+			DBGPRINT(RT_DEBUG_TRACE, ("Insert EventA Entry(EvtIdx=%d,Ch=%d,Reg=%d,Mac=%02x:%02x:%02x:%02x:%02x:%02x\n", 
+											Tab->EventANo, ChannelNo, RegClass, PRINT_MAC(pBssid)));
+			Tab->EventANo ++;
+		}
+	}
+	else if (pHtCapability->HtCapInfo.Forty_Mhz_Intolerant)
+	{
+		// Event B.   My BSS beacon has Intolerant40 bit set
+		DBGPRINT(RT_DEBUG_TRACE, ("Mac(%02x:%02x:%02x:%02x:%02x:%02x)set 40MHzIntolerant,Change EventBCD=%ld\n", 
+						PRINT_MAC(pBssid), pAd->CommonCfg.Dot11BssWidthChanTranDelay));
+		Tab->EventBCountDown = pAd->CommonCfg.Dot11BssWidthChanTranDelay;
+	}
+
+	return 0;
+}
+#endif // DOT11N_DRAFT3 //
+#endif // DOT11_N_SUPPORT //
+
+// IRQL = DISPATCH_LEVEL
+VOID BssTableSsidSort(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT BSS_TABLE *OutTab, 
+	IN	CHAR Ssid[], 
+	IN	UCHAR SsidLen) 
+{
+	INT i;
+	BssTableInit(OutTab);
+
+	if ((SsidLen == 0) && 
+		(pAd->StaCfg.bAutoConnectIfNoSSID == FALSE))
+		return;
+
+	for (i = 0; i < pAd->ScanTab.BssNr; i++) 
+	{
+		BSS_ENTRY *pInBss = &pAd->ScanTab.BssEntry[i];
+		BOOLEAN	bIsHiddenApIncluded = FALSE;
+
+		if (((pAd->CommonCfg.bIEEE80211H == 1) && 
+             RadarChannelCheck(pAd, pInBss->Channel))
+#ifdef CARRIER_DETECTION_SUPPORT // Roger sync Carrier             
+             || (pAd->CommonCfg.CarrierDetect.Enable == TRUE)
+#endif // CARRIER_DETECTION_SUPPORT //
+            )
+		{
+			if (pInBss->Hidden)
+				bIsHiddenApIncluded = TRUE;
+		}
+
+		if ((pInBss->BssType == pAd->StaCfg.BssType) && 
+			(SSID_EQUAL(Ssid, SsidLen, pInBss->Ssid, pInBss->SsidLen) || bIsHiddenApIncluded))
+		{
+			BSS_ENTRY *pOutBss = &OutTab->BssEntry[OutTab->BssNr];
+
+#ifdef WPA_SUPPLICANT_SUPPORT
+			if (pAd->StaCfg.WpaSupplicantUP & 0x80)
+			{
+				// copy matching BSS from InTab to OutTab
+				NdisMoveMemory(pOutBss, pInBss, sizeof(BSS_ENTRY));
+				OutTab->BssNr++;
+				continue;
+			}
+#endif // WPA_SUPPLICANT_SUPPORT //
+
+
+#ifdef EXT_BUILD_CHANNEL_LIST
+			// If no Country IE exists no Connection will be established when IEEE80211dClientMode is strict.
+			if ((pAd->StaCfg.IEEE80211dClientMode == Rt802_11_D_Strict) &&
+				(pInBss->bHasCountryIE == FALSE))
+			{
+				DBGPRINT(RT_DEBUG_TRACE,("StaCfg.IEEE80211dClientMode == Rt802_11_D_Strict, but this AP doesn't have country IE.\n"));
+				continue;
+			}
+#endif // EXT_BUILD_CHANNEL_LIST //
+
+#ifdef DOT11_N_SUPPORT
+			// 2.4G/5G N only mode
+			if ((pInBss->HtCapabilityLen == 0) &&
+				((pAd->CommonCfg.PhyMode == PHY_11N_2_4G) || (pAd->CommonCfg.PhyMode == PHY_11N_5G)))
+			{
+				DBGPRINT(RT_DEBUG_TRACE,("STA is in N-only Mode, this AP don't have Ht capability in Beacon.\n"));
+				continue;
+			}
+
+			if ((pAd->CommonCfg.PhyMode == PHY_11GN_MIXED) &&
+				((pInBss->SupRateLen + pInBss->ExtRateLen) < 12))
+			{
+				DBGPRINT(RT_DEBUG_TRACE,("STA is in GN-only Mode, this AP is in B mode.\n"));
+				continue;
+			}
+#endif // DOT11_N_SUPPORT //
+
+			// New for WPA2
+			// Check the Authmode first
+			if (pAd->StaCfg.AuthMode >= Ndis802_11AuthModeWPA)
+			{
+				// Check AuthMode and AuthModeAux for matching, in case AP support dual-mode
+				if ((pAd->StaCfg.AuthMode != pInBss->AuthMode) && (pAd->StaCfg.AuthMode != pInBss->AuthModeAux))
+					// None matched
+					continue;
+				
+				// Check cipher suite, AP must have more secured cipher than station setting
+				if ((pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA) || (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPAPSK))
+				{
+					// If it's not mixed mode, we should only let BSS pass with the same encryption
+					if (pInBss->WPA.bMixMode == FALSE)
+						if (pAd->StaCfg.WepStatus != pInBss->WPA.GroupCipher)
+							continue;
+						
+					// check group cipher
+					if ((pAd->StaCfg.WepStatus < pInBss->WPA.GroupCipher) &&
+						(pInBss->WPA.GroupCipher != Ndis802_11GroupWEP40Enabled) && 
+						(pInBss->WPA.GroupCipher != Ndis802_11GroupWEP104Enabled))
+						continue;
+
+					// check pairwise cipher, skip if none matched
+					// If profile set to AES, let it pass without question.
+					// If profile set to TKIP, we must find one mateched
+					if ((pAd->StaCfg.WepStatus == Ndis802_11Encryption2Enabled) && 
+						(pAd->StaCfg.WepStatus != pInBss->WPA.PairCipher) && 
+						(pAd->StaCfg.WepStatus != pInBss->WPA.PairCipherAux))
+						continue;						
+				}
+				else if ((pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2) || (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2PSK))
+				{
+					// If it's not mixed mode, we should only let BSS pass with the same encryption
+					if (pInBss->WPA2.bMixMode == FALSE)
+						if (pAd->StaCfg.WepStatus != pInBss->WPA2.GroupCipher)
+							continue;
+						
+					// check group cipher
+					if ((pAd->StaCfg.WepStatus < pInBss->WPA.GroupCipher) &&
+						(pInBss->WPA2.GroupCipher != Ndis802_11GroupWEP40Enabled) && 
+						(pInBss->WPA2.GroupCipher != Ndis802_11GroupWEP104Enabled))
+						continue;
+
+					// check pairwise cipher, skip if none matched
+					// If profile set to AES, let it pass without question.
+					// If profile set to TKIP, we must find one mateched
+					if ((pAd->StaCfg.WepStatus == Ndis802_11Encryption2Enabled) && 
+						(pAd->StaCfg.WepStatus != pInBss->WPA2.PairCipher) && 
+						(pAd->StaCfg.WepStatus != pInBss->WPA2.PairCipherAux))
+						continue;						
+				}
+			}			
+			// Bss Type matched, SSID matched. 
+			// We will check wepstatus for qualification Bss
+			else if (pAd->StaCfg.WepStatus != pInBss->WepStatus)
+			{
+				DBGPRINT(RT_DEBUG_TRACE,("StaCfg.WepStatus=%d, while pInBss->WepStatus=%d\n", pAd->StaCfg.WepStatus, pInBss->WepStatus));
+				//
+				// For the SESv2 case, we will not qualify WepStatus.
+				//
+				if (!pInBss->bSES)
+					continue;
+			}
+
+			// Since the AP is using hidden SSID, and we are trying to connect to ANY
+			// It definitely will fail. So, skip it.
+			// CCX also require not even try to connect it!!
+			if (SsidLen == 0)
+				continue;
+						
+			// copy matching BSS from InTab to OutTab
+			NdisMoveMemory(pOutBss, pInBss, sizeof(BSS_ENTRY));
+
+			OutTab->BssNr++;
+		}
+		else if ((pInBss->BssType == pAd->StaCfg.BssType) && (SsidLen == 0))
+		{
+			BSS_ENTRY *pOutBss = &OutTab->BssEntry[OutTab->BssNr];
+
+
+#ifdef DOT11_N_SUPPORT
+			// 2.4G/5G N only mode
+			if ((pInBss->HtCapabilityLen == 0) &&
+				((pAd->CommonCfg.PhyMode == PHY_11N_2_4G) || (pAd->CommonCfg.PhyMode == PHY_11N_5G)))
+			{
+				DBGPRINT(RT_DEBUG_TRACE,("STA is in N-only Mode, this AP don't have Ht capability in Beacon.\n"));
+				continue;
+			}
+
+			if ((pAd->CommonCfg.PhyMode == PHY_11GN_MIXED) &&
+				((pInBss->SupRateLen + pInBss->ExtRateLen) < 12))
+			{
+				DBGPRINT(RT_DEBUG_TRACE,("STA is in GN-only Mode, this AP is in B mode.\n"));
+				continue;
+			}
+#endif // DOT11_N_SUPPORT //
+
+			// New for WPA2
+			// Check the Authmode first
+			if (pAd->StaCfg.AuthMode >= Ndis802_11AuthModeWPA)
+			{
+				// Check AuthMode and AuthModeAux for matching, in case AP support dual-mode
+				if ((pAd->StaCfg.AuthMode != pInBss->AuthMode) && (pAd->StaCfg.AuthMode != pInBss->AuthModeAux))
+					// None matched
+					continue;
+				
+				// Check cipher suite, AP must have more secured cipher than station setting
+				if ((pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA) || (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPAPSK))
+				{
+					// If it's not mixed mode, we should only let BSS pass with the same encryption
+					if (pInBss->WPA.bMixMode == FALSE)
+						if (pAd->StaCfg.WepStatus != pInBss->WPA.GroupCipher)
+							continue;
+						
+					// check group cipher
+					if (pAd->StaCfg.WepStatus < pInBss->WPA.GroupCipher)
+						continue;
+
+					// check pairwise cipher, skip if none matched
+					// If profile set to AES, let it pass without question.
+					// If profile set to TKIP, we must find one mateched
+					if ((pAd->StaCfg.WepStatus == Ndis802_11Encryption2Enabled) && 
+						(pAd->StaCfg.WepStatus != pInBss->WPA.PairCipher) && 
+						(pAd->StaCfg.WepStatus != pInBss->WPA.PairCipherAux))
+						continue;						
+				}
+				else if ((pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2) || (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2PSK))
+				{
+					// If it's not mixed mode, we should only let BSS pass with the same encryption
+					if (pInBss->WPA2.bMixMode == FALSE)
+						if (pAd->StaCfg.WepStatus != pInBss->WPA2.GroupCipher)
+							continue;
+						
+					// check group cipher
+					if (pAd->StaCfg.WepStatus < pInBss->WPA2.GroupCipher)
+						continue;
+
+					// check pairwise cipher, skip if none matched
+					// If profile set to AES, let it pass without question.
+					// If profile set to TKIP, we must find one mateched
+					if ((pAd->StaCfg.WepStatus == Ndis802_11Encryption2Enabled) && 
+						(pAd->StaCfg.WepStatus != pInBss->WPA2.PairCipher) && 
+						(pAd->StaCfg.WepStatus != pInBss->WPA2.PairCipherAux))
+						continue;						
+				}
+			}
+			// Bss Type matched, SSID matched. 
+			// We will check wepstatus for qualification Bss
+			else if (pAd->StaCfg.WepStatus != pInBss->WepStatus)
+					continue;
+						
+			// copy matching BSS from InTab to OutTab
+			NdisMoveMemory(pOutBss, pInBss, sizeof(BSS_ENTRY));
+
+			OutTab->BssNr++;
+		}
+
+		if (OutTab->BssNr >= MAX_LEN_OF_BSS_TABLE)
+			break;
+	}
+
+	BssTableSortByRssi(OutTab);
+}
+
+
+// IRQL = DISPATCH_LEVEL
+VOID BssTableSortByRssi(
+	IN OUT BSS_TABLE *OutTab) 
+{
+	INT 	  i, j;
+	BSS_ENTRY TmpBss;
+
+	for (i = 0; i < OutTab->BssNr - 1; i++) 
+	{
+		for (j = i+1; j < OutTab->BssNr; j++) 
+		{
+			if (OutTab->BssEntry[j].Rssi > OutTab->BssEntry[i].Rssi) 
+			{
+				NdisMoveMemory(&TmpBss, &OutTab->BssEntry[j], sizeof(BSS_ENTRY));
+				NdisMoveMemory(&OutTab->BssEntry[j], &OutTab->BssEntry[i], sizeof(BSS_ENTRY));
+				NdisMoveMemory(&OutTab->BssEntry[i], &TmpBss, sizeof(BSS_ENTRY));
+			}
+		}
+	}
+}
+#endif // CONFIG_STA_SUPPORT //
+
+
+VOID BssCipherParse(
+	IN OUT	PBSS_ENTRY	pBss)
+{
+	PEID_STRUCT 		 pEid;
+	PUCHAR				pTmp;
+	PRSN_IE_HEADER_STRUCT			pRsnHeader;
+	PCIPHER_SUITE_STRUCT			pCipher;
+	PAKM_SUITE_STRUCT				pAKM;
+	USHORT							Count;
+	INT								Length;
+	NDIS_802_11_ENCRYPTION_STATUS	TmpCipher;
+
+	//
+	// WepStatus will be reset later, if AP announce TKIP or AES on the beacon frame.
+	//
+	if (pBss->Privacy)
+	{
+		pBss->WepStatus 	= Ndis802_11WEPEnabled;
+	}
+	else
+	{
+		pBss->WepStatus 	= Ndis802_11WEPDisabled;
+	}
+	// Set default to disable & open authentication before parsing variable IE
+	pBss->AuthMode		= Ndis802_11AuthModeOpen;
+	pBss->AuthModeAux	= Ndis802_11AuthModeOpen;
+
+	// Init WPA setting
+	pBss->WPA.PairCipher	= Ndis802_11WEPDisabled;
+	pBss->WPA.PairCipherAux = Ndis802_11WEPDisabled;
+	pBss->WPA.GroupCipher	= Ndis802_11WEPDisabled;
+	pBss->WPA.RsnCapability = 0;
+	pBss->WPA.bMixMode		= FALSE;
+
+	// Init WPA2 setting
+	pBss->WPA2.PairCipher	 = Ndis802_11WEPDisabled;
+	pBss->WPA2.PairCipherAux = Ndis802_11WEPDisabled;
+	pBss->WPA2.GroupCipher	 = Ndis802_11WEPDisabled;
+	pBss->WPA2.RsnCapability = 0;
+	pBss->WPA2.bMixMode 	 = FALSE;
+
+	
+	Length = (INT) pBss->VarIELen;
+
+	while (Length > 0)
+	{
+		// Parse cipher suite base on WPA1 & WPA2, they should be parsed differently
+		pTmp = ((PUCHAR) pBss->VarIEs) + pBss->VarIELen - Length;
+		pEid = (PEID_STRUCT) pTmp;
+		switch (pEid->Eid)
+		{
+			case IE_WPA:
+				if (NdisEqualMemory(pEid->Octet, SES_OUI, 3) && (pEid->Len == 7))
+				{
+					pBss->bSES = TRUE;
+					break;
+				}				
+				else if (NdisEqualMemory(pEid->Octet, WPA_OUI, 4) != 1)
+				{
+					// if unsupported vendor specific IE
+					break;
+				}				
+				// Skip OUI, version, and multicast suite
+				// This part should be improved in the future when AP supported multiple cipher suite.
+				// For now, it's OK since almost all APs have fixed cipher suite supported.
+				// pTmp = (PUCHAR) pEid->Octet;
+				pTmp   += 11;
+
+				// Cipher Suite Selectors from Spec P802.11i/D3.2 P26.
+				//	Value	   Meaning
+				//	0			None 
+				//	1			WEP-40
+				//	2			Tkip
+				//	3			WRAP
+				//	4			AES
+				//	5			WEP-104
+				// Parse group cipher
+				switch (*pTmp)
+				{
+					case 1:
+						pBss->WPA.GroupCipher = Ndis802_11GroupWEP40Enabled;
+						break;
+					case 5:
+						pBss->WPA.GroupCipher = Ndis802_11GroupWEP104Enabled;
+						break;
+					case 2:
+						pBss->WPA.GroupCipher = Ndis802_11Encryption2Enabled;
+						break;
+					case 4:
+						pBss->WPA.GroupCipher = Ndis802_11Encryption3Enabled;
+						break;
+					default:
+						break;
+				}
+				// number of unicast suite
+				pTmp   += 1;
+
+				// skip all unicast cipher suites
+				//Count = *(PUSHORT) pTmp;				
+				Count = (pTmp[1]<<8) + pTmp[0];
+				pTmp   += sizeof(USHORT);
+
+				// Parsing all unicast cipher suite
+				while (Count > 0)
+				{
+					// Skip OUI
+					pTmp += 3;
+					TmpCipher = Ndis802_11WEPDisabled;
+					switch (*pTmp)
+					{
+						case 1:
+						case 5: // Although WEP is not allowed in WPA related auth mode, we parse it anyway
+							TmpCipher = Ndis802_11Encryption1Enabled;
+							break;
+						case 2:
+							TmpCipher = Ndis802_11Encryption2Enabled;
+							break;
+						case 4:
+							TmpCipher = Ndis802_11Encryption3Enabled;
+							break;
+						default:
+							break;
+					}
+					if (TmpCipher > pBss->WPA.PairCipher)
+					{
+						// Move the lower cipher suite to PairCipherAux
+						pBss->WPA.PairCipherAux = pBss->WPA.PairCipher;
+						pBss->WPA.PairCipher	= TmpCipher;
+					}
+					else
+					{
+						pBss->WPA.PairCipherAux = TmpCipher;
+					}
+					pTmp++;
+					Count--;
+				}
+				
+				// 4. get AKM suite counts
+				//Count	= *(PUSHORT) pTmp;
+				Count = (pTmp[1]<<8) + pTmp[0];
+				pTmp   += sizeof(USHORT);
+				pTmp   += 3;
+				
+				switch (*pTmp)
+				{
+					case 1:
+						// Set AP support WPA-enterprise mode
+						if (pBss->AuthMode == Ndis802_11AuthModeOpen)
+							pBss->AuthMode = Ndis802_11AuthModeWPA;
+						else
+							pBss->AuthModeAux = Ndis802_11AuthModeWPA;
+						break;
+					case 2:
+						// Set AP support WPA-PSK mode
+						if (pBss->AuthMode == Ndis802_11AuthModeOpen)
+							pBss->AuthMode = Ndis802_11AuthModeWPAPSK;
+						else
+							pBss->AuthModeAux = Ndis802_11AuthModeWPAPSK;
+						break;
+					default:
+						break;
+				}
+				pTmp   += 1;
+
+				// Fixed for WPA-None
+				if (pBss->BssType == BSS_ADHOC)
+				{
+					pBss->AuthMode	  = Ndis802_11AuthModeWPANone;
+					pBss->AuthModeAux = Ndis802_11AuthModeWPANone;
+					pBss->WepStatus   = pBss->WPA.GroupCipher;
+					// Patched bugs for old driver
+					if (pBss->WPA.PairCipherAux == Ndis802_11WEPDisabled)
+						pBss->WPA.PairCipherAux = pBss->WPA.GroupCipher;
+				}
+				else
+					pBss->WepStatus   = pBss->WPA.PairCipher;					
+				
+				// Check the Pair & Group, if different, turn on mixed mode flag
+				if (pBss->WPA.GroupCipher != pBss->WPA.PairCipher)
+					pBss->WPA.bMixMode = TRUE;
+				
+				break;
+
+			case IE_RSN:
+				pRsnHeader = (PRSN_IE_HEADER_STRUCT) pTmp;
+				
+				// 0. Version must be 1
+				if (le2cpu16(pRsnHeader->Version) != 1)
+					break;
+				pTmp   += sizeof(RSN_IE_HEADER_STRUCT);
+
+				// 1. Check group cipher
+				pCipher = (PCIPHER_SUITE_STRUCT) pTmp;
+				if (!RTMPEqualMemory(pTmp, RSN_OUI, 3))
+					break;
+
+				// Parse group cipher
+				switch (pCipher->Type)
+				{
+					case 1:
+						pBss->WPA2.GroupCipher = Ndis802_11GroupWEP40Enabled;
+						break;
+					case 5:
+						pBss->WPA2.GroupCipher = Ndis802_11GroupWEP104Enabled;
+						break;
+					case 2:
+						pBss->WPA2.GroupCipher = Ndis802_11Encryption2Enabled;
+						break;
+					case 4:
+						pBss->WPA2.GroupCipher = Ndis802_11Encryption3Enabled;
+						break;
+					default:
+						break;
+				}
+				// set to correct offset for next parsing
+				pTmp   += sizeof(CIPHER_SUITE_STRUCT);
+
+				// 2. Get pairwise cipher counts
+				//Count = *(PUSHORT) pTmp;
+				Count = (pTmp[1]<<8) + pTmp[0];
+				pTmp   += sizeof(USHORT);			
+
+				// 3. Get pairwise cipher
+				// Parsing all unicast cipher suite
+				while (Count > 0)
+				{
+					// Skip OUI
+					pCipher = (PCIPHER_SUITE_STRUCT) pTmp;
+					TmpCipher = Ndis802_11WEPDisabled;
+					switch (pCipher->Type)
+					{
+						case 1:
+						case 5: // Although WEP is not allowed in WPA related auth mode, we parse it anyway
+							TmpCipher = Ndis802_11Encryption1Enabled;
+							break;
+						case 2:
+							TmpCipher = Ndis802_11Encryption2Enabled;
+							break;
+						case 4:
+							TmpCipher = Ndis802_11Encryption3Enabled;
+							break;
+						default:
+							break;
+					}
+					if (TmpCipher > pBss->WPA2.PairCipher)
+					{
+						// Move the lower cipher suite to PairCipherAux
+						pBss->WPA2.PairCipherAux = pBss->WPA2.PairCipher;
+						pBss->WPA2.PairCipher	 = TmpCipher;
+					}
+					else
+					{
+						pBss->WPA2.PairCipherAux = TmpCipher;
+					}
+					pTmp += sizeof(CIPHER_SUITE_STRUCT);
+					Count--;
+				}
+				
+				// 4. get AKM suite counts
+				//Count	= *(PUSHORT) pTmp;
+				Count = (pTmp[1]<<8) + pTmp[0];
+				pTmp   += sizeof(USHORT);
+
+				// 5. Get AKM ciphers
+				// Parsing all AKM ciphers
+				while (Count > 0)
+				{					
+					pAKM = (PAKM_SUITE_STRUCT) pTmp;
+					if (!RTMPEqualMemory(pTmp, RSN_OUI, 3))
+						break;
+
+					switch (pAKM->Type)
+					{
+						case 0:
+							if (pBss->AuthMode == Ndis802_11AuthModeOpen)
+								pBss->AuthMode = Ndis802_11AuthModeWPANone;
+							else
+								pBss->AuthModeAux = Ndis802_11AuthModeWPANone;
+							break;                                                        
+						case 1:
+							// Set AP support WPA-enterprise mode
+							if (pBss->AuthMode == Ndis802_11AuthModeOpen)
+								pBss->AuthMode = Ndis802_11AuthModeWPA2;
+							else
+								pBss->AuthModeAux = Ndis802_11AuthModeWPA2;
+							break;
+						case 2:
+							// Set AP support WPA-PSK mode
+							if (pBss->AuthMode == Ndis802_11AuthModeOpen)
+								pBss->AuthMode = Ndis802_11AuthModeWPA2PSK;
+							else
+								pBss->AuthModeAux = Ndis802_11AuthModeWPA2PSK;
+							break;
+						default:
+							if (pBss->AuthMode == Ndis802_11AuthModeOpen)
+								pBss->AuthMode = Ndis802_11AuthModeMax;
+							else
+								pBss->AuthModeAux = Ndis802_11AuthModeMax;
+							break;
+					}
+					pTmp   += (Count * sizeof(AKM_SUITE_STRUCT));
+					Count--;
+				}
+
+				// Fixed for WPA-None
+				if (pBss->BssType == BSS_ADHOC)
+				{
+					pBss->WPA.PairCipherAux = pBss->WPA2.PairCipherAux;
+					pBss->WPA.GroupCipher	= pBss->WPA2.GroupCipher;
+					pBss->WepStatus 		= pBss->WPA.GroupCipher;
+					// Patched bugs for old driver
+					if (pBss->WPA.PairCipherAux == Ndis802_11WEPDisabled)
+						pBss->WPA.PairCipherAux = pBss->WPA.GroupCipher;
+				}
+				pBss->WepStatus   = pBss->WPA2.PairCipher;					
+				
+				// 6. Get RSN capability
+				//pBss->WPA2.RsnCapability = *(PUSHORT) pTmp;
+				pBss->WPA2.RsnCapability = (pTmp[1]<<8) + pTmp[0];
+				pTmp += sizeof(USHORT);
+				
+				// Check the Pair & Group, if different, turn on mixed mode flag
+				if (pBss->WPA2.GroupCipher != pBss->WPA2.PairCipher)
+					pBss->WPA2.bMixMode = TRUE;
+				
+				break;
+			default:
+				break;
+		}
+		Length -= (pEid->Len + 2);
+	}
+}
+
+// ===========================================================================================
+// mac_table.c
+// ===========================================================================================
+
+/*! \brief generates a random mac address value for IBSS BSSID
+ *	\param Addr the bssid location
+ *	\return none
+ *	\pre
+ *	\post
+ */
+VOID MacAddrRandomBssid(
+	IN PRTMP_ADAPTER pAd, 
+	OUT PUCHAR pAddr) 
+{
+	INT i;
+
+	for (i = 0; i < MAC_ADDR_LEN; i++) 
+	{
+		pAddr[i] = RandomByte(pAd);
+	}
+
+	pAddr[0] = (pAddr[0] & 0xfe) | 0x02;  // the first 2 bits must be 01xxxxxxxx
+}
+
+/*! \brief init the management mac frame header
+ *	\param p_hdr mac header
+ *	\param subtype subtype of the frame
+ *	\param p_ds destination address, don't care if it is a broadcast address
+ *	\return none
+ *	\pre the station has the following information in the pAd->StaCfg
+ *	 - bssid
+ *	 - station address
+ *	\post
+ *	\note this function initializes the following field
+
+ IRQL = PASSIVE_LEVEL
+ IRQL = DISPATCH_LEVEL
+  
+ */
+VOID MgtMacHeaderInit(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN OUT PHEADER_802_11 pHdr80211, 
+	IN UCHAR SubType, 
+	IN UCHAR ToDs, 
+	IN PUCHAR pDA, 
+	IN PUCHAR pBssid) 
+{
+	NdisZeroMemory(pHdr80211, sizeof(HEADER_802_11));
+	
+	pHdr80211->FC.Type = BTYPE_MGMT;
+	pHdr80211->FC.SubType = SubType;
+//	if (SubType == SUBTYPE_ACK)	// sample, no use, it will conflict with ACTION frame sub type
+//		pHdr80211->FC.Type = BTYPE_CNTL;
+	pHdr80211->FC.ToDs = ToDs;
+	COPY_MAC_ADDR(pHdr80211->Addr1, pDA);
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		COPY_MAC_ADDR(pHdr80211->Addr2, pAd->CurrentAddress);
+#endif // CONFIG_STA_SUPPORT //
+	COPY_MAC_ADDR(pHdr80211->Addr3, pBssid);
+}
+
+// ===========================================================================================
+// mem_mgmt.c
+// ===========================================================================================
+
+/*!***************************************************************************
+ * This routine build an outgoing frame, and fill all information specified 
+ * in argument list to the frame body. The actual frame size is the summation 
+ * of all arguments.
+ * input params:
+ *		Buffer - pointer to a pre-allocated memory segment
+ *		args - a list of <int arg_size, arg> pairs.
+ *		NOTE NOTE NOTE!!!! the last argument must be NULL, otherwise this
+ *						   function will FAIL!!!
+ * return:
+ *		Size of the buffer
+ * usage:  
+ *		MakeOutgoingFrame(Buffer, output_length, 2, &fc, 2, &dur, 6, p_addr1, 6,p_addr2, END_OF_ARGS);
+
+ IRQL = PASSIVE_LEVEL
+ IRQL = DISPATCH_LEVEL
+  
+ ****************************************************************************/
+ULONG MakeOutgoingFrame(
+	OUT UCHAR *Buffer, 
+	OUT ULONG *FrameLen, ...) 
+{
+	UCHAR   *p;
+	int 	leng;
+	ULONG	TotLeng;
+	va_list Args;
+
+	// calculates the total length
+	TotLeng = 0;
+	va_start(Args, FrameLen);
+	do 
+	{
+		leng = va_arg(Args, int);
+		if (leng == END_OF_ARGS) 
+		{
+			break;
+		}
+		p = va_arg(Args, PVOID);
+		NdisMoveMemory(&Buffer[TotLeng], p, leng);
+		TotLeng = TotLeng + leng;
+	} while(TRUE);
+
+	va_end(Args); /* clean up */
+	*FrameLen = TotLeng;
+	return TotLeng;
+}
+
+// ===========================================================================================
+// mlme_queue.c
+// ===========================================================================================
+
+/*! \brief	Initialize The MLME Queue, used by MLME Functions
+ *	\param	*Queue	   The MLME Queue
+ *	\return Always	   Return NDIS_STATE_SUCCESS in this implementation
+ *	\pre
+ *	\post
+ *	\note	Because this is done only once (at the init stage), no need to be locked
+
+ IRQL = PASSIVE_LEVEL
+ 
+ */
+NDIS_STATUS MlmeQueueInit(
+	IN MLME_QUEUE *Queue) 
+{
+	INT i;
+
+	NdisAllocateSpinLock(&Queue->Lock);
+
+	Queue->Num	= 0;
+	Queue->Head = 0;
+	Queue->Tail = 0;
+
+	for (i = 0; i < MAX_LEN_OF_MLME_QUEUE; i++) 
+	{
+		Queue->Entry[i].Occupied = FALSE;
+		Queue->Entry[i].MsgLen = 0;
+		NdisZeroMemory(Queue->Entry[i].Msg, MGMT_DMA_BUFFER_SIZE);
+	}
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+/*! \brief	 Enqueue a message for other threads, if they want to send messages to MLME thread
+ *	\param	*Queue	  The MLME Queue
+ *	\param	 Machine  The State Machine Id
+ *	\param	 MsgType  The Message Type
+ *	\param	 MsgLen   The Message length
+ *	\param	*Msg	  The message pointer
+ *	\return  TRUE if enqueue is successful, FALSE if the queue is full
+ *	\pre
+ *	\post
+ *	\note	 The message has to be initialized
+
+ IRQL = PASSIVE_LEVEL
+ IRQL = DISPATCH_LEVEL
+  
+ */
+BOOLEAN MlmeEnqueue(
+	IN	PRTMP_ADAPTER	pAd,
+	IN ULONG Machine, 
+	IN ULONG MsgType, 
+	IN ULONG MsgLen, 
+	IN VOID *Msg,
+	IN ULONG Priv) 
+{
+	INT Tail;
+	MLME_QUEUE	*Queue = (MLME_QUEUE *)&pAd->Mlme.Queue;
+
+	// Do nothing if the driver is starting halt state.
+	// This might happen when timer already been fired before cancel timer with mlmehalt
+	if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_HALT_IN_PROGRESS | fRTMP_ADAPTER_NIC_NOT_EXIST))
+		return FALSE;
+
+	// First check the size, it MUST not exceed the mlme queue size
+	if (MsgLen > MGMT_DMA_BUFFER_SIZE)
+	{
+		DBGPRINT_ERR(("MlmeEnqueue: msg too large, size = %ld \n", MsgLen));
+		return FALSE;
+	}
+	
+	if (MlmeQueueFull(Queue)) 
+	{
+		return FALSE;
+	}
+
+	NdisAcquireSpinLock(&(Queue->Lock));
+	Tail = Queue->Tail;
+	Queue->Tail++;
+	Queue->Num++;
+	if (Queue->Tail == MAX_LEN_OF_MLME_QUEUE) 
+	{
+		Queue->Tail = 0;
+	}
+	
+	Queue->Entry[Tail].Wcid = RESERVED_WCID;
+	Queue->Entry[Tail].Occupied = TRUE;
+	Queue->Entry[Tail].Machine = Machine;
+	Queue->Entry[Tail].MsgType = MsgType;
+	Queue->Entry[Tail].MsgLen  = MsgLen;	
+	Queue->Entry[Tail].Priv = Priv;
+	
+	if (Msg != NULL)
+	{
+		NdisMoveMemory(Queue->Entry[Tail].Msg, Msg, MsgLen);
+	}
+		
+	NdisReleaseSpinLock(&(Queue->Lock));
+	return TRUE;
+}
+
+/*! \brief	 This function is used when Recv gets a MLME message
+ *	\param	*Queue			 The MLME Queue
+ *	\param	 TimeStampHigh	 The upper 32 bit of timestamp
+ *	\param	 TimeStampLow	 The lower 32 bit of timestamp
+ *	\param	 Rssi			 The receiving RSSI strength
+ *	\param	 MsgLen 		 The length of the message
+ *	\param	*Msg			 The message pointer
+ *	\return  TRUE if everything ok, FALSE otherwise (like Queue Full)
+ *	\pre
+ *	\post
+ 
+ IRQL = DISPATCH_LEVEL
+ 
+ */
+BOOLEAN MlmeEnqueueForRecv(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN ULONG Wcid, 
+	IN ULONG TimeStampHigh, 
+	IN ULONG TimeStampLow,
+	IN UCHAR Rssi0, 
+	IN UCHAR Rssi1, 
+	IN UCHAR Rssi2, 
+	IN ULONG MsgLen, 
+	IN VOID *Msg,
+	IN UCHAR Signal) 
+{
+	INT 		 Tail, Machine;
+	PFRAME_802_11 pFrame = (PFRAME_802_11)Msg;
+	INT		 MsgType;
+	MLME_QUEUE	*Queue = (MLME_QUEUE *)&pAd->Mlme.Queue;
+
+#ifdef RALINK_ATE			
+	/* Nothing to do in ATE mode */
+	if(ATE_ON(pAd))
+		return FALSE;
+#endif // RALINK_ATE //
+
+	// Do nothing if the driver is starting halt state.
+	// This might happen when timer already been fired before cancel timer with mlmehalt
+	if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_HALT_IN_PROGRESS | fRTMP_ADAPTER_NIC_NOT_EXIST))
+	{
+		DBGPRINT_ERR(("MlmeEnqueueForRecv: fRTMP_ADAPTER_HALT_IN_PROGRESS\n"));
+		return FALSE;
+	}
+
+	// First check the size, it MUST not exceed the mlme queue size
+	if (MsgLen > MGMT_DMA_BUFFER_SIZE)
+	{
+		DBGPRINT_ERR(("MlmeEnqueueForRecv: frame too large, size = %ld \n", MsgLen));
+		return FALSE;
+	}
+
+	if (MlmeQueueFull(Queue)) 
+	{
+		return FALSE;
+	}
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+		if (!MsgTypeSubst(pAd, pFrame, &Machine, &MsgType)) 
+		{
+			DBGPRINT_ERR(("MlmeEnqueueForRecv: un-recongnized mgmt->subtype=%d\n",pFrame->Hdr.FC.SubType));
+			return FALSE;
+		}
+	}
+#endif // CONFIG_STA_SUPPORT //
+
+	// OK, we got all the informations, it is time to put things into queue
+	NdisAcquireSpinLock(&(Queue->Lock));
+	Tail = Queue->Tail;
+	Queue->Tail++;
+	Queue->Num++;
+	if (Queue->Tail == MAX_LEN_OF_MLME_QUEUE) 
+	{
+		Queue->Tail = 0;
+	}
+	Queue->Entry[Tail].Occupied = TRUE;
+	Queue->Entry[Tail].Machine = Machine;
+	Queue->Entry[Tail].MsgType = MsgType;
+	Queue->Entry[Tail].MsgLen  = MsgLen;
+	Queue->Entry[Tail].TimeStamp.u.LowPart = TimeStampLow;
+	Queue->Entry[Tail].TimeStamp.u.HighPart = TimeStampHigh;
+	Queue->Entry[Tail].Rssi0 = Rssi0;
+	Queue->Entry[Tail].Rssi1 = Rssi1;
+	Queue->Entry[Tail].Rssi2 = Rssi2;
+	Queue->Entry[Tail].Signal = Signal;
+	Queue->Entry[Tail].Wcid = (UCHAR)Wcid;
+
+	Queue->Entry[Tail].Channel = pAd->LatchRfRegs.Channel;
+	
+	if (Msg != NULL)
+	{
+		NdisMoveMemory(Queue->Entry[Tail].Msg, Msg, MsgLen);
+	}
+
+	NdisReleaseSpinLock(&(Queue->Lock));
+
+	RTMP_MLME_HANDLER(pAd);
+
+	return TRUE;
+}
+
+
+/*! \brief	 Dequeue a message from the MLME Queue
+ *	\param	*Queue	  The MLME Queue
+ *	\param	*Elem	  The message dequeued from MLME Queue
+ *	\return  TRUE if the Elem contains something, FALSE otherwise
+ *	\pre
+ *	\post
+
+ IRQL = DISPATCH_LEVEL
+
+ */
+BOOLEAN MlmeDequeue(
+	IN MLME_QUEUE *Queue, 
+	OUT MLME_QUEUE_ELEM **Elem) 
+{
+	NdisAcquireSpinLock(&(Queue->Lock));
+	*Elem = &(Queue->Entry[Queue->Head]);    
+	Queue->Num--;
+	Queue->Head++;
+	if (Queue->Head == MAX_LEN_OF_MLME_QUEUE) 
+	{
+		Queue->Head = 0;
+	}
+	NdisReleaseSpinLock(&(Queue->Lock));
+	return TRUE;
+}
+
+// IRQL = DISPATCH_LEVEL
+VOID	MlmeRestartStateMachine(
+	IN	PRTMP_ADAPTER	pAd)
+{
+#ifdef RTMP_MAC_PCI
+	MLME_QUEUE_ELEM		*Elem = NULL;
+#endif // RTMP_MAC_PCI //
+#ifdef CONFIG_STA_SUPPORT
+	BOOLEAN				Cancelled;
+#endif // CONFIG_STA_SUPPORT //
+	
+	DBGPRINT(RT_DEBUG_TRACE, ("MlmeRestartStateMachine \n"));
+
+#ifdef RTMP_MAC_PCI
+	NdisAcquireSpinLock(&pAd->Mlme.TaskLock);
+	if(pAd->Mlme.bRunning) 
+	{
+		NdisReleaseSpinLock(&pAd->Mlme.TaskLock);
+		return;
+	} 
+	else 
+	{
+		pAd->Mlme.bRunning = TRUE;
+	}
+	NdisReleaseSpinLock(&pAd->Mlme.TaskLock);
+
+	// Remove all Mlme queues elements
+	while (!MlmeQueueEmpty(&pAd->Mlme.Queue)) 
+	{
+		//From message type, determine which state machine I should drive
+		if (MlmeDequeue(&pAd->Mlme.Queue, &Elem)) 
+		{
+			// free MLME element
+			Elem->Occupied = FALSE;
+			Elem->MsgLen = 0;
+
+		}
+		else {
+			DBGPRINT_ERR(("MlmeRestartStateMachine: MlmeQueue empty\n"));
+		}
+	}
+#endif // RTMP_MAC_PCI //
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+#ifdef QOS_DLS_SUPPORT
+		UCHAR i;
+#endif // QOS_DLS_SUPPORT //
+		// Cancel all timer events
+		// Be careful to cancel new added timer
+		RTMPCancelTimer(&pAd->MlmeAux.AssocTimer,	  &Cancelled);
+		RTMPCancelTimer(&pAd->MlmeAux.ReassocTimer,   &Cancelled);
+		RTMPCancelTimer(&pAd->MlmeAux.DisassocTimer,  &Cancelled);
+		RTMPCancelTimer(&pAd->MlmeAux.AuthTimer,	   &Cancelled);
+		RTMPCancelTimer(&pAd->MlmeAux.BeaconTimer,	   &Cancelled);
+		RTMPCancelTimer(&pAd->MlmeAux.ScanTimer,	   &Cancelled);
+
+#ifdef QOS_DLS_SUPPORT
+		for (i=0; i<MAX_NUM_OF_DLS_ENTRY; i++)
+		{
+			RTMPCancelTimer(&pAd->StaCfg.DLSEntry[i].Timer, &Cancelled);
+		}
+#endif // QOS_DLS_SUPPORT //
+	}
+#endif // CONFIG_STA_SUPPORT //
+
+	// Change back to original channel in case of doing scan
+	AsicSwitchChannel(pAd, pAd->CommonCfg.Channel, FALSE);
+	AsicLockChannel(pAd, pAd->CommonCfg.Channel);
+
+	// Resume MSDU which is turned off durning scan
+	RTMPResumeMsduTransmission(pAd);
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+		// Set all state machines back IDLE
+		pAd->Mlme.CntlMachine.CurrState    = CNTL_IDLE;
+		pAd->Mlme.AssocMachine.CurrState   = ASSOC_IDLE;
+		pAd->Mlme.AuthMachine.CurrState    = AUTH_REQ_IDLE;
+		pAd->Mlme.AuthRspMachine.CurrState = AUTH_RSP_IDLE;
+		pAd->Mlme.SyncMachine.CurrState    = SYNC_IDLE;
+		pAd->Mlme.ActMachine.CurrState    = ACT_IDLE;
+#ifdef QOS_DLS_SUPPORT
+		pAd->Mlme.DlsMachine.CurrState    = DLS_IDLE;
+#endif // QOS_DLS_SUPPORT //
+
+	}
+#endif // CONFIG_STA_SUPPORT //
+	
+#ifdef RTMP_MAC_PCI	
+	// Remove running state
+	NdisAcquireSpinLock(&pAd->Mlme.TaskLock);
+	pAd->Mlme.bRunning = FALSE;
+	NdisReleaseSpinLock(&pAd->Mlme.TaskLock);
+#endif // RTMP_MAC_PCI //
+}
+
+/*! \brief	test if the MLME Queue is empty
+ *	\param	*Queue	  The MLME Queue
+ *	\return TRUE if the Queue is empty, FALSE otherwise
+ *	\pre
+ *	\post
+ 
+ IRQL = DISPATCH_LEVEL
+ 
+ */
+BOOLEAN MlmeQueueEmpty(
+	IN MLME_QUEUE *Queue) 
+{
+	BOOLEAN Ans;
+
+	NdisAcquireSpinLock(&(Queue->Lock));
+	Ans = (Queue->Num == 0);
+	NdisReleaseSpinLock(&(Queue->Lock));
+
+	return Ans;
+}
+
+/*! \brief	 test if the MLME Queue is full
+ *	\param	 *Queue 	 The MLME Queue
+ *	\return  TRUE if the Queue is empty, FALSE otherwise
+ *	\pre
+ *	\post
+
+ IRQL = PASSIVE_LEVEL
+ IRQL = DISPATCH_LEVEL
+
+ */
+BOOLEAN MlmeQueueFull(
+	IN MLME_QUEUE *Queue) 
+{
+	BOOLEAN Ans;
+
+	NdisAcquireSpinLock(&(Queue->Lock));
+	Ans = (Queue->Num == MAX_LEN_OF_MLME_QUEUE || Queue->Entry[Queue->Tail].Occupied);
+	NdisReleaseSpinLock(&(Queue->Lock));
+
+	return Ans;
+}
+
+/*! \brief	 The destructor of MLME Queue
+ *	\param 
+ *	\return
+ *	\pre
+ *	\post
+ *	\note	Clear Mlme Queue, Set Queue->Num to Zero.
+
+ IRQL = PASSIVE_LEVEL
+ 
+ */
+VOID MlmeQueueDestroy(
+	IN MLME_QUEUE *pQueue) 
+{
+	NdisAcquireSpinLock(&(pQueue->Lock));
+	pQueue->Num  = 0;
+	pQueue->Head = 0;
+	pQueue->Tail = 0;
+	NdisReleaseSpinLock(&(pQueue->Lock));
+	NdisFreeSpinLock(&(pQueue->Lock));
+}
+
+
+/*! \brief	 To substitute the message type if the message is coming from external
+ *	\param	pFrame		   The frame received
+ *	\param	*Machine	   The state machine
+ *	\param	*MsgType	   the message type for the state machine
+ *	\return TRUE if the substitution is successful, FALSE otherwise
+ *	\pre
+ *	\post
+
+ IRQL = DISPATCH_LEVEL
+
+ */
+#ifdef CONFIG_STA_SUPPORT
+BOOLEAN MsgTypeSubst(
+	IN PRTMP_ADAPTER  pAd,
+	IN PFRAME_802_11 pFrame, 
+	OUT INT *Machine, 
+	OUT INT *MsgType) 
+{
+	USHORT	Seq, Alg;
+	UCHAR	EAPType;
+	PUCHAR	pData;
+
+	// Pointer to start of data frames including SNAP header
+	pData = (PUCHAR) pFrame + LENGTH_802_11;
+
+	// The only data type will pass to this function is EAPOL frame
+	if (pFrame->Hdr.FC.Type == BTYPE_DATA) 
+	{
+		{
+	        *Machine = WPA_STATE_MACHINE;
+			EAPType = *((UCHAR*)pFrame + LENGTH_802_11 + LENGTH_802_1_H + 1);
+	        return (WpaMsgTypeSubst(EAPType, (INT *) MsgType));		
+		}
+	}
+
+	switch (pFrame->Hdr.FC.SubType) 
+	{
+		case SUBTYPE_ASSOC_REQ:
+			*Machine = ASSOC_STATE_MACHINE;
+			*MsgType = MT2_PEER_ASSOC_REQ;
+			break;
+		case SUBTYPE_ASSOC_RSP:
+			*Machine = ASSOC_STATE_MACHINE;
+			*MsgType = MT2_PEER_ASSOC_RSP;
+			break;
+		case SUBTYPE_REASSOC_REQ:
+			*Machine = ASSOC_STATE_MACHINE;
+			*MsgType = MT2_PEER_REASSOC_REQ;
+			break;
+		case SUBTYPE_REASSOC_RSP:
+			*Machine = ASSOC_STATE_MACHINE;
+			*MsgType = MT2_PEER_REASSOC_RSP;
+			break;
+		case SUBTYPE_PROBE_REQ:
+			*Machine = SYNC_STATE_MACHINE;
+			*MsgType = MT2_PEER_PROBE_REQ;
+			break;
+		case SUBTYPE_PROBE_RSP:
+			*Machine = SYNC_STATE_MACHINE;
+			*MsgType = MT2_PEER_PROBE_RSP;
+			break;
+		case SUBTYPE_BEACON:
+			*Machine = SYNC_STATE_MACHINE;
+			*MsgType = MT2_PEER_BEACON;
+			break;
+		case SUBTYPE_ATIM:
+			*Machine = SYNC_STATE_MACHINE;
+			*MsgType = MT2_PEER_ATIM;
+			break;
+		case SUBTYPE_DISASSOC:
+			*Machine = ASSOC_STATE_MACHINE;
+			*MsgType = MT2_PEER_DISASSOC_REQ;
+			break;
+		case SUBTYPE_AUTH:
+			// get the sequence number from payload 24 Mac Header + 2 bytes algorithm
+			NdisMoveMemory(&Seq, &pFrame->Octet[2], sizeof(USHORT));
+			NdisMoveMemory(&Alg, &pFrame->Octet[0], sizeof(USHORT));
+			if (Seq == 1 || Seq == 3) 
+			{
+				*Machine = AUTH_RSP_STATE_MACHINE;
+				*MsgType = MT2_PEER_AUTH_ODD;
+			} 
+			else if (Seq == 2 || Seq == 4) 
+			{
+				if (Alg == AUTH_MODE_OPEN || Alg == AUTH_MODE_KEY)
+				{
+					*Machine = AUTH_STATE_MACHINE;
+					*MsgType = MT2_PEER_AUTH_EVEN;
+				} 
+			} 
+			else 
+			{
+				return FALSE;
+			}
+			break;
+		case SUBTYPE_DEAUTH:
+			*Machine = AUTH_RSP_STATE_MACHINE;
+			*MsgType = MT2_PEER_DEAUTH;
+			break;
+		case SUBTYPE_ACTION:
+			*Machine = ACTION_STATE_MACHINE;
+			//  Sometimes Sta will return with category bytes with MSB = 1, if they receive catogory out of their support
+			if ((pFrame->Octet[0]&0x7F) > MAX_PEER_CATE_MSG) 
+			{
+				*MsgType = MT2_ACT_INVALID;
+			} 
+			else
+			{
+				*MsgType = (pFrame->Octet[0]&0x7F);
+			} 
+			break;
+		default:
+			return FALSE;
+			break;
+	}
+
+	return TRUE;
+}
+#endif // CONFIG_STA_SUPPORT //
+
+// ===========================================================================================
+// state_machine.c
+// ===========================================================================================
+
+/*! \brief Initialize the state machine.
+ *	\param *S			pointer to the state machine 
+ *	\param	Trans		State machine transition function
+ *	\param	StNr		number of states 
+ *	\param	MsgNr		number of messages 
+ *	\param	DefFunc 	default function, when there is invalid state/message combination 
+ *	\param	InitState	initial state of the state machine 
+ *	\param	Base		StateMachine base, internal use only
+ *	\pre p_sm should be a legal pointer
+ *	\post
+
+ IRQL = PASSIVE_LEVEL
+ 
+ */
+VOID StateMachineInit(
+	IN STATE_MACHINE *S, 
+	IN STATE_MACHINE_FUNC Trans[], 
+	IN ULONG StNr, 
+	IN ULONG MsgNr, 
+	IN STATE_MACHINE_FUNC DefFunc, 
+	IN ULONG InitState, 
+	IN ULONG Base) 
+{
+	ULONG i, j;
+
+	// set number of states and messages
+	S->NrState = StNr;
+	S->NrMsg   = MsgNr;
+	S->Base    = Base;
+
+	S->TransFunc  = Trans;
+
+	// init all state transition to default function
+	for (i = 0; i < StNr; i++) 
+	{
+		for (j = 0; j < MsgNr; j++) 
+		{
+			S->TransFunc[i * MsgNr + j] = DefFunc;
+		}
+	}
+
+	// set the starting state
+	S->CurrState = InitState;
+}
+
+/*! \brief This function fills in the function pointer into the cell in the state machine 
+ *	\param *S	pointer to the state machine
+ *	\param St	state
+ *	\param Msg	incoming message
+ *	\param f	the function to be executed when (state, message) combination occurs at the state machine
+ *	\pre *S should be a legal pointer to the state machine, st, msg, should be all within the range, Base should be set in the initial state
+ *	\post
+
+ IRQL = PASSIVE_LEVEL
+ 
+ */
+VOID StateMachineSetAction(
+	IN STATE_MACHINE *S, 
+	IN ULONG St, 
+	IN ULONG Msg, 
+	IN STATE_MACHINE_FUNC Func) 
+{
+	ULONG MsgIdx;
+
+	MsgIdx = Msg - S->Base;
+
+	if (St < S->NrState && MsgIdx < S->NrMsg) 
+	{
+		// boundary checking before setting the action
+		S->TransFunc[St * S->NrMsg + MsgIdx] = Func;
+	} 
+}
+
+/*! \brief	 This function does the state transition
+ *	\param	 *Adapter the NIC adapter pointer
+ *	\param	 *S 	  the state machine
+ *	\param	 *Elem	  the message to be executed
+ *	\return   None
+ 
+ IRQL = DISPATCH_LEVEL
+ 
+ */
+VOID StateMachinePerformAction(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN STATE_MACHINE *S, 
+	IN MLME_QUEUE_ELEM *Elem,
+	IN ULONG CurrState)
+{
+	if (S->TransFunc[(CurrState) * S->NrMsg + Elem->MsgType - S->Base])
+		(*(S->TransFunc[(CurrState) * S->NrMsg + Elem->MsgType - S->Base]))(pAd, Elem);
+}
+
+/*
+	==========================================================================
+	Description:
+		The drop function, when machine executes this, the message is simply 
+		ignored. This function does nothing, the message is freed in 
+		StateMachinePerformAction()
+	==========================================================================
+ */
+VOID Drop(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+}
+
+// ===========================================================================================
+// lfsr.c
+// ===========================================================================================
+
+/*
+	==========================================================================
+	Description:
+
+	IRQL = PASSIVE_LEVEL
+
+	==========================================================================
+ */
+VOID LfsrInit(
+	IN PRTMP_ADAPTER pAd, 
+	IN ULONG Seed) 
+{
+	if (Seed == 0) 
+		pAd->Mlme.ShiftReg = 1;
+	else 
+		pAd->Mlme.ShiftReg = Seed;
+}
+
+/*
+	==========================================================================
+	Description:
+	==========================================================================
+ */
+UCHAR RandomByte(
+	IN PRTMP_ADAPTER pAd) 
+{
+	ULONG i;
+	UCHAR R, Result;
+
+	R = 0;
+
+	if (pAd->Mlme.ShiftReg == 0)
+	NdisGetSystemUpTime((ULONG *)&pAd->Mlme.ShiftReg);
+
+	for (i = 0; i < 8; i++) 
+	{
+		if (pAd->Mlme.ShiftReg & 0x00000001) 
+		{
+			pAd->Mlme.ShiftReg = ((pAd->Mlme.ShiftReg ^ LFSR_MASK) >> 1) | 0x80000000;
+			Result = 1;
+		} 
+		else 
+		{
+			pAd->Mlme.ShiftReg = pAd->Mlme.ShiftReg >> 1;
+			Result = 0;
+		}
+		R = (R << 1) | Result;
+	}
+
+	return R;
+}
+
+
+/*
+	========================================================================
+
+	Routine Description:
+		Verify the support rate for different PHY type
+
+	Arguments:
+		pAd 				Pointer to our adapter
+
+	Return Value:
+		None
+
+	IRQL = PASSIVE_LEVEL
+
+	========================================================================
+*/
+VOID	RTMPCheckRates(
+	IN		PRTMP_ADAPTER	pAd,
+	IN OUT	UCHAR			SupRate[],
+	IN OUT	UCHAR			*SupRateLen)
+{
+	UCHAR	RateIdx, i, j;
+	UCHAR	NewRate[12], NewRateLen;
+	
+	NewRateLen = 0;
+	
+	if (pAd->CommonCfg.PhyMode == PHY_11B)
+		RateIdx = 4;
+	else
+		RateIdx = 12;
+
+	// Check for support rates exclude basic rate bit	
+	for (i = 0; i < *SupRateLen; i++)
+		for (j = 0; j < RateIdx; j++)
+			if ((SupRate[i] & 0x7f) == RateIdTo500Kbps[j])
+				NewRate[NewRateLen++] = SupRate[i];
+			
+	*SupRateLen = NewRateLen;
+	NdisMoveMemory(SupRate, NewRate, NewRateLen);
+}
+
+#ifdef CONFIG_STA_SUPPORT
+#ifdef DOT11_N_SUPPORT
+BOOLEAN RTMPCheckChannel(
+	IN PRTMP_ADAPTER pAd,
+	IN UCHAR		CentralChannel,
+	IN UCHAR		Channel)
+{
+	UCHAR		k;
+	UCHAR		UpperChannel = 0, LowerChannel = 0;
+	UCHAR		NoEffectChannelinList = 0;
+	
+	// Find upper and lower channel according to 40MHz current operation. 
+	if (CentralChannel < Channel)
+	{
+		UpperChannel = Channel;
+		if (CentralChannel > 2)
+			LowerChannel = CentralChannel - 2;
+		else
+			return FALSE;
+	}
+	else if (CentralChannel > Channel)
+	{
+		UpperChannel = CentralChannel + 2;
+		LowerChannel = Channel;
+	}
+
+	for (k = 0;k < pAd->ChannelListNum;k++)
+	{
+		if (pAd->ChannelList[k].Channel == UpperChannel)
+		{
+			NoEffectChannelinList ++;
+		}
+		if (pAd->ChannelList[k].Channel == LowerChannel)
+		{
+			NoEffectChannelinList ++;
+		}
+	}
+
+	DBGPRINT(RT_DEBUG_TRACE,("Total Channel in Channel List = [%d]\n", NoEffectChannelinList));
+	if (NoEffectChannelinList == 2)
+		return TRUE;
+	else
+		return FALSE;
+}
+
+/*
+	========================================================================
+
+	Routine Description:
+		Verify the support rate for HT phy type
+
+	Arguments:
+		pAd 				Pointer to our adapter
+
+	Return Value:
+		FALSE if pAd->CommonCfg.SupportedHtPhy doesn't accept the pHtCapability.  (AP Mode)
+
+	IRQL = PASSIVE_LEVEL
+
+	========================================================================
+*/
+BOOLEAN 	RTMPCheckHt(
+	IN	PRTMP_ADAPTER			pAd,
+	IN	UCHAR					Wcid,
+	IN 	HT_CAPABILITY_IE		*pHtCapability,
+	IN 	ADD_HT_INFO_IE			*pAddHtInfo)
+{
+	if (Wcid >= MAX_LEN_OF_MAC_TABLE)
+		return FALSE;
+
+	// If use AMSDU, set flag.
+	if (pAd->CommonCfg.DesiredHtPhy.AmsduEnable)
+		CLIENT_STATUS_SET_FLAG(&pAd->MacTab.Content[Wcid], fCLIENT_STATUS_AMSDU_INUSED);
+	// Save Peer Capability
+	if (pHtCapability->HtCapInfo.ShortGIfor20)
+		CLIENT_STATUS_SET_FLAG(&pAd->MacTab.Content[Wcid], fCLIENT_STATUS_SGI20_CAPABLE);
+	if (pHtCapability->HtCapInfo.ShortGIfor40)
+		CLIENT_STATUS_SET_FLAG(&pAd->MacTab.Content[Wcid], fCLIENT_STATUS_SGI40_CAPABLE);
+	if (pHtCapability->HtCapInfo.TxSTBC)
+		CLIENT_STATUS_SET_FLAG(&pAd->MacTab.Content[Wcid], fCLIENT_STATUS_TxSTBC_CAPABLE);
+	if (pHtCapability->HtCapInfo.RxSTBC)
+		CLIENT_STATUS_SET_FLAG(&pAd->MacTab.Content[Wcid], fCLIENT_STATUS_RxSTBC_CAPABLE);
+	if (pAd->CommonCfg.bRdg && pHtCapability->ExtHtCapInfo.RDGSupport)
+	{
+		CLIENT_STATUS_SET_FLAG(&pAd->MacTab.Content[Wcid], fCLIENT_STATUS_RDG_CAPABLE);
+	}
+	
+	if (Wcid < MAX_LEN_OF_MAC_TABLE)
+	{
+		pAd->MacTab.Content[Wcid].MpduDensity = pHtCapability->HtCapParm.MpduDensity;
+	}
+
+	// Will check ChannelWidth for MCSSet[4] below
+	pAd->MlmeAux.HtCapability.MCSSet[4] = 0x1;
+    switch (pAd->CommonCfg.RxStream)
+	{
+		case 1:			
+			pAd->MlmeAux.HtCapability.MCSSet[0] = 0xff;
+			pAd->MlmeAux.HtCapability.MCSSet[1] = 0x00;
+            pAd->MlmeAux.HtCapability.MCSSet[2] = 0x00;
+            pAd->MlmeAux.HtCapability.MCSSet[3] = 0x00;
+			break;
+		case 2:
+			pAd->MlmeAux.HtCapability.MCSSet[0] = 0xff;
+			pAd->MlmeAux.HtCapability.MCSSet[1] = 0xff;
+            pAd->MlmeAux.HtCapability.MCSSet[2] = 0x00;
+            pAd->MlmeAux.HtCapability.MCSSet[3] = 0x00;
+			break;
+		case 3:				
+			pAd->MlmeAux.HtCapability.MCSSet[0] = 0xff;
+			pAd->MlmeAux.HtCapability.MCSSet[1] = 0xff;
+            pAd->MlmeAux.HtCapability.MCSSet[2] = 0xff;
+            pAd->MlmeAux.HtCapability.MCSSet[3] = 0x00;
+			break;
+	}	
+
+	pAd->MlmeAux.HtCapability.HtCapInfo.ChannelWidth = pAddHtInfo->AddHtInfo.RecomWidth & pAd->CommonCfg.DesiredHtPhy.ChannelWidth;
+
+	/*
+		If both station and AP use 40MHz, still need to check if the 40MHZ band's legality in my country region
+		If this 40MHz wideband is not allowed in my country list, use bandwidth 20MHZ instead,
+	*/
+	if (pAd->MlmeAux.HtCapability.HtCapInfo.ChannelWidth == BW_40)
+	{
+		if (RTMPCheckChannel(pAd, pAd->MlmeAux.CentralChannel, pAd->MlmeAux.Channel) == FALSE)
+		{
+			pAd->MlmeAux.HtCapability.HtCapInfo.ChannelWidth = BW_20;
+		}
+	}
+		
+    DBGPRINT(RT_DEBUG_TRACE, ("RTMPCheckHt:: HtCapInfo.ChannelWidth=%d, RecomWidth=%d, DesiredHtPhy.ChannelWidth=%d, BW40MAvailForA/G=%d/%d, PhyMode=%d \n",
+		pAd->MlmeAux.HtCapability.HtCapInfo.ChannelWidth, pAddHtInfo->AddHtInfo.RecomWidth, pAd->CommonCfg.DesiredHtPhy.ChannelWidth,
+		pAd->NicConfig2.field.BW40MAvailForA, pAd->NicConfig2.field.BW40MAvailForG, pAd->CommonCfg.PhyMode));
+    
+	pAd->MlmeAux.HtCapability.HtCapInfo.GF =  pHtCapability->HtCapInfo.GF & pAd->CommonCfg.DesiredHtPhy.GF;
+
+	// Send Assoc Req with my HT capability.
+	pAd->MlmeAux.HtCapability.HtCapInfo.AMsduSize =  pAd->CommonCfg.DesiredHtPhy.AmsduSize;
+	pAd->MlmeAux.HtCapability.HtCapInfo.MimoPs =  pAd->CommonCfg.DesiredHtPhy.MimoPs;
+	pAd->MlmeAux.HtCapability.HtCapInfo.ShortGIfor20 =  (pAd->CommonCfg.DesiredHtPhy.ShortGIfor20) & (pHtCapability->HtCapInfo.ShortGIfor20);
+	pAd->MlmeAux.HtCapability.HtCapInfo.ShortGIfor40 =  (pAd->CommonCfg.DesiredHtPhy.ShortGIfor40) & (pHtCapability->HtCapInfo.ShortGIfor40);
+	pAd->MlmeAux.HtCapability.HtCapInfo.TxSTBC =  (pAd->CommonCfg.DesiredHtPhy.TxSTBC)&(pHtCapability->HtCapInfo.RxSTBC);
+	pAd->MlmeAux.HtCapability.HtCapInfo.RxSTBC =  (pAd->CommonCfg.DesiredHtPhy.RxSTBC)&(pHtCapability->HtCapInfo.TxSTBC);
+	pAd->MlmeAux.HtCapability.HtCapParm.MaxRAmpduFactor = pAd->CommonCfg.DesiredHtPhy.MaxRAmpduFactor;
+    pAd->MlmeAux.HtCapability.HtCapParm.MpduDensity = pAd->CommonCfg.HtCapability.HtCapParm.MpduDensity;
+	pAd->MlmeAux.HtCapability.ExtHtCapInfo.PlusHTC = pHtCapability->ExtHtCapInfo.PlusHTC;
+	pAd->MacTab.Content[Wcid].HTCapability.ExtHtCapInfo.PlusHTC = pHtCapability->ExtHtCapInfo.PlusHTC;
+	if (pAd->CommonCfg.bRdg)
+	{
+		pAd->MlmeAux.HtCapability.ExtHtCapInfo.RDGSupport = pHtCapability->ExtHtCapInfo.RDGSupport;
+        pAd->MlmeAux.HtCapability.ExtHtCapInfo.PlusHTC = 1;
+	}
+	
+    if (pAd->MlmeAux.HtCapability.HtCapInfo.ChannelWidth == BW_20)
+        pAd->MlmeAux.HtCapability.MCSSet[4] = 0x0;  // BW20 can't transmit MCS32
+
+	COPY_AP_HTSETTINGS_FROM_BEACON(pAd, pHtCapability);
+	return TRUE;
+}
+#endif // DOT11_N_SUPPORT //
+#endif // CONFIG_STA_SUPPORT //
+
+/*
+	========================================================================
+
+	Routine Description:
+		Verify the support rate for different PHY type
+
+	Arguments:
+		pAd 				Pointer to our adapter
+
+	Return Value:
+		None
+
+	IRQL = PASSIVE_LEVEL
+
+	========================================================================
+*/
+VOID RTMPUpdateMlmeRate(
+	IN PRTMP_ADAPTER	pAd)
+{
+	UCHAR	MinimumRate;
+	UCHAR	ProperMlmeRate; //= RATE_54;
+	UCHAR	i, j, RateIdx = 12; //1, 2, 5.5, 11, 6, 9, 12, 18, 24, 36, 48, 54
+	BOOLEAN	bMatch = FALSE;
+
+	switch (pAd->CommonCfg.PhyMode) 
+	{
+		case PHY_11B:
+			ProperMlmeRate = RATE_11;
+			MinimumRate = RATE_1;
+			break;
+		case PHY_11BG_MIXED:
+#ifdef DOT11_N_SUPPORT
+		case PHY_11ABGN_MIXED:
+		case PHY_11BGN_MIXED:
+#endif // DOT11_N_SUPPORT //
+			if ((pAd->MlmeAux.SupRateLen == 4) &&
+				(pAd->MlmeAux.ExtRateLen == 0))
+				// B only AP
+				ProperMlmeRate = RATE_11;
+			else
+				ProperMlmeRate = RATE_24;
+			
+			if (pAd->MlmeAux.Channel <= 14)
+			MinimumRate = RATE_1;
+			else
+				MinimumRate = RATE_6;
+			break;
+		case PHY_11A:
+#ifdef DOT11_N_SUPPORT
+		case PHY_11N_2_4G:	// rt2860 need to check mlmerate for 802.11n
+		case PHY_11GN_MIXED:
+		case PHY_11AGN_MIXED:
+		case PHY_11AN_MIXED:
+		case PHY_11N_5G:	
+#endif // DOT11_N_SUPPORT //
+			ProperMlmeRate = RATE_24;
+			MinimumRate = RATE_6;
+			break;
+		case PHY_11ABG_MIXED:
+			ProperMlmeRate = RATE_24;
+			if (pAd->MlmeAux.Channel <= 14)
+			   MinimumRate = RATE_1;
+			else
+				MinimumRate = RATE_6;
+			break;
+		default: // error
+			ProperMlmeRate = RATE_1;
+			MinimumRate = RATE_1;
+			break;
+	}
+
+	for (i = 0; i < pAd->MlmeAux.SupRateLen; i++)
+	{
+		for (j = 0; j < RateIdx; j++)
+		{
+			if ((pAd->MlmeAux.SupRate[i] & 0x7f) == RateIdTo500Kbps[j])
+			{
+				if (j == ProperMlmeRate)
+				{
+					bMatch = TRUE;
+					break;
+				}
+			}			
+		}
+
+		if (bMatch)
+			break;
+	}
+
+	if (bMatch == FALSE)
+	{
+	for (i = 0; i < pAd->MlmeAux.ExtRateLen; i++)
+	{
+		for (j = 0; j < RateIdx; j++)
+		{
+			if ((pAd->MlmeAux.ExtRate[i] & 0x7f) == RateIdTo500Kbps[j])
+			{
+					if (j == ProperMlmeRate)
+					{
+						bMatch = TRUE;
+						break;
+					}
+			}				
+		}
+		
+			if (bMatch)
+			break;		
+	}
+	}
+
+	if (bMatch == FALSE)
+	{
+		ProperMlmeRate = MinimumRate;
+	}
+
+	pAd->CommonCfg.MlmeRate = MinimumRate;
+	pAd->CommonCfg.RtsRate = ProperMlmeRate;
+	if (pAd->CommonCfg.MlmeRate >= RATE_6)
+	{
+		pAd->CommonCfg.MlmeTransmit.field.MODE = MODE_OFDM;
+		pAd->CommonCfg.MlmeTransmit.field.MCS = OfdmRateToRxwiMCS[pAd->CommonCfg.MlmeRate];
+		pAd->MacTab.Content[BSS0Mcast_WCID].HTPhyMode.field.MODE = MODE_OFDM;
+		pAd->MacTab.Content[BSS0Mcast_WCID].HTPhyMode.field.MCS = OfdmRateToRxwiMCS[pAd->CommonCfg.MlmeRate];
+	}
+	else
+	{
+		pAd->CommonCfg.MlmeTransmit.field.MODE = MODE_CCK;
+		pAd->CommonCfg.MlmeTransmit.field.MCS = pAd->CommonCfg.MlmeRate;
+		pAd->MacTab.Content[BSS0Mcast_WCID].HTPhyMode.field.MODE = MODE_CCK;
+		pAd->MacTab.Content[BSS0Mcast_WCID].HTPhyMode.field.MCS = pAd->CommonCfg.MlmeRate;
+	}
+
+	DBGPRINT(RT_DEBUG_TRACE, ("RTMPUpdateMlmeRate ==>   MlmeTransmit = 0x%x  \n" , pAd->CommonCfg.MlmeTransmit.word));
+}
+
+CHAR RTMPMaxRssi(
+	IN PRTMP_ADAPTER	pAd,
+	IN CHAR				Rssi0,
+	IN CHAR				Rssi1,
+	IN CHAR				Rssi2)
+{
+	CHAR	larger = -127;
+	
+	if ((pAd->Antenna.field.RxPath == 1) && (Rssi0 != 0))
+	{
+		larger = Rssi0;
+	}
+
+	if ((pAd->Antenna.field.RxPath >= 2) && (Rssi1 != 0))
+	{
+		larger = max(Rssi0, Rssi1);
+	}
+	
+	if ((pAd->Antenna.field.RxPath == 3) && (Rssi2 != 0))
+	{
+		larger = max(larger, Rssi2);
+	}
+
+	if (larger == -127)
+		larger = 0;
+
+	return larger;
+}
+
+
+/*
+    ========================================================================
+    Routine Description:
+        Periodic evaluate antenna link status
+        
+    Arguments:
+        pAd         - Adapter pointer
+        
+    Return Value:
+        None
+        
+    ========================================================================
+*/
+VOID AsicEvaluateRxAnt(
+	IN PRTMP_ADAPTER	pAd)
+{
+#ifdef CONFIG_STA_SUPPORT
+	UCHAR	BBPR3 = 0;
+#endif // CONFIG_STA_SUPPORT //
+
+#ifdef RALINK_ATE
+	if (ATE_ON(pAd))
+		return;
+#endif // RALINK_ATE //
+
+	if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_RESET_IN_PROGRESS	|
+							fRTMP_ADAPTER_HALT_IN_PROGRESS	|
+							fRTMP_ADAPTER_RADIO_OFF			|
+							fRTMP_ADAPTER_NIC_NOT_EXIST		|
+							fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS) ||
+							OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_DOZE) 
+							)
+		return;
+	
+	{
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		{
+
+			if (pAd->StaCfg.Psm == PWR_SAVE)
+				return;
+
+			RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R3, &BBPR3);
+			BBPR3 &= (~0x18);
+			if(pAd->Antenna.field.RxPath == 3)
+			{
+				BBPR3 |= (0x10);
+			}
+			else if(pAd->Antenna.field.RxPath == 2)
+			{
+				BBPR3 |= (0x8);
+			}
+			else if(pAd->Antenna.field.RxPath == 1)
+			{
+				BBPR3 |= (0x0);
+			}
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R3, BBPR3);
+#ifdef RTMP_MAC_PCI
+			IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	    		pAd->StaCfg.BBPR3 = BBPR3;
+#endif // RTMP_MAC_PCI //
+			if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED)
+			)
+			{
+				ULONG	TxTotalCnt = pAd->RalinkCounters.OneSecTxNoRetryOkCount + 
+									pAd->RalinkCounters.OneSecTxRetryOkCount + 
+									pAd->RalinkCounters.OneSecTxFailCount;
+
+				// dynamic adjust antenna evaluation period according to the traffic
+				if (TxTotalCnt > 50)
+				{
+					RTMPSetTimer(&pAd->Mlme.RxAntEvalTimer, 20);
+					pAd->Mlme.bLowThroughput = FALSE;
+				}
+				else
+				{
+					RTMPSetTimer(&pAd->Mlme.RxAntEvalTimer, 300);
+					pAd->Mlme.bLowThroughput = TRUE;
+				}
+			}
+		}
+#endif // CONFIG_STA_SUPPORT //
+	}
+}
+
+/*
+    ========================================================================
+    Routine Description:
+        After evaluation, check antenna link status
+        
+    Arguments:
+        pAd         - Adapter pointer
+        
+    Return Value:
+        None
+        
+    ========================================================================
+*/
+VOID AsicRxAntEvalTimeout(
+	IN PVOID SystemSpecific1, 
+	IN PVOID FunctionContext, 
+	IN PVOID SystemSpecific2, 
+	IN PVOID SystemSpecific3) 
+{
+	RTMP_ADAPTER	*pAd = (RTMP_ADAPTER *)FunctionContext;
+#ifdef CONFIG_STA_SUPPORT
+	UCHAR			BBPR3 = 0;
+	CHAR			larger = -127, rssi0, rssi1, rssi2;
+#endif // CONFIG_STA_SUPPORT //
+
+
+
+#ifdef RALINK_ATE
+	if (ATE_ON(pAd))
+		return;
+#endif // RALINK_ATE //
+
+	if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_RESET_IN_PROGRESS	|
+							fRTMP_ADAPTER_HALT_IN_PROGRESS	|
+							fRTMP_ADAPTER_RADIO_OFF			|
+							fRTMP_ADAPTER_NIC_NOT_EXIST) ||
+							OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_DOZE) 
+							)
+		return;
+
+	{
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		{
+			if (pAd->StaCfg.Psm == PWR_SAVE)
+				return;
+
+
+			// if the traffic is low, use average rssi as the criteria
+			if (pAd->Mlme.bLowThroughput == TRUE)
+			{
+				rssi0 = pAd->StaCfg.RssiSample.LastRssi0;
+				rssi1 = pAd->StaCfg.RssiSample.LastRssi1;
+				rssi2 = pAd->StaCfg.RssiSample.LastRssi2;
+			}
+			else
+			{
+				rssi0 = pAd->StaCfg.RssiSample.AvgRssi0;
+				rssi1 = pAd->StaCfg.RssiSample.AvgRssi1;
+				rssi2 = pAd->StaCfg.RssiSample.AvgRssi2;
+			}
+
+			if(pAd->Antenna.field.RxPath == 3)
+			{
+				larger = max(rssi0, rssi1);
+				if (larger > (rssi2 + 20))
+					pAd->Mlme.RealRxPath = 2;
+				else
+					pAd->Mlme.RealRxPath = 3;
+			}
+			else if(pAd->Antenna.field.RxPath == 2)
+			{
+				if (rssi0 > (rssi1 + 20))
+					pAd->Mlme.RealRxPath = 1;
+				else
+					pAd->Mlme.RealRxPath = 2;
+			}
+
+			RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R3, &BBPR3);
+			BBPR3 &= (~0x18);
+			if(pAd->Mlme.RealRxPath == 3)
+			{
+				BBPR3 |= (0x10);
+			}
+			else if(pAd->Mlme.RealRxPath == 2)
+			{
+				BBPR3 |= (0x8);
+			}
+			else if(pAd->Mlme.RealRxPath == 1)
+			{
+				BBPR3 |= (0x0);
+			}
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R3, BBPR3);
+#ifdef RTMP_MAC_PCI    
+			pAd->StaCfg.BBPR3 = BBPR3;
+#endif // RTMP_MAC_PCI //
+		}
+#endif // CONFIG_STA_SUPPORT //
+	}
+}
+
+
+VOID APSDPeriodicExec(
+	IN PVOID SystemSpecific1, 
+	IN PVOID FunctionContext, 
+	IN PVOID SystemSpecific2, 
+	IN PVOID SystemSpecific3) 
+{
+	RTMP_ADAPTER *pAd = (RTMP_ADAPTER *)FunctionContext;
+
+	if (!OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED))
+		return;
+
+	pAd->CommonCfg.TriggerTimerCount++;
+
+// Driver should not send trigger frame, it should be send by application layer
+/*
+	if (pAd->CommonCfg.bAPSDCapable && pAd->CommonCfg.APEdcaParm.bAPSDCapable
+		&& (pAd->CommonCfg.bNeedSendTriggerFrame ||
+		(((pAd->CommonCfg.TriggerTimerCount%20) == 19) && (!pAd->CommonCfg.bAPSDAC_BE || !pAd->CommonCfg.bAPSDAC_BK || !pAd->CommonCfg.bAPSDAC_VI || !pAd->CommonCfg.bAPSDAC_VO))))
+	{
+		DBGPRINT(RT_DEBUG_TRACE,("Sending trigger frame and enter service period when support APSD\n"));
+		RTMPSendNullFrame(pAd, pAd->CommonCfg.TxRate, TRUE);
+		pAd->CommonCfg.bNeedSendTriggerFrame = FALSE;
+		pAd->CommonCfg.TriggerTimerCount = 0;
+		pAd->CommonCfg.bInServicePeriod = TRUE;
+	}*/
+}
+
+/*
+    ========================================================================
+    Routine Description:
+        Set/reset MAC registers according to bPiggyBack parameter
+        
+    Arguments:
+        pAd         - Adapter pointer
+        bPiggyBack  - Enable / Disable Piggy-Back
+
+    Return Value:
+        None
+        
+    ========================================================================
+*/
+VOID RTMPSetPiggyBack(
+    IN PRTMP_ADAPTER    pAd,
+    IN BOOLEAN          bPiggyBack)
+{
+	TX_LINK_CFG_STRUC  TxLinkCfg;
+    
+	RTMP_IO_READ32(pAd, TX_LINK_CFG, &TxLinkCfg.word);
+
+	TxLinkCfg.field.TxCFAckEn = bPiggyBack;
+	RTMP_IO_WRITE32(pAd, TX_LINK_CFG, TxLinkCfg.word);
+}
+
+/*
+    ========================================================================
+    Routine Description:
+        check if this entry need to switch rate automatically
+        
+    Arguments:
+        pAd         
+        pEntry 	 	
+
+    Return Value:
+        TURE
+        FALSE
+        
+    ========================================================================
+*/
+BOOLEAN RTMPCheckEntryEnableAutoRateSwitch(
+	IN PRTMP_ADAPTER    pAd,
+	IN PMAC_TABLE_ENTRY	pEntry)	
+{
+	BOOLEAN		result = TRUE;
+
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+		// only associated STA counts
+		if ((pEntry && IS_ENTRY_CLIENT(pEntry) && (pEntry->Sst == SST_ASSOC))
+#ifdef QOS_DLS_SUPPORT
+			|| (pEntry && IS_ENTRY_DLS(pEntry))
+#endif // QOS_DLS_SUPPORT //
+			)
+		{
+			result = pAd->StaCfg.bAutoTxRateSwitch;
+		}
+		else
+			result = FALSE;
+	}
+#endif // CONFIG_STA_SUPPORT //
+
+
+
+	return result;
+}
+
+
+BOOLEAN RTMPAutoRateSwitchCheck(
+	IN PRTMP_ADAPTER    pAd)	
+{			
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+		if (pAd->StaCfg.bAutoTxRateSwitch)
+			return TRUE;
+	}
+#endif // CONFIG_STA_SUPPORT //
+	return FALSE;
+}
+
+
+/*
+    ========================================================================
+    Routine Description:
+        check if this entry need to fix tx legacy rate
+        
+    Arguments:
+        pAd         
+        pEntry 	 	
+
+    Return Value:
+        TURE
+        FALSE
+        
+    ========================================================================
+*/
+UCHAR RTMPStaFixedTxMode(
+	IN PRTMP_ADAPTER    pAd,
+	IN PMAC_TABLE_ENTRY	pEntry)	
+{
+	UCHAR	tx_mode = FIXED_TXMODE_HT;
+
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+		tx_mode = (UCHAR)pAd->StaCfg.DesiredTransmitSetting.field.FixedTxMode;
+	}
+#endif // CONFIG_STA_SUPPORT //
+
+	return tx_mode;
+}
+
+/*
+    ========================================================================
+    Routine Description:
+        Overwrite HT Tx Mode by Fixed Legency Tx Mode, if specified.
+        
+    Arguments:
+        pAd         
+        pEntry 	 	
+
+    Return Value:
+        TURE
+        FALSE
+        
+    ========================================================================
+*/
+VOID RTMPUpdateLegacyTxSetting(
+		UCHAR				fixed_tx_mode,
+		PMAC_TABLE_ENTRY	pEntry)
+{
+	HTTRANSMIT_SETTING TransmitSetting;
+	
+	if (fixed_tx_mode == FIXED_TXMODE_HT)
+		return;
+							 				
+	TransmitSetting.word = 0;
+
+	TransmitSetting.field.MODE = pEntry->HTPhyMode.field.MODE;
+	TransmitSetting.field.MCS = pEntry->HTPhyMode.field.MCS;
+						
+	if (fixed_tx_mode == FIXED_TXMODE_CCK)
+	{
+		TransmitSetting.field.MODE = MODE_CCK;
+		// CCK mode allow MCS 0~3
+		if (TransmitSetting.field.MCS > MCS_3)
+			TransmitSetting.field.MCS = MCS_3;
+	}
+	else 
+	{
+		TransmitSetting.field.MODE = MODE_OFDM;
+		// OFDM mode allow MCS 0~7
+		if (TransmitSetting.field.MCS > MCS_7)
+			TransmitSetting.field.MCS = MCS_7;
+	}
+	
+	if (pEntry->HTPhyMode.field.MODE >= TransmitSetting.field.MODE)
+	{
+		pEntry->HTPhyMode.word = TransmitSetting.word;
+		DBGPRINT(RT_DEBUG_TRACE, ("RTMPUpdateLegacyTxSetting : wcid-%d, MODE=%s, MCS=%d \n", 
+				pEntry->Aid, GetPhyMode(pEntry->HTPhyMode.field.MODE), pEntry->HTPhyMode.field.MCS));		
+	}													
+	else
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("%s : the fixed TxMode is invalid \n", __FUNCTION__));	
+	}
+}
+
+#ifdef CONFIG_STA_SUPPORT
+/*
+	==========================================================================
+	Description:
+		dynamic tune BBP R66 to find a balance between sensibility and 
+		noise isolation
+
+	IRQL = DISPATCH_LEVEL
+
+	==========================================================================
+ */
+VOID AsicStaBbpTuning(
+	IN PRTMP_ADAPTER pAd)
+{
+	UCHAR	OrigR66Value = 0, R66;//, R66UpperBound = 0x30, R66LowerBound = 0x30;
+	CHAR	Rssi;
+
+	// 2860C did not support Fase CCA, therefore can't tune
+	if (pAd->MACVersion == 0x28600100)
+		return;
+
+	//
+	// work as a STA
+	//
+	if (pAd->Mlme.CntlMachine.CurrState != CNTL_IDLE)  // no R66 tuning when SCANNING
+		return;
+
+	if ((pAd->OpMode == OPMODE_STA) 
+		&& (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED)
+			)
+		&& !(OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_DOZE))
+#ifdef RTMP_MAC_PCI		
+		&& (pAd->bPCIclkOff == FALSE)
+#endif // RTMP_MAC_PCI //
+		)
+	{
+		RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R66, &OrigR66Value);
+		R66 = OrigR66Value;
+		
+		if (pAd->Antenna.field.RxPath > 1)
+			Rssi = (pAd->StaCfg.RssiSample.AvgRssi0 + pAd->StaCfg.RssiSample.AvgRssi1) >> 1;
+		else
+			Rssi = pAd->StaCfg.RssiSample.AvgRssi0;
+	
+		if (pAd->LatchRfRegs.Channel <= 14)
+		{	//BG band
+#ifdef RT30xx
+			// RT3070 is a no LNA solution, it should have different control regarding to AGC gain control
+			// Otherwise, it will have some throughput side effect when low RSSI
+			
+			if (IS_RT3070(pAd)||IS_RT3090(pAd) || IS_RT3572(pAd) || IS_RT3390(pAd))
+			{
+				if (Rssi > RSSI_FOR_MID_LOW_SENSIBILITY)
+				{
+					R66 = 0x1C + 2*GET_LNA_GAIN(pAd) + 0x20;
+					if (OrigR66Value != R66)
+					{
+#ifdef RT35xx
+						if (IS_RT3572(pAd))
+							RT3572WriteBBPR66(pAd, R66);
+						else
+#endif // RT35xx //
+							RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R66, R66);
+					}
+				}
+				else
+				{
+					R66 = 0x1C + 2*GET_LNA_GAIN(pAd);
+					if (OrigR66Value != R66)
+					{
+#ifdef RT35xx
+						if (IS_RT3572(pAd))
+							RT3572WriteBBPR66(pAd, R66);
+						else
+#endif // RT35xx //
+							RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R66, R66);
+					}
+				}
+			}
+			else
+#endif // RT30xx //
+			{
+				if (Rssi > RSSI_FOR_MID_LOW_SENSIBILITY)
+				{
+					R66 = (0x2E + GET_LNA_GAIN(pAd)) + 0x10;
+					if (OrigR66Value != R66)
+					{
+						RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R66, R66);
+					}
+				}
+				else
+				{
+					R66 = 0x2E + GET_LNA_GAIN(pAd);
+					if (OrigR66Value != R66)
+					{
+						RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R66, R66);
+					}
+				}
+			}
+		}
+		else
+		{	//A band
+			if (pAd->CommonCfg.BBPCurrentBW == BW_20)
+			{
+				if (Rssi > RSSI_FOR_MID_LOW_SENSIBILITY)
+				{
+					R66 = 0x32 + (GET_LNA_GAIN(pAd)*5)/3 + 0x10;
+					if (OrigR66Value != R66)
+					{
+#ifdef RT35xx
+						if (IS_RT3572(pAd))
+							RT3572WriteBBPR66(pAd, R66);
+						else
+#endif // RT35xx //
+							RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R66, R66);
+					}
+				}
+				else
+				{
+					R66 = 0x32 + (GET_LNA_GAIN(pAd)*5)/3;
+					if (OrigR66Value != R66)
+					{
+#ifdef RT35xx
+						if (IS_RT3572(pAd))
+							RT3572WriteBBPR66(pAd, R66);
+						else
+#endif // RT35xx //
+							RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R66, R66);
+					}
+				}
+			}
+			else
+			{
+				if (Rssi > RSSI_FOR_MID_LOW_SENSIBILITY)
+				{
+					R66 = 0x3A + (GET_LNA_GAIN(pAd)*5)/3 + 0x10;
+					if (OrigR66Value != R66)
+					{
+#ifdef RT35xx
+						if (IS_RT3572(pAd))
+							RT3572WriteBBPR66(pAd, R66);
+						else
+#endif // RT35xx //
+							RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R66, R66);
+					}
+				}
+				else
+				{
+					R66 = 0x3A + (GET_LNA_GAIN(pAd)*5)/3;
+					if (OrigR66Value != R66)
+					{
+#ifdef RT35xx
+						if (IS_RT3572(pAd))
+							RT3572WriteBBPR66(pAd, R66);
+						else
+#endif // RT35xx //
+							RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R66, R66);
+					}
+				}
+			}
+		}
+
+		
+#ifdef RT30xx
+		if (IS_RT3390(pAd))
+		{
+			UCHAR BbpData = 0;
+
+			// Reduce the RX I/Q target level to improve maximum high power input
+			if (pAd->StaCfg.RssiSample.AvgRssi0 > -30)
+			{
+				RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R67, &BbpData);
+				BbpData = ((BbpData & 0x80) | 0x18); // The desired signal level after AGC
+				RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R67, BbpData);
+			}
+			else
+			{
+				RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R67, &BbpData);
+				BbpData = ((BbpData & 0x80) | 0x20); // The desired signal level after AGC
+				RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R67, BbpData);
+			}
+		}
+#endif // RT30xx //
+	}
+}
+#endif // CONFIG_STA_SUPPORT //
+
+VOID RTMPSetAGCInitValue(
+	IN PRTMP_ADAPTER	pAd,
+	IN UCHAR			BandWidth)
+{
+	UCHAR	R66 = 0x30;
+	
+	if (pAd->LatchRfRegs.Channel <= 14)
+	{	// BG band
+#ifdef RT30xx
+		/* Gary was verified Amazon AP and find that RT307x has BBP_R66 invalid default value */
+		if (IS_RT3070(pAd)||IS_RT3090(pAd) || IS_RT3572(pAd) || IS_RT3390(pAd))
+		{
+			R66 = 0x1C + 2*GET_LNA_GAIN(pAd);
+#ifdef RT35xx
+			if (IS_RT3572(pAd))
+			{
+				RT3572WriteBBPR66(pAd, R66);
+			}
+			else
+#endif // RT35xx //
+			{
+				RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R66, R66);
+			}
+		}
+		else
+#endif // RT30xx //
+		{
+			R66 = 0x2E + GET_LNA_GAIN(pAd);
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R66, R66);
+		}
+	}
+	else
+	{	//A band
+#ifdef RT35xx
+		if (IS_RT3572(pAd))
+		{
+			R66 = (UCHAR)(0x22 + (GET_LNA_GAIN(pAd)*5)/3);
+			RT3572WriteBBPR66(pAd, R66);
+		}
+		else
+#endif // RT35xx //
+		{	
+			if (BandWidth == BW_20)
+			{
+				R66 = (UCHAR)(0x32 + (GET_LNA_GAIN(pAd)*5)/3);
+				RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R66, R66);
+			}
+#ifdef DOT11_N_SUPPORT
+			else
+			{
+				R66 = (UCHAR)(0x3A + (GET_LNA_GAIN(pAd)*5)/3);
+				RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R66, R66);
+			}
+#endif // DOT11_N_SUPPORT //
+		}		
+	}
+
+}
+
+
+/*
+========================================================================
+Routine Description:
+	Check if the channel has the property.
+
+Arguments:
+	pAd				- WLAN control block pointer
+	ChanNum			- channel number
+	Property		- channel property, CHANNEL_PASSIVE_SCAN, etc.
+
+Return Value:
+	TRUE			- YES
+	FALSE			- NO
+
+Note:
+========================================================================
+*/
+BOOLEAN CHAN_PropertyCheck(
+	IN PRTMP_ADAPTER	pAd,
+	IN UINT32			ChanNum,
+	IN UCHAR			Property)
+{
+	UINT32 IdChan;
+
+
+	/* look for all registered channels */
+	for(IdChan=0; IdChan<pAd->ChannelListNum; IdChan++)
+	{
+		if (pAd->ChannelList[IdChan].Channel == ChanNum)
+		{
+			if ((pAd->ChannelList[IdChan].Flags & Property) == Property)
+				return TRUE; /* same property */
+			/* End of if */
+
+			break;
+		} /* End of if */
+	} /* End of for */
+
+	return FALSE;
+}
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/netif_block.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/netif_block.c
new file mode 100644
index 000000000..c2f031b06
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/netif_block.c
@@ -0,0 +1,146 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+ */
+#ifdef BLOCK_NET_IF
+
+#include "rt_config.h"
+#include "netif_block.h"
+
+static NETIF_ENTRY freeNetIfEntryPool[FREE_NETIF_POOL_SIZE];
+static LIST_HEADER freeNetIfEntryList;
+
+void initblockQueueTab(
+	IN PRTMP_ADAPTER pAd)
+{
+	int i;
+
+	initList(&freeNetIfEntryList);
+	for (i = 0; i < FREE_NETIF_POOL_SIZE; i++)
+		insertTailList(&freeNetIfEntryList, (PLIST_ENTRY)&freeNetIfEntryPool[i]);
+
+	for (i=0; i < NUM_OF_TX_RING; i++)
+		initList(&pAd->blockQueueTab[i].NetIfList);
+
+	return;
+}
+
+BOOLEAN blockNetIf(
+	IN PBLOCK_QUEUE_ENTRY pBlockQueueEntry,
+	IN PNET_DEV pNetDev)
+{
+	PNETIF_ENTRY pNetIfEntry = NULL;
+	
+	if ((pNetIfEntry = (PNETIF_ENTRY)removeHeadList(&freeNetIfEntryList)) != NULL)
+	{
+		RTMP_OS_NETDEV_STOP_QUEUE(pNetDev);
+		pNetIfEntry->pNetDev = pNetDev;
+		insertTailList(&pBlockQueueEntry->NetIfList, (PLIST_ENTRY)pNetIfEntry);
+
+		pBlockQueueEntry->SwTxQueueBlockFlag = TRUE;
+		DBGPRINT(RT_DEBUG_TRACE, ("RTMP_OS_NETDEV_STOP_QUEUE(%s)\n", RTMP_OS_NETDEV_GET_DEVNAME(pNetDev)));
+	}
+	else
+		return FALSE;
+
+	return TRUE;
+}
+
+VOID releaseNetIf(
+	IN PBLOCK_QUEUE_ENTRY pBlockQueueEntry)
+{
+	PNETIF_ENTRY pNetIfEntry = NULL;
+	PLIST_HEADER pNetIfList = &pBlockQueueEntry->NetIfList;
+
+	while((pNetIfEntry = (PNETIF_ENTRY)removeHeadList(pNetIfList)) !=  NULL)
+	{
+		PNET_DEV pNetDev = pNetIfEntry->pNetDev;
+		RTMP_OS_NETDEV_WAKE_QUEUE(pNetDev);
+		insertTailList(&freeNetIfEntryList, (PLIST_ENTRY)pNetIfEntry);
+
+		DBGPRINT(RT_DEBUG_TRACE, ("RTMP_OS_NETDEV_WAKE_QUEUE(%s)\n", RTMP_OS_NETDEV_GET_DEVNAME(pNetDev)));
+	}
+	pBlockQueueEntry->SwTxQueueBlockFlag = FALSE;
+	return;
+}
+
+
+VOID StopNetIfQueue(
+	IN PRTMP_ADAPTER pAd,
+	IN UCHAR QueIdx,
+	IN PNDIS_PACKET pPacket)
+{
+	PNET_DEV NetDev = NULL;
+	UCHAR IfIdx = 0;
+	BOOLEAN valid = FALSE;
+
+#ifdef APCLI_SUPPORT
+	if (RTMP_GET_PACKET_NET_DEVICE(pPacket) >= MIN_NET_DEVICE_FOR_APCLI)
+	{
+		IfIdx = (RTMP_GET_PACKET_NET_DEVICE(pPacket) - MIN_NET_DEVICE_FOR_APCLI) % MAX_APCLI_NUM;
+		NetDev = pAd->ApCfg.ApCliTab[IfIdx].dev;
+	}
+	else
+#endif // APCLI_SUPPORT //
+#ifdef WDS_SUPPORT
+	if (RTMP_GET_PACKET_NET_DEVICE(pPacket) >= MIN_NET_DEVICE_FOR_WDS)
+	{
+		IfIdx = (RTMP_GET_PACKET_NET_DEVICE(pPacket) - MIN_NET_DEVICE_FOR_WDS) % MAX_WDS_ENTRY;
+		NetDev = pAd->WdsTab.WdsEntry[IfIdx].dev;
+	}
+	else
+#endif // WDS_SUPPORT //
+	{
+#ifdef MBSS_SUPPORT
+		if (pAd->OpMode == OPMODE_AP)
+		{
+			IfIdx = (RTMP_GET_PACKET_NET_DEVICE(pPacket) - MIN_NET_DEVICE_FOR_MBSSID) % MAX_MBSSID_NUM;
+			NetDev = pAd->ApCfg.MBSSID[IfIdx].MSSIDDev;
+		}
+		else
+		{
+			IfIdx = MAIN_MBSSID;
+			NetDev = pAd->net_dev;
+		}
+#else
+		IfIdx = MAIN_MBSSID;
+		NetDev = pAd->net_dev;
+#endif
+	}
+
+	// WMM support 4 software queues.
+	// One software queue full doesn't mean device have no capbility to transmit packet.
+	// So disable block Net-If queue function while WMM enable.
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		valid = (pAd->CommonCfg.bWmmCapable == TRUE) ? FALSE : TRUE;
+#endif // CONFIG_STA_SUPPORT //
+
+	if (valid)
+		blockNetIf(&pAd->blockQueueTab[QueIdx], NetDev);
+	return;
+}
+
+#endif // BLOCK_NET_IF //
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/rt2860.bin b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/rt2860.bin
new file mode 100644
index 0000000000000000000000000000000000000000..7d745ac588b086a4bf9ed4a3e26591e127c89dfa
GIT binary patch
literal 8192
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

literal 0
HcmV?d00001

diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/rt_channel.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/rt_channel.c
new file mode 100644
index 000000000..ac583b221
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/rt_channel.c
@@ -0,0 +1,1353 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+*/
+#include "rt_config.h"
+
+
+CH_FREQ_MAP CH_HZ_ID_MAP[]=
+		{
+			{1, 2412},
+			{2, 2417},
+			{3, 2422},
+			{4, 2427},
+			{5, 2432},
+			{6, 2437},
+			{7, 2442},
+			{8, 2447},
+			{9, 2452},
+			{10, 2457},
+			{11, 2462},
+			{12, 2467},
+			{13, 2472},
+			{14, 2484},
+
+			/*  UNII */
+			{36, 5180},
+			{40, 5200},
+			{44, 5220},
+			{48, 5240},
+			{52, 5260},
+			{56, 5280},
+			{60, 5300},
+			{64, 5320},
+			{149, 5745},
+			{153, 5765},
+			{157, 5785},
+			{161, 5805},
+			{165, 5825},
+			{167, 5835},
+			{169, 5845},
+			{171, 5855},
+			{173, 5865},
+						
+			/* HiperLAN2 */
+			{100, 5500},
+			{104, 5520},
+			{108, 5540},
+			{112, 5560},
+			{116, 5580},
+			{120, 5600},
+			{124, 5620},
+			{128, 5640},
+			{132, 5660},
+			{136, 5680},
+			{140, 5700},
+						
+			/* Japan MMAC */
+			{34, 5170},
+			{38, 5190},
+			{42, 5210},
+			{46, 5230},
+					
+			/*  Japan */
+			{184, 4920},
+			{188, 4940},
+			{192, 4960},
+			{196, 4980},
+			
+			{208, 5040},	/* Japan, means J08 */
+			{212, 5060},	/* Japan, means J12 */   
+			{216, 5080},	/* Japan, means J16 */
+};
+
+INT	CH_HZ_ID_MAP_NUM = (sizeof(CH_HZ_ID_MAP)/sizeof(CH_FREQ_MAP));
+
+#ifdef EXT_BUILD_CHANNEL_LIST
+CH_REGION ChRegion[] =
+{
+		{	// Antigua and Berbuda
+			"AG",
+			CE,
+			{
+				{ 1,   13, 20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36,  4,  23, BOTH, FALSE},	// 5G, ch 36~48
+				{ 52,  4,  23, BOTH, FALSE},	// 5G, ch 52~64
+				{ 100, 11, 30, BOTH, FALSE},	// 5G, ch 100~140
+				{ 0},							// end
+			}
+		},
+
+		{	// Argentina
+			"AR",
+			CE,
+			{
+				{ 1,   13, 20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 52,  4,  24, BOTH, FALSE},	// 5G, ch 52~64
+				{ 149, 4,  30, BOTH, FALSE},	// 5G, ch 149~161
+				{ 0},							// end
+			}
+		},
+
+		{	// Aruba
+			"AW",
+			CE,
+			{
+				{ 1,   13, 20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36,  4,  23, BOTH, FALSE},	// 5G, ch 36~48
+				{ 52,  4,  23, BOTH, FALSE},	// 5G, ch 52~64
+				{ 100, 11, 30, BOTH, FALSE},	// 5G, ch 100~140
+				{ 0},							// end
+			}
+		},
+
+		{	// Australia
+			"AU",
+			CE,
+			{
+				{ 1,   13, 20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36,  4,  23, BOTH, FALSE},	// 5G, ch 36~48
+				{ 52,  4,  24, BOTH, FALSE},	// 5G, ch 52~64
+				{ 149, 5,  30, BOTH, FALSE},	// 5G, ch 149~165
+				{ 0},							// end
+			}
+		},
+
+		{	// Austria
+			"AT",
+			CE,
+			{
+				{ 1,   13, 20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36,  4,  23, IDOR, TRUE},		// 5G, ch 36~48
+				{ 52,  4,  23, IDOR, TRUE},		// 5G, ch 52~64
+				{ 100, 11, 30, BOTH, TRUE},		// 5G, ch 100~140
+				{ 0},							// end
+			}
+		},
+
+		{	// Bahamas
+			"BS",
+			CE,
+			{
+				{ 1,   13, 20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36,  4,  23, BOTH, FALSE},	// 5G, ch 36~48
+				{ 52,  4,  24, BOTH, FALSE},	// 5G, ch 52~64
+				{ 149, 5,  30, BOTH, FALSE},	// 5G, ch 149~165
+				{ 0},							// end
+			}
+		},
+
+		{	// Barbados
+			"BB",
+			CE,
+			{
+				{ 1,   13, 20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36,  4,  23, BOTH, FALSE},	// 5G, ch 36~48
+				{ 52,  4,  24, BOTH, FALSE},	// 5G, ch 52~64
+				{ 100, 11, 30, BOTH, FALSE},	// 5G, ch 100~140
+				{ 0},							// end
+			}
+		},
+
+		{	// Bermuda
+			"BM",
+			CE,
+			{
+				{ 1,   13, 20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36,  4,  23, BOTH, FALSE},	// 5G, ch 36~48
+				{ 52,  4,  24, BOTH, FALSE},	// 5G, ch 52~64
+				{ 100, 11, 30, BOTH, FALSE},	// 5G, ch 100~140
+				{ 0},							// end
+			}
+		},
+
+		{	// Brazil
+			"BR",
+			CE,
+			{
+				{ 1,   13, 20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36,  4,  23, BOTH, FALSE},	// 5G, ch 36~48
+				{ 52,  4,  24, BOTH, FALSE},	// 5G, ch 52~64
+				{ 100, 11, 24, BOTH, FALSE},	// 5G, ch 100~140
+				{ 149, 5,  30, BOTH, FALSE},	// 5G, ch 100~140
+				{ 0},							// end
+			}
+		},
+
+		{	// Belgium
+			"BE",
+			CE,
+			{
+				{ 1,   13, 20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36,  4,  18, IDOR, FALSE},	// 5G, ch 36~48
+				{ 52,  4,  18, IDOR, FALSE},	// 5G, ch 52~64
+				{ 0},							// end
+			}
+		},
+
+		{	// Bulgaria
+			"BG",
+			CE,
+			{
+				{ 1,   13, 20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36,  4,  23, IDOR, FALSE},	// 5G, ch 36~48
+				{ 52,  4,  23, IDOR, TRUE},	// 5G, ch 52~64
+				{ 100, 11, 30, ODOR, TRUE},	// 5G, ch 100~140
+				{ 0},							// end
+			}
+		},
+
+		{	// Canada
+			"CA",
+			CE,
+			{
+				{ 1,   13, 20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36,  4,  23, BOTH, FALSE},	// 5G, ch 36~48
+				{ 52,  4,  23, BOTH, FALSE},	// 5G, ch 52~64
+				{ 149, 5,  30, BOTH, FALSE},	// 5G, ch 149~165
+				{ 0},							// end
+			}
+		},
+
+		{	// Cayman IsLands
+			"KY",
+			CE,
+			{
+				{ 1,   13, 20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36,  4,  23, BOTH, FALSE},	// 5G, ch 36~48
+				{ 52,  4,  24, BOTH, FALSE},	// 5G, ch 52~64
+				{ 100, 11, 30, BOTH, FALSE},	// 5G, ch 100~140
+				{ 0},							// end
+			}
+		},
+
+		{	// Chile
+			"CL",
+			CE,
+			{
+				{ 1,   13, 20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36,  4,  20, BOTH, FALSE},	// 5G, ch 36~48
+				{ 52,  4,  20, BOTH, FALSE},	// 5G, ch 52~64
+				{ 149, 5,  20, BOTH, FALSE},	// 5G, ch 149~165
+				{ 0},							// end
+			}
+		},
+
+		{	// China
+			"CN",
+			CE,
+			{
+				{ 1,   13, 20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 149, 4,  27, BOTH, FALSE},	// 5G, ch 149~161
+				{ 0},							// end
+			}
+		},
+
+		{	// Colombia
+			"CO",
+			CE,
+			{
+				{ 1,   13, 20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36,  4,  17, BOTH, FALSE},	// 5G, ch 36~48
+				{ 52,  4,  24, BOTH, FALSE},	// 5G, ch 52~64
+				{ 100, 11, 30, BOTH, FALSE},	// 5G, ch 100~140
+				{ 149, 5,  30, BOTH, FALSE},	// 5G, ch 149~165
+				{ 0},							// end
+			}
+		},
+
+		{	// Costa Rica
+			"CR",
+			CE,
+			{
+				{ 1,   13, 20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36,  4,  17, BOTH, FALSE},	// 5G, ch 36~48
+				{ 52,  4,  24, BOTH, FALSE},	// 5G, ch 52~64
+				{ 149, 4,  30, BOTH, FALSE},	// 5G, ch 149~161
+				{ 0},							// end
+			}
+		},
+
+		{	// Cyprus
+			"CY",
+			CE,
+			{
+				{ 1,   13, 20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36,  4,  23, IDOR, FALSE},	// 5G, ch 36~48
+				{ 52,  4,  24, IDOR, TRUE},		// 5G, ch 52~64
+				{ 100, 11, 30, BOTH, TRUE},		// 5G, ch 100~140
+				{ 0},							// end
+			}
+		},
+
+		{	// Czech_Republic
+			"CZ",
+			CE,
+			{
+				{ 1,   13, 20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36,  4,  23, IDOR, FALSE},	// 5G, ch 36~48
+				{ 52,  4,  23, IDOR, TRUE},		// 5G, ch 52~64
+				{ 0},							// end
+			}
+		},
+
+		{	// Denmark
+			"DK",
+			CE,
+			{
+				{ 1,   13, 20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36,  4,  23, IDOR, FALSE},	// 5G, ch 36~48
+				{ 52,  4,  23, IDOR, TRUE},		// 5G, ch 52~64
+				{ 100, 11, 30, BOTH, TRUE},		// 5G, ch 100~140
+				{ 0},							// end
+			}
+		},
+
+		{	// Dominican Republic
+			"DO",
+			CE,
+			{
+				{ 1,   0,  20, BOTH, FALSE},	// 2.4 G, ch 0
+				{ 149, 4,  20, BOTH, FALSE},	// 5G, ch 149~161
+				{ 0},							// end
+			}
+		},
+
+		{	// Equador
+			"EC",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 100, 11,  27, BOTH, FALSE},	// 5G, ch 100~140
+				{ 0},							// end
+			}
+		},
+
+		{	// El Salvador
+			"SV",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36,  4,   23, IDOR, FALSE},	// 5G, ch 36~48
+				{ 52,  4,   30, BOTH, TRUE},	// 5G, ch 52~64
+				{ 149, 4,   36, BOTH, TRUE},	// 5G, ch 149~165
+				{ 0},							// end
+			}
+		},
+
+		{	// Finland
+			"FI",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36,  4,   23, IDOR, FALSE},	// 5G, ch 36~48
+				{ 52,  4,   23, IDOR, TRUE},	// 5G, ch 52~64
+				{ 100, 11,  30, BOTH, TRUE},	// 5G, ch 100~140
+				{ 0},							// end
+			}
+		},
+
+		{	// France
+			"FR",
+			CE,
+			{
+				{ 1,   13,  10, IDOR, FALSE},	// 2.4 G, ch 1~13
+				{ 1,   13,	20, ODOR, FALSE},	// 2.4 G, ch 1~13
+				{ 36,  4,   23, IDOR, FALSE},	// 5G, ch 36~48
+				{ 52,  4,   23, IDOR, TRUE},	// 5G, ch 52~64
+				{ 0},							// end
+			}
+		},
+
+		{	// Germany
+			"DE",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36,  4,   23, IDOR, FALSE},	// 5G, ch 36~48
+				{ 52,  4,   23, IDOR, TRUE},	// 5G, ch 52~64
+				{ 100, 11,  30, BOTH, TRUE},	// 5G, ch 100~140
+				{ 0},							// end
+			}
+		},
+
+		{	// Greece
+			"GR",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36,  4,   23, IDOR, FALSE},	// 5G, ch 36~48
+				{ 52,  4,   23, IDOR, TRUE},	// 5G, ch 52~64
+				{ 100, 11,  30, ODOR, TRUE},	// 5G, ch 100~140
+				{ 0},							// end
+			}
+		},
+
+		{	// Guam
+			"GU",
+			CE,
+			{
+				{ 1,   11,  20, BOTH, FALSE},	// 2.4 G, ch 1~11
+				{ 36,  4,   17, BOTH, FALSE},	// 5G, ch 36~48
+				{ 52,  4,   24, BOTH, FALSE},	// 5G, ch 52~64
+				{ 100, 11,  30, BOTH, FALSE},	// 5G, ch 100~140
+				{ 149,  5,  30, BOTH, FALSE},	// 5G, ch 149~165
+				{ 0},							// end
+			}
+		},
+
+		{	// Guatemala
+			"GT",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36,  4,   17, BOTH, FALSE},	// 5G, ch 36~48
+				{ 52,  4,   24, BOTH, FALSE},	// 5G, ch 52~64
+				{ 149,  4,  30, BOTH, FALSE},	// 5G, ch 149~161
+				{ 0},							// end
+			}
+		},
+
+		{	// Haiti
+			"HT",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36,  4,   17, BOTH, FALSE},	// 5G, ch 36~48
+				{ 52,  4,   24, BOTH, FALSE},	// 5G, ch 52~64
+				{ 149,  4,  30, BOTH, FALSE},	// 5G, ch 149~161
+				{ 0},							// end
+			}
+		},
+
+		{	// Honduras
+			"HN",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 149,  4,  27, BOTH, FALSE},	// 5G, ch 149~161
+				{ 0},							// end
+			}
+		},
+
+		{	// Hong Kong
+			"HK",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36,   4,  23, IDOR, FALSE},	// 5G, ch 36~48
+				{ 52,   4,  23, IDOR, FALSE},	// 5G, ch 52~64
+				{ 149,  4,  30, BOTH, FALSE},	// 5G, ch 149~161
+				{ 0},							// end
+			}
+		},
+
+		{	// Hungary
+			"HU",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36,   4,  23, IDOR, FALSE},	// 5G, ch 36~48
+				{ 52,   4,  23, IDOR, TRUE},	// 5G, ch 52~64
+				{ 0},							// end
+			}
+		},
+
+		{	// Iceland
+			"IS",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36,   4,  23, IDOR, FALSE},	// 5G, ch 36~48
+				{ 52,   4,  23, IDOR, TRUE},	// 5G, ch 52~64
+				{ 100, 11,  30, BOTH, TRUE},	// 5G, ch 100~140
+				{ 0},							// end
+			}
+		},
+
+		{	// India
+			"IN",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 149, 	4,  24, IDOR, FALSE},	// 5G, ch 149~161
+				{ 0},							// end
+			}
+		},
+
+		{	// Indonesia
+			"ID",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 149, 	4,  27, BOTH, FALSE},	// 5G, ch 149~161
+				{ 0},							// end
+			}
+		},
+
+		{	// Ireland
+			"IE",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36, 	4,  23, IDOR, FALSE},	// 5G, ch 36~48
+				{ 52, 	4,  23, IDOR, TRUE},	// 5G, ch 52~64
+				{ 100, 11,  30, ODOR, TRUE},	// 5G, ch 100~140
+				{ 0},							// end
+			}
+		},
+
+		{	// Israel
+			"IL",
+			CE,
+			{
+				{ 1,    3,  20, IDOR, FALSE},	// 2.4 G, ch 1~3
+				{ 4, 	6,  20, BOTH, FALSE},	// 2.4 G, ch 4~9
+				{ 10, 	4,  20, IDOR, FALSE},	// 2.4 G, ch 10~13
+				{ 0},							// end
+			}
+		},
+
+		{	// Italy
+			"IT",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36, 	4,  23, IDOR, FALSE},	// 5G, ch 36~48
+				{ 52, 	4,  23, IDOR, TRUE},	// 5G, ch 52~64
+				{ 100, 11,  30, ODOR, TRUE},	// 5G, ch 100~140
+				{ 0},							// end
+			}
+		},
+
+		{	// Japan
+			"JP",
+			JAP,
+			{
+				{ 1,   14,  20, BOTH, FALSE},	// 2.4 G, ch 1~14
+				{ 36, 	4,  23, IDOR, FALSE},	// 5G, ch 36~48
+				{ 0},							// end
+			}
+		},
+
+		{	// Jordan
+			"JO",
+			CE,
+			{
+				{ 1,   13,  20, IDOR, FALSE},	// 2.4 G, ch 1~13
+				{ 36, 	4,  23, IDOR, FALSE},	// 5G, ch 36~48
+				{ 149, 	4,  23, IDOR, FALSE},	// 5G, ch 149~161
+				{ 0},							// end
+			}
+		},
+
+		{	// Latvia
+			"LV",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36, 	4,  23, IDOR, FALSE},	// 5G, ch 36~48
+				{ 52, 	4,  23, IDOR, TRUE},	// 5G, ch 52~64
+				{ 100, 11,  30, BOTH, TRUE},	// 5G, ch 100~140
+				{ 0},							// end
+			}
+		},
+
+		{	// Liechtenstein
+			"LI",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 52, 	4,  23, IDOR, TRUE},	// 5G, ch 52~64
+				{ 100, 11,  30, BOTH, TRUE},	// 5G, ch 100~140
+				{ 0},							// end
+			}
+		},
+
+		{	// Lithuania
+			"LT",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36, 	4,  23, IDOR, FALSE},	// 5G, ch 36~48
+				{ 52, 	4,  23, IDOR, TRUE},	// 5G, ch 52~64
+				{ 100, 11,  30, BOTH, TRUE},	// 5G, ch 100~140
+				{ 0},							// end
+			}
+		},
+
+		{	// Luxemburg
+			"LU",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36, 	4,  23, IDOR, FALSE},	// 5G, ch 36~48
+				{ 52, 	4,  23, IDOR, TRUE},	// 5G, ch 52~64
+				{ 100, 11,  30, BOTH, TRUE},	// 5G, ch 100~140
+				{ 0},							// end
+			}
+		},
+
+		{	// Malaysia
+			"MY",
+			CE,
+			{
+				{ 36, 	4,  23, BOTH, FALSE},	// 5G, ch 36~48
+				{ 52, 	4,  23, BOTH, FALSE},	// 5G, ch 52~64
+				{ 149,  5,  20, BOTH, FALSE},	// 5G, ch 149~165
+				{ 0},							// end
+			}
+		},
+
+		{	// Malta
+			"MT",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36, 	4,  23, IDOR, FALSE},	// 5G, ch 36~48
+				{ 52, 	4,  23, IDOR, TRUE},	// 5G, ch 52~64
+				{ 100, 11,  30, BOTH, TRUE},	// 5G, ch 100~140
+				{ 0},							// end
+			}
+		},
+
+		{	// Marocco
+			"MA",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36, 	4,  24, IDOR, FALSE},	// 5G, ch 36~48
+				{ 0},							// end
+			}
+		},
+
+		{	// Mexico
+			"MX",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36, 	4,  23, BOTH, FALSE},	// 5G, ch 36~48
+				{ 52, 	4,  24, BOTH, FALSE},	// 5G, ch 52~64
+				{ 149,  5,  30, IDOR, FALSE},	// 5G, ch 149~165
+				{ 0},							// end
+			}
+		},
+
+		{	// Netherlands
+			"NL",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36, 	4,  23, IDOR, FALSE},	// 5G, ch 36~48
+				{ 52, 	4,  24, IDOR, TRUE},	// 5G, ch 52~64
+				{ 100, 11,  30, BOTH, TRUE},	// 5G, ch 100~140
+				{ 0},							// end
+			}
+		},
+
+		{	// New Zealand
+			"NZ",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36, 	4,  24, BOTH, FALSE},	// 5G, ch 36~48
+				{ 52, 	4,  24, BOTH, FALSE},	// 5G, ch 52~64
+				{ 149,  4,  30, BOTH, FALSE},	// 5G, ch 149~161
+				{ 0},							// end
+			}
+		},
+
+		{	// Norway
+			"NO",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36, 	4,  24, IDOR, FALSE},	// 5G, ch 36~48
+				{ 52, 	4,  24, IDOR, TRUE},	// 5G, ch 52~64
+				{ 100, 11,  30, BOTH, TRUE},	// 5G, ch 149~161
+				{ 0},							// end
+			}
+		},
+
+		{	// Peru
+			"PE",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 149,  4,  27, BOTH, FALSE},	// 5G, ch 149~161
+				{ 0},							// end
+			}
+		},
+
+		{	// Portugal
+			"PT",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36,   4,  23, IDOR, FALSE},	// 5G, ch 36~48
+				{ 52,   4,  23, IDOR, TRUE},	// 5G, ch 52~64
+				{ 100, 11,  30, BOTH, TRUE},	// 5G, ch 100~140
+				{ 0},							// end
+			}
+		},
+
+		{	// Poland
+			"PL",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36,   4,  23, IDOR, FALSE},	// 5G, ch 36~48
+				{ 52,   4,  23, IDOR, TRUE},	// 5G, ch 52~64
+				{ 100, 11,  30, BOTH, TRUE},	// 5G, ch 100~140
+				{ 0},							// end
+			}
+		},
+
+		{	// Romania
+			"RO",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36,   4,  23, IDOR, FALSE},	// 5G, ch 36~48
+				{ 52,   4,  23, IDOR, TRUE},	// 5G, ch 52~64
+				{ 100, 11,  30, BOTH, TRUE},	// 5G, ch 100~140
+				{ 0},							// end
+			}
+		},
+
+		{	// Russia
+			"RU",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 149,  4,  20, IDOR, FALSE},	// 5G, ch 149~161
+				{ 0},							// end
+			}
+		},
+
+		{	// Saudi Arabia
+			"SA",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36,   4,  23, BOTH, FALSE},	// 5G, ch 36~48
+				{ 52,   4,  23, BOTH, FALSE},	// 5G, ch 52~64
+				{ 149,  4,  23, BOTH, FALSE},	// 5G, ch 149~161
+				{ 0},							// end
+			}
+		},
+
+		{	// Serbia_and_Montenegro
+			"CS",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 0},							// end
+			}
+		},
+
+		{	// Singapore
+			"SG",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36,   4,  23, BOTH, FALSE},	// 5G, ch 36~48
+				{ 52,   4,  23, BOTH, FALSE},	// 5G, ch 52~64
+				{ 149,  4,  20, BOTH, FALSE},	// 5G, ch 149~161
+				{ 0},							// end
+			}
+		},
+
+		{	// Slovakia
+			"SK",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36,   4,  23, IDOR, FALSE},	// 5G, ch 36~48
+				{ 52,   4,  23, IDOR, TRUE},	// 5G, ch 52~64
+				{ 100, 11,  30, BOTH, TRUE},	// 5G, ch 100~140
+				{ 0},							// end
+			}
+		},
+
+		{	// Slovenia
+			"SI",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36,   4,  23, IDOR, FALSE},	// 5G, ch 36~48
+				{ 52,   4,  23, IDOR, TRUE},	// 5G, ch 52~64
+				{ 0},							// end
+			}
+		},
+
+		{	// South Africa
+			"ZA",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36,   4,  23, BOTH, FALSE},	// 5G, ch 36~48
+				{ 52,   4,  23, IDOR, FALSE},	// 5G, ch 52~64
+				{ 100, 11,  30, BOTH, TRUE},	// 5G, ch 100~140
+				{ 149,  4,  30, BOTH, FALSE},	// 5G, ch 149~161
+				{ 0},							// end
+			}
+		},
+
+		{	// South Korea
+			"KR",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36,   4,  20, BOTH, FALSE},	// 5G, ch 36~48
+				{ 52,   4,  20, BOTH, FALSE},	// 5G, ch 52~64
+				{ 100,  8,  20, BOTH, FALSE},	// 5G, ch 100~128
+				{ 149,  4,  20, BOTH, FALSE},	// 5G, ch 149~161
+				{ 0},							// end
+			}
+		},
+
+		{	// Spain
+			"ES",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36,   4,  17, IDOR, FALSE},	// 5G, ch 36~48
+				{ 52,   4,  23, IDOR, TRUE},	// 5G, ch 52~64
+				{ 100, 11,  30, BOTH, TRUE},	// 5G, ch 100~140
+				{ 0},							// end
+			}
+		},
+
+		{	// Sweden
+			"SE",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36,   4,  23, IDOR, FALSE},	// 5G, ch 36~48
+				{ 52,   4,  23, IDOR, TRUE},	// 5G, ch 52~64
+				{ 100, 11,  30, BOTH, TRUE},	// 5G, ch 100~140
+				{ 0},							// end
+			}
+		},
+
+		{	// Switzerland
+			"CH",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~13
+				{ 36,   4,  23, IDOR, TRUE},	// 5G, ch 36~48
+				{ 52,   4,  23, IDOR, TRUE},	// 5G, ch 52~64
+				{ 0},							// end
+			}
+		},
+
+		{	// Taiwan
+			"TW",
+			CE,
+			{
+				{ 1,   11,  30, BOTH, FALSE},	// 2.4 G, ch 1~11
+				{ 52,   4,  23, IDOR, FALSE},	// 5G, ch 52~64
+				{ 0},							// end
+			}
+		},
+
+		{	// Turkey
+			"TR",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~11
+				{ 36,   4,  23, BOTH, FALSE},	// 5G, ch 36~48
+				{ 52,   4,  23, BOTH, FALSE},	// 5G, ch 52~64
+				{ 0},							// end
+			}
+		},
+
+		{	// UK
+			"GB",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~11
+				{ 36,   4,  23, IDOR, FALSE},	// 5G, ch 36~48
+				{ 52,   4,  23, IDOR, TRUE},	// 5G, ch 52~64
+				{ 100, 11,  30, BOTH, TRUE},	// 5G, ch 100~140
+				{ 0},							// end
+			}
+		},
+
+		{	// Ukraine
+			"UA",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~11
+				{ 0},							// end
+			}
+		},
+
+		{	// United_Arab_Emirates
+			"AE",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~11
+				{ 0},							// end
+			}
+		},
+
+		{	// United_States
+			"US",
+			FCC,
+			{
+				{ 1,   11,  30, BOTH, FALSE},	// 2.4 G, ch 1~11
+				{ 36,   4,  17, IDOR, FALSE},	// 5G, ch 36~48
+				{ 52,   4,  24, BOTH, TRUE},	// 5G, ch 52~64
+				{ 100, 11,  30, BOTH, TRUE},	// 5G, ch 100~140
+				{ 149,  5,  30, BOTH, FALSE},	// 5G, ch 149~165
+				{ 0},							// end
+			}
+		},
+
+		{	// Venezuela
+			"VE",
+			CE,
+			{
+				{ 1,   13,  20, BOTH, FALSE},	// 2.4 G, ch 1~11
+				{ 149,  4,  27, BOTH, FALSE},	// 5G, ch 149~161
+				{ 0},							// end
+			}
+		},
+
+		{	// Default
+			"",
+			CE,
+			{
+				{ 1,   14,  255, BOTH, FALSE},	// 2.4 G, ch 1~14
+				{ 36,   4,  255, BOTH, FALSE},	// 5G, ch 36~48
+				{ 52,   4,  255, BOTH, FALSE},	// 5G, ch 52~64
+				{ 100, 11,  255, BOTH, FALSE},	// 5G, ch 100~140
+				{ 149,  5,  255, BOTH, FALSE},	// 5G, ch 149~165
+				{ 0},							// end
+			}
+		},
+};
+
+
+static PCH_REGION GetChRegion(
+	IN PUCHAR CntryCode)
+{
+	INT loop = 0;
+	PCH_REGION pChRegion = NULL;
+
+	while (strcmp((PSTRING) ChRegion[loop].CountReg, "") != 0)
+	{
+		if (strncmp((PSTRING) ChRegion[loop].CountReg, (PSTRING) CntryCode, 2) == 0)
+		{
+			pChRegion = &ChRegion[loop];
+			break;
+		}
+		loop++;
+	}
+
+	if (pChRegion == NULL)
+		pChRegion = &ChRegion[loop];
+	return pChRegion;
+}
+
+static VOID ChBandCheck(
+	IN UCHAR PhyMode,
+	OUT PUCHAR pChType)
+{
+	switch(PhyMode)
+	{
+		case PHY_11A:
+#ifdef DOT11_N_SUPPORT
+		case PHY_11AN_MIXED:
+#endif // DOT11_N_SUPPORT //
+			*pChType = BAND_5G;
+			break;
+		case PHY_11ABG_MIXED:
+#ifdef DOT11_N_SUPPORT
+		case PHY_11AGN_MIXED:
+		case PHY_11ABGN_MIXED:
+#endif // DOT11_N_SUPPORT //
+			*pChType = BAND_BOTH;
+			break;
+
+		default:
+			*pChType = BAND_24G;
+			break;
+	}
+}
+
+static UCHAR FillChList(
+	IN PRTMP_ADAPTER pAd,
+	IN PCH_DESP pChDesp,
+	IN UCHAR Offset, 
+	IN UCHAR increment,
+	IN UCHAR regulatoryDomain)
+{
+	INT i, j, l;
+	UCHAR channel;
+
+	j = Offset;
+	for (i = 0; i < pChDesp->NumOfCh; i++)
+	{
+		channel = pChDesp->FirstChannel + i * increment;
+		for (l=0; l<MAX_NUM_OF_CHANNELS; l++)
+		{
+			if (channel == pAd->TxPower[l].Channel)
+			{
+				pAd->ChannelList[j].Power = pAd->TxPower[l].Power;
+				pAd->ChannelList[j].Power2 = pAd->TxPower[l].Power2;
+				break;
+			}
+		}
+		if (l == MAX_NUM_OF_CHANNELS)
+			continue;
+
+		pAd->ChannelList[j].Channel = pChDesp->FirstChannel + i * increment;
+		pAd->ChannelList[j].MaxTxPwr = pChDesp->MaxTxPwr;
+		pAd->ChannelList[j].DfsReq = pChDesp->DfsReq;
+		pAd->ChannelList[j].RegulatoryDomain = regulatoryDomain;
+		j++;
+	}
+	pAd->ChannelListNum = j;
+
+	return j;
+}
+
+
+static inline VOID CreateChList(
+	IN PRTMP_ADAPTER pAd,
+	IN PCH_REGION pChRegion,
+	IN UCHAR Geography)
+{
+	INT i;
+	UCHAR offset = 0;
+	PCH_DESP pChDesp;
+	UCHAR ChType;
+	UCHAR increment;
+	UCHAR regulatoryDomain;
+
+	if (pChRegion == NULL)
+		return;
+
+	ChBandCheck(pAd->CommonCfg.PhyMode, &ChType);
+
+	for (i=0; i<10; i++)
+	{
+		pChDesp = &pChRegion->ChDesp[i];
+		if (pChDesp->FirstChannel == 0)
+			break;
+
+		if (ChType == BAND_5G)
+		{
+			if (pChDesp->FirstChannel <= 14)
+				continue;
+		}
+		else if (ChType == BAND_24G)
+		{
+			if (pChDesp->FirstChannel > 14)
+				continue;
+		}
+
+		if ((pChDesp->Geography == BOTH)
+			|| (pChDesp->Geography == Geography))
+        {
+			if (pChDesp->FirstChannel > 14)
+                increment = 4;
+            else
+                increment = 1;
+			regulatoryDomain = pChRegion->DfsType;
+			offset = FillChList(pAd, pChDesp, offset, increment, regulatoryDomain);
+        }
+	}
+}
+
+
+VOID BuildChannelListEx(
+	IN PRTMP_ADAPTER pAd)
+{
+	PCH_REGION pChReg;
+
+	pChReg = GetChRegion(pAd->CommonCfg.CountryCode);
+	CreateChList(pAd, pChReg, pAd->CommonCfg.Geography);
+}
+
+VOID BuildBeaconChList(
+	IN PRTMP_ADAPTER pAd,
+	OUT PUCHAR pBuf,
+	OUT	PULONG pBufLen)
+{
+	INT i;
+	ULONG TmpLen;
+	PCH_REGION pChRegion;
+	PCH_DESP pChDesp;
+	UCHAR ChType;
+
+	pChRegion = GetChRegion(pAd->CommonCfg.CountryCode);
+
+	if (pChRegion == NULL)
+		return;
+
+	ChBandCheck(pAd->CommonCfg.PhyMode, &ChType);
+	*pBufLen = 0;
+
+	for (i=0; i<10; i++)
+	{
+		pChDesp = &pChRegion->ChDesp[i];
+		if (pChDesp->FirstChannel == 0)
+			break;
+
+		if (ChType == BAND_5G)
+		{
+			if (pChDesp->FirstChannel <= 14)
+				continue;
+		}
+		else if (ChType == BAND_24G)
+		{
+			if (pChDesp->FirstChannel > 14)
+				continue;
+		}
+
+		if ((pChDesp->Geography == BOTH)
+			|| (pChDesp->Geography == pAd->CommonCfg.Geography))
+		{
+			MakeOutgoingFrame(pBuf + *pBufLen,		&TmpLen,
+								1,                 	&pChDesp->FirstChannel,
+								1,                 	&pChDesp->NumOfCh,
+								1,                 	&pChDesp->MaxTxPwr,
+								END_OF_ARGS);
+			*pBufLen += TmpLen;
+		}
+	}
+}
+#endif // EXT_BUILD_CHANNEL_LIST //
+
+#ifdef DOT11_N_SUPPORT
+static BOOLEAN IsValidChannel(
+	IN PRTMP_ADAPTER pAd,
+	IN UCHAR channel)
+
+{
+	INT i;
+
+	for (i = 0; i < pAd->ChannelListNum; i++)
+	{
+		if (pAd->ChannelList[i].Channel == channel)
+			break;
+	}
+
+	if (i == pAd->ChannelListNum)
+		return FALSE;
+	else
+		return TRUE;
+}
+
+
+static UCHAR GetExtCh(
+	IN UCHAR Channel,
+	IN UCHAR Direction)
+{
+	CHAR ExtCh;
+
+	if (Direction == EXTCHA_ABOVE)
+		ExtCh = Channel + 4;
+	else
+		ExtCh = (Channel - 4) > 0 ? (Channel - 4) : 0;
+
+	return ExtCh;
+}
+
+
+VOID N_ChannelCheck(
+	IN PRTMP_ADAPTER pAd)
+{
+	//UCHAR ChannelNum = pAd->ChannelListNum;
+	UCHAR Channel = pAd->CommonCfg.Channel;
+
+	if ((pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED) && (pAd->CommonCfg.RegTransmitSetting.field.BW  == BW_40))
+	{
+		if (Channel > 14)
+		{
+			if ((Channel == 36) || (Channel == 44) || (Channel == 52) || (Channel == 60) || (Channel == 100) || (Channel == 108) ||
+			    (Channel == 116) || (Channel == 124) || (Channel == 132) || (Channel == 149) || (Channel == 157))
+			{
+				pAd->CommonCfg.RegTransmitSetting.field.EXTCHA = EXTCHA_ABOVE;
+			}
+			else if ((Channel == 40) || (Channel == 48) || (Channel == 56) || (Channel == 64) || (Channel == 104) || (Channel == 112) ||
+					(Channel == 120) || (Channel == 128) || (Channel == 136) || (Channel == 153) || (Channel == 161))
+			{
+				pAd->CommonCfg.RegTransmitSetting.field.EXTCHA = EXTCHA_BELOW;
+			}
+			else
+			{
+				pAd->CommonCfg.RegTransmitSetting.field.BW  = BW_20;
+			}
+		}
+		else
+		{
+			do
+			{
+				UCHAR ExtCh;
+				UCHAR Dir = pAd->CommonCfg.RegTransmitSetting.field.EXTCHA;
+				ExtCh = GetExtCh(Channel, Dir);
+				if (IsValidChannel(pAd, ExtCh))
+					break;
+
+				Dir = (Dir == EXTCHA_ABOVE) ? EXTCHA_BELOW : EXTCHA_ABOVE;
+				ExtCh = GetExtCh(Channel, Dir);
+				if (IsValidChannel(pAd, ExtCh))
+				{
+					pAd->CommonCfg.RegTransmitSetting.field.EXTCHA = Dir;
+					break;
+				}
+				pAd->CommonCfg.RegTransmitSetting.field.BW  = BW_20;
+			} while(FALSE);
+
+			if (Channel == 14)
+			{
+				pAd->CommonCfg.RegTransmitSetting.field.BW  = BW_20;
+				//pAd->CommonCfg.RegTransmitSetting.field.EXTCHA = EXTCHA_NONE;	// We didn't set the ExtCh as NONE due to it'll set in RTMPSetHT()
+			}
+		}
+	}
+
+
+}
+
+
+VOID N_SetCenCh(
+	IN PRTMP_ADAPTER pAd)
+{
+	if (pAd->CommonCfg.RegTransmitSetting.field.BW == BW_40)
+	{
+		if (pAd->CommonCfg.RegTransmitSetting.field.EXTCHA == EXTCHA_ABOVE)
+		{
+			pAd->CommonCfg.CentralChannel = pAd->CommonCfg.Channel + 2;
+		}
+		else
+		{
+			if (pAd->CommonCfg.Channel == 14)
+				pAd->CommonCfg.CentralChannel = pAd->CommonCfg.Channel - 1;
+			else
+				pAd->CommonCfg.CentralChannel = pAd->CommonCfg.Channel - 2;
+		}
+	}
+	else
+	{
+		pAd->CommonCfg.CentralChannel = pAd->CommonCfg.Channel;
+	}
+}
+#endif // DOT11_N_SUPPORT //
+
+
+UINT8 GetCuntryMaxTxPwr(
+	IN PRTMP_ADAPTER pAd,
+	IN UINT8 channel)
+{
+	int i;
+	for (i = 0; i < pAd->ChannelListNum; i++)
+	{
+		if (pAd->ChannelList[i].Channel == channel)
+			break;
+	}
+
+	if (i == pAd->ChannelListNum)
+		return 0xff;
+#ifdef SINGLE_SKU
+	if (pAd->CommonCfg.bSKUMode == TRUE)
+	{
+		if (pAd->ChannelList[i].RegulatoryDomain == FCC)
+		{
+			/* FCC should maintain 20/40 Bandwidth, and without antenna gain */
+			if ((pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED) &&
+				(pAd->CommonCfg.RegTransmitSetting.field.BW == BW_40))
+				return (pAd->ChannelList[i].MaxTxPwr - pAd->CommonCfg.BandedgeDelta);
+			else
+				return pAd->ChannelList[i].MaxTxPwr;
+		}
+		else if (pAd->ChannelList[i].RegulatoryDomain == CE)
+		{
+#ifdef DOT11_N_SUPPORT
+			if ((pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED) &&
+				(pAd->CommonCfg.TxStream == 2))
+#endif // DOT11_N_SUPPORT //
+				return (pAd->ChannelList[i].MaxTxPwr - pAd->CommonCfg.AntGain - 3); // If 2Tx case, antenna gain will increase 3dBm
+			else
+				return (pAd->ChannelList[i].MaxTxPwr - pAd->CommonCfg.AntGain);
+		}
+		else ;
+	}
+	else
+#endif // SINGLE_SKU //
+		return pAd->ChannelList[i].MaxTxPwr;
+}
+
+
+/* for OS_ABL */
+VOID RTMP_MapChannelID2KHZ(
+	IN UCHAR Ch,
+	OUT UINT32 *pFreq)
+{
+	int chIdx;
+	for (chIdx = 0; chIdx < CH_HZ_ID_MAP_NUM; chIdx++)
+	{
+		if ((Ch) == CH_HZ_ID_MAP[chIdx].channel)
+		{
+			(*pFreq) = CH_HZ_ID_MAP[chIdx].freqKHz * 1000;
+			break;
+		}
+	}
+	if (chIdx == CH_HZ_ID_MAP_NUM)
+		(*pFreq) = 2412000;
+}
+
+/* for OS_ABL */
+VOID RTMP_MapKHZ2ChannelID(
+	IN ULONG Freq,
+	OUT INT *pCh)
+{
+	int chIdx;
+	for (chIdx = 0; chIdx < CH_HZ_ID_MAP_NUM; chIdx++)
+	{
+		if ((Freq) == CH_HZ_ID_MAP[chIdx].freqKHz)
+		{
+			(*pCh) = CH_HZ_ID_MAP[chIdx].channel;
+			break;
+		}
+	}
+	if (chIdx == CH_HZ_ID_MAP_NUM)
+		(*pCh) = 1;
+}
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/rt_rf.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/rt_rf.c
new file mode 100644
index 000000000..866296bd5
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/rt_rf.c
@@ -0,0 +1,216 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+	Module Name:
+	rt_rf.c
+
+	Abstract:
+	Ralink Wireless driver RF related functions
+
+	Revision History:
+	Who         When          What
+	--------    ----------    ----------------------------------------------
+*/
+
+
+#include "rt_config.h"
+
+
+#ifdef RTMP_RF_RW_SUPPORT
+/*
+	========================================================================
+	
+	Routine Description: Write RT30xx RF register through MAC
+
+	Arguments:
+
+	Return Value:
+
+	IRQL = 
+	
+	Note:
+	
+	========================================================================
+*/
+NDIS_STATUS RT30xxWriteRFRegister(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	UCHAR			regID,
+	IN	UCHAR			value)
+{
+	RF_CSR_CFG_STRUC	rfcsr;
+	UINT				i = 0;
+
+	do
+	{
+		RTMP_IO_READ32(pAd, RF_CSR_CFG, &rfcsr.word);
+
+		if (!rfcsr.field.RF_CSR_KICK)
+			break;
+		i++;
+	}
+	while ((i < RETRY_LIMIT) && (!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_NIC_NOT_EXIST)));
+
+	if ((i == RETRY_LIMIT) || (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_NIC_NOT_EXIST)))
+	{
+		DBGPRINT_RAW(RT_DEBUG_ERROR, ("Retry count exhausted or device removed!!!\n"));
+		return STATUS_UNSUCCESSFUL;
+	}
+
+	rfcsr.field.RF_CSR_WR = 1;
+	rfcsr.field.RF_CSR_KICK = 1;
+	rfcsr.field.TESTCSR_RFACC_REGNUM = regID;
+	rfcsr.field.RF_CSR_DATA = value;
+	
+	RTMP_IO_WRITE32(pAd, RF_CSR_CFG, rfcsr.word);
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+/*
+	========================================================================
+	
+	Routine Description: Read RT30xx RF register through MAC
+
+	Arguments:
+
+	Return Value:
+
+	IRQL = 
+	
+	Note:
+	
+	========================================================================
+*/
+NDIS_STATUS RT30xxReadRFRegister(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	UCHAR			regID,
+	IN	PUCHAR			pValue)
+{
+	RF_CSR_CFG_STRUC	rfcsr;											
+	UINT				i=0, k=0;
+
+	for (i=0; i<MAX_BUSY_COUNT; i++)
+	{
+		if(RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_NIC_NOT_EXIST))			
+			return STATUS_UNSUCCESSFUL;
+		
+		RTMP_IO_READ32(pAd, RF_CSR_CFG, &rfcsr.word);
+
+		if (rfcsr.field.RF_CSR_KICK == BUSY)									
+		{																
+			continue;													
+		}																
+		rfcsr.word = 0;
+		rfcsr.field.RF_CSR_WR = 0;
+		rfcsr.field.RF_CSR_KICK = 1;
+		rfcsr.field.TESTCSR_RFACC_REGNUM = regID;
+		RTMP_IO_WRITE32(pAd, RF_CSR_CFG, rfcsr.word);
+		for (k=0; k<MAX_BUSY_COUNT; k++)
+		{
+			if(RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_NIC_NOT_EXIST))				
+				return STATUS_UNSUCCESSFUL;
+			
+			RTMP_IO_READ32(pAd, RF_CSR_CFG, &rfcsr.word);
+
+			if (rfcsr.field.RF_CSR_KICK == IDLE)
+				break;
+		}
+		if ((rfcsr.field.RF_CSR_KICK == IDLE) &&
+			(rfcsr.field.TESTCSR_RFACC_REGNUM == regID))
+		{
+			*pValue = (UCHAR)rfcsr.field.RF_CSR_DATA;
+			break;
+		}
+	}
+	if (rfcsr.field.RF_CSR_KICK == BUSY)
+	{																	
+		DBGPRINT_ERR(("RF read R%d=0x%x fail, i[%d], k[%d]\n", regID, rfcsr.word,i,k));
+		return STATUS_UNSUCCESSFUL;
+	}
+
+	return STATUS_SUCCESS;
+}
+
+
+VOID NICInitRFRegisters(
+	IN RTMP_ADAPTER *pAd)
+{
+	if (pAd->chipOps.AsicRfInit)
+		pAd->chipOps.AsicRfInit(pAd);
+}
+
+
+VOID RtmpChipOpsRFHook(
+	IN RTMP_ADAPTER *pAd)
+{
+	RTMP_CHIP_OP *pChipOps = &pAd->chipOps;
+
+	pChipOps->pRFRegTable = NULL;
+	pChipOps->pBBPRegTable = NULL;
+	pChipOps->AsicRfInit = NULL;
+	pChipOps->AsicRfTurnOn = NULL;
+	pChipOps->AsicRfTurnOff = NULL;
+	pChipOps->AsicReverseRfFromSleepMode = NULL;
+	pChipOps->AsicHaltAction = NULL;
+	
+	/* We depends on RfICType and MACVersion to assign the corresponding operation callbacks. */
+
+
+#ifdef RT30xx
+#ifdef RT35xx
+	if (IS_RT3572(pAd))
+	{
+		pChipOps->AsicRfTurnOff = RT30xxLoadRFSleepModeSetup;
+		pChipOps->pRFRegTable = RF3572_RFRegTable;
+		pChipOps->AsicRfInit = NICInitRT3572RFRegisters;
+		pChipOps->AsicReverseRfFromSleepMode = RT3572ReverseRFSleepModeSetup;
+		pChipOps->AsicHaltAction = RT30xxHaltAction;
+	}
+#endif // RT35xx //
+
+	if (IS_RT30xx(pAd))
+	{
+		/* 
+			WARNING: 
+				Currently following table are shared by all RT30xx based IC, change it carefully when you add a new IC here.
+		*/
+		pChipOps->pRFRegTable = RT30xx_RFRegTable;
+		pChipOps->AsicHaltAction = RT30xxHaltAction;
+		pChipOps->AsicRfTurnOff = RT30xxLoadRFSleepModeSetup;
+		pChipOps->AsicReverseRfFromSleepMode = RT30xxReverseRFSleepModeSetup;
+		
+	}
+#endif // RT30xx //
+
+	if (pChipOps->pBBPRegTable != NULL)
+		pChipOps->bbpRegTbSize = (sizeof(*(pChipOps->pBBPRegTable)) / sizeof(REG_PAIR));
+	DBGPRINT(RT_DEBUG_TRACE, ("Chip specific bbpRegTbSize=%d!\n", pChipOps->bbpRegTbSize));
+	
+}
+
+#endif // RTMP_RF_RW_SUPPORT //
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/rtmp_init.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/rtmp_init.c
new file mode 100644
index 000000000..63ed8490b
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/rtmp_init.c
@@ -0,0 +1,4225 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+	Module Name:
+	rtmp_init.c
+
+	Abstract:
+	Miniport generic portion header file
+
+	Revision History:
+	Who         When          What
+	--------    ----------    ----------------------------------------------
+*/
+#include	"rt_config.h"
+
+UCHAR    BIT8[] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};
+#ifdef DBG
+char*   CipherName[] = {"none","wep64","wep128","TKIP","AES","CKIP64","CKIP128","CKIP152","SMS4"};
+#endif
+
+//
+// BBP register initialization set
+//
+REG_PAIR   BBPRegTable[] = {
+
+	{BBP_R65,		0x2C},		// fix rssi issue
+	{BBP_R66,		0x38},	// Also set this default value to pAd->BbpTuning.R66CurrentValue at initial
+	{BBP_R69,		0x12},
+	{BBP_R70,		0xa},	// BBP_R70 will change to 0x8 in ApStartUp and LinkUp for rt2860C, otherwise value is 0xa
+	{BBP_R73,		0x10},
+	{BBP_R81,		0x37},
+	{BBP_R82,		0x62},
+	{BBP_R83,		0x6A},
+	{BBP_R84,		0x99},	// 0x19 is for rt2860E and after. This is for extension channel overlapping IOT. 0x99 is for rt2860D and before
+	{BBP_R86,		0x00},	// middle range issue, Rory @2008-01-28 	
+	{BBP_R91,		0x04},	// middle range issue, Rory @2008-01-28
+	{BBP_R92,		0x00},	// middle range issue, Rory @2008-01-28
+	{BBP_R103,		0x00}, 	// near range high-power issue, requested from Gary @2008-0528
+	{BBP_R105,		0x05},	// 0x05 is for rt2860E to turn on FEQ control. It is safe for rt2860D and before, because Bit 7:2 are reserved in rt2860D and before.
+	{BBP_R106,		0x35},	// Optimizing the Short GI sampling request from Gray @2009-0409
+};
+#define	NUM_BBP_REG_PARMS	(sizeof(BBPRegTable) / sizeof(REG_PAIR))
+
+
+//
+// ASIC register initialization sets
+//
+
+RTMP_REG_PAIR	MACRegTable[] =	{
+#if defined(HW_BEACON_OFFSET) && (HW_BEACON_OFFSET == 0x200)
+	{BCN_OFFSET0,			0xf8f0e8e0}, /* 0x3800(e0), 0x3A00(e8), 0x3C00(f0), 0x3E00(f8), 512B for each beacon */
+	{BCN_OFFSET1,			0x6f77d0c8}, /* 0x3200(c8), 0x3400(d0), 0x1DC0(77), 0x1BC0(6f), 512B for each beacon */
+#elif defined(HW_BEACON_OFFSET) && (HW_BEACON_OFFSET == 0x100)
+	{BCN_OFFSET0,			0xece8e4e0}, /* 0x3800, 0x3A00, 0x3C00, 0x3E00, 512B for each beacon */
+	{BCN_OFFSET1,			0xfcf8f4f0}, /* 0x3800, 0x3A00, 0x3C00, 0x3E00, 512B for each beacon */
+#else
+    #error You must re-calculate new value for BCN_OFFSET0 & BCN_OFFSET1 in MACRegTable[]!!!
+#endif // HW_BEACON_OFFSET //
+
+	{LEGACY_BASIC_RATE,		0x0000013f}, //  Basic rate set bitmap
+	{HT_BASIC_RATE,		0x00008003}, // Basic HT rate set , 20M, MCS=3, MM. Format is the same as in TXWI.
+	{MAC_SYS_CTRL,		0x00}, // 0x1004, , default Disable RX
+	{RX_FILTR_CFG,		0x17f97}, //0x1400  , RX filter control,  
+	{BKOFF_SLOT_CFG,	0x209}, // default set short slot time, CC_DELAY_TIME should be 2	 
+	//{TX_SW_CFG0,		0x40a06}, // Gary,2006-08-23 
+	{TX_SW_CFG0,		0x0}, 		// Gary,2008-05-21 for CWC test 
+	{TX_SW_CFG1,		0x80606}, // Gary,2006-08-23 
+	{TX_LINK_CFG,		0x1020},		// Gary,2006-08-23 
+	//{TX_TIMEOUT_CFG,	0x00182090},	// CCK has some problem. So increase timieout value. 2006-10-09// MArvek RT
+	{TX_TIMEOUT_CFG,	0x000a2090},	// CCK has some problem. So increase timieout value. 2006-10-09// MArvek RT , Modify for 2860E ,2007-08-01
+	{MAX_LEN_CFG,		MAX_AGGREGATION_SIZE | 0x00001000},	// 0x3018, MAX frame length. Max PSDU = 16kbytes.
+	{LED_CFG,		0x7f031e46}, // Gary, 2006-08-23
+
+//#ifdef CONFIG_AP_SUPPORT
+//	{WMM_AIFSN_CFG,		0x00001173},
+//	{WMM_CWMIN_CFG,		0x00002344},
+//	{WMM_CWMAX_CFG,		0x000034a6},
+//	{WMM_TXOP0_CFG,		0x00100020},
+//	{WMM_TXOP1_CFG,		0x002F0038},
+//#endif // CONFIG_AP_SUPPORT //
+
+//#ifdef CONFIG_STA_SUPPORT
+//	{WMM_AIFSN_CFG,		0x00002273},
+//	{WMM_CWMIN_CFG,		0x00002344},
+//	{WMM_CWMAX_CFG,		0x000034aa},
+//#endif // CONFIG_STA_SUPPORT //
+#ifdef INF_AMAZON_SE
+	{PBF_MAX_PCNT,			0x1F3F6F6F}, 	//iverson modify for usb issue, 2008/09/19
+											// 6F + 6F < total page count FE
+											// so that RX doesn't occupy TX's buffer space when WMM congestion.
+#else
+	{PBF_MAX_PCNT,			0x1F3FBF9F}, 	//0x1F3f7f9f},		//Jan, 2006/04/20
+#endif // INF_AMAZON_SE //
+	//{TX_RTY_CFG,			0x6bb80408},	// Jan, 2006/11/16
+// WMM_ACM_SUPPORT
+//	{TX_RTY_CFG,			0x6bb80101},	// sample
+	{TX_RTY_CFG,			0x47d01f0f},	// Jan, 2006/11/16, Set TxWI->ACK =0 in Probe Rsp Modify for 2860E ,2007-08-03
+	
+	{AUTO_RSP_CFG,			0x00000013},	// Initial Auto_Responder, because QA will turn off Auto-Responder
+	{CCK_PROT_CFG,			0x05740003 /*0x01740003*/},	// Initial Auto_Responder, because QA will turn off Auto-Responder. And RTS threshold is enabled. 
+	{OFDM_PROT_CFG,			0x05740003 /*0x01740003*/},	// Initial Auto_Responder, because QA will turn off Auto-Responder. And RTS threshold is enabled. 
+	{GF20_PROT_CFG,			0x01744004},    // set 19:18 --> Short NAV for MIMO PS
+	{GF40_PROT_CFG,			0x03F44084},    
+	{MM20_PROT_CFG,			0x01744004},    
+#ifdef RTMP_MAC_PCI
+	{MM40_PROT_CFG,			0x03F54084},	
+#endif // RTMP_MAC_PCI //
+	{TXOP_CTRL_CFG,			0x0000583f, /*0x0000243f*/ /*0x000024bf*/},	//Extension channel backoff.
+	{TX_RTS_CFG,			0x00092b20},	
+//#ifdef WIFI_TEST
+	{EXP_ACK_TIME,			0x002400ca},	// default value
+//#else
+//	{EXP_ACK_TIME,			0x005400ca},	// suggested by Gray @ 20070323 for 11n intel-sta throughput
+//#endif // end - WIFI_TEST //
+//#ifdef CONFIG_AP_SUPPORT
+//	{TBTT_SYNC_CFG,			0x00422000},	// TBTT_ADJUST(7:0) == 0	
+//	{TBTT_SYNC_CFG,			0x00012000},	// TBTT_ADJUST(7:0) == 0	
+//#endif // CONFIG_AP_SUPPORT //
+	{TXOP_HLDR_ET, 			0x00000002},
+
+	/* Jerry comments 2008/01/16: we use SIFS = 10us in CCK defaultly, but it seems that 10us
+		is too small for INTEL 2200bg card, so in MBSS mode, the delta time between beacon0
+		and beacon1 is SIFS (10us), so if INTEL 2200bg card connects to BSS0, the ping
+		will always lost. So we change the SIFS of CCK from 10us to 16us. */
+	{XIFS_TIME_CFG,			0x33a41010},
+	{PWR_PIN_CFG,			0x00000003},	// patch for 2880-E
+};
+
+
+#ifdef CONFIG_STA_SUPPORT
+RTMP_REG_PAIR	STAMACRegTable[] =	{
+	{WMM_AIFSN_CFG,		0x00002273},
+	{WMM_CWMIN_CFG,	0x00002344},
+	{WMM_CWMAX_CFG,	0x000034aa},
+};
+#endif // CONFIG_STA_SUPPORT //
+
+#define	NUM_MAC_REG_PARMS		(sizeof(MACRegTable) / sizeof(RTMP_REG_PAIR))
+#ifdef CONFIG_STA_SUPPORT
+#define	NUM_STA_MAC_REG_PARMS	(sizeof(STAMACRegTable) / sizeof(RTMP_REG_PAIR))
+#endif // CONFIG_STA_SUPPORT //
+
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Allocate RTMP_ADAPTER data block and do some initialization
+
+	Arguments:
+		Adapter		Pointer to our adapter
+
+	Return Value:
+		NDIS_STATUS_SUCCESS
+		NDIS_STATUS_FAILURE
+
+	IRQL = PASSIVE_LEVEL
+
+	Note:
+	
+	========================================================================
+*/
+NDIS_STATUS	RTMPAllocAdapterBlock(
+	IN  PVOID	handle,
+	OUT	PRTMP_ADAPTER	*ppAdapter)
+{
+	PRTMP_ADAPTER	pAd = NULL;
+	NDIS_STATUS		Status;
+	INT 			index;
+	UCHAR			*pBeaconBuf = NULL;
+
+	DBGPRINT(RT_DEBUG_TRACE, ("--> RTMPAllocAdapterBlock\n"));
+
+	*ppAdapter = NULL;
+
+	do
+	{
+		// Allocate RTMP_ADAPTER memory block
+		pBeaconBuf = kmalloc(MAX_BEACON_SIZE, MEM_ALLOC_FLAG);
+		if (pBeaconBuf == NULL)
+		{
+			Status = NDIS_STATUS_FAILURE;
+			DBGPRINT_ERR(("Failed to allocate memory - BeaconBuf!\n"));
+			break;
+		}
+		NdisZeroMemory(pBeaconBuf, MAX_BEACON_SIZE);
+
+		Status = AdapterBlockAllocateMemory(handle, (PVOID *)&pAd);
+		if (Status != NDIS_STATUS_SUCCESS)
+		{
+			DBGPRINT_ERR(("Failed to allocate memory - ADAPTER\n"));
+			break;
+		}
+		pAd->BeaconBuf = pBeaconBuf;
+		DBGPRINT(RT_DEBUG_OFF, ("\n\n=== pAd = %p, size = %d ===\n\n", pAd, (UINT32)sizeof(RTMP_ADAPTER)));
+
+
+		// Init spin locks
+		NdisAllocateSpinLock(&pAd->MgmtRingLock);
+#ifdef RTMP_MAC_PCI
+		NdisAllocateSpinLock(&pAd->RxRingLock);
+#endif // RTMP_MAC_PCI //
+
+		for (index =0 ; index < NUM_OF_TX_RING; index++)
+		{
+			NdisAllocateSpinLock(&pAd->TxSwQueueLock[index]);
+			NdisAllocateSpinLock(&pAd->DeQueueLock[index]);
+			pAd->DeQueueRunning[index] = FALSE;
+		}
+
+		NdisAllocateSpinLock(&pAd->irq_lock);
+
+
+
+		// assign function pointers
+	} while (FALSE);
+
+	if ((Status != NDIS_STATUS_SUCCESS) && (pBeaconBuf))
+		kfree(pBeaconBuf);
+	
+	*ppAdapter = pAd;
+
+
+	/*
+		Init ProbeRespIE Table
+	*/
+	for (index = 0; index < MAX_LEN_OF_BSS_TABLE; index++) 
+	{
+		if (os_alloc_mem(pAd,&pAd->ProbeRespIE[index].pIe, MAX_VIE_LEN) == NDIS_STATUS_SUCCESS)
+			RTMPZeroMemory(pAd->ProbeRespIE[index].pIe, MAX_VIE_LEN);
+		else
+			pAd->ProbeRespIE[index].pIe = NULL;
+	}	
+
+	DBGPRINT_S(Status, ("<-- RTMPAllocAdapterBlock, Status=%x\n", Status));
+	return Status;
+}
+
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Read initial Tx power per MCS and BW from EEPROM
+		
+	Arguments:
+		Adapter						Pointer to our adapter
+
+	Return Value:
+		None
+
+	IRQL = PASSIVE_LEVEL
+
+	Note:
+		
+	========================================================================
+*/
+VOID	RTMPReadTxPwrPerRate(
+	IN	PRTMP_ADAPTER	pAd)
+{
+	ULONG		data, Adata, Gdata;
+	USHORT		i, value, value2;
+	USHORT		value_1, value_2, value_3, value_4;
+	INT			Apwrdelta, Gpwrdelta;
+	UCHAR		t1,t2,t3,t4;
+	BOOLEAN		bApwrdeltaMinus = TRUE, bGpwrdeltaMinus = TRUE;
+	
+	//
+	// Get power delta for 20MHz and 40MHz.
+	//
+	DBGPRINT(RT_DEBUG_TRACE, ("Txpower per Rate\n"));
+	RT28xx_EEPROM_READ16(pAd, EEPROM_TXPOWER_DELTA, value2);
+	Apwrdelta = 0;
+	Gpwrdelta = 0;
+
+	if ((value2 & 0xff) != 0xff)
+	{
+		if ((value2 & 0x80))
+			Gpwrdelta = (value2&0xf);
+		
+		if ((value2 & 0x40))
+			bGpwrdeltaMinus = FALSE;
+		else
+			bGpwrdeltaMinus = TRUE;
+	}
+	if ((value2 & 0xff00) != 0xff00)
+	{
+		if ((value2 & 0x8000))
+			Apwrdelta = ((value2&0xf00)>>8);
+
+		if ((value2 & 0x4000))
+			bApwrdeltaMinus = FALSE;
+		else
+			bApwrdeltaMinus = TRUE;
+	}	
+	DBGPRINT(RT_DEBUG_TRACE, ("Gpwrdelta = %x, Apwrdelta = %x .\n", Gpwrdelta, Apwrdelta));
+
+	//
+	// Get Txpower per MCS for 20MHz in 2.4G.
+	//
+	for (i=0; i<5; i++)
+	{
+		RT28xx_EEPROM_READ16(pAd, EEPROM_TXPOWER_BYRATE_20MHZ_2_4G + i*4, value);
+		data = value;
+
+		/* use value_1 ~ value_4 for code size reduce */
+		value_1 = value&0xf;
+		value_2 = (value&0xf0)>>4;
+		value_3 = (value&0xf00)>>8;
+		value_4 = (value&0xf000)>>12;
+
+		if (bApwrdeltaMinus == FALSE)
+		{
+			t1 = value_1+(Apwrdelta);
+			if (t1 > 0xf)
+				t1 = 0xf;
+			t2 = value_2+(Apwrdelta);
+			if (t2 > 0xf)
+				t2 = 0xf;
+			t3 = value_3+(Apwrdelta);
+			if (t3 > 0xf)
+				t3 = 0xf;
+			t4 = value_4+(Apwrdelta);
+			if (t4 > 0xf)
+				t4 = 0xf;
+		}
+		else
+		{
+			if (value_1 > Apwrdelta)
+				t1 = value_1-(Apwrdelta);
+			else
+				t1 = 0;
+			if (value_2 > Apwrdelta)
+				t2 = value_2-(Apwrdelta);
+			else
+				t2 = 0;
+			if (value_3 > Apwrdelta)
+				t3 = value_3-(Apwrdelta);
+			else
+				t3 = 0;
+			if (value_4 > Apwrdelta)
+				t4 = value_4-(Apwrdelta);
+			else
+				t4 = 0;
+		}				
+		Adata = t1 + (t2<<4) + (t3<<8) + (t4<<12);
+		if (bGpwrdeltaMinus == FALSE)
+		{
+			t1 = value_1+(Gpwrdelta);
+			if (t1 > 0xf)
+				t1 = 0xf;
+			t2 = value_2+(Gpwrdelta);
+			if (t2 > 0xf)
+				t2 = 0xf;
+			t3 = value_3+(Gpwrdelta);
+			if (t3 > 0xf)
+				t3 = 0xf;
+			t4 = value_4+(Gpwrdelta);
+			if (t4 > 0xf)
+				t4 = 0xf;
+		}
+		else
+		{
+			if (value_1 > Gpwrdelta)
+				t1 = value_1-(Gpwrdelta);
+			else
+				t1 = 0;
+			if (value_2 > Gpwrdelta)
+				t2 = value_2-(Gpwrdelta);
+			else
+				t2 = 0;
+			if (value_3 > Gpwrdelta)
+				t3 = value_3-(Gpwrdelta);
+			else
+				t3 = 0;
+			if (value_4 > Gpwrdelta)
+				t4 = value_4-(Gpwrdelta);
+			else
+				t4 = 0;
+		}				
+		Gdata = t1 + (t2<<4) + (t3<<8) + (t4<<12);
+		
+		RT28xx_EEPROM_READ16(pAd, EEPROM_TXPOWER_BYRATE_20MHZ_2_4G + i*4 + 2, value);
+
+		/* use value_1 ~ value_4 for code size reduce */
+		value_1 = value&0xf;
+		value_2 = (value&0xf0)>>4;
+		value_3 = (value&0xf00)>>8;
+		value_4 = (value&0xf000)>>12;
+
+		if (bApwrdeltaMinus == FALSE)
+		{
+			t1 = value_1+(Apwrdelta);
+			if (t1 > 0xf)
+				t1 = 0xf;
+			t2 = value_2+(Apwrdelta);
+			if (t2 > 0xf)
+				t2 = 0xf;
+			t3 = value_3+(Apwrdelta);
+			if (t3 > 0xf)
+				t3 = 0xf;
+			t4 = value_4+(Apwrdelta);
+			if (t4 > 0xf)
+				t4 = 0xf;
+		}
+		else
+		{
+			if (value_1 > Apwrdelta)
+				t1 = value_1-(Apwrdelta);
+			else
+				t1 = 0;
+			if (value_2 > Apwrdelta)
+				t2 = value_2-(Apwrdelta);
+			else
+				t2 = 0;
+			if (value_3 > Apwrdelta)
+				t3 = value_3-(Apwrdelta);
+			else
+				t3 = 0;
+			if (value_4 > Apwrdelta)
+				t4 = value_4-(Apwrdelta);
+			else
+				t4 = 0;
+		}				
+		Adata |= ((t1<<16) + (t2<<20) + (t3<<24) + (t4<<28));
+		if (bGpwrdeltaMinus == FALSE)
+		{
+			t1 = value_1+(Gpwrdelta);
+			if (t1 > 0xf)
+				t1 = 0xf;
+			t2 = value_2+(Gpwrdelta);
+			if (t2 > 0xf)
+				t2 = 0xf;
+			t3 = value_3+(Gpwrdelta);
+			if (t3 > 0xf)
+				t3 = 0xf;
+			t4 = value_4+(Gpwrdelta);
+			if (t4 > 0xf)
+				t4 = 0xf;
+		}
+		else
+		{
+			if (value_1 > Gpwrdelta)
+				t1 = value_1-(Gpwrdelta);
+			else
+				t1 = 0;
+			if (value_2 > Gpwrdelta)
+				t2 = value_2-(Gpwrdelta);
+			else
+				t2 = 0;
+			if (value_3 > Gpwrdelta)
+				t3 = value_3-(Gpwrdelta);
+			else
+				t3 = 0;
+			if (value_4 > Gpwrdelta)
+				t4 = value_4-(Gpwrdelta);
+			else
+				t4 = 0;
+		}				
+		Gdata |= ((t1<<16) + (t2<<20) + (t3<<24) + (t4<<28));
+		data |= (value<<16);
+
+		/* For 20M/40M Power Delta issue */		
+		pAd->Tx20MPwrCfgABand[i] = data;
+		pAd->Tx20MPwrCfgGBand[i] = data;
+		pAd->Tx40MPwrCfgABand[i] = Adata;
+		pAd->Tx40MPwrCfgGBand[i] = Gdata;
+		
+		if (data != 0xffffffff)
+			RTMP_IO_WRITE32(pAd, TX_PWR_CFG_0 + i*4, data);
+		DBGPRINT_RAW(RT_DEBUG_TRACE, ("20MHz BW, 2.4G band-%lx,  Adata = %lx,  Gdata = %lx \n", data, Adata, Gdata));
+	}
+}
+
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Read initial channel power parameters from EEPROM
+		
+	Arguments:
+		Adapter						Pointer to our adapter
+
+	Return Value:
+		None
+
+	IRQL = PASSIVE_LEVEL
+
+	Note:
+		
+	========================================================================
+*/
+VOID	RTMPReadChannelPwr(
+	IN	PRTMP_ADAPTER	pAd)
+{
+	UINT32					i, choffset;
+	EEPROM_TX_PWR_STRUC	    Power;
+	EEPROM_TX_PWR_STRUC	    Power2;
+	
+	// Read Tx power value for all channels
+	// Value from 1 - 0x7f. Default value is 24.
+	// Power value : 2.4G 0x00 (0) ~ 0x1F (31)
+	//             : 5.5G 0xF9 (-7) ~ 0x0F (15)
+
+	// 0. 11b/g, ch1 - ch 14
+	for (i = 0; i < 7; i++)
+	{
+		RT28xx_EEPROM_READ16(pAd, EEPROM_G_TX_PWR_OFFSET + i * 2, Power.word);
+		RT28xx_EEPROM_READ16(pAd, EEPROM_G_TX2_PWR_OFFSET + i * 2, Power2.word);
+		pAd->TxPower[i * 2].Channel = i * 2 + 1;
+		pAd->TxPower[i * 2 + 1].Channel = i * 2 + 2;
+
+		if ((Power.field.Byte0 > 31) || (Power.field.Byte0 < 0))
+			pAd->TxPower[i * 2].Power = DEFAULT_RF_TX_POWER;
+		else
+			pAd->TxPower[i * 2].Power = Power.field.Byte0;
+
+		if ((Power.field.Byte1 > 31) || (Power.field.Byte1 < 0))
+			pAd->TxPower[i * 2 + 1].Power = DEFAULT_RF_TX_POWER;
+		else
+			pAd->TxPower[i * 2 + 1].Power = Power.field.Byte1;
+
+		if ((Power2.field.Byte0 > 31) || (Power2.field.Byte0 < 0))
+			pAd->TxPower[i * 2].Power2 = DEFAULT_RF_TX_POWER;
+		else
+			pAd->TxPower[i * 2].Power2 = Power2.field.Byte0;
+
+		if ((Power2.field.Byte1 > 31) || (Power2.field.Byte1 < 0))
+			pAd->TxPower[i * 2 + 1].Power2 = DEFAULT_RF_TX_POWER;
+		else
+			pAd->TxPower[i * 2 + 1].Power2 = Power2.field.Byte1;
+	}
+	
+	// 1. U-NII lower/middle band: 36, 38, 40; 44, 46, 48; 52, 54, 56; 60, 62, 64 (including central frequency in BW 40MHz)
+	// 1.1 Fill up channel
+	choffset = 14;
+	for (i = 0; i < 4; i++)
+	{
+		pAd->TxPower[3 * i + choffset + 0].Channel	= 36 + i * 8 + 0;
+		pAd->TxPower[3 * i + choffset + 0].Power	= DEFAULT_RF_TX_POWER;
+		pAd->TxPower[3 * i + choffset + 0].Power2	= DEFAULT_RF_TX_POWER;
+
+		pAd->TxPower[3 * i + choffset + 1].Channel	= 36 + i * 8 + 2;
+		pAd->TxPower[3 * i + choffset + 1].Power	= DEFAULT_RF_TX_POWER;
+		pAd->TxPower[3 * i + choffset + 1].Power2	= DEFAULT_RF_TX_POWER;
+
+		pAd->TxPower[3 * i + choffset + 2].Channel	= 36 + i * 8 + 4;
+		pAd->TxPower[3 * i + choffset + 2].Power	= DEFAULT_RF_TX_POWER;
+		pAd->TxPower[3 * i + choffset + 2].Power2	= DEFAULT_RF_TX_POWER;
+	}
+
+	// 1.2 Fill up power
+	for (i = 0; i < 6; i++)
+	{
+		RT28xx_EEPROM_READ16(pAd, EEPROM_A_TX_PWR_OFFSET + i * 2, Power.word);
+		RT28xx_EEPROM_READ16(pAd, EEPROM_A_TX2_PWR_OFFSET + i * 2, Power2.word);
+
+		if ((Power.field.Byte0 < 16) && (Power.field.Byte0 >= -7))
+			pAd->TxPower[i * 2 + choffset + 0].Power = Power.field.Byte0;
+
+		if ((Power.field.Byte1 < 16) && (Power.field.Byte1 >= -7))
+			pAd->TxPower[i * 2 + choffset + 1].Power = Power.field.Byte1;			
+
+		if ((Power2.field.Byte0 < 16) && (Power2.field.Byte0 >= -7))
+			pAd->TxPower[i * 2 + choffset + 0].Power2 = Power2.field.Byte0;
+
+		if ((Power2.field.Byte1 < 16) && (Power2.field.Byte1 >= -7))
+			pAd->TxPower[i * 2 + choffset + 1].Power2 = Power2.field.Byte1;			
+	}
+	
+	// 2. HipperLAN 2 100, 102 ,104; 108, 110, 112; 116, 118, 120; 124, 126, 128; 132, 134, 136; 140 (including central frequency in BW 40MHz)
+	// 2.1 Fill up channel
+	choffset = 14 + 12;
+	for (i = 0; i < 5; i++)
+	{
+		pAd->TxPower[3 * i + choffset + 0].Channel	= 100 + i * 8 + 0;
+		pAd->TxPower[3 * i + choffset + 0].Power	= DEFAULT_RF_TX_POWER;
+		pAd->TxPower[3 * i + choffset + 0].Power2	= DEFAULT_RF_TX_POWER;
+
+		pAd->TxPower[3 * i + choffset + 1].Channel	= 100 + i * 8 + 2;
+		pAd->TxPower[3 * i + choffset + 1].Power	= DEFAULT_RF_TX_POWER;
+		pAd->TxPower[3 * i + choffset + 1].Power2	= DEFAULT_RF_TX_POWER;
+
+		pAd->TxPower[3 * i + choffset + 2].Channel	= 100 + i * 8 + 4;
+		pAd->TxPower[3 * i + choffset + 2].Power	= DEFAULT_RF_TX_POWER;
+		pAd->TxPower[3 * i + choffset + 2].Power2	= DEFAULT_RF_TX_POWER;
+	}
+	pAd->TxPower[3 * 5 + choffset + 0].Channel		= 140;
+	pAd->TxPower[3 * 5 + choffset + 0].Power		= DEFAULT_RF_TX_POWER;
+	pAd->TxPower[3 * 5 + choffset + 0].Power2		= DEFAULT_RF_TX_POWER;
+
+	// 2.2 Fill up power
+	for (i = 0; i < 8; i++)
+	{
+		RT28xx_EEPROM_READ16(pAd, EEPROM_A_TX_PWR_OFFSET + (choffset - 14) + i * 2, Power.word);
+		RT28xx_EEPROM_READ16(pAd, EEPROM_A_TX2_PWR_OFFSET + (choffset - 14) + i * 2, Power2.word);
+
+		if ((Power.field.Byte0 < 16) && (Power.field.Byte0 >= -7))
+			pAd->TxPower[i * 2 + choffset + 0].Power = Power.field.Byte0;
+
+		if ((Power.field.Byte1 < 16) && (Power.field.Byte1 >= -7))
+			pAd->TxPower[i * 2 + choffset + 1].Power = Power.field.Byte1;			
+
+		if ((Power2.field.Byte0 < 16) && (Power2.field.Byte0 >= -7))
+			pAd->TxPower[i * 2 + choffset + 0].Power2 = Power2.field.Byte0;
+
+		if ((Power2.field.Byte1 < 16) && (Power2.field.Byte1 >= -7))
+			pAd->TxPower[i * 2 + choffset + 1].Power2 = Power2.field.Byte1;			
+	}
+
+	// 3. U-NII upper band: 149, 151, 153; 157, 159, 161; 165, 167, 169; 171, 173 (including central frequency in BW 40MHz)
+	// 3.1 Fill up channel
+	choffset = 14 + 12 + 16;
+	/*for (i = 0; i < 2; i++)*/
+	for (i = 0; i < 3; i++)
+	{
+		pAd->TxPower[3 * i + choffset + 0].Channel	= 149 + i * 8 + 0;
+		pAd->TxPower[3 * i + choffset + 0].Power	= DEFAULT_RF_TX_POWER;
+		pAd->TxPower[3 * i + choffset + 0].Power2	= DEFAULT_RF_TX_POWER;
+
+		pAd->TxPower[3 * i + choffset + 1].Channel	= 149 + i * 8 + 2;
+		pAd->TxPower[3 * i + choffset + 1].Power	= DEFAULT_RF_TX_POWER;
+		pAd->TxPower[3 * i + choffset + 1].Power2	= DEFAULT_RF_TX_POWER;
+
+		pAd->TxPower[3 * i + choffset + 2].Channel	= 149 + i * 8 + 4;
+		pAd->TxPower[3 * i + choffset + 2].Power	= DEFAULT_RF_TX_POWER;
+		pAd->TxPower[3 * i + choffset + 2].Power2	= DEFAULT_RF_TX_POWER;
+	}
+	pAd->TxPower[3 * 3 + choffset + 0].Channel		= 171;
+	pAd->TxPower[3 * 3 + choffset + 0].Power		= DEFAULT_RF_TX_POWER;
+	pAd->TxPower[3 * 3 + choffset + 0].Power2		= DEFAULT_RF_TX_POWER;
+
+	pAd->TxPower[3 * 3 + choffset + 1].Channel		= 173;
+	pAd->TxPower[3 * 3 + choffset + 1].Power		= DEFAULT_RF_TX_POWER;
+	pAd->TxPower[3 * 3 + choffset + 1].Power2		= DEFAULT_RF_TX_POWER;
+
+	// 3.2 Fill up power
+	/*for (i = 0; i < 4; i++)*/
+	for (i = 0; i < 6; i++)
+	{
+		RT28xx_EEPROM_READ16(pAd, EEPROM_A_TX_PWR_OFFSET + (choffset - 14) + i * 2, Power.word);
+		RT28xx_EEPROM_READ16(pAd, EEPROM_A_TX2_PWR_OFFSET + (choffset - 14) + i * 2, Power2.word);
+
+		if ((Power.field.Byte0 < 16) && (Power.field.Byte0 >= -7))
+			pAd->TxPower[i * 2 + choffset + 0].Power = Power.field.Byte0;
+
+		if ((Power.field.Byte1 < 16) && (Power.field.Byte1 >= -7))
+			pAd->TxPower[i * 2 + choffset + 1].Power = Power.field.Byte1;			
+
+		if ((Power2.field.Byte0 < 16) && (Power2.field.Byte0 >= -7))
+			pAd->TxPower[i * 2 + choffset + 0].Power2 = Power2.field.Byte0;
+
+		if ((Power2.field.Byte1 < 16) && (Power2.field.Byte1 >= -7))
+			pAd->TxPower[i * 2 + choffset + 1].Power2 = Power2.field.Byte1;			
+	}
+
+	// 4. Print and Debug
+	/*choffset = 14 + 12 + 16 + 7;*/
+	choffset = 14 + 12 + 16 + 11;
+	
+
+}
+
+
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Read initial parameters from EEPROM
+		
+	Arguments:
+		Adapter						Pointer to our adapter
+
+	Return Value:
+		None
+
+	IRQL = PASSIVE_LEVEL
+
+	Note:
+		
+	========================================================================
+*/
+VOID	NICReadEEPROMParameters(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PSTRING			mac_addr)
+{
+	UINT32			data = 0;
+	USHORT			i, value, value2;
+	UCHAR			TmpPhy;
+	EEPROM_TX_PWR_STRUC	    Power;
+	EEPROM_VERSION_STRUC    Version;
+	EEPROM_ANTENNA_STRUC	Antenna;
+	EEPROM_NIC_CONFIG2_STRUC    NicConfig2;
+	USHORT  Addr01,Addr23,Addr45 ;
+	MAC_DW0_STRUC csr2;
+	MAC_DW1_STRUC csr3;
+
+
+	DBGPRINT(RT_DEBUG_TRACE, ("--> NICReadEEPROMParameters\n"));	
+
+	if (pAd->chipOps.eeinit)
+		pAd->chipOps.eeinit(pAd);
+#ifdef RTMP_EFUSE_SUPPORT
+#ifdef RT30xx
+#ifdef RALINK_ATE
+	if(!pAd->bFroceEEPROMBuffer && pAd->bEEPROMFile)
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("--> NICReadEEPROMParameters::(Efuse)Load to EEPROM Buffer Mode\n"));	
+		eFuseLoadEEPROM(pAd);
+	}
+#endif // RALINK_ATE //
+#endif // RT30xx //
+#endif // RTMP_EFUSE_SUPPORT //
+
+	// Init EEPROM Address Number, before access EEPROM; if 93c46, EEPROMAddressNum=6, else if 93c66, EEPROMAddressNum=8
+	RTMP_IO_READ32(pAd, E2PROM_CSR, &data);
+	DBGPRINT(RT_DEBUG_TRACE, ("--> E2PROM_CSR = 0x%x\n", data));
+
+	if((data & 0x30) == 0)
+		pAd->EEPROMAddressNum = 6;		// 93C46
+	else if((data & 0x30) == 0x10)
+		pAd->EEPROMAddressNum = 8;     // 93C66
+	else
+		pAd->EEPROMAddressNum = 8;     // 93C86
+	DBGPRINT(RT_DEBUG_TRACE, ("--> EEPROMAddressNum = %d\n", pAd->EEPROMAddressNum ));
+
+	/* Read MAC setting from EEPROM and record as permanent MAC address */
+	DBGPRINT(RT_DEBUG_TRACE, ("Initialize MAC Address from E2PROM \n"));
+
+	RT28xx_EEPROM_READ16(pAd, 0x04, Addr01);
+	RT28xx_EEPROM_READ16(pAd, 0x06, Addr23);
+	RT28xx_EEPROM_READ16(pAd, 0x08, Addr45);
+
+	pAd->PermanentAddress[0] = (UCHAR)(Addr01 & 0xff);
+	pAd->PermanentAddress[1] = (UCHAR)(Addr01 >> 8);
+	pAd->PermanentAddress[2] = (UCHAR)(Addr23 & 0xff);
+	pAd->PermanentAddress[3] = (UCHAR)(Addr23 >> 8);
+	pAd->PermanentAddress[4] = (UCHAR)(Addr45 & 0xff);
+	pAd->PermanentAddress[5] = (UCHAR)(Addr45 >> 8);
+
+	//more conveninet to test mbssid, so ap's bssid &0xf1
+	if (pAd->PermanentAddress[0] == 0xff)
+		pAd->PermanentAddress[0] = RandomByte(pAd)&0xf8;
+			
+	DBGPRINT(RT_DEBUG_TRACE, ("E2PROM MAC: =%02x:%02x:%02x:%02x:%02x:%02x\n",
+								PRINT_MAC(pAd->PermanentAddress)));
+
+	/* Assign the actually working MAC Address */
+	if (pAd->bLocalAdminMAC)
+	{		
+		DBGPRINT(RT_DEBUG_TRACE, ("Use the MAC address what is assigned from Configuration file(.dat). \n"));
+	}
+	else if (mac_addr && 
+			 strlen((PSTRING)mac_addr) == 17 &&
+			 (strcmp(mac_addr, "00:00:00:00:00:00") != 0))
+	{
+		INT		j;
+		PSTRING	macptr;
+
+		macptr = (PSTRING) mac_addr;
+
+		for (j=0; j<MAC_ADDR_LEN; j++)
+		{
+			AtoH(macptr, &pAd->CurrentAddress[j], 1);
+			macptr=macptr+3;
+		}	
+		
+		DBGPRINT(RT_DEBUG_TRACE, ("Use the MAC address what is assigned from Moudle Parameter. \n"));
+	}
+	else
+	{
+		COPY_MAC_ADDR(pAd->CurrentAddress, pAd->PermanentAddress);
+		DBGPRINT(RT_DEBUG_TRACE, ("Use the MAC address what is assigned from EEPROM. \n"));
+	}
+
+	/* Set the current MAC to ASIC */	
+	csr2.field.Byte0 = pAd->CurrentAddress[0];
+	csr2.field.Byte1 = pAd->CurrentAddress[1];
+	csr2.field.Byte2 = pAd->CurrentAddress[2];
+	csr2.field.Byte3 = pAd->CurrentAddress[3];
+	RTMP_IO_WRITE32(pAd, MAC_ADDR_DW0, csr2.word);
+	csr3.word = 0;
+	csr3.field.Byte4 = pAd->CurrentAddress[4];
+	csr3.field.Byte5 = pAd->CurrentAddress[5];
+	csr3.field.U2MeMask = 0xff;
+	RTMP_IO_WRITE32(pAd, MAC_ADDR_DW1, csr3.word);
+	DBGPRINT_RAW(RT_DEBUG_TRACE,("Current MAC: =%02x:%02x:%02x:%02x:%02x:%02x\n",
+					PRINT_MAC(pAd->CurrentAddress)));
+
+	// if not return early. cause fail at emulation.
+	// Init the channel number for TX channel power	
+	RTMPReadChannelPwr(pAd);
+
+	// if E2PROM version mismatch with driver's expectation, then skip
+	// all subsequent E2RPOM retieval and set a system error bit to notify GUI
+	RT28xx_EEPROM_READ16(pAd, EEPROM_VERSION_OFFSET, Version.word);
+	pAd->EepromVersion = Version.field.Version + Version.field.FaeReleaseNumber * 256;
+	DBGPRINT(RT_DEBUG_TRACE, ("E2PROM: Version = %d, FAE release #%d\n", Version.field.Version, Version.field.FaeReleaseNumber));
+
+	if (Version.field.Version > VALID_EEPROM_VERSION)
+	{
+		DBGPRINT_ERR(("E2PROM: WRONG VERSION 0x%x, should be %d\n",Version.field.Version, VALID_EEPROM_VERSION));
+		/*pAd->SystemErrorBitmap |= 0x00000001;
+
+		// hard-code default value when no proper E2PROM installed
+		pAd->bAutoTxAgcA = FALSE;
+		pAd->bAutoTxAgcG = FALSE;
+
+		// Default the channel power
+		for (i = 0; i < MAX_NUM_OF_CHANNELS; i++)
+			pAd->TxPower[i].Power = DEFAULT_RF_TX_POWER;
+
+		// Default the channel power
+		for (i = 0; i < MAX_NUM_OF_11JCHANNELS; i++)
+			pAd->TxPower11J[i].Power = DEFAULT_RF_TX_POWER;
+		
+		for(i = 0; i < NUM_EEPROM_BBP_PARMS; i++)
+			pAd->EEPROMDefaultValue[i] = 0xffff;
+		return;  */
+	}
+
+	// Read BBP default value from EEPROM and store to array(EEPROMDefaultValue) in pAd
+	RT28xx_EEPROM_READ16(pAd, EEPROM_NIC1_OFFSET, value);
+	pAd->EEPROMDefaultValue[0] = value;
+
+	RT28xx_EEPROM_READ16(pAd, EEPROM_NIC2_OFFSET, value);
+	pAd->EEPROMDefaultValue[1] = value;
+
+	RT28xx_EEPROM_READ16(pAd, EEPROM_COUNTRY_REGION, value);	// Country Region
+	pAd->EEPROMDefaultValue[2] = value;
+
+	for(i = 0; i < 8; i++)
+	{
+		RT28xx_EEPROM_READ16(pAd, EEPROM_BBP_BASE_OFFSET + i*2, value);
+		pAd->EEPROMDefaultValue[i+3] = value;
+	}
+
+	// We have to parse NIC configuration 0 at here.
+	// If TSSI did not have preloaded value, it should reset the TxAutoAgc to false
+	// Therefore, we have to read TxAutoAgc control beforehand.
+	// Read Tx AGC control bit
+	Antenna.word = pAd->EEPROMDefaultValue[0];
+	if (Antenna.word == 0xFFFF)
+	{
+#ifdef RT30xx
+		if(IS_RT3090(pAd)|| IS_RT3390(pAd))
+		{
+			Antenna.word = 0;
+			Antenna.field.RfIcType = RFIC_3020;
+			Antenna.field.TxPath = 1;
+			Antenna.field.RxPath = 1;		
+		}
+		else
+#endif // RT30xx //
+#ifdef RT35xx
+		if(IS_RT3572(pAd))
+		{
+			Antenna.word = 0;
+			Antenna.field.RfIcType = RFIC_3052;
+			Antenna.field.TxPath = 2;
+			Antenna.field.RxPath = 2;		
+		}
+		else
+#endif // RT35xx //
+		{
+
+			Antenna.word = 0;
+			Antenna.field.RfIcType = RFIC_2820;
+			Antenna.field.TxPath = 1;
+			Antenna.field.RxPath = 2;
+			DBGPRINT(RT_DEBUG_WARN, ("E2PROM error, hard code as 0x%04x\n", Antenna.word));
+		}
+	}
+
+	// Choose the desired Tx&Rx stream.
+	if ((pAd->CommonCfg.TxStream == 0) || (pAd->CommonCfg.TxStream > Antenna.field.TxPath))
+		pAd->CommonCfg.TxStream = Antenna.field.TxPath;
+
+	if ((pAd->CommonCfg.RxStream == 0) || (pAd->CommonCfg.RxStream > Antenna.field.RxPath))
+	{
+		pAd->CommonCfg.RxStream = Antenna.field.RxPath;
+	
+		if ((pAd->MACVersion != RALINK_2883_VERSION) &&
+			(pAd->CommonCfg.RxStream > 2))
+		{
+			// only 2 Rx streams for RT2860 series
+			pAd->CommonCfg.RxStream = 2;
+		}
+	}
+
+
+	/* EEPROM offset 0x36 - NIC Configuration 1 */
+	NicConfig2.word = pAd->EEPROMDefaultValue[1];
+
+
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+		if ((NicConfig2.word & 0x00ff) == 0xff)
+		{
+			NicConfig2.word &= 0xff00;
+		}
+
+		if ((NicConfig2.word >> 8) == 0xff)
+		{
+			NicConfig2.word &= 0x00ff;
+		}
+	}
+#endif // CONFIG_STA_SUPPORT //
+
+	if (NicConfig2.field.DynamicTxAgcControl == 1)
+		pAd->bAutoTxAgcA = pAd->bAutoTxAgcG = TRUE;
+	else
+		pAd->bAutoTxAgcA = pAd->bAutoTxAgcG = FALSE;
+	
+	/* Save value for future using */
+	pAd->NicConfig2.word = NicConfig2.word;
+	
+	DBGPRINT_RAW(RT_DEBUG_TRACE, ("NICReadEEPROMParameters: RxPath = %d, TxPath = %d\n", Antenna.field.RxPath, Antenna.field.TxPath));
+
+	// Save the antenna for future use
+	pAd->Antenna.word = Antenna.word;
+
+	// Set the RfICType here, then we can initialize RFIC related operation callbacks
+	pAd->Mlme.RealRxPath = (UCHAR) Antenna.field.RxPath;
+	pAd->RfIcType = (UCHAR) Antenna.field.RfIcType;
+
+#ifdef CONFIG_STA_SUPPORT
+#ifdef RTMP_MAC_PCI
+#ifdef RT35xx
+	if (IS_RT3572(pAd))
+		sprintf((PSTRING) pAd->nickname, "RT3562STA");
+	else
+#endif // RT35xx
+		sprintf((PSTRING) pAd->nickname, "RT2860STA");
+#endif // RTMP_MAC_PCI //
+#endif // CONFIG_STA_SUPPORT //
+
+#ifdef RTMP_RF_RW_SUPPORT
+	RtmpChipOpsRFHook(pAd);
+#endif // RTMP_RF_RW_SUPPORT //
+
+	//
+	// Reset PhyMode if we don't support 802.11a
+	// Only RFIC_2850 & RFIC_2750 support 802.11a
+	//
+	if ((Antenna.field.RfIcType != RFIC_2850)
+		&& (Antenna.field.RfIcType != RFIC_2750)
+		&& (Antenna.field.RfIcType != RFIC_3052)
+		)
+	{
+		if ((pAd->CommonCfg.PhyMode == PHY_11ABG_MIXED) || 
+			(pAd->CommonCfg.PhyMode == PHY_11A))
+			pAd->CommonCfg.PhyMode = PHY_11BG_MIXED;
+#ifdef DOT11_N_SUPPORT
+		else if ((pAd->CommonCfg.PhyMode == PHY_11ABGN_MIXED)	|| 
+				 (pAd->CommonCfg.PhyMode == PHY_11AN_MIXED) 	|| 
+				 (pAd->CommonCfg.PhyMode == PHY_11AGN_MIXED) 	||
+				 (pAd->CommonCfg.PhyMode == PHY_11N_5G))
+			pAd->CommonCfg.PhyMode = PHY_11BGN_MIXED;
+#endif // DOT11_N_SUPPORT //
+
+		pAd->RFICType = RFIC_24GHZ; // CRDA
+	}
+	else
+	{
+		pAd->RFICType = RFIC_24GHZ | RFIC_5GHZ; // CRDA
+	}
+	
+	// Read TSSI reference and TSSI boundary for temperature compensation. This is ugly
+	// 0. 11b/g
+	{
+		/* these are tempature reference value (0x00 ~ 0xFE)
+		   ex: 0x00 0x15 0x25 0x45 0x88 0xA0 0xB5 0xD0 0xF0
+		   TssiPlusBoundaryG [4] [3] [2] [1] [0] (smaller) +
+		   TssiMinusBoundaryG[0] [1] [2] [3] [4] (larger) */
+		RT28xx_EEPROM_READ16(pAd, EEPROM_G_TSSI_BOUND1, Power.word);
+		pAd->TssiMinusBoundaryG[4] = Power.field.Byte0;
+		pAd->TssiMinusBoundaryG[3] = Power.field.Byte1;
+		RT28xx_EEPROM_READ16(pAd, EEPROM_G_TSSI_BOUND2, Power.word);
+		pAd->TssiMinusBoundaryG[2] = Power.field.Byte0;
+		pAd->TssiMinusBoundaryG[1] = Power.field.Byte1;
+		RT28xx_EEPROM_READ16(pAd, EEPROM_G_TSSI_BOUND3, Power.word);
+		pAd->TssiRefG   = Power.field.Byte0; /* reference value [0] */
+		pAd->TssiPlusBoundaryG[1] = Power.field.Byte1;
+		RT28xx_EEPROM_READ16(pAd, EEPROM_G_TSSI_BOUND4, Power.word);
+		pAd->TssiPlusBoundaryG[2] = Power.field.Byte0;
+		pAd->TssiPlusBoundaryG[3] = Power.field.Byte1;
+		RT28xx_EEPROM_READ16(pAd, EEPROM_G_TSSI_BOUND5, Power.word);
+		pAd->TssiPlusBoundaryG[4] = Power.field.Byte0;
+		pAd->TxAgcStepG = Power.field.Byte1;    
+		pAd->TxAgcCompensateG = 0;
+		pAd->TssiMinusBoundaryG[0] = pAd->TssiRefG;
+		pAd->TssiPlusBoundaryG[0]  = pAd->TssiRefG;
+
+		// Disable TxAgc if the based value is not right
+		if (pAd->TssiRefG == 0xff)
+			pAd->bAutoTxAgcG = FALSE;
+
+		DBGPRINT(RT_DEBUG_TRACE,("E2PROM: G Tssi[-4 .. +4] = %d %d %d %d - %d -%d %d %d %d, step=%d, tuning=%d\n",
+			pAd->TssiMinusBoundaryG[4], pAd->TssiMinusBoundaryG[3], pAd->TssiMinusBoundaryG[2], pAd->TssiMinusBoundaryG[1],
+			pAd->TssiRefG,
+			pAd->TssiPlusBoundaryG[1], pAd->TssiPlusBoundaryG[2], pAd->TssiPlusBoundaryG[3], pAd->TssiPlusBoundaryG[4],
+			pAd->TxAgcStepG, pAd->bAutoTxAgcG));
+	}	
+	// 1. 11a
+	{
+		RT28xx_EEPROM_READ16(pAd, EEPROM_A_TSSI_BOUND1, Power.word);
+		pAd->TssiMinusBoundaryA[4] = Power.field.Byte0;
+		pAd->TssiMinusBoundaryA[3] = Power.field.Byte1;
+		RT28xx_EEPROM_READ16(pAd, EEPROM_A_TSSI_BOUND2, Power.word);
+		pAd->TssiMinusBoundaryA[2] = Power.field.Byte0;
+		pAd->TssiMinusBoundaryA[1] = Power.field.Byte1;
+		RT28xx_EEPROM_READ16(pAd, EEPROM_A_TSSI_BOUND3, Power.word);
+		pAd->TssiRefA = Power.field.Byte0;
+		pAd->TssiPlusBoundaryA[1] = Power.field.Byte1;
+		RT28xx_EEPROM_READ16(pAd, EEPROM_A_TSSI_BOUND4, Power.word);
+		pAd->TssiPlusBoundaryA[2] = Power.field.Byte0;
+		pAd->TssiPlusBoundaryA[3] = Power.field.Byte1;
+		RT28xx_EEPROM_READ16(pAd, EEPROM_A_TSSI_BOUND5, Power.word);
+		pAd->TssiPlusBoundaryA[4] = Power.field.Byte0;
+		pAd->TxAgcStepA = Power.field.Byte1;    
+		pAd->TxAgcCompensateA = 0;
+		pAd->TssiMinusBoundaryA[0] = pAd->TssiRefA;
+		pAd->TssiPlusBoundaryA[0]  = pAd->TssiRefA;
+
+		// Disable TxAgc if the based value is not right
+		if (pAd->TssiRefA == 0xff)
+			pAd->bAutoTxAgcA = FALSE;
+
+		DBGPRINT(RT_DEBUG_TRACE,("E2PROM: A Tssi[-4 .. +4] = %d %d %d %d - %d -%d %d %d %d, step=%d, tuning=%d\n",
+			pAd->TssiMinusBoundaryA[4], pAd->TssiMinusBoundaryA[3], pAd->TssiMinusBoundaryA[2], pAd->TssiMinusBoundaryA[1],
+			pAd->TssiRefA,
+			pAd->TssiPlusBoundaryA[1], pAd->TssiPlusBoundaryA[2], pAd->TssiPlusBoundaryA[3], pAd->TssiPlusBoundaryA[4],
+			pAd->TxAgcStepA, pAd->bAutoTxAgcA));
+	}	
+	pAd->BbpRssiToDbmDelta = 0x0;
+	
+	// Read frequency offset setting for RF
+	RT28xx_EEPROM_READ16(pAd, EEPROM_FREQ_OFFSET, value);
+	if ((value & 0x00FF) != 0x00FF)
+		pAd->RfFreqOffset = (ULONG) (value & 0x00FF);
+	else
+		pAd->RfFreqOffset = 0;
+	DBGPRINT(RT_DEBUG_TRACE, ("E2PROM: RF FreqOffset=0x%lx \n", pAd->RfFreqOffset));
+
+	//CountryRegion byte offset (38h)
+	value = pAd->EEPROMDefaultValue[2] >> 8;		// 2.4G band
+	value2 = pAd->EEPROMDefaultValue[2] & 0x00FF;	// 5G band
+	
+	if ((value <= REGION_MAXIMUM_BG_BAND) && (value2 <= REGION_MAXIMUM_A_BAND))
+	{
+		pAd->CommonCfg.CountryRegion = ((UCHAR) value) | 0x80;
+		pAd->CommonCfg.CountryRegionForABand = ((UCHAR) value2) | 0x80;
+		TmpPhy = pAd->CommonCfg.PhyMode;
+		pAd->CommonCfg.PhyMode = 0xff;
+		RTMPSetPhyMode(pAd, TmpPhy);
+#ifdef DOT11_N_SUPPORT
+		SetCommonHT(pAd);
+#endif // DOT11_N_SUPPORT //
+	}
+
+	//
+	// Get RSSI Offset on EEPROM 0x9Ah & 0x9Ch.
+	// The valid value are (-10 ~ 10) 
+	// 
+	RT28xx_EEPROM_READ16(pAd, EEPROM_RSSI_BG_OFFSET, value);
+	pAd->BGRssiOffset0 = value & 0x00ff;
+	pAd->BGRssiOffset1 = (value >> 8);
+	RT28xx_EEPROM_READ16(pAd, EEPROM_RSSI_BG_OFFSET+2, value);
+	pAd->BGRssiOffset2 = value & 0x00ff;
+	pAd->ALNAGain1 = (value >> 8);
+	RT28xx_EEPROM_READ16(pAd, EEPROM_LNA_OFFSET, value);
+	pAd->BLNAGain = value & 0x00ff;
+	pAd->ALNAGain0 = (value >> 8);
+	
+	// Validate 11b/g RSSI_0 offset.
+	if ((pAd->BGRssiOffset0 < -10) || (pAd->BGRssiOffset0 > 10))
+		pAd->BGRssiOffset0 = 0;
+
+	// Validate 11b/g RSSI_1 offset.
+	if ((pAd->BGRssiOffset1 < -10) || (pAd->BGRssiOffset1 > 10))
+		pAd->BGRssiOffset1 = 0;
+
+	// Validate 11b/g RSSI_2 offset.
+	if ((pAd->BGRssiOffset2 < -10) || (pAd->BGRssiOffset2 > 10))
+		pAd->BGRssiOffset2 = 0;
+		
+	RT28xx_EEPROM_READ16(pAd, EEPROM_RSSI_A_OFFSET, value);
+	pAd->ARssiOffset0 = value & 0x00ff;
+	pAd->ARssiOffset1 = (value >> 8);
+	RT28xx_EEPROM_READ16(pAd, (EEPROM_RSSI_A_OFFSET+2), value);
+	pAd->ARssiOffset2 = value & 0x00ff;
+	pAd->ALNAGain2 = (value >> 8);
+
+
+	if (((UCHAR)pAd->ALNAGain1 == 0xFF) || (pAd->ALNAGain1 == 0x00))
+		pAd->ALNAGain1 = pAd->ALNAGain0;
+	if (((UCHAR)pAd->ALNAGain2 == 0xFF) || (pAd->ALNAGain2 == 0x00))
+		pAd->ALNAGain2 = pAd->ALNAGain0;
+
+	// Validate 11a RSSI_0 offset.
+	if ((pAd->ARssiOffset0 < -10) || (pAd->ARssiOffset0 > 10))
+		pAd->ARssiOffset0 = 0;
+
+	// Validate 11a RSSI_1 offset.
+	if ((pAd->ARssiOffset1 < -10) || (pAd->ARssiOffset1 > 10))
+		pAd->ARssiOffset1 = 0;
+
+	//Validate 11a RSSI_2 offset.
+	if ((pAd->ARssiOffset2 < -10) || (pAd->ARssiOffset2 > 10))
+		pAd->ARssiOffset2 = 0;
+
+#ifdef RT30xx
+	//
+	// Get TX mixer gain setting
+	// 0xff are invalid value
+	// Note: RT30xX default value is 0x00 and will program to RF_R17 only when this value is not zero.
+	//       RT359X default value is 0x02
+	//
+	if (IS_RT30xx(pAd) || IS_RT3572(pAd) || IS_RT3390(pAd))
+	{
+		RT28xx_EEPROM_READ16(pAd, EEPROM_TXMIXER_GAIN_2_4G, value);
+		pAd->TxMixerGain24G = 0;
+		value &= 0x00ff;
+		if (value != 0xff)
+		{
+			value &= 0x07;
+			pAd->TxMixerGain24G = (UCHAR)value;
+		}
+	}
+#endif // RT30xx //
+#ifdef RT35xx
+	// EEPROM setting of TxMixer for 3572
+	if (IS_RT3572(pAd))
+	{
+		RT28xx_EEPROM_READ16(pAd, EEPROM_TXMIXER_GAIN_5G, value);
+		pAd->TxMixerGain5G = 0;
+		value &= 0x00ff;
+		if (value != 0xff)
+		{
+			value &= 0x07;
+			pAd->TxMixerGain5G = (UCHAR)value;
+		}
+	}
+#endif // RT35xx //
+	
+	//
+	// Get LED Setting.
+	//
+	RT28xx_EEPROM_READ16(pAd, EEPROM_FREQ_OFFSET, value);
+	pAd->LedCntl.word = (value>>8);
+	RT28xx_EEPROM_READ16(pAd, EEPROM_LED1_OFFSET, value);
+	pAd->Led1 = value;
+	RT28xx_EEPROM_READ16(pAd, EEPROM_LED2_OFFSET, value);
+	pAd->Led2 = value;
+	RT28xx_EEPROM_READ16(pAd, EEPROM_LED3_OFFSET, value);
+	pAd->Led3 = value;
+		
+	RTMPReadTxPwrPerRate(pAd);
+
+#ifdef SINGLE_SKU
+	RT28xx_EEPROM_READ16(pAd, EEPROM_DEFINE_MAX_TXPWR, pAd->CommonCfg.DefineMaxTxPwr);
+	if (pAd->CommonCfg.DefineMaxTxPwr <= 0x50 && pAd->CommonCfg.AntGain > 0 && pAd->CommonCfg.BandedgeDelta >= 0)
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("Single SKU Mode is enabled\n"));
+		pAd->CommonCfg.bSKUMode = TRUE;
+	}
+	else
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("Single SKU Mode is disabled\n"));
+		pAd->CommonCfg.bSKUMode = FALSE;
+	}
+#endif // SINGLE_SKU //
+
+#ifdef RT30xx
+#ifdef RTMP_EFUSE_SUPPORT
+	RtmpEfuseSupportCheck(pAd);
+#endif // RTMP_EFUSE_SUPPORT //
+#endif // RT30xx //
+
+	DBGPRINT(RT_DEBUG_TRACE, ("<-- NICReadEEPROMParameters\n"));
+}
+
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Set default value from EEPROM
+		
+	Arguments:
+		Adapter						Pointer to our adapter
+
+	Return Value:
+		None
+
+	IRQL = PASSIVE_LEVEL
+	
+	Note:
+		
+	========================================================================
+*/
+VOID	NICInitAsicFromEEPROM(
+	IN	PRTMP_ADAPTER	pAd)
+{
+#ifdef CONFIG_STA_SUPPORT
+	UINT32					data = 0;
+	UCHAR	BBPR1 = 0; 
+#endif // CONFIG_STA_SUPPORT //
+	USHORT					i;
+	EEPROM_NIC_CONFIG2_STRUC    NicConfig2;
+	UCHAR	BBPR3 = 0;
+#ifdef RT30xx
+	UCHAR			bbpreg = 0;
+	UCHAR			RFValue = 0;
+#endif // RT30xx //
+	
+	DBGPRINT(RT_DEBUG_TRACE, ("--> NICInitAsicFromEEPROM\n"));
+	for(i = 3; i < NUM_EEPROM_BBP_PARMS; i++)
+	{
+		UCHAR BbpRegIdx, BbpValue;
+	
+		if ((pAd->EEPROMDefaultValue[i] != 0xFFFF) && (pAd->EEPROMDefaultValue[i] != 0))
+		{
+			BbpRegIdx = (UCHAR)(pAd->EEPROMDefaultValue[i] >> 8);
+			BbpValue  = (UCHAR)(pAd->EEPROMDefaultValue[i] & 0xff);
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BbpRegIdx, BbpValue);
+		}
+	}
+
+	NicConfig2.word = pAd->NicConfig2.word;
+
+#ifdef RT30xx
+	// set default antenna as main
+	if (pAd->RfIcType == RFIC_3020)
+		AsicSetRxAnt(pAd, pAd->RxAnt.Pair1PrimaryRxAnt);
+#endif // RT30xx //
+
+	//
+	// Send LED Setting to MCU.
+	//
+	if (pAd->LedCntl.word == 0xFF)
+	{
+		pAd->LedCntl.word = 0x01;
+		pAd->Led1 = 0x5555;
+		pAd->Led2 = 0x2221;
+
+#ifdef RTMP_MAC_PCI
+		pAd->Led3 = 0xA9F8;
+#endif // RTMP_MAC_PCI //
+	}
+
+	AsicSendCommandToMcu(pAd, 0x52, 0xff, (UCHAR)pAd->Led1, (UCHAR)(pAd->Led1 >> 8));
+	AsicSendCommandToMcu(pAd, 0x53, 0xff, (UCHAR)pAd->Led2, (UCHAR)(pAd->Led2 >> 8));
+	AsicSendCommandToMcu(pAd, 0x54, 0xff, (UCHAR)pAd->Led3, (UCHAR)(pAd->Led3 >> 8));
+	AsicSendCommandToMcu(pAd, 0x51, 0xff, 0, pAd->LedCntl.field.Polarity);
+	
+	pAd->LedIndicatorStrength = 0xFF;
+	RTMPSetSignalLED(pAd, -100);	// Force signal strength Led to be turned off, before link up
+
+#ifdef RTMP_RF_RW_SUPPORT
+	//Init RT30xx RFRegisters after read RFIC type from EEPROM
+	NICInitRFRegisters(pAd);
+#endif // RTMP_RF_RW_SUPPORT //
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+		// Read Hardware controlled Radio state enable bit
+		if (NicConfig2.field.HardwareRadioControl == 1)
+		{
+			pAd->StaCfg.bHardwareRadio = TRUE;
+
+			// Read GPIO pin2 as Hardware controlled radio state
+			RTMP_IO_READ32(pAd, GPIO_CTRL_CFG, &data);
+			if ((data & 0x04) == 0)
+			{
+				pAd->StaCfg.bHwRadio = FALSE;
+				pAd->StaCfg.bRadio = FALSE;
+//				RTMP_IO_WRITE32(pAd, PWR_PIN_CFG, 0x00001818);
+				RTMP_SET_FLAG(pAd, fRTMP_ADAPTER_RADIO_OFF);
+			}
+		}
+		else
+			pAd->StaCfg.bHardwareRadio = FALSE;		
+
+		if (pAd->StaCfg.bRadio == FALSE)
+		{
+			RTMPSetLED(pAd, LED_RADIO_OFF);
+		}
+		else
+		{
+			RTMPSetLED(pAd, LED_RADIO_ON);
+#ifdef RTMP_MAC_PCI
+
+			AsicSendCommandToMcu(pAd, 0x30, PowerRadioOffCID, 0xff, 0x02);
+			AsicCheckCommanOk(pAd, PowerRadioOffCID);
+
+			//AsicSendCommandToMcu(pAd, 0x30, 0xff, 0xff, 0x02);
+			AsicSendCommandToMcu(pAd, 0x31, PowerWakeCID, 0x00, 0x00);
+			// 2-1. wait command ok.
+			AsicCheckCommanOk(pAd, PowerWakeCID);
+#endif // RTMP_MAC_PCI //
+		}
+	}
+
+	if (IS_RT3090(pAd)|| IS_RT3572(pAd) || IS_RT3390(pAd))
+	{
+		RTMP_CHIP_OP *pChipOps = &pAd->chipOps;
+		if (pChipOps->AsicReverseRfFromSleepMode)
+			pChipOps->AsicReverseRfFromSleepMode(pAd);
+	}
+	
+#ifdef PCIE_PS_SUPPORT
+#endif // PCIE_PS_SUPPORT //
+#endif // CONFIG_STA_SUPPORT //
+
+	// Turn off patching for cardbus controller
+	if (NicConfig2.field.CardbusAcceleration == 1)
+	{
+//		pAd->bTest1 = TRUE;
+	}
+
+	if (NicConfig2.field.DynamicTxAgcControl == 1)
+		pAd->bAutoTxAgcA = pAd->bAutoTxAgcG = TRUE;
+	else
+		pAd->bAutoTxAgcA = pAd->bAutoTxAgcG = FALSE;
+	//
+	// Since BBP has been progamed, to make sure BBP setting will be 
+	// upate inside of AsicAntennaSelect, so reset to UNKNOWN_BAND!!
+	//
+	pAd->CommonCfg.BandState = UNKNOWN_BAND;
+	
+	RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R3, &BBPR3);
+	BBPR3 &= (~0x18);
+	if(pAd->Antenna.field.RxPath == 3)
+	{
+		BBPR3 |= (0x10);
+	}
+	else if(pAd->Antenna.field.RxPath == 2)
+	{
+		BBPR3 |= (0x8);
+	}
+	else if(pAd->Antenna.field.RxPath == 1)
+	{
+		BBPR3 |= (0x0);
+	}
+	RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R3, BBPR3);
+	
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+		// Handle the difference when 1T
+		RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R1, &BBPR1);
+		if(pAd->Antenna.field.TxPath == 1)
+		{
+		BBPR1 &= (~0x18);
+		}
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R1, BBPR1);
+    
+		DBGPRINT(RT_DEBUG_TRACE, ("Use Hw Radio Control Pin=%d; if used Pin=%d;\n", 
+					pAd->CommonCfg.bHardwareRadio, pAd->CommonCfg.bHardwareRadio));
+	}
+#endif // CONFIG_STA_SUPPORT //
+
+#ifdef RT30xx
+#ifdef RT35xx
+	if (IS_RT3572(pAd))
+	{	
+		// enable DC filter
+		if ((pAd->MACVersion & 0xffff) >= 0x0201)
+		{
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R103, 0xc0);
+		}
+
+		// improve power consumption 
+		RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R138, &bbpreg);
+		if (pAd->Antenna.field.TxPath == 1)
+		{
+			// turn off tx DAC_1			
+			bbpreg = (bbpreg | 0x20);
+		}
+
+		if (pAd->Antenna.field.RxPath == 1)
+		{
+			// turn off tx ADC_1
+			bbpreg &= (~0x2);
+		}
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R138, bbpreg);
+
+		if ((pAd->MACVersion & 0xffff) >= 0x0211)
+		{
+			RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R31, &bbpreg);
+			bbpreg &= (~0x3);
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R31, bbpreg);
+		}
+
+		// TX_LO1_en
+		RT30xxReadRFRegister(pAd, RF_R16, &RFValue);
+
+		// set RF_R16_bit[2:0] equal to EEPROM setting at 0x48h and the value should start from 2.
+		//if (pAd->TxMixerGain24G >= 2)
+		{
+			RFValue &= (~0x7);  // clean bit [2:0]
+			RFValue |= pAd->TxMixerGain24G;
+		}
+		RT30xxWriteRFRegister(pAd, RF_R16, RFValue);
+	}
+	else
+#endif // RT35xx //
+	// Initialize RT3070 serial MAC registers which is different from RT2870 serial
+	if (IS_RT3090(pAd) || IS_RT3390(pAd))
+	{
+		// enable DC filter
+		if ((pAd->MACVersion & 0xffff) >= 0x0211)
+		{
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R103, 0xc0);
+		}
+	
+		// improve power consumption 
+		RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R138, &bbpreg);
+		if (pAd->Antenna.field.TxPath == 1)
+		{
+			// turn off tx DAC_1
+			bbpreg = (bbpreg | 0x20);
+		}
+
+		if (pAd->Antenna.field.RxPath == 1)
+		{
+			// turn off tx ADC_1
+			bbpreg &= (~0x2);
+		}
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R138, bbpreg);
+
+		// improve power consumption in RT3071 Ver.E 
+		if ((pAd->MACVersion & 0xffff) >= 0x0211)
+		{
+			RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R31, &bbpreg);
+			bbpreg &= (~0x3);
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R31, bbpreg);
+		}
+
+
+		RTMP_IO_WRITE32(pAd, TX_SW_CFG1, 0);
+		
+		// RT3071 version E has fixed this issue
+		if ((pAd->MACVersion & 0xffff) < 0x0211)
+		{
+			if (pAd->NicConfig2.field.DACTestBit == 1)
+			{
+				RTMP_IO_WRITE32(pAd, TX_SW_CFG2, 0x2C);	// To fix throughput drop drastically
+			}
+			else
+			{
+				RTMP_IO_WRITE32(pAd, TX_SW_CFG2, 0x0F);	// To fix throughput drop drastically
+			}
+		}
+		else
+		{
+			RTMP_IO_WRITE32(pAd, TX_SW_CFG2, 0x0);
+		}
+	}
+	else if (IS_RT3070(pAd))
+	{
+		if ((pAd->MACVersion & 0xffff) >= 0x0201)
+		{
+			// enable DC filter
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R103, 0xc0);
+			
+			// improve power consumption in RT3070 Ver.F
+			RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R31, &bbpreg);
+			bbpreg &= (~0x3);
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R31, bbpreg);
+		}
+		
+		// TX_LO1_en, RF R17 register Bit 3 to 0
+		RT30xxReadRFRegister(pAd, RF_R17, &RFValue);
+		RFValue &= (~0x08);
+		// to fix rx long range issue
+		if (pAd->NicConfig2.field.ExternalLNAForG == 0)
+		{
+			RFValue |= 0x20;
+		}
+		// set RF_R17_bit[2:0] equal to EEPROM setting at 0x48h
+		if (pAd->TxMixerGain24G >= 1)
+		{
+			RFValue &= (~0x7);  // clean bit [2:0]
+			RFValue |= pAd->TxMixerGain24G;
+		}
+		RT30xxWriteRFRegister(pAd, RF_R17, RFValue);
+	
+		if (((pAd->MACVersion & 0xffff) < 0x0201))
+		{
+			RTMP_IO_WRITE32(pAd, TX_SW_CFG1, 0);
+			RTMP_IO_WRITE32(pAd, TX_SW_CFG2, 0x2C);	// To fix throughput drop drastically
+		}
+		else
+		{
+			RTMP_IO_WRITE32(pAd, TX_SW_CFG2, 0);
+		}
+	}
+	else if (IS_RT3071(pAd) || IS_RT3572(pAd))
+	{
+		RTMP_IO_WRITE32(pAd, TX_SW_CFG1, 0);
+		if (((pAd->MACVersion & 0xffff) < 0x0211))
+		{
+			if (pAd->NicConfig2.field.DACTestBit == 1)
+			{
+				RTMP_IO_WRITE32(pAd, TX_SW_CFG2, 0x1F); // To fix throughput drop drastically
+			}
+			else
+			{
+				RTMP_IO_WRITE32(pAd, TX_SW_CFG2, 0x0F); // To fix throughput drop drastically
+			}
+		}
+		else
+		{
+			RTMP_IO_WRITE32(pAd, TX_SW_CFG2, 0x0);
+		}
+	}
+
+	// update registers from EEPROM for RT3071 or later(3572/3562/3592).
+	if (IS_RT3090(pAd) || IS_RT3572(pAd) || IS_RT3390(pAd))
+	{
+		UCHAR RegIdx, RegValue;
+		USHORT value;
+
+		// after RT3071, write BBP from EEPROM 0xF0 to 0x102
+		for (i = 0xF0; i <= 0x102; i = i+2)
+		{
+			value = 0xFFFF;
+			RT28xx_EEPROM_READ16(pAd, i, value);
+			if ((value != 0xFFFF) && (value != 0))
+			{
+				RegIdx = (UCHAR)(value >> 8);
+				RegValue  = (UCHAR)(value & 0xff);
+				RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, RegIdx, RegValue);
+				DBGPRINT(RT_DEBUG_TRACE, ("Update BBP Registers from EEPROM(0x%0x), BBP(0x%x) = 0x%x\n", i, RegIdx, RegValue));
+			}
+		}
+
+		// after RT3071, write RF from EEPROM 0x104 to 0x116
+		for (i = 0x104; i <= 0x116; i = i+2)
+		{
+			value = 0xFFFF;
+			RT28xx_EEPROM_READ16(pAd, i, value);
+			if ((value != 0xFFFF) && (value != 0))
+			{
+				RegIdx = (UCHAR)(value >> 8);
+				RegValue  = (UCHAR)(value & 0xff);
+				RT30xxWriteRFRegister(pAd, RegIdx, RegValue);
+				DBGPRINT(RT_DEBUG_TRACE, ("Update RF Registers from EEPROM0x%x), BBP(0x%x) = 0x%x\n", i, RegIdx, RegValue));
+			}
+		}
+	}
+#endif // RT30xx //
+
+	DBGPRINT(RT_DEBUG_TRACE, ("TxPath = %d, RxPath = %d, RFIC=%d, Polar+LED mode=%x\n", 
+				pAd->Antenna.field.TxPath, pAd->Antenna.field.RxPath, 
+				pAd->RfIcType, pAd->LedCntl.word));
+	DBGPRINT(RT_DEBUG_TRACE, ("<-- NICInitAsicFromEEPROM\n"));
+}
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Initialize NIC hardware
+
+	Arguments:
+		Adapter						Pointer to our adapter
+
+	Return Value:
+		None
+
+	IRQL = PASSIVE_LEVEL
+
+	Note:
+		
+	========================================================================
+*/
+NDIS_STATUS	NICInitializeAdapter(
+	IN	PRTMP_ADAPTER	pAd,
+	IN   BOOLEAN    bHardReset)
+{
+	NDIS_STATUS     Status = NDIS_STATUS_SUCCESS;
+	WPDMA_GLO_CFG_STRUC	GloCfg;
+#ifdef RTMP_MAC_PCI
+	UINT32			Value;
+	DELAY_INT_CFG_STRUC	IntCfg;
+#endif // RTMP_MAC_PCI //
+//	INT_MASK_CSR_STRUC		IntMask;
+	ULONG	i =0, j=0;
+	//AC_TXOP_CSR0_STRUC	csr0;
+
+	DBGPRINT(RT_DEBUG_TRACE, ("--> NICInitializeAdapter\n"));
+	
+	// 3. Set DMA global configuration except TX_DMA_EN and RX_DMA_EN bits:
+retry:
+	i = 0;
+	do
+	{
+		RTMP_IO_READ32(pAd, WPDMA_GLO_CFG, &GloCfg.word);
+		if ((GloCfg.field.TxDMABusy == 0)  && (GloCfg.field.RxDMABusy == 0))
+			break;
+
+		if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_NIC_NOT_EXIST))			
+			return NDIS_STATUS_FAILURE;
+		
+		RTMPusecDelay(1000);
+		i++;
+	}while ( i<100);
+	DBGPRINT(RT_DEBUG_TRACE, ("<== DMA offset 0x208 = 0x%x\n", GloCfg.word));	
+	GloCfg.word &= 0xff0;
+	GloCfg.field.EnTXWriteBackDDONE =1;
+	RTMP_IO_WRITE32(pAd, WPDMA_GLO_CFG, GloCfg.word);
+	
+	// Record HW Beacon offset
+	pAd->BeaconOffset[0] = HW_BEACON_BASE0;
+	pAd->BeaconOffset[1] = HW_BEACON_BASE1;
+	pAd->BeaconOffset[2] = HW_BEACON_BASE2;
+	pAd->BeaconOffset[3] = HW_BEACON_BASE3;
+	pAd->BeaconOffset[4] = HW_BEACON_BASE4;
+	pAd->BeaconOffset[5] = HW_BEACON_BASE5;
+	pAd->BeaconOffset[6] = HW_BEACON_BASE6;
+	pAd->BeaconOffset[7] = HW_BEACON_BASE7;
+	
+	//
+	// write all shared Ring's base address into ASIC
+	//
+
+	// asic simulation sequence put this ahead before loading firmware.
+	// pbf hardware reset
+#ifdef RTMP_MAC_PCI
+	RTMP_IO_WRITE32(pAd, WPDMA_RST_IDX, 0x1003f);	// 0x10000 for reset rx, 0x3f resets all 6 tx rings.
+	RTMP_IO_WRITE32(pAd, PBF_SYS_CTRL, 0xe1f);
+	RTMP_IO_WRITE32(pAd, PBF_SYS_CTRL, 0xe00);
+#endif // RTMP_MAC_PCI //
+
+	// Initialze ASIC for TX & Rx operation
+	if (NICInitializeAsic(pAd , bHardReset) != NDIS_STATUS_SUCCESS)
+	{
+		if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_NIC_NOT_EXIST))			
+			return NDIS_STATUS_FAILURE;
+		
+		if (j++ == 0)
+		{
+			NICLoadFirmware(pAd);
+			goto retry;
+		}
+		return NDIS_STATUS_FAILURE;
+	}
+
+
+#ifdef RTMP_MAC_PCI
+	// Write AC_BK base address register
+	Value = RTMP_GetPhysicalAddressLow(pAd->TxRing[QID_AC_BK].Cell[0].AllocPa);
+	RTMP_IO_WRITE32(pAd, TX_BASE_PTR1, Value);
+	DBGPRINT(RT_DEBUG_TRACE, ("--> TX_BASE_PTR1 : 0x%x\n", Value));
+
+	// Write AC_BE base address register
+	Value = RTMP_GetPhysicalAddressLow(pAd->TxRing[QID_AC_BE].Cell[0].AllocPa);
+	RTMP_IO_WRITE32(pAd, TX_BASE_PTR0, Value);
+	DBGPRINT(RT_DEBUG_TRACE, ("--> TX_BASE_PTR0 : 0x%x\n", Value));
+
+	// Write AC_VI base address register
+	Value = RTMP_GetPhysicalAddressLow(pAd->TxRing[QID_AC_VI].Cell[0].AllocPa);
+	RTMP_IO_WRITE32(pAd, TX_BASE_PTR2, Value);
+	DBGPRINT(RT_DEBUG_TRACE, ("--> TX_BASE_PTR2 : 0x%x\n", Value));
+
+	// Write AC_VO base address register
+	Value = RTMP_GetPhysicalAddressLow(pAd->TxRing[QID_AC_VO].Cell[0].AllocPa);	
+	RTMP_IO_WRITE32(pAd, TX_BASE_PTR3, Value);
+	DBGPRINT(RT_DEBUG_TRACE, ("--> TX_BASE_PTR3 : 0x%x\n", Value));
+
+	// Write HCCA base address register
+	  Value = RTMP_GetPhysicalAddressLow(pAd->TxRing[QID_HCCA].Cell[0].AllocPa);
+	  RTMP_IO_WRITE32(pAd, TX_BASE_PTR4, Value);
+	DBGPRINT(RT_DEBUG_TRACE, ("--> TX_BASE_PTR4 : 0x%x\n", Value));
+
+	// Write MGMT_BASE_CSR register
+	Value = RTMP_GetPhysicalAddressLow(pAd->MgmtRing.Cell[0].AllocPa);
+	RTMP_IO_WRITE32(pAd, TX_BASE_PTR5, Value);
+	DBGPRINT(RT_DEBUG_TRACE, ("--> TX_BASE_PTR5 : 0x%x\n", Value));
+
+	// Write RX_BASE_CSR register
+	Value = RTMP_GetPhysicalAddressLow(pAd->RxRing.Cell[0].AllocPa);
+	RTMP_IO_WRITE32(pAd, RX_BASE_PTR, Value);
+	DBGPRINT(RT_DEBUG_TRACE, ("--> RX_BASE_PTR : 0x%x\n", Value));
+
+	// Init RX Ring index pointer
+	pAd->RxRing.RxSwReadIdx = 0;
+	pAd->RxRing.RxCpuIdx = RX_RING_SIZE-1;
+	RTMP_IO_WRITE32(pAd, RX_CRX_IDX, pAd->RxRing.RxCpuIdx);
+	
+	// Init TX rings index pointer
+	{
+		for (i=0; i<NUM_OF_TX_RING; i++)
+		{
+			pAd->TxRing[i].TxSwFreeIdx = 0;
+			pAd->TxRing[i].TxCpuIdx = 0;
+			RTMP_IO_WRITE32(pAd, (TX_CTX_IDX0 + i * 0x10) ,  pAd->TxRing[i].TxCpuIdx);
+		}
+	}
+
+	// init MGMT ring index pointer
+	pAd->MgmtRing.TxSwFreeIdx = 0;
+	pAd->MgmtRing.TxCpuIdx = 0;
+	RTMP_IO_WRITE32(pAd, TX_MGMTCTX_IDX,  pAd->MgmtRing.TxCpuIdx);
+
+	//
+	// set each Ring's SIZE  into ASIC. Descriptor Size is fixed by design.
+	//
+
+	// Write TX_RING_CSR0 register
+	Value = TX_RING_SIZE;
+	RTMP_IO_WRITE32(pAd, TX_MAX_CNT0, Value);
+	RTMP_IO_WRITE32(pAd, TX_MAX_CNT1, Value);
+	RTMP_IO_WRITE32(pAd, TX_MAX_CNT2, Value);
+	RTMP_IO_WRITE32(pAd, TX_MAX_CNT3, Value);
+	RTMP_IO_WRITE32(pAd, TX_MAX_CNT4, Value);
+	Value = MGMT_RING_SIZE;
+	RTMP_IO_WRITE32(pAd, TX_MGMTMAX_CNT, Value);
+
+	// Write RX_RING_CSR register
+	Value = RX_RING_SIZE;
+	RTMP_IO_WRITE32(pAd, RX_MAX_CNT, Value);
+#endif // RTMP_MAC_PCI //
+
+
+
+#ifdef RTMP_MAC_PCI
+	// 3. Set DMA global configuration except TX_DMA_EN and RX_DMA_EN bits:
+	i = 0;
+	do
+	{
+		RTMP_IO_READ32(pAd, WPDMA_GLO_CFG, &GloCfg.word);
+		if ((GloCfg.field.TxDMABusy == 0)  && (GloCfg.field.RxDMABusy == 0))
+			break;
+		
+		RTMPusecDelay(1000);
+		i++;
+	}while ( i < 100);
+
+	GloCfg.word &= 0xff0;
+	GloCfg.field.EnTXWriteBackDDONE =1;
+	RTMP_IO_WRITE32(pAd, WPDMA_GLO_CFG, GloCfg.word);
+	
+	IntCfg.word = 0;
+	RTMP_IO_WRITE32(pAd, DELAY_INT_CFG, IntCfg.word);
+#endif // RTMP_MAC_PCI //
+
+
+	// reset action
+	// Load firmware
+	//  Status = NICLoadFirmware(pAd);
+
+	DBGPRINT(RT_DEBUG_TRACE, ("<-- NICInitializeAdapter\n"));
+	return Status;
+}
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Initialize ASIC
+
+	Arguments:
+		Adapter						Pointer to our adapter
+
+	Return Value:
+		None
+
+	IRQL = PASSIVE_LEVEL
+
+	Note:
+		
+	========================================================================
+*/
+NDIS_STATUS	NICInitializeAsic(
+	IN	PRTMP_ADAPTER	pAd,
+	IN  BOOLEAN		bHardReset)
+{
+	ULONG			Index = 0;
+	UCHAR			R0 = 0xff;
+	UINT32			MacCsr12 = 0, Counter = 0;
+	USHORT			KeyIdx;
+	INT				i,apidx;
+
+	DBGPRINT(RT_DEBUG_TRACE, ("--> NICInitializeAsic\n"));
+
+#ifdef RTMP_MAC_PCI
+	RTMP_IO_WRITE32(pAd, PWR_PIN_CFG, 0x3);	// To fix driver disable/enable hang issue when radio off
+	if (bHardReset == TRUE)
+	{
+		RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, 0x3);
+	}
+	else
+		RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, 0x1);
+
+	RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, 0x0);
+	// Initialize MAC register to default value
+	for (Index = 0; Index < NUM_MAC_REG_PARMS; Index++)
+	{
+#ifdef RT30xx
+		if ((MACRegTable[Index].Register == TX_SW_CFG0) && ( IS_RT3090(pAd) ||  IS_RT3390(pAd)))
+		{
+			MACRegTable[Index].Value = 0x00000400;
+		}
+#endif // RT30xx //
+#ifdef RT35xx
+		if ((MACRegTable[Index].Register == TX_SW_CFG0) && IS_RT3572(pAd))
+		{
+			MACRegTable[Index].Value = 0x00000400;
+		}
+#endif // RT35xx //
+		RTMP_IO_WRITE32(pAd, MACRegTable[Index].Register, MACRegTable[Index].Value);
+	}
+
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+		for (Index = 0; Index < NUM_STA_MAC_REG_PARMS; Index++)
+		{
+			RTMP_IO_WRITE32(pAd, STAMACRegTable[Index].Register, STAMACRegTable[Index].Value);
+		}
+	}
+#endif // CONFIG_STA_SUPPORT //
+#endif // RTMP_MAC_PCI //
+
+
+	//
+	// Before program BBP, we need to wait BBP/RF get wake up.
+	//
+	Index = 0;
+	do
+	{
+		if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_NIC_NOT_EXIST))			
+			return NDIS_STATUS_FAILURE;
+		
+		RTMP_IO_READ32(pAd, MAC_STATUS_CFG, &MacCsr12);
+
+		if ((MacCsr12 & 0x03) == 0)	// if BB.RF is stable
+			break;
+		
+		DBGPRINT(RT_DEBUG_TRACE, ("Check MAC_STATUS_CFG  = Busy = %x\n", MacCsr12));
+		RTMPusecDelay(1000);
+	} while (Index++ < 100);
+
+	// The commands to firmware should be after these commands, these commands will init firmware
+	// PCI and USB are not the same because PCI driver needs to wait for PCI bus ready
+	RTMP_IO_WRITE32(pAd, H2M_BBP_AGENT, 0);	// initialize BBP R/W access agent
+	RTMP_IO_WRITE32(pAd, H2M_MAILBOX_CSR, 0);
+
+#ifdef RTMP_MAC_PCI
+	AsicSendCommandToMcu(pAd, 0x72, 0, 0, 0);
+#endif // RTMP_MAC_PCI //
+
+	RTMPusecDelay(1000);
+
+	// Read BBP register, make sure BBP is up and running before write new data
+	Index = 0;
+	do 
+	{
+		if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_NIC_NOT_EXIST))			
+			return NDIS_STATUS_FAILURE;
+		
+		RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R0, &R0);
+		DBGPRINT(RT_DEBUG_TRACE, ("BBP version = %x\n", R0));
+	} while ((++Index < 20) && ((R0 == 0xff) || (R0 == 0x00)));
+	//ASSERT(Index < 20); //this will cause BSOD on Check-build driver
+
+	if ((R0 == 0xff) || (R0 == 0x00))
+		return NDIS_STATUS_FAILURE;
+
+	// Initialize BBP register to default value
+	for (Index = 0; Index < NUM_BBP_REG_PARMS; Index++)
+	{
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBPRegTable[Index].Register, BBPRegTable[Index].Value);
+	}
+
+	if (pAd->chipOps.pBBPRegTable)
+	{
+		REG_PAIR *pbbpRegTb = pAd->chipOps.pBBPRegTable;
+		
+		for (Index = 0; Index < pAd->chipOps.bbpRegTbSize; Index++)
+		{
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, pbbpRegTb[Index].Register, pbbpRegTb[Index].Value);
+			DBGPRINT(RT_DEBUG_TRACE, ("BBP_R%d=%d\n", pbbpRegTb[Index].Register, pbbpRegTb[Index].Value));
+		}
+	}
+	
+#ifdef RTMP_MAC_PCI
+	// TODO: shiang, check MACVersion, currently, rbus-based chip use this.
+	if (pAd->MACVersion == 0x28720200)
+	{
+		//UCHAR value;
+		ULONG value2;
+
+		//disable MLD by Bruce 20080704
+		//BBP_IO_READ8_BY_REG_ID(pAd, BBP_R105, &value);
+		//BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R105, value | 4);
+	
+		//Maximum PSDU length from 16K to 32K bytes	
+		RTMP_IO_READ32(pAd, MAX_LEN_CFG, &value2);
+		value2 &= ~(0x3<<12);
+		value2 |= (0x2<<12);
+		RTMP_IO_WRITE32(pAd, MAX_LEN_CFG, value2);
+	}
+#endif // RTMP_MAC_PCI //
+
+	// for rt2860E and after, init BBP_R84 with 0x19. This is for extension channel overlapping IOT.
+	// RT3090 should not program BBP R84 to 0x19, otherwise TX will block.
+	//3070/71/72,3090,3090A( are included in RT30xx),3572,3390
+	if (((pAd->MACVersion & 0xffff) != 0x0101) && !(IS_RT30xx(pAd)|| IS_RT3572(pAd) || IS_RT3390(pAd)))
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R84, 0x19);
+
+#ifdef RT30xx
+	// RF power sequence setup
+	if (IS_RT30xx(pAd) || IS_RT3572(pAd) || IS_RT3390(pAd))
+	{	//update for RT3070/71/72/90/91/92,3572,3390.
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R79, 0x13);		
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R80, 0x05);	
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R81, 0x33);	
+	}
+#endif // RT30xx //
+
+	if (pAd->MACVersion == 0x28600100)
+	{
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R69, 0x16);
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R73, 0x12);
+	}
+	
+	if (pAd->MACVersion >= RALINK_2880E_VERSION && pAd->MACVersion < RALINK_3070_VERSION) // 3*3
+	{
+		// enlarge MAX_LEN_CFG
+		UINT32 csr;
+		RTMP_IO_READ32(pAd, MAX_LEN_CFG, &csr);
+		{
+		csr &= 0xFFF;
+		csr |= 0x2000;
+		}
+		RTMP_IO_WRITE32(pAd, MAX_LEN_CFG, csr);
+	}
+
+
+#ifdef CONFIG_STA_SUPPORT
+	// Add radio off control
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+		if (pAd->StaCfg.bRadio == FALSE)
+		{
+//			RTMP_IO_WRITE32(pAd, PWR_PIN_CFG, 0x00001818);
+			RTMP_SET_FLAG(pAd, fRTMP_ADAPTER_RADIO_OFF);
+			DBGPRINT(RT_DEBUG_TRACE, ("Set Radio Off\n"));
+		}
+	}
+#endif // CONFIG_STA_SUPPORT //	
+
+	// Clear raw counters
+	RTMP_IO_READ32(pAd, RX_STA_CNT0, &Counter);
+	RTMP_IO_READ32(pAd, RX_STA_CNT1, &Counter);
+	RTMP_IO_READ32(pAd, RX_STA_CNT2, &Counter);
+	RTMP_IO_READ32(pAd, TX_STA_CNT0, &Counter);
+	RTMP_IO_READ32(pAd, TX_STA_CNT1, &Counter);
+	RTMP_IO_READ32(pAd, TX_STA_CNT2, &Counter);
+	
+	// ASIC will keep garbage value after boot
+	// Clear all shared key table when initial
+	// This routine can be ignored in radio-ON/OFF operation. 
+	if (bHardReset)
+	{
+		for (KeyIdx = 0; KeyIdx < 4; KeyIdx++)
+		{
+			RTMP_IO_WRITE32(pAd, SHARED_KEY_MODE_BASE + 4*KeyIdx, 0);
+		}
+
+		// Clear all pairwise key table when initial
+		for (KeyIdx = 0; KeyIdx < 256; KeyIdx++)
+		{
+			RTMP_IO_WRITE32(pAd, MAC_WCID_ATTRIBUTE_BASE + (KeyIdx * HW_WCID_ATTRI_SIZE), 1);
+		}
+	}
+	
+	// assert HOST ready bit
+//  RTMP_IO_WRITE32(pAd, MAC_CSR1, 0x0); // 2004-09-14 asked by Mark
+//  RTMP_IO_WRITE32(pAd, MAC_CSR1, 0x4);
+
+	// It isn't necessary to clear this space when not hard reset. 	
+	if (bHardReset == TRUE)
+	{
+		// clear all on-chip BEACON frame space			
+		for (apidx = 0; apidx < HW_BEACON_MAX_COUNT; apidx++)
+		{
+			for (i = 0; i < HW_BEACON_OFFSET>>2; i+=4)
+				RTMP_IO_WRITE32(pAd, pAd->BeaconOffset[apidx] + i, 0x00); 
+		}
+	}
+	
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+		// for rt2860E and after, init TXOP_CTRL_CFG with 0x583f. This is for extension channel overlapping IOT.
+		if ((pAd->MACVersion&0xffff) != 0x0101)
+			RTMP_IO_WRITE32(pAd, TXOP_CTRL_CFG, 0x583f);
+	}
+#endif // CONFIG_STA_SUPPORT //
+
+#ifdef RT30xx
+#ifdef NEW_FW
+	if (IS_RT3070(pAd) ||  IS_RT3572(pAd)||IS_RT3390(pAd)||IS_RT3090(pAd))
+	{
+		// send 0x36 mcu command after 0x72 for RT3xxx to fix Radio-Off current leakage issue
+		RTMPusecDelay(200);
+		if (pAd->buseEfuse)
+			AsicSendCommandToMcu(pAd, 0x36, 0xff, 0xff, 0);
+		else
+			AsicSendCommandToMcu(pAd, 0x36, 0xff, 0xff, 0x04);
+		RTMPusecDelay(10);
+	}
+#endif // NEW_FW //
+#endif // RT30xx //
+
+	DBGPRINT(RT_DEBUG_TRACE, ("<-- NICInitializeAsic\n"));
+	return NDIS_STATUS_SUCCESS;
+}
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Reset NIC Asics
+
+	Arguments:
+		Adapter						Pointer to our adapter
+
+	Return Value:
+		None
+
+	IRQL = PASSIVE_LEVEL
+
+	Note:
+		Reset NIC to initial state AS IS system boot up time.
+		
+	========================================================================
+*/
+VOID	NICIssueReset(
+	IN	PRTMP_ADAPTER	pAd)
+{
+	UINT32	Value = 0;
+	DBGPRINT(RT_DEBUG_TRACE, ("--> NICIssueReset\n"));
+
+	// Abort Tx, prevent ASIC from writing to Host memory
+	//RTMP_IO_WRITE32(pAd, TX_CNTL_CSR, 0x001f0000);
+	
+	// Disable Rx, register value supposed will remain after reset
+	RTMP_IO_READ32(pAd, MAC_SYS_CTRL, &Value);
+	Value &= (0xfffffff3);
+	RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, Value);
+
+	// Issue reset and clear from reset state
+	RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, 0x03); // 2004-09-17 change from 0x01
+	RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, 0x00);
+
+	DBGPRINT(RT_DEBUG_TRACE, ("<-- NICIssueReset\n"));
+}
+
+
+
+VOID NICUpdateFifoStaCounters(
+	IN PRTMP_ADAPTER pAd)
+{
+	TX_STA_FIFO_STRUC	StaFifo;
+	MAC_TABLE_ENTRY		*pEntry;
+	UINT32				i = 0;
+	UCHAR				pid = 0, wcid = 0;
+	INT32				reTry;
+	UCHAR				succMCS;
+
+#ifdef RALINK_ATE		
+	/* Nothing to do in ATE mode */
+	if (ATE_ON(pAd))
+		return;
+#endif // RALINK_ATE //
+
+		do
+		{
+			RTMP_IO_READ32(pAd, TX_STA_FIFO, &StaFifo.word);
+
+			if (StaFifo.field.bValid == 0)
+				break;
+		
+			wcid = (UCHAR)StaFifo.field.wcid;
+
+
+		/* ignore NoACK and MGMT frame use 0xFF as WCID */
+			if ((StaFifo.field.TxAckRequired == 0) || (wcid >= MAX_LEN_OF_MAC_TABLE))
+			{
+				i++;
+				continue;
+			}
+
+			/* PID store Tx MCS Rate */
+			pid = (UCHAR)StaFifo.field.PidType;
+
+			pEntry = &pAd->MacTab.Content[wcid];
+
+			pEntry->DebugFIFOCount++;
+
+#ifdef DOT11_N_SUPPORT
+			if (StaFifo.field.TxBF) // 3*3
+				pEntry->TxBFCount++;
+#endif // DOT11_N_SUPPORT //
+
+#ifdef UAPSD_AP_SUPPORT
+			UAPSD_SP_AUE_Handle(pAd, pEntry, StaFifo.field.TxSuccess);
+#endif // UAPSD_AP_SUPPORT //
+
+#ifdef CONFIG_STA_SUPPORT
+			if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS))
+				continue;
+#endif // CONFIG_STA_SUPPORT //
+
+			if (!StaFifo.field.TxSuccess)
+			{
+				pEntry->FIFOCount++;
+				pEntry->OneSecTxFailCount++;
+									
+				if (pEntry->FIFOCount >= 1)
+				{			
+					DBGPRINT(RT_DEBUG_TRACE, ("#"));
+#ifdef DOT11_N_SUPPORT
+					pEntry->NoBADataCountDown = 64;
+#endif // DOT11_N_SUPPORT //
+
+//#ifdef CONFIG_STA_SUPPORT
+//#ifdef DOT11Z_TDLS_SUPPORT
+//					IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+//					{
+//						if(IS_ENTRY_TDLS(pEntry))
+//							TDLS_LinkTearDown(pAd);
+//					}
+//#endif // DOT11Z_TDLS_SUPPORT //
+//#endif // CONFIG_STA_SUPPORT //
+
+					// Update the continuous transmission counter.
+					pEntry->ContinueTxFailCnt++;
+
+					if(pEntry->PsMode == PWR_ACTIVE)
+					{
+#ifdef DOT11_N_SUPPORT					
+						int tid;
+						for (tid=0; tid<NUM_OF_TID; tid++)
+						{
+							BAOriSessionTearDown(pAd, pEntry->Aid,  tid, FALSE, FALSE);
+						}
+#endif // DOT11_N_SUPPORT //
+
+
+#ifdef WDS_SUPPORT
+						// fix WDS Jam issue
+						if(IS_ENTRY_WDS(pEntry)
+							&& (pEntry->LockEntryTx == FALSE)
+							&& (pEntry->ContinueTxFailCnt >= pAd->ApCfg.EntryLifeCheck))
+						{ 
+							DBGPRINT(RT_DEBUG_TRACE, ("Entry %02x:%02x:%02x:%02x:%02x:%02x Blocked!! (Fail Cnt = %d)\n",
+								pEntry->Addr[0],pEntry->Addr[1],pEntry->Addr[2],pEntry->Addr[3],
+								pEntry->Addr[4],pEntry->Addr[5],pEntry->ContinueTxFailCnt ));
+
+							pEntry->LockEntryTx = TRUE;
+						}
+#endif // WDS_SUPPORT //
+					}
+
+					//pEntry->FIFOCount = 0;
+				}
+				//pEntry->bSendBAR = TRUE;
+			}
+			else
+			{
+#ifdef DOT11_N_SUPPORT
+				if ((pEntry->PsMode != PWR_SAVE) && (pEntry->NoBADataCountDown > 0))
+				{
+					pEntry->NoBADataCountDown--;
+					if (pEntry->NoBADataCountDown==0)
+					{
+						DBGPRINT(RT_DEBUG_TRACE, ("@\n"));
+					}
+				}
+#endif // DOT11_N_SUPPORT //
+				pEntry->FIFOCount = 0;
+				pEntry->OneSecTxNoRetryOkCount++;
+				// update NoDataIdleCount when sucessful send packet to STA.
+				pEntry->NoDataIdleCount = 0;
+				pEntry->ContinueTxFailCnt = 0;
+#ifdef WDS_SUPPORT
+				pEntry->LockEntryTx = FALSE;
+#endif // WDS_SUPPORT //
+			}
+
+			succMCS = StaFifo.field.SuccessRate & 0x7F;
+
+
+			reTry = pid - succMCS;
+
+			if (StaFifo.field.TxSuccess)
+			{
+				pEntry->TXMCSExpected[pid]++;
+				if (pid == succMCS)
+				{
+					pEntry->TXMCSSuccessful[pid]++;
+				}
+				else 
+				{
+					pEntry->TXMCSAutoFallBack[pid][succMCS]++;
+				}
+			}
+			else
+			{
+				pEntry->TXMCSFailed[pid]++;
+			}
+
+			if (reTry > 0)
+			{
+				if ((pid >= 12) && succMCS <=7)
+				{
+					reTry -= 4;
+				} 
+				pEntry->OneSecTxRetryOkCount += reTry;
+			}
+
+			i++;
+			// ASIC store 16 stack
+		} while ( i < (TX_RING_SIZE<<1) );
+
+}
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Read statistical counters from hardware registers and record them
+		in software variables for later on query
+
+	Arguments:
+		pAd					Pointer to our adapter
+
+	Return Value:
+		None
+
+	IRQL = DISPATCH_LEVEL
+	
+	========================================================================
+*/
+VOID NICUpdateRawCounters(
+	IN PRTMP_ADAPTER pAd)
+{
+	UINT32	OldValue;//, Value2;
+	//ULONG	PageSum, OneSecTransmitCount;
+	//ULONG	TxErrorRatio, Retry, Fail;
+	RX_STA_CNT0_STRUC	 RxStaCnt0;
+	RX_STA_CNT1_STRUC   RxStaCnt1;
+	RX_STA_CNT2_STRUC   RxStaCnt2;
+	TX_STA_CNT0_STRUC 	 TxStaCnt0;
+	TX_STA_CNT1_STRUC	 StaTx1;
+	TX_STA_CNT2_STRUC	 StaTx2;
+#ifdef STATS_COUNT_SUPPORT
+	TX_AGG_CNT_STRUC	TxAggCnt;
+	TX_AGG_CNT0_STRUC	TxAggCnt0;
+	TX_AGG_CNT1_STRUC	TxAggCnt1;
+	TX_AGG_CNT2_STRUC	TxAggCnt2;
+	TX_AGG_CNT3_STRUC	TxAggCnt3;
+	TX_AGG_CNT4_STRUC	TxAggCnt4;
+	TX_AGG_CNT5_STRUC	TxAggCnt5;
+	TX_AGG_CNT6_STRUC	TxAggCnt6;
+	TX_AGG_CNT7_STRUC	TxAggCnt7;
+#endif // STATS_COUNT_SUPPORT //
+	COUNTER_RALINK		*pRalinkCounters;
+
+
+	pRalinkCounters = &pAd->RalinkCounters;
+
+	RTMP_IO_READ32(pAd, RX_STA_CNT0, &RxStaCnt0.word);
+	RTMP_IO_READ32(pAd, RX_STA_CNT2, &RxStaCnt2.word);
+
+	{
+		RTMP_IO_READ32(pAd, RX_STA_CNT1, &RxStaCnt1.word);
+	    // Update RX PLCP error counter
+	    pAd->PrivateInfo.PhyRxErrCnt += RxStaCnt1.field.PlcpErr;
+		// Update False CCA counter
+		pAd->RalinkCounters.OneSecFalseCCACnt += RxStaCnt1.field.FalseCca;
+	}
+
+#ifdef STATS_COUNT_SUPPORT
+	// Update FCS counters
+	OldValue= pAd->WlanCounters.FCSErrorCount.u.LowPart;
+	pAd->WlanCounters.FCSErrorCount.u.LowPart += (RxStaCnt0.field.CrcErr); // >> 7);
+	if (pAd->WlanCounters.FCSErrorCount.u.LowPart < OldValue)
+		pAd->WlanCounters.FCSErrorCount.u.HighPart++;
+#endif // STATS_COUNT_SUPPORT //
+
+	// Add FCS error count to private counters
+	pRalinkCounters->OneSecRxFcsErrCnt += RxStaCnt0.field.CrcErr;
+	OldValue = pRalinkCounters->RealFcsErrCount.u.LowPart;
+	pRalinkCounters->RealFcsErrCount.u.LowPart += RxStaCnt0.field.CrcErr;
+	if (pRalinkCounters->RealFcsErrCount.u.LowPart < OldValue)
+		pRalinkCounters->RealFcsErrCount.u.HighPart++;
+
+	// Update Duplicate Rcv check
+	pRalinkCounters->DuplicateRcv += RxStaCnt2.field.RxDupliCount;
+#ifdef STATS_COUNT_SUPPORT
+	pAd->WlanCounters.FrameDuplicateCount.u.LowPart += RxStaCnt2.field.RxDupliCount;
+#endif // STATS_COUNT_SUPPORT //
+	// Update RX Overflow counter
+	pAd->Counters8023.RxNoBuffer += (RxStaCnt2.field.RxFifoOverflowCount);
+	
+	//pAd->RalinkCounters.RxCount = 0;
+
+	
+	//if (!OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_TX_RATE_SWITCH_ENABLED) || 
+	//	(OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_TX_RATE_SWITCH_ENABLED) && (pAd->MacTab.Size != 1)))
+	if (!pAd->bUpdateBcnCntDone)
+	{
+		// Update BEACON sent count
+		RTMP_IO_READ32(pAd, TX_STA_CNT0, &TxStaCnt0.word);
+		RTMP_IO_READ32(pAd, TX_STA_CNT1, &StaTx1.word);
+		RTMP_IO_READ32(pAd, TX_STA_CNT2, &StaTx2.word);
+		pRalinkCounters->OneSecBeaconSentCnt += TxStaCnt0.field.TxBeaconCount;
+		pRalinkCounters->OneSecTxRetryOkCount += StaTx1.field.TxRetransmit;
+		pRalinkCounters->OneSecTxNoRetryOkCount += StaTx1.field.TxSuccess;
+		pRalinkCounters->OneSecTxFailCount += TxStaCnt0.field.TxFailCount;
+
+#ifdef STATS_COUNT_SUPPORT
+		pAd->WlanCounters.TransmittedFragmentCount.u.LowPart += StaTx1.field.TxSuccess;
+		pAd->WlanCounters.RetryCount.u.LowPart += StaTx1.field.TxRetransmit;
+		pAd->WlanCounters.FailedCount.u.LowPart += TxStaCnt0.field.TxFailCount;
+#endif // STATS_COUNT_SUPPORT //
+	}
+
+
+	//if (pAd->bStaFifoTest == TRUE)
+#ifdef STATS_COUNT_SUPPORT
+	{
+		RTMP_IO_READ32(pAd, TX_AGG_CNT, &TxAggCnt.word);
+	RTMP_IO_READ32(pAd, TX_AGG_CNT0, &TxAggCnt0.word);
+	RTMP_IO_READ32(pAd, TX_AGG_CNT1, &TxAggCnt1.word);
+	RTMP_IO_READ32(pAd, TX_AGG_CNT2, &TxAggCnt2.word);
+	RTMP_IO_READ32(pAd, TX_AGG_CNT3, &TxAggCnt3.word);
+		RTMP_IO_READ32(pAd, TX_AGG_CNT4, &TxAggCnt4.word);
+		RTMP_IO_READ32(pAd, TX_AGG_CNT5, &TxAggCnt5.word);
+		RTMP_IO_READ32(pAd, TX_AGG_CNT6, &TxAggCnt6.word);
+		RTMP_IO_READ32(pAd, TX_AGG_CNT7, &TxAggCnt7.word);
+		pRalinkCounters->TxAggCount += TxAggCnt.field.AggTxCount;
+		pRalinkCounters->TxNonAggCount += TxAggCnt.field.NonAggTxCount;
+		pRalinkCounters->TxAgg1MPDUCount += TxAggCnt0.field.AggSize1Count;
+		pRalinkCounters->TxAgg2MPDUCount += TxAggCnt0.field.AggSize2Count;
+		
+		pRalinkCounters->TxAgg3MPDUCount += TxAggCnt1.field.AggSize3Count;
+		pRalinkCounters->TxAgg4MPDUCount += TxAggCnt1.field.AggSize4Count;
+		pRalinkCounters->TxAgg5MPDUCount += TxAggCnt2.field.AggSize5Count;
+		pRalinkCounters->TxAgg6MPDUCount += TxAggCnt2.field.AggSize6Count;
+	
+		pRalinkCounters->TxAgg7MPDUCount += TxAggCnt3.field.AggSize7Count;
+		pRalinkCounters->TxAgg8MPDUCount += TxAggCnt3.field.AggSize8Count;
+		pRalinkCounters->TxAgg9MPDUCount += TxAggCnt4.field.AggSize9Count;
+		pRalinkCounters->TxAgg10MPDUCount += TxAggCnt4.field.AggSize10Count;
+
+		pRalinkCounters->TxAgg11MPDUCount += TxAggCnt5.field.AggSize11Count;
+		pRalinkCounters->TxAgg12MPDUCount += TxAggCnt5.field.AggSize12Count;
+		pRalinkCounters->TxAgg13MPDUCount += TxAggCnt6.field.AggSize13Count;
+		pRalinkCounters->TxAgg14MPDUCount += TxAggCnt6.field.AggSize14Count;
+
+		pRalinkCounters->TxAgg15MPDUCount += TxAggCnt7.field.AggSize15Count;
+		pRalinkCounters->TxAgg16MPDUCount += TxAggCnt7.field.AggSize16Count;
+
+		// Calculate the transmitted A-MPDU count
+		pRalinkCounters->TransmittedAMPDUCount.u.LowPart += TxAggCnt0.field.AggSize1Count;
+		pRalinkCounters->TransmittedAMPDUCount.u.LowPart += (TxAggCnt0.field.AggSize2Count >> 1);
+
+		pRalinkCounters->TransmittedAMPDUCount.u.LowPart += (TxAggCnt1.field.AggSize3Count / 3);
+		pRalinkCounters->TransmittedAMPDUCount.u.LowPart += (TxAggCnt1.field.AggSize4Count >> 2);
+
+		pRalinkCounters->TransmittedAMPDUCount.u.LowPart += (TxAggCnt2.field.AggSize5Count / 5);
+		pRalinkCounters->TransmittedAMPDUCount.u.LowPart += (TxAggCnt2.field.AggSize6Count / 6);
+
+		pRalinkCounters->TransmittedAMPDUCount.u.LowPart += (TxAggCnt3.field.AggSize7Count / 7);
+		pRalinkCounters->TransmittedAMPDUCount.u.LowPart += (TxAggCnt3.field.AggSize8Count >> 3);
+
+		pRalinkCounters->TransmittedAMPDUCount.u.LowPart += (TxAggCnt4.field.AggSize9Count / 9);
+		pRalinkCounters->TransmittedAMPDUCount.u.LowPart += (TxAggCnt4.field.AggSize10Count / 10);
+
+		pRalinkCounters->TransmittedAMPDUCount.u.LowPart += (TxAggCnt5.field.AggSize11Count / 11);
+		pRalinkCounters->TransmittedAMPDUCount.u.LowPart += (TxAggCnt5.field.AggSize12Count / 12);
+
+		pRalinkCounters->TransmittedAMPDUCount.u.LowPart += (TxAggCnt6.field.AggSize13Count / 13);
+		pRalinkCounters->TransmittedAMPDUCount.u.LowPart += (TxAggCnt6.field.AggSize14Count / 14);
+
+		pRalinkCounters->TransmittedAMPDUCount.u.LowPart += (TxAggCnt7.field.AggSize15Count / 15);
+		pRalinkCounters->TransmittedAMPDUCount.u.LowPart += (TxAggCnt7.field.AggSize16Count >> 4);	
+	}
+#endif // STATS_COUNT_SUPPORT //			
+
+#ifdef DBG_DIAGNOSE
+	{
+		RtmpDiagStruct	*pDiag;
+		UCHAR			ArrayCurIdx, i;
+		
+		pDiag = &pAd->DiagStruct;
+		ArrayCurIdx = pDiag->ArrayCurIdx;
+		
+		if (pDiag->inited == 0)
+		{
+			NdisZeroMemory(pDiag, sizeof(struct _RtmpDiagStrcut_));
+			pDiag->ArrayStartIdx = pDiag->ArrayCurIdx = 0;
+			pDiag->inited = 1;
+		}
+		else
+		{
+			// Tx
+			pDiag->TxFailCnt[ArrayCurIdx] = TxStaCnt0.field.TxFailCount;
+			pDiag->TxAggCnt[ArrayCurIdx] = TxAggCnt.field.AggTxCount;
+			pDiag->TxNonAggCnt[ArrayCurIdx] = TxAggCnt.field.NonAggTxCount;
+
+			pDiag->TxAMPDUCnt[ArrayCurIdx][0] = TxAggCnt0.field.AggSize1Count;
+			pDiag->TxAMPDUCnt[ArrayCurIdx][1] = TxAggCnt0.field.AggSize2Count;
+			pDiag->TxAMPDUCnt[ArrayCurIdx][2] = TxAggCnt1.field.AggSize3Count;
+			pDiag->TxAMPDUCnt[ArrayCurIdx][3] = TxAggCnt1.field.AggSize4Count;
+			pDiag->TxAMPDUCnt[ArrayCurIdx][4] = TxAggCnt2.field.AggSize5Count;
+			pDiag->TxAMPDUCnt[ArrayCurIdx][5] = TxAggCnt2.field.AggSize6Count;
+			pDiag->TxAMPDUCnt[ArrayCurIdx][6] = TxAggCnt3.field.AggSize7Count;
+			pDiag->TxAMPDUCnt[ArrayCurIdx][7] = TxAggCnt3.field.AggSize8Count;
+			pDiag->TxAMPDUCnt[ArrayCurIdx][8] = TxAggCnt4.field.AggSize9Count;
+			pDiag->TxAMPDUCnt[ArrayCurIdx][9] = TxAggCnt4.field.AggSize10Count;
+			pDiag->TxAMPDUCnt[ArrayCurIdx][10] = TxAggCnt5.field.AggSize11Count;
+			pDiag->TxAMPDUCnt[ArrayCurIdx][11] = TxAggCnt5.field.AggSize12Count;
+			pDiag->TxAMPDUCnt[ArrayCurIdx][12] = TxAggCnt6.field.AggSize13Count;
+			pDiag->TxAMPDUCnt[ArrayCurIdx][13] = TxAggCnt6.field.AggSize14Count;
+			pDiag->TxAMPDUCnt[ArrayCurIdx][14] = TxAggCnt7.field.AggSize15Count;
+			pDiag->TxAMPDUCnt[ArrayCurIdx][15] = TxAggCnt7.field.AggSize16Count;
+
+			pDiag->RxCrcErrCnt[ArrayCurIdx] = RxStaCnt0.field.CrcErr;
+			
+			INC_RING_INDEX(pDiag->ArrayCurIdx,  DIAGNOSE_TIME);
+			ArrayCurIdx = pDiag->ArrayCurIdx;
+			for (i =0; i < 9; i++)
+			{
+				pDiag->TxDescCnt[ArrayCurIdx][i]= 0;
+				pDiag->TxSWQueCnt[ArrayCurIdx][i] =0;
+				pDiag->TxMcsCnt[ArrayCurIdx][i] = 0;
+				pDiag->RxMcsCnt[ArrayCurIdx][i] = 0;
+			}
+			pDiag->TxDataCnt[ArrayCurIdx] = 0;
+			pDiag->TxFailCnt[ArrayCurIdx] = 0;
+			pDiag->RxDataCnt[ArrayCurIdx] = 0;
+			pDiag->RxCrcErrCnt[ArrayCurIdx]  = 0;
+//			for (i = 9; i < 16; i++)
+			for (i = 9; i < 24; i++) // 3*3
+			{
+				pDiag->TxDescCnt[ArrayCurIdx][i] = 0;
+				pDiag->TxMcsCnt[ArrayCurIdx][i] = 0;
+				pDiag->RxMcsCnt[ArrayCurIdx][i] = 0;
+}
+
+			if (pDiag->ArrayCurIdx == pDiag->ArrayStartIdx)
+				INC_RING_INDEX(pDiag->ArrayStartIdx,  DIAGNOSE_TIME);
+		}
+		
+	}
+#endif // DBG_DIAGNOSE //
+
+
+}
+
+
+
+
+NDIS_STATUS NICLoadFirmware(
+	IN PRTMP_ADAPTER pAd)
+{
+	NDIS_STATUS	 status = NDIS_STATUS_SUCCESS;
+	if (pAd->chipOps.loadFirmware)
+		status = pAd->chipOps.loadFirmware(pAd);
+
+	return status;
+}
+
+
+/*
+	========================================================================
+	
+	Routine Description:
+		erase 8051 firmware image in MAC ASIC
+
+	Arguments:
+		Adapter						Pointer to our adapter
+
+	IRQL = PASSIVE_LEVEL
+		
+	========================================================================
+*/
+VOID NICEraseFirmware(
+	IN PRTMP_ADAPTER pAd)
+{
+	if (pAd->chipOps.eraseFirmware)
+		pAd->chipOps.eraseFirmware(pAd);
+	
+}/* End of NICEraseFirmware */
+
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Load Tx rate switching parameters
+
+	Arguments:
+		Adapter						Pointer to our adapter
+
+	Return Value:
+		NDIS_STATUS_SUCCESS         firmware image load ok
+		NDIS_STATUS_FAILURE         image not found
+
+	IRQL = PASSIVE_LEVEL
+
+	Rate Table Format:
+		1. (B0: Valid Item number) (B1:Initial item from zero)
+		2. Item Number(Dec)      Mode(Hex)     Current MCS(Dec)    TrainUp(Dec)    TrainDown(Dec)
+		
+	========================================================================
+*/
+NDIS_STATUS NICLoadRateSwitchingParams(
+	IN PRTMP_ADAPTER pAd)
+{
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Compare two memory block
+
+	Arguments:
+		pSrc1		Pointer to first memory address
+		pSrc2		Pointer to second memory address
+		
+	Return Value:
+		0:			memory is equal
+		1:			pSrc1 memory is larger
+		2:			pSrc2 memory is larger
+
+	IRQL = DISPATCH_LEVEL
+	
+	Note:
+		
+	========================================================================
+*/
+ULONG	RTMPCompareMemory(
+	IN	PVOID	pSrc1,
+	IN	PVOID	pSrc2,
+	IN	ULONG	Length)
+{
+	PUCHAR	pMem1;
+	PUCHAR	pMem2;
+	ULONG	Index = 0;
+
+	pMem1 = (PUCHAR) pSrc1;
+	pMem2 = (PUCHAR) pSrc2;
+
+	for (Index = 0; Index < Length; Index++)
+	{
+		if (pMem1[Index] > pMem2[Index])
+			return (1);
+		else if (pMem1[Index] < pMem2[Index])
+			return (2);
+	}
+
+	// Equal
+	return (0);
+}
+
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Zero out memory block
+
+	Arguments:
+		pSrc1		Pointer to memory address
+		Length		Size
+
+	Return Value:
+		None
+		
+	IRQL = PASSIVE_LEVEL
+	IRQL = DISPATCH_LEVEL
+	
+	Note:
+		
+	========================================================================
+*/
+VOID	RTMPZeroMemory(
+	IN	PVOID	pSrc,
+	IN	ULONG	Length)
+{
+	PUCHAR	pMem;
+	ULONG	Index = 0;
+
+	pMem = (PUCHAR) pSrc;
+
+	for (Index = 0; Index < Length; Index++)
+	{
+		pMem[Index] = 0x00;
+	}
+}
+
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Copy data from memory block 1 to memory block 2
+
+	Arguments:
+		pDest		Pointer to destination memory address
+		pSrc		Pointer to source memory address
+		Length		Copy size
+		
+	Return Value:
+		None
+
+	IRQL = PASSIVE_LEVEL
+	IRQL = DISPATCH_LEVEL
+	
+	Note:
+		
+	========================================================================
+*/
+VOID RTMPMoveMemory(
+	OUT	PVOID	pDest,
+	IN	PVOID	pSrc,
+	IN	ULONG	Length)
+{
+	PUCHAR	pMem1;
+	PUCHAR	pMem2;
+	UINT	Index;
+
+	ASSERT((Length==0) || (pDest && pSrc));
+
+	pMem1 = (PUCHAR) pDest;
+	pMem2 = (PUCHAR) pSrc;
+
+	for (Index = 0; Index < Length; Index++)
+	{
+		pMem1[Index] = pMem2[Index];
+	}
+}
+
+VOID UserCfgExit(	
+	IN RTMP_ADAPTER *pAd)
+{
+#ifdef DOT11_N_SUPPORT	
+	BATableExit(pAd);
+#endif // DOT11_N_SUPPORT //	
+	NdisFreeSpinLock(&pAd->MacTabLock);
+}
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Initialize port configuration structure
+
+	Arguments:
+		Adapter						Pointer to our adapter
+
+	Return Value:
+		None
+
+	IRQL = PASSIVE_LEVEL
+
+	Note:
+		
+	========================================================================
+*/
+VOID	UserCfgInit(
+	IN	PRTMP_ADAPTER pAd)
+{
+	UINT i;
+//	EDCA_PARM DefaultEdcaParm;
+    UINT key_index, bss_index;
+
+	DBGPRINT(RT_DEBUG_TRACE, ("--> UserCfgInit\n"));    
+	 
+
+	 
+	//
+	//  part I. intialize common configuration
+	//
+
+	for(key_index=0; key_index<SHARE_KEY_NUM; key_index++)
+	{
+		for(bss_index = 0; bss_index < MAX_MBSSID_NUM; bss_index++)
+		{
+			pAd->SharedKey[bss_index][key_index].KeyLen = 0;
+			pAd->SharedKey[bss_index][key_index].CipherAlg = CIPHER_NONE;
+		}
+	}
+
+	pAd->bLocalAdminMAC = FALSE;
+	pAd->EepromAccess = FALSE;
+	
+	pAd->Antenna.word = 0; 
+	pAd->CommonCfg.BBPCurrentBW = BW_20;
+
+	pAd->LedCntl.word = 0;
+#ifdef RTMP_MAC_PCI
+	pAd->LedIndicatorStrength = 0;
+#ifdef CONFIG_STA_SUPPORT
+	pAd->RLnkCtrlOffset = 0;
+	pAd->HostLnkCtrlOffset = 0;
+#endif // CONFIG_STA_SUPPORT //
+#endif // RTMP_MAC_PCI //
+
+	pAd->bAutoTxAgcA = FALSE;			// Default is OFF
+	pAd->bAutoTxAgcG = FALSE;			// Default is OFF
+	pAd->RfIcType = RFIC_2820;
+
+	// Init timer for reset complete event
+	pAd->CommonCfg.CentralChannel = 1;
+	pAd->bForcePrintTX = FALSE;
+	pAd->bForcePrintRX = FALSE;
+	pAd->bStaFifoTest = FALSE;
+	pAd->bProtectionTest = FALSE;
+	pAd->bHCCATest = FALSE;
+	pAd->bGenOneHCCA = FALSE;
+	pAd->CommonCfg.Dsifs = 10;      // in units of usec 
+	pAd->CommonCfg.TxPower = 100; //mW
+	pAd->CommonCfg.TxPowerPercentage = 0xffffffff; // AUTO
+	pAd->CommonCfg.TxPowerDefault = 0xffffffff; // AUTO
+	pAd->CommonCfg.TxPreamble = Rt802_11PreambleAuto; // use Long preamble on TX by defaut
+	pAd->CommonCfg.bUseZeroToDisableFragment = FALSE;
+	pAd->CommonCfg.RtsThreshold = 2347;
+	pAd->CommonCfg.FragmentThreshold = 2346;
+	pAd->CommonCfg.UseBGProtection = 0;    // 0: AUTO
+	pAd->CommonCfg.bEnableTxBurst = TRUE; //0;    	
+	pAd->CommonCfg.PhyMode = 0xff;     // unknown
+	pAd->CommonCfg.BandState = UNKNOWN_BAND;
+	pAd->CommonCfg.RadarDetect.CSPeriod = 10;
+	pAd->CommonCfg.RadarDetect.CSCount = 0;
+	pAd->CommonCfg.RadarDetect.RDMode = RD_NORMAL_MODE;
+	
+
+
+#ifdef TONE_RADAR_DETECT_SUPPORT
+#ifdef CARRIER_DETECTION_SUPPORT
+	pAd->CommonCfg.CarrierDetect.delta = CARRIER_DETECT_DELTA;
+	pAd->CommonCfg.CarrierDetect.div_flag = CARRIER_DETECT_DIV_FLAG;
+	pAd->CommonCfg.CarrierDetect.criteria = CARRIER_DETECT_CRITIRIA;
+	pAd->CommonCfg.CarrierDetect.threshold = CARRIER_DETECT_THRESHOLD;
+#endif // CARRIER_DETECTION_SUPPORT //
+#endif // TONE_RADAR_DETECT_SUPPORT //
+
+	pAd->CommonCfg.RadarDetect.ChMovingTime = 65;
+#ifdef MERGE_ARCH_TEAM
+	pAd->CommonCfg.RadarDetect.LongPulseRadarTh = 2;
+	pAd->CommonCfg.RadarDetect.AvgRssiReq = -75;
+#else // original rt28xx source code
+	pAd->CommonCfg.RadarDetect.LongPulseRadarTh = 3;
+#endif // MERGE_ARCH_TEAM //
+	pAd->CommonCfg.bAPSDCapable = FALSE;
+	pAd->CommonCfg.bNeedSendTriggerFrame = FALSE;
+	pAd->CommonCfg.TriggerTimerCount = 0;
+	pAd->CommonCfg.bAPSDForcePowerSave = FALSE;
+	pAd->CommonCfg.bCountryFlag = FALSE;
+	pAd->CommonCfg.TxStream = 0;
+	pAd->CommonCfg.RxStream = 0;
+
+	NdisZeroMemory(&pAd->BeaconTxWI, sizeof(pAd->BeaconTxWI));
+
+#ifdef DOT11_N_SUPPORT
+	NdisZeroMemory(&pAd->CommonCfg.HtCapability, sizeof(pAd->CommonCfg.HtCapability));
+	pAd->HTCEnable = FALSE;
+	pAd->bBroadComHT = FALSE;
+	pAd->CommonCfg.bRdg = FALSE;
+	
+#ifdef DOT11N_DRAFT3
+	pAd->CommonCfg.Dot11OBssScanPassiveDwell = dot11OBSSScanPassiveDwell;	// Unit : TU. 5~1000
+	pAd->CommonCfg.Dot11OBssScanActiveDwell = dot11OBSSScanActiveDwell;	// Unit : TU. 10~1000
+	pAd->CommonCfg.Dot11BssWidthTriggerScanInt = dot11BSSWidthTriggerScanInterval;	// Unit : Second	
+	pAd->CommonCfg.Dot11OBssScanPassiveTotalPerChannel = dot11OBSSScanPassiveTotalPerChannel;	// Unit : TU. 200~10000
+	pAd->CommonCfg.Dot11OBssScanActiveTotalPerChannel = dot11OBSSScanActiveTotalPerChannel;	// Unit : TU. 20~10000
+	pAd->CommonCfg.Dot11BssWidthChanTranDelayFactor = dot11BSSWidthChannelTransactionDelayFactor;
+	pAd->CommonCfg.Dot11OBssScanActivityThre = dot11BSSScanActivityThreshold;	// Unit : percentage
+	pAd->CommonCfg.Dot11BssWidthChanTranDelay = (pAd->CommonCfg.Dot11BssWidthTriggerScanInt * pAd->CommonCfg.Dot11BssWidthChanTranDelayFactor);
+
+	pAd->CommonCfg.bBssCoexEnable = TRUE; // by default, we enable this feature, you can disable it via the profile or ioctl command
+#endif  // DOT11N_DRAFT3 //
+
+	NdisZeroMemory(&pAd->CommonCfg.AddHTInfo, sizeof(pAd->CommonCfg.AddHTInfo));
+	pAd->CommonCfg.BACapability.field.MMPSmode = MMPS_ENABLE;
+	pAd->CommonCfg.BACapability.field.MpduDensity = 0;
+	pAd->CommonCfg.BACapability.field.Policy = IMMED_BA;
+	pAd->CommonCfg.BACapability.field.RxBAWinLimit = 64; //32;
+	pAd->CommonCfg.BACapability.field.TxBAWinLimit = 64; //32;
+	DBGPRINT(RT_DEBUG_TRACE, ("--> UserCfgInit. BACapability = 0x%x\n", pAd->CommonCfg.BACapability.word));    
+
+	pAd->CommonCfg.BACapability.field.AutoBA = FALSE;	
+	BATableInit(pAd, &pAd->BATable);
+
+	pAd->CommonCfg.bExtChannelSwitchAnnouncement = 1;
+	pAd->CommonCfg.bHTProtect = 1;
+	pAd->CommonCfg.bMIMOPSEnable = TRUE;
+#ifdef GREENAP_SUPPORT
+	pAd->ApCfg.bGreenAPEnable=FALSE;
+	pAd->ApCfg.bBlockAntDivforGreenAP = FALSE;
+	pAd->ApCfg.bGreenAPIsOn= FALSE;
+#endif // GREENAP_SUPPORT //
+	pAd->CommonCfg.bBADecline = FALSE;
+	pAd->CommonCfg.bDisableReordering = FALSE;
+
+	if (pAd->MACVersion == 0x28720200)
+	{
+		pAd->CommonCfg.TxBASize = 13; //by Jerry recommend
+	}else{
+		pAd->CommonCfg.TxBASize = 7;
+	}
+
+	pAd->CommonCfg.REGBACapability.word = pAd->CommonCfg.BACapability.word;
+#endif // DOT11_N_SUPPORT //
+
+	//pAd->CommonCfg.HTPhyMode.field.BW = BW_20;
+	//pAd->CommonCfg.HTPhyMode.field.MCS = MCS_AUTO;
+	//pAd->CommonCfg.HTPhyMode.field.ShortGI = GI_800;
+	//pAd->CommonCfg.HTPhyMode.field.STBC = STBC_NONE;
+	pAd->CommonCfg.TxRate = RATE_6;
+	
+	pAd->CommonCfg.MlmeTransmit.field.MCS = MCS_RATE_6;
+	pAd->CommonCfg.MlmeTransmit.field.BW = BW_20;
+	pAd->CommonCfg.MlmeTransmit.field.MODE = MODE_OFDM;
+
+	pAd->CommonCfg.BeaconPeriod = 100;     // in mSec
+
+
+#ifdef MCAST_RATE_SPECIFIC
+	pAd->CommonCfg.MCastPhyMode.word
+	= pAd->MacTab.Content[MCAST_WCID].HTPhyMode.word;
+#endif // MCAST_RATE_SPECIFIC //
+
+	//
+	// part II. intialize STA specific configuration
+	//
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+		RX_FILTER_SET_FLAG(pAd, fRX_FILTER_ACCEPT_DIRECT);
+		RX_FILTER_CLEAR_FLAG(pAd, fRX_FILTER_ACCEPT_MULTICAST);
+		RX_FILTER_SET_FLAG(pAd, fRX_FILTER_ACCEPT_BROADCAST);
+		RX_FILTER_SET_FLAG(pAd, fRX_FILTER_ACCEPT_ALL_MULTICAST);
+
+		pAd->StaCfg.Psm = PWR_ACTIVE;
+
+		pAd->StaCfg.OrigWepStatus = Ndis802_11EncryptionDisabled;
+		pAd->StaCfg.PairCipher = Ndis802_11EncryptionDisabled;
+		pAd->StaCfg.GroupCipher = Ndis802_11EncryptionDisabled;
+		pAd->StaCfg.bMixCipher = FALSE;	
+		pAd->StaCfg.DefaultKeyId = 0;
+
+		// 802.1x port control
+		pAd->StaCfg.PrivacyFilter = Ndis802_11PrivFilter8021xWEP;
+		pAd->StaCfg.PortSecured = WPA_802_1X_PORT_NOT_SECURED;
+		pAd->StaCfg.LastMicErrorTime = 0;
+		pAd->StaCfg.MicErrCnt        = 0;
+		pAd->StaCfg.bBlockAssoc      = FALSE;
+		pAd->StaCfg.WpaState         = SS_NOTUSE;
+
+		pAd->CommonCfg.NdisRadioStateOff = FALSE;		// New to support microsoft disable radio with OID command
+
+		pAd->StaCfg.RssiTrigger = 0;
+		NdisZeroMemory(&pAd->StaCfg.RssiSample, sizeof(RSSI_SAMPLE));
+		pAd->StaCfg.RssiTriggerMode = RSSI_TRIGGERED_UPON_BELOW_THRESHOLD;
+		pAd->StaCfg.AtimWin = 0;
+		pAd->StaCfg.DefaultListenCount = 3;//default listen count;
+		pAd->StaCfg.BssType = BSS_INFRA;  // BSS_INFRA or BSS_ADHOC or BSS_MONITOR
+		pAd->StaCfg.bScanReqIsFromWebUI = FALSE;
+		OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_DOZE);
+		OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_WAKEUP_NOW);
+
+		pAd->StaCfg.bAutoTxRateSwitch = TRUE;
+		pAd->StaCfg.DesiredTransmitSetting.field.MCS = MCS_AUTO;
+		pAd->StaCfg.bAutoConnectIfNoSSID = FALSE;
+	}
+
+#ifdef EXT_BUILD_CHANNEL_LIST
+	pAd->StaCfg.IEEE80211dClientMode = Rt802_11_D_None;
+#endif // EXT_BUILD_CHANNEL_LIST //
+
+#ifdef RTMP_MAC_PCI
+
+pAd->brt30xxBanMcuCmd = FALSE;
+pAd->StaCfg.PSControl.field.EnableNewPS=FALSE;
+
+#ifdef PCIE_PS_SUPPORT
+pAd->StaCfg.PSControl.field.EnableNewPS=TRUE;
+pAd->b3090ESpecialChip = FALSE;
+//The value of PowerMode could be 1 or 3. Level 3 could save more power than Level 1. 
+pAd->StaCfg.PSControl.field.rt30xxPowerMode=3;
+pAd->StaCfg.PSControl.field.rt30xxForceASPMTest=0;
+pAd->StaCfg.PSControl.field.rt30xxFollowHostASPM=1;
+#endif // PCIE_PS_SUPPORT //
+#endif // RTMP_MAC_PCI //
+#endif // CONFIG_STA_SUPPORT //
+
+	// global variables mXXXX used in MAC protocol state machines
+	OPSTATUS_SET_FLAG(pAd, fOP_STATUS_RECEIVE_DTIM);
+	OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_ADHOC_ON);
+	OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_INFRA_ON);
+
+	// PHY specification
+	pAd->CommonCfg.PhyMode = PHY_11BG_MIXED;		// default PHY mode
+	OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_SHORT_PREAMBLE_INUSED);  // CCK use LONG preamble
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+		// user desired power mode
+		pAd->StaCfg.WindowsPowerMode = Ndis802_11PowerModeCAM;
+		pAd->StaCfg.WindowsBatteryPowerMode = Ndis802_11PowerModeCAM;
+		pAd->StaCfg.bWindowsACCAMEnable = FALSE;
+
+		RTMPInitTimer(pAd, &pAd->StaCfg.StaQuickResponeForRateUpTimer, GET_TIMER_FUNCTION(StaQuickResponeForRateUpExec), pAd, FALSE);
+		pAd->StaCfg.StaQuickResponeForRateUpTimerRunning = FALSE;
+
+		// Patch for Ndtest
+		pAd->StaCfg.ScanCnt = 0;
+
+		pAd->StaCfg.bHwRadio  = TRUE; // Default Hardware Radio status is On
+		pAd->StaCfg.bSwRadio  = TRUE; // Default Software Radio status is On
+		pAd->StaCfg.bRadio    = TRUE; // bHwRadio && bSwRadio
+		pAd->StaCfg.bHardwareRadio = FALSE;		// Default is OFF
+		pAd->StaCfg.bShowHiddenSSID = FALSE;		// Default no show
+
+		// Nitro mode control
+		pAd->StaCfg.bAutoReconnect = TRUE;
+
+		// Save the init time as last scan time, the system should do scan after 2 seconds.
+		// This patch is for driver wake up from standby mode, system will do scan right away.
+		NdisGetSystemUpTime(&pAd->StaCfg.LastScanTime);
+		if (pAd->StaCfg.LastScanTime > 10 * OS_HZ)
+			pAd->StaCfg.LastScanTime -= (10 * OS_HZ);
+		
+		NdisZeroMemory(pAd->nickname, IW_ESSID_MAX_SIZE+1);
+		RTMPInitTimer(pAd, &pAd->StaCfg.WpaDisassocAndBlockAssocTimer, GET_TIMER_FUNCTION(WpaDisassocApAndBlockAssoc), pAd, FALSE);
+#ifdef WPA_SUPPLICANT_SUPPORT
+		pAd->StaCfg.IEEE8021X = FALSE;
+		pAd->StaCfg.IEEE8021x_required_keys = FALSE;
+		pAd->StaCfg.WpaSupplicantUP = WPA_SUPPLICANT_DISABLE;
+		pAd->StaCfg.bRSN_IE_FromWpaSupplicant = FALSE;
+#ifdef NATIVE_WPA_SUPPLICANT_SUPPORT
+		pAd->StaCfg.WpaSupplicantUP = WPA_SUPPLICANT_ENABLE;
+#endif // NATIVE_WPA_SUPPLICANT_SUPPORT //
+		pAd->StaCfg.bLostAp = FALSE;
+		pAd->StaCfg.pWpsProbeReqIe = NULL;
+		pAd->StaCfg.WpsProbeReqIeLen = 0;
+		pAd->StaCfg.pWpaAssocIe = NULL;
+		pAd->StaCfg.WpaAssocIeLen = 0;
+#endif // WPA_SUPPLICANT_SUPPORT //
+
+		NdisZeroMemory(pAd->StaCfg.ReplayCounter, 8);
+
+
+		pAd->StaCfg.bAutoConnectByBssid = FALSE;
+		pAd->StaCfg.BeaconLostTime = BEACON_LOST_TIME;
+		NdisZeroMemory(pAd->StaCfg.WpaPassPhrase, 64);    
+		pAd->StaCfg.WpaPassPhraseLen = 0;
+		pAd->StaCfg.bAutoRoaming = FALSE;
+		pAd->StaCfg.bForceTxBurst = FALSE;
+		pAd->StaCfg.bNotFirstScan = FALSE;
+#ifdef DOT11_N_SUPPORT
+		pAd->StaCfg.bAdhocN = TRUE;
+#endif // DOT11_N_SUPPORT //
+	}
+#endif // CONFIG_STA_SUPPORT //
+
+	// Default for extra information is not valid
+	pAd->ExtraInfo = EXTRA_INFO_CLEAR;
+	
+	// Default Config change flag
+	pAd->bConfigChanged = FALSE;
+
+	// 
+	// part III. AP configurations
+	//
+
+
+	//
+	// part IV. others
+	//
+	// dynamic BBP R66:sensibity tuning to overcome background noise
+	pAd->BbpTuning.bEnable                = TRUE;  
+	pAd->BbpTuning.FalseCcaLowerThreshold = 100;
+	pAd->BbpTuning.FalseCcaUpperThreshold = 512;
+	pAd->BbpTuning.R66Delta               = 4;
+	pAd->Mlme.bEnableAutoAntennaCheck = TRUE;
+	
+	//
+	// Also initial R66CurrentValue, RTUSBResumeMsduTransmission might use this value.
+	// if not initial this value, the default value will be 0.
+	//
+	pAd->BbpTuning.R66CurrentValue = 0x38;
+
+	pAd->Bbp94 = BBPR94_DEFAULT;
+	pAd->BbpForCCK = FALSE;
+	
+	// Default is FALSE for test bit 1
+	//pAd->bTest1 = FALSE;
+	
+	// initialize MAC table and allocate spin lock
+	NdisZeroMemory(&pAd->MacTab, sizeof(MAC_TABLE));
+	InitializeQueueHeader(&pAd->MacTab.McastPsQueue);
+	NdisAllocateSpinLock(&pAd->MacTabLock);
+
+	//RTMPInitTimer(pAd, &pAd->RECBATimer, RECBATimerTimeout, pAd, TRUE);
+	//RTMPSetTimer(&pAd->RECBATimer, REORDER_EXEC_INTV);
+
+#ifdef RALINK_ATE
+	NdisZeroMemory(&pAd->ate, sizeof(ATE_INFO));
+	pAd->ate.Mode = ATE_STOP;
+	pAd->ate.TxCount = 200;/* to exceed TX_RING_SIZE ... */
+	pAd->ate.TxDoneCount = 0;
+	pAd->ate.RFFreqOffset = 0;
+	pAd->ate.TxLength = 1024;
+	pAd->ate.TxWI.ShortGI = 0;// LONG GI : 800 ns
+	pAd->ate.TxWI.PHYMODE = MODE_CCK;
+	pAd->ate.TxWI.MCS = 3;
+	pAd->ate.TxWI.BW = BW_20;
+	/* please do not change this default channel value */
+	pAd->ate.Channel = 1;
+	/* This is supposed just for rt3062 now. */
+#ifdef RTMP_MAC_PCI 
+#ifdef RT35xx
+	{
+		USHORT value = 0;
+		EEPROM_TX_PWR_STRUC	    Power;
+		EEPROM_TX_PWR_STRUC	    Power2;
+
+		/* Read frequency offset setting from E2P for ATE */
+		RT28xx_EEPROM_READ16(pAd, EEPROM_FREQ_OFFSET, value);
+
+		if ((value & 0x00FF) != 0x00FF)
+			pAd->ate.RFFreqOffset = (UINT32) (value & 0x00FF);
+		else
+			pAd->ate.RFFreqOffset = 0;
+
+		RT28xx_EEPROM_READ16(pAd, EEPROM_G_TX_PWR_OFFSET, Power.word);
+		RT28xx_EEPROM_READ16(pAd, EEPROM_G_TX2_PWR_OFFSET, Power2.word);
+
+		if ((Power.field.Byte1 > 31) || (Power.field.Byte1 < 0))
+			pAd->ate.TxPower0 = DEFAULT_RF_TX_POWER;
+		else
+			pAd->ate.TxPower0 = Power.field.Byte1;
+
+		if ((Power2.field.Byte1 > 31) || (Power2.field.Byte1 < 0))
+			pAd->ate.TxPower1 = DEFAULT_RF_TX_POWER;
+		else
+			pAd->ate.TxPower1 = Power2.field.Byte1;				
+	}
+#endif // RT35xx //
+#endif // RTMP_MAC_PCI //
+	pAd->ate.QID = QID_AC_BE;
+
+#if defined (RT2883) || defined (RT3883)
+	/* For stream mode in 3T/3R ++ */
+	/* use broadcast address as default value */
+	pAd->ate.Addr1[0] = 0xFF;
+	pAd->ate.Addr1[1] = 0xFF;
+	pAd->ate.Addr1[2] = 0xFF;
+	pAd->ate.Addr1[3] = 0xFF;
+	pAd->ate.Addr1[4] = 0xFF;
+	pAd->ate.Addr1[5] = 0xFF;
+	/* For stream mode in 3T/3R -- */
+
+	pAd->ate.Addr2[0] = 0x00;
+	pAd->ate.Addr2[1] = 0x11;
+	pAd->ate.Addr2[2] = 0x22;
+	pAd->ate.Addr2[3] = 0xAA;
+	pAd->ate.Addr2[4] = 0xBB;
+	pAd->ate.Addr2[5] = 0xCC;
+
+	NdisMoveMemory(pAd->ate.Addr3, pAd->ate.Addr2, ETH_LENGTH_OF_ADDRESS);
+#else
+	pAd->ate.Addr1[0] = 0x00;
+	pAd->ate.Addr1[1] = 0x11;
+	pAd->ate.Addr1[2] = 0x22;
+	pAd->ate.Addr1[3] = 0xAA;
+	pAd->ate.Addr1[4] = 0xBB;
+	pAd->ate.Addr1[5] = 0xCC;
+
+	NdisMoveMemory(pAd->ate.Addr2, pAd->ate.Addr1, ETH_LENGTH_OF_ADDRESS);
+	NdisMoveMemory(pAd->ate.Addr3, pAd->ate.Addr1, ETH_LENGTH_OF_ADDRESS);
+#endif // defined (RT2883) || defined (RT3883) //
+
+
+	pAd->ate.bRxFER = 0;
+	pAd->ate.bQATxStart = FALSE;
+	pAd->ate.bQARxStart = FALSE;
+
+#ifdef RTMP_MAC_PCI 
+	pAd->ate.bFWLoading = FALSE;
+#endif // RTMP_MAC_PCI //
+
+
+#ifdef RALINK_28xx_QA
+	pAd->ate.TxStatus = 0;
+	pAd->ate.AtePid = THREAD_PID_INIT_VALUE;
+#endif // RALINK_28xx_QA //
+#endif // RALINK_ATE //
+
+
+	pAd->CommonCfg.bWiFiTest = FALSE;
+#ifdef RTMP_MAC_PCI
+    pAd->bPCIclkOff = FALSE;
+#endif // RTMP_MAC_PCI //
+
+#ifdef CONFIG_STA_SUPPORT
+#ifdef PCIE_PS_SUPPORT
+
+	RTMP_SET_PSFLAG(pAd, fRTMP_PS_CAN_GO_SLEEP);
+#endif // PCIE_PS_SUPPORT //
+#endif // CONFIG_STA_SUPPORT //
+
+#ifdef CONFIG_STA_SUPPORT
+	RTMP_SET_PSFLAG(pAd, fRTMP_PS_CAN_GO_SLEEP);
+#endif // CONFIG_STA_SUPPORT //
+
+	for (i = 0; i < MAX_LEN_OF_BSS_TABLE; i++) 
+	{
+		PBSS_ENTRY	pBssEntry = &pAd->ScanTab.BssEntry[i];
+		
+		if (pAd->ProbeRespIE[i].pIe)
+			pBssEntry->pVarIeFromProbRsp = pAd->ProbeRespIE[i].pIe;
+		else
+			pBssEntry->pVarIeFromProbRsp = NULL;
+	}
+	
+	DBGPRINT(RT_DEBUG_TRACE, ("<-- UserCfgInit\n"));
+}
+
+// IRQL = PASSIVE_LEVEL
+UCHAR BtoH(STRING ch)
+{
+	if (ch >= '0' && ch <= '9') return (ch - '0');        // Handle numerals
+	if (ch >= 'A' && ch <= 'F') return (ch - 'A' + 0xA);  // Handle capitol hex digits
+	if (ch >= 'a' && ch <= 'f') return (ch - 'a' + 0xA);  // Handle small hex digits
+	return(255);
+}
+
+//
+//  FUNCTION: AtoH(char *, UCHAR *, int)
+//
+//  PURPOSE:  Converts ascii string to network order hex
+//
+//  PARAMETERS:
+//    src    - pointer to input ascii string
+//    dest   - pointer to output hex
+//    destlen - size of dest
+//
+//  COMMENTS:
+//
+//    2 ascii bytes make a hex byte so must put 1st ascii byte of pair
+//    into upper nibble and 2nd ascii byte of pair into lower nibble.
+//
+// IRQL = PASSIVE_LEVEL
+
+void AtoH(PSTRING src, PUCHAR dest, int destlen)
+{
+	PSTRING srcptr;
+	PUCHAR destTemp;
+
+	srcptr = src;	
+	destTemp = (PUCHAR) dest; 
+
+	while(destlen--)
+	{
+		*destTemp = BtoH(*srcptr++) << 4;    // Put 1st ascii byte in upper nibble.
+		*destTemp += BtoH(*srcptr++);      // Add 2nd ascii byte to above.
+		destTemp++;
+	}
+}
+
+
+//+++Mark by shiang, not use now, need to remove after confirm
+//---Mark by shiang, not use now, need to remove after confirm
+
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Init timer objects
+
+	Arguments:
+		pAd			Pointer to our adapter
+		pTimer				Timer structure
+		pTimerFunc			Function to execute when timer expired
+		Repeat				Ture for period timer
+
+	Return Value:
+		None
+
+	Note:
+		
+	========================================================================
+*/
+VOID	RTMPInitTimer(
+	IN	PRTMP_ADAPTER			pAd,
+	IN	PRALINK_TIMER_STRUCT	pTimer,
+	IN	PVOID					pTimerFunc,
+	IN	PVOID					pData,
+	IN	BOOLEAN					Repeat)
+{
+	//
+	// Set Valid to TRUE for later used.
+	// It will crash if we cancel a timer or set a timer 
+	// that we haven't initialize before.
+	// 
+	pTimer->Valid      = TRUE;
+	
+	pTimer->PeriodicType = Repeat;
+	pTimer->State      = FALSE;
+	pTimer->cookie = (ULONG) pData;
+	pTimer->pAd = pAd;
+
+	RTMP_OS_Init_Timer(pAd, &pTimer->TimerObj,	pTimerFunc, (PVOID) pTimer);	
+}
+
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Init timer objects
+
+	Arguments:
+		pTimer				Timer structure
+		Value				Timer value in milliseconds
+
+	Return Value:
+		None
+
+	Note:
+		To use this routine, must call RTMPInitTimer before.
+		
+	========================================================================
+*/
+VOID	RTMPSetTimer(
+	IN	PRALINK_TIMER_STRUCT	pTimer,
+	IN	ULONG					Value)
+{
+	if (pTimer->Valid)
+	{
+		RTMP_ADAPTER *pAd;
+		
+		pAd = (RTMP_ADAPTER *)pTimer->pAd;
+		if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_HALT_IN_PROGRESS | fRTMP_ADAPTER_NIC_NOT_EXIST))
+		{
+			DBGPRINT_ERR(("RTMPSetTimer failed, Halt in Progress!\n"));
+			return;
+		}
+		
+		pTimer->TimerValue = Value;
+		pTimer->State      = FALSE;
+		if (pTimer->PeriodicType == TRUE)
+		{
+			pTimer->Repeat = TRUE;
+			RTMP_SetPeriodicTimer(&pTimer->TimerObj, Value);
+		}
+		else
+		{
+			pTimer->Repeat = FALSE;
+			RTMP_OS_Add_Timer(&pTimer->TimerObj, Value);
+		}
+	}
+	else
+	{
+		DBGPRINT_ERR(("RTMPSetTimer failed, Timer hasn't been initialize!\n"));
+	}
+}
+
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Init timer objects
+
+	Arguments:
+		pTimer				Timer structure
+		Value				Timer value in milliseconds
+
+	Return Value:
+		None
+
+	Note:
+		To use this routine, must call RTMPInitTimer before.
+		
+	========================================================================
+*/
+VOID	RTMPModTimer(
+	IN	PRALINK_TIMER_STRUCT	pTimer,
+	IN	ULONG					Value)
+{
+	BOOLEAN	Cancel;
+
+	if (pTimer->Valid)
+	{
+		pTimer->TimerValue = Value;
+		pTimer->State      = FALSE;
+		if (pTimer->PeriodicType == TRUE)
+		{
+			RTMPCancelTimer(pTimer, &Cancel);
+			RTMPSetTimer(pTimer, Value);
+		}
+		else
+		{
+			RTMP_OS_Mod_Timer(&pTimer->TimerObj, Value);
+		}
+	}
+	else
+	{
+		DBGPRINT_ERR(("RTMPModTimer failed, Timer hasn't been initialize!\n"));
+	}
+}
+
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Cancel timer objects
+
+	Arguments:
+		Adapter						Pointer to our adapter
+
+	Return Value:
+		None
+
+	IRQL = PASSIVE_LEVEL
+	IRQL = DISPATCH_LEVEL
+	
+	Note:
+		1.) To use this routine, must call RTMPInitTimer before.
+		2.) Reset NIC to initial state AS IS system boot up time.
+		
+	========================================================================
+*/
+VOID	RTMPCancelTimer(
+	IN	PRALINK_TIMER_STRUCT	pTimer,
+	OUT	BOOLEAN					*pCancelled)
+{
+	if (pTimer->Valid)
+	{
+		if (pTimer->State == FALSE)
+			pTimer->Repeat = FALSE;
+		
+		RTMP_OS_Del_Timer(&pTimer->TimerObj, pCancelled);
+		
+		if (*pCancelled == TRUE)
+			pTimer->State = TRUE;
+
+#ifdef RTMP_TIMER_TASK_SUPPORT
+		// We need to go-through the TimerQ to findout this timer handler and remove it if 
+		//		it's still waiting for execution.
+		RtmpTimerQRemove(pTimer->pAd, pTimer);
+#endif // RTMP_TIMER_TASK_SUPPORT //
+	}
+	else
+	{
+		DBGPRINT_ERR(("RTMPCancelTimer failed, Timer hasn't been initialize!\n"));
+	}
+}
+
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Set LED Status
+
+	Arguments:
+		pAd						Pointer to our adapter
+		Status					LED Status
+
+	Return Value:
+		None
+
+	IRQL = PASSIVE_LEVEL
+	IRQL = DISPATCH_LEVEL
+	
+	Note:
+		
+	========================================================================
+*/
+VOID RTMPSetLED(
+	IN PRTMP_ADAPTER 	pAd, 
+	IN UCHAR			Status)
+{
+	//ULONG			data;
+	UCHAR			HighByte = 0;
+	UCHAR			LowByte;
+	BOOLEAN 		bIgnored = FALSE;
+	BOOLEAN			FlgCmdSend = FALSE;
+
+#ifdef RALINK_ATE
+	/*
+		In ATE mode of RT2860 AP/STA, we have erased 8051 firmware.
+		So LED mode is not supported when ATE is running.
+	*/
+	if (!IS_RT3572(pAd))
+	{
+		if (ATE_ON(pAd))
+			return;
+	}
+#endif // RALINK_ATE //
+
+	LowByte = pAd->LedCntl.field.LedMode&0x7f;
+	switch (Status)
+	{
+		case LED_LINK_DOWN:
+			HighByte = 0x20;
+			pAd->LedIndicatorStrength = 0; 
+			FlgCmdSend = TRUE;
+			break;
+		case LED_LINK_UP:
+			if (pAd->CommonCfg.Channel > 14)
+				HighByte = 0xa0;
+			else
+				HighByte = 0x60;
+			FlgCmdSend = TRUE;
+			break;
+		case LED_RADIO_ON:
+			HighByte = 0x20;
+			FlgCmdSend = TRUE;
+			break;
+		case LED_HALT: 
+			LowByte = 0; // Driver sets MAC register and MAC controls LED
+		case LED_RADIO_OFF:
+			HighByte = 0;
+			FlgCmdSend = TRUE;
+			break;
+		case LED_WPS:
+			HighByte = 0x10;
+			FlgCmdSend = TRUE;
+			break;
+		case LED_ON_SITE_SURVEY:
+			HighByte = 0x08;
+			FlgCmdSend = TRUE;
+			break;
+		case LED_POWER_UP:
+			HighByte = 0x04;
+			FlgCmdSend = TRUE;
+			break;
+#ifdef RALINK_ATE
+#ifdef RT35xx
+		case LED_HW_CONTROL:
+			LowByte = 0;
+			HighByte = 0;
+			FlgCmdSend = TRUE;
+			break;	
+#endif // RT35xx //
+#endif // RALINK_ATE //
+		default:
+			DBGPRINT(RT_DEBUG_WARN, ("RTMPSetLED::Unknown Status %d\n", Status));
+			break;
+	}
+
+	if (FlgCmdSend == TRUE)
+	{
+		/* command here so we can reduce code size */
+		AsicSendCommandToMcu(pAd, 0x50, 0xff, LowByte, HighByte);
+	}
+
+    //
+	// Keep LED status for LED SiteSurvey mode.
+	// After SiteSurvey, we will set the LED mode to previous status.
+	//
+	if ((Status != LED_ON_SITE_SURVEY) && (Status != LED_POWER_UP) && (bIgnored == FALSE))
+		pAd->LedStatus = Status;
+    
+	DBGPRINT(RT_DEBUG_TRACE, ("RTMPSetLED::Mode=%d,HighByte=0x%02x,LowByte=0x%02x\n", pAd->LedCntl.field.LedMode, HighByte, LowByte));
+}
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Set LED Signal Stregth 
+
+	Arguments:
+		pAd						Pointer to our adapter
+		Dbm						Signal Stregth
+
+	Return Value:
+		None
+
+	IRQL = PASSIVE_LEVEL
+	
+	Note:
+		Can be run on any IRQL level. 
+
+		According to Microsoft Zero Config Wireless Signal Stregth definition as belows.
+		<= -90  No Signal
+		<= -81  Very Low
+		<= -71  Low
+		<= -67  Good
+		<= -57  Very Good
+		 > -57  Excellent		
+	========================================================================
+*/
+VOID RTMPSetSignalLED(
+	IN PRTMP_ADAPTER 	pAd, 
+	IN NDIS_802_11_RSSI Dbm)
+{
+	UCHAR		nLed = 0;
+
+	if (pAd->LedCntl.field.LedMode == LED_MODE_SIGNAL_STREGTH)
+	{
+	if (Dbm <= -90)
+		nLed = 0;
+	else if (Dbm <= -81)
+		nLed = 1;
+	else if (Dbm <= -71)
+		nLed = 3;
+	else if (Dbm <= -67)
+		nLed = 7;
+	else if (Dbm <= -57)
+		nLed = 15;
+	else 
+		nLed = 31;
+
+	//
+	// Update Signal Stregth to firmware if changed.
+	//
+	if (pAd->LedIndicatorStrength != nLed)
+	{
+		AsicSendCommandToMcu(pAd, 0x51, 0xff, nLed, pAd->LedCntl.field.Polarity);
+		pAd->LedIndicatorStrength = nLed;
+	}
+}
+}
+
+
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Enable RX 
+
+	Arguments:
+		pAd						Pointer to our adapter
+
+	Return Value:
+		None
+
+	IRQL <= DISPATCH_LEVEL
+	
+	Note:
+		Before Enable RX, make sure you have enabled Interrupt.
+	========================================================================
+*/
+VOID RTMPEnableRxTx(
+	IN PRTMP_ADAPTER	pAd)
+{
+//	WPDMA_GLO_CFG_STRUC	GloCfg;
+//	ULONG	i = 0;
+	UINT32 rx_filter_flag;
+
+	DBGPRINT(RT_DEBUG_TRACE, ("==> RTMPEnableRxTx\n"));
+
+	// Enable Rx DMA.
+	RT28XXDMAEnable(pAd);
+
+	// enable RX of MAC block
+	if (pAd->OpMode == OPMODE_AP)
+	{
+		rx_filter_flag = APNORMAL;
+
+
+		RTMP_IO_WRITE32(pAd, RX_FILTR_CFG, rx_filter_flag);     // enable RX of DMA block
+	}
+#ifdef CONFIG_STA_SUPPORT
+	else
+	{
+#ifdef XLINK_SUPPORT
+		if (pAd->StaCfg.PSPXlink)
+			rx_filter_flag = PSPXLINK;
+		else
+#endif // XLINK_SUPPORT //	
+			rx_filter_flag = STANORMAL;     // Staion not drop control frame will fail WiFi Certification.
+		RTMP_IO_WRITE32(pAd, RX_FILTR_CFG, rx_filter_flag);
+	}
+#endif // CONFIG_STA_SUPPORT //
+	
+	RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, 0xc);
+	DBGPRINT(RT_DEBUG_TRACE, ("<== RTMPEnableRxTx\n"));	
+}
+
+
+//+++Add by shiang, move from os/linux/rt_main_dev.c
+void CfgInitHook(PRTMP_ADAPTER pAd)
+{
+	//pAd->bBroadComHT = TRUE;
+}
+
+//---Add by shiang, move from os/linux/rt_main_dev.c
+
+
+static INT RtmpChipOpsRegister(
+	IN RTMP_ADAPTER *pAd,
+	IN INT			infType)
+{
+	RTMP_CHIP_OP	*pChipOps = &pAd->chipOps;
+	int status;
+	
+	memset(pChipOps, 0, sizeof(RTMP_CHIP_OP));
+
+	/* set eeprom related hook functions */
+	status = RtmpChipOpsEepromHook(pAd, infType);
+
+	/* set mcu related hook functions */
+	switch(infType)
+	{
+#ifdef RTMP_PCI_SUPPORT
+		case RTMP_DEV_INF_PCI:
+		case RTMP_DEV_INF_PCIE:
+			pChipOps->loadFirmware = RtmpAsicLoadFirmware;
+			pChipOps->eraseFirmware = RtmpAsicEraseFirmware;
+			pChipOps->sendCommandToMcu = RtmpAsicSendCommandToMcu;
+			break;
+#endif // RTMP_PCI_SUPPORT //
+
+
+		default:
+			break;
+	}
+
+	return status;
+}
+
+
+INT RtmpRaDevCtrlInit(
+	IN RTMP_ADAPTER *pAd, 
+	IN RTMP_INF_TYPE infType)
+{
+	//VOID	*handle;
+
+	// Assign the interface type. We need use it when do register/EEPROM access.
+	pAd->infType = infType;
+
+	
+#ifdef CONFIG_STA_SUPPORT
+	pAd->OpMode = OPMODE_STA;
+	DBGPRINT(RT_DEBUG_TRACE, ("STA Driver version-%s\n", STA_DRIVER_VERSION));
+#endif // CONFIG_STA_SUPPORT //
+
+
+
+	RtmpChipOpsRegister(pAd, infType);
+
+#ifdef MULTIPLE_CARD_SUPPORT
+{
+	extern BOOLEAN RTMP_CardInfoRead(PRTMP_ADAPTER pAd);
+
+	// find its profile path
+	pAd->MC_RowID = -1; // use default profile path
+	RTMP_CardInfoRead(pAd);
+
+	if (pAd->MC_RowID == -1)
+#ifdef CONFIG_STA_SUPPORT
+		strcpy(pAd->MC_FileName, STA_PROFILE_PATH);
+#endif // CONFIG_STA_SUPPORT //
+
+	DBGPRINT(RT_DEBUG_TRACE, ("MC> ROW = %d, PATH = %s\n", pAd->MC_RowID, pAd->MC_FileName));
+}
+#endif // MULTIPLE_CARD_SUPPORT //
+
+	return 0;
+}
+
+
+BOOLEAN RtmpRaDevCtrlExit(IN RTMP_ADAPTER *pAd)
+{
+	INT index;
+	
+#ifdef MULTIPLE_CARD_SUPPORT
+extern UINT8  MC_CardUsed[MAX_NUM_OF_MULTIPLE_CARD];
+
+	if ((pAd->MC_RowID >= 0) && (pAd->MC_RowID <= MAX_NUM_OF_MULTIPLE_CARD))
+		MC_CardUsed[pAd->MC_RowID] = 0; // not clear MAC address
+#endif // MULTIPLE_CARD_SUPPORT //
+
+
+	/*
+		Free ProbeRespIE Table
+	*/
+	for (index = 0; index < MAX_LEN_OF_BSS_TABLE; index++) 
+	{
+		if (pAd->ProbeRespIE[index].pIe)
+			os_free_mem(pAd, pAd->ProbeRespIE[index].pIe);
+	}
+
+	RTMPFreeAdapter(pAd);
+
+	return TRUE;
+}
+
+
+
+
+
+
+#ifdef VENDOR_FEATURE3_SUPPORT
+VOID RTMP_IO_WRITE32(
+	PRTMP_ADAPTER pAd,
+	UINT32 Offset,
+	UINT32 Value)
+{
+    if (pAd->bPCIclkOff == FALSE)
+    {
+		UINT Val;
+
+		Val = readl((void *)(pAd->CSRBaseAddress + MAC_CSR0));
+#if defined(INF_TWINPASS) || defined(INF_DANUBE) || defined(INF_AR9) || defined(IKANOS_VX_1X0)
+		Val = SWAP32(Value);
+#else
+		Val = Value;
+#endif
+		writel(Val, (void *)(pAd->CSRBaseAddress + Offset));
+    }
+}
+
+VOID RTMP_BBP_IO_READ8_BY_REG_ID(
+	PRTMP_ADAPTER pAd,
+	UINT32 Offset,
+	UINT8 *pValue)
+{
+	if (pAd->bPCIclkOff == FALSE)
+	{
+		if (pAd->infType == RTMP_DEV_INF_RBUS)
+			RTMP_BBP_IO_READ8(pAd, Offset, pValue, FALSE);
+		else
+			if (IS_SUPPORT_PCIE_PS_L3(pAd))
+				RTMP_PCIE_PS_L3_BBP_IO_READ8(pAd, Offset, pValue, TRUE);
+			else
+				RTMP_BBP_IO_READ8(pAd, Offset, pValue, TRUE);
+	}
+}
+
+VOID RTMP_BBP_IO_READ8(
+	PRTMP_ADAPTER pAd,
+	UCHAR Offset,
+	UINT8 *pValue,
+	BOOLEAN FlgValidMCR)
+{
+	BBP_CSR_CFG_STRUC  BbpCsr;
+	int   busyCnt, secCnt, regID;
+
+	regID = ((FlgValidMCR) == TRUE ? H2M_BBP_AGENT : BBP_CSR_CFG);
+	for (busyCnt=0; busyCnt<MAX_BUSY_COUNT; busyCnt++)
+	{
+		RTMP_IO_READ32(pAd, regID, &BbpCsr.word);
+		if (BbpCsr.field.Busy == BUSY)
+			continue;
+		BbpCsr.word = 0;
+		BbpCsr.field.fRead = 1;
+		BbpCsr.field.BBP_RW_MODE = 1;
+		BbpCsr.field.Busy = 1;
+		BbpCsr.field.RegNum = Offset;
+		RTMP_IO_WRITE32(pAd, regID, BbpCsr.word);
+		if ((FlgValidMCR) == TRUE)
+		{
+			AsicSendCommandToMcu(pAd, 0x80, 0xff, 0x0, 0x0);
+			RTMPusecDelay(1000);
+		}
+		for (secCnt=0; secCnt<MAX_BUSY_COUNT; secCnt++)
+		{
+			RTMP_IO_READ32(pAd, regID, &BbpCsr.word);
+			if (BbpCsr.field.Busy == IDLE)
+				break;
+		}
+		if ((BbpCsr.field.Busy == IDLE) &&
+			(BbpCsr.field.RegNum == Offset))
+		{
+			*(pValue) = (UCHAR)BbpCsr.field.Value;
+			break;
+		}
+	}
+	if (BbpCsr.field.Busy == BUSY)
+	{
+		DBGPRINT_ERR(("BBP(viaMCU=%d) read R%d fail\n", (FlgValidMCR), Offset));
+		*(pValue) = (pAd)->BbpWriteLatch[Offset];
+		if ((FlgValidMCR) == TRUE)
+		{
+			RTMP_IO_READ32(pAd, regID, &BbpCsr.word);
+			BbpCsr.field.Busy = 0;
+			RTMP_IO_WRITE32(pAd, regID, BbpCsr.word);
+		}
+	}
+}
+
+VOID RTMP_BBP_IO_WRITE8_BY_REG_ID(
+	PRTMP_ADAPTER pAd,
+	UINT32 Offset,
+	UINT8 Value)
+{
+	if ((pAd)->bPCIclkOff == FALSE)
+	{
+		if ((pAd)->infType == RTMP_DEV_INF_RBUS)
+			RTMP_BBP_IO_WRITE8((pAd), Offset, Value, FALSE);
+		else
+			if (IS_SUPPORT_PCIE_PS_L3((pAd)))
+				RTMP_PCIE_PS_L3_BBP_IO_WRITE8((pAd), Offset, Value, TRUE);
+			else
+				RTMP_BBP_IO_WRITE8((pAd), Offset, Value, TRUE);
+	}
+}
+
+VOID RTMP_BBP_IO_WRITE8(
+	PRTMP_ADAPTER pAd,
+	UCHAR Offset,
+	UINT8 Value,
+	BOOLEAN FlgValidMCR)
+{
+	BBP_CSR_CFG_STRUC  BbpCsr;
+	int busyCnt=0, regID;
+
+	regID = ((FlgValidMCR) == TRUE ? H2M_BBP_AGENT : BBP_CSR_CFG);
+	for (busyCnt=0; busyCnt<MAX_BUSY_COUNT; busyCnt++)
+	{
+		RTMP_IO_READ32((pAd), regID, &BbpCsr.word);
+		if (BbpCsr.field.Busy == BUSY)
+			continue;
+		BbpCsr.word = 0;
+		BbpCsr.field.fRead = 0;
+		BbpCsr.field.BBP_RW_MODE = 1;
+		BbpCsr.field.Busy = 1;
+		BbpCsr.field.Value = Value;
+		BbpCsr.field.RegNum = Offset;
+		RTMP_IO_WRITE32((pAd), regID, BbpCsr.word);
+		if ((FlgValidMCR) == TRUE)
+		{
+			AsicSendCommandToMcu(pAd, 0x80, 0xff, 0x0, 0x0);
+			if ((pAd)->OpMode == OPMODE_AP)
+				RTMPusecDelay(1000);
+		}
+		(pAd)->BbpWriteLatch[Offset] = Value;
+		break;
+	}
+	if (busyCnt == MAX_BUSY_COUNT)
+	{
+		DBGPRINT_ERR(("BBP write R%d fail\n", Offset));
+		if((FlgValidMCR) == TRUE)
+		{
+			RTMP_IO_READ32(pAd, H2M_BBP_AGENT, &BbpCsr.word);
+			BbpCsr.field.Busy = 0;
+			RTMP_IO_WRITE32(pAd, H2M_BBP_AGENT, BbpCsr.word);
+		}
+	}
+}
+#endif // VENDOR_FEATURE3_SUPPORT //
+
+
+#ifdef RTMP_MAC_PCI
+VOID CMDHandler(                                                                                                                                                
+    IN PRTMP_ADAPTER pAd)                                                                                                                                       
+{                                                                                                                                                               
+	PCmdQElmt		cmdqelmt;                                                                                                                                       
+	PUCHAR			pData;                                                                                                                                          
+	NDIS_STATUS		NdisStatus = NDIS_STATUS_SUCCESS;                                                                                                               
+//	ULONG			Now = 0;
+//	NTSTATUS		ntStatus;
+//	unsigned long	IrqFlags;
+	
+	while (pAd && pAd->CmdQ.size > 0)	
+	{                                                                                                                                                           
+		NdisStatus = NDIS_STATUS_SUCCESS;
+		                                                                                                                      
+		NdisAcquireSpinLock(&pAd->CmdQLock);
+		RTThreadDequeueCmd(&pAd->CmdQ, &cmdqelmt);
+		NdisReleaseSpinLock(&pAd->CmdQLock);
+		                                                                                                        
+		if (cmdqelmt == NULL)                                                                                                                                   
+			break; 
+			                                                                                                                                             
+		pData = cmdqelmt->buffer;                                      
+		                                                                                         
+		if(!(RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_NIC_NOT_EXIST) || RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_HALT_IN_PROGRESS)))
+		{
+			switch (cmdqelmt->command)
+			{
+
+				case CMDTHREAD_REG_HINT:
+#ifdef LINUX
+#ifdef RT_CFG80211_SUPPORT
+					RT_CFG80211_CRDA_REG_HINT(pAd, pData, cmdqelmt->bufferlength);
+#endif // RT_CFG80211_SUPPORT //
+#endif // LINUX //
+					break;
+
+				case CMDTHREAD_REG_HINT_11D:
+#ifdef LINUX
+#ifdef RT_CFG80211_SUPPORT
+					RT_CFG80211_CRDA_REG_HINT11D(pAd, pData, cmdqelmt->bufferlength);
+#endif // RT_CFG80211_SUPPORT //
+#endif // LINUX //
+					break;
+
+				case CMDTHREAD_SCAN_END:
+#ifdef LINUX
+#ifdef RT_CFG80211_SUPPORT
+					RT_CFG80211_SCAN_END(pAd, FALSE);
+#endif // RT_CFG80211_SUPPORT //
+#endif // LINUX //
+					break;
+
+				case CMDTHREAD_CONNECT_RESULT_INFORM:
+#ifdef LINUX
+#ifdef RT_CFG80211_SUPPORT
+					RT_CFG80211_CONN_RESULT_INFORM(pAd,
+												pAd->MlmeAux.Bssid,
+												pData, cmdqelmt->bufferlength,
+												pData, cmdqelmt->bufferlength,
+												1);
+#endif // RT_CFG80211_SUPPORT //
+#endif // LINUX //
+					break;
+
+				default:
+					DBGPRINT(RT_DEBUG_ERROR, ("--> Control Thread !! ERROR !! Unknown(cmdqelmt->command=0x%x) !! \n", cmdqelmt->command));
+					break;
+			}
+		}
+
+		if (cmdqelmt->CmdFromNdis == TRUE)
+		{
+			if (cmdqelmt->buffer != NULL)
+				os_free_mem(pAd, cmdqelmt->buffer);
+			os_free_mem(pAd, cmdqelmt);
+		}
+		else
+		{
+			if ((cmdqelmt->buffer != NULL) && (cmdqelmt->bufferlength != 0))
+				os_free_mem(pAd, cmdqelmt->buffer);
+			os_free_mem(pAd, cmdqelmt);
+		}
+	}	/* end of while */
+}
+#endif // RTMP_MAC_PCI //
+
+
+/* export wlan function symbol list */
+#ifdef OS_ABL_SUPPORT
+
+
+EXPORT_SYMBOL(NICInitializeAdapter);
+EXPORT_SYMBOL(NICInitAsicFromEEPROM);
+EXPORT_SYMBOL(NICReadEEPROMParameters);
+#ifdef RTMP_RF_RW_SUPPORT
+EXPORT_SYMBOL(NICInitRFRegisters);
+#endif // RTMP_RF_RW_SUPPORT //
+EXPORT_SYMBOL(UserCfgExit);
+EXPORT_SYMBOL(UserCfgInit);
+EXPORT_SYMBOL(CfgInitHook);
+EXPORT_SYMBOL(RTMPEnableRxTx);
+EXPORT_SYMBOL(RTMPSetPhyMode);
+EXPORT_SYMBOL(RTMPMaxRssi);
+EXPORT_SYMBOL(RTMPAllocAdapterBlock);
+EXPORT_SYMBOL(RTMPAllocTxRxRingMemory);
+EXPORT_SYMBOL(RTMPFreeTxRxRingMemory);
+EXPORT_SYMBOL(NICLoadRateSwitchingParams);
+EXPORT_SYMBOL(RtmpRaDevCtrlInit);
+EXPORT_SYMBOL(RtmpRaDevCtrlExit);
+EXPORT_SYMBOL(NICLoadFirmware);
+EXPORT_SYMBOL(RTMPSetProfileParameters);
+EXPORT_SYMBOL(RT28XXDMADisable);
+
+#ifdef DOT11_N_SUPPORT
+EXPORT_SYMBOL(SetCommonHT);
+#endif // DOT11_N_SUPPORT //
+
+EXPORT_SYMBOL(AsicSwitchChannel);
+EXPORT_SYMBOL(AsicLockChannel);
+EXPORT_SYMBOL(N_ChannelCheck);
+
+EXPORT_SYMBOL(ba_reordering_resource_init);
+EXPORT_SYMBOL(ba_reordering_resource_release);
+
+EXPORT_SYMBOL(RTMPDeQueuePacket);
+
+EXPORT_SYMBOL(CMDHandler);
+EXPORT_SYMBOL(RTEnqueueInternalCmd);
+EXPORT_SYMBOL(RTThreadDequeueCmd);
+
+EXPORT_SYMBOL(TpcReqTabInit);
+EXPORT_SYMBOL(TpcReqTabExit);
+EXPORT_SYMBOL(MeasureReqTabInit);
+EXPORT_SYMBOL(MeasureReqTabExit);
+
+EXPORT_SYMBOL(MlmeInit);
+EXPORT_SYMBOL(MlmeHandler);
+EXPORT_SYMBOL(MlmeHalt);
+EXPORT_SYMBOL(MlmeEnqueue);
+
+EXPORT_SYMBOL(RTMPCancelTimer);
+EXPORT_SYMBOL(AsicSendCommandToMcu);
+EXPORT_SYMBOL(MacTableLookup);
+EXPORT_SYMBOL(RTMPZeroMemory);
+EXPORT_SYMBOL(RTMPSoftEncryptWEP);
+EXPORT_SYMBOL(getRate);
+
+/* command */
+EXPORT_SYMBOL(RTMPIoctlGetSiteSurvey);
+
+
+
+
+#ifdef CONFIG_STA_SUPPORT
+EXPORT_SYMBOL(STASendPackets);
+
+EXPORT_SYMBOL(LinkUp);
+EXPORT_SYMBOL(LinkDown);
+EXPORT_SYMBOL(MlmeRadioOn);
+EXPORT_SYMBOL(MlmeRadioOff);
+
+EXPORT_SYMBOL(BAOriSessionSetUp);
+EXPORT_SYMBOL(BAOriSessionTearDown);
+EXPORT_SYMBOL(BARecSessionTearDown);
+EXPORT_SYMBOL(MlmeDeauthReqAction);
+EXPORT_SYMBOL(MlmeDisassocReqAction);
+
+EXPORT_SYMBOL(GetPhyMode);
+EXPORT_SYMBOL(ChannelSanity);
+
+EXPORT_SYMBOL(rtstrchr);
+EXPORT_SYMBOL(Set_SSID_Proc);
+EXPORT_SYMBOL(Show_DescInfo_Proc);
+EXPORT_SYMBOL(Show_Adhoc_MacTable_Proc);
+EXPORT_SYMBOL(RTMPShowCfgValue);
+EXPORT_SYMBOL(MlmeSetTxPreamble);
+EXPORT_SYMBOL(RTMPSetDesiredRates);
+EXPORT_SYMBOL(Set_PSMode_Proc);
+EXPORT_SYMBOL(Set_NetworkType_Proc);
+EXPORT_SYMBOL(rt_ioctl_setparam);
+EXPORT_SYMBOL(Set_Channel_Proc);
+
+EXPORT_SYMBOL(AsicAddSharedKeyEntry);
+EXPORT_SYMBOL(AsicRemoveSharedKeyEntry);
+EXPORT_SYMBOL(RTMPAddKey);
+EXPORT_SYMBOL(RTMPSetWcidSecurityInfo);
+EXPORT_SYMBOL(AsicRemovePairwiseKeyEntry);
+EXPORT_SYMBOL(RTMPWPARemoveKeyProc);
+
+EXPORT_SYMBOL(MlmeUpdateTxRates);
+EXPORT_SYMBOL(MlmeSetPsmBit);
+
+EXPORT_SYMBOL(MakeIbssBeacon);
+EXPORT_SYMBOL(AsicEnableIbssSync);
+EXPORT_SYMBOL(AsicEnableBssSync);
+EXPORT_SYMBOL(AsicDisableSync);
+
+EXPORT_SYMBOL(RTMP_MapChannelID2KHZ);
+EXPORT_SYMBOL(RTMP_MapKHZ2ChannelID);
+
+EXPORT_SYMBOL(AtoH);
+EXPORT_SYMBOL(NetworkTypeInUseSanity);
+EXPORT_SYMBOL(NICUpdateRawCounters);
+EXPORT_SYMBOL(RTMPSetHT);
+EXPORT_SYMBOL(RTMPSendNullFrame);
+EXPORT_SYMBOL(AsicForceWakeup);
+EXPORT_SYMBOL(RateIdTo500Kbps);
+
+EXPORT_SYMBOL(MacTableReset);
+EXPORT_SYMBOL(RTMPCheckStrPrintAble);
+EXPORT_SYMBOL(BssTableDeleteEntry);
+EXPORT_SYMBOL(DisassocParmFill);
+EXPORT_SYMBOL(RTMPConstructWEPIVHdr);
+EXPORT_SYMBOL(RTMPMoveMemory);
+
+EXPORT_SYMBOL(Set_Key1_Proc);
+EXPORT_SYMBOL(Set_Key2_Proc);
+EXPORT_SYMBOL(Set_Key3_Proc);
+EXPORT_SYMBOL(Set_Key4_Proc);
+EXPORT_SYMBOL(Set_EncrypType_Proc);
+EXPORT_SYMBOL(Set_WPAPSK_Proc);
+EXPORT_SYMBOL(Set_AuthMode_Proc);
+
+#ifdef RT30xx
+EXPORT_SYMBOL(RT30xxReadRFRegister);
+EXPORT_SYMBOL(RT30xxWriteRFRegister);
+EXPORT_SYMBOL(RT3572WriteBBPR66);
+#endif // RT30xx //
+
+
+#ifdef RTMP_MAC_PCI
+EXPORT_SYMBOL(STARxDoneInterruptHandle);
+EXPORT_SYMBOL(MlmeRestartStateMachine);
+EXPORT_SYMBOL(RTMPHandleTwakeupInterrupt);
+EXPORT_SYMBOL(AsicResetBBPAgent);
+#endif // RTMP_MAC_PCI //
+#endif // CONFIG_STA_SUPPORT //
+
+
+#ifdef RTMP_MAC_PCI
+EXPORT_SYMBOL(RT28xxPciAsicRadioOff);
+EXPORT_SYMBOL(RTMPHandleTxRingDmaDoneInterrupt);
+EXPORT_SYMBOL(RTMPHandlePreTBTTInterrupt);
+EXPORT_SYMBOL(RTMPHandleTBTTInterrupt);
+EXPORT_SYMBOL(NICUpdateFifoStaCounters);
+EXPORT_SYMBOL(RTMPHandleMgmtRingDmaDoneInterrupt);
+EXPORT_SYMBOL(RTMPHandleRxCoherentInterrupt);
+#endif // RTMP_MAC_PCI //
+
+
+
+
+
+
+#ifdef APCLI_SUPPORT
+EXPORT_SYMBOL(ApCliIfUp);
+EXPORT_SYMBOL(RT28xx_ApCli_Remove);
+EXPORT_SYMBOL(ApCliIfLookUp);
+#endif // APCLI_SUPPORT //
+
+#ifdef WDS_SUPPORT
+EXPORT_SYMBOL(WdsDown);
+EXPORT_SYMBOL(RT28xx_WDS_Remove);
+#endif // WDS_SUPPORT //
+
+EXPORT_SYMBOL(GenerateWpsPinCode);
+
+
+#ifdef AUTO_CH_SELECT_ENHANCE
+EXPORT_SYMBOL(AutoChBssTableDestroy);
+EXPORT_SYMBOL(ChannelInfoDestroy);
+EXPORT_SYMBOL(AutoChBssTableInit);
+EXPORT_SYMBOL(ChannelInfoInit);
+EXPORT_SYMBOL(New_APAutoSelectChannel);
+#endif // AUTO_CH_SELECT_ENHANCE //
+
+#ifdef DOT11_N_SUPPORT
+
+#ifdef CONFIG_STA_SUPPORT
+EXPORT_SYMBOL(N_SetCenCh);
+#endif // CONFIG_STA_SUPPORT //
+#endif // DOT11_N_SUPPORT //
+
+#ifdef BLOCK_NET_IF
+EXPORT_SYMBOL(initblockQueueTab);
+#endif // BLOCK_NET_IF //
+
+
+#ifdef RALINK_ATE
+EXPORT_SYMBOL(RtmpDoAte);
+
+#ifdef RT35xx
+#ifdef CONFIG_STA_SUPPORT
+#endif // CONFIG_STA_SUPPORT //
+
+#ifdef RTMP_MAC_PCI
+EXPORT_SYMBOL(ATE_RT3562WriteBBPR66);
+#endif // RTMP_MAC_PCI //
+#endif // RALINK_ATE //
+#endif // RT35xx //
+
+
+
+#ifdef QOS_DLS_SUPPORT
+#ifdef CONFIG_STA_SUPPORT
+EXPORT_SYMBOL(Set_DlsEntryInfo_Display_Proc);
+EXPORT_SYMBOL(RTMPSendDLSTearDownFrame);
+#endif // CONFIG_STA_SUPPORT //
+#endif // QOS_DLS_SUPPORT //
+
+#ifdef DFS_SUPPORT
+#endif // DFS_SUPPORT //
+
+
+
+#ifdef EXT_BUILD_CHANNEL_LIST
+EXPORT_SYMBOL(ChRegion);
+#endif // EXT_BUILD_CHANNEL_LIST //
+
+#endif // OS_ABL_SUPPORT //
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/rtmp_init_inf.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/rtmp_init_inf.c
new file mode 100644
index 000000000..667cc6b38
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/rtmp_init_inf.c
@@ -0,0 +1,374 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+	Module Name:
+	rtmp_init.c
+
+	Abstract:
+	Miniport generic portion header file
+
+	Revision History:
+	Who         When          What
+	--------    ----------    ----------------------------------------------
+*/
+#include	"rt_config.h"
+
+#ifdef OS_ABL_SUPPORT
+UCHAR    BIT8[] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};
+#endif // OS_ABL_SUPPORT //
+
+
+int rt28xx_init(
+	IN PRTMP_ADAPTER pAd, 
+	IN PSTRING pDefaultMac, 
+	IN PSTRING pHostName)
+{
+	UINT					index;
+	UCHAR					TmpPhy;
+	NDIS_STATUS				Status;
+	UINT32 					MacCsr0 = 0;
+
+#ifdef CONFIG_STA_SUPPORT
+#ifdef PCIE_PS_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+    	// If dirver doesn't wake up firmware here,
+    	// NICLoadFirmware will hang forever when interface is up again.
+    	if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_DOZE) &&
+        	OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_ADVANCE_POWER_SAVE_PCIE_DEVICE))
+    	{
+        	AUTO_WAKEUP_STRUC AutoWakeupCfg;
+			AsicForceWakeup(pAd, TRUE);
+        	AutoWakeupCfg.word = 0;
+	    	RTMP_IO_WRITE32(pAd, AUTO_WAKEUP_CFG, AutoWakeupCfg.word);
+        	OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_DOZE);
+    	}
+	}
+#endif // PCIE_PS_SUPPORT //
+#endif // CONFIG_STA_SUPPORT //
+
+
+	// reset Adapter flags
+	RTMP_CLEAR_FLAGS(pAd);
+
+	// Init BssTab & ChannelInfo tabbles for auto channel select.
+
+#ifdef DOT11_N_SUPPORT
+	// Allocate BA Reordering memory
+	if (ba_reordering_resource_init(pAd, MAX_REORDERING_MPDU_NUM) != TRUE)		
+		goto err1;
+#endif // DOT11_N_SUPPORT //
+
+	// Make sure MAC gets ready.
+	index = 0;
+	do
+	{
+		RTMP_IO_READ32(pAd, MAC_CSR0, &MacCsr0);
+		pAd->MACVersion = MacCsr0;
+
+		if ((pAd->MACVersion != 0x00) && (pAd->MACVersion != 0xFFFFFFFF))
+			break;
+
+		if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_NIC_NOT_EXIST))			
+			goto err1;
+
+		RTMPusecDelay(10);
+	} while (index++ < 100);
+	DBGPRINT(RT_DEBUG_TRACE, ("MAC_CSR0  [ Ver:Rev=0x%08x]\n", pAd->MACVersion));
+
+#ifdef RTMP_MAC_PCI
+
+	// To fix driver disable/enable hang issue when radio off
+	RTMP_IO_WRITE32(pAd, PWR_PIN_CFG, 0x2);
+#endif // RTMP_MAC_PCI //
+
+	// Disable DMA
+	RT28XXDMADisable(pAd);
+
+
+	// Load 8051 firmware
+	Status = NICLoadFirmware(pAd);
+	if (Status != NDIS_STATUS_SUCCESS)
+	{
+		DBGPRINT_ERR(("NICLoadFirmware failed, Status[=0x%08x]\n", Status));
+		goto err1;
+	}
+
+	NICLoadRateSwitchingParams(pAd);
+
+	// Disable interrupts here which is as soon as possible
+	// This statement should never be true. We might consider to remove it later
+#ifdef RTMP_MAC_PCI
+	if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_ACTIVE))
+	{
+		RTMP_ASIC_INTERRUPT_DISABLE(pAd);
+	}
+#endif // RTMP_MAC_PCI //
+
+	Status = RTMPAllocTxRxRingMemory(pAd);
+	if (Status != NDIS_STATUS_SUCCESS)
+	{
+		DBGPRINT_ERR(("RTMPAllocDMAMemory failed, Status[=0x%08x]\n", Status));
+		goto err2;
+	}
+
+	RTMP_SET_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_IN_USE);
+
+	// initialize MLME
+	//
+
+	Status = RtmpMgmtTaskInit(pAd);
+	if (Status != NDIS_STATUS_SUCCESS)
+		goto err3;
+
+	Status = MlmeInit(pAd);
+	if (Status != NDIS_STATUS_SUCCESS)
+	{
+		DBGPRINT_ERR(("MlmeInit failed, Status[=0x%08x]\n", Status));
+		goto err4;
+	}
+
+	// Initialize pAd->StaCfg, pAd->ApCfg, pAd->CommonCfg to manufacture default
+	//
+	UserCfgInit(pAd);
+	Status = RtmpNetTaskInit(pAd);
+	if (Status != NDIS_STATUS_SUCCESS)
+		goto err5;
+
+//	COPY_MAC_ADDR(pAd->ApCfg.MBSSID[apidx].Bssid, netif->hwaddr);
+//	pAd->bForcePrintTX = TRUE;
+
+	CfgInitHook(pAd);
+
+
+#ifdef BLOCK_NET_IF
+	initblockQueueTab(pAd);
+#endif // BLOCK_NET_IF //
+
+	Status = MeasureReqTabInit(pAd);	
+	if (Status != NDIS_STATUS_SUCCESS)	
+	{		
+		DBGPRINT_ERR(("MeasureReqTabInit failed, Status[=0x%08x]\n",Status));		
+		goto err6;	
+	}	
+
+	Status = TpcReqTabInit(pAd);	
+	if (Status != NDIS_STATUS_SUCCESS)	
+	{		
+		DBGPRINT_ERR(("TpcReqTabInit failed, Status[=0x%08x]\n",Status));		
+		goto err6;	
+	}
+
+	//
+	// Init the hardware, we need to init asic before read registry, otherwise mac register will be reset
+	//
+	Status = NICInitializeAdapter(pAd, TRUE);
+	if (Status != NDIS_STATUS_SUCCESS)
+	{
+		DBGPRINT_ERR(("NICInitializeAdapter failed, Status[=0x%08x]\n", Status));
+		if (Status != NDIS_STATUS_SUCCESS)
+		goto err6;
+	}	
+
+	// Read parameters from Config File 
+	Status = RTMPReadParametersHook(pAd);
+
+	DBGPRINT(RT_DEBUG_OFF, ("1. Phy Mode = %d\n", pAd->CommonCfg.PhyMode));
+	if (Status != NDIS_STATUS_SUCCESS)
+	{
+		DBGPRINT_ERR(("RTMPReadParametersHook failed, Status[=0x%08x]\n",Status));
+		goto err6;
+	}
+
+
+
+#ifdef DOT11_N_SUPPORT
+   	//Init Ba Capability parameters.
+//	RT28XX_BA_INIT(pAd);
+	pAd->CommonCfg.DesiredHtPhy.MpduDensity = (UCHAR)pAd->CommonCfg.BACapability.field.MpduDensity;
+	pAd->CommonCfg.DesiredHtPhy.AmsduEnable = (USHORT)pAd->CommonCfg.BACapability.field.AmsduEnable;
+	pAd->CommonCfg.DesiredHtPhy.AmsduSize = (USHORT)pAd->CommonCfg.BACapability.field.AmsduSize;
+	pAd->CommonCfg.DesiredHtPhy.MimoPs = (USHORT)pAd->CommonCfg.BACapability.field.MMPSmode;
+	// UPdata to HT IE
+	pAd->CommonCfg.HtCapability.HtCapInfo.MimoPs = (USHORT)pAd->CommonCfg.BACapability.field.MMPSmode;
+	pAd->CommonCfg.HtCapability.HtCapInfo.AMsduSize = (USHORT)pAd->CommonCfg.BACapability.field.AmsduSize;
+	pAd->CommonCfg.HtCapability.HtCapParm.MpduDensity = (UCHAR)pAd->CommonCfg.BACapability.field.MpduDensity;
+#endif // DOT11_N_SUPPORT //
+
+	// after reading Registry, we now know if in AP mode or STA mode
+
+	// Load 8051 firmware; crash when FW image not existent
+	// Status = NICLoadFirmware(pAd);
+	// if (Status != NDIS_STATUS_SUCCESS)
+	//    break;
+
+	DBGPRINT(RT_DEBUG_OFF, ("2. Phy Mode = %d\n", pAd->CommonCfg.PhyMode));
+
+	// We should read EEPROM for all cases.  rt2860b
+	NICReadEEPROMParameters(pAd, (PUCHAR)pDefaultMac);	
+#ifdef CONFIG_STA_SUPPORT
+#endif // CONFIG_STA_SUPPORT //
+
+	DBGPRINT(RT_DEBUG_OFF, ("3. Phy Mode = %d\n", pAd->CommonCfg.PhyMode));
+
+	NICInitAsicFromEEPROM(pAd); //rt2860b
+	
+	// Set PHY to appropriate mode
+	TmpPhy = pAd->CommonCfg.PhyMode;
+	pAd->CommonCfg.PhyMode = 0xff;
+	RTMPSetPhyMode(pAd, TmpPhy);
+#ifdef DOT11_N_SUPPORT
+	SetCommonHT(pAd);
+#endif // DOT11_N_SUPPORT //
+
+	// No valid channels.
+	if (pAd->ChannelListNum == 0)
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("Wrong configuration. No valid channel found. Check \"ContryCode\" and \"ChannelGeography\" setting.\n"));
+		goto err6;
+	}
+
+#ifdef DOT11_N_SUPPORT
+	DBGPRINT(RT_DEBUG_OFF, ("MCS Set = %02x %02x %02x %02x %02x\n", pAd->CommonCfg.HtCapability.MCSSet[0],
+           pAd->CommonCfg.HtCapability.MCSSet[1], pAd->CommonCfg.HtCapability.MCSSet[2],
+           pAd->CommonCfg.HtCapability.MCSSet[3], pAd->CommonCfg.HtCapability.MCSSet[4]));
+#endif // DOT11_N_SUPPORT //
+
+
+
+//		APInitialize(pAd);
+
+#ifdef IKANOS_VX_1X0
+	VR_IKANOS_FP_Init(pAd->ApCfg.BssidNum, pAd->PermanentAddress);
+#endif // IKANOS_VX_1X0 //
+
+		//
+	// Initialize RF register to default value
+	//
+	AsicSwitchChannel(pAd, pAd->CommonCfg.Channel, FALSE);
+	AsicLockChannel(pAd, pAd->CommonCfg.Channel);		
+
+	/*
+		Some modules init must be called before APStartUp().
+		Or APStartUp() will make up beacon content and call
+		other modules API to get some information to fill.
+	*/
+
+	// 8051 firmware require the signal during booting time.
+	//2008/11/28:KH marked the following codes to patch Frequency offset bug
+	//AsicSendCommandToMcu(pAd, 0x72, 0xFF, 0x00, 0x00);
+
+	if (pAd && (Status != NDIS_STATUS_SUCCESS))
+	{
+		//
+		// Undo everything if it failed
+		//
+		if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_IN_USE))
+		{
+//			NdisMDeregisterInterrupt(&pAd->Interrupt);
+			RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_IN_USE);
+		}
+//		RTMPFreeAdapter(pAd); // we will free it in disconnect()
+	}
+	else if (pAd)
+	{
+		// Microsoft HCT require driver send a disconnect event after driver initialization.
+		OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED);
+//		pAd->IndicateMediaState = NdisMediaStateDisconnected;
+		RTMP_SET_FLAG(pAd, fRTMP_ADAPTER_MEDIA_STATE_CHANGE);
+
+		DBGPRINT(RT_DEBUG_TRACE, ("NDIS_STATUS_MEDIA_DISCONNECT Event B!\n"));
+
+
+	}// end of else
+
+
+	// Set up the Mac address
+	RtmpOSNetDevAddrSet(pAd->net_dev, &pAd->CurrentAddress[0]);
+
+	// Various AP function init
+
+
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+
+#ifdef WPA_SUPPLICANT_SUPPORT
+#ifndef NATIVE_WPA_SUPPLICANT_SUPPORT
+		// send wireless event to wpa_supplicant for infroming interface up.
+		RtmpOSWrielessEventSend(pAd, IWEVCUSTOM, RT_INTERFACE_UP, NULL, NULL, 0);
+#endif // NATIVE_WPA_SUPPLICANT_SUPPORT //
+#endif // WPA_SUPPLICANT_SUPPORT //
+
+	}
+#endif // CONFIG_STA_SUPPORT //
+
+
+	DBGPRINT_S(Status, ("<==== rt28xx_init, Status=%x\n", Status));
+
+	return TRUE;
+
+
+err6:	
+	MeasureReqTabExit(pAd);	
+	TpcReqTabExit(pAd);
+	
+err5:	
+	RtmpNetTaskExit(pAd);	
+	UserCfgExit(pAd);
+
+err4:	
+	MlmeHalt(pAd);
+
+err3:	
+	RtmpMgmtTaskExit(pAd);	
+
+err2:	
+	RTMPFreeTxRxRingMemory(pAd);
+	
+err1:
+
+#ifdef DOT11_N_SUPPORT
+	if(pAd->mpdu_blk_pool.mem)
+		os_free_mem(pAd, pAd->mpdu_blk_pool.mem); // free BA pool
+#endif // DOT11_N_SUPPORT //
+
+	// shall not set priv to NULL here because the priv didn't been free yet.
+	//net_dev->priv = 0;
+#ifdef INF_AMAZON_SE
+err0:
+#endif // INF_AMAZON_SE //
+#ifdef ST
+err0:
+#endif // ST //
+
+	DBGPRINT(RT_DEBUG_ERROR, ("!!! rt28xx Initialized fail !!!\n"));
+	return FALSE;
+}
+
+
+/* End of rtmp_init_inf.c */
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/rtmp_mcu.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/rtmp_mcu.c
new file mode 100644
index 000000000..241ccadec
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/rtmp_mcu.c
@@ -0,0 +1,570 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+	Module Name:
+	rtmp_mcu.c
+
+	Abstract:
+	Miniport generic portion header file
+
+	Revision History:
+	Who         When          What
+	--------    ----------    ----------------------------------------------
+*/
+
+
+#include	"rt_config.h"
+#include 	"firmware.h"
+
+//#define BIN_IN_FILE /* use *.bin firmware */
+
+
+// New 8k byte firmware size for RT3071/RT3072
+#define FIRMWAREIMAGE_MAX_LENGTH	0x2000
+#define FIRMWAREIMAGE_LENGTH			(sizeof (FirmwareImage) / sizeof(UCHAR))
+#define FIRMWARE_MAJOR_VERSION		0
+
+#define FIRMWAREIMAGEV1_LENGTH		0x1000
+#define FIRMWAREIMAGEV2_LENGTH		0x1000
+
+#ifdef RTMP_MAC_PCI
+#define FIRMWARE_MINOR_VERSION		2
+#endif // RTMP_MAC_PCI //
+
+const unsigned short ccitt_16Table[] = {
+	0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7,
+	0x8108, 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF,
+	0x1231, 0x0210, 0x3273, 0x2252, 0x52B5, 0x4294, 0x72F7, 0x62D6,
+	0x9339, 0x8318, 0xB37B, 0xA35A, 0xD3BD, 0xC39C, 0xF3FF, 0xE3DE,
+	0x2462, 0x3443, 0x0420, 0x1401, 0x64E6, 0x74C7, 0x44A4, 0x5485,
+	0xA56A, 0xB54B, 0x8528, 0x9509, 0xE5EE, 0xF5CF, 0xC5AC, 0xD58D,
+	0x3653, 0x2672, 0x1611, 0x0630, 0x76D7, 0x66F6, 0x5695, 0x46B4,
+	0xB75B, 0xA77A, 0x9719, 0x8738, 0xF7DF, 0xE7FE, 0xD79D, 0xC7BC,
+	0x48C4, 0x58E5, 0x6886, 0x78A7, 0x0840, 0x1861, 0x2802, 0x3823,
+	0xC9CC, 0xD9ED, 0xE98E, 0xF9AF, 0x8948, 0x9969, 0xA90A, 0xB92B,
+	0x5AF5, 0x4AD4, 0x7AB7, 0x6A96, 0x1A71, 0x0A50, 0x3A33, 0x2A12,
+	0xDBFD, 0xCBDC, 0xFBBF, 0xEB9E, 0x9B79, 0x8B58, 0xBB3B, 0xAB1A,
+	0x6CA6, 0x7C87, 0x4CE4, 0x5CC5, 0x2C22, 0x3C03, 0x0C60, 0x1C41,
+	0xEDAE, 0xFD8F, 0xCDEC, 0xDDCD, 0xAD2A, 0xBD0B, 0x8D68, 0x9D49,
+	0x7E97, 0x6EB6, 0x5ED5, 0x4EF4, 0x3E13, 0x2E32, 0x1E51, 0x0E70,
+	0xFF9F, 0xEFBE, 0xDFDD, 0xCFFC, 0xBF1B, 0xAF3A, 0x9F59, 0x8F78,
+	0x9188, 0x81A9, 0xB1CA, 0xA1EB, 0xD10C, 0xC12D, 0xF14E, 0xE16F,
+	0x1080, 0x00A1, 0x30C2, 0x20E3, 0x5004, 0x4025, 0x7046, 0x6067,
+	0x83B9, 0x9398, 0xA3FB, 0xB3DA, 0xC33D, 0xD31C, 0xE37F, 0xF35E,
+	0x02B1, 0x1290, 0x22F3, 0x32D2, 0x4235, 0x5214, 0x6277, 0x7256,
+	0xB5EA, 0xA5CB, 0x95A8, 0x8589, 0xF56E, 0xE54F, 0xD52C, 0xC50D,
+	0x34E2, 0x24C3, 0x14A0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,
+	0xA7DB, 0xB7FA, 0x8799, 0x97B8, 0xE75F, 0xF77E, 0xC71D, 0xD73C,
+	0x26D3, 0x36F2, 0x0691, 0x16B0, 0x6657, 0x7676, 0x4615, 0x5634,
+	0xD94C, 0xC96D, 0xF90E, 0xE92F, 0x99C8, 0x89E9, 0xB98A, 0xA9AB,
+	0x5844, 0x4865, 0x7806, 0x6827, 0x18C0, 0x08E1, 0x3882, 0x28A3,
+	0xCB7D, 0xDB5C, 0xEB3F, 0xFB1E, 0x8BF9, 0x9BD8, 0xABBB, 0xBB9A,
+	0x4A75, 0x5A54, 0x6A37, 0x7A16, 0x0AF1, 0x1AD0, 0x2AB3, 0x3A92,
+	0xFD2E, 0xED0F, 0xDD6C, 0xCD4D, 0xBDAA, 0xAD8B, 0x9DE8, 0x8DC9,
+	0x7C26, 0x6C07, 0x5C64, 0x4C45, 0x3CA2, 0x2C83, 0x1CE0, 0x0CC1,
+	0xEF1F, 0xFF3E, 0xCF5D, 0xDF7C, 0xAF9B, 0xBFBA, 0x8FD9, 0x9FF8,
+	0x6E17, 0x7E36, 0x4E55, 0x5E74, 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0
+};
+#define ByteCRC16(v, crc) \
+	(unsigned short)((crc << 8) ^  ccitt_16Table[((crc >> 8) ^ (v)) & 255])
+
+unsigned char BitReverse(unsigned char x)
+{
+	int i;
+	unsigned char Temp=0;
+	for(i=0; ; i++)
+	{
+		if(x & 0x80)	Temp |= 0x80;
+		if(i==7)		break;
+		x	<<= 1;
+		Temp >>= 1;
+	}
+	return Temp;
+}
+
+
+/*
+	========================================================================
+	
+	Routine Description:
+		erase 8051 firmware image in MAC ASIC
+
+	Arguments:
+		Adapter						Pointer to our adapter
+
+	IRQL = PASSIVE_LEVEL
+		
+	========================================================================
+*/
+INT RtmpAsicEraseFirmware(
+	IN PRTMP_ADAPTER pAd)
+{
+	ULONG i;
+
+	for(i=0; i<MAX_FIRMWARE_IMAGE_SIZE; i+=4)
+		RTMP_IO_WRITE32(pAd, FIRMWARE_IMAGE_BASE + i, 0);
+
+	return 0;
+}
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Load 8051 firmware file into MAC ASIC
+
+	Arguments:
+		Adapter						Pointer to our adapter
+
+	Return Value:
+		NDIS_STATUS_SUCCESS         firmware image load ok
+		NDIS_STATUS_FAILURE         image not found
+
+	IRQL = PASSIVE_LEVEL
+		
+	========================================================================
+*/
+NDIS_STATUS RtmpAsicLoadFirmware(
+	IN PRTMP_ADAPTER pAd)
+{
+#ifdef BIN_IN_FILE
+#define NICLF_DEFAULT_USE()	\
+	flg_default_firm_use = TRUE; \
+	DBGPRINT(RT_DEBUG_OFF, ("%s - Use default firmware!\n", __FUNCTION__));
+
+	NDIS_STATUS		Status = NDIS_STATUS_SUCCESS;
+	PUCHAR			src;
+	RTMP_OS_FD		srcf;
+	INT 				retval, i;
+	PUCHAR			pFirmwareImage;
+	INT				FileLength = 0;
+	UINT32			MacReg;
+	ULONG			Index;
+	ULONG			firm;
+	BOOLEAN			flg_default_firm_use = FALSE;
+	RTMP_OS_FS_INFO	osFSInfo;
+
+	DBGPRINT(RT_DEBUG_TRACE, ("===> %s\n", __FUNCTION__));
+
+	/* init */
+	pFirmwareImage = NULL;
+	src = RTMP_FIRMWARE_FILE_NAME;
+
+	RtmpOSFSInfoChange(&osFSInfo, TRUE);
+
+	pAd->FirmwareVersion = (FIRMWARE_MAJOR_VERSION << 8) + \
+						   FIRMWARE_MINOR_VERSION;
+
+
+	/* allocate firmware buffer */
+	pFirmwareImage = kmalloc(MAX_FIRMWARE_IMAGE_SIZE, MEM_ALLOC_FLAG);
+	if (pFirmwareImage == NULL)
+	{
+		/* allocate fail, use default firmware array in firmware.h */
+		DBGPRINT(RT_DEBUG_ERROR, ("%s - Allocate memory fail!\n", __FUNCTION__));
+		NICLF_DEFAULT_USE();
+	}
+	else
+	{
+		/* allocate ok! zero the firmware buffer */
+		memset(pFirmwareImage, 0x00, MAX_FIRMWARE_IMAGE_SIZE);
+	} /* End of if */
+
+
+	/* if ok, read firmware file from *.bin file */
+	if (flg_default_firm_use == FALSE)
+	{
+		do
+		{
+			/* open the bin file */
+			srcf = RtmpOSFileOpen(src, O_RDONLY, 0);
+
+			if (IS_FILE_OPEN_ERR(srcf)) 
+			{
+				DBGPRINT(RT_DEBUG_ERROR, ("%s - Error opening file %s\n", __FUNCTION__, src));
+				NICLF_DEFAULT_USE();
+				break;
+			}
+
+
+			/* read the firmware from the file *.bin */
+			FileLength = RtmpOSFileRead(srcf, pFirmwareImage, MAX_FIRMWARE_IMAGE_SIZE);
+			if (FileLength != MAX_FIRMWARE_IMAGE_SIZE)
+			{
+				DBGPRINT(RT_DEBUG_ERROR, ("%s: error file length (=%d) in RT2860AP.BIN\n",
+					   __FUNCTION__, FileLength));
+				NICLF_DEFAULT_USE();
+				break;
+			}
+			else
+			{
+				PUCHAR ptr = pFirmwareImage;
+				USHORT crc = 0xffff;
+
+
+				/* calculate firmware CRC */
+				for(i=0; i<(MAX_FIRMWARE_IMAGE_SIZE-2); i++, ptr++)
+					crc = ByteCRC16(BitReverse(*ptr), crc);
+				/* End of for */
+
+				if ((pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-2] != \
+								(UCHAR)BitReverse((UCHAR)(crc>>8))) ||
+					(pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-1] != \
+								(UCHAR)BitReverse((UCHAR)crc)))
+				{
+					/* CRC fail */
+					DBGPRINT(RT_DEBUG_ERROR, ("%s: CRC = 0x%02x 0x%02x "
+						   "error, should be 0x%02x 0x%02x\n",
+						   __FUNCTION__,
+						   pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-2],
+						   pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-1],
+						   (UCHAR)(crc>>8), (UCHAR)(crc)));
+					NICLF_DEFAULT_USE();
+					break;
+				}
+				else
+				{
+					/* firmware is ok */
+					pAd->FirmwareVersion = \
+						(pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-4] << 8) +
+						pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-3];
+
+					/* check if firmware version of the file is too old */
+					if ((pAd->FirmwareVersion) < \
+											((FIRMWARE_MAJOR_VERSION << 8) +
+									  	 	 FIRMWARE_MINOR_VERSION))
+					{
+						DBGPRINT(RT_DEBUG_ERROR, ("%s: firmware version too old!\n", __FUNCTION__));
+						NICLF_DEFAULT_USE();
+						break;
+					} /* End of if */
+				} /* End of if */
+
+				DBGPRINT(RT_DEBUG_TRACE,
+						 ("NICLoadFirmware: CRC ok, ver=%d.%d\n",
+						  pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-4],
+						  pFirmwareImage[MAX_FIRMWARE_IMAGE_SIZE-3]));
+			} /* End of if (FileLength == MAX_FIRMWARE_IMAGE_SIZE) */
+			break;
+		} while(TRUE);
+
+		/* close firmware file */
+		if (IS_FILE_OPEN_ERR(srcf))
+			;
+		else
+		{
+			retval = RtmpOSFileClose(srcf);
+			if (retval)
+			{
+				DBGPRINT(RT_DEBUG_ERROR, ("--> Error %d closing %s\n", -retval, src));
+			}
+		}
+	}
+
+
+	/* write firmware to ASIC */
+	if (flg_default_firm_use == TRUE)
+	{
+		/* use default fimeware, free allocated buffer */
+		if (pFirmwareImage != NULL)
+			kfree(pFirmwareImage);
+		/* End of if */
+
+		/* use default *.bin array */
+		pFirmwareImage = FirmwareImage;
+		FileLength = sizeof(FirmwareImage);
+	} /* End of if */
+
+	/* enable Host program ram write selection */
+	RTMP_IO_WRITE32(pAd, PBF_SYS_CTRL, 0x10000); 
+
+	for(i=0; i<FileLength; i+=4)
+	{
+		firm = pFirmwareImage[i] +
+			   (pFirmwareImage[i+3] << 24) +
+			   (pFirmwareImage[i+2] << 16) +
+			   (pFirmwareImage[i+1] << 8);
+
+		RTMP_IO_WRITE32(pAd, FIRMWARE_IMAGE_BASE + i, firm);
+	} /* End of for */
+
+	RTMP_IO_WRITE32(pAd, PBF_SYS_CTRL, 0x00000);
+	RTMP_IO_WRITE32(pAd, PBF_SYS_CTRL, 0x00001);
+
+	/* initialize BBP R/W access agent */
+	RTMP_IO_WRITE32(pAd, H2M_BBP_AGENT, 0);
+	RTMP_IO_WRITE32(pAd, H2M_MAILBOX_CSR, 0);
+
+	if (flg_default_firm_use == FALSE)
+	{
+		/* use file firmware, free allocated buffer */
+		if (pFirmwareImage != NULL)
+			kfree(pFirmwareImage);
+		/* End of if */
+	} /* End of if */
+
+	RtmpOSFSInfoChange(&osFSInfo, FALSE);
+#else
+
+	NDIS_STATUS		Status = NDIS_STATUS_SUCCESS;
+	PUCHAR			pFirmwareImage;
+	ULONG			FileLength, Index;
+	//ULONG			firm;
+	UINT32			MacReg = 0;
+	UINT32			Version = (pAd->MACVersion >> 16);
+
+	pFirmwareImage = FirmwareImage;
+	FileLength = sizeof(FirmwareImage);
+
+	// New 8k byte firmware size for RT3071/RT3072
+	//DBGPRINT(RT_DEBUG_TRACE, ("Usb Chip\n"));
+	if (FIRMWAREIMAGE_LENGTH == FIRMWAREIMAGE_MAX_LENGTH)
+	//The firmware image consists of two parts. One is the origianl and the other is the new.
+	//Use Second Part
+	{
+#ifdef RTMP_MAC_PCI
+		if ((Version == 0x2860) || (Version == 0x3572) || IS_RT3090(pAd)||IS_RT3390(pAd))
+		{
+			pFirmwareImage = FirmwareImage;
+			FileLength = FIRMWAREIMAGE_LENGTH;
+		}
+#endif // RTMP_MAC_PCI //
+	}
+	else
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("KH: bin file should be 8KB.\n"));
+		Status = NDIS_STATUS_FAILURE;
+	}
+
+
+	RTMP_WRITE_FIRMWARE(pAd, pFirmwareImage, FileLength);
+
+#endif
+
+	/* check if MCU is ready */
+	Index = 0;
+	do
+	{
+		if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_NIC_NOT_EXIST))			
+			return NDIS_STATUS_FAILURE;
+		
+		RTMP_IO_READ32(pAd, PBF_SYS_CTRL, &MacReg);
+
+		if (MacReg & 0x80)
+			break;
+		
+		RTMPusecDelay(1000);
+	} while (Index++ < 1000);
+
+    if (Index >= 1000)
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("NICLoadFirmware: MCU is not ready\n\n\n"));
+		Status = NDIS_STATUS_FAILURE;
+	}
+
+    DBGPRINT(RT_DEBUG_TRACE, ("<=== %s (status=%d)\n", __FUNCTION__, Status));
+
+    return Status;
+}
+
+
+INT RtmpAsicSendCommandToMcu(
+	IN PRTMP_ADAPTER pAd,
+	IN UCHAR		 Command,
+	IN UCHAR		 Token,
+	IN UCHAR		 Arg0,
+	IN UCHAR		 Arg1)
+{
+	HOST_CMD_CSR_STRUC	H2MCmd;
+	H2M_MAILBOX_STRUC	H2MMailbox;
+	ULONG				i = 0;
+#ifdef RTMP_MAC_PCI
+#ifdef RALINK_ATE
+	static UINT32 j = 0;
+#endif // RALINK_ATE //
+#endif // RTMP_MAC_PCI //
+#ifdef CONFIG_STA_SUPPORT
+#ifdef PCIE_PS_SUPPORT
+	// 3090F power solution 3 has hw limitation that needs to ban all mcu command 
+	// when firmware is in radio state.  For other chip doesn't have this limitation. 
+	if (((IS_RT3090(pAd) || IS_RT3572(pAd) || IS_RT3390(pAd)) && IS_VERSION_AFTER_F(pAd)) && IS_VERSION_AFTER_F(pAd)
+		&& (pAd->StaCfg.PSControl.field.rt30xxPowerMode == 3) 
+		&& (pAd->StaCfg.PSControl.field.EnableNewPS == TRUE))
+	{
+		RTMP_SEM_LOCK(&pAd->McuCmdLock);
+		if ((pAd->brt30xxBanMcuCmd == TRUE)
+			&& (Command != WAKE_MCU_CMD) && (Command != RFOFF_MCU_CMD))
+		{
+			RTMP_SEM_UNLOCK(&pAd->McuCmdLock);
+			DBGPRINT(RT_DEBUG_TRACE, (" Ban Mcu Cmd %x in sleep mode\n",  Command));
+			return FALSE;
+		}
+		else if ((Command == SLEEP_MCU_CMD)
+			||(Command == RFOFF_MCU_CMD))
+		{
+			pAd->brt30xxBanMcuCmd = TRUE;
+		}
+		else if (Command != WAKE_MCU_CMD)
+		{
+			pAd->brt30xxBanMcuCmd = FALSE;
+		}
+
+		RTMP_SEM_UNLOCK(&pAd->McuCmdLock);
+
+	}
+	if (((IS_RT3090(pAd) || IS_RT3572(pAd) || IS_RT3390(pAd)) && IS_VERSION_AFTER_F(pAd)) && IS_VERSION_AFTER_F(pAd)
+		&& (pAd->StaCfg.PSControl.field.rt30xxPowerMode == 3) 
+		&& (pAd->StaCfg.PSControl.field.EnableNewPS == TRUE)
+		&& (Command == WAKE_MCU_CMD))
+	{
+
+	do
+	{
+			RTMP_IO_FORCE_READ32(pAd, H2M_MAILBOX_CSR, &H2MMailbox.word);
+			if (H2MMailbox.field.Owner == 0)
+				break;
+
+			if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_NIC_NOT_EXIST))				
+				return FALSE;
+
+			RTMPusecDelay(2);
+			DBGPRINT(RT_DEBUG_INFO, ("AsicSendCommanToMcu::Mail box is busy\n"));
+		} while(i++ < 100);
+
+		if (i >= 100)
+		{
+			DBGPRINT_ERR(("H2M_MAILBOX still hold by MCU. command fail\n"));
+			return FALSE;
+		}
+
+		H2MMailbox.field.Owner	  = 1;	   // pass ownership to MCU
+		H2MMailbox.field.CmdToken = Token;
+		H2MMailbox.field.HighByte = Arg1;
+		H2MMailbox.field.LowByte  = Arg0;
+		RTMP_IO_FORCE_WRITE32(pAd, H2M_MAILBOX_CSR, H2MMailbox.word);
+
+		H2MCmd.word 			  = 0;
+		H2MCmd.field.HostCommand  = Command;
+		RTMP_IO_FORCE_WRITE32(pAd, HOST_CMD_CSR, H2MCmd.word);
+
+
+	}
+	else
+#endif // CONFIG_STA_SUPPORT //
+#endif // PCIE_PS_SUPPORT //
+	{
+	do
+	{
+		RTMP_IO_READ32(pAd, H2M_MAILBOX_CSR, &H2MMailbox.word);
+		if (H2MMailbox.field.Owner == 0)
+			break;
+
+		if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_NIC_NOT_EXIST))			
+			return FALSE;
+		
+		RTMPusecDelay(2);
+	} while(i++ < 100);
+
+	if (i >= 100)
+	{
+#ifdef RTMP_MAC_PCI
+#ifdef RALINK_ATE
+		if (pAd->ate.bFWLoading == TRUE)
+		{
+			/* reloading firmware when received iwpriv cmd "ATE=ATESTOP" */
+			if (j > 0)
+			{
+				if (j % 64 != 0)
+				{
+					ATEDBGPRINT(RT_DEBUG_ERROR, ("#"));
+				}
+				else
+				{
+					ATEDBGPRINT(RT_DEBUG_ERROR, ("\n"));
+				}
+				++j;
+			}
+			else if (j == 0)
+			{
+				ATEDBGPRINT(RT_DEBUG_ERROR, ("Loading firmware. Please wait for a moment...\n"));
+				++j;
+			}
+		}
+		else
+#endif // RALINK_ATE //
+#endif // RTMP_MAC_PCI //
+		{
+		DBGPRINT_ERR(("H2M_MAILBOX still hold by MCU. command fail\n"));
+		}
+		return FALSE;
+	}
+
+#ifdef RTMP_MAC_PCI
+#ifdef RALINK_ATE
+	else if (pAd->ate.bFWLoading == TRUE)
+	{
+		/* reloading of firmware is completed */
+		pAd->ate.bFWLoading = FALSE;
+		ATEDBGPRINT(RT_DEBUG_ERROR, ("\n"));
+		j = 0;
+	}
+#endif // RALINK_ATE //
+#endif // RTMP_MAC_PCI //
+
+	H2MMailbox.field.Owner	  = 1;	   // pass ownership to MCU
+	H2MMailbox.field.CmdToken = Token;
+	H2MMailbox.field.HighByte = Arg1;
+	H2MMailbox.field.LowByte  = Arg0;
+	RTMP_IO_WRITE32(pAd, H2M_MAILBOX_CSR, H2MMailbox.word);
+
+	H2MCmd.word 			  = 0;
+	H2MCmd.field.HostCommand  = Command;
+	RTMP_IO_WRITE32(pAd, HOST_CMD_CSR, H2MCmd.word);
+
+	if (Command != 0x80)
+	{
+	}
+}
+#ifdef CONFIG_STA_SUPPORT
+#ifdef PCIE_PS_SUPPORT
+	// 3090 MCU Wakeup command needs more time to be stable. 
+	// Before stable, don't issue other MCU command to prevent from firmware error.
+	if (((IS_RT3090(pAd) || IS_RT3572(pAd) || IS_RT3390(pAd)) && IS_VERSION_AFTER_F(pAd)) && IS_VERSION_AFTER_F(pAd)
+		&& (pAd->StaCfg.PSControl.field.rt30xxPowerMode == 3) 
+		&& (pAd->StaCfg.PSControl.field.EnableNewPS == TRUE)
+		&& (Command == WAKE_MCU_CMD))
+	{
+		RTMPusecDelay(2000);
+		//Put this is after RF programming.  
+		//NdisAcquireSpinLock(&pAd->McuCmdLock);
+		//pAd->brt30xxBanMcuCmd = FALSE;
+		//NdisReleaseSpinLock(&pAd->McuCmdLock);
+	}
+#endif // CONFIG_STA_SUPPORT //
+#endif // PCIE_PS_SUPPORT //	
+	
+	return TRUE;
+}
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/rtmp_timer.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/rtmp_timer.c
new file mode 100644
index 000000000..147285f4e
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/rtmp_timer.c
@@ -0,0 +1,334 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+    Module Name:
+    rtmp_timer.c
+
+    Abstract:
+    task for timer handling
+
+    Revision History:
+    Who         When            What
+    --------    ----------      ----------------------------------------------
+    Name          Date            Modification logs
+    Shiang Tu	08-28-2008   init version
+    
+*/
+
+#include "rt_config.h"
+
+
+BUILD_TIMER_FUNCTION(MlmePeriodicExec);
+//BUILD_TIMER_FUNCTION(MlmeRssiReportExec);
+BUILD_TIMER_FUNCTION(AsicRxAntEvalTimeout);
+BUILD_TIMER_FUNCTION(APSDPeriodicExec);
+BUILD_TIMER_FUNCTION(AsicRfTuningExec);
+
+#ifdef CONFIG_STA_SUPPORT
+BUILD_TIMER_FUNCTION(BeaconTimeout);
+BUILD_TIMER_FUNCTION(ScanTimeout);
+BUILD_TIMER_FUNCTION(AuthTimeout);
+BUILD_TIMER_FUNCTION(AssocTimeout);
+BUILD_TIMER_FUNCTION(ReassocTimeout);
+BUILD_TIMER_FUNCTION(DisassocTimeout);
+BUILD_TIMER_FUNCTION(LinkDownExec);
+BUILD_TIMER_FUNCTION(StaQuickResponeForRateUpExec);
+BUILD_TIMER_FUNCTION(WpaDisassocApAndBlockAssoc);
+#ifdef PCIE_PS_SUPPORT
+BUILD_TIMER_FUNCTION(PsPollWakeExec);
+BUILD_TIMER_FUNCTION(RadioOnExec);
+#endif // PCIE_PS_SUPPORT //
+#ifdef QOS_DLS_SUPPORT
+BUILD_TIMER_FUNCTION(DlsTimeoutAction);
+#endif // QOS_DLS_SUPPORT //
+
+
+
+
+
+#endif // CONFIG_STA_SUPPORT //
+
+
+
+#if defined(AP_LED) || defined(STA_LED)
+extern void LedCtrlMain(
+	IN PVOID SystemSpecific1, 
+	IN PVOID FunctionContext, 
+	IN PVOID SystemSpecific2, 
+	IN PVOID SystemSpecific3);
+BUILD_TIMER_FUNCTION(LedCtrlMain);
+#endif
+
+
+#ifdef RT2883_TEMP_PATCH
+BUILD_TIMER_FUNCTION(eTxBfProbeTimerExec);
+#endif // RT2883_TEMP_PATCH //
+
+#ifdef RTMP_TIMER_TASK_SUPPORT
+static void RtmpTimerQHandle(RTMP_ADAPTER *pAd)
+{
+#ifndef KTHREAD_SUPPORT
+	int status;
+#endif
+	RALINK_TIMER_STRUCT	*pTimer;
+	RTMP_TIMER_TASK_ENTRY	*pEntry;
+	unsigned long	irqFlag;
+	RTMP_OS_TASK *pTask;
+
+
+	pTask = &pAd->timerTask;
+	while(!pTask->task_killed)
+	{
+		pTimer = NULL;
+
+#ifdef KTHREAD_SUPPORT
+		RTMP_WAIT_EVENT_INTERRUPTIBLE(pAd, pTask);
+#else
+		RTMP_SEM_EVENT_WAIT(&(pTask->taskSema), status);
+#endif
+
+		if (pAd->TimerQ.status == RTMP_TASK_STAT_STOPED)
+			break;
+		
+		// event happened.
+		while(pAd->TimerQ.pQHead)
+		{
+			RTMP_INT_LOCK(&pAd->TimerQLock, irqFlag);
+			pEntry = pAd->TimerQ.pQHead;
+			if (pEntry)
+			{
+				pTimer = pEntry->pRaTimer;
+
+				// update pQHead
+				pAd->TimerQ.pQHead = pEntry->pNext;
+				if (pEntry == pAd->TimerQ.pQTail)
+					pAd->TimerQ.pQTail = NULL;
+			
+				// return this queue entry to timerQFreeList.
+				pEntry->pNext = pAd->TimerQ.pQPollFreeList;
+				pAd->TimerQ.pQPollFreeList = pEntry;
+			}
+			RTMP_INT_UNLOCK(&pAd->TimerQLock, irqFlag);
+
+			if (pTimer)
+			{
+				if ((pTimer->handle != NULL) && (!pAd->PM_FlgSuspend))
+					pTimer->handle(NULL, (PVOID) pTimer->cookie, NULL, pTimer);
+				if ((pTimer->Repeat) && (pTimer->State == FALSE))
+					RTMP_OS_Add_Timer(&pTimer->TimerObj, pTimer->TimerValue);
+			}
+		}
+		
+#ifndef KTHREAD_SUPPORT
+		if (status != 0)
+		{
+			pAd->TimerQ.status = RTMP_TASK_STAT_STOPED;
+			RTMP_SET_FLAG(pAd, fRTMP_ADAPTER_HALT_IN_PROGRESS);
+			break;
+		}
+#endif
+	}
+}
+
+
+INT RtmpTimerQThread(
+	IN ULONG Context)
+{
+	RTMP_OS_TASK	*pTask;
+	PRTMP_ADAPTER	pAd;
+
+
+	pTask = (RTMP_OS_TASK *)Context;
+	pAd = (PRTMP_ADAPTER)pTask->priv;
+
+	RtmpOSTaskCustomize(pTask);
+	
+	RtmpTimerQHandle(pAd);
+
+	DBGPRINT(RT_DEBUG_TRACE,( "<---%s\n",__FUNCTION__));
+#ifndef KTHREAD_SUPPORT
+	pTask->taskPID = THREAD_PID_INIT_VALUE;
+#endif
+	/* notify the exit routine that we're actually exiting now 
+	 *
+	 * complete()/wait_for_completion() is similar to up()/down(),
+	 * except that complete() is safe in the case where the structure
+	 * is getting deleted in a parallel mode of execution (i.e. just
+	 * after the down() -- that's necessary for the thread-shutdown
+	 * case.
+	 *
+	 * complete_and_exit() goes even further than this -- it is safe in
+	 * the case that the thread of the caller is going away (not just
+	 * the structure) -- this is necessary for the module-remove case.
+	 * This is important in preemption kernels, which transfer the flow
+	 * of execution immediately upon a complete().
+	 */
+	RtmpOSTaskNotifyToExit(pTask);
+	
+	return 0;
+
+}
+
+
+RTMP_TIMER_TASK_ENTRY *RtmpTimerQInsert(
+	IN RTMP_ADAPTER *pAd, 
+	IN RALINK_TIMER_STRUCT *pTimer)
+{
+	RTMP_TIMER_TASK_ENTRY *pQNode = NULL, *pQTail;
+	unsigned long irqFlags;
+	RTMP_OS_TASK	*pTask = &pAd->timerTask;
+
+	RTMP_INT_LOCK(&pAd->TimerQLock, irqFlags);
+	if (pAd->TimerQ.status & RTMP_TASK_CAN_DO_INSERT)
+	{
+		if(pAd->TimerQ.pQPollFreeList)
+		{
+			pQNode = pAd->TimerQ.pQPollFreeList;
+			pAd->TimerQ.pQPollFreeList = pQNode->pNext;
+
+			pQNode->pRaTimer = pTimer;
+			pQNode->pNext = NULL;
+
+			pQTail = pAd->TimerQ.pQTail;
+			if (pAd->TimerQ.pQTail != NULL)
+				pQTail->pNext = pQNode;
+			pAd->TimerQ.pQTail = pQNode;
+			if (pAd->TimerQ.pQHead == NULL)
+				pAd->TimerQ.pQHead = pQNode;
+		}
+	}
+	RTMP_INT_UNLOCK(&pAd->TimerQLock, irqFlags);
+
+	if (pQNode)
+	{
+#ifdef KTHREAD_SUPPORT
+		WAKE_UP(pTask);
+#else
+		RTMP_SEM_EVENT_UP(&pTask->taskSema);
+#endif
+	}
+
+	return pQNode;
+}
+
+
+BOOLEAN RtmpTimerQRemove(
+	IN RTMP_ADAPTER *pAd, 
+	IN RALINK_TIMER_STRUCT *pTimer)
+{
+	RTMP_TIMER_TASK_ENTRY *pNode, *pPrev = NULL;
+	unsigned long irqFlags;
+
+	RTMP_INT_LOCK(&pAd->TimerQLock, irqFlags);
+	if (pAd->TimerQ.status >= RTMP_TASK_STAT_INITED)
+	{
+		pNode = pAd->TimerQ.pQHead;
+		while (pNode)
+		{
+			if (pNode->pRaTimer == pTimer)
+				break;
+			pPrev = pNode;
+			pNode = pNode->pNext;
+		}
+
+		// Now move it to freeList queue.
+		if (pNode)
+		{	
+			if (pNode == pAd->TimerQ.pQHead)
+				pAd->TimerQ.pQHead = pNode->pNext;
+			if (pNode == pAd->TimerQ.pQTail)
+				pAd->TimerQ.pQTail = pPrev;
+			if (pPrev != NULL)
+				pPrev->pNext = pNode->pNext;
+			
+			// return this queue entry to timerQFreeList.
+			pNode->pNext = pAd->TimerQ.pQPollFreeList;
+			pAd->TimerQ.pQPollFreeList = pNode;
+		}
+	}
+	RTMP_INT_UNLOCK(&pAd->TimerQLock, irqFlags);
+			
+	return TRUE;
+}
+
+
+void RtmpTimerQExit(RTMP_ADAPTER *pAd)
+{
+	RTMP_TIMER_TASK_ENTRY *pTimerQ;
+	unsigned long irqFlags;
+	
+	RTMP_INT_LOCK(&pAd->TimerQLock, irqFlags);
+	while (pAd->TimerQ.pQHead)
+	{
+		pTimerQ = pAd->TimerQ.pQHead;
+		pAd->TimerQ.pQHead = pTimerQ->pNext;
+		// remove the timeQ
+	}
+	pAd->TimerQ.pQPollFreeList = NULL;
+	os_free_mem(pAd, pAd->TimerQ.pTimerQPoll);
+	pAd->TimerQ.pQTail = NULL;
+	pAd->TimerQ.pQHead = NULL;
+#ifndef KTHREAD_SUPPORT
+	pAd->TimerQ.status = RTMP_TASK_STAT_STOPED;
+#endif
+	RTMP_INT_UNLOCK(&pAd->TimerQLock, irqFlags);
+	
+}
+
+
+void RtmpTimerQInit(RTMP_ADAPTER *pAd)
+{
+	int 	i;
+	RTMP_TIMER_TASK_ENTRY *pQNode, *pEntry;
+	unsigned long irqFlags;
+	
+	NdisAllocateSpinLock(&pAd->TimerQLock);
+	
+	NdisZeroMemory(&pAd->TimerQ, sizeof(pAd->TimerQ));
+
+	os_alloc_mem(pAd, &pAd->TimerQ.pTimerQPoll, sizeof(RTMP_TIMER_TASK_ENTRY) * TIMER_QUEUE_SIZE_MAX);
+	if (pAd->TimerQ.pTimerQPoll)
+	{
+		pEntry = NULL;
+		pQNode = (RTMP_TIMER_TASK_ENTRY *)pAd->TimerQ.pTimerQPoll;
+		NdisZeroMemory(pAd->TimerQ.pTimerQPoll, sizeof(RTMP_TIMER_TASK_ENTRY) * TIMER_QUEUE_SIZE_MAX);
+
+		RTMP_INT_LOCK(&pAd->TimerQLock, irqFlags);
+		for (i = 0 ;i <TIMER_QUEUE_SIZE_MAX; i++)
+		{
+			pQNode->pNext = pEntry;
+			pEntry = pQNode;
+			pQNode++;
+		}
+		pAd->TimerQ.pQPollFreeList = pEntry;
+		pAd->TimerQ.pQHead = NULL;
+		pAd->TimerQ.pQTail = NULL;
+		pAd->TimerQ.status = RTMP_TASK_STAT_INITED;
+		RTMP_INT_UNLOCK(&pAd->TimerQLock, irqFlags);
+	}
+}
+#endif // RTMP_TIMER_TASK_SUPPORT //
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/spectrum.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/spectrum.c
new file mode 100644
index 000000000..7249da9a8
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/spectrum.c
@@ -0,0 +1,2298 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+    Module Name:
+	action.c
+ 
+    Abstract:
+    Handle association related requests either from WSTA or from local MLME
+ 
+    Revision History:
+    Who          When          What
+    ---------    ----------    ----------------------------------------------
+	Fonchi Wu    2008	  	   created for 802.11h
+ */
+
+#include "rt_config.h"
+#include "action.h"
+
+
+/* The regulatory information in the USA (US) */
+DOT11_REGULATORY_INFORMATION USARegulatoryInfo[] = 
+{
+/*  "regulatory class"  "number of channels"  "Max Tx Pwr"  "channel list" */
+    {0,	                {0,                   0,           {0}}}, // Invlid entry
+    {1,                 {4,                   16,           {36, 40, 44, 48}}}, 
+    {2,                 {4,                   23,           {52, 56, 60, 64}}}, 
+    {3,                 {4,                   29,           {149, 153, 157, 161}}}, 
+    {4,                 {11,                  23,           {100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140}}}, 
+    {5,                 {5,                   30,           {149, 153, 157, 161, 165}}}, 
+    {6,                 {10,                  14,           {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}}}, 
+    {7,                 {10,                  27,           {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}}}, 
+    {8,                 {5,                   17,           {11, 13, 15, 17, 19}}}, 
+    {9,                 {5,                   30,           {11, 13, 15, 17, 19}}}, 
+    {10,                {2,                   20,           {21, 25}}}, 
+    {11,                {2,                   33,            {21, 25}}}, 
+    {12,                {11,                  30,            {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}}}
+};
+#define USA_REGULATORY_INFO_SIZE (sizeof(USARegulatoryInfo) / sizeof(DOT11_REGULATORY_INFORMATION))
+
+
+/* The regulatory information in Europe */
+DOT11_REGULATORY_INFORMATION EuropeRegulatoryInfo[] = 
+{
+/*  "regulatory class"  "number of channels"  "Max Tx Pwr"  "channel list" */
+    {0,                 {0,                   0,           {0}}}, // Invalid entry
+    {1,                 {4,                   20,           {36, 40, 44, 48}}}, 
+    {2,                 {4,                   20,           {52, 56, 60, 64}}}, 
+    {3,                 {11,                  30,           {100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140}}}, 
+    {4,                 {13,                  20,           {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}}}
+};
+#define EU_REGULATORY_INFO_SIZE (sizeof(EuropeRegulatoryInfo) / sizeof(DOT11_REGULATORY_INFORMATION))
+
+
+/* The regulatory information in Japan */
+DOT11_REGULATORY_INFORMATION JapanRegulatoryInfo[] = 
+{
+/*  "regulatory class"  "number of channels"  "Max Tx Pwr"  "channel list" */
+    {0,                 {0,                   0,           {0}}}, // Invalid entry
+    {1,                 {4,                   22,           {34, 38, 42, 46}}}, 
+    {2,                 {3,                   24,           {8, 12, 16}}}, 
+    {3,                 {3,                   24,           {8, 12, 16}}}, 
+    {4,                 {3,                   24,           {8, 12, 16}}}, 
+    {5,                 {3,                   24,           {8, 12, 16}}}, 
+    {6,                 {3,                   22,           {8, 12, 16}}}, 
+    {7,                 {4,                   24,           {184, 188, 192, 196}}}, 
+    {8,                 {4,                   24,           {184, 188, 192, 196}}}, 
+    {9,                 {4,                   24,           {184, 188, 192, 196}}}, 
+    {10,                {4,                   24,           {184, 188, 192, 196}}}, 
+    {11,                {4,                   22,           {184, 188, 192, 196}}}, 
+    {12,                {4,                   24,           {7, 8, 9, 11}}}, 
+    {13,                {4,                   24,           {7, 8, 9, 11}}}, 
+    {14,                {4,                   24,           {7, 8, 9, 11}}}, 
+    {15,                {4,                   24,           {7, 8, 9, 11}}}, 
+    {16,                {6,                   24,           {183, 184, 185, 187, 188, 189}}}, 
+    {17,                {6,                   24,           {183, 184, 185, 187, 188, 189}}}, 
+    {18,                {6,                   24,           {183, 184, 185, 187, 188, 189}}}, 
+    {19,                {6,                   24,           {183, 184, 185, 187, 188, 189}}}, 
+    {20,                {6,                   17,           {183, 184, 185, 187, 188, 189}}}, 
+    {21,                {6,                   24,           {6, 7, 8, 9, 10, 11}}}, 
+    {22,                {6,                   24,           {6, 7, 8, 9, 10, 11}}}, 
+    {23,                {6,                   24,           {6, 7, 8, 9, 10, 11}}}, 
+    {24,                {6,                   24,           {6, 7, 8, 9, 10, 11}}}, 
+    {25,                {8,                   24,           {182, 183, 184, 185, 186, 187, 188, 189}}}, 
+    {26,                {8,                   24,           {182, 183, 184, 185, 186, 187, 188, 189}}}, 
+    {27,                {8,                   24,           {182, 183, 184, 185, 186, 187, 188, 189}}}, 
+    {28,                {8,                   24,           {182, 183, 184, 185, 186, 187, 188, 189}}}, 
+    {29,                {8,                   17,           {182, 183, 184, 185, 186, 187, 188, 189}}}, 
+    {30,                {13,                  23,           {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13}}}, 
+    {31,                {1,                   23,           {14}}}, 
+    {32,                {4,                   22,           {52, 56, 60, 64}}}
+};
+#define JP_REGULATORY_INFO_SIZE (sizeof(JapanRegulatoryInfo) / sizeof(DOT11_REGULATORY_INFORMATION))
+
+
+UINT8 GetRegulatoryMaxTxPwr(
+	IN PRTMP_ADAPTER pAd,
+	IN UINT8 channel)
+{
+	ULONG RegulatoryClassLoop, ChIdx;
+	UINT8 RegulatoryClass;
+	UINT8 MaxRegulatoryClassNum;
+	PDOT11_REGULATORY_INFORMATION pRegulatoryClass;
+	PSTRING pCountry = pAd->CommonCfg.CountryCode;
+
+
+	if (strncmp(pCountry, "US", 2) == 0)
+	{
+		MaxRegulatoryClassNum = USA_REGULATORY_INFO_SIZE;
+		pRegulatoryClass = &USARegulatoryInfo[0];
+	}
+	else if (strncmp(pCountry, "JP", 2) == 0)
+	{
+		MaxRegulatoryClassNum = JP_REGULATORY_INFO_SIZE;
+		pRegulatoryClass = &JapanRegulatoryInfo[0];
+	}
+	else
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("%s: Unknow Country (%s)\n",
+					__FUNCTION__, pCountry));
+		return 0xff;
+	}
+
+	for (RegulatoryClassLoop = 0;
+			RegulatoryClassLoop<MAX_NUM_OF_REGULATORY_CLASS;
+			RegulatoryClassLoop++)
+	{
+		PDOT11_CHANNEL_SET pChannelSet;
+
+		RegulatoryClass = pAd->CommonCfg.RegulatoryClass[RegulatoryClassLoop];
+		if (RegulatoryClass >= MaxRegulatoryClassNum)
+		{
+			DBGPRINT(RT_DEBUG_ERROR, ("%s: %c%c Unknow Requlatory class (%d)\n",
+						__FUNCTION__, pCountry[0], pCountry[1], RegulatoryClass));
+			return 0xff;
+		}
+		pChannelSet = &pRegulatoryClass[RegulatoryClass].ChannelSet;
+		for (ChIdx=0; ChIdx<pChannelSet->NumberOfChannels; ChIdx++)
+		{
+			if (channel == pChannelSet->ChannelList[ChIdx])
+				return pChannelSet->MaxTxPwr;
+		
+		}
+		if (ChIdx == pChannelSet->NumberOfChannels)
+			return 0xff;
+	}
+
+	return 0xff;
+}
+
+CHAR RTMP_GetTxPwr(
+	IN PRTMP_ADAPTER pAd,
+	IN HTTRANSMIT_SETTING HTTxMode)
+{
+typedef struct __TX_PWR_CFG
+{
+	UINT8 Mode;
+	UINT8 MCS;
+	UINT16 req;
+	UINT8 shift;
+	UINT32 BitMask;
+} TX_PWR_CFG;
+
+	UINT32 Value;
+	INT Idx;
+	UINT8 PhyMode;
+	CHAR CurTxPwr;
+	UINT8 TxPwrRef = 0;
+	CHAR DaltaPwr;
+	ULONG TxPwr[5];
+
+
+	TX_PWR_CFG TxPwrCfg[] = {
+		{MODE_CCK, 0, 0, 4, 0x000000f0},
+		{MODE_CCK, 1, 0, 0, 0x0000000f},
+		{MODE_CCK, 2, 0, 12, 0x0000f000},
+		{MODE_CCK, 3, 0, 8, 0x00000f00},
+
+		{MODE_OFDM, 0, 0, 20, 0x00f00000},
+		{MODE_OFDM, 1, 0, 16, 0x000f0000},
+		{MODE_OFDM, 2, 0, 28, 0xf0000000},
+		{MODE_OFDM, 3, 0, 24, 0x0f000000},
+		{MODE_OFDM, 4, 1, 4, 0x000000f0},
+		{MODE_OFDM, 5, 1, 0, 0x0000000f},
+		{MODE_OFDM, 6, 1, 12, 0x0000f000},
+		{MODE_OFDM, 7, 1, 8, 0x00000f00}
+#ifdef DOT11_N_SUPPORT
+		,{MODE_HTMIX, 0, 1, 20, 0x00f00000},
+		{MODE_HTMIX, 1, 1, 16, 0x000f0000},
+		{MODE_HTMIX, 2, 1, 28, 0xf0000000},
+		{MODE_HTMIX, 3, 1, 24, 0x0f000000},
+		{MODE_HTMIX, 4, 2, 4, 0x000000f0},
+		{MODE_HTMIX, 5, 2, 0, 0x0000000f},
+		{MODE_HTMIX, 6, 2, 12, 0x0000f000},
+		{MODE_HTMIX, 7, 2, 8, 0x00000f00},
+		{MODE_HTMIX, 8, 2, 20, 0x00f00000},
+		{MODE_HTMIX, 9, 2, 16, 0x000f0000},
+		{MODE_HTMIX, 10, 2, 28, 0xf0000000},
+		{MODE_HTMIX, 11, 2, 24, 0x0f000000},
+		{MODE_HTMIX, 12, 3, 4, 0x000000f0},
+		{MODE_HTMIX, 13, 3, 0, 0x0000000f},
+		{MODE_HTMIX, 14, 3, 12, 0x0000f000},
+		{MODE_HTMIX, 15, 3, 8, 0x00000f00}
+#endif // DOT11_N_SUPPORT //
+	};
+#define MAX_TXPWR_TAB_SIZE (sizeof(TxPwrCfg) / sizeof(TX_PWR_CFG))
+
+#ifdef SINGLE_SKU
+	CurTxPwr = pAd->CommonCfg.DefineMaxTxPwr;
+#else
+	CurTxPwr = 19;
+#endif
+
+	/* check Tx Power setting from UI. */
+	if (pAd->CommonCfg.TxPowerPercentage > 90)
+		;
+	else if (pAd->CommonCfg.TxPowerPercentage > 60)  /* reduce Pwr for 1 dB. */
+		CurTxPwr -= 1;
+	else if (pAd->CommonCfg.TxPowerPercentage > 30)  /* reduce Pwr for 3 dB. */
+		CurTxPwr -= 3;
+	else if (pAd->CommonCfg.TxPowerPercentage > 15)  /* reduce Pwr for 6 dB. */
+		CurTxPwr -= 6;
+	else if (pAd->CommonCfg.TxPowerPercentage > 9)   /* reduce Pwr for 9 dB. */
+		CurTxPwr -= 9;
+	else                                           /* reduce Pwr for 12 dB. */
+		CurTxPwr -= 12;
+
+	if (pAd->CommonCfg.BBPCurrentBW == BW_40)
+	{
+		if (pAd->CommonCfg.CentralChannel > 14)
+		{
+			TxPwr[0] = pAd->Tx40MPwrCfgABand[0];
+			TxPwr[1] = pAd->Tx40MPwrCfgABand[1];
+			TxPwr[2] = pAd->Tx40MPwrCfgABand[2];
+			TxPwr[3] = pAd->Tx40MPwrCfgABand[3];
+			TxPwr[4] = pAd->Tx40MPwrCfgABand[4];
+		}
+		else
+		{
+			TxPwr[0] = pAd->Tx40MPwrCfgGBand[0];
+			TxPwr[1] = pAd->Tx40MPwrCfgGBand[1];
+			TxPwr[2] = pAd->Tx40MPwrCfgGBand[2];
+			TxPwr[3] = pAd->Tx40MPwrCfgGBand[3];
+			TxPwr[4] = pAd->Tx40MPwrCfgGBand[4];
+		}
+	}
+	else
+	{
+		if (pAd->CommonCfg.Channel > 14)
+		{
+			TxPwr[0] = pAd->Tx20MPwrCfgABand[0];
+			TxPwr[1] = pAd->Tx20MPwrCfgABand[1];
+			TxPwr[2] = pAd->Tx20MPwrCfgABand[2];
+			TxPwr[3] = pAd->Tx20MPwrCfgABand[3];
+			TxPwr[4] = pAd->Tx20MPwrCfgABand[4];
+		}
+		else
+		{
+			TxPwr[0] = pAd->Tx20MPwrCfgGBand[0];
+			TxPwr[1] = pAd->Tx20MPwrCfgGBand[1];
+			TxPwr[2] = pAd->Tx20MPwrCfgGBand[2];
+			TxPwr[3] = pAd->Tx20MPwrCfgGBand[3];
+			TxPwr[4] = pAd->Tx20MPwrCfgGBand[4];
+		}
+	}
+
+
+	switch(HTTxMode.field.MODE)
+	{
+		case MODE_CCK:
+		case MODE_OFDM:
+			Value = TxPwr[1];
+			TxPwrRef = (Value & 0x00000f00) >> 8;
+			
+			break;
+
+#ifdef DOT11_N_SUPPORT
+		case MODE_HTMIX:
+		case MODE_HTGREENFIELD:
+			if (pAd->CommonCfg.TxStream == 1)
+			{
+				Value = TxPwr[2];
+				TxPwrRef = (Value & 0x00000f00) >> 8;
+			}
+			else if (pAd->CommonCfg.TxStream == 2)
+			{
+				Value = TxPwr[3];
+				TxPwrRef = (Value & 0x00000f00) >> 8;
+			}
+			break;
+#endif // DOT11_N_SUPPORT //
+	}
+
+	PhyMode =
+#ifdef DOT11_N_SUPPORT
+				(HTTxMode.field.MODE == MODE_HTGREENFIELD)
+				? MODE_HTMIX :
+#endif // DOT11_N_SUPPORT //
+				HTTxMode.field.MODE;
+
+	for (Idx = 0; Idx < MAX_TXPWR_TAB_SIZE; Idx++)
+	{
+		if ((TxPwrCfg[Idx].Mode == PhyMode)
+			&& (TxPwrCfg[Idx].MCS == HTTxMode.field.MCS))
+		{
+			Value = TxPwr[TxPwrCfg[Idx].req];
+			DaltaPwr = TxPwrRef - (CHAR)((Value & TxPwrCfg[Idx].BitMask)
+											>> TxPwrCfg[Idx].shift);
+			CurTxPwr -= DaltaPwr;
+			break;
+		}
+	}
+
+	return CurTxPwr;
+}
+
+
+NDIS_STATUS MeasureReqTabInit(
+	IN PRTMP_ADAPTER pAd)
+{
+	NDIS_STATUS Status = NDIS_STATUS_SUCCESS;
+	
+	NdisAllocateSpinLock(&pAd->CommonCfg.MeasureReqTabLock);
+
+	pAd->CommonCfg.pMeasureReqTab = kmalloc(sizeof(MEASURE_REQ_TAB), GFP_ATOMIC);
+	if (pAd->CommonCfg.pMeasureReqTab)
+		NdisZeroMemory(pAd->CommonCfg.pMeasureReqTab, sizeof(MEASURE_REQ_TAB));
+	else
+	{		
+		DBGPRINT(RT_DEBUG_ERROR, ("%s Fail to alloc memory for pAd->CommonCfg.pMeasureReqTab.\n", __FUNCTION__));		
+		Status = NDIS_STATUS_FAILURE;	
+	}	
+
+	return Status;
+}
+
+VOID MeasureReqTabExit(
+	IN PRTMP_ADAPTER pAd)
+{
+	NdisFreeSpinLock(&pAd->CommonCfg.MeasureReqTabLock);
+
+	if (pAd->CommonCfg.pMeasureReqTab)
+		kfree(pAd->CommonCfg.pMeasureReqTab);
+	pAd->CommonCfg.pMeasureReqTab = NULL;
+
+	return;
+}
+
+PMEASURE_REQ_ENTRY MeasureReqLookUp(
+	IN PRTMP_ADAPTER	pAd,
+	IN UINT8			DialogToken)
+{
+	UINT HashIdx;
+	PMEASURE_REQ_TAB pTab = pAd->CommonCfg.pMeasureReqTab;
+	PMEASURE_REQ_ENTRY pEntry = NULL;
+	PMEASURE_REQ_ENTRY pPrevEntry = NULL;
+
+	if (pTab == NULL)
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("%s: pMeasureReqTab doesn't exist.\n", __FUNCTION__));
+		return NULL;
+	}
+
+	RTMP_SEM_LOCK(&pAd->CommonCfg.MeasureReqTabLock);
+
+	HashIdx = MQ_DIALOGTOKEN_HASH_INDEX(DialogToken);
+	pEntry = pTab->Hash[HashIdx];
+
+	while (pEntry)
+	{
+		if (pEntry->DialogToken == DialogToken) 
+			break;
+		else
+		{
+			pPrevEntry = pEntry;
+			pEntry = pEntry->pNext;
+		}
+	}
+
+	RTMP_SEM_UNLOCK(&pAd->CommonCfg.MeasureReqTabLock);
+	
+	return pEntry;
+}
+
+PMEASURE_REQ_ENTRY MeasureReqInsert(
+	IN PRTMP_ADAPTER	pAd,
+	IN UINT8			DialogToken)
+{
+	INT i;
+	ULONG HashIdx;
+	PMEASURE_REQ_TAB pTab = pAd->CommonCfg.pMeasureReqTab;
+	PMEASURE_REQ_ENTRY pEntry = NULL, pCurrEntry;
+	ULONG Now;
+
+	if(pTab == NULL)
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("%s: pMeasureReqTab doesn't exist.\n", __FUNCTION__));
+		return NULL;
+	}
+
+	pEntry = MeasureReqLookUp(pAd, DialogToken);
+	if (pEntry == NULL)
+	{
+		RTMP_SEM_LOCK(&pAd->CommonCfg.MeasureReqTabLock);
+		for (i = 0; i < MAX_MEASURE_REQ_TAB_SIZE; i++)
+		{
+			NdisGetSystemUpTime(&Now);
+			pEntry = &pTab->Content[i];
+ 
+			if ((pEntry->Valid == TRUE)
+				&& RTMP_TIME_AFTER((unsigned long)Now, (unsigned long)(pEntry->lastTime + MQ_REQ_AGE_OUT)))
+			{
+				PMEASURE_REQ_ENTRY pPrevEntry = NULL;
+				ULONG HashIdx = MQ_DIALOGTOKEN_HASH_INDEX(pEntry->DialogToken);
+				PMEASURE_REQ_ENTRY pProbeEntry = pTab->Hash[HashIdx];
+
+				// update Hash list
+				do
+				{
+					if (pProbeEntry == pEntry)
+					{
+						if (pPrevEntry == NULL)
+						{
+							pTab->Hash[HashIdx] = pEntry->pNext;
+						}
+						else
+						{
+							pPrevEntry->pNext = pEntry->pNext;
+						}
+						break;
+					}
+
+					pPrevEntry = pProbeEntry;
+					pProbeEntry = pProbeEntry->pNext;
+				} while (pProbeEntry);
+
+				NdisZeroMemory(pEntry, sizeof(MEASURE_REQ_ENTRY));
+				pTab->Size--;
+
+				break;
+			}
+ 
+			if (pEntry->Valid == FALSE)
+				break;
+		}
+
+		if (i < MAX_MEASURE_REQ_TAB_SIZE)
+		{
+			NdisGetSystemUpTime(&Now);
+			pEntry->lastTime = Now;
+			pEntry->Valid = TRUE;
+			pEntry->DialogToken = DialogToken;
+			pTab->Size++;
+		}
+		else
+		{
+			pEntry = NULL;
+			DBGPRINT(RT_DEBUG_ERROR, ("%s: pMeasureReqTab tab full.\n", __FUNCTION__));
+		}
+
+		// add this Neighbor entry into HASH table
+		if (pEntry)
+		{
+			HashIdx = MQ_DIALOGTOKEN_HASH_INDEX(DialogToken);
+			if (pTab->Hash[HashIdx] == NULL)
+			{
+				pTab->Hash[HashIdx] = pEntry;
+			}
+			else
+			{
+				pCurrEntry = pTab->Hash[HashIdx];
+				while (pCurrEntry->pNext != NULL)
+					pCurrEntry = pCurrEntry->pNext;
+				pCurrEntry->pNext = pEntry;
+			}
+		}
+
+		RTMP_SEM_UNLOCK(&pAd->CommonCfg.MeasureReqTabLock);
+	} 
+
+	return pEntry;
+}
+
+VOID MeasureReqDelete(
+	IN PRTMP_ADAPTER	pAd,
+	IN UINT8			DialogToken)
+{
+	PMEASURE_REQ_TAB pTab = pAd->CommonCfg.pMeasureReqTab;
+	PMEASURE_REQ_ENTRY pEntry = NULL;
+
+	if(pTab == NULL)
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("%s: pMeasureReqTab doesn't exist.\n", __FUNCTION__));
+		return;
+	}
+
+	// if empty, return
+	if (pTab->Size == 0) 
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("pMeasureReqTab empty.\n"));
+		return;
+	}
+
+	pEntry = MeasureReqLookUp(pAd, DialogToken);
+	if (pEntry != NULL)
+	{
+		PMEASURE_REQ_ENTRY pPrevEntry = NULL;
+		ULONG HashIdx = MQ_DIALOGTOKEN_HASH_INDEX(pEntry->DialogToken);
+		PMEASURE_REQ_ENTRY pProbeEntry = pTab->Hash[HashIdx];
+
+		RTMP_SEM_LOCK(&pAd->CommonCfg.MeasureReqTabLock);
+		// update Hash list
+		do
+		{
+			if (pProbeEntry == pEntry)
+			{
+				if (pPrevEntry == NULL)
+				{
+					pTab->Hash[HashIdx] = pEntry->pNext;
+				}
+				else
+				{
+					pPrevEntry->pNext = pEntry->pNext;
+				}
+				break;
+			}
+
+			pPrevEntry = pProbeEntry;
+			pProbeEntry = pProbeEntry->pNext;
+		} while (pProbeEntry);
+
+		NdisZeroMemory(pEntry, sizeof(MEASURE_REQ_ENTRY));
+		pTab->Size--;
+
+		RTMP_SEM_UNLOCK(&pAd->CommonCfg.MeasureReqTabLock);
+	}
+
+	return;
+}
+
+NDIS_STATUS TpcReqTabInit(
+	IN PRTMP_ADAPTER pAd)
+{
+	NDIS_STATUS Status = NDIS_STATUS_SUCCESS;
+	
+	NdisAllocateSpinLock(&pAd->CommonCfg.TpcReqTabLock);
+
+	pAd->CommonCfg.pTpcReqTab = kmalloc(sizeof(TPC_REQ_TAB), GFP_ATOMIC);
+	if (pAd->CommonCfg.pTpcReqTab)
+		NdisZeroMemory(pAd->CommonCfg.pTpcReqTab, sizeof(TPC_REQ_TAB));
+	else
+	{		
+		DBGPRINT(RT_DEBUG_ERROR, ("%s Fail to alloc memory for pAd->CommonCfg.pTpcReqTab.\n", __FUNCTION__));		Status = NDIS_STATUS_FAILURE;	
+	}	
+
+	return Status;
+}
+
+VOID TpcReqTabExit(
+	IN PRTMP_ADAPTER pAd)
+{
+	NdisFreeSpinLock(&pAd->CommonCfg.TpcReqTabLock);
+
+	if (pAd->CommonCfg.pTpcReqTab)
+		kfree(pAd->CommonCfg.pTpcReqTab);
+	pAd->CommonCfg.pTpcReqTab = NULL;
+
+	return;
+}
+
+static PTPC_REQ_ENTRY TpcReqLookUp(
+	IN PRTMP_ADAPTER	pAd,
+	IN UINT8			DialogToken)
+{
+	UINT HashIdx;
+	PTPC_REQ_TAB pTab = pAd->CommonCfg.pTpcReqTab;
+	PTPC_REQ_ENTRY pEntry = NULL;
+	PTPC_REQ_ENTRY pPrevEntry = NULL;
+
+	if (pTab == NULL)
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("%s: pTpcReqTab doesn't exist.\n", __FUNCTION__));
+		return NULL;
+	}
+
+	RTMP_SEM_LOCK(&pAd->CommonCfg.TpcReqTabLock);
+
+	HashIdx = TPC_DIALOGTOKEN_HASH_INDEX(DialogToken);
+	pEntry = pTab->Hash[HashIdx];
+
+	while (pEntry)
+	{
+		if (pEntry->DialogToken == DialogToken) 
+			break;
+		else
+		{
+			pPrevEntry = pEntry;
+			pEntry = pEntry->pNext;
+		}
+	}
+
+	RTMP_SEM_UNLOCK(&pAd->CommonCfg.TpcReqTabLock);
+	
+	return pEntry;
+}
+
+
+static PTPC_REQ_ENTRY TpcReqInsert(
+	IN PRTMP_ADAPTER	pAd,
+	IN UINT8			DialogToken)
+{
+	INT i;
+	ULONG HashIdx;
+	PTPC_REQ_TAB pTab = pAd->CommonCfg.pTpcReqTab;
+	PTPC_REQ_ENTRY pEntry = NULL, pCurrEntry;
+	ULONG Now;
+
+	if(pTab == NULL)
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("%s: pTpcReqTab doesn't exist.\n", __FUNCTION__));
+		return NULL;
+	}
+
+	pEntry = TpcReqLookUp(pAd, DialogToken);
+	if (pEntry == NULL)
+	{
+		RTMP_SEM_LOCK(&pAd->CommonCfg.TpcReqTabLock);
+		for (i = 0; i < MAX_TPC_REQ_TAB_SIZE; i++)
+		{
+			NdisGetSystemUpTime(&Now);
+			pEntry = &pTab->Content[i];
+ 
+			if ((pEntry->Valid == TRUE)
+				&& RTMP_TIME_AFTER((unsigned long)Now, (unsigned long)(pEntry->lastTime + TPC_REQ_AGE_OUT)))
+			{
+				PTPC_REQ_ENTRY pPrevEntry = NULL;
+				ULONG HashIdx = TPC_DIALOGTOKEN_HASH_INDEX(pEntry->DialogToken);
+				PTPC_REQ_ENTRY pProbeEntry = pTab->Hash[HashIdx];
+
+				// update Hash list
+				do
+				{
+					if (pProbeEntry == pEntry)
+					{
+						if (pPrevEntry == NULL)
+						{
+							pTab->Hash[HashIdx] = pEntry->pNext;
+						}
+						else
+						{
+							pPrevEntry->pNext = pEntry->pNext;
+						}
+						break;
+					}
+
+					pPrevEntry = pProbeEntry;
+					pProbeEntry = pProbeEntry->pNext;
+				} while (pProbeEntry);
+
+				NdisZeroMemory(pEntry, sizeof(TPC_REQ_ENTRY));
+				pTab->Size--;
+
+				break;
+			}
+ 
+			if (pEntry->Valid == FALSE)
+				break;
+		}
+
+		if (i < MAX_TPC_REQ_TAB_SIZE)
+		{
+			NdisGetSystemUpTime(&Now);
+			pEntry->lastTime = Now;
+			pEntry->Valid = TRUE;
+			pEntry->DialogToken = DialogToken;
+			pTab->Size++;
+		}
+		else
+		{
+			pEntry = NULL;
+			DBGPRINT(RT_DEBUG_ERROR, ("%s: pTpcReqTab tab full.\n", __FUNCTION__));
+		}
+
+		// add this Neighbor entry into HASH table
+		if (pEntry)
+		{
+			HashIdx = TPC_DIALOGTOKEN_HASH_INDEX(DialogToken);
+			if (pTab->Hash[HashIdx] == NULL)
+			{
+				pTab->Hash[HashIdx] = pEntry;
+			}
+			else
+			{
+				pCurrEntry = pTab->Hash[HashIdx];
+				while (pCurrEntry->pNext != NULL)
+					pCurrEntry = pCurrEntry->pNext;
+				pCurrEntry->pNext = pEntry;
+			}
+		}
+
+		RTMP_SEM_UNLOCK(&pAd->CommonCfg.TpcReqTabLock);
+	} 
+
+	return pEntry;
+}
+
+static VOID TpcReqDelete(
+	IN PRTMP_ADAPTER	pAd,
+	IN UINT8			DialogToken)
+{
+	PTPC_REQ_TAB pTab = pAd->CommonCfg.pTpcReqTab;
+	PTPC_REQ_ENTRY pEntry = NULL;
+
+	if(pTab == NULL)
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("%s: pTpcReqTab doesn't exist.\n", __FUNCTION__));
+		return;
+	}
+
+	// if empty, return
+	if (pTab->Size == 0) 
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("pTpcReqTab empty.\n"));
+		return;
+	}
+
+	pEntry = TpcReqLookUp(pAd, DialogToken);
+	if (pEntry != NULL)
+	{
+		PTPC_REQ_ENTRY pPrevEntry = NULL;
+		ULONG HashIdx = TPC_DIALOGTOKEN_HASH_INDEX(pEntry->DialogToken);
+		PTPC_REQ_ENTRY pProbeEntry = pTab->Hash[HashIdx];
+
+		RTMP_SEM_LOCK(&pAd->CommonCfg.TpcReqTabLock);
+		// update Hash list
+		do
+		{
+			if (pProbeEntry == pEntry)
+			{
+				if (pPrevEntry == NULL)
+				{
+					pTab->Hash[HashIdx] = pEntry->pNext;
+				}
+				else
+				{
+					pPrevEntry->pNext = pEntry->pNext;
+				}
+				break;
+			}
+
+			pPrevEntry = pProbeEntry;
+			pProbeEntry = pProbeEntry->pNext;
+		} while (pProbeEntry);
+
+		NdisZeroMemory(pEntry, sizeof(TPC_REQ_ENTRY));
+		pTab->Size--;
+
+		RTMP_SEM_UNLOCK(&pAd->CommonCfg.TpcReqTabLock);
+	}
+
+	return;
+}
+
+/*
+	==========================================================================
+	Description:
+		Get Current TimeS tamp.
+		
+	Parametrs:
+	
+	Return	: Current Time Stamp.
+	==========================================================================
+ */
+static UINT64 GetCurrentTimeStamp(
+	IN PRTMP_ADAPTER pAd)
+{
+	// get current time stamp.
+	return 0;
+}
+
+/*
+	==========================================================================
+	Description:
+		Get Current Transmit Power.
+		
+	Parametrs:
+	
+	Return	: Current Time Stamp.
+	==========================================================================
+ */
+static UINT8 GetCurTxPwr(
+	IN PRTMP_ADAPTER pAd,
+	IN UINT8 Wcid)
+{
+	return 16; /* 16 dBm */
+}
+
+/*
+	==========================================================================
+	Description:
+		Get Current Transmit Power.
+		
+	Parametrs:
+	
+	Return	: Current Time Stamp.
+	==========================================================================
+ */
+VOID InsertChannelRepIE(
+	IN PRTMP_ADAPTER pAd,
+	OUT PUCHAR pFrameBuf,
+	OUT PULONG pFrameLen,
+	IN PSTRING pCountry,
+	IN UINT8 RegulatoryClass)
+{
+	ULONG TempLen;
+	UINT8 Len;
+	UINT8 IEId = IE_AP_CHANNEL_REPORT;
+	PUCHAR pChListPtr = NULL;
+	PDOT11_CHANNEL_SET pChannelSet = NULL;
+
+	Len = 1;
+	if (strncmp(pCountry, "US", 2) == 0)
+	{
+		if (RegulatoryClass >= USA_REGULATORY_INFO_SIZE)
+		{
+			DBGPRINT(RT_DEBUG_INFO, ("%s: USA Unknow Requlatory class (%d)\n",
+						__FUNCTION__, RegulatoryClass));
+			return;
+		}
+		pChannelSet = &USARegulatoryInfo[RegulatoryClass].ChannelSet;
+	}
+	else if (strncmp(pCountry, "JP", 2) == 0)
+	{
+		if (RegulatoryClass >= JP_REGULATORY_INFO_SIZE)
+		{
+			DBGPRINT(RT_DEBUG_INFO, ("%s: JP Unknow Requlatory class (%d)\n",
+						__FUNCTION__, RegulatoryClass));
+			return;
+		}
+
+		pChannelSet = &JapanRegulatoryInfo[RegulatoryClass].ChannelSet;
+	}
+	else
+	{
+		DBGPRINT(RT_DEBUG_INFO, ("%s: Unknow Country (%s)\n",
+					__FUNCTION__, pCountry));
+		return;
+	}
+
+	/* no match channel set. */
+	if (pChannelSet == NULL)
+		return;
+
+	/* empty channel set. */
+	if (pChannelSet->NumberOfChannels == 0)
+		return;
+
+	Len += pChannelSet->NumberOfChannels;
+	pChListPtr = pChannelSet->ChannelList;
+
+	if (Len > 1)
+	{
+		MakeOutgoingFrame(pFrameBuf,	&TempLen,
+						1,				&IEId,
+						1,				&Len,
+						1,				&RegulatoryClass,
+						Len -1,			pChListPtr,
+						END_OF_ARGS);
+
+		*pFrameLen = *pFrameLen + TempLen;
+	}
+	return;
+}
+
+/*
+	==========================================================================
+	Description:
+		Insert Dialog Token into frame.
+		
+	Parametrs:
+		1. frame buffer pointer.
+		2. frame length.
+		3. Dialog token.
+	
+	Return	: None.
+	==========================================================================
+ */
+VOID InsertDialogToken(
+	IN PRTMP_ADAPTER pAd,
+	OUT PUCHAR pFrameBuf,
+	OUT PULONG pFrameLen,
+	IN UINT8 DialogToken)
+{
+	ULONG TempLen;
+	MakeOutgoingFrame(pFrameBuf,	&TempLen,
+					1,				&DialogToken,
+					END_OF_ARGS);
+
+	*pFrameLen = *pFrameLen + TempLen;
+
+	return;
+}
+
+/*
+	==========================================================================
+	Description:
+		Insert TPC Request IE into frame.
+		
+	Parametrs:
+		1. frame buffer pointer.
+		2. frame length.
+	
+	Return	: None.
+	==========================================================================
+ */
+ static VOID InsertTpcReqIE(
+	IN PRTMP_ADAPTER pAd,
+	OUT PUCHAR pFrameBuf,
+	OUT PULONG pFrameLen)
+{
+	ULONG TempLen;
+	ULONG Len = 0;
+	UINT8 ElementID = IE_TPC_REQUEST;
+
+	MakeOutgoingFrame(pFrameBuf,					&TempLen,
+						1,							&ElementID,
+						1,							&Len,
+						END_OF_ARGS);
+
+	*pFrameLen = *pFrameLen + TempLen;
+
+	return;
+}
+
+/*
+	==========================================================================
+	Description:
+		Insert TPC Report IE into frame.
+		
+	Parametrs:
+		1. frame buffer pointer.
+		2. frame length.
+		3. Transmit Power.
+		4. Link Margin.
+	
+	Return	: None.
+	==========================================================================
+ */
+VOID InsertTpcReportIE(
+	IN PRTMP_ADAPTER pAd,
+	OUT PUCHAR pFrameBuf,
+	OUT PULONG pFrameLen,
+	IN UINT8 TxPwr,
+	IN UINT8 LinkMargin)
+{
+	ULONG TempLen;
+	ULONG Len = sizeof(TPC_REPORT_INFO);
+	UINT8 ElementID = IE_TPC_REPORT;
+	TPC_REPORT_INFO TpcReportIE;
+
+	TpcReportIE.TxPwr = TxPwr;
+	TpcReportIE.LinkMargin = LinkMargin;
+
+	MakeOutgoingFrame(pFrameBuf,					&TempLen,
+						1,							&ElementID,
+						1,							&Len,
+						Len,						&TpcReportIE,
+						END_OF_ARGS);
+
+	*pFrameLen = *pFrameLen + TempLen;
+
+
+	return;
+}
+
+/*
+	==========================================================================
+	Description:
+		Insert Channel Switch Announcement IE into frame.
+		
+	Parametrs:
+		1. frame buffer pointer.
+		2. frame length.
+		3. channel switch announcement mode.
+		4. new selected channel.
+		5. channel switch announcement count.
+	
+	Return	: None.
+	==========================================================================
+ */
+static VOID InsertChSwAnnIE(
+	IN PRTMP_ADAPTER pAd,
+	OUT PUCHAR pFrameBuf,
+	OUT PULONG pFrameLen,
+	IN UINT8 ChSwMode,
+	IN UINT8 NewChannel,
+	IN UINT8 ChSwCnt)
+{
+	ULONG TempLen;
+	ULONG Len = sizeof(CH_SW_ANN_INFO);
+	UINT8 ElementID = IE_CHANNEL_SWITCH_ANNOUNCEMENT;
+	CH_SW_ANN_INFO ChSwAnnIE;
+
+	ChSwAnnIE.ChSwMode = ChSwMode;
+	ChSwAnnIE.Channel = NewChannel;
+	ChSwAnnIE.ChSwCnt = ChSwCnt;
+
+	MakeOutgoingFrame(pFrameBuf,				&TempLen,
+						1,						&ElementID,
+						1,						&Len,
+						Len,					&ChSwAnnIE,
+						END_OF_ARGS);
+
+	*pFrameLen = *pFrameLen + TempLen;
+
+
+	return;
+}
+
+/*
+	==========================================================================
+	Description:
+		Insert Measure Request IE into frame.
+		
+	Parametrs:
+		1. frame buffer pointer.
+		2. frame length.
+		3. Measure Token.
+		4. Measure Request Mode.
+		5. Measure Request Type.
+		6. Measure Channel.
+		7. Measure Start time.
+		8. Measure Duration.
+
+	
+	Return	: None.
+	==========================================================================
+ */
+static VOID InsertMeasureReqIE(
+	IN PRTMP_ADAPTER pAd,
+	OUT PUCHAR pFrameBuf,
+	OUT PULONG pFrameLen,
+	IN UINT8 Len,
+	IN PMEASURE_REQ_INFO pMeasureReqIE)
+{
+	ULONG TempLen;
+	UINT8 ElementID = IE_MEASUREMENT_REQUEST;
+
+	MakeOutgoingFrame(pFrameBuf,					&TempLen,
+						1,							&ElementID,
+						1,							&Len,
+						sizeof(MEASURE_REQ_INFO),	pMeasureReqIE,
+						END_OF_ARGS);
+
+	*pFrameLen = *pFrameLen + TempLen;
+
+	return;
+}
+
+/*
+	==========================================================================
+	Description:
+		Insert Measure Report IE into frame.
+		
+	Parametrs:
+		1. frame buffer pointer.
+		2. frame length.
+		3. Measure Token.
+		4. Measure Request Mode.
+		5. Measure Request Type.
+		6. Length of Report Infomation 
+		7. Pointer of Report Infomation Buffer.
+	
+	Return	: None.
+	==========================================================================
+ */
+static VOID InsertMeasureReportIE(
+	IN PRTMP_ADAPTER pAd,
+	OUT PUCHAR pFrameBuf,
+	OUT PULONG pFrameLen,
+	IN PMEASURE_REPORT_INFO pMeasureReportIE,
+	IN UINT8 ReportLnfoLen,
+	IN PUINT8 pReportInfo)
+{
+	ULONG TempLen;
+	ULONG Len;
+	UINT8 ElementID = IE_MEASUREMENT_REPORT;
+
+	Len = sizeof(MEASURE_REPORT_INFO) + ReportLnfoLen;
+		
+	MakeOutgoingFrame(pFrameBuf,					&TempLen,
+						1,							&ElementID,
+						1,							&Len,
+						Len,						pMeasureReportIE,
+						END_OF_ARGS);
+
+	*pFrameLen = *pFrameLen + TempLen;
+
+	if ((ReportLnfoLen > 0) && (pReportInfo != NULL))
+	{
+		MakeOutgoingFrame(pFrameBuf + *pFrameLen,		&TempLen,
+							ReportLnfoLen,				pReportInfo,
+							END_OF_ARGS);
+
+		*pFrameLen = *pFrameLen + TempLen;
+	}
+	return;
+}
+
+/*
+	==========================================================================
+	Description:
+		Prepare Measurement request action frame and enqueue it into
+		management queue waiting for transmition.
+		
+	Parametrs:
+		1. the destination mac address of the frame.
+	
+	Return	: None.
+	==========================================================================
+ */
+VOID MakeMeasurementReqFrame(
+	IN PRTMP_ADAPTER pAd,
+	OUT PUCHAR pOutBuffer,
+	OUT PULONG pFrameLen,
+	IN UINT8 TotalLen,
+	IN UINT8 Category,
+	IN UINT8 Action,
+	IN UINT8 MeasureToken, 
+	IN UINT8 MeasureReqMode,
+	IN UINT8 MeasureReqType,
+	IN UINT16 NumOfRepetitions)
+{
+	ULONG TempLen;
+	MEASURE_REQ_INFO MeasureReqIE;
+
+	InsertActField(pAd, (pOutBuffer + *pFrameLen), pFrameLen, Category, Action);
+
+	// fill Dialog Token
+	InsertDialogToken(pAd, (pOutBuffer + *pFrameLen), pFrameLen, MeasureToken);
+
+	/* fill Number of repetitions. */
+	if (Category == CATEGORY_RM)
+	{
+		MakeOutgoingFrame((pOutBuffer+*pFrameLen),	&TempLen,
+						2,							&NumOfRepetitions,
+						END_OF_ARGS);
+
+		*pFrameLen += TempLen;
+	}
+
+	// prepare Measurement IE.
+	NdisZeroMemory(&MeasureReqIE, sizeof(MEASURE_REQ_INFO));
+	MeasureReqIE.Token = MeasureToken;
+	MeasureReqIE.ReqMode.word = MeasureReqMode;
+	MeasureReqIE.ReqType = MeasureReqType;
+	InsertMeasureReqIE(pAd, (pOutBuffer+*pFrameLen), pFrameLen,
+		TotalLen, &MeasureReqIE);
+
+	return;
+}
+
+/*
+	==========================================================================
+	Description:
+		Prepare Measurement report action frame and enqueue it into
+		management queue waiting for transmition.
+		
+	Parametrs:
+		1. the destination mac address of the frame.
+	
+	Return	: None.
+	==========================================================================
+ */
+VOID EnqueueMeasurementRep(
+	IN PRTMP_ADAPTER pAd,
+	IN PUCHAR pDA,
+	IN UINT8 DialogToken,
+	IN UINT8 MeasureToken, 
+	IN UINT8 MeasureReqMode,
+	IN UINT8 MeasureReqType,
+	IN UINT8 ReportInfoLen,
+	IN PUINT8 pReportInfo)
+{
+	PUCHAR pOutBuffer = NULL;
+	NDIS_STATUS NStatus;
+	ULONG FrameLen;
+	HEADER_802_11 ActHdr;
+	MEASURE_REPORT_INFO MeasureRepIE;
+
+	// build action frame header.
+	MgtMacHeaderInit(pAd, &ActHdr, SUBTYPE_ACTION, 0, pDA,
+						pAd->CurrentAddress);
+
+	NStatus = MlmeAllocateMemory(pAd, (PVOID)&pOutBuffer);  //Get an unused nonpaged memory
+	if(NStatus != NDIS_STATUS_SUCCESS)
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("%s() allocate memory failed \n", __FUNCTION__));
+		return;
+	}
+	NdisMoveMemory(pOutBuffer, (PCHAR)&ActHdr, sizeof(HEADER_802_11));
+	FrameLen = sizeof(HEADER_802_11);
+
+	InsertActField(pAd, (pOutBuffer + FrameLen), &FrameLen, CATEGORY_SPECTRUM, SPEC_MRP);
+
+	// fill Dialog Token
+	InsertDialogToken(pAd, (pOutBuffer + FrameLen), &FrameLen, DialogToken);
+
+	// prepare Measurement IE.
+	NdisZeroMemory(&MeasureRepIE, sizeof(MEASURE_REPORT_INFO));
+	MeasureRepIE.Token = MeasureToken;
+	MeasureRepIE.ReportMode = MeasureReqMode;
+	MeasureRepIE.ReportType = MeasureReqType;
+	InsertMeasureReportIE(pAd, (pOutBuffer + FrameLen), &FrameLen, &MeasureRepIE, ReportInfoLen, pReportInfo);
+
+	MiniportMMRequest(pAd, QID_AC_BE, pOutBuffer, FrameLen);
+	MlmeFreeMemory(pAd, pOutBuffer);
+
+	return;	
+}
+
+/*
+	==========================================================================
+	Description:
+		Prepare TPC Request action frame and enqueue it into
+		management queue waiting for transmition.
+		
+	Parametrs:
+		1. the destination mac address of the frame.
+	
+	Return	: None.
+	==========================================================================
+ */
+VOID EnqueueTPCReq(
+	IN PRTMP_ADAPTER pAd,
+	IN PUCHAR pDA,
+	IN UCHAR DialogToken)
+{
+	PUCHAR pOutBuffer = NULL;
+	NDIS_STATUS NStatus;
+	ULONG FrameLen;
+
+	HEADER_802_11 ActHdr;
+
+	// build action frame header.
+	MgtMacHeaderInit(pAd, &ActHdr, SUBTYPE_ACTION, 0, pDA,
+						pAd->CurrentAddress);
+
+	NStatus = MlmeAllocateMemory(pAd, (PVOID)&pOutBuffer);  //Get an unused nonpaged memory
+	if(NStatus != NDIS_STATUS_SUCCESS)
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("%s() allocate memory failed \n", __FUNCTION__));
+		return;
+	}
+	NdisMoveMemory(pOutBuffer, (PCHAR)&ActHdr, sizeof(HEADER_802_11));
+	FrameLen = sizeof(HEADER_802_11);
+
+	InsertActField(pAd, (pOutBuffer + FrameLen), &FrameLen, CATEGORY_SPECTRUM, SPEC_TPCRQ);
+
+	// fill Dialog Token
+	InsertDialogToken(pAd, (pOutBuffer + FrameLen), &FrameLen, DialogToken);
+
+	// Insert TPC Request IE.
+	InsertTpcReqIE(pAd, (pOutBuffer + FrameLen), &FrameLen);
+
+	MiniportMMRequest(pAd, QID_AC_BE, pOutBuffer, FrameLen);
+	MlmeFreeMemory(pAd, pOutBuffer);
+
+	return;
+}
+
+/*
+	==========================================================================
+	Description:
+		Prepare TPC Report action frame and enqueue it into
+		management queue waiting for transmition.
+		
+	Parametrs:
+		1. the destination mac address of the frame.
+	
+	Return	: None.
+	==========================================================================
+ */
+VOID EnqueueTPCRep(
+	IN PRTMP_ADAPTER pAd,
+	IN PUCHAR pDA,
+	IN UINT8 DialogToken,
+	IN UINT8 TxPwr,
+	IN UINT8 LinkMargin)
+{
+	PUCHAR pOutBuffer = NULL;
+	NDIS_STATUS NStatus;
+	ULONG FrameLen;
+
+	HEADER_802_11 ActHdr;
+
+	// build action frame header.
+	MgtMacHeaderInit(pAd, &ActHdr, SUBTYPE_ACTION, 0, pDA,
+						pAd->CurrentAddress);
+
+	NStatus = MlmeAllocateMemory(pAd, (PVOID)&pOutBuffer);  //Get an unused nonpaged memory
+	if(NStatus != NDIS_STATUS_SUCCESS)
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("%s() allocate memory failed \n", __FUNCTION__));
+		return;
+	}
+	NdisMoveMemory(pOutBuffer, (PCHAR)&ActHdr, sizeof(HEADER_802_11));
+	FrameLen = sizeof(HEADER_802_11);
+
+	InsertActField(pAd, (pOutBuffer + FrameLen), &FrameLen, CATEGORY_SPECTRUM, SPEC_TPCRP);
+
+	// fill Dialog Token
+	InsertDialogToken(pAd, (pOutBuffer + FrameLen), &FrameLen, DialogToken);
+
+	// Insert TPC Request IE.
+	InsertTpcReportIE(pAd, (pOutBuffer + FrameLen), &FrameLen, TxPwr, LinkMargin);
+
+	MiniportMMRequest(pAd, QID_AC_BE, pOutBuffer, FrameLen);
+	MlmeFreeMemory(pAd, pOutBuffer);
+
+	return;
+}
+
+/*
+	==========================================================================
+	Description:
+		Prepare Channel Switch Announcement action frame and enqueue it into
+		management queue waiting for transmition.
+		
+	Parametrs:
+		1. the destination mac address of the frame.
+		2. Channel switch announcement mode.
+		2. a New selected channel.
+	
+	Return	: None.
+	==========================================================================
+ */
+VOID EnqueueChSwAnn(
+	IN PRTMP_ADAPTER pAd,
+	IN PUCHAR pDA, 
+	IN UINT8 ChSwMode,
+	IN UINT8 NewCh)
+{
+	PUCHAR pOutBuffer = NULL;
+	NDIS_STATUS NStatus;
+	ULONG FrameLen;
+
+	HEADER_802_11 ActHdr;
+
+	// build action frame header.
+	MgtMacHeaderInit(pAd, &ActHdr, SUBTYPE_ACTION, 0, pDA,
+						pAd->CurrentAddress);
+
+	NStatus = MlmeAllocateMemory(pAd, (PVOID)&pOutBuffer);  //Get an unused nonpaged memory
+	if(NStatus != NDIS_STATUS_SUCCESS)
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("%s() allocate memory failed \n", __FUNCTION__));
+		return;
+	}
+	NdisMoveMemory(pOutBuffer, (PCHAR)&ActHdr, sizeof(HEADER_802_11));
+	FrameLen = sizeof(HEADER_802_11);
+
+	InsertActField(pAd, (pOutBuffer + FrameLen), &FrameLen, CATEGORY_SPECTRUM, SPEC_CHANNEL_SWITCH);
+
+	InsertChSwAnnIE(pAd, (pOutBuffer + FrameLen), &FrameLen, ChSwMode, NewCh, 0);
+
+	MiniportMMRequest(pAd, QID_AC_BE, pOutBuffer, FrameLen);
+	MlmeFreeMemory(pAd, pOutBuffer);
+
+	return;
+}
+
+static BOOLEAN DfsRequirementCheck(
+	IN PRTMP_ADAPTER pAd,
+	IN UINT8 Channel)
+{
+	BOOLEAN Result = FALSE;
+	INT i;
+
+	do
+	{
+		// check DFS procedure is running.
+		// make sure DFS procedure won't start twice.
+		if (pAd->CommonCfg.RadarDetect.RDMode != RD_NORMAL_MODE)
+		{
+			Result = FALSE;
+			break;
+		}
+
+		// check the new channel carried from Channel Switch Announcemnet is valid.
+		for (i=0; i<pAd->ChannelListNum; i++)
+		{
+			if ((Channel == pAd->ChannelList[i].Channel)
+				&&(pAd->ChannelList[i].RemainingTimeForUse == 0))
+			{
+				// found radar signal in the channel. the channel can't use at least for 30 minutes.
+				pAd->ChannelList[i].RemainingTimeForUse = 1800;//30 min = 1800 sec
+				Result = TRUE;
+				break;
+			}
+		}
+	} while(FALSE);
+
+	return Result;
+}
+
+VOID NotifyChSwAnnToPeerAPs(
+	IN PRTMP_ADAPTER pAd,
+	IN PUCHAR pRA,
+	IN PUCHAR pTA,
+	IN UINT8 ChSwMode,
+	IN UINT8 Channel)
+{
+#ifdef WDS_SUPPORT
+	if (!((pRA[0] & 0xff) == 0xff)) // is pRA a broadcase address.
+	{
+		INT i;
+		// info neighbor APs that Radar signal found throgh WDS link.
+		for (i = 0; i < MAX_WDS_ENTRY; i++)
+		{
+			if (ValidWdsEntry(pAd, i))
+			{
+				PUCHAR pDA = pAd->WdsTab.WdsEntry[i].PeerWdsAddr;
+
+				// DA equal to SA. have no necessary orignal AP which found Radar signal.
+				if (MAC_ADDR_EQUAL(pTA, pDA))
+					continue;
+
+				// send Channel Switch Action frame to info Neighbro APs.
+				EnqueueChSwAnn(pAd, pDA, ChSwMode, Channel);
+			}
+		}
+	}
+#endif // WDS_SUPPORT //
+}
+
+static VOID StartDFSProcedure(
+	IN PRTMP_ADAPTER pAd,
+	IN UCHAR Channel,
+	IN UINT8 ChSwMode)
+{
+	// start DFS procedure
+	pAd->CommonCfg.Channel = Channel;
+#ifdef DOT11_N_SUPPORT
+	N_ChannelCheck(pAd);
+#endif // DOT11_N_SUPPORT //
+	pAd->CommonCfg.RadarDetect.RDMode = RD_SWITCHING_MODE;
+	pAd->CommonCfg.RadarDetect.CSCount = 0;
+}
+
+/*
+	==========================================================================
+	Description:
+		Channel Switch Announcement action frame sanity check.
+		
+	Parametrs:
+		1. MLME message containing the received frame
+		2. message length.
+		3. Channel switch announcement infomation buffer.
+		
+	
+	Return	: None.
+	==========================================================================
+ */
+
+/*
+  Channel Switch Announcement IE.
+  +----+-----+-----------+------------+-----------+
+  | ID | Len |Ch Sw Mode | New Ch Num | Ch Sw Cnt |
+  +----+-----+-----------+------------+-----------+
+    1    1        1           1            1      
+*/
+static BOOLEAN PeerChSwAnnSanity(
+	IN PRTMP_ADAPTER pAd,
+	IN VOID *pMsg,
+	IN ULONG MsgLen,
+	OUT PCH_SW_ANN_INFO pChSwAnnInfo)
+{
+	PFRAME_802_11 Fr = (PFRAME_802_11)pMsg;
+	PUCHAR pFramePtr = Fr->Octet;
+	BOOLEAN result = FALSE;
+	PEID_STRUCT eid_ptr;
+
+	// skip 802.11 header.
+	MsgLen -= sizeof(HEADER_802_11);
+
+	// skip category and action code.
+	pFramePtr += 2;
+	MsgLen -= 2;
+
+	if (pChSwAnnInfo == NULL)
+		return result;
+
+	eid_ptr = (PEID_STRUCT)pFramePtr;
+	while (((UCHAR*)eid_ptr + eid_ptr->Len + 1) < ((PUCHAR)pFramePtr + MsgLen))
+	{
+		switch(eid_ptr->Eid)
+		{
+			case IE_CHANNEL_SWITCH_ANNOUNCEMENT:
+				NdisMoveMemory(&pChSwAnnInfo->ChSwMode, eid_ptr->Octet, 1);
+				NdisMoveMemory(&pChSwAnnInfo->Channel, eid_ptr->Octet + 1, 1);
+				NdisMoveMemory(&pChSwAnnInfo->ChSwCnt, eid_ptr->Octet + 2, 1);
+				
+				result = TRUE;
+                break;
+            
+			default:
+				break;
+		}
+		eid_ptr = (PEID_STRUCT)((UCHAR*)eid_ptr + 2 + eid_ptr->Len);        
+	}
+
+	return result;
+}
+
+/*
+	==========================================================================
+	Description:
+		Measurement request action frame sanity check.
+		
+	Parametrs:
+		1. MLME message containing the received frame
+		2. message length.
+		3. Measurement request infomation buffer.
+	
+	Return	: None.
+	==========================================================================
+ */
+static BOOLEAN PeerMeasureReqSanity(
+	IN PRTMP_ADAPTER pAd,
+	IN VOID *pMsg,
+	IN ULONG MsgLen,
+	OUT PUINT8 pDialogToken,
+	OUT PMEASURE_REQ_INFO pMeasureReqInfo,
+	OUT PMEASURE_REQ pMeasureReq)
+{
+	PFRAME_802_11 Fr = (PFRAME_802_11)pMsg;
+	PUCHAR pFramePtr = Fr->Octet;
+	BOOLEAN result = FALSE;
+	PEID_STRUCT eid_ptr;
+	PUCHAR ptr;
+	UINT64 MeasureStartTime;
+	UINT16 MeasureDuration;
+
+	// skip 802.11 header.
+	MsgLen -= sizeof(HEADER_802_11);
+
+	// skip category and action code.
+	pFramePtr += 2;
+	MsgLen -= 2;
+
+	if (pMeasureReqInfo == NULL)
+		return result;
+
+	NdisMoveMemory(pDialogToken, pFramePtr, 1);
+	pFramePtr += 1;
+	MsgLen -= 1;
+
+	eid_ptr = (PEID_STRUCT)pFramePtr;
+	while (((UCHAR*)eid_ptr + eid_ptr->Len + 1) < ((PUCHAR)pFramePtr + MsgLen))
+	{
+		switch(eid_ptr->Eid)
+		{
+			case IE_MEASUREMENT_REQUEST:
+				NdisMoveMemory(&pMeasureReqInfo->Token, eid_ptr->Octet, 1);
+				NdisMoveMemory(&pMeasureReqInfo->ReqMode.word, eid_ptr->Octet + 1, 1);
+				NdisMoveMemory(&pMeasureReqInfo->ReqType, eid_ptr->Octet + 2, 1);
+				ptr = (PUCHAR)(eid_ptr->Octet + 3);
+				NdisMoveMemory(&pMeasureReq->ChNum, ptr, 1);
+				NdisMoveMemory(&MeasureStartTime, ptr + 1, 8);
+				pMeasureReq->MeasureStartTime = SWAP64(MeasureStartTime);
+				NdisMoveMemory(&MeasureDuration, ptr + 9, 2);
+				pMeasureReq->MeasureDuration = SWAP16(MeasureDuration);
+				
+				result = TRUE;
+				break;
+
+			default:
+				break;
+		}
+		eid_ptr = (PEID_STRUCT)((UCHAR*)eid_ptr + 2 + eid_ptr->Len);
+	}
+
+	return result;
+}
+
+/*
+	==========================================================================
+	Description:
+		Measurement report action frame sanity check.
+		
+	Parametrs:
+		1. MLME message containing the received frame
+		2. message length.
+		3. Measurement report infomation buffer.
+		4. basic report infomation buffer.
+	
+	Return	: None.
+	==========================================================================
+ */
+
+/*
+  Measurement Report IE.
+  +----+-----+-------+-------------+--------------+----------------+
+  | ID | Len | Token | Report Mode | Measure Type | Measure Report |
+  +----+-----+-------+-------------+--------------+----------------+
+    1     1      1          1             1            variable
+
+  Basic Report.
+  +--------+------------+----------+-----+
+  | Ch Num | Start Time | Duration | Map |
+  +--------+------------+----------+-----+
+      1          8           2        1
+
+  Map Field Bit Format.
+  +-----+---------------+---------------------+-------+------------+----------+
+  | Bss | OFDM Preamble | Unidentified signal | Radar | Unmeasured | Reserved |
+  +-----+---------------+---------------------+-------+------------+----------+
+     0          1                  2              3         4          5-7
+*/
+static BOOLEAN PeerMeasureReportSanity(
+	IN PRTMP_ADAPTER pAd,
+	IN VOID *pMsg,
+	IN ULONG MsgLen,
+	OUT PUINT8 pDialogToken,
+	OUT PMEASURE_REPORT_INFO pMeasureReportInfo,
+	OUT PUINT8 pReportBuf)
+{
+	PFRAME_802_11 Fr = (PFRAME_802_11)pMsg;
+	PUCHAR pFramePtr = Fr->Octet;
+	BOOLEAN result = FALSE;
+	PEID_STRUCT eid_ptr;
+	PUCHAR ptr;
+
+	// skip 802.11 header.
+	MsgLen -= sizeof(HEADER_802_11);
+
+	// skip category and action code.
+	pFramePtr += 2;
+	MsgLen -= 2;
+
+	if (pMeasureReportInfo == NULL)
+		return result;
+
+	NdisMoveMemory(pDialogToken, pFramePtr, 1);
+	pFramePtr += 1;
+	MsgLen -= 1;
+
+	eid_ptr = (PEID_STRUCT)pFramePtr;
+	while (((UCHAR*)eid_ptr + eid_ptr->Len + 1) < ((PUCHAR)pFramePtr + MsgLen))
+	{
+		switch(eid_ptr->Eid)
+		{
+			case IE_MEASUREMENT_REPORT:
+				NdisMoveMemory(&pMeasureReportInfo->Token, eid_ptr->Octet, 1);
+				NdisMoveMemory(&pMeasureReportInfo->ReportMode, eid_ptr->Octet + 1, 1);
+				NdisMoveMemory(&pMeasureReportInfo->ReportType, eid_ptr->Octet + 2, 1);
+				if (pMeasureReportInfo->ReportType == RM_BASIC)
+				{
+					PMEASURE_BASIC_REPORT pReport = (PMEASURE_BASIC_REPORT)pReportBuf;
+					ptr = (PUCHAR)(eid_ptr->Octet + 3);
+					NdisMoveMemory(&pReport->ChNum, ptr, 1);
+					NdisMoveMemory(&pReport->MeasureStartTime, ptr + 1, 8);
+					NdisMoveMemory(&pReport->MeasureDuration, ptr + 9, 2);
+					NdisMoveMemory(&pReport->Map, ptr + 11, 1);
+					
+				}
+				else if (pMeasureReportInfo->ReportType == RM_CCA)
+				{
+					PMEASURE_CCA_REPORT pReport = (PMEASURE_CCA_REPORT)pReportBuf;
+					ptr = (PUCHAR)(eid_ptr->Octet + 3);
+					NdisMoveMemory(&pReport->ChNum, ptr, 1);
+					NdisMoveMemory(&pReport->MeasureStartTime, ptr + 1, 8);
+					NdisMoveMemory(&pReport->MeasureDuration, ptr + 9, 2);
+					NdisMoveMemory(&pReport->CCA_Busy_Fraction, ptr + 11, 1);
+					
+				}
+				else if (pMeasureReportInfo->ReportType == RM_RPI_HISTOGRAM)
+				{
+					PMEASURE_RPI_REPORT pReport = (PMEASURE_RPI_REPORT)pReportBuf;
+					ptr = (PUCHAR)(eid_ptr->Octet + 3);
+					NdisMoveMemory(&pReport->ChNum, ptr, 1);
+					NdisMoveMemory(&pReport->MeasureStartTime, ptr + 1, 8);
+					NdisMoveMemory(&pReport->MeasureDuration, ptr + 9, 2);
+					NdisMoveMemory(&pReport->RPI_Density, ptr + 11, 8);
+				}
+				result = TRUE;
+                break;
+
+			default:
+				break;
+		}
+		eid_ptr = (PEID_STRUCT)((UCHAR*)eid_ptr + 2 + eid_ptr->Len);
+	}
+
+	return result;
+}
+
+/*
+	==========================================================================
+	Description:
+		TPC Request action frame sanity check.
+		
+	Parametrs:
+		1. MLME message containing the received frame
+		2. message length.
+		3. Dialog Token.
+	
+	Return	: None.
+	==========================================================================
+ */
+static BOOLEAN PeerTpcReqSanity(
+	IN PRTMP_ADAPTER pAd,
+	IN VOID *pMsg,
+	IN ULONG MsgLen,
+	OUT PUINT8 pDialogToken)
+{
+	PFRAME_802_11 Fr = (PFRAME_802_11)pMsg;
+	PUCHAR pFramePtr = Fr->Octet;
+	BOOLEAN result = FALSE;
+	PEID_STRUCT eid_ptr;
+
+	MsgLen -= sizeof(HEADER_802_11);
+
+	// skip category and action code.
+	pFramePtr += 2;
+	MsgLen -= 2;
+
+	if (pDialogToken == NULL)
+		return result;
+
+	NdisMoveMemory(pDialogToken, pFramePtr, 1);
+	pFramePtr += 1;
+	MsgLen -= 1;
+
+	eid_ptr = (PEID_STRUCT)pFramePtr;
+	while (((UCHAR*)eid_ptr + eid_ptr->Len + 1) < ((PUCHAR)pFramePtr + MsgLen))
+	{
+		switch(eid_ptr->Eid)
+		{
+			case IE_TPC_REQUEST:
+				result = TRUE;
+                break;
+
+			default:
+				break;
+		}
+		eid_ptr = (PEID_STRUCT)((UCHAR*)eid_ptr + 2 + eid_ptr->Len);
+	}
+
+	return result;	
+}
+
+/*
+	==========================================================================
+	Description:
+		TPC Report action frame sanity check.
+		
+	Parametrs:
+		1. MLME message containing the received frame
+		2. message length.
+		3. Dialog Token.
+		4. TPC Report IE.
+	
+	Return	: None.
+	==========================================================================
+ */
+static BOOLEAN PeerTpcRepSanity(
+	IN PRTMP_ADAPTER pAd,
+	IN VOID *pMsg,
+	IN ULONG MsgLen,
+	OUT PUINT8 pDialogToken,
+	OUT PTPC_REPORT_INFO pTpcRepInfo)
+{
+	PFRAME_802_11 Fr = (PFRAME_802_11)pMsg;
+	PUCHAR pFramePtr = Fr->Octet;
+	BOOLEAN result = FALSE;
+	PEID_STRUCT eid_ptr;
+
+	MsgLen -= sizeof(HEADER_802_11);
+
+	// skip category and action code.
+	pFramePtr += 2;
+	MsgLen -= 2;
+
+	if (pDialogToken == NULL)
+		return result;
+
+	NdisMoveMemory(pDialogToken, pFramePtr, 1);
+	pFramePtr += 1;
+	MsgLen -= 1;
+
+	eid_ptr = (PEID_STRUCT)pFramePtr;
+	while (((UCHAR*)eid_ptr + eid_ptr->Len + 1) < ((PUCHAR)pFramePtr + MsgLen))
+	{
+		switch(eid_ptr->Eid)
+		{
+			case IE_TPC_REPORT:
+				NdisMoveMemory(&pTpcRepInfo->TxPwr, eid_ptr->Octet, 1);
+				NdisMoveMemory(&pTpcRepInfo->LinkMargin, eid_ptr->Octet + 1, 1);
+				result = TRUE;
+                break;
+
+			default:
+				break;
+		}
+		eid_ptr = (PEID_STRUCT)((UCHAR*)eid_ptr + 2 + eid_ptr->Len);
+	}
+
+	return result;	
+}
+
+/*
+	==========================================================================
+	Description:
+		Channel Switch Announcement action frame handler.
+		
+	Parametrs:
+		Elme - MLME message containing the received frame
+	
+	Return	: None.
+	==========================================================================
+ */
+static VOID PeerChSwAnnAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+	CH_SW_ANN_INFO ChSwAnnInfo;
+	PFRAME_802_11 pFr = (PFRAME_802_11)Elem->Msg;
+#ifdef CONFIG_STA_SUPPORT
+	UCHAR index = 0, Channel = 0, NewChannel = 0;
+	ULONG Bssidx = 0;
+#endif // CONFIG_STA_SUPPORT //
+
+	NdisZeroMemory(&ChSwAnnInfo, sizeof(CH_SW_ANN_INFO));
+	if (! PeerChSwAnnSanity(pAd, Elem->Msg, Elem->MsgLen, &ChSwAnnInfo))
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("Invalid Channel Switch Action Frame.\n"));
+		return;
+	}
+
+
+#ifdef CONFIG_STA_SUPPORT
+	if (pAd->OpMode == OPMODE_STA)
+	{
+		Bssidx = BssTableSearch(&pAd->ScanTab, pFr->Hdr.Addr3, pAd->CommonCfg.Channel);
+		if (Bssidx == BSS_NOT_FOUND)
+		{
+			DBGPRINT(RT_DEBUG_TRACE, ("PeerChSwAnnAction - Bssidx is not found\n"));
+			return;  
+		}
+
+		DBGPRINT(RT_DEBUG_TRACE, ("\n****Bssidx is %d, Channel = %d\n", index, pAd->ScanTab.BssEntry[Bssidx].Channel));
+		hex_dump("SSID",pAd->ScanTab.BssEntry[Bssidx].Bssid ,6);
+
+		Channel = pAd->CommonCfg.Channel;
+		NewChannel = ChSwAnnInfo.Channel;
+
+		if ((pAd->CommonCfg.bIEEE80211H == 1) && (NewChannel != 0) && (Channel != NewChannel))
+		{
+			// Switching to channel 1 can prevent from rescanning the current channel immediately (by auto reconnection).
+			// In addition, clear the MLME queue and the scan table to discard the RX packets and previous scanning results.
+			AsicSwitchChannel(pAd, 1, FALSE);
+			AsicLockChannel(pAd, 1);
+		    LinkDown(pAd, FALSE);
+			MlmeQueueInit(&pAd->Mlme.Queue);
+			BssTableInit(&pAd->ScanTab);
+		    RTMPusecDelay(1000000);		// use delay to prevent STA do reassoc
+					
+			// channel sanity check
+			for (index = 0 ; index < pAd->ChannelListNum; index++)
+			{
+				if (pAd->ChannelList[index].Channel == NewChannel)
+				{
+					pAd->ScanTab.BssEntry[Bssidx].Channel = NewChannel;
+					pAd->CommonCfg.Channel = NewChannel;
+					AsicSwitchChannel(pAd, pAd->CommonCfg.Channel, FALSE);
+					AsicLockChannel(pAd, pAd->CommonCfg.Channel);
+					DBGPRINT(RT_DEBUG_TRACE, ("&&&&&&&&&&&&&&&&PeerChSwAnnAction - STA receive channel switch announcement IE (New Channel =%d)\n", NewChannel));
+					break;
+				}
+			}
+
+			if (index >= pAd->ChannelListNum)
+			{
+				DBGPRINT_ERR(("&&&&&&&&&&&&&&&&&&&&&&&&&&PeerChSwAnnAction(can not find New Channel=%d in ChannelList[%d]\n", pAd->CommonCfg.Channel, pAd->ChannelListNum));
+			}
+		}
+	}
+#endif // CONFIG_STA_SUPPORT //
+
+	return;
+}
+
+
+/*
+	==========================================================================
+	Description:
+		Measurement Request action frame handler.
+		
+	Parametrs:
+		Elme - MLME message containing the received frame
+	
+	Return	: None.
+	==========================================================================
+ */
+static VOID PeerMeasureReqAction(
+	IN PRTMP_ADAPTER pAd,
+	IN MLME_QUEUE_ELEM *Elem)
+{
+	PFRAME_802_11 pFr = (PFRAME_802_11)Elem->Msg;
+	UINT8 DialogToken;
+	MEASURE_REQ_INFO MeasureReqInfo;
+	MEASURE_REQ	MeasureReq;
+	MEASURE_REPORT_MODE ReportMode;
+
+	if(PeerMeasureReqSanity(pAd, Elem->Msg, Elem->MsgLen, &DialogToken, &MeasureReqInfo, &MeasureReq))
+	{
+		ReportMode.word = 0;
+		ReportMode.field.Incapable = 1;
+		EnqueueMeasurementRep(pAd, pFr->Hdr.Addr2, DialogToken, MeasureReqInfo.Token, ReportMode.word, MeasureReqInfo.ReqType, 0, NULL);
+	}
+
+	return;
+}
+
+/*
+	==========================================================================
+	Description:
+		Measurement Report action frame handler.
+		
+	Parametrs:
+		Elme - MLME message containing the received frame
+	
+	Return	: None.
+	==========================================================================
+ */
+static VOID PeerMeasureReportAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+	MEASURE_REPORT_INFO MeasureReportInfo;
+	PFRAME_802_11 pFr = (PFRAME_802_11)Elem->Msg;
+	UINT8 DialogToken;
+	PUINT8 pMeasureReportInfo;
+
+//	if (pAd->CommonCfg.bIEEE80211H != TRUE)
+//		return;
+
+	if ((pMeasureReportInfo = kmalloc(sizeof(MEASURE_RPI_REPORT), GFP_ATOMIC)) == NULL)
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("%s unable to alloc memory for measure report buffer (size=%d).\n", __FUNCTION__, sizeof(MEASURE_RPI_REPORT)));
+		return;
+	}
+
+	NdisZeroMemory(&MeasureReportInfo, sizeof(MEASURE_REPORT_INFO));
+	NdisZeroMemory(pMeasureReportInfo, sizeof(MEASURE_RPI_REPORT));
+	if (PeerMeasureReportSanity(pAd, Elem->Msg, Elem->MsgLen, &DialogToken, &MeasureReportInfo, pMeasureReportInfo))
+	{
+		do {
+			PMEASURE_REQ_ENTRY pEntry = NULL;
+
+			// Not a autonomous measure report.
+			// check the dialog token field. drop it if the dialog token doesn't match.
+			if ((DialogToken != 0)
+				&& ((pEntry = MeasureReqLookUp(pAd, DialogToken)) == NULL))
+				break;
+
+			if (pEntry != NULL)
+				MeasureReqDelete(pAd, pEntry->DialogToken);
+
+			if (MeasureReportInfo.ReportType == RM_BASIC)
+			{
+				PMEASURE_BASIC_REPORT pBasicReport = (PMEASURE_BASIC_REPORT)pMeasureReportInfo;
+				if ((pBasicReport->Map.field.Radar)
+					&& (DfsRequirementCheck(pAd, pBasicReport->ChNum) == TRUE))
+				{
+					NotifyChSwAnnToPeerAPs(pAd, pFr->Hdr.Addr1, pFr->Hdr.Addr2, 1, pBasicReport->ChNum);
+					StartDFSProcedure(pAd, pBasicReport->ChNum, 1);
+				}
+			}
+		} while (FALSE);
+	}
+	else
+		DBGPRINT(RT_DEBUG_TRACE, ("Invalid Measurement Report Frame.\n"));
+
+	kfree(pMeasureReportInfo);
+
+	return;
+}
+
+/*
+	==========================================================================
+	Description:
+		TPC Request action frame handler.
+		
+	Parametrs:
+		Elme - MLME message containing the received frame
+	
+	Return	: None.
+	==========================================================================
+ */
+static VOID PeerTpcReqAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+	PFRAME_802_11 pFr = (PFRAME_802_11)Elem->Msg;
+	PUCHAR pFramePtr = pFr->Octet;
+	UINT8 DialogToken;
+	UINT8 TxPwr = GetCurTxPwr(pAd, Elem->Wcid);
+	UINT8 LinkMargin = 0;
+	CHAR RealRssi;
+
+	// link margin: Ratio of the received signal power to the minimum desired by the station (STA). The
+	//				STA may incorporate rate information and channel conditions, including interference, into its computation
+	//				of link margin.
+
+	RealRssi = RTMPMaxRssi(pAd, ConvertToRssi(pAd, Elem->Rssi0, RSSI_0),
+								ConvertToRssi(pAd, Elem->Rssi1, RSSI_1),
+								ConvertToRssi(pAd, Elem->Rssi2, RSSI_2));
+
+	// skip Category and action code.
+	pFramePtr += 2;
+
+	// Dialog token.
+	NdisMoveMemory(&DialogToken, pFramePtr, 1);
+
+	LinkMargin = (RealRssi / MIN_RCV_PWR);
+	if (PeerTpcReqSanity(pAd, Elem->Msg, Elem->MsgLen, &DialogToken))
+		EnqueueTPCRep(pAd, pFr->Hdr.Addr2, DialogToken, TxPwr, LinkMargin);
+
+	return;
+}
+
+/*
+	==========================================================================
+	Description:
+		TPC Report action frame handler.
+		
+	Parametrs:
+		Elme - MLME message containing the received frame
+	
+	Return	: None.
+	==========================================================================
+ */
+static VOID PeerTpcRepAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+	UINT8 DialogToken;
+	TPC_REPORT_INFO TpcRepInfo;
+	PTPC_REQ_ENTRY pEntry = NULL;
+
+	NdisZeroMemory(&TpcRepInfo, sizeof(TPC_REPORT_INFO));
+	if (PeerTpcRepSanity(pAd, Elem->Msg, Elem->MsgLen, &DialogToken, &TpcRepInfo))
+	{
+		if ((pEntry = TpcReqLookUp(pAd, DialogToken)) != NULL)
+		{
+			TpcReqDelete(pAd, pEntry->DialogToken);
+			DBGPRINT(RT_DEBUG_TRACE, ("%s: DialogToken=%x, TxPwr=%d, LinkMargin=%d\n",
+				__FUNCTION__, DialogToken, TpcRepInfo.TxPwr, TpcRepInfo.LinkMargin));
+		}
+	}
+
+	return;
+}
+
+/*
+	==========================================================================
+	Description:
+		Spectrun action frames Handler such as channel switch annoucement,
+		measurement report, measurement request actions frames.
+		
+	Parametrs:
+		Elme - MLME message containing the received frame
+	
+	Return	: None.
+	==========================================================================
+ */
+VOID PeerSpectrumAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+
+	UCHAR	Action = Elem->Msg[LENGTH_802_11+1];
+
+	if (pAd->CommonCfg.bIEEE80211H != TRUE)
+		return;
+
+	switch(Action)
+	{
+		case SPEC_MRQ:
+			// current rt2860 unable do such measure specified in Measurement Request.
+			// reject all measurement request.
+			PeerMeasureReqAction(pAd, Elem);
+			break;
+
+		case SPEC_MRP:
+			PeerMeasureReportAction(pAd, Elem);
+			break;
+
+		case SPEC_TPCRQ:
+			PeerTpcReqAction(pAd, Elem);
+			break;
+
+		case SPEC_TPCRP:
+			PeerTpcRepAction(pAd, Elem);
+			break;
+
+		case SPEC_CHANNEL_SWITCH:
+
+#ifdef DOT11N_DRAFT3
+			{
+				SEC_CHA_OFFSET_IE	Secondary;
+				CHA_SWITCH_ANNOUNCE_IE	ChannelSwitch;
+
+				// 802.11h only has Channel Switch Announcement IE. 
+				RTMPMoveMemory(&ChannelSwitch, &Elem->Msg[LENGTH_802_11+4], sizeof (CHA_SWITCH_ANNOUNCE_IE));
+					
+				// 802.11n D3.03 adds secondary channel offset element in the end.
+				if (Elem->MsgLen ==  (LENGTH_802_11 + 2 + sizeof (CHA_SWITCH_ANNOUNCE_IE) + sizeof (SEC_CHA_OFFSET_IE)))
+				{
+					RTMPMoveMemory(&Secondary, &Elem->Msg[LENGTH_802_11+9], sizeof (SEC_CHA_OFFSET_IE));
+				}
+				else
+				{
+					Secondary.SecondaryChannelOffset = 0;
+				}
+
+				if ((Elem->Msg[LENGTH_802_11+2] == IE_CHANNEL_SWITCH_ANNOUNCEMENT) && (Elem->Msg[LENGTH_802_11+3] == 3))
+				{
+					ChannelSwitchAction(pAd, Elem->Wcid, ChannelSwitch.NewChannel, Secondary.SecondaryChannelOffset);
+				}
+			}
+#endif // DOT11N_DRAFT3 //
+
+			PeerChSwAnnAction(pAd, Elem);
+			break;
+	}
+
+	return;
+}
+
+/*
+	==========================================================================
+	Description:
+		
+	Parametrs:
+	
+	Return	: None.
+	==========================================================================
+ */
+INT Set_MeasureReq_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	UINT Aid = 1;
+	UINT ArgIdx;
+	PSTRING thisChar;
+
+	MEASURE_REQ_MODE MeasureReqMode;
+	UINT8 MeasureReqToken = RandomByte(pAd);
+	UINT8 MeasureReqType = RM_BASIC;
+	UINT8 MeasureCh = 1;
+	UINT64 MeasureStartTime = GetCurrentTimeStamp(pAd);
+	MEASURE_REQ MeasureReq;
+	UINT8 TotalLen;
+
+	HEADER_802_11 ActHdr;
+	PUCHAR pOutBuffer = NULL;
+	NDIS_STATUS NStatus;
+	ULONG FrameLen;
+
+	NStatus = MlmeAllocateMemory(pAd, (PVOID)&pOutBuffer);  //Get an unused nonpaged memory
+	if(NStatus != NDIS_STATUS_SUCCESS)
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("%s() allocate memory failed \n", __FUNCTION__));
+		goto END_OF_MEASURE_REQ;
+	}
+
+	ArgIdx = 1;
+	while ((thisChar = strsep((char **)&arg, "-")) != NULL)
+	{
+		switch(ArgIdx)
+		{
+			case 1:	// Aid.
+				Aid = (UINT8) simple_strtol(thisChar, 0, 16);
+				break;
+
+			case 2: // Measurement Request Type.
+				MeasureReqType = simple_strtol(thisChar, 0, 16);
+				if (MeasureReqType > 3)
+				{
+					DBGPRINT(RT_DEBUG_ERROR, ("%s: unknow MeasureReqType(%d)\n", __FUNCTION__, MeasureReqType));
+					goto END_OF_MEASURE_REQ;
+				}
+				break;
+
+			case 3: // Measurement channel.
+				MeasureCh = (UINT8) simple_strtol(thisChar, 0, 16);
+				break;
+		}
+		ArgIdx++;
+	}	
+
+	DBGPRINT(RT_DEBUG_TRACE, ("%s::Aid = %d, MeasureReqType=%d MeasureCh=%d\n", __FUNCTION__, Aid, MeasureReqType, MeasureCh));
+	if (!VALID_WCID(Aid))
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("%s: unknow sta of Aid(%d)\n", __FUNCTION__, Aid));
+		goto END_OF_MEASURE_REQ;
+	}
+
+	MeasureReqMode.word = 0;
+	MeasureReqMode.field.Enable = 1;
+
+	MeasureReqInsert(pAd, MeasureReqToken);
+
+	// build action frame header.
+	MgtMacHeaderInit(pAd, &ActHdr, SUBTYPE_ACTION, 0, pAd->MacTab.Content[Aid].Addr,
+						pAd->CurrentAddress);
+
+	NdisMoveMemory(pOutBuffer, (PCHAR)&ActHdr, sizeof(HEADER_802_11));
+	FrameLen = sizeof(HEADER_802_11);
+
+	TotalLen = sizeof(MEASURE_REQ_INFO) + sizeof(MEASURE_REQ);
+
+	MakeMeasurementReqFrame(pAd, pOutBuffer, &FrameLen,
+		sizeof(MEASURE_REQ_INFO), CATEGORY_RM, RM_BASIC,
+		MeasureReqToken, MeasureReqMode.word,
+		MeasureReqType, 1);
+
+	MeasureReq.ChNum = MeasureCh;
+	MeasureReq.MeasureStartTime = cpu2le64(MeasureStartTime);
+	MeasureReq.MeasureDuration = cpu2le16(2000);
+
+	{
+		ULONG TempLen;
+		MakeOutgoingFrame(	pOutBuffer+FrameLen,	&TempLen,
+							sizeof(MEASURE_REQ),	&MeasureReq,
+							END_OF_ARGS);
+		FrameLen += TempLen;
+	}
+
+	MiniportMMRequest(pAd, QID_AC_BE, pOutBuffer, (UINT)FrameLen);
+
+END_OF_MEASURE_REQ:
+	MlmeFreeMemory(pAd, pOutBuffer);
+
+	return TRUE;
+}
+
+INT Set_TpcReq_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	UINT Aid;
+
+	UINT8 TpcReqToken = RandomByte(pAd);
+
+	Aid = (UINT) simple_strtol(arg, 0, 16);
+
+	DBGPRINT(RT_DEBUG_TRACE, ("%s::Aid = %d\n", __FUNCTION__, Aid));
+	if (!VALID_WCID(Aid))
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("%s: unknow sta of Aid(%d)\n", __FUNCTION__, Aid));
+		return TRUE;
+	}
+
+	TpcReqInsert(pAd, TpcReqToken);
+
+	EnqueueTPCReq(pAd, pAd->MacTab.Content[Aid].Addr, TpcReqToken);
+
+	return TRUE;
+}
+
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/vr_ikans.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/vr_ikans.c
new file mode 100644
index 000000000..ef030e882
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/common/vr_ikans.c
@@ -0,0 +1,335 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+ 
+    Module Name:
+    vr_ikans.c
+ 
+    Abstract:
+    Only for IKANOS Vx160 or Vx180 platform.
+
+	The fast path will check IP address/ IP port, etc. NOT only check MAC.
+ 
+    Revision History:
+    Who         When          What
+    --------    ----------    ----------------------------------------------
+    Sample Lin	01-28-2008    Created
+
+ */
+
+#define MODULE_IKANOS
+
+#include "rt_config.h"
+#include <linux/config.h>
+#include <linux/version.h>
+#include <linux/module.h>
+#include <linux/skbuff.h>
+#include <linux/netdevice.h>
+#include <netpro/apprehdr.h>
+
+
+#ifdef IKANOS_VX_1X0
+
+#define IKANOS_PERAP_ID		7 /* IKANOS Fix Peripheral ID */
+#define K0_TO_K1(x)			((unsigned)(x)|0xA0000000) /* kseg0 to kseg1 */
+//#define IKANOS_DEBUG
+
+
+extern INT rt28xx_send_packets(
+	IN struct sk_buff		*skb_p,
+	IN struct net_device	*net_dev);
+
+static INT32 IKANOS_WlanDataFramesTx(
+	IN void					*_pAdBuf,
+	IN struct net_device	*pNetDev);
+
+static void IKANOS_WlanPktFromAp(
+	IN apPreHeader_t 		*pFrame);
+
+static INT32 GetSpecInfoIdxFromBssid(
+	IN PRTMP_ADAPTER pAd,
+	IN INT32 FromWhichBSSID);
+
+
+
+
+/* --------------------------------- Public -------------------------------- */
+
+/*
+========================================================================
+Routine Description:
+	Init IKANOS fast path function.
+
+Arguments:
+	pApMac			- the MAC of AP
+
+Return Value:
+	None
+
+Note:
+	If you want to enable RX fast path, you must call the function.
+========================================================================
+*/
+void VR_IKANOS_FP_Init(
+	IN UINT8 BssNum,
+	IN UINT8 *pApMac)
+{
+	UINT32 i;
+	UINT8 mac[6];
+
+
+	memcpy(mac, pApMac, 6);
+
+	/* add all MAC of multiple BSS */
+	for(i=0; i<BssNum; i++)
+	{
+		apMacAddrConfig(7, mac, 0xAD);
+		mac[5] ++;
+	} /* End of for */
+} /* End of VR_IKANOS_FP_Init */
+
+
+/*
+========================================================================
+Routine Description:
+	Ikanos LAN --> WLAN transmit fast path function.
+
+Arguments:
+	skb				- the transmitted packet (SKB packet format)
+	netdev			- our WLAN network device
+
+Return Value:
+	
+
+Note:
+========================================================================
+*/
+INT32 IKANOS_DataFramesTx(
+	IN struct sk_buff		*pSkb,
+	IN struct net_device	*pNetDev)
+{
+	PRTMP_ADAPTER pAd = (PRTMP_ADAPTER)pNetDev->priv;
+	IkanosWlanTxCbFuncP *fp = &IKANOS_WlanDataFramesTx;
+
+	pSkb->apFlowData.txDev = pNetDev;
+	pSkb->apFlowData.txApId = IKANOS_PERAP_ID;
+	pAd->IkanosTxInfo.netdev = pNetDev;
+	pAd->IkanosTxInfo.fp = fp;
+	pSkb->apFlowData.txHandle = &(pAd->IkanosTxInfo);
+	ap2apFlowProcess(pSkb, pNetDev);
+
+#ifdef IKANOS_DEBUG
+	printk("ikanos> tx no fp\n"); // debug use
+#endif // IKANOS_DEBUG //
+
+	return rt28xx_send_packets(pSkb, pNetDev);
+} /* End of IKANOS_DataFramesTx */
+
+
+/*
+========================================================================
+Routine Description:
+	Ikanos WLAN --> LAN transmit fast path function.
+
+Arguments:
+	pAd				- WLAN control block
+	pRxParam		-
+	pSkb			- the transmitted packet (SKB packet format)
+	Length			- packet length
+
+Return Value:
+	None
+
+Note:
+========================================================================
+*/
+/* Note: because no unsigned long private parameters in apPreHeader_t can be used,
+	we use a global variable to record pAd.
+	So we can not use multiple card function in Ikanos platform. */
+PRTMP_ADAPTER	pIkanosAd;
+
+void IKANOS_DataFrameRx(
+	IN PRTMP_ADAPTER	pAd,
+	IN void				*pRxParam,
+	IN struct sk_buff	*pSkb,
+	IN UINT32			Length)
+{
+    apPreHeader_t *apBuf;
+
+
+    apBuf = (apPreHeader_t *)(translateMbuf2Apbuf(pSkb, 0));
+
+    apBuf->flags1 = 1 << AP_FLAG1_IS_ETH_BIT;
+    apBuf->specInfoElement = RTMP_GET_PACKET_NET_DEVICE(pSkb); // MBSS
+	pIkanosAd = pAd;
+
+//  apBuf->egressList[0].pEgress = NULL;
+//  apBuf->egressList[0].pFlowID = NULL;
+    apBuf->flags2 = 0;
+
+    apClassify(IKANOS_PERAP_ID, apBuf, (void *)IKANOS_WlanPktFromAp);
+    dev_kfree_skb(pSkb); 
+} /* End of IKANOS_DataFrameRx */
+
+
+
+
+/* --------------------------------- Private -------------------------------- */
+
+/*
+========================================================================
+Routine Description:
+	Ikanos LAN --> WLAN transmit fast path function.
+
+Arguments:
+	_pAdBuf			- the transmitted packet (Ikanos packet format)
+	netdev			- our WLAN network device
+
+Return Value:
+	
+
+Note:
+========================================================================
+*/
+static INT32 IKANOS_WlanDataFramesTx(
+	IN void					*_pAdBuf,
+	IN struct net_device	*pNetDev)
+{
+	apPreHeader_t *pApBuf = (apPreHeader_t *)_pAdBuf;
+	struct sk_buff *sk = NULL;
+
+	sk = (struct sk_buff *)translateApbuf2Mbuf(pApBuf);
+	if (sk == NULL)
+	{
+		printk("ikanos> translateApbuf2Mbuf returned NULL!\n");
+		return 1;
+	} /* End of if */
+
+	sk->apFlowData.flags2 = 0;
+	sk->apFlowData.wlanFlags = 0;
+	sk->protocol = ETH_P_IP;
+	sk->dev = pNetDev;
+	sk->priority = 0;
+
+	return rt28xx_send_packets(sk, pNetDev);
+} /* End of IKANOS_WlanDataFramesTx */
+
+
+/*
+========================================================================
+Routine Description:
+	Get real interface index, used in get_netdev_from_bssid()
+
+Arguments:
+	pAd				- 
+	FromWhichBSSID	- 
+
+Return Value:
+	None
+
+Note:
+========================================================================
+*/
+static INT32 GetSpecInfoIdxFromBssid(
+	IN PRTMP_ADAPTER	pAd,
+	IN INT32			FromWhichBSSID)
+{
+	INT32 IfIdx = MAIN_MBSSID;
+
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+		IfIdx = MAIN_MBSSID;
+	}
+#endif // CONFIG_STA_SUPPORT //
+
+	return IfIdx; /* return one of MBSS */
+} /* End of GetSpecInfoIdxFromBssid */
+
+
+/*
+========================================================================
+Routine Description:
+	Ikanos WLAN --> LAN transmit fast path function.
+
+Arguments:
+	pFrame			- the received packet (Ikanos packet format)
+
+Return Value:
+	None
+
+Note:
+	Ikanos platform supports only 8 VAPs
+========================================================================
+*/
+static void IKANOS_WlanPktFromAp(
+	IN apPreHeader_t		*pFrame)
+{
+	PRTMP_ADAPTER pAd;
+    struct net_device *dev = NULL;
+    struct sk_buff *skb;
+    INT32 index;
+    apPreHeader_t *apBuf = K0_TO_K1(pFrame);
+
+
+	pAd = pIkanosAd;
+    //index = apBuf->specInfoElement;
+	//dev = pAd->ApCfg.MBSSID[index].MSSIDDev;
+	index = GetSpecInfoIdxFromBssid(pAd, apBuf->specInfoElement);
+	dev = get_netdev_from_bssid(pAd, apBuf->specInfoElement);
+    if (dev == NULL)
+    {
+        printk("ikanos> %s: ERROR null device ***************\n", __FUNCTION__);
+        return;
+    } /* End of if */
+
+    skb = (struct sk_buff *)translateApbuf2Mbuf(apBuf);
+    if (NULL == skb)
+    {
+        printk("ikanos> %s: skb is null *********************\n", __FUNCTION__);
+        return;
+    } /* End of if */
+
+    pAd->IkanosRxInfo[index].netdev = dev;
+    pAd->IkanosRxInfo[index].fp = &IKANOS_WlanDataFramesTx;
+
+    skb->dev = dev;
+    skb->apFlowData.rxApId = IKANOS_PERAP_ID;
+    //skb->apFlowData.txHandle = &(txinforx[index]);
+    skb->apFlowData.rxHandle = &(pAd->IkanosRxInfo[index]);
+    skb->protocol = eth_type_trans(skb, skb->dev);
+
+#ifdef IKANOS_DEBUG
+	printk("ikanos> rx no fp!\n"); // debug use
+#endif // IKANOS_DEBUG //
+
+    netif_rx(skb);
+    return;
+} /* End of IKANOS_WlanPktFromAp */
+
+#endif // IKANOS_VX_1X0 //
+
+/* End of vr_ikans.c */
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/dkms.conf b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/dkms.conf
new file mode 100644
index 000000000..41e9a05e2
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/dkms.conf
@@ -0,0 +1,11 @@
+MAKE="make all"
+INCLUDEDIR="/lib/modules/$kernelver/build/include"
+DEST_MODULE_LOCATION="/kernel/drivers/net/wireless/"
+BUILT_MODULE_NAME="rt3562sta"
+BUILT_MODULE_LOCATION="os/linux/"
+PACKAGE_NAME="lepregao712010"
+PACKAGE_VERSION="2.3.0.0-Alpha-v2"
+REMAKE_INITRD="yes"
+MODULE_NAME="rt3562sta.o"
+CLEAN="make clean"
+AUTOINSTALL=yes
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/action.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/action.h
new file mode 100644
index 000000000..a9b50844b
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/action.h
@@ -0,0 +1,68 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+	Module Name:
+	aironet.h
+
+	Abstract:
+
+	Revision History:
+	Who			When			What
+	--------	----------		----------------------------------------------
+	Name		Date			Modification logs
+	Paul Lin	04-06-15		Initial
+*/
+
+#ifndef	__ACTION_H__
+#define	__ACTION_H__
+
+typedef struct GNU_PACKED __HT_INFO_OCTET
+{
+#ifdef RT_BIG_ENDIAN
+	UCHAR	Reserved:5;
+	UCHAR 	STA_Channel_Width:1;
+	UCHAR	Forty_MHz_Intolerant:1;
+	UCHAR	Request:1;
+#else
+	UCHAR	Request:1;
+	UCHAR	Forty_MHz_Intolerant:1;
+	UCHAR 	STA_Channel_Width:1;
+	UCHAR	Reserved:5;
+#endif
+} HT_INFORMATION_OCTET;
+
+
+typedef struct GNU_PACKED __FRAME_HT_INFO
+{
+	HEADER_802_11   		Hdr;
+	UCHAR					Category;
+	UCHAR					Action;
+	HT_INFORMATION_OCTET	HT_Info;
+}   FRAME_HT_INFO, *PFRAME_HT_INFO;
+
+#endif /* __ACTION_H__ */
+
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/ap.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/ap.h
new file mode 100644
index 000000000..72b79f592
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/ap.h
@@ -0,0 +1,533 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+    Module Name:
+    ap.h
+
+    Abstract:
+    Miniport generic portion header file
+
+    Revision History:
+    Who         When          What
+    --------    ----------    ----------------------------------------------
+    Paul Lin    08-01-2002    created
+    James Tan   09-06-2002    modified (Revise NTCRegTable)
+    John Chang  12-22-2004    modified for RT2561/2661. merge with STA driver
+*/
+#ifndef __AP_H__
+#define __AP_H__
+
+
+// =============================================================
+//      Function Prototypes
+// =============================================================
+
+// ap_data.c
+
+BOOLEAN APBridgeToWirelessSta(
+    IN  PRTMP_ADAPTER   pAd,
+    IN  PUCHAR          pHeader,
+    IN  UINT            HdrLen,
+    IN  PUCHAR          pData,
+    IN  UINT            DataLen,
+    IN  ULONG           fromwdsidx);
+
+VOID RTMP_BASetup(
+	IN PRTMP_ADAPTER pAd,
+	IN PMAC_TABLE_ENTRY pMacEntry,
+	IN UINT8 UserPriority);
+
+VOID	APSendPackets(
+	IN	NDIS_HANDLE		MiniportAdapterContext,
+	IN	PPNDIS_PACKET	ppPacketArray,
+	IN	UINT			NumberOfPackets);
+
+NDIS_STATUS APSendPacket(
+    IN  PRTMP_ADAPTER   pAd,
+    IN  PNDIS_PACKET    pPacket);
+
+
+NDIS_STATUS APHardTransmit(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	TX_BLK			*pTxBlk,
+	IN	UCHAR			QueIdx);
+
+VOID APRxEAPOLFrameIndicate(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	MAC_TABLE_ENTRY	*pEntry,
+	IN	RX_BLK			*pRxBlk,
+	IN	UCHAR			FromWhichBSSID);
+
+NDIS_STATUS APCheckRxError(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PRT28XX_RXD_STRUC		pRxD,
+	IN	UCHAR			Wcid);
+
+BOOLEAN APCheckClass2Class3Error(
+    IN  PRTMP_ADAPTER   pAd,
+	IN ULONG Wcid, 
+	IN  PHEADER_802_11  pHeader);
+
+VOID APHandleRxPsPoll(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PUCHAR			pAddr,
+	IN	USHORT			Aid,
+    IN	BOOLEAN			isActive);
+
+VOID    RTMPDescriptorEndianChange(
+    IN  PUCHAR          pData,
+    IN  ULONG           DescriptorType);
+    
+VOID    RTMPFrameEndianChange(
+    IN  PRTMP_ADAPTER   pAd,
+    IN  PUCHAR          pData,
+    IN  ULONG           Dir,
+    IN  BOOLEAN         FromRxDoneInt);
+
+// ap_assoc.c
+
+VOID APAssocStateMachineInit(
+    IN  PRTMP_ADAPTER   pAd, 
+    IN  STATE_MACHINE *S, 
+    OUT STATE_MACHINE_FUNC Trans[]);
+
+VOID  APPeerAssocReqAction(
+    IN  PRTMP_ADAPTER   pAd, 
+    IN  MLME_QUEUE_ELEM *Elem);
+
+VOID  APPeerReassocReqAction(
+    IN  PRTMP_ADAPTER   pAd, 
+    IN  MLME_QUEUE_ELEM *Elem);
+
+VOID  APPeerDisassocReqAction(
+    IN  PRTMP_ADAPTER   pAd, 
+    IN  MLME_QUEUE_ELEM *Elem);
+
+VOID MbssKickOutStas(
+	IN PRTMP_ADAPTER pAd,
+	IN INT apidx,
+	IN USHORT Reason);
+
+VOID APMlmeKickOutSta(
+    IN PRTMP_ADAPTER pAd, 
+	IN PUCHAR pStaAddr, 
+	IN UCHAR Wcid,
+	IN USHORT Reason);
+
+VOID APMlmeDisassocReqAction(
+    IN PRTMP_ADAPTER pAd, 
+    IN MLME_QUEUE_ELEM *Elem);
+
+VOID  APCls3errAction(
+    IN  PRTMP_ADAPTER   pAd, 
+	IN 	ULONG Wcid,
+    IN	PHEADER_802_11	pHeader);
+
+
+USHORT APBuildAssociation(
+    IN PRTMP_ADAPTER pAd,
+    IN MAC_TABLE_ENTRY *pEntry,
+    IN USHORT CapabilityInfo,
+    IN UCHAR  MaxSupportedRateIn500Kbps,
+    IN UCHAR  *RSN,
+    IN UCHAR  *pRSNLen, 
+    IN BOOLEAN bWmmCapable,
+    IN ULONG  RalinkIe,
+    IN EXT_CAP_INFO_ELEMENT ExtCapInfo,
+	IN HT_CAPABILITY_IE		*pHtCapability,
+	IN UCHAR		 HtCapabilityLen,
+    OUT USHORT *pAid);
+
+/*
+VOID	RTMPAddClientSec(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	UCHAR	BssIdx,
+	IN UCHAR		 KeyIdx,
+	IN UCHAR		 CipherAlg,
+	IN PUCHAR		 pKey,
+	IN PUCHAR		 pTxMic,
+	IN PUCHAR		 pRxMic,
+	IN MAC_TABLE_ENTRY *pEntry);
+*/
+
+// ap_auth.c
+
+void APAuthStateMachineInit(
+    IN PRTMP_ADAPTER pAd, 
+    IN STATE_MACHINE *Sm, 
+    OUT STATE_MACHINE_FUNC Trans[]);
+
+VOID APCls2errAction(
+    IN PRTMP_ADAPTER pAd, 
+	IN 	ULONG Wcid,
+    IN	PHEADER_802_11	pHeader);
+
+// ap_connect.c
+
+
+VOID APMakeBssBeacon(
+    IN  PRTMP_ADAPTER   pAd,
+	IN	INT				apidx);
+
+VOID  APUpdateBeaconFrame(
+    IN  PRTMP_ADAPTER   pAd,
+	IN	INT				apidx);
+
+VOID APMakeAllBssBeacon(
+    IN  PRTMP_ADAPTER   pAd);
+
+VOID  APUpdateAllBeaconFrame(
+    IN  PRTMP_ADAPTER   pAd);
+
+
+// ap_sync.c
+
+VOID APSyncStateMachineInit(
+    IN PRTMP_ADAPTER pAd,
+    IN STATE_MACHINE *Sm,
+    OUT STATE_MACHINE_FUNC Trans[]);
+
+VOID APScanTimeout(
+	IN PVOID SystemSpecific1,
+	IN PVOID FunctionContext,
+	IN PVOID SystemSpecific2,
+	IN PVOID SystemSpecific3);
+
+VOID APInvalidStateWhenScan(
+	IN PRTMP_ADAPTER pAd,
+	IN MLME_QUEUE_ELEM *Elem);
+
+VOID APScanTimeoutAction(
+	IN PRTMP_ADAPTER pAd,
+	IN MLME_QUEUE_ELEM *Elem);
+
+VOID APPeerProbeReqAction(
+    IN  PRTMP_ADAPTER pAd, 
+    IN  MLME_QUEUE_ELEM *Elem);
+
+VOID APPeerBeaconAction(
+    IN PRTMP_ADAPTER pAd, 
+    IN MLME_QUEUE_ELEM *Elem);
+
+VOID APMlmeScanReqAction(
+	IN PRTMP_ADAPTER pAd,
+	IN MLME_QUEUE_ELEM *Elem);
+
+VOID APPeerBeaconAtScanAction(
+	IN PRTMP_ADAPTER pAd,
+	IN MLME_QUEUE_ELEM *Elem);
+
+VOID APScanCnclAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem);
+
+VOID ApSiteSurvey(
+	IN	PRTMP_ADAPTER  		pAd,
+	IN	PNDIS_802_11_SSID	pSsid,
+	IN	UCHAR				ScanType);
+
+VOID SupportRate(
+	IN PUCHAR SupRate,
+	IN UCHAR SupRateLen,
+	IN PUCHAR ExtRate,
+	IN UCHAR ExtRateLen,
+	OUT PUCHAR *Rates,
+	OUT PUCHAR RatesLen,
+	OUT PUCHAR pMaxSupportRate);
+
+
+BOOLEAN ApScanRunning(
+	IN PRTMP_ADAPTER pAd);
+	
+#ifdef DOT11N_DRAFT3
+VOID APOverlappingBSSScan(
+	IN RTMP_ADAPTER *pAd);
+
+INT GetBssCoexEffectedChRange(
+	IN RTMP_ADAPTER *pAd,
+	IN BSS_COEX_CH_RANGE *pCoexChRange);
+
+#endif // DOT11N_DRAFT3 //
+
+// ap_wpa.c
+VOID WpaStateMachineInit(
+    IN  PRTMP_ADAPTER   pAd, 
+    IN  STATE_MACHINE *Sm, 
+    OUT STATE_MACHINE_FUNC Trans[]);
+
+// ap_mlme.c
+VOID APMlmePeriodicExec(
+    IN  PRTMP_ADAPTER   pAd);
+
+VOID APMlmeSelectTxRateTable(
+	IN PRTMP_ADAPTER		pAd,
+	IN PMAC_TABLE_ENTRY		pEntry,
+	IN PUCHAR				*ppTable,
+	IN PUCHAR				pTableSize,
+	IN PUCHAR				pInitTxRateIdx);
+
+VOID APMlmeSetTxRate(
+	IN PRTMP_ADAPTER		pAd,
+	IN PMAC_TABLE_ENTRY		pEntry,
+	IN PRTMP_TX_RATE_SWITCH	pTxRate);
+
+VOID APMlmeDynamicTxRateSwitching(
+    IN PRTMP_ADAPTER pAd);
+
+VOID APQuickResponeForRateUpExec(
+    IN PVOID SystemSpecific1, 
+    IN PVOID FunctionContext, 
+    IN PVOID SystemSpecific2, 
+    IN PVOID SystemSpecific3);
+
+BOOLEAN APMsgTypeSubst(
+    IN PRTMP_ADAPTER pAd,
+    IN PFRAME_802_11 pFrame, 
+    OUT INT *Machine, 
+    OUT INT *MsgType);
+
+VOID APQuickResponeForRateUpExec(
+    IN PVOID SystemSpecific1, 
+    IN PVOID FunctionContext, 
+    IN PVOID SystemSpecific2, 
+    IN PVOID SystemSpecific3);
+
+
+
+VOID RTMPSetPiggyBack(
+	IN PRTMP_ADAPTER	pAd,
+	IN BOOLEAN			bPiggyBack);
+
+VOID APAsicEvaluateRxAnt(
+	IN PRTMP_ADAPTER	pAd);
+
+VOID APAsicRxAntEvalTimeout(
+	IN PRTMP_ADAPTER	pAd);
+
+// ap.c
+
+VOID APSwitchChannel(
+	IN PRTMP_ADAPTER pAd,
+	IN INT Channel);
+
+NDIS_STATUS APInitialize(
+    IN  PRTMP_ADAPTER   pAd);
+
+VOID APShutdown(
+    IN PRTMP_ADAPTER    pAd);
+
+VOID APStartUp(
+    IN  PRTMP_ADAPTER   pAd);
+
+VOID APStop(
+    IN  PRTMP_ADAPTER   pAd);
+
+VOID APCleanupPsQueue(
+    IN  PRTMP_ADAPTER   pAd,
+    IN  PQUEUE_HEADER   pQueue);
+
+VOID MacTableReset(
+    IN  PRTMP_ADAPTER   pAd);
+
+MAC_TABLE_ENTRY *MacTableInsertEntry(
+    IN  PRTMP_ADAPTER   pAd, 
+    IN  PUCHAR          pAddr,
+	IN	UCHAR			apidx,
+	IN BOOLEAN	CleanAll); 
+
+BOOLEAN MacTableDeleteEntry(
+    IN  PRTMP_ADAPTER   pAd, 
+	IN USHORT wcid,
+    IN  PUCHAR          pAddr);
+
+MAC_TABLE_ENTRY *MacTableLookup(
+    IN  PRTMP_ADAPTER   pAd, 
+    IN  PUCHAR          pAddr);
+
+VOID MacTableMaintenance(
+    IN PRTMP_ADAPTER pAd);
+
+UINT32 MacTableAssocStaNumGet(
+	IN PRTMP_ADAPTER pAd);
+
+MAC_TABLE_ENTRY *APSsPsInquiry(
+    IN  PRTMP_ADAPTER   pAd, 
+    IN  PUCHAR          pAddr, 
+    OUT SST             *Sst, 
+    OUT USHORT          *Aid,
+    OUT UCHAR           *PsMode,
+    OUT UCHAR           *Rate); 
+
+BOOLEAN APPsIndicate(
+    IN  PRTMP_ADAPTER   pAd, 
+    IN  PUCHAR          pAddr, 
+	IN ULONG Wcid, 
+    IN  UCHAR           Psm);
+
+#ifdef SYSTEM_LOG_SUPPORT
+VOID ApLogEvent(
+    IN PRTMP_ADAPTER    pAd,
+    IN PUCHAR           pAddr,
+    IN USHORT           Event);
+#else
+#define ApLogEvent(_pAd, _pAddr, _Event)
+#endif // SYSTEM_LOG_SUPPORT //
+
+#ifdef DOT11_N_SUPPORT
+VOID APUpdateOperationMode(
+    IN PRTMP_ADAPTER pAd);
+#endif // DOT11_N_SUPPORT //
+
+VOID APUpdateCapabilityAndErpIe(
+	IN PRTMP_ADAPTER pAd);
+
+BOOLEAN ApCheckAccessControlList(
+	IN PRTMP_ADAPTER pAd,
+	IN PUCHAR        pAddr,
+	IN UCHAR         Apidx);
+
+VOID ApUpdateAccessControlList(
+    IN PRTMP_ADAPTER pAd,
+    IN UCHAR         Apidx);
+
+VOID ApEnqueueNullFrame(
+	IN PRTMP_ADAPTER pAd,
+	IN PUCHAR        pAddr,
+	IN UCHAR         TxRate,
+	IN UCHAR         PID,
+	IN UCHAR         apidx,
+    IN BOOLEAN       bQosNull,
+    IN BOOLEAN       bEOSP,
+    IN UCHAR         OldUP);
+
+VOID ApSendFrame(
+    IN  PRTMP_ADAPTER   pAd,
+    IN  PVOID           pBuffer,
+    IN  ULONG           Length,
+    IN  UCHAR           TxRate,
+    IN  UCHAR           PID);
+
+VOID ApEnqueueAckFrame(
+    IN PRTMP_ADAPTER pAd,
+    IN PUCHAR        pAddr,
+    IN UCHAR         TxRate,
+	IN UCHAR         apidx);
+
+// ap_sanity.c
+
+
+BOOLEAN PeerAssocReqCmmSanity(
+    IN PRTMP_ADAPTER pAd, 
+	IN BOOLEAN isRessoc,
+    IN VOID *Msg, 
+    IN ULONG MsgLen, 
+    OUT PUCHAR pAddr2,
+    OUT USHORT *pCapabilityInfo, 
+    OUT USHORT *pListenInterval, 
+    OUT PUCHAR pApAddr,
+    OUT UCHAR *pSsidLen,
+    OUT char *Ssid,
+    OUT UCHAR *pRatesLen,
+    OUT UCHAR Rates[],
+    OUT UCHAR *RSN,
+    OUT UCHAR *pRSNLen,
+    OUT BOOLEAN *pbWmmCapable,
+    OUT ULONG  *pRalinkIe,
+    OUT EXT_CAP_INFO_ELEMENT	*pExtCapInfo,
+    OUT UCHAR		 *pHtCapabilityLen,
+    OUT HT_CAPABILITY_IE *pHtCapability);
+
+
+BOOLEAN PeerDisassocReqSanity(
+    IN PRTMP_ADAPTER pAd, 
+    IN VOID *Msg, 
+    IN ULONG MsgLen, 
+    OUT PUCHAR pAddr2, 
+    OUT	UINT16	*SeqNum,
+    OUT USHORT *Reason);
+
+BOOLEAN PeerDeauthReqSanity(
+    IN PRTMP_ADAPTER pAd, 
+    IN VOID *Msg, 
+    IN ULONG MsgLen, 
+    OUT PUCHAR pAddr2, 
+   	OUT	UINT16	*SeqNum,    
+    OUT USHORT *Reason);
+
+BOOLEAN APPeerAuthSanity(
+    IN PRTMP_ADAPTER pAd, 
+    IN VOID *Msg, 
+    IN ULONG MsgLen, 
+	OUT PUCHAR pAddr1, 
+    OUT PUCHAR pAddr2, 
+    OUT USHORT *Alg, 
+    OUT USHORT *Seq, 
+    OUT USHORT *Status, 
+    OUT CHAR *ChlgText
+	);
+
+
+BOOLEAN APPeerBeaconAndProbeRspSanity(
+    IN PRTMP_ADAPTER pAd, 
+    IN VOID *Msg, 
+    IN ULONG MsgLen, 
+    OUT PUCHAR pAddr2, 
+    OUT PUCHAR pBssid, 
+    OUT CHAR Ssid[], 
+    OUT UCHAR *SsidLen, 
+    OUT UCHAR *BssType, 
+    OUT USHORT *BeaconPeriod, 
+    OUT UCHAR *Channel, 
+    OUT LARGE_INTEGER *Timestamp, 
+    OUT USHORT *CapabilityInfo, 
+    OUT UCHAR Rate[], 
+    OUT UCHAR *RateLen,
+    OUT BOOLEAN *ExtendedRateIeExist,
+    OUT UCHAR *Erp);
+
+/* ap_cfg.h */
+INT	Set_OwnIPAddr_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT	Set_EAPIfName_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT	Set_PreAuthIfName_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+#ifdef DOT11_N_SUPPORT
+#ifdef GREENAP_SUPPORT
+VOID EnableAPMIMOPS(
+    IN PRTMP_ADAPTER pAd);
+
+VOID DisableAPMIMOPS(
+    IN PRTMP_ADAPTER pAd);
+#endif // GREENAP_SUPPORT //
+#endif // DOT11_N_SUPPORT //
+#endif  // __AP_H__
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/cfg80211.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/cfg80211.h
new file mode 100644
index 000000000..c6293c313
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/cfg80211.h
@@ -0,0 +1,265 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************/
+
+/****************************************************************************
+
+	Abstract:
+
+	All MAC80211/CFG80211 Related Structure & Definition.
+
+***************************************************************************/
+
+#ifdef RT_CFG80211_SUPPORT
+
+#include <linux/ieee80211.h>
+
+
+/*
+========================================================================
+Routine Description:
+	Register MAC80211 Module.
+
+Arguments:
+	pAdCB			- WLAN control block pointer
+	pDev			- Generic device interface
+	pNetDev			- Network device
+
+Return Value:
+	NONE
+
+Note:
+	pDev != pNetDev
+	#define SET_NETDEV_DEV(net, pdev)	((net)->dev.parent = (pdev))
+
+	Can not use pNetDev to replace pDev; Or kernel panic.
+========================================================================
+*/
+VOID CFG80211_Register(
+	IN VOID 				*pAdCB,
+	IN struct device		*pDev,
+	IN struct net_device	*pNetDev);
+
+/*
+========================================================================
+Routine Description:
+	UnRegister MAC80211 Module.
+
+Arguments:
+	pAd				- WLAN control block pointer
+	pNetDev			- Network device
+
+Return Value:
+	NONE
+
+Note:
+========================================================================
+*/
+VOID CFG80211_UnRegister(
+	IN PRTMP_ADAPTER 		pAd,
+	IN struct net_device	*pNetDev);
+
+/*
+========================================================================
+Routine Description:
+	Parse and handle country region in beacon from associated AP.
+
+Arguments:
+	pAdCB			- WLAN control block pointer
+	pVIE			- Beacon elements
+	LenVIE			- Total length of Beacon elements
+
+Return Value:
+	NONE
+
+Note:
+========================================================================
+*/
+VOID CFG80211_BeaconCountryRegionParse(
+	IN VOID						*pAdCB,
+	IN NDIS_802_11_VARIABLE_IEs	*pVIE,
+	IN UINT16					LenVIE);
+
+/*
+========================================================================
+Routine Description:
+	Hint to the wireless core a regulatory domain from driver.
+
+Arguments:
+	pAdCB			- WLAN control block pointer
+	pCountryIe		- pointer to the country IE
+	CountryIeLen	- length of the country IE
+
+Return Value:
+	NONE
+
+Note:
+	Must call the function in kernel thread.
+========================================================================
+*/
+VOID CFG80211_RegHint(
+	IN VOID						*pAdCB,
+	IN UCHAR					*pCountryIe,
+	IN ULONG					CountryIeLen);
+
+/*
+========================================================================
+Routine Description:
+	Hint to the wireless core a regulatory domain from country element.
+
+Arguments:
+	pAdCB			- WLAN control block pointer
+	pCountryIe		- pointer to the country IE
+	CountryIeLen	- length of the country IE
+
+Return Value:
+	NONE
+
+Note:
+========================================================================
+*/
+VOID CFG80211_RegHint11D(
+	IN VOID							*pAdCB,
+	IN UCHAR						*pCountryIe,
+	IN ULONG						CountryIeLen);
+
+/*
+========================================================================
+Routine Description:
+	Apply new regulatory rule.
+
+Arguments:
+	pAdCB			- WLAN control block pointer
+	pWiphy			- Wireless hardware description
+	pAlpha2			- Regulation domain (2B)
+
+Return Value:
+	NONE
+
+Note:
+	Can only be called when interface is up.
+========================================================================
+*/
+VOID CFG80211_RegRuleApply(
+	IN VOID							*pAdCB,
+	IN struct wiphy					*pWiphy,
+	IN UCHAR						*pAlpha2);
+
+/*
+========================================================================
+Routine Description:
+	Inform us that a scan is got.
+
+Arguments:
+	pAdCB			- WLAN control block pointer
+
+Return Value:
+	NONE
+
+Note:
+	Call RT_CFG80211_SCANNING_INFORM, not CFG80211_Scaning
+========================================================================
+*/
+VOID CFG80211_Scaning(
+	IN VOID							*pAdCB,
+	IN UINT32						BssIdx,
+	IN UINT32						ChanId,
+	IN UCHAR						*pFrame,
+	IN UINT32						FrameLen,
+	IN INT32						RSSI,
+	IN INT32						MemFlag);
+
+/*
+========================================================================
+Routine Description:
+	Inform us that scan ends.
+
+Arguments:
+	pAdCB			- WLAN control block pointer
+	FlgIsAborted	- 1: scan is aborted
+
+Return Value:
+	NONE
+
+Note:
+========================================================================
+*/
+VOID CFG80211_ScanEnd(
+	IN VOID							*pAdCB,
+	IN BOOLEAN						FlgIsAborted);
+
+/*
+========================================================================
+Routine Description:
+	Re-Initialize wireless channel/PHY in 2.4GHZ and 5GHZ.
+
+Arguments:
+	pAdCB			- WLAN control block pointer
+
+Return Value:
+	TRUE			- re-init successfully
+	FALSE			- re-init fail
+
+Note:
+	CFG80211_SupBandInit() is called in xx_probe().
+	But we do not have complete chip information in xx_probe() so we
+	need to re-init bands in xx_open().
+========================================================================
+*/
+BOOLEAN CFG80211_SupBandReInit(
+	IN VOID							*pAdCB);
+
+/*
+========================================================================
+Routine Description:
+	Inform CFG80211 about association status.
+
+Arguments:
+	pAd				- WLAN control block pointer
+	pBSSID			- the BSSID of the AP
+	pReqIe			- the element list in the association request frame
+	ReqIeLen		- the request element length
+	pRspIe			- the element list in the association response frame
+	RspIeLen		- the response element length
+	FlgIsSuccess	- 1: success; otherwise: fail
+
+Return Value:
+	None
+
+Note:
+========================================================================
+*/
+VOID CFG80211_ConnectResultInform(
+	IN VOID							*pAdCB,
+	IN UCHAR						*pBSSID,
+	IN UCHAR						*pReqIe,
+	IN UINT32						ReqIeLen,
+	IN UCHAR						*pRspIe,
+	IN UINT32						RspIeLen,
+	IN UCHAR						FlgIsSuccess);
+
+#endif // RT_CFG80211_SUPPORT //
+
+/* End of cfg80211.h */
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/cfg80211extr.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/cfg80211extr.h
new file mode 100644
index 000000000..2a0697dd0
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/cfg80211extr.h
@@ -0,0 +1,156 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************/
+
+/****************************************************************************
+
+	Abstract:
+
+	All MAC80211/CFG80211 Function Prototype.
+
+***************************************************************************/
+
+#ifdef RT_CFG80211_SUPPORT
+
+
+#define RT_CFG80211_API_INIT(__pAd)												\
+	__pAd->CFG80211_BeaconCountryRegionParse = CFG80211_BeaconCountryRegionParse;\
+	__pAd->CFG80211_RegHint = CFG80211_RegHint;									\
+	__pAd->CFG80211_RegHint11D = CFG80211_RegHint11D;							\
+	__pAd->CFG80211_RegRuleApply = CFG80211_RegRuleApply;						\
+	__pAd->CFG80211_Scaning = CFG80211_Scaning;									\
+	__pAd->CFG80211_ScanEnd = CFG80211_ScanEnd;									\
+	__pAd->CFG80211_SupBandReInit = CFG80211_SupBandReInit;						\
+	__pAd->CFG80211_ConnectResultInform = CFG80211_ConnectResultInform
+
+#define RT_CFG80211_REGISTER(__pAd, __pDev, __pNetDev)							\
+do {																			\
+	if (__pAd->CFG80211_Register != NULL)										\
+		__pAd->CFG80211_Register((VOID *)__pAd, __pDev, __pNetDev);				\
+} while(0);
+
+#define RT_CFG80211_BEACON_CR_PARSE(__pAd, __pVIE, __LenVIE)					\
+do {																			\
+	if ((__pAd->pCfg80211_CB != NULL) &&										\
+		(__pAd->CFG80211_BeaconCountryRegionParse != NULL))						\
+		__pAd->CFG80211_BeaconCountryRegionParse((VOID *)__pAd, __pVIE, __LenVIE);\
+} while(0);
+
+#define RT_CFG80211_CRDA_REG_HINT(__pAd, __pCountryIe, __CountryIeLen)			\
+do {																			\
+	if ((__pAd->pCfg80211_CB != NULL) &&										\
+		(__pAd->CFG80211_RegHint != NULL))										\
+		__pAd->CFG80211_RegHint((VOID *)__pAd, __pCountryIe, __CountryIeLen);	\
+} while(0);
+
+#define RT_CFG80211_CRDA_REG_HINT11D(__pAd, __pCountryIe, __CountryIeLen)		\
+do {																			\
+	if ((__pAd->pCfg80211_CB != NULL) &&										\
+		(__pAd->CFG80211_RegHint11D != NULL))									\
+		__pAd->CFG80211_RegHint11D((VOID *)__pAd, __pCountryIe, __CountryIeLen);\
+} while(0);
+
+#define RT_CFG80211_CRDA_REG_RULE_APPLY(__pAd)									\
+do {																			\
+	if ((__pAd->pCfg80211_CB != NULL) &&										\
+		(__pAd->CFG80211_RegHint != NULL))										\
+		__pAd->CFG80211_RegRuleApply((VOID *)__pAd, NULL, __pAd->Cfg80211_Alpha2);\
+} while(0);
+
+#define RT_CFG80211_SCANNING_INFORM(__pAd, __BssIdx, __ChanId, __pFrame,		\
+			__FrameLen, __RSSI, __MemFlag)										\
+do {																			\
+	if ((__pAd->pCfg80211_CB != NULL) &&										\
+		(__pAd->CFG80211_Scaning != NULL))										\
+		__pAd->CFG80211_Scaning((VOID *)__pAd, __BssIdx, __ChanId, __pFrame,	\
+								__FrameLen, __RSSI, __MemFlag);					\
+} while(0);
+
+#define RT_CFG80211_SCAN_END(__pAd, __FlgIsAborted)								\
+do {																			\
+	if ((__pAd->pCfg80211_CB != NULL) &&										\
+		(__pAd->CFG80211_ScanEnd != NULL))										\
+		__pAd->CFG80211_ScanEnd((VOID *)__pAd, __FlgIsAborted);					\
+} while(0);
+
+#define RT_CFG80211_REINIT(__pAd)												\
+do {																			\
+		if ((__pAd->pCfg80211_CB != NULL) &&									\
+			(__pAd->CFG80211_SupBandReInit != NULL))							\
+			__pAd->CFG80211_SupBandReInit((VOID *)__pAd);						\
+} while(0);
+
+#define RT_CFG80211_CONN_RESULT_INFORM(__pAd, __pBSSID, __pReqIe, __ReqIeLen,	\
+			__pRspIe, __RspIeLen, __FlgIsSuccess)								\
+do {																			\
+		if ((__pAd->pCfg80211_CB != NULL) &&									\
+			(__pAd->CFG80211_ConnectResultInform != NULL))						\
+			__pAd->CFG80211_ConnectResultInform((VOID *)__pAd, __pBSSID,		\
+				__pReqIe, __ReqIeLen, __pRspIe, __RspIeLen, __FlgIsSuccess);	\
+} while(0);
+
+
+#define CFG80211_FUNC_OPS								\
+	VOID (*CFG80211_BeaconCountryRegionParse)(			\
+		IN VOID							*pAd,			\
+		IN NDIS_802_11_VARIABLE_IEs		*pVIE,			\
+		IN UINT16						LenVIE);		\
+	VOID (*CFG80211_RegHint)(							\
+		IN VOID							*pAd,			\
+		IN UCHAR						*pCountryIe,	\
+		IN ULONG						CountryIeLen);	\
+	VOID (*CFG80211_RegHint11D)(						\
+		IN VOID							*pAd,			\
+		IN UCHAR						*pCountryIe,	\
+		IN ULONG						CountryIeLen);	\
+	VOID (*CFG80211_RegRuleApply)(						\
+		IN VOID							*pAd,			\
+		IN struct wiphy					*pWiphy,		\
+		IN UCHAR						*pAlpha2);		\
+	VOID (*CFG80211_Scaning)(							\
+		IN VOID							*pAd,			\
+		IN UINT32						BssIdx,			\
+		IN UINT32						ChanId,			\
+		IN UCHAR						*pFrame,		\
+		IN UINT32						FrameLen,		\
+		IN INT32						RSSI,			\
+		IN INT32						MemFlag);		\
+	VOID (*CFG80211_ScanEnd)(							\
+		IN VOID							*pAd,			\
+		IN BOOLEAN						FlgIsAborted);	\
+	BOOLEAN (*CFG80211_SupBandReInit)(					\
+		IN VOID							*pAd);			\
+	VOID (*CFG80211_ConnectResultInform)(				\
+		IN VOID							*pAd,			\
+		IN UCHAR						*pBSSID,		\
+		IN UCHAR						*pReqIe,		\
+		IN UINT32						ReqIeLen,		\
+		IN UCHAR						*pRspIe,		\
+		IN UINT32						RspIeLen,		\
+		IN UCHAR						FlgIsSuccess)
+
+#endif // RT_CFG80211_SUPPORT //
+
+/* End of cfg80211extr.h */
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/chip/mac_pci.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/chip/mac_pci.h
new file mode 100644
index 000000000..e020d139b
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/chip/mac_pci.h
@@ -0,0 +1,465 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+    Module Name:
+	mac_pci.h
+ 
+    Abstract:
+ 
+    Revision History:
+    Who          When          What
+    ---------    ----------    ----------------------------------------------
+ */
+
+#ifndef __MAC_PCI_H__
+#define __MAC_PCI_H__
+
+#include "rtmp_type.h"
+#include "chip/rtmp_mac.h"
+#include "chip/rtmp_phy.h"
+#include "rtmp_iface.h"
+#include "rtmp_dot11.h"
+
+
+//
+// Device ID & Vendor ID related definitions, 
+// NOTE: you should not add the new VendorID/DeviceID here unless you not sure it belongs to what chip.
+//
+#define NIC_PCI_VENDOR_ID		0x1814
+#define PCIBUS_INTEL_VENDOR	0x8086
+
+#if !defined(PCI_CAP_ID_EXP)
+#define PCI_CAP_ID_EXP			    0x10
+#endif
+#if !defined(PCI_EXP_LNKCTL)
+#define PCI_EXP_LNKCTL			    0x10
+#endif
+#if !defined(PCI_CLASS_BRIDGE_PCI)
+#define PCI_CLASS_BRIDGE_PCI		0x0604
+#endif
+
+
+
+
+
+#define TXINFO_SIZE						0
+#define RTMP_PKT_TAIL_PADDING 			0
+#define fRTMP_ADAPTER_NEED_STOP_TX	0
+
+#define AUX_CTRL           0x10c
+
+//
+// TX descriptor format, Tx	ring, Mgmt Ring
+//
+#ifdef RT_BIG_ENDIAN
+typedef	struct	GNU_PACKED _TXD_STRUC {
+	// Word 0
+	UINT32		SDPtr0;
+	// Word 1
+	UINT32		DMADONE:1;
+	UINT32		LastSec0:1;
+	UINT32		SDLen0:14;
+	UINT32		Burst:1;
+	UINT32		LastSec1:1;
+	UINT32		SDLen1:14;
+	// Word 2
+	UINT32		SDPtr1;
+	// Word 3
+	UINT32		ICO:1;	
+	UINT32		UCO:1;	
+	UINT32		TCO:1;	
+	UINT32		rsv:2;
+	UINT32		QSEL:2;	// select on-chip FIFO ID for 2nd-stage output scheduler.0:MGMT, 1:HCCA 2:EDCA
+	UINT32		WIV:1;	// Wireless Info Valid. 1 if Driver already fill WI,  o if DMA needs to copy WI to correctposition
+	UINT32		rsv2:24;
+}	TXD_STRUC, *PTXD_STRUC;
+#else
+typedef	struct	GNU_PACKED _TXD_STRUC {
+	// Word	0
+	UINT32		SDPtr0;
+	// Word	1
+	UINT32		SDLen1:14;
+	UINT32		LastSec1:1;
+	UINT32		Burst:1;
+	UINT32		SDLen0:14;
+	UINT32		LastSec0:1;
+	UINT32		DMADONE:1;
+	//Word2
+	UINT32		SDPtr1;
+	//Word3
+	UINT32		rsv2:24;
+	UINT32		WIV:1;	// Wireless Info Valid. 1 if Driver already fill WI,  o if DMA needs to copy WI to correctposition
+	UINT32		QSEL:2;	// select on-chip FIFO ID for 2nd-stage output scheduler.0:MGMT, 1:HCCA 2:EDCA
+	UINT32		rsv:2;
+	UINT32		TCO:1;	//  
+	UINT32		UCO:1;	//  
+	UINT32		ICO:1;	//
+}	TXD_STRUC, *PTXD_STRUC;
+#endif
+
+
+//
+// Rx descriptor format, Rx Ring
+//
+#ifdef RT_BIG_ENDIAN
+typedef	struct	GNU_PACKED _RXD_STRUC{
+	// Word 0
+	UINT32		SDP0;
+	// Word 1
+	UINT32		DDONE:1;
+	UINT32		LS0:1;
+	UINT32		SDL0:14;
+	UINT32		Rsv:2;
+	UINT32		SDL1:14;
+	// Word 2
+	UINT32		SDP1;
+	// Word 3
+	UINT32		Rsv1:13;
+	UINT32		PlcpRssil:1;// To be moved
+	UINT32		PlcpSignal:1;		// To be moved
+	UINT32		Decrypted:1;	// this frame is being decrypted.
+	UINT32		AMPDU:1;
+	UINT32		L2PAD:1;
+	UINT32		RSSI:1;
+	UINT32		HTC:1;
+	UINT32		AMSDU:1;		// rx with 802.3 header, not 802.11 header. obsolete.
+	UINT32		CipherErr:2;        // 0: decryption okay, 1:ICV error, 2:MIC error, 3:KEY not valid	
+	UINT32		Crc:1;              // 1: CRC error
+	UINT32		MyBss:1;  	// 1: this frame belongs to the same BSSID
+	UINT32		Bcast:1;            // 1: this is a broadcast frame	
+	UINT32		Mcast:1;            // 1: this is a multicast frame
+	UINT32		U2M:1;              // 1: this RX frame is unicast to me
+	UINT32		FRAG:1;
+	UINT32		NULLDATA:1;
+	UINT32		DATA:1;
+	UINT32		BA:1;
+	
+}	RXD_STRUC, *PRXD_STRUC, RT28XX_RXD_STRUC, *PRT28XX_RXD_STRUC;
+#else
+typedef	struct	GNU_PACKED _RXD_STRUC{
+	// Word	0
+	UINT32		SDP0;
+	// Word	1
+	UINT32		SDL1:14;
+	UINT32		Rsv:2;
+	UINT32		SDL0:14;
+	UINT32		LS0:1;
+	UINT32		DDONE:1;
+	// Word	2
+	UINT32		SDP1;
+	// Word	3
+	UINT32		BA:1;
+	UINT32		DATA:1;
+	UINT32		NULLDATA:1;
+	UINT32		FRAG:1;
+	UINT32		U2M:1;              // 1: this RX frame is unicast to me
+	UINT32		Mcast:1;            // 1: this is a multicast frame
+	UINT32		Bcast:1;            // 1: this is a broadcast frame	
+	UINT32		MyBss:1;  	// 1: this frame belongs to the same BSSID	
+	UINT32		Crc:1;              // 1: CRC error
+	UINT32		CipherErr:2;        // 0: decryption okay, 1:ICV error, 2:MIC error, 3:KEY not valid
+	UINT32		AMSDU:1;		// rx with 802.3 header, not 802.11 header.
+	UINT32		HTC:1;
+	UINT32		RSSI:1;
+	UINT32		L2PAD:1;
+	UINT32		AMPDU:1;	
+	UINT32		Decrypted:1;	// this frame is being decrypted.
+	UINT32		PlcpSignal:1;		// To be moved
+	UINT32		PlcpRssil:1;// To be moved
+	UINT32		Rsv1:13;
+}	RXD_STRUC, *PRXD_STRUC, RT28XX_RXD_STRUC, *PRT28XX_RXD_STRUC;
+#endif
+
+#ifdef BIG_ENDIAN
+typedef union _TX_ATTENUATION_CTRL_STRUC
+{
+	struct
+	{
+		ULONG	Reserve1:20;
+		ULONG	PCIE_PHY_TX_ATTEN_EN:1;
+		ULONG	PCIE_PHY_TX_ATTEN_VALUE:3;
+		ULONG	Reserve2:7;
+		ULONG	RF_ISOLATION_ENABLE:1;
+	} field;
+
+	ULONG	word;
+} TX_ATTENUATION_CTRL_STRUC, *PTX_ATTENUATION_CTRL_STRUC;
+#else
+typedef union _TX_ATTENUATION_CTRL_STRUC {
+	struct
+	{
+		ULONG	RF_ISOLATION_ENABLE:1;
+		ULONG	Reserve2:7;
+		ULONG	PCIE_PHY_TX_ATTEN_VALUE:3;
+		ULONG	PCIE_PHY_TX_ATTEN_EN:1;
+		ULONG	Reserve1:20;		
+	} field;
+	
+	ULONG	word;
+} TX_ATTENUATION_CTRL_STRUC, *PTX_ATTENUATION_CTRL_STRUC;
+#endif
+/* ----------------- EEPROM Related MACRO ----------------- */
+
+// 8051 firmware image for RT2860 - base address = 0x4000
+#define FIRMWARE_IMAGE_BASE     0x2000
+#define MAX_FIRMWARE_IMAGE_SIZE 0x2000    // 8kbyte
+
+
+/* ----------------- Frimware Related MACRO ----------------- */
+#define RTMP_WRITE_FIRMWARE(_pAd, _pFwImage, _FwLen)			\
+	do{								\
+		ULONG	_i, _firm;					\
+		RTMP_IO_WRITE32(_pAd, PBF_SYS_CTRL, 0x10000);		\
+									\
+		for(_i=0; _i<_FwLen; _i+=4)				\
+		{							\
+			_firm = _pFwImage[_i] +				\
+			   (_pFwImage[_i+3] << 24) +			\
+			   (_pFwImage[_i+2] << 16) +			\
+			   (_pFwImage[_i+1] << 8);			\
+			RTMP_IO_WRITE32(_pAd, FIRMWARE_IMAGE_BASE + _i, _firm);	\
+		}							\
+		RTMP_IO_WRITE32(_pAd, PBF_SYS_CTRL, 0x00000);		\
+		RTMP_IO_WRITE32(_pAd, PBF_SYS_CTRL, 0x00001);		\
+									\
+		/* initialize BBP R/W access agent */			\
+		RTMP_IO_WRITE32(_pAd, H2M_BBP_AGENT, 0);		\
+		RTMP_IO_WRITE32(_pAd, H2M_MAILBOX_CSR, 0);		\
+	}while(0)
+
+
+/* ----------------- TX Related MACRO ----------------- */
+#define RTMP_START_DEQUEUE(pAd, QueIdx, irqFlags)		do{}while(0)
+#define RTMP_STOP_DEQUEUE(pAd, QueIdx, irqFlags)		do{}while(0)
+
+
+#define RTMP_HAS_ENOUGH_FREE_DESC(pAd, pTxBlk, freeNum, pPacket) \
+		((freeNum) >= (ULONG)(pTxBlk->TotalFragNum + RTMP_GET_PACKET_FRAGMENTS(pPacket) + 3)) /* rough estimate we will use 3 more descriptor. */
+#define RTMP_RELEASE_DESC_RESOURCE(pAd, QueIdx)	\
+		do{}while(0)
+
+#define NEED_QUEUE_BACK_FOR_AGG(pAd, QueIdx, freeNum, _TxFrameType) \
+		(((freeNum != (TX_RING_SIZE-1)) && (pAd->TxSwQueue[QueIdx].Number == 0)) || (freeNum<3))
+		//(((freeNum) != (TX_RING_SIZE-1)) && (pAd->TxSwQueue[QueIdx].Number == 1 /*0*/))
+		
+
+#define HAL_KickOutMgmtTx(_pAd, _QueIdx, _pPacket, _pSrcBufVA, _SrcBufLen)	\
+			RtmpPCIMgmtKickOut(_pAd, _QueIdx, _pPacket, _pSrcBufVA, _SrcBufLen)
+
+#define HAL_WriteSubTxResource(pAd, pTxBlk, bIsLast, pFreeNumber)	\
+		/* RtmpPCI_WriteSubTxResource(pAd, pTxBlk, bIsLast, pFreeNumber)*/
+
+#define HAL_WriteTxResource(pAd, pTxBlk,bIsLast, pFreeNumber)	\
+			RtmpPCI_WriteSingleTxResource(pAd, pTxBlk, bIsLast, pFreeNumber)
+
+#define HAL_WriteFragTxResource(pAd, pTxBlk, fragNum, pFreeNumber) \
+			RtmpPCI_WriteFragTxResource(pAd, pTxBlk, fragNum, pFreeNumber)
+			
+#define HAL_WriteMultiTxResource(pAd, pTxBlk,frameNum, pFreeNumber)	\
+			RtmpPCI_WriteMultiTxResource(pAd, pTxBlk, frameNum, pFreeNumber)
+	
+#define HAL_FinalWriteTxResource(_pAd, _pTxBlk, _TotalMPDUSize, _FirstTxIdx)	\
+			RtmpPCI_FinalWriteTxResource(_pAd, _pTxBlk, _TotalMPDUSize, _FirstTxIdx)
+
+#define HAL_LastTxIdx(_pAd, _QueIdx,_LastTxIdx) \
+			/*RtmpPCIDataLastTxIdx(_pAd, _QueIdx,_LastTxIdx)*/
+	
+#define HAL_KickOutTx(_pAd, _pTxBlk, _QueIdx)	\
+			RTMP_IO_WRITE32((_pAd), TX_CTX_IDX0+((_QueIdx)*0x10), (_pAd)->TxRing[(_QueIdx)].TxCpuIdx)
+/*			RtmpPCIDataKickOut(_pAd, _pTxBlk, _QueIdx)*/
+
+#define HAL_KickOutNullFrameTx(_pAd, _QueIdx, _pNullFrame, _frameLen)	\
+			MiniportMMRequest(_pAd, _QueIdx, _pNullFrame, _frameLen)
+			
+#define GET_TXRING_FREENO(_pAd, _QueIdx) \
+	(_pAd->TxRing[_QueIdx].TxSwFreeIdx > _pAd->TxRing[_QueIdx].TxCpuIdx)	? \
+			(_pAd->TxRing[_QueIdx].TxSwFreeIdx - _pAd->TxRing[_QueIdx].TxCpuIdx - 1) \
+			 :	\
+			(_pAd->TxRing[_QueIdx].TxSwFreeIdx + TX_RING_SIZE - _pAd->TxRing[_QueIdx].TxCpuIdx - 1);
+
+
+#define GET_MGMTRING_FREENO(_pAd) \
+	(_pAd->MgmtRing.TxSwFreeIdx > _pAd->MgmtRing.TxCpuIdx)	? \
+			(_pAd->MgmtRing.TxSwFreeIdx - _pAd->MgmtRing.TxCpuIdx - 1) \
+			 :	\
+			(_pAd->MgmtRing.TxSwFreeIdx + MGMT_RING_SIZE - _pAd->MgmtRing.TxCpuIdx - 1);
+
+
+/* ----------------- RX Related MACRO ----------------- */
+
+
+/* ----------------- ASIC Related MACRO ----------------- */
+// reset MAC of a station entry to 0x000000000000
+#define RTMP_STA_ENTRY_MAC_RESET(pAd, Wcid)	\
+	AsicDelWcidTab(pAd, Wcid);
+
+// add this entry into ASIC RX WCID search table
+#define RTMP_STA_ENTRY_ADD(pAd, pEntry)		\
+	AsicUpdateRxWCIDTable(pAd, pEntry->Aid, pEntry->Addr);
+
+// add by johnli, fix "in_interrupt" error when call "MacTableDeleteEntry" in Rx tasklet
+// Set MAC register value according operation mode
+#define RTMP_UPDATE_PROTECT(pAd)	\
+	AsicUpdateProtect(pAd, 0, (ALLN_SETPROTECT), TRUE, 0);
+// end johnli
+
+// Insert the BA bitmap to ASIC for the Wcid entry
+#define RTMP_ADD_BA_SESSION_TO_ASIC(_pAd, _Aid, _TID)	\
+		do{					\
+			UINT32	_Value = 0, _Offset;					\
+			_Offset = MAC_WCID_BASE + (_Aid) * HW_WCID_ENTRY_SIZE + 4;	\
+			RTMP_IO_READ32((_pAd), _Offset, &_Value);\
+			_Value |= (0x10000<<(_TID));	\
+			RTMP_IO_WRITE32((_pAd), _Offset, _Value);\
+		}while(0)
+
+
+// Remove the BA bitmap from ASIC for the Wcid entry
+//		bitmap field starts at 0x10000 in ASIC WCID table
+#define RTMP_DEL_BA_SESSION_FROM_ASIC(_pAd, _Wcid, _TID)				\
+		do{								\
+			UINT32	_Value = 0, _Offset;				\
+			_Offset = MAC_WCID_BASE + (_Wcid) * HW_WCID_ENTRY_SIZE + 4;	\
+			RTMP_IO_READ32((_pAd), _Offset, &_Value);			\
+			_Value &= (~(0x10000 << (_TID)));				\
+			RTMP_IO_WRITE32((_pAd), _Offset, _Value);			\
+		}while(0)
+
+
+/* ----------------- Interface Related MACRO ----------------- */
+
+//
+// Enable & Disable NIC interrupt via writing interrupt mask register
+// Since it use ADAPTER structure, it have to be put after structure definition.
+//
+#define RTMP_ASIC_INTERRUPT_DISABLE(_pAd)		\
+	do{			\
+		RTMP_IO_WRITE32((_pAd), INT_MASK_CSR, 0x0);     /* 0: disable */	\
+		RTMP_CLEAR_FLAG((_pAd), fRTMP_ADAPTER_INTERRUPT_ACTIVE);		\
+	}while(0)
+
+#define RTMP_ASIC_INTERRUPT_ENABLE(_pAd)\
+	do{				\
+		RTMP_IO_WRITE32((_pAd), INT_MASK_CSR, (_pAd)->int_enable_reg /*DELAYINTMASK*/);     /* 1:enable */	\
+		RTMP_SET_FLAG((_pAd), fRTMP_ADAPTER_INTERRUPT_ACTIVE);	\
+	}while(0)
+
+
+#define RTMP_IRQ_INIT(pAd)	\
+	{	pAd->int_enable_reg = ((DELAYINTMASK) |		\
+					(RxINT|TxDataInt|TxMgmtInt)) & ~(0x03);	\
+		pAd->int_disable_mask = 0;						\
+		pAd->int_pending = 0; }
+
+#define RTMP_IRQ_ENABLE(pAd)					\
+	{	/* clear garbage ints */			\
+		RTMP_IO_WRITE32(pAd, INT_SOURCE_CSR, 0xffffffff);\
+		RTMP_ASIC_INTERRUPT_ENABLE(pAd); }
+
+
+/* ----------------- MLME Related MACRO ----------------- */
+#define RTMP_MLME_HANDLER(pAd)			MlmeHandler(pAd)
+
+#define RTMP_MLME_PRE_SANITY_CHECK(pAd)
+
+#define RTMP_MLME_STA_QUICK_RSP_WAKE_UP(pAd)	\
+		RTMPSetTimer(&pAd->StaCfg.StaQuickResponeForRateUpTimer, 100);
+
+#define RTMP_MLME_RESET_STATE_MACHINE(pAd)	\
+		MlmeRestartStateMachine(pAd)
+
+#define RTMP_HANDLE_COUNTER_MEASURE(_pAd, _pEntry)\
+		HandleCounterMeasure(_pAd, _pEntry)
+		
+/* ----------------- Power Save Related MACRO ----------------- */
+#define RTMP_PS_POLL_ENQUEUE(pAd)				EnqueuePsPoll(pAd)
+
+
+// For RTMPPCIePowerLinkCtrlRestore () function
+#define RESTORE_HALT		1
+#define RESTORE_WAKEUP		2
+#define RESTORE_CLOSE           3
+
+#define PowerSafeCID		1
+#define PowerRadioOffCID	2
+#define PowerWakeCID		3
+#define CID0MASK		0x000000ff
+#define CID1MASK		0x0000ff00
+#define CID2MASK		0x00ff0000
+#define CID3MASK		0xff000000
+
+
+#ifdef CONFIG_STA_SUPPORT
+#define RTMP_STA_FORCE_WAKEUP(pAd, bFromTx) \
+    RT28xxPciStaAsicForceWakeup(pAd, bFromTx);
+
+#define RTMP_STA_SLEEP_THEN_AUTO_WAKEUP(pAd, TbttNumToNextWakeUp) \
+    RT28xxPciStaAsicSleepThenAutoWakeup(pAd, TbttNumToNextWakeUp);
+
+#define RTMP_SET_PSM_BIT(_pAd, _val) \
+	MlmeSetPsmBit(_pAd, _val);
+#endif // CONFIG_STA_SUPPORT //
+
+#define RTMP_MLME_RADIO_ON(pAd) \
+    RT28xxPciMlmeRadioOn(pAd);
+
+#define RTMP_MLME_RADIO_OFF(pAd) \
+    RT28xxPciMlmeRadioOFF(pAd);
+
+/* ----------------- Security Related MACRO ----------------- */
+
+/* Set Asic WCID Attribute table */
+#define RTMP_SET_WCID_SEC_INFO(_pAd, _BssIdx, _KeyIdx, _CipherAlg, _Wcid, _KeyTabFlag)	\
+	RTMPSetWcidSecurityInfo(_pAd, _BssIdx, _KeyIdx, _CipherAlg, _Wcid, _KeyTabFlag)
+
+/* Set Asic WCID IV/EIV table */
+#define RTMP_ASIC_WCID_IVEIV_TABLE(_pAd, _Wcid, _uIV, _uEIV)	\
+	AsicUpdateWCIDIVEIV(_pAd, _Wcid, _uIV, _uEIV)
+
+/* Set Asic WCID Attribute table (offset:0x6800) */
+#define RTMP_ASIC_WCID_ATTR_TABLE(_pAd, _BssIdx, _KeyIdx, _CipherAlg, _Wcid, _KeyTabFlag)\
+	AsicUpdateWcidAttributeEntry(_pAd, _BssIdx, _KeyIdx, _CipherAlg, _Wcid, _KeyTabFlag)
+
+/* Set Asic Pairwise key table */
+#define RTMP_ASIC_PAIRWISE_KEY_TABLE(_pAd, _WCID, _pCipherKey)	\
+	AsicAddPairwiseKeyEntry(_pAd, _WCID, _pCipherKey)
+
+/* Set Asic Shared key table */
+#define RTMP_ASIC_SHARED_KEY_TABLE(_pAd, _BssIndex, _KeyIdx, _pCipherKey) \
+	AsicAddSharedKeyEntry(_pAd, _BssIndex, _KeyIdx, _pCipherKey)
+
+#ifdef CONFIG_STA_SUPPORT
+/* Set Port Secured */
+#define RTMP_SET_PORT_SECURED(_pAd) 										\
+	STA_PORT_SECURED(_pAd);
+#endif // CONFIG_STA_SUPPORT //
+
+/* Remove Pairwise Key table */
+#define RTMP_REMOVE_PAIRWISE_KEY_ENTRY(_pAd, _Wcid)\
+	AsicRemovePairwiseKeyEntry(_pAd, _Wcid)
+
+#endif //__MAC_PCI_H__ //
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/chip/rt2860.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/chip/rt2860.h
new file mode 100644
index 000000000..345096bb1
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/chip/rt2860.h
@@ -0,0 +1,67 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+    Module Name:
+	rt2860.h
+ 
+    Abstract:
+ 
+    Revision History:
+    Who          When          What
+    ---------    ----------    ----------------------------------------------
+ */
+
+#ifndef __RT2860_H__
+#define __RT2860_H__
+
+#ifdef RT2860
+#include "chip/mac_pci.h"
+
+#ifndef RTMP_PCI_SUPPORT
+#error "For RT2860, you should define the compile flag -DRTMP_PCI_SUPPORT"
+#endif
+
+#ifndef RTMP_MAC_PCI
+#error "For RT2880, you should define the compile flag -DRTMP_MAC_PCI"
+#endif
+
+//
+// Device ID & Vendor ID, these values should match EEPROM value
+//
+#define NIC2860_PCI_DEVICE_ID	0x0601
+#define NIC2860_PCIe_DEVICE_ID	0x0681
+#define NIC2760_PCI_DEVICE_ID	0x0701		// 1T/2R Cardbus ???
+#define NIC2790_PCIe_DEVICE_ID  0x0781		// 1T/2R miniCard
+
+
+#define VEN_AWT_PCIe_DEVICE_ID	0x1059
+#define VEN_AWT_PCI_VENDOR_ID		0x1A3B
+
+#define EDIMAX_PCI_VENDOR_ID		0x1432
+
+#endif // RT2860 //
+
+#endif //__RT2860_H__ //
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/chip/rt30xx.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/chip/rt30xx.h
new file mode 100644
index 000000000..9fb10104a
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/chip/rt30xx.h
@@ -0,0 +1,49 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+    Module Name:
+	rt30xx.h
+ 
+    Abstract:
+ 
+    Revision History:
+    Who          When          What
+    ---------    ----------    ----------------------------------------------
+ */
+
+#ifndef __RT30XX_H__
+#define __RT30XX_H__
+
+#ifdef RT30xx
+#include "rtmp_type.h"
+
+extern REG_PAIR RT30xx_RFRegTable[];
+extern UCHAR NUM_RF_REG_PARMS;
+
+#endif // RT30xx //
+
+#endif //__RT30XX_H__ //
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/chip/rt35xx.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/chip/rt35xx.h
new file mode 100644
index 000000000..ca359c7e2
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/chip/rt35xx.h
@@ -0,0 +1,65 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+    Module Name:
+	rt35xx.h
+ 
+    Abstract:
+ 
+    Revision History:
+    Who          When          What
+    ---------    ----------    ----------------------------------------------
+ */
+
+#ifndef __RT35XX_H__
+#define __RT35XX_H__
+
+#ifdef RT35xx
+
+
+#ifdef RTMP_PCI_SUPPORT
+#include "chip/mac_pci.h"
+#endif
+
+#ifndef RTMP_RF_RW_SUPPORT
+#error "For RT3062/3562/3572/3592, you should define the compile flag -DRTMP_RF_RW_SUPPORT"
+#endif
+
+#include "chip/rt30xx.h"
+
+extern REG_PAIR   RF3572_RFRegTable[];
+
+//
+// Device ID & Vendor ID, these values should match EEPROM value
+//
+#define NIC3062_PCI_DEVICE_ID	0x3062		// 2T/2R miniCard
+#define NIC3562_PCI_DEVICE_ID	0x3562		// 2T/2R miniCard
+#define NIC3060_PCI_DEVICE_ID	0x3060		// 1T/1R miniCard
+
+#endif // RT35xx //
+
+#endif //__RT35XX_H__ //
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/chip/rtmp_mac.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/chip/rtmp_mac.h
new file mode 100644
index 000000000..d1ac44387
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/chip/rtmp_mac.h
@@ -0,0 +1,2304 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+	Module Name:
+	rtmp_mac.h
+
+	Abstract:
+	Ralink Wireless Chip MAC related definition & structures
+
+	Revision History:
+	Who			When		  What
+	--------	----------	  ----------------------------------------------
+*/
+
+#ifndef __RTMP_MAC_H__
+#define __RTMP_MAC_H__
+
+
+
+// =================================================================================
+// TX / RX ring descriptor format
+// =================================================================================
+
+// the first 24-byte in TXD is called TXINFO and will be DMAed to MAC block through TXFIFO.
+// MAC block use this TXINFO to control the transmission behavior of this frame.
+#define FIFO_MGMT                 0
+#define FIFO_HCCA                 1
+#define FIFO_EDCA                 2
+
+
+//
+// TXD Wireless Information format for Tx ring and Mgmt Ring
+//
+//txop : for txop mode
+// 0:txop for the MPDU frame will be handles by ASIC by register
+// 1/2/3:the MPDU frame is send after PIFS/backoff/SIFS
+#ifdef RT_BIG_ENDIAN
+typedef	struct	GNU_PACKED _TXWI_STRUC {
+	// Word 0
+	UINT32		PHYMODE:2;
+	UINT32		rsv2:2;
+	UINT32		Ifs:1;
+	UINT32		STBC:2;	//channel bandwidth 20MHz or 40 MHz
+	UINT32		ShortGI:1;
+	UINT32		BW:1;	//channel bandwidth 20MHz or 40 MHz
+	UINT32		MCS:7;
+	
+	UINT32		rsv:6;
+	UINT32		txop:2;	//tx back off mode 0:HT TXOP rule , 1:PIFS TX ,2:Backoff, 3:sifs only when previous frame exchange is successful.
+	UINT32		MpduDensity:3;
+	UINT32		AMPDU:1;
+	
+	UINT32		TS:1;
+	UINT32		CFACK:1;
+	UINT32		MIMOps:1;	// the remote peer is in dynamic MIMO-PS mode
+	UINT32		FRAG:1;		// 1 to inform TKIP engine this is a fragment.
+	// Word 1
+	UINT32		PacketId:4;
+	UINT32		MPDUtotalByteCount:12;
+	UINT32		WirelessCliID:8;
+	UINT32		BAWinSize:6;
+	UINT32		NSEQ:1;
+	UINT32		ACK:1;
+	// Word 2
+	UINT32		IV;
+	// Word 3
+	UINT32		EIV;
+}	TXWI_STRUC, *PTXWI_STRUC;
+#else
+typedef	struct	GNU_PACKED _TXWI_STRUC {
+	// Word	0
+	// ex: 00 03 00 40 means txop = 3, PHYMODE = 1
+	UINT32		FRAG:1;		// 1 to inform TKIP engine this is a fragment.
+	UINT32		MIMOps:1;	// the remote peer is in dynamic MIMO-PS mode
+	UINT32		CFACK:1;
+	UINT32		TS:1;
+		
+	UINT32		AMPDU:1;
+	UINT32		MpduDensity:3;
+	UINT32		txop:2;	//FOR "THIS" frame. 0:HT TXOP rule , 1:PIFS TX ,2:Backoff, 3:sifs only when previous frame exchange is successful.
+	UINT32		rsv:6;
+	
+	UINT32		MCS:7;
+	UINT32		BW:1;	//channel bandwidth 20MHz or 40 MHz
+	UINT32		ShortGI:1;
+	UINT32		STBC:2;	// 1: STBC support MCS =0-7,   2,3 : RESERVE
+	UINT32		Ifs:1;
+	UINT32		rsv2:2;	//channel bandwidth 20MHz or 40 MHz
+	UINT32		PHYMODE:2;  
+	// Word1
+	// ex:  1c ff 38 00 means ACK=0, BAWinSize=7, MPDUtotalByteCount = 0x38
+	UINT32		ACK:1;
+	UINT32		NSEQ:1;
+	UINT32		BAWinSize:6;
+	UINT32		WirelessCliID:8;
+	UINT32		MPDUtotalByteCount:12;
+	UINT32		PacketId:4;
+	//Word2
+	UINT32		IV;
+	//Word3
+	UINT32		EIV;
+}	TXWI_STRUC, *PTXWI_STRUC;
+#endif
+
+
+//
+// RXWI wireless information format, in PBF. invisible in driver. 
+//
+#ifdef RT_BIG_ENDIAN
+typedef	struct	GNU_PACKED _RXWI_STRUC {
+	// Word 0
+	UINT32		TID:4;
+	UINT32		MPDUtotalByteCount:12;
+	UINT32		UDF:3;
+	UINT32		BSSID:3;
+	UINT32		KeyIndex:2;
+	UINT32		WirelessCliID:8;
+	// Word 1
+	UINT32		PHYMODE:2;              // 1: this RX frame is unicast to me
+	UINT32		rsv:3;
+	UINT32		STBC:2;
+	UINT32		ShortGI:1;
+	UINT32		BW:1;
+	UINT32		MCS:7;
+	UINT32		SEQUENCE:12;
+	UINT32		FRAG:4;
+	// Word 2
+	UINT32		rsv1:8;
+	UINT32		RSSI2:8;
+	UINT32		RSSI1:8;
+	UINT32		RSSI0:8;
+	// Word 3
+	/*UINT32		rsv2:16;*/
+	UINT32		rsv2:8;	
+	UINT32		FOFFSET:8;	// RT35xx	
+	UINT32		SNR1:8;
+	UINT32		SNR0:8;
+}	RXWI_STRUC, *PRXWI_STRUC;
+#else
+typedef	struct	GNU_PACKED _RXWI_STRUC {
+	// Word	0
+	UINT32		WirelessCliID:8;
+	UINT32		KeyIndex:2;
+	UINT32		BSSID:3;
+	UINT32		UDF:3;
+	UINT32		MPDUtotalByteCount:12;
+	UINT32		TID:4;
+	// Word	1
+	UINT32		FRAG:4;
+	UINT32		SEQUENCE:12;
+	UINT32		MCS:7;
+	UINT32		BW:1;
+	UINT32		ShortGI:1;
+	UINT32		STBC:2;
+	UINT32		rsv:3;
+	UINT32		PHYMODE:2;              // 1: this RX frame is unicast to me
+	//Word2
+	UINT32		RSSI0:8;
+	UINT32		RSSI1:8;
+	UINT32		RSSI2:8;
+	UINT32		rsv1:8;
+	//Word3
+	UINT32		SNR0:8;
+	UINT32		SNR1:8;
+	UINT32		FOFFSET:8;	// RT35xx	
+	UINT32		rsv2:8;
+	/*UINT32		rsv2:16;*/
+}	RXWI_STRUC, *PRXWI_STRUC;
+#endif
+
+
+// =================================================================================
+// Register format
+// =================================================================================
+
+
+//
+// SCH/DMA registers - base address 0x0200
+//
+// INT_SOURCE_CSR: Interrupt source register. Write one to clear corresponding bit
+//
+#define DMA_CSR0		0x200
+#define INT_SOURCE_CSR		0x200
+#ifdef RT_BIG_ENDIAN
+typedef	union	_INT_SOURCE_CSR_STRUC	{
+	struct	{
+#ifdef TONE_RADAR_DETECT_SUPPORT
+		UINT32			:11;
+		UINT32			RadarINT:1;
+		UINT32       	rsv:2;
+#else // original source code
+		UINT32       	:14;
+#endif // TONE_RADAR_DETECT_SUPPORT //
+		UINT32       	TxCoherent:1;
+		UINT32       	RxCoherent:1;
+		UINT32       	GPTimer:1;
+		UINT32       	AutoWakeup:1;//bit14
+		UINT32       	TXFifoStatusInt:1;//FIFO Statistics is full, sw should read 0x171c
+		UINT32       	PreTBTT:1;
+		UINT32       	TBTTInt:1;
+		UINT32       	RxTxCoherent:1;
+		UINT32       	MCUCommandINT:1;
+		UINT32       	MgmtDmaDone:1;
+		UINT32       	HccaDmaDone:1;
+		UINT32       	Ac3DmaDone:1;
+		UINT32       	Ac2DmaDone:1;
+		UINT32       	Ac1DmaDone:1;
+		UINT32		Ac0DmaDone:1;
+		UINT32		RxDone:1;
+		UINT32		TxDelayINT:1;	//delayed interrupt, not interrupt until several int or time limit hit
+		UINT32		RxDelayINT:1; //dealyed interrupt
+	}	field;
+	UINT32			word;
+}	INT_SOURCE_CSR_STRUC, *PINT_SOURCE_CSR_STRUC;
+#else
+typedef	union	_INT_SOURCE_CSR_STRUC	{
+	struct	{
+		UINT32		RxDelayINT:1;
+		UINT32		TxDelayINT:1;
+		UINT32		RxDone:1;
+		UINT32		Ac0DmaDone:1;//4      
+		UINT32       	Ac1DmaDone:1;
+		UINT32       	Ac2DmaDone:1;
+		UINT32       	Ac3DmaDone:1;
+		UINT32       	HccaDmaDone:1; // bit7
+		UINT32       	MgmtDmaDone:1;
+		UINT32       	MCUCommandINT:1;//bit 9
+		UINT32       	RxTxCoherent:1;
+		UINT32       	TBTTInt:1;
+		UINT32       	PreTBTT:1;
+		UINT32       	TXFifoStatusInt:1;//FIFO Statistics is full, sw should read 0x171c
+		UINT32       	AutoWakeup:1;//bit14
+		UINT32       	GPTimer:1;
+		UINT32       	RxCoherent:1;//bit16
+		UINT32       	TxCoherent:1;
+#ifdef TONE_RADAR_DETECT_SUPPORT
+		UINT32       	rsv:2;
+		UINT32			RadarINT:1;
+		UINT32			:11;
+#else
+		UINT32       	:14;
+#endif // TONE_RADAR_DETECT_SUPPORT //
+	}	field;
+	UINT32			word;
+} INT_SOURCE_CSR_STRUC, *PINT_SOURCE_CSR_STRUC;
+#endif
+
+//
+// INT_MASK_CSR:   Interrupt MASK register.   1: the interrupt is mask OFF
+//
+#define INT_MASK_CSR        0x204
+#ifdef RT_BIG_ENDIAN
+typedef	union	_INT_MASK_CSR_STRUC	{
+	struct	{
+		UINT32       	TxCoherent:1;
+		UINT32       	RxCoherent:1;
+#ifdef TONE_RADAR_DETECT_SUPPORT
+		UINT32			:9;
+		UINT32			RadarINT:1;
+		UINT32       	rsv:10;
+#else
+		UINT32       	:20;
+#endif // TONE_RADAR_DETECT_SUPPORT //
+		UINT32       	MCUCommandINT:1;
+		UINT32       	MgmtDmaDone:1;
+		UINT32       	HccaDmaDone:1;
+		UINT32       	Ac3DmaDone:1;
+		UINT32       	Ac2DmaDone:1;
+		UINT32       	Ac1DmaDone:1;
+		UINT32		Ac0DmaDone:1;
+		UINT32		RxDone:1;
+		UINT32		TxDelay:1;
+		UINT32		RXDelay_INT_MSK:1;
+	}	field;
+	UINT32			word;
+}INT_MASK_CSR_STRUC, *PINT_MASK_CSR_STRUC;
+#else
+typedef	union	_INT_MASK_CSR_STRUC	{
+	struct	{
+		UINT32		RXDelay_INT_MSK:1;
+		UINT32		TxDelay:1;
+		UINT32		RxDone:1;
+		UINT32		Ac0DmaDone:1;
+		UINT32       	Ac1DmaDone:1;
+		UINT32       	Ac2DmaDone:1;
+		UINT32       	Ac3DmaDone:1;
+		UINT32       	HccaDmaDone:1;
+		UINT32       	MgmtDmaDone:1;
+		UINT32       	MCUCommandINT:1;
+#ifdef TONE_RADAR_DETECT_SUPPORT
+		UINT32       	rsv:10;
+		UINT32			RadarINT:1;
+		UINT32			:9;
+#else
+		UINT32       	:20;
+#endif // TONE_RADAR_DETECT_SUPPORT //
+		UINT32       	RxCoherent:1;
+		UINT32       	TxCoherent:1;
+	}	field;
+	UINT32			word;
+} INT_MASK_CSR_STRUC, *PINT_MASK_CSR_STRUC;
+#endif
+
+#define WPDMA_GLO_CFG 	0x208
+#ifdef RT_BIG_ENDIAN
+typedef	union	_WPDMA_GLO_CFG_STRUC	{
+	struct	{
+		UINT32       	HDR_SEG_LEN:16;
+		UINT32       	RXHdrScater:8;
+		UINT32       	BigEndian:1;
+		UINT32       	EnTXWriteBackDDONE:1;
+		UINT32       	WPDMABurstSIZE:2;
+		UINT32		RxDMABusy:1;
+		UINT32		EnableRxDMA:1;
+		UINT32		TxDMABusy:1;
+		UINT32		EnableTxDMA:1;
+	}	field;
+	UINT32			word;
+}WPDMA_GLO_CFG_STRUC, *PWPDMA_GLO_CFG_STRUC;
+#else
+typedef	union	_WPDMA_GLO_CFG_STRUC	{
+	struct	{
+		UINT32		EnableTxDMA:1;
+		UINT32		TxDMABusy:1;
+		UINT32		EnableRxDMA:1;
+		UINT32		RxDMABusy:1;
+		UINT32       	WPDMABurstSIZE:2;
+		UINT32       	EnTXWriteBackDDONE:1;
+		UINT32       	BigEndian:1;
+		UINT32       	RXHdrScater:8;
+		UINT32       	HDR_SEG_LEN:16;
+	}	field;
+	UINT32			word;
+} WPDMA_GLO_CFG_STRUC, *PWPDMA_GLO_CFG_STRUC;
+#endif
+
+#define WPDMA_RST_IDX 	0x20c
+#ifdef RT_BIG_ENDIAN
+typedef	union	_WPDMA_RST_IDX_STRUC	{
+	struct	{
+		UINT32       	:15;
+		UINT32       	RST_DRX_IDX0:1;
+		UINT32       	rsv:10;
+		UINT32       	RST_DTX_IDX5:1;
+		UINT32       	RST_DTX_IDX4:1;
+		UINT32		RST_DTX_IDX3:1;
+		UINT32		RST_DTX_IDX2:1;
+		UINT32		RST_DTX_IDX1:1;
+		UINT32		RST_DTX_IDX0:1;
+	}	field;
+	UINT32			word;
+}WPDMA_RST_IDX_STRUC, *PWPDMA_RST_IDX_STRUC;
+#else
+typedef	union	_WPDMA_RST_IDX_STRUC	{
+	struct	{
+		UINT32		RST_DTX_IDX0:1;
+		UINT32		RST_DTX_IDX1:1;
+		UINT32		RST_DTX_IDX2:1;
+		UINT32		RST_DTX_IDX3:1;
+		UINT32       	RST_DTX_IDX4:1;
+		UINT32       	RST_DTX_IDX5:1;
+		UINT32       	rsv:10;
+		UINT32       	RST_DRX_IDX0:1;
+		UINT32       	:15;
+	}	field;
+	UINT32			word;
+} WPDMA_RST_IDX_STRUC, *PWPDMA_RST_IDX_STRUC;
+#endif
+#define DELAY_INT_CFG  0x0210
+#ifdef RT_BIG_ENDIAN
+typedef	union	_DELAY_INT_CFG_STRUC	{
+	struct	{
+		UINT32       	TXDLY_INT_EN:1;
+		UINT32       	TXMAX_PINT:7;
+		UINT32       	TXMAX_PTIME:8;
+		UINT32       	RXDLY_INT_EN:1;
+		UINT32       	RXMAX_PINT:7;
+		UINT32		RXMAX_PTIME:8;
+	}	field;
+	UINT32			word;
+}DELAY_INT_CFG_STRUC, *PDELAY_INT_CFG_STRUC;
+#else
+typedef	union	_DELAY_INT_CFG_STRUC	{
+	struct	{
+		UINT32		RXMAX_PTIME:8;
+		UINT32       	RXMAX_PINT:7;
+		UINT32       	RXDLY_INT_EN:1;
+		UINT32       	TXMAX_PTIME:8;
+		UINT32       	TXMAX_PINT:7;
+		UINT32       	TXDLY_INT_EN:1;
+	}	field;
+	UINT32			word;
+} DELAY_INT_CFG_STRUC, *PDELAY_INT_CFG_STRUC;
+#endif
+#define WMM_AIFSN_CFG   0x0214
+#ifdef RT_BIG_ENDIAN
+typedef	union	_AIFSN_CSR_STRUC	{
+	struct	{
+	    UINT32   Rsv:16;
+	    UINT32   Aifsn3:4;       // for AC_VO
+	    UINT32   Aifsn2:4;       // for AC_VI
+	    UINT32   Aifsn1:4;       // for AC_BK
+	    UINT32   Aifsn0:4;       // for AC_BE
+	}	field;
+	UINT32			word;
+}	AIFSN_CSR_STRUC, *PAIFSN_CSR_STRUC;
+#else
+typedef	union	_AIFSN_CSR_STRUC	{
+	struct	{
+	    UINT32   Aifsn0:4;       // for AC_BE
+	    UINT32   Aifsn1:4;       // for AC_BK
+	    UINT32   Aifsn2:4;       // for AC_VI
+	    UINT32   Aifsn3:4;       // for AC_VO
+	    UINT32   Rsv:16;
+	}	field;
+	UINT32			word;
+}	AIFSN_CSR_STRUC, *PAIFSN_CSR_STRUC;
+#endif
+//
+// CWMIN_CSR: CWmin for each EDCA AC
+//
+#define WMM_CWMIN_CFG   0x0218
+#ifdef RT_BIG_ENDIAN
+typedef	union	_CWMIN_CSR_STRUC	{
+	struct	{
+	    UINT32   Rsv:16;
+	    UINT32   Cwmin3:4;       // for AC_VO
+	    UINT32   Cwmin2:4;       // for AC_VI
+	    UINT32   Cwmin1:4;       // for AC_BK
+	    UINT32   Cwmin0:4;       // for AC_BE
+	}	field;
+	UINT32			word;
+}	CWMIN_CSR_STRUC, *PCWMIN_CSR_STRUC;
+#else
+typedef	union	_CWMIN_CSR_STRUC	{
+	struct	{
+	    UINT32   Cwmin0:4;       // for AC_BE
+	    UINT32   Cwmin1:4;       // for AC_BK
+	    UINT32   Cwmin2:4;       // for AC_VI
+	    UINT32   Cwmin3:4;       // for AC_VO
+	    UINT32   Rsv:16;
+	}	field;
+	UINT32			word;
+}	CWMIN_CSR_STRUC, *PCWMIN_CSR_STRUC;
+#endif
+
+//
+// CWMAX_CSR: CWmin for each EDCA AC
+//
+#define WMM_CWMAX_CFG   0x021c
+#ifdef RT_BIG_ENDIAN
+typedef	union	_CWMAX_CSR_STRUC	{
+	struct	{
+	    UINT32   Rsv:16;
+	    UINT32   Cwmax3:4;       // for AC_VO
+	    UINT32   Cwmax2:4;       // for AC_VI
+	    UINT32   Cwmax1:4;       // for AC_BK
+	    UINT32   Cwmax0:4;       // for AC_BE
+	}	field;
+	UINT32			word;
+}	CWMAX_CSR_STRUC, *PCWMAX_CSR_STRUC;
+#else
+typedef	union	_CWMAX_CSR_STRUC	{
+	struct	{
+	    UINT32   Cwmax0:4;       // for AC_BE
+	    UINT32   Cwmax1:4;       // for AC_BK
+	    UINT32   Cwmax2:4;       // for AC_VI
+	    UINT32   Cwmax3:4;       // for AC_VO
+	    UINT32   Rsv:16;
+	}	field;
+	UINT32			word;
+}	CWMAX_CSR_STRUC, *PCWMAX_CSR_STRUC;
+#endif
+
+
+//
+// AC_TXOP_CSR0: AC_BK/AC_BE TXOP register
+//
+#define WMM_TXOP0_CFG    0x0220
+#ifdef RT_BIG_ENDIAN
+typedef	union	_AC_TXOP_CSR0_STRUC	{
+	struct	{
+	    USHORT  Ac1Txop;        // for AC_BE, in unit of 32us
+	    USHORT  Ac0Txop;        // for AC_BK, in unit of 32us
+	}	field;
+	UINT32			word;
+}	AC_TXOP_CSR0_STRUC, *PAC_TXOP_CSR0_STRUC;
+#else
+typedef	union	_AC_TXOP_CSR0_STRUC	{
+	struct	{
+	    USHORT  Ac0Txop;        // for AC_BK, in unit of 32us
+	    USHORT  Ac1Txop;        // for AC_BE, in unit of 32us
+	}	field;
+	UINT32			word;
+}	AC_TXOP_CSR0_STRUC, *PAC_TXOP_CSR0_STRUC;
+#endif
+
+//
+// AC_TXOP_CSR1: AC_VO/AC_VI TXOP register
+//
+#define WMM_TXOP1_CFG    0x0224
+#ifdef RT_BIG_ENDIAN
+typedef	union	_AC_TXOP_CSR1_STRUC	{
+	struct	{
+	    USHORT  Ac3Txop;        // for AC_VO, in unit of 32us
+	    USHORT  Ac2Txop;        // for AC_VI, in unit of 32us
+	}	field;
+	UINT32			word;
+}	AC_TXOP_CSR1_STRUC, *PAC_TXOP_CSR1_STRUC;
+#else
+typedef	union	_AC_TXOP_CSR1_STRUC	{
+	struct	{
+	    USHORT  Ac2Txop;        // for AC_VI, in unit of 32us
+	    USHORT  Ac3Txop;        // for AC_VO, in unit of 32us
+	}	field;
+	UINT32			word;
+}	AC_TXOP_CSR1_STRUC, *PAC_TXOP_CSR1_STRUC;
+#endif
+
+
+#define RINGREG_DIFF			0x10
+#define GPIO_CTRL_CFG    0x0228	//MAC_CSR13
+#define MCU_CMD_CFG    0x022c
+#define TX_BASE_PTR0     0x0230	//AC_BK base address
+#define TX_MAX_CNT0      0x0234
+#define TX_CTX_IDX0       0x0238
+#define TX_DTX_IDX0      0x023c
+#define TX_BASE_PTR1     0x0240 	//AC_BE base address
+#define TX_MAX_CNT1      0x0244
+#define TX_CTX_IDX1       0x0248
+#define TX_DTX_IDX1      0x024c
+#define TX_BASE_PTR2     0x0250 	//AC_VI base address
+#define TX_MAX_CNT2      0x0254
+#define TX_CTX_IDX2       0x0258
+#define TX_DTX_IDX2      0x025c
+#define TX_BASE_PTR3     0x0260 	//AC_VO base address
+#define TX_MAX_CNT3      0x0264
+#define TX_CTX_IDX3       0x0268
+#define TX_DTX_IDX3      0x026c
+#define TX_BASE_PTR4     0x0270 	//HCCA base address
+#define TX_MAX_CNT4      0x0274
+#define TX_CTX_IDX4       0x0278
+#define TX_DTX_IDX4      0x027c
+#define TX_BASE_PTR5     0x0280 	//MGMT base address
+#define  TX_MAX_CNT5     0x0284
+#define TX_CTX_IDX5       0x0288
+#define TX_DTX_IDX5      0x028c
+#define TX_MGMTMAX_CNT      TX_MAX_CNT5
+#define TX_MGMTCTX_IDX       TX_CTX_IDX5
+#define TX_MGMTDTX_IDX      TX_DTX_IDX5
+#define RX_BASE_PTR     0x0290 	//RX base address
+#define RX_MAX_CNT      0x0294
+#define RX_CRX_IDX       0x0298
+#define RX_DRX_IDX      0x029c
+
+
+#define USB_DMA_CFG      0x02a0
+#ifdef RT_BIG_ENDIAN
+typedef	union	_USB_DMA_CFG_STRUC	{
+	struct	{
+	    UINT32  TxBusy:1;   	//USB DMA TX FSM busy . debug only
+	    UINT32  RxBusy:1;        //USB DMA RX FSM busy . debug only
+	    UINT32  EpoutValid:6;        //OUT endpoint data valid. debug only
+	    UINT32  TxBulkEn:1;        //Enable USB DMA Tx  
+	    UINT32  RxBulkEn:1;        //Enable USB DMA Rx  
+	    UINT32  RxBulkAggEn:1;        //Enable Rx Bulk Aggregation  
+	    UINT32  TxopHalt:1;        //Halt TXOP count down when TX buffer is full.
+	    UINT32  TxClear:1;        //Clear USB DMA TX path
+	    UINT32  rsv:2;        
+	    UINT32  phyclear:1;        		//phy watch dog enable. write 1
+	    UINT32  RxBulkAggLmt:8;        //Rx Bulk Aggregation Limit  in unit of 1024 bytes
+	    UINT32  RxBulkAggTOut:8;        //Rx Bulk Aggregation TimeOut  in unit of 33ns
+	}	field;
+	UINT32			word;
+}	USB_DMA_CFG_STRUC, *PUSB_DMA_CFG_STRUC;
+#else
+typedef	union	_USB_DMA_CFG_STRUC	{
+	struct	{
+	    UINT32  RxBulkAggTOut:8;        //Rx Bulk Aggregation TimeOut  in unit of 33ns
+	    UINT32  RxBulkAggLmt:8;        //Rx Bulk Aggregation Limit  in unit of 256 bytes
+	    UINT32  phyclear:1;        		//phy watch dog enable. write 1
+	    UINT32  rsv:2;        
+	    UINT32  TxClear:1;        //Clear USB DMA TX path
+	    UINT32  TxopHalt:1;        //Halt TXOP count down when TX buffer is full.
+	    UINT32  RxBulkAggEn:1;        //Enable Rx Bulk Aggregation  
+	    UINT32  RxBulkEn:1;        //Enable USB DMA Rx  
+	    UINT32  TxBulkEn:1;        //Enable USB DMA Tx  
+	    UINT32  EpoutValid:6;        //OUT endpoint data valid
+	    UINT32  RxBusy:1;        //USB DMA RX FSM busy 
+	    UINT32  TxBusy:1;   	//USB DMA TX FSM busy 
+	}	field;
+	UINT32			word;
+}	USB_DMA_CFG_STRUC, *PUSB_DMA_CFG_STRUC;
+#endif
+
+
+//
+//  3  PBF  registers  
+//
+//
+// Most are for debug. Driver doesn't touch PBF register.
+#define PBF_SYS_CTRL 	 0x0400
+#define PBF_CFG                 0x0408
+#define PBF_MAX_PCNT 	 0x040C
+#define PBF_CTRL	 	0x0410
+#define PBF_INT_STA	 0x0414
+#define PBF_INT_ENA	 0x0418
+#define TXRXQ_PCNT  	 0x0438
+#define PBF_DBG 	 	 0x043c
+#define PBF_CAP_CTRL     0x0440
+
+#ifdef RT30xx
+#ifdef RTMP_EFUSE_SUPPORT
+// eFuse registers
+#define EFUSE_CTRL				0x0580
+#define EFUSE_DATA0				0x0590
+#define EFUSE_DATA1				0x0594
+#define EFUSE_DATA2				0x0598
+#define EFUSE_DATA3				0x059c
+#endif // RTMP_EFUSE_SUPPORT //
+#endif // RT30xx //
+
+#define OSC_CTRL		0x5a4
+#define PCIE_PHY_TX_ATTENUATION_CTRL	0x05C8
+#define LDO_CFG0 				0x05d4
+#define GPIO_SWITCH				0x05dc
+
+
+//
+//  4  MAC  registers  
+//
+//
+//  4.1 MAC SYSTEM  configuration registers (offset:0x1000)
+//
+#define MAC_CSR0            0x1000
+#ifdef RT_BIG_ENDIAN
+typedef	union	_ASIC_VER_ID_STRUC	{
+	struct	{
+	    USHORT  ASICVer;        // version : 2860
+	    USHORT  ASICRev;        // reversion  : 0
+	}	field;
+	UINT32			word;
+}	ASIC_VER_ID_STRUC, *PASIC_VER_ID_STRUC;
+#else
+typedef	union	_ASIC_VER_ID_STRUC	{
+	struct	{
+	    USHORT  ASICRev;        // reversion  : 0
+	    USHORT  ASICVer;        // version : 2860
+	}	field;
+	UINT32			word;
+}	ASIC_VER_ID_STRUC, *PASIC_VER_ID_STRUC;
+#endif
+#define MAC_SYS_CTRL            0x1004		//MAC_CSR1
+#define MAC_ADDR_DW0            		0x1008		// MAC ADDR DW0
+#define MAC_ADDR_DW1           		 0x100c		// MAC ADDR DW1
+//
+// MAC_CSR2: STA MAC register 0
+//
+#ifdef RT_BIG_ENDIAN
+typedef	union	_MAC_DW0_STRUC	{
+	struct	{
+		UCHAR		Byte3;		// MAC address byte 3
+		UCHAR		Byte2;		// MAC address byte 2
+		UCHAR		Byte1;		// MAC address byte 1
+		UCHAR		Byte0;		// MAC address byte 0
+	}	field;
+	UINT32			word;
+}	MAC_DW0_STRUC, *PMAC_DW0_STRUC;
+#else
+typedef	union	_MAC_DW0_STRUC	{
+	struct	{
+		UCHAR		Byte0;		// MAC address byte 0
+		UCHAR		Byte1;		// MAC address byte 1
+		UCHAR		Byte2;		// MAC address byte 2
+		UCHAR		Byte3;		// MAC address byte 3
+	}	field;
+	UINT32			word;
+}	MAC_DW0_STRUC, *PMAC_DW0_STRUC;
+#endif
+
+//
+// MAC_CSR3: STA MAC register 1
+//
+#ifdef RT_BIG_ENDIAN
+typedef	union	_MAC_DW1_STRUC	{
+	struct	{
+		UCHAR		Rsvd1;
+		UCHAR		U2MeMask;
+		UCHAR		Byte5;		// MAC address byte 5
+		UCHAR		Byte4;		// MAC address byte 4
+	}	field;
+	UINT32			word;
+}	MAC_DW1_STRUC, *PMAC_DW1_STRUC;
+#else
+typedef	union	_MAC_DW1_STRUC	{
+	struct	{
+		UCHAR		Byte4;		// MAC address byte 4
+		UCHAR		Byte5;		// MAC address byte 5
+		UCHAR		U2MeMask;
+		UCHAR		Rsvd1;
+	}	field;
+	UINT32			word;
+}	MAC_DW1_STRUC, *PMAC_DW1_STRUC;
+#endif
+
+#define MAC_BSSID_DW0            		0x1010		// MAC BSSID DW0
+#define MAC_BSSID_DW1            		0x1014		// MAC BSSID DW1
+
+//
+// MAC_CSR5: BSSID register 1
+//
+#ifdef RT_BIG_ENDIAN
+typedef	union	_MAC_CSR5_STRUC	{
+	struct	{
+		USHORT		Rsvd:11;
+		USHORT		MBssBcnNum:3;
+		USHORT		BssIdMode:2; // 0: one BSSID, 10: 4 BSSID,  01: 2 BSSID , 11: 8BSSID
+		UCHAR		Byte5;		 // BSSID byte 5
+		UCHAR		Byte4;		 // BSSID byte 4
+	}	field;
+	UINT32			word;
+}	MAC_CSR5_STRUC, *PMAC_CSR5_STRUC;
+#else
+typedef	union	_MAC_CSR5_STRUC	{
+	struct	{
+		UCHAR		Byte4;		 // BSSID byte 4
+		UCHAR		Byte5;		 // BSSID byte 5
+		USHORT      	BssIdMask:2; // 0: one BSSID, 10: 4 BSSID,  01: 2 BSSID , 11: 8BSSID
+		USHORT		MBssBcnNum:3;
+		USHORT		Rsvd:11;
+	}	field;
+	UINT32			word;
+}	MAC_CSR5_STRUC, *PMAC_CSR5_STRUC;
+#endif
+
+#define MAX_LEN_CFG              0x1018		// rt2860b max 16k bytes. bit12:13 Maximum PSDU length (power factor) 0:2^13, 1:2^14, 2:2^15, 3:2^16
+#define BBP_CSR_CFG            		0x101c		//  
+//
+// BBP_CSR_CFG: BBP serial control register
+//
+#ifdef RT_BIG_ENDIAN
+typedef	union	_BBP_CSR_CFG_STRUC	{
+	struct	{
+		UINT32		:12;		
+		UINT32		BBP_RW_MODE:1;		// 0: use serial mode  1:parallel
+		UINT32		BBP_PAR_DUR:1;		    // 0: 4 MAC clock cycles  1: 8 MAC clock cycles
+		UINT32		Busy:1;				// 1: ASIC is busy execute BBP programming.	
+		UINT32		fRead:1;		    // 0: Write	BBP, 1:	Read BBP
+		UINT32		RegNum:8;			// Selected	BBP	register
+		UINT32		Value:8;			// Register	value to program into BBP
+	}	field;
+	UINT32			word;
+}	BBP_CSR_CFG_STRUC, *PBBP_CSR_CFG_STRUC;
+#else
+typedef	union	_BBP_CSR_CFG_STRUC	{
+	struct	{
+		UINT32		Value:8;			// Register	value to program into BBP
+		UINT32		RegNum:8;			// Selected	BBP	register
+		UINT32		fRead:1;		    // 0: Write	BBP, 1:	Read BBP
+		UINT32		Busy:1;				// 1: ASIC is busy execute BBP programming.	
+		UINT32		BBP_PAR_DUR:1;		     // 0: 4 MAC clock cycles  1: 8 MAC clock cycles
+		UINT32		BBP_RW_MODE:1;		// 0: use serial mode  1:parallel
+		UINT32		:12;
+	}	field;
+	UINT32			word;
+}	BBP_CSR_CFG_STRUC, *PBBP_CSR_CFG_STRUC;
+#endif
+#define RF_CSR_CFG0            		0x1020		 
+//
+// RF_CSR_CFG: RF control register
+//
+#ifdef RT_BIG_ENDIAN
+typedef	union	_RF_CSR_CFG0_STRUC	{
+	struct	{
+		UINT32		Busy:1;		    // 0: idle 1: 8busy
+		UINT32		Sel:1;				// 0:RF_LE0 activate  1:RF_LE1 activate	
+		UINT32		StandbyMode:1;		    // 0: high when stand by 1:	low when standby
+		UINT32		bitwidth:5;			// Selected	BBP	register
+		UINT32		RegIdAndContent:24;			// Register	value to program into BBP
+	}	field;
+	UINT32			word;
+}	RF_CSR_CFG0_STRUC, *PRF_CSR_CFG0_STRUC;
+#else
+typedef	union	_RF_CSR_CFG0_STRUC	{
+	struct	{
+		UINT32		RegIdAndContent:24;			// Register	value to program into BBP
+		UINT32		bitwidth:5;			// Selected	BBP	register
+		UINT32		StandbyMode:1;		    // 0: high when stand by 1:	low when standby
+		UINT32		Sel:1;				// 0:RF_LE0 activate  1:RF_LE1 activate	
+		UINT32		Busy:1;		    // 0: idle 1: 8busy
+	}	field;
+	UINT32			word;
+}	RF_CSR_CFG0_STRUC, *PRF_CSR_CFG0_STRUC;
+#endif
+#define RF_CSR_CFG1           		0x1024		 
+#ifdef RT_BIG_ENDIAN
+typedef	union	_RF_CSR_CFG1_STRUC	{
+	struct	{
+		UINT32		rsv:7;		    // 0: idle 1: 8busy
+		UINT32		RFGap:5;			// Gap between BB_CONTROL_RF and RF_LE. 0: 3 system clock cycle (37.5usec) 1: 5 system clock cycle (62.5usec)
+		UINT32		RegIdAndContent:24;			// Register	value to program into BBP
+	}	field;
+	UINT32			word;
+}	RF_CSR_CFG1_STRUC, *PRF_CSR_CFG1_STRUC;
+#else
+typedef	union	_RF_CSR_CFG1_STRUC	{
+	struct	{
+		UINT32		RegIdAndContent:24;			// Register	value to program into BBP
+		UINT32		RFGap:5;			// Gap between BB_CONTROL_RF and RF_LE. 0: 3 system clock cycle (37.5usec) 1: 5 system clock cycle (62.5usec)
+		UINT32		rsv:7;		    // 0: idle 1: 8busy
+	}	field;
+	UINT32			word;
+}	RF_CSR_CFG1_STRUC, *PRF_CSR_CFG1_STRUC;
+#endif
+#define RF_CSR_CFG2           		0x1028		//  
+#ifdef RT_BIG_ENDIAN
+typedef	union	_RF_CSR_CFG2_STRUC	{
+	struct	{
+		UINT32		rsv:8;		    // 0: idle 1: 8busy
+		UINT32		RegIdAndContent:24;			// Register	value to program into BBP
+	}	field;
+	UINT32			word;
+}	RF_CSR_CFG2_STRUC, *PRF_CSR_CFG2_STRUC;
+#else
+typedef	union	_RF_CSR_CFG2_STRUC	{
+	struct	{
+		UINT32		RegIdAndContent:24;			// Register	value to program into BBP
+		UINT32		rsv:8;		    // 0: idle 1: 8busy
+	}	field;
+	UINT32			word;
+}	RF_CSR_CFG2_STRUC, *PRF_CSR_CFG2_STRUC;
+#endif
+#define LED_CFG           		0x102c		//  MAC_CSR14
+#ifdef RT_BIG_ENDIAN
+typedef	union	_LED_CFG_STRUC	{
+	struct	{
+		UINT32		:1;			 
+		UINT32		LedPolar:1;			// Led Polarity.  0: active low1: active high
+		UINT32		YLedMode:2;			// yellow Led Mode
+		UINT32		GLedMode:2;			// green Led Mode
+		UINT32		RLedMode:2;			// red Led Mode    0: off1: blinking upon TX2: periodic slow blinking3: always on
+		UINT32		rsv:2;		    
+		UINT32		SlowBlinkPeriod:6;			// slow blinking period. unit:1ms
+		UINT32		OffPeriod:8;			// blinking off period unit 1ms
+		UINT32		OnPeriod:8;			// blinking on period unit 1ms
+	}	field;
+	UINT32			word;
+}	LED_CFG_STRUC, *PLED_CFG_STRUC;
+#else
+typedef	union	_LED_CFG_STRUC	{
+	struct	{
+		UINT32		OnPeriod:8;			// blinking on period unit 1ms
+		UINT32		OffPeriod:8;			// blinking off period unit 1ms
+		UINT32		SlowBlinkPeriod:6;			// slow blinking period. unit:1ms
+		UINT32		rsv:2;		    
+		UINT32		RLedMode:2;			// red Led Mode    0: off1: blinking upon TX2: periodic slow blinking3: always on
+		UINT32		GLedMode:2;			// green Led Mode
+		UINT32		YLedMode:2;			// yellow Led Mode
+		UINT32		LedPolar:1;			// Led Polarity.  0: active low1: active high
+		UINT32		:1;			 
+	}	field;
+	UINT32			word;
+}	LED_CFG_STRUC, *PLED_CFG_STRUC;
+#endif
+//
+//  4.2 MAC TIMING  configuration registers (offset:0x1100)
+//
+#define XIFS_TIME_CFG             0x1100		 // MAC_CSR8  MAC_CSR9   
+#ifdef RT_BIG_ENDIAN
+typedef	union	_IFS_SLOT_CFG_STRUC	{
+	struct	{
+	    UINT32  rsv:2;         
+	    UINT32  BBRxendEnable:1;        //  reference RXEND signal to begin XIFS defer
+	    UINT32  EIFS:9;        //  unit 1us
+	    UINT32  OfdmXifsTime:4;        //OFDM SIFS. unit 1us. Applied after OFDM RX when MAC doesn't reference BBP signal BBRXEND
+	    UINT32  OfdmSifsTime:8;        //  unit 1us. Applied after OFDM RX/TX
+	    UINT32  CckmSifsTime:8;        //  unit 1us. Applied after CCK RX/TX
+	}	field;
+	UINT32			word;
+}	IFS_SLOT_CFG_STRUC, *PIFS_SLOT_CFG_STRUC;
+#else
+typedef	union	_IFS_SLOT_CFG_STRUC	{
+	struct	{
+	    UINT32  CckmSifsTime:8;        //  unit 1us. Applied after CCK RX/TX
+	    UINT32  OfdmSifsTime:8;        //  unit 1us. Applied after OFDM RX/TX
+	    UINT32  OfdmXifsTime:4;        //OFDM SIFS. unit 1us. Applied after OFDM RX when MAC doesn't reference BBP signal BBRXEND
+	    UINT32  EIFS:9;        //  unit 1us
+	    UINT32  BBRxendEnable:1;        //  reference RXEND signal to begin XIFS defer
+	    UINT32  rsv:2;         
+	}	field;
+	UINT32			word;
+}	IFS_SLOT_CFG_STRUC, *PIFS_SLOT_CFG_STRUC;
+#endif
+
+#define BKOFF_SLOT_CFG             0x1104		 //  mac_csr9 last 8 bits
+#define NAV_TIME_CFG             0x1108		 // NAV  (MAC_CSR15)
+#define CH_TIME_CFG             0x110C		 	// Count as channel busy 
+#define PBF_LIFE_TIMER             0x1110		 //TX/RX MPDU timestamp timer (free run)Unit: 1us  
+#define BCN_TIME_CFG             0x1114		 // TXRX_CSR9
+
+#define BCN_OFFSET0				0x042C
+#define BCN_OFFSET1				0x0430
+
+//
+// BCN_TIME_CFG : Synchronization control register
+//
+#ifdef RT_BIG_ENDIAN
+typedef	union	_BCN_TIME_CFG_STRUC	{
+	struct	{
+		UINT32		TxTimestampCompensate:8;
+        UINT32       :3;
+		UINT32		bBeaconGen:1;		// Enable beacon generator
+        UINT32       bTBTTEnable:1;
+		UINT32		TsfSyncMode:2;		// Enable TSF sync, 00: disable, 01: infra mode, 10: ad-hoc mode
+		UINT32		bTsfTicking:1;		// Enable TSF auto counting
+		UINT32       BeaconInterval:16;  // in unit of 1/16 TU
+	}	field;
+	UINT32			word;
+}	BCN_TIME_CFG_STRUC, *PBCN_TIME_CFG_STRUC;
+#else
+typedef	union	_BCN_TIME_CFG_STRUC	{
+	struct	{
+		UINT32       BeaconInterval:16;  // in unit of 1/16 TU
+		UINT32		bTsfTicking:1;		// Enable TSF auto counting
+		UINT32		TsfSyncMode:2;		// Enable TSF sync, 00: disable, 01: infra mode, 10: ad-hoc mode
+        UINT32       bTBTTEnable:1;
+		UINT32		bBeaconGen:1;		// Enable beacon generator
+        UINT32       :3;
+		UINT32		TxTimestampCompensate:8;
+	}	field;
+	UINT32			word;
+}	BCN_TIME_CFG_STRUC, *PBCN_TIME_CFG_STRUC;
+#endif
+#define TBTT_SYNC_CFG            0x1118  		// txrx_csr10
+#define TSF_TIMER_DW0             0x111C  		// Local TSF timer lsb 32 bits. Read-only
+#define TSF_TIMER_DW1             0x1120  		// msb 32 bits. Read-only.
+#define TBTT_TIMER             	0x1124  		// TImer remains till next TBTT. Read-only.  TXRX_CSR14
+#define INT_TIMER_CFG              	0x1128  		//  
+#define INT_TIMER_EN             	0x112c  		//  GP-timer and pre-tbtt Int enable
+#define CH_IDLE_STA              	0x1130  		//  channel idle time
+#define CH_BUSY_STA              	0x1134  		//  channle busy time
+#define CH_BUSY_STA_SEC				0x1138			//  channel busy time for secondary channel
+//
+//  4.2 MAC POWER  configuration registers (offset:0x1200)
+//
+#define MAC_STATUS_CFG             0x1200		 // old MAC_CSR12
+#define PWR_PIN_CFG             0x1204		 // old MAC_CSR12
+#define AUTO_WAKEUP_CFG             0x1208		 // old MAC_CSR10
+//
+// AUTO_WAKEUP_CFG: Manual power control / status register 
+//
+#ifdef RT_BIG_ENDIAN
+typedef	union	_AUTO_WAKEUP_STRUC	{
+	struct	{
+		UINT32		:16;
+		UINT32		EnableAutoWakeup:1;	// 0:sleep, 1:awake
+		UINT32       NumofSleepingTbtt:7;          // ForceWake has high privilege than PutToSleep when both set
+		UINT32       AutoLeadTime:8;
+	}	field;
+	UINT32			word;
+}	AUTO_WAKEUP_STRUC, *PAUTO_WAKEUP_STRUC;
+#else
+typedef	union	_AUTO_WAKEUP_STRUC	{
+	struct	{
+		UINT32       AutoLeadTime:8;
+		UINT32       NumofSleepingTbtt:7;          // ForceWake has high privilege than PutToSleep when both set
+		UINT32		EnableAutoWakeup:1;	// 0:sleep, 1:awake
+		UINT32		:16;
+	}	field;
+	UINT32			word;
+}	AUTO_WAKEUP_STRUC, *PAUTO_WAKEUP_STRUC;
+#endif
+//
+//  4.3 MAC TX  configuration registers (offset:0x1300)
+//       
+
+#define EDCA_AC0_CFG	0x1300		//AC_TXOP_CSR0 0x3474
+#define EDCA_AC1_CFG	0x1304
+#define EDCA_AC2_CFG	0x1308
+#define EDCA_AC3_CFG	0x130c
+#ifdef RT_BIG_ENDIAN
+typedef	union	_EDCA_AC_CFG_STRUC	{
+	struct	{
+	    UINT32  :12;        // 
+	    UINT32  Cwmax:4;        //unit power of 2
+	    UINT32  Cwmin:4;        // 
+	    UINT32  Aifsn:4;        // # of slot time
+	    UINT32  AcTxop:8;        //  in unit of 32us
+	}	field;
+	UINT32			word;
+}	EDCA_AC_CFG_STRUC, *PEDCA_AC_CFG_STRUC;
+#else
+typedef	union	_EDCA_AC_CFG_STRUC	{
+	struct	{
+	    UINT32  AcTxop:8;        //  in unit of 32us
+	    UINT32  Aifsn:4;        // # of slot time
+	    UINT32  Cwmin:4;        // 
+	    UINT32  Cwmax:4;        //unit power of 2
+	    UINT32  :12;       // 
+	}	field;
+	UINT32			word;
+}	EDCA_AC_CFG_STRUC, *PEDCA_AC_CFG_STRUC;
+#endif
+
+#define EDCA_TID_AC_MAP	0x1310
+#define TX_PWR_CFG_0	0x1314
+#define TX_PWR_CFG_1	0x1318
+#define TX_PWR_CFG_2	0x131C
+#define TX_PWR_CFG_3	0x1320
+#define TX_PWR_CFG_4	0x1324
+#define TX_PIN_CFG		0x1328		 
+#define TX_BAND_CFG	0x132c		// 0x1 use upper 20MHz. 0 juse lower 20MHz
+#define TX_SW_CFG0		0x1330
+#define TX_SW_CFG1		0x1334
+#define TX_SW_CFG2		0x1338
+#define TXOP_THRES_CFG		0x133c
+#define TXOP_CTRL_CFG		0x1340
+#define TX_RTS_CFG		0x1344
+
+#ifdef RT_BIG_ENDIAN
+typedef	union	_TX_RTS_CFG_STRUC	{
+	struct	{
+	    UINT32       rsv:7;     
+	    UINT32       RtsFbkEn:1;    // enable rts rate fallback
+	    UINT32       RtsThres:16;    // unit:byte
+	    UINT32       AutoRtsRetryLimit:8;
+	}	field;
+	UINT32			word;
+}	TX_RTS_CFG_STRUC, *PTX_RTS_CFG_STRUC;
+#else
+typedef	union	_TX_RTS_CFG_STRUC	{
+	struct	{
+	    UINT32       AutoRtsRetryLimit:8;
+	    UINT32       RtsThres:16;    // unit:byte
+	    UINT32       RtsFbkEn:1;    // enable rts rate fallback
+	    UINT32       rsv:7;     // 1: HT non-STBC control frame enable
+	}	field;
+	UINT32			word;
+}	TX_RTS_CFG_STRUC, *PTX_RTS_CFG_STRUC;
+#endif
+#define TX_TIMEOUT_CFG	0x1348
+#ifdef RT_BIG_ENDIAN
+typedef	union	_TX_TIMEOUT_CFG_STRUC	{
+	struct	{
+	    UINT32       rsv2:8;     
+	    UINT32       TxopTimeout:8;	//TXOP timeout value for TXOP truncation.  It is recommended that (SLOT_TIME) > (TX_OP_TIMEOUT) > (RX_ACK_TIMEOUT)
+	    UINT32       RxAckTimeout:8;	// unit:slot. Used for TX precedure
+	    UINT32       MpduLifeTime:4;    //  expiration time = 2^(9+MPDU LIFE TIME)  us
+	    UINT32       rsv:4;     
+	}	field;
+	UINT32			word;
+}	TX_TIMEOUT_CFG_STRUC, *PTX_TIMEOUT_CFG_STRUC;
+#else
+typedef	union	_TX_TIMEOUT_CFG_STRUC	{
+	struct	{
+	    UINT32       rsv:4;     
+	    UINT32       MpduLifeTime:4;    //  expiration time = 2^(9+MPDU LIFE TIME)  us
+	    UINT32       RxAckTimeout:8;	// unit:slot. Used for TX precedure
+	    UINT32       TxopTimeout:8;	//TXOP timeout value for TXOP truncation.  It is recommended that (SLOT_TIME) > (TX_OP_TIMEOUT) > (RX_ACK_TIMEOUT)
+	    UINT32       rsv2:8;     // 1: HT non-STBC control frame enable
+	}	field;
+	UINT32			word;
+}	TX_TIMEOUT_CFG_STRUC, *PTX_TIMEOUT_CFG_STRUC;
+#endif
+#define TX_RTY_CFG	0x134c
+#ifdef RT_BIG_ENDIAN
+typedef	union GNU_PACKED _TX_RTY_CFG_STRUC	{
+	struct	{
+	    UINT32       rsv:1;     
+	    UINT32       TxautoFBEnable:1;    // Tx retry PHY rate auto fallback enable
+	    UINT32       AggRtyMode:1;	// Aggregate MPDU retry mode.  0:expired by retry limit, 1: expired by mpdu life timer
+	    UINT32       NonAggRtyMode:1;	// Non-Aggregate MPDU retry mode.  0:expired by retry limit, 1: expired by mpdu life timer
+	    UINT32       LongRtyThre:12;	// Long retry threshoold
+	    UINT32       LongRtyLimit:8;	//long retry limit
+	    UINT32       ShortRtyLimit:8;	//  short retry limit
+	    
+	}	field;
+	UINT32			word;
+}	TX_RTY_CFG_STRUC, *PTX_RTY_CFG_STRUC;
+#else
+typedef	union GNU_PACKED _TX_RTY_CFG_STRUC	{
+	struct	{
+	    UINT32       ShortRtyLimit:8;	//  short retry limit
+	    UINT32       LongRtyLimit:8;	//long retry limit
+	    UINT32       LongRtyThre:12;	// Long retry threshoold
+	    UINT32       NonAggRtyMode:1;	// Non-Aggregate MPDU retry mode.  0:expired by retry limit, 1: expired by mpdu life timer
+	    UINT32       AggRtyMode:1;	// Aggregate MPDU retry mode.  0:expired by retry limit, 1: expired by mpdu life timer
+	    UINT32       TxautoFBEnable:1;    // Tx retry PHY rate auto fallback enable
+	    UINT32       rsv:1;     // 1: HT non-STBC control frame enable
+	}	field;
+	UINT32			word;
+}	TX_RTY_CFG_STRUC, *PTX_RTY_CFG_STRUC;
+#endif
+#define TX_LINK_CFG	0x1350
+#ifdef RT_BIG_ENDIAN
+typedef	union	GNU_PACKED _TX_LINK_CFG_STRUC	{
+	struct GNU_PACKED {
+	    UINT32       RemotMFS:8;	//remote MCS feedback sequence number     
+	    UINT32       RemotMFB:8;    //  remote MCS feedback
+	    UINT32       rsv:3;	//  
+	    UINT32       TxCFAckEn:1;	//   Piggyback CF-ACK enable
+	    UINT32       TxRDGEn:1;	// RDG TX enable 
+	    UINT32       TxMRQEn:1;	//  MCS request TX enable
+	    UINT32       RemoteUMFSEnable:1;	//  remote unsolicit  MFB enable.  0: not apply remote remote unsolicit (MFS=7)
+	    UINT32       MFBEnable:1;	//  TX apply remote MFB 1:enable
+	    UINT32       RemoteMFBLifeTime:8;	//remote MFB life time. unit : 32us
+	}	field;
+	UINT32			word;
+}	TX_LINK_CFG_STRUC, *PTX_LINK_CFG_STRUC;
+#else
+typedef	union	GNU_PACKED _TX_LINK_CFG_STRUC	{
+	struct GNU_PACKED {
+	    UINT32       RemoteMFBLifeTime:8;	//remote MFB life time. unit : 32us
+	    UINT32       MFBEnable:1;	//  TX apply remote MFB 1:enable
+	    UINT32       RemoteUMFSEnable:1;	//  remote unsolicit  MFB enable.  0: not apply remote remote unsolicit (MFS=7)
+	    UINT32       TxMRQEn:1;	//  MCS request TX enable
+	    UINT32       TxRDGEn:1;	// RDG TX enable 
+	    UINT32       TxCFAckEn:1;	//   Piggyback CF-ACK enable
+	    UINT32       rsv:3;	//  
+	    UINT32       RemotMFB:8;    //  remote MCS feedback
+	    UINT32       RemotMFS:8;	//remote MCS feedback sequence number     
+	}	field;
+	UINT32			word;
+}	TX_LINK_CFG_STRUC, *PTX_LINK_CFG_STRUC;
+#endif
+#define HT_FBK_CFG0	0x1354
+#ifdef RT_BIG_ENDIAN
+typedef	union GNU_PACKED _HT_FBK_CFG0_STRUC	{
+	struct	{
+	    UINT32       HTMCS7FBK:4;
+	    UINT32       HTMCS6FBK:4;
+	    UINT32       HTMCS5FBK:4;
+	    UINT32       HTMCS4FBK:4;
+	    UINT32       HTMCS3FBK:4;
+	    UINT32       HTMCS2FBK:4;
+	    UINT32       HTMCS1FBK:4;
+	    UINT32       HTMCS0FBK:4;
+	}	field;
+	UINT32			word;
+}	HT_FBK_CFG0_STRUC, *PHT_FBK_CFG0_STRUC;
+#else
+typedef	union GNU_PACKED _HT_FBK_CFG0_STRUC	{
+	struct	{
+	    UINT32       HTMCS0FBK:4;
+	    UINT32       HTMCS1FBK:4;
+	    UINT32       HTMCS2FBK:4;
+	    UINT32       HTMCS3FBK:4;
+	    UINT32       HTMCS4FBK:4;
+	    UINT32       HTMCS5FBK:4;
+	    UINT32       HTMCS6FBK:4;
+	    UINT32       HTMCS7FBK:4;
+	}	field;
+	UINT32			word;
+}	HT_FBK_CFG0_STRUC, *PHT_FBK_CFG0_STRUC;
+#endif
+#define HT_FBK_CFG1	0x1358
+#ifdef RT_BIG_ENDIAN
+typedef	union	_HT_FBK_CFG1_STRUC	{
+	struct	{
+	    UINT32       HTMCS15FBK:4;
+	    UINT32       HTMCS14FBK:4;
+	    UINT32       HTMCS13FBK:4;
+	    UINT32       HTMCS12FBK:4;
+	    UINT32       HTMCS11FBK:4;
+	    UINT32       HTMCS10FBK:4;
+	    UINT32       HTMCS9FBK:4;
+	    UINT32       HTMCS8FBK:4;
+	}	field;
+	UINT32			word;
+}	HT_FBK_CFG1_STRUC, *PHT_FBK_CFG1_STRUC;
+#else
+typedef	union	_HT_FBK_CFG1_STRUC	{
+	struct	{
+	    UINT32       HTMCS8FBK:4;
+	    UINT32       HTMCS9FBK:4;
+	    UINT32       HTMCS10FBK:4;
+	    UINT32       HTMCS11FBK:4;
+	    UINT32       HTMCS12FBK:4;
+	    UINT32       HTMCS13FBK:4;
+	    UINT32       HTMCS14FBK:4;
+	    UINT32       HTMCS15FBK:4;
+	}	field;
+	UINT32			word;
+}	HT_FBK_CFG1_STRUC, *PHT_FBK_CFG1_STRUC;
+#endif
+#define LG_FBK_CFG0	0x135c
+#ifdef RT_BIG_ENDIAN
+typedef	union	_LG_FBK_CFG0_STRUC	{
+	struct	{
+	    UINT32       OFDMMCS7FBK:4;	//initial value is 6
+	    UINT32       OFDMMCS6FBK:4;	//initial value is 5
+	    UINT32       OFDMMCS5FBK:4;	//initial value is 4
+	    UINT32       OFDMMCS4FBK:4;	//initial value is 3
+	    UINT32       OFDMMCS3FBK:4;	//initial value is 2
+	    UINT32       OFDMMCS2FBK:4;	//initial value is 1
+	    UINT32       OFDMMCS1FBK:4;	//initial value is 0
+	    UINT32       OFDMMCS0FBK:4;	//initial value is 0
+	}	field;
+	UINT32			word;
+}	LG_FBK_CFG0_STRUC, *PLG_FBK_CFG0_STRUC;
+#else
+typedef	union	_LG_FBK_CFG0_STRUC	{
+	struct	{
+	    UINT32       OFDMMCS0FBK:4;	//initial value is 0
+	    UINT32       OFDMMCS1FBK:4;	//initial value is 0
+	    UINT32       OFDMMCS2FBK:4;	//initial value is 1
+	    UINT32       OFDMMCS3FBK:4;	//initial value is 2
+	    UINT32       OFDMMCS4FBK:4;	//initial value is 3
+	    UINT32       OFDMMCS5FBK:4;	//initial value is 4
+	    UINT32       OFDMMCS6FBK:4;	//initial value is 5
+	    UINT32       OFDMMCS7FBK:4;	//initial value is 6
+	}	field;
+	UINT32			word;
+}	LG_FBK_CFG0_STRUC, *PLG_FBK_CFG0_STRUC;
+#endif
+#define LG_FBK_CFG1		0x1360
+#ifdef RT_BIG_ENDIAN
+typedef	union	_LG_FBK_CFG1_STRUC	{
+	struct	{
+	    UINT32       rsv:16;	 
+	    UINT32       CCKMCS3FBK:4;	//initial value is 2
+	    UINT32       CCKMCS2FBK:4;	//initial value is 1
+	    UINT32       CCKMCS1FBK:4;	//initial value is 0
+	    UINT32       CCKMCS0FBK:4;	//initial value is 0
+	}	field;
+	UINT32			word;
+}	LG_FBK_CFG1_STRUC, *PLG_FBK_CFG1_STRUC;
+#else
+typedef	union	_LG_FBK_CFG1_STRUC	{
+	struct	{
+	    UINT32       CCKMCS0FBK:4;	//initial value is 0
+	    UINT32       CCKMCS1FBK:4;	//initial value is 0
+	    UINT32       CCKMCS2FBK:4;	//initial value is 1
+	    UINT32       CCKMCS3FBK:4;	//initial value is 2
+	    UINT32       rsv:16;	 
+	}	field;
+	UINT32			word;
+}	LG_FBK_CFG1_STRUC, *PLG_FBK_CFG1_STRUC;
+#endif
+
+
+//=======================================================
+//================ Protection Paramater================================
+//=======================================================
+#define CCK_PROT_CFG	0x1364		//CCK Protection
+#define ASIC_SHORTNAV		1
+#define ASIC_LONGNAV		2
+#define ASIC_RTS		1
+#define ASIC_CTS		2
+#ifdef RT_BIG_ENDIAN
+typedef	union	_PROT_CFG_STRUC	{
+	struct	{
+	    UINT32       rsv:5;	 
+	    UINT32       RTSThEn:1;	//RTS threshold enable on CCK TX
+	    UINT32       TxopAllowGF40:1;	//CCK TXOP allowance.0:disallow.
+	    UINT32       TxopAllowGF20:1;	//CCK TXOP allowance.0:disallow.
+	    UINT32       TxopAllowMM40:1;	//CCK TXOP allowance.0:disallow.
+	    UINT32       TxopAllowMM20:1;	//CCK TXOP allowance. 0:disallow.
+	    UINT32       TxopAllowOfdm:1;	//CCK TXOP allowance.0:disallow.
+	    UINT32       TxopAllowCck:1;	//CCK TXOP allowance.0:disallow.
+	    UINT32       ProtectNav:2;	//TXOP protection type for CCK TX. 0:None, 1:ShortNAVprotect,  2:LongNAVProtect, 3:rsv
+	    UINT32       ProtectCtrl:2;	//Protection control frame type for CCK TX. 1:RTS/CTS, 2:CTS-to-self, 0:None, 3:rsv
+	    UINT32       ProtectRate:16;	//Protection control frame rate for CCK TX(RTS/CTS/CFEnd). 
+	}	field;
+	UINT32			word;
+}	PROT_CFG_STRUC, *PPROT_CFG_STRUC;
+#else
+typedef	union	_PROT_CFG_STRUC	{
+	struct	{
+	    UINT32       ProtectRate:16;	//Protection control frame rate for CCK TX(RTS/CTS/CFEnd). 
+	    UINT32       ProtectCtrl:2;	//Protection control frame type for CCK TX. 1:RTS/CTS, 2:CTS-to-self, 0:None, 3:rsv
+	    UINT32       ProtectNav:2;	//TXOP protection type for CCK TX. 0:None, 1:ShortNAVprotect,  2:LongNAVProtect, 3:rsv
+	    UINT32       TxopAllowCck:1;	//CCK TXOP allowance.0:disallow.
+	    UINT32       TxopAllowOfdm:1;	//CCK TXOP allowance.0:disallow.
+	    UINT32       TxopAllowMM20:1;	//CCK TXOP allowance. 0:disallow.
+	    UINT32       TxopAllowMM40:1;	//CCK TXOP allowance.0:disallow.
+	    UINT32       TxopAllowGF20:1;	//CCK TXOP allowance.0:disallow.
+	    UINT32       TxopAllowGF40:1;	//CCK TXOP allowance.0:disallow.
+	    UINT32       RTSThEn:1;	//RTS threshold enable on CCK TX
+	    UINT32       rsv:5;	 
+	}	field;
+	UINT32			word;
+}	PROT_CFG_STRUC, *PPROT_CFG_STRUC;
+#endif
+
+#define OFDM_PROT_CFG	0x1368		//OFDM Protection
+#define MM20_PROT_CFG	0x136C		//MM20 Protection
+#define MM40_PROT_CFG	0x1370		//MM40 Protection
+#define GF20_PROT_CFG	0x1374		//GF20 Protection
+#define GF40_PROT_CFG	0x1378		//GR40 Protection
+#define EXP_CTS_TIME	0x137C		// 
+#define EXP_ACK_TIME	0x1380		// 
+
+//
+//  4.4 MAC RX configuration registers (offset:0x1400)
+//
+#define RX_FILTR_CFG	0x1400			//TXRX_CSR0
+#define AUTO_RSP_CFG	0x1404			//TXRX_CSR4
+//
+// TXRX_CSR4: Auto-Responder/
+//
+#ifdef RT_BIG_ENDIAN
+typedef union _AUTO_RSP_CFG_STRUC {
+ struct {
+     UINT32        :24;    
+     UINT32       AckCtsPsmBit:1;   // Power bit value in conrtrol frame
+     UINT32       DualCTSEn:1;   // Power bit value in conrtrol frame
+     UINT32       rsv:1;   // Power bit value in conrtrol frame
+     UINT32       AutoResponderPreamble:1;    // 0:long, 1:short preamble
+     UINT32       CTS40MRef:1;  // Response CTS 40MHz duplicate mode
+     UINT32       CTS40MMode:1;  // Response CTS 40MHz duplicate mode
+     UINT32       BACAckPolicyEnable:1;    // 0:long, 1:short preamble
+     UINT32       AutoResponderEnable:1;
+ } field;
+ UINT32   word;
+} AUTO_RSP_CFG_STRUC, *PAUTO_RSP_CFG_STRUC;
+#else
+typedef union _AUTO_RSP_CFG_STRUC {
+ struct {
+     UINT32       AutoResponderEnable:1;
+     UINT32       BACAckPolicyEnable:1;    // 0:long, 1:short preamble
+     UINT32       CTS40MMode:1;  // Response CTS 40MHz duplicate mode
+     UINT32       CTS40MRef:1;  // Response CTS 40MHz duplicate mode
+     UINT32       AutoResponderPreamble:1;    // 0:long, 1:short preamble
+     UINT32       rsv:1;   // Power bit value in conrtrol frame
+     UINT32       DualCTSEn:1;   // Power bit value in conrtrol frame
+     UINT32       AckCtsPsmBit:1;   // Power bit value in conrtrol frame
+     UINT32        :24;    
+ } field;
+ UINT32   word;
+} AUTO_RSP_CFG_STRUC, *PAUTO_RSP_CFG_STRUC;
+#endif
+
+#define LEGACY_BASIC_RATE	0x1408	//  TXRX_CSR5           0x3054
+#define HT_BASIC_RATE		0x140c
+#define HT_CTRL_CFG		0x1410
+#define SIFS_COST_CFG		0x1414
+#define RX_PARSER_CFG		0x1418	//Set NAV for all received frames
+
+//
+//  4.5 MAC Security configuration (offset:0x1500)
+//
+#define TX_SEC_CNT0		0x1500		//
+#define RX_SEC_CNT0		0x1504		//
+#define CCMP_FC_MUTE		0x1508		//
+//
+//  4.6 HCCA/PSMP (offset:0x1600)
+//
+#define TXOP_HLDR_ADDR0		0x1600		 
+#define TXOP_HLDR_ADDR1		0x1604		 
+#define TXOP_HLDR_ET		0x1608		 
+#define QOS_CFPOLL_RA_DW0		0x160c
+#define QOS_CFPOLL_A1_DW1		0x1610
+#define QOS_CFPOLL_QC		0x1614
+//
+//  4.7 MAC Statistis registers (offset:0x1700)
+//
+#define RX_STA_CNT0		0x1700		//
+#define RX_STA_CNT1		0x1704		//
+#define RX_STA_CNT2		0x1708		//
+
+//
+// RX_STA_CNT0_STRUC: RX PLCP error count & RX CRC error count
+//
+#ifdef RT_BIG_ENDIAN
+typedef	union	_RX_STA_CNT0_STRUC	{
+	struct	{
+	    USHORT  PhyErr;
+	    USHORT  CrcErr;
+	}	field;
+	UINT32			word;
+}	RX_STA_CNT0_STRUC, *PRX_STA_CNT0_STRUC;
+#else
+typedef	union	_RX_STA_CNT0_STRUC	{
+	struct	{
+	    USHORT  CrcErr;
+	    USHORT  PhyErr;
+	}	field;
+	UINT32			word;
+}	RX_STA_CNT0_STRUC, *PRX_STA_CNT0_STRUC;
+#endif
+
+//
+// RX_STA_CNT1_STRUC: RX False CCA count & RX LONG frame count
+//
+#ifdef RT_BIG_ENDIAN
+typedef	union	_RX_STA_CNT1_STRUC	{
+	struct	{
+	    USHORT  PlcpErr;
+	    USHORT  FalseCca;
+	}	field;
+	UINT32			word;
+}	RX_STA_CNT1_STRUC, *PRX_STA_CNT1_STRUC;
+#else
+typedef	union	_RX_STA_CNT1_STRUC	{
+	struct	{
+	    USHORT  FalseCca;
+	    USHORT  PlcpErr;
+	}	field;
+	UINT32			word;
+}	RX_STA_CNT1_STRUC, *PRX_STA_CNT1_STRUC;
+#endif
+
+//
+// RX_STA_CNT2_STRUC: 
+//
+#ifdef RT_BIG_ENDIAN
+typedef	union	_RX_STA_CNT2_STRUC	{
+	struct	{
+	    USHORT  RxFifoOverflowCount;
+	    USHORT  RxDupliCount;
+	}	field;
+	UINT32			word;
+}	RX_STA_CNT2_STRUC, *PRX_STA_CNT2_STRUC;
+#else
+typedef	union	_RX_STA_CNT2_STRUC	{
+	struct	{
+	    USHORT  RxDupliCount;
+	    USHORT  RxFifoOverflowCount;
+	}	field;
+	UINT32			word;
+}	RX_STA_CNT2_STRUC, *PRX_STA_CNT2_STRUC;
+#endif
+#define TX_STA_CNT0		0x170C		//
+//
+// STA_CSR3: TX Beacon count
+//
+#ifdef RT_BIG_ENDIAN
+typedef	union	_TX_STA_CNT0_STRUC	{
+	struct	{
+	    USHORT  TxBeaconCount;
+	    USHORT  TxFailCount;
+	}	field;
+	UINT32			word;
+}	TX_STA_CNT0_STRUC, *PTX_STA_CNT0_STRUC;
+#else
+typedef	union	_TX_STA_CNT0_STRUC	{
+	struct	{
+	    USHORT  TxFailCount;
+	    USHORT  TxBeaconCount;
+	}	field;
+	UINT32			word;
+}	TX_STA_CNT0_STRUC, *PTX_STA_CNT0_STRUC;
+#endif
+#define TX_STA_CNT1		0x1710		//
+//
+// TX_STA_CNT1: TX tx count
+//
+#ifdef RT_BIG_ENDIAN
+typedef	union	_TX_STA_CNT1_STRUC	{
+	struct	{
+	    USHORT  TxRetransmit;
+	    USHORT  TxSuccess;
+	}	field;
+	UINT32			word;
+}	TX_STA_CNT1_STRUC, *PTX_STA_CNT1_STRUC;
+#else
+typedef	union	_TX_STA_CNT1_STRUC	{
+	struct	{
+	    USHORT  TxSuccess;
+	    USHORT  TxRetransmit;
+	}	field;
+	UINT32			word;
+}	TX_STA_CNT1_STRUC, *PTX_STA_CNT1_STRUC;
+#endif
+#define TX_STA_CNT2		0x1714		//
+//
+// TX_STA_CNT2: TX tx count
+//
+#ifdef RT_BIG_ENDIAN
+typedef	union	_TX_STA_CNT2_STRUC	{
+	struct	{
+	    USHORT  TxUnderFlowCount;
+	    USHORT  TxZeroLenCount;
+	}	field;
+	UINT32			word;
+}	TX_STA_CNT2_STRUC, *PTX_STA_CNT2_STRUC;
+#else
+typedef	union	_TX_STA_CNT2_STRUC	{
+	struct	{
+	    USHORT  TxZeroLenCount;
+	    USHORT  TxUnderFlowCount;
+	}	field;
+	UINT32			word;
+}	TX_STA_CNT2_STRUC, *PTX_STA_CNT2_STRUC;
+#endif
+#define TX_STA_FIFO		0x1718		//
+//
+// TX_STA_FIFO_STRUC: TX Result for specific PID status fifo register
+//
+#ifdef RT_BIG_ENDIAN
+typedef	union GNU_PACKED _TX_STA_FIFO_STRUC	{
+	struct	{
+		UINT32		Reserve:2;
+		UINT32		TxBF:1; // 3*3
+		UINT32		SuccessRate:13;	//include MCS, mode ,shortGI, BW settingSame format as TXWI Word 0 Bit 31-16. 
+//		UINT32		SuccessRate:16;	//include MCS, mode ,shortGI, BW settingSame format as TXWI Word 0 Bit 31-16. 
+		UINT32		wcid:8;		//wireless client index
+		UINT32       	TxAckRequired:1;    // ack required
+		UINT32       	TxAggre:1;    // Tx is aggregated
+		UINT32       	TxSuccess:1;   // Tx success. whether success or not
+		UINT32       	PidType:4;
+		UINT32       	bValid:1;   // 1:This register contains a valid TX result
+	}	field;
+	UINT32			word;
+}	TX_STA_FIFO_STRUC, *PTX_STA_FIFO_STRUC;
+#else
+typedef	union GNU_PACKED _TX_STA_FIFO_STRUC	{
+	struct	{
+		UINT32       	bValid:1;   // 1:This register contains a valid TX result
+		UINT32       	PidType:4;
+		UINT32       	TxSuccess:1;   // Tx No retry success
+		UINT32       	TxAggre:1;    // Tx Retry Success
+		UINT32       	TxAckRequired:1;    // Tx fail
+		UINT32		wcid:8;		//wireless client index
+//		UINT32		SuccessRate:16;	//include MCS, mode ,shortGI, BW settingSame format as TXWI Word 0 Bit 31-16. 
+		UINT32		SuccessRate:13;	//include MCS, mode ,shortGI, BW settingSame format as TXWI Word 0 Bit 31-16. 
+		UINT32		TxBF:1;
+		UINT32		Reserve:2;
+	}	field;
+	UINT32			word;
+}	TX_STA_FIFO_STRUC, *PTX_STA_FIFO_STRUC;
+#endif
+// Debug counter
+#define TX_AGG_CNT	0x171c
+#ifdef RT_BIG_ENDIAN
+typedef	union	_TX_AGG_CNT_STRUC	{
+	struct	{
+	    USHORT  AggTxCount;
+	    USHORT  NonAggTxCount;
+	}	field;
+	UINT32			word;
+}	TX_AGG_CNT_STRUC, *PTX_AGG_CNT_STRUC;
+#else
+typedef	union	_TX_AGG_CNT_STRUC	{
+	struct	{
+	    USHORT  NonAggTxCount;
+	    USHORT  AggTxCount;
+	}	field;
+	UINT32			word;
+}	TX_AGG_CNT_STRUC, *PTX_AGG_CNT_STRUC;
+#endif
+// Debug counter
+#define TX_AGG_CNT0	0x1720
+#ifdef RT_BIG_ENDIAN
+typedef	union	_TX_AGG_CNT0_STRUC	{
+	struct	{
+	    USHORT  AggSize2Count;
+	    USHORT  AggSize1Count;
+	}	field;
+	UINT32			word;
+}	TX_AGG_CNT0_STRUC, *PTX_AGG_CNT0_STRUC;
+#else
+typedef	union	_TX_AGG_CNT0_STRUC	{
+	struct	{
+	    USHORT  AggSize1Count;
+	    USHORT  AggSize2Count;
+	}	field;
+	UINT32			word;
+}	TX_AGG_CNT0_STRUC, *PTX_AGG_CNT0_STRUC;
+#endif
+// Debug counter
+#define TX_AGG_CNT1	0x1724
+#ifdef RT_BIG_ENDIAN
+typedef	union	_TX_AGG_CNT1_STRUC	{
+	struct	{
+	    USHORT  AggSize4Count;
+	    USHORT  AggSize3Count;
+	}	field;
+	UINT32			word;
+}	TX_AGG_CNT1_STRUC, *PTX_AGG_CNT1_STRUC;
+#else
+typedef	union	_TX_AGG_CNT1_STRUC	{
+	struct	{
+	    USHORT  AggSize3Count;
+	    USHORT  AggSize4Count;
+	}	field;
+	UINT32			word;
+}	TX_AGG_CNT1_STRUC, *PTX_AGG_CNT1_STRUC;
+#endif
+#define TX_AGG_CNT2	0x1728
+#ifdef RT_BIG_ENDIAN
+typedef	union	_TX_AGG_CNT2_STRUC	{
+	struct	{
+	    USHORT  AggSize6Count;
+	    USHORT  AggSize5Count;
+	}	field;
+	UINT32			word;
+}	TX_AGG_CNT2_STRUC, *PTX_AGG_CNT2_STRUC;
+#else
+typedef	union	_TX_AGG_CNT2_STRUC	{
+	struct	{
+	    USHORT  AggSize5Count;
+	    USHORT  AggSize6Count;
+	}	field;
+	UINT32			word;
+}	TX_AGG_CNT2_STRUC, *PTX_AGG_CNT2_STRUC;
+#endif
+// Debug counter
+#define TX_AGG_CNT3	0x172c
+#ifdef RT_BIG_ENDIAN
+typedef	union	_TX_AGG_CNT3_STRUC	{
+	struct	{
+	    USHORT  AggSize8Count;
+	    USHORT  AggSize7Count;
+	}	field;
+	UINT32			word;
+}	TX_AGG_CNT3_STRUC, *PTX_AGG_CNT3_STRUC;
+#else
+typedef	union	_TX_AGG_CNT3_STRUC	{
+	struct	{
+	    USHORT  AggSize7Count;
+	    USHORT  AggSize8Count;
+	}	field;
+	UINT32			word;
+}	TX_AGG_CNT3_STRUC, *PTX_AGG_CNT3_STRUC;
+#endif
+// Debug counter
+#define TX_AGG_CNT4	0x1730
+#ifdef RT_BIG_ENDIAN
+typedef	union	_TX_AGG_CNT4_STRUC	{
+	struct	{
+	    USHORT  AggSize10Count;
+	    USHORT  AggSize9Count;
+	}	field;
+	UINT32			word;
+}	TX_AGG_CNT4_STRUC, *PTX_AGG_CNT4_STRUC;
+#else
+typedef	union	_TX_AGG_CNT4_STRUC	{
+	struct	{
+	    USHORT  AggSize9Count;
+	    USHORT  AggSize10Count;
+	}	field;
+	UINT32			word;
+}	TX_AGG_CNT4_STRUC, *PTX_AGG_CNT4_STRUC;
+#endif
+#define TX_AGG_CNT5	0x1734
+#ifdef RT_BIG_ENDIAN
+typedef	union	_TX_AGG_CNT5_STRUC	{
+	struct	{
+	    USHORT  AggSize12Count;
+	    USHORT  AggSize11Count;
+	}	field;
+	UINT32			word;
+}	TX_AGG_CNT5_STRUC, *PTX_AGG_CNT5_STRUC;
+#else
+typedef	union	_TX_AGG_CNT5_STRUC	{
+	struct	{
+	    USHORT  AggSize11Count;
+	    USHORT  AggSize12Count;
+	}	field;
+	UINT32			word;
+}	TX_AGG_CNT5_STRUC, *PTX_AGG_CNT5_STRUC;
+#endif
+#define TX_AGG_CNT6		0x1738
+#ifdef RT_BIG_ENDIAN
+typedef	union	_TX_AGG_CNT6_STRUC	{
+	struct	{
+	    USHORT  AggSize14Count;
+	    USHORT  AggSize13Count;
+	}	field;
+	UINT32			word;
+}	TX_AGG_CNT6_STRUC, *PTX_AGG_CNT6_STRUC;
+#else
+typedef	union	_TX_AGG_CNT6_STRUC	{
+	struct	{
+	    USHORT  AggSize13Count;
+	    USHORT  AggSize14Count;
+	}	field;
+	UINT32			word;
+}	TX_AGG_CNT6_STRUC, *PTX_AGG_CNT6_STRUC;
+#endif
+#define TX_AGG_CNT7		0x173c
+#ifdef RT_BIG_ENDIAN
+typedef	union	_TX_AGG_CNT7_STRUC	{
+	struct	{
+	    USHORT  AggSize16Count;
+	    USHORT  AggSize15Count;
+	}	field;
+	UINT32			word;
+}	TX_AGG_CNT7_STRUC, *PTX_AGG_CNT7_STRUC;
+#else
+typedef	union	_TX_AGG_CNT7_STRUC	{
+	struct	{
+	    USHORT  AggSize15Count;
+	    USHORT  AggSize16Count;
+	}	field;
+	UINT32			word;
+}	TX_AGG_CNT7_STRUC, *PTX_AGG_CNT7_STRUC;
+#endif
+#define MPDU_DENSITY_CNT		0x1740
+#ifdef RT_BIG_ENDIAN
+typedef	union	_MPDU_DEN_CNT_STRUC	{
+	struct	{
+	    USHORT  RXZeroDelCount;	//RX zero length delimiter count
+	    USHORT  TXZeroDelCount;	//TX zero length delimiter count
+	}	field;
+	UINT32			word;
+}	MPDU_DEN_CNT_STRUC, *PMPDU_DEN_CNT_STRUC;
+#else
+typedef	union	_MPDU_DEN_CNT_STRUC	{
+	struct	{
+	    USHORT  TXZeroDelCount;	//TX zero length delimiter count
+	    USHORT  RXZeroDelCount;	//RX zero length delimiter count
+	}	field;
+	UINT32			word;
+}	MPDU_DEN_CNT_STRUC, *PMPDU_DEN_CNT_STRUC;
+#endif
+//
+// TXRX control registers - base address 0x3000
+//
+// rt2860b  UNKNOWN reg use R/O Reg Addr 0x77d0 first..
+#define TXRX_CSR1           0x77d0
+
+//
+// Security key table memory, base address = 0x1000
+//
+#define MAC_WCID_BASE		0x1800 //8-bytes(use only 6-bytes) * 256 entry = 
+#define HW_WCID_ENTRY_SIZE   8
+#define PAIRWISE_KEY_TABLE_BASE     0x4000      // 32-byte * 256-entry =  -byte
+#define HW_KEY_ENTRY_SIZE           0x20
+#define PAIRWISE_IVEIV_TABLE_BASE     0x6000      // 8-byte * 256-entry =  -byte
+#define MAC_IVEIV_TABLE_BASE     0x6000      // 8-byte * 256-entry =  -byte
+#define HW_IVEIV_ENTRY_SIZE   8
+#define MAC_WCID_ATTRIBUTE_BASE     0x6800      // 4-byte * 256-entry =  -byte
+#define HW_WCID_ATTRI_SIZE   4
+#define WCID_RESERVED          		0x6bfc 
+#define SHARED_KEY_TABLE_BASE       0x6c00      // 32-byte * 16-entry = 512-byte
+#define SHARED_KEY_MODE_BASE       0x7000      // 32-byte * 16-entry = 512-byte
+#define HW_SHARED_KEY_MODE_SIZE   4
+#define SHAREDKEYTABLE			0
+#define PAIRWISEKEYTABLE			1
+
+/* This resgiser is ONLY be supported for RT3883 or later.
+   It conflicted with BCN#0 offset of previous chipset. */
+#define WAPI_PN_TABLE_BASE			0x7800		
+#define WAPI_PN_ENTRY_SIZE   		8
+
+#ifdef RT_BIG_ENDIAN
+typedef	union	_SHAREDKEY_MODE_STRUC	{
+	struct	{
+		UINT32       Bss1Key3CipherAlg:4;
+		UINT32       Bss1Key2CipherAlg:4;
+		UINT32       Bss1Key1CipherAlg:4;
+		UINT32       Bss1Key0CipherAlg:4;
+		UINT32       Bss0Key3CipherAlg:4;
+		UINT32       Bss0Key2CipherAlg:4;
+		UINT32       Bss0Key1CipherAlg:4;
+		UINT32       Bss0Key0CipherAlg:4;
+	}	field;
+	UINT32			word;
+}	SHAREDKEY_MODE_STRUC, *PSHAREDKEY_MODE_STRUC;
+#else
+typedef	union	_SHAREDKEY_MODE_STRUC	{
+	struct	{
+		UINT32       Bss0Key0CipherAlg:4;
+		UINT32       Bss0Key1CipherAlg:4;
+		UINT32       Bss0Key2CipherAlg:4;
+		UINT32       Bss0Key3CipherAlg:4;
+		UINT32       Bss1Key0CipherAlg:4;
+		UINT32       Bss1Key1CipherAlg:4;
+		UINT32       Bss1Key2CipherAlg:4;
+		UINT32       Bss1Key3CipherAlg:4;
+	}	field;
+	UINT32			word;
+}	SHAREDKEY_MODE_STRUC, *PSHAREDKEY_MODE_STRUC;
+#endif
+// 64-entry for pairwise key table
+typedef struct _HW_WCID_ENTRY {  // 8-byte per entry
+    UCHAR   Address[6];
+    UCHAR   Rsv[2];
+} HW_WCID_ENTRY, PHW_WCID_ENTRY;
+
+
+// =================================================================================
+// WCID  format
+// =================================================================================
+//7.1	WCID  ENTRY  format  : 8bytes
+typedef	struct	_WCID_ENTRY_STRUC {
+	UCHAR		RXBABitmap7;    // bit0 for TID8, bit7 for TID 15
+	UCHAR		RXBABitmap0;    // bit0 for TID0, bit7 for TID 7
+	UCHAR		MAC[6];	// 0 for shared key table.  1 for pairwise key table
+}	WCID_ENTRY_STRUC, *PWCID_ENTRY_STRUC;
+
+//8.1.1	SECURITY  KEY  format  : 8DW
+// 32-byte per entry, total 16-entry for shared key table, 64-entry for pairwise key table
+typedef struct _HW_KEY_ENTRY {          // 32-byte per entry
+    UCHAR   Key[16];
+    UCHAR   TxMic[8];
+    UCHAR   RxMic[8];
+} HW_KEY_ENTRY, *PHW_KEY_ENTRY; 
+
+//8.1.2	IV/EIV  format  : 2DW
+
+// RX attribute entry format  : 1DW
+#ifdef RT_BIG_ENDIAN
+typedef	union	_WCID_ATTRIBUTE_STRUC {
+	struct {
+		UINT32		WAPIKeyIdx:8;
+		UINT32		WAPI_rsv:8;
+		UINT32		WAPI_MCBC:1;
+		UINT32		rsv:3;
+		UINT32		BSSIdxExt:1;
+		UINT32		PairKeyModeExt:1;
+		UINT32		RXWIUDF:3;
+		UINT32		BSSIdx:3; //multipleBSS index for the WCID
+		UINT32		PairKeyMode:3;
+		UINT32		KeyTab:1;	// 0 for shared key table.  1 for pairwise key table
+	}   field;
+    UINT32           word;
+}	WCID_ATTRIBUTE_STRUC, *PWCID_ATTRIBUTE_STRUC;
+#else
+typedef	union	_WCID_ATTRIBUTE_STRUC {
+	struct {
+		UINT32		KeyTab:1;	// 0 for shared key table.  1 for pairwise key table
+		UINT32		PairKeyMode:3;
+		UINT32		BSSIdx:3; 		//multipleBSS index for the WCID
+		UINT32		RXWIUDF:3;
+		UINT32		PairKeyModeExt:1;
+		UINT32		BSSIdxExt:1;
+		UINT32		rsv:3;
+		UINT32		WAPI_MCBC:1;
+		UINT32		WAPI_rsv:8;
+		UINT32		WAPIKeyIdx:8;
+	}   field;
+    UINT32           word;
+}	WCID_ATTRIBUTE_STRUC, *PWCID_ATTRIBUTE_STRUC;
+#endif
+
+
+// =================================================================================
+// HOST-MCU communication data structure
+// =================================================================================
+
+//
+// H2M_MAILBOX_CSR: Host-to-MCU Mailbox
+//
+#ifdef RT_BIG_ENDIAN
+typedef union  _H2M_MAILBOX_STRUC {
+    struct {
+        UINT32       Owner:8;
+        UINT32       CmdToken:8;    // 0xff tells MCU not to report CmdDoneInt after excuting the command
+        UINT32       HighByte:8;
+        UINT32       LowByte:8;
+    }   field;
+    UINT32           word;
+} H2M_MAILBOX_STRUC, *PH2M_MAILBOX_STRUC;
+#else
+typedef union  _H2M_MAILBOX_STRUC {
+    struct {
+        UINT32       LowByte:8;
+        UINT32       HighByte:8;
+        UINT32       CmdToken:8;
+        UINT32       Owner:8;
+    }   field;
+    UINT32           word;
+} H2M_MAILBOX_STRUC, *PH2M_MAILBOX_STRUC;
+#endif
+
+//
+// M2H_CMD_DONE_CSR: MCU-to-Host command complete indication
+//
+#ifdef RT_BIG_ENDIAN
+typedef union _M2H_CMD_DONE_STRUC {
+    struct  {
+        UINT32       CmdToken3;
+        UINT32       CmdToken2;
+        UINT32       CmdToken1;
+        UINT32       CmdToken0;
+    } field;
+    UINT32           word;
+} M2H_CMD_DONE_STRUC, *PM2H_CMD_DONE_STRUC;
+#else
+typedef union _M2H_CMD_DONE_STRUC {
+    struct  {
+        UINT32       CmdToken0;
+        UINT32       CmdToken1;
+        UINT32       CmdToken2;
+        UINT32       CmdToken3;
+    } field;
+    UINT32           word;
+} M2H_CMD_DONE_STRUC, *PM2H_CMD_DONE_STRUC;
+#endif
+
+
+//NAV_TIME_CFG :NAV
+#ifdef RT_BIG_ENDIAN
+typedef	union	_NAV_TIME_CFG_STRUC	{
+	struct	{
+		USHORT		rsv:6;   
+		USHORT		ZeroSifs:1;               // Applied zero SIFS timer after OFDM RX 0: disable
+		USHORT		Eifs:9;               // in unit of 1-us
+		UCHAR       SlotTime;    // in unit of 1-us
+		UCHAR		Sifs;               // in unit of 1-us
+	}	field;
+	UINT32			word;
+}	NAV_TIME_CFG_STRUC, *PNAV_TIME_CFG_STRUC;
+#else
+typedef	union	_NAV_TIME_CFG_STRUC	{
+	struct	{
+		UCHAR		Sifs;               // in unit of 1-us
+		UCHAR       SlotTime;    // in unit of 1-us
+		USHORT		Eifs:9;               // in unit of 1-us
+		USHORT		ZeroSifs:1;               // Applied zero SIFS timer after OFDM RX 0: disable
+		USHORT		rsv:6;             
+	}	field;
+	UINT32			word;
+}	NAV_TIME_CFG_STRUC, *PNAV_TIME_CFG_STRUC;
+#endif
+
+
+//
+// RX_FILTR_CFG:  /RX configuration register
+//
+#ifdef RT_BIG_ENDIAN
+typedef	union	RX_FILTR_CFG_STRUC	{
+	struct	{
+		UINT32		:15;		
+		UINT32       DropRsvCntlType:1;
+
+        	UINT32       	DropBAR:1;       //  
+		UINT32		DropBA:1;		//  
+		UINT32		DropPsPoll:1;		// Drop Ps-Poll
+		UINT32		DropRts:1;		// Drop Ps-Poll
+
+		UINT32		DropCts:1;		// Drop Ps-Poll
+		UINT32		DropAck:1;		// Drop Ps-Poll
+		UINT32		DropCFEnd:1;		// Drop Ps-Poll
+		UINT32		DropCFEndAck:1;		// Drop Ps-Poll
+
+		UINT32		DropDuplicate:1;		// Drop duplicate frame
+		UINT32		DropBcast:1;		// Drop broadcast frames
+		UINT32		DropMcast:1;		// Drop multicast frames
+		UINT32		DropVerErr:1;	    // Drop version error frame
+
+		UINT32		DropNotMyBSSID:1;			// Drop fram ToDs bit is true
+		UINT32		DropNotToMe:1;		// Drop not to me unicast frame
+		UINT32		DropPhyErr:1;		// Drop physical error
+		UINT32		DropCRCErr:1;		// Drop CRC error
+	}	field;
+	UINT32			word;
+}	RX_FILTR_CFG_STRUC, *PRX_FILTR_CFG_STRUC;
+#else
+typedef	union	_RX_FILTR_CFG_STRUC	{
+	struct	{
+		UINT32		DropCRCErr:1;		// Drop CRC error
+		UINT32		DropPhyErr:1;		// Drop physical error
+		UINT32		DropNotToMe:1;		// Drop not to me unicast frame
+		UINT32		DropNotMyBSSID:1;			// Drop fram ToDs bit is true
+
+		UINT32		DropVerErr:1;	    // Drop version error frame
+		UINT32		DropMcast:1;		// Drop multicast frames
+		UINT32		DropBcast:1;		// Drop broadcast frames
+		UINT32		DropDuplicate:1;		// Drop duplicate frame
+
+		UINT32		DropCFEndAck:1;		// Drop Ps-Poll
+		UINT32		DropCFEnd:1;		// Drop Ps-Poll
+		UINT32		DropAck:1;		// Drop Ps-Poll
+		UINT32		DropCts:1;		// Drop Ps-Poll
+
+		UINT32		DropRts:1;		// Drop Ps-Poll
+		UINT32		DropPsPoll:1;		// Drop Ps-Poll
+		UINT32		DropBA:1;		//  
+        	UINT32       	DropBAR:1;       //  
+
+		UINT32       	DropRsvCntlType:1;
+		UINT32		:15;
+	}	field;
+	UINT32			word;
+}	RX_FILTR_CFG_STRUC, *PRX_FILTR_CFG_STRUC;
+#endif
+
+
+
+
+//
+// PHY_CSR4: RF serial control register
+//
+#ifdef RT_BIG_ENDIAN
+typedef	union	_PHY_CSR4_STRUC	{
+	struct	{
+		UINT32		Busy:1;				// 1: ASIC is busy execute RF programming.		
+		UINT32		PLL_LD:1;			// RF PLL_LD status
+		UINT32		IFSelect:1;			// 1: select IF	to program,	0: select RF to	program
+		UINT32		NumberOfBits:5;		// Number of bits used in RFRegValue (I:20,	RFMD:22)
+		UINT32		RFRegValue:24;		// Register	value (include register	id)	serial out to RF/IF	chip.
+	}	field;
+	UINT32			word;
+}	PHY_CSR4_STRUC, *PPHY_CSR4_STRUC;
+#else
+typedef	union	_PHY_CSR4_STRUC	{
+	struct	{
+		UINT32		RFRegValue:24;		// Register	value (include register	id)	serial out to RF/IF	chip.
+		UINT32		NumberOfBits:5;		// Number of bits used in RFRegValue (I:20,	RFMD:22)
+		UINT32		IFSelect:1;			// 1: select IF	to program,	0: select RF to	program
+		UINT32		PLL_LD:1;			// RF PLL_LD status
+		UINT32		Busy:1;				// 1: ASIC is busy execute RF programming.
+	}	field;
+	UINT32			word;
+}	PHY_CSR4_STRUC, *PPHY_CSR4_STRUC;
+#endif
+
+
+//
+// SEC_CSR5: shared key table security mode register
+//
+#ifdef RT_BIG_ENDIAN
+typedef	union	_SEC_CSR5_STRUC	{
+	struct	{
+        UINT32       :1;
+        UINT32       Bss3Key3CipherAlg:3;
+        UINT32       :1;
+        UINT32       Bss3Key2CipherAlg:3;
+        UINT32       :1;
+        UINT32       Bss3Key1CipherAlg:3;
+        UINT32       :1;
+        UINT32       Bss3Key0CipherAlg:3;
+        UINT32       :1;
+        UINT32       Bss2Key3CipherAlg:3;
+        UINT32       :1;
+        UINT32       Bss2Key2CipherAlg:3;
+        UINT32       :1;
+        UINT32       Bss2Key1CipherAlg:3;
+        UINT32       :1;
+        UINT32       Bss2Key0CipherAlg:3;
+	}	field;
+	UINT32			word;
+}	SEC_CSR5_STRUC, *PSEC_CSR5_STRUC;
+#else
+typedef	union	_SEC_CSR5_STRUC	{
+	struct	{
+        UINT32       Bss2Key0CipherAlg:3;
+        UINT32       :1;
+        UINT32       Bss2Key1CipherAlg:3;
+        UINT32       :1;
+        UINT32       Bss2Key2CipherAlg:3;
+        UINT32       :1;
+        UINT32       Bss2Key3CipherAlg:3;
+        UINT32       :1;
+        UINT32       Bss3Key0CipherAlg:3;
+        UINT32       :1;
+        UINT32       Bss3Key1CipherAlg:3;
+        UINT32       :1;
+        UINT32       Bss3Key2CipherAlg:3;
+        UINT32       :1;
+        UINT32       Bss3Key3CipherAlg:3;
+        UINT32       :1;
+	}	field;
+	UINT32			word;
+}	SEC_CSR5_STRUC, *PSEC_CSR5_STRUC;
+#endif
+
+
+//
+// HOST_CMD_CSR: For HOST to interrupt embedded processor
+//
+#ifdef RT_BIG_ENDIAN
+typedef	union	_HOST_CMD_CSR_STRUC	{
+	struct	{
+	    UINT32   Rsv:24;
+	    UINT32   HostCommand:8;
+	}	field;
+	UINT32			word;
+}	HOST_CMD_CSR_STRUC, *PHOST_CMD_CSR_STRUC;
+#else
+typedef	union	_HOST_CMD_CSR_STRUC	{
+	struct	{
+	    UINT32   HostCommand:8;
+	    UINT32   Rsv:24;
+	}	field;
+	UINT32			word;
+}	HOST_CMD_CSR_STRUC, *PHOST_CMD_CSR_STRUC;
+#endif
+
+
+//
+// AIFSN_CSR: AIFSN for each EDCA AC
+//
+
+
+
+//
+// E2PROM_CSR: EEPROM control register
+//
+#ifdef RT_BIG_ENDIAN
+typedef	union	_E2PROM_CSR_STRUC	{
+	struct	{
+		UINT32		Rsvd:25;
+		UINT32       LoadStatus:1;   // 1:loading, 0:done
+		UINT32		Type:1;			// 1: 93C46, 0:93C66
+		UINT32		EepromDO:1;
+		UINT32		EepromDI:1;
+		UINT32		EepromCS:1;
+		UINT32		EepromSK:1;
+		UINT32		Reload:1;		// Reload EEPROM content, write one to reload, self-cleared.
+	}	field;
+	UINT32			word;
+}	E2PROM_CSR_STRUC, *PE2PROM_CSR_STRUC;
+#else
+typedef	union	_E2PROM_CSR_STRUC	{
+	struct	{
+		UINT32		Reload:1;		// Reload EEPROM content, write one to reload, self-cleared.
+		UINT32		EepromSK:1;
+		UINT32		EepromCS:1;
+		UINT32		EepromDI:1;
+		UINT32		EepromDO:1;
+		UINT32		Type:1;			// 1: 93C46, 0:93C66
+		UINT32       LoadStatus:1;   // 1:loading, 0:done
+		UINT32		Rsvd:25;
+	}	field;
+	UINT32			word;
+}	E2PROM_CSR_STRUC, *PE2PROM_CSR_STRUC;
+#endif
+
+//
+// QOS_CSR0: TXOP holder address0 register
+//
+#ifdef RT_BIG_ENDIAN
+typedef	union	_QOS_CSR0_STRUC	{
+	struct	{
+		UCHAR		Byte3;		// MAC address byte 3
+		UCHAR		Byte2;		// MAC address byte 2
+		UCHAR		Byte1;		// MAC address byte 1
+		UCHAR		Byte0;		// MAC address byte 0
+	}	field;
+	UINT32			word;
+}	QOS_CSR0_STRUC, *PQOS_CSR0_STRUC;
+#else
+typedef	union	_QOS_CSR0_STRUC	{
+	struct	{
+		UCHAR		Byte0;		// MAC address byte 0
+		UCHAR		Byte1;		// MAC address byte 1
+		UCHAR		Byte2;		// MAC address byte 2
+		UCHAR		Byte3;		// MAC address byte 3
+	}	field;
+	UINT32			word;
+}	QOS_CSR0_STRUC, *PQOS_CSR0_STRUC;
+#endif
+
+//
+// QOS_CSR1: TXOP holder address1 register
+//
+#ifdef RT_BIG_ENDIAN
+typedef	union	_QOS_CSR1_STRUC	{
+	struct	{
+		UCHAR		Rsvd1;
+		UCHAR		Rsvd0;
+		UCHAR		Byte5;		// MAC address byte 5
+		UCHAR		Byte4;		// MAC address byte 4
+	}	field;
+	UINT32			word;
+}	QOS_CSR1_STRUC, *PQOS_CSR1_STRUC;
+#else
+typedef	union	_QOS_CSR1_STRUC	{
+	struct	{
+		UCHAR		Byte4;		// MAC address byte 4
+		UCHAR		Byte5;		// MAC address byte 5
+		UCHAR		Rsvd0;
+		UCHAR		Rsvd1;
+	}	field;
+	UINT32			word;
+}	QOS_CSR1_STRUC, *PQOS_CSR1_STRUC;
+#endif
+
+#define	RF_CSR_CFG	0x500
+#ifdef RT_BIG_ENDIAN
+typedef	union	_RF_CSR_CFG_STRUC	{
+	struct	{
+		UINT	Rsvd1:14;				// Reserved
+		UINT	RF_CSR_KICK:1;			// kick RF register read/write
+		UINT	RF_CSR_WR:1;			// 0: read  1: write
+		UINT	Rsvd2:3;				// Reserved
+		UINT	TESTCSR_RFACC_REGNUM:5;	// RF register ID
+		UINT	RF_CSR_DATA:8;			// DATA
+	}	field;
+	UINT	word;
+}	RF_CSR_CFG_STRUC, *PRF_CSR_CFG_STRUC;
+#else
+typedef	union	_RF_CSR_CFG_STRUC	{
+	struct	{
+		UINT	RF_CSR_DATA:8;			// DATA 
+		UINT	TESTCSR_RFACC_REGNUM:5;	// RF register ID
+		UINT	Rsvd2:3;				// Reserved
+		UINT	RF_CSR_WR:1;			// 0: read  1: write
+		UINT	RF_CSR_KICK:1;			// kick RF register read/write
+		UINT	Rsvd1:14;				// Reserved
+	}	field;
+	UINT	word;
+}	RF_CSR_CFG_STRUC, *PRF_CSR_CFG_STRUC;
+#endif
+
+
+//
+// Other on-chip shared memory space, base = 0x2000
+//
+
+// CIS space - base address = 0x2000
+#define HW_CIS_BASE             0x2000
+
+// Carrier-sense CTS frame base address. It's where mac stores carrier-sense frame for carrier-sense function.
+#define HW_CS_CTS_BASE			0x7700
+// DFS CTS frame base address. It's where mac stores CTS frame for DFS.
+#define HW_DFS_CTS_BASE			0x7780
+#define HW_CTS_FRAME_SIZE		0x80
+
+// 2004-11-08 john - since NULL frame won't be that long (256 byte). We steal 16 tail bytes
+// to save debugging settings
+#define HW_DEBUG_SETTING_BASE   0x77f0  // 0x77f0~0x77ff total 16 bytes
+#define HW_DEBUG_SETTING_BASE2   0x7770  // 0x77f0~0x77ff total 16 bytes
+
+// In order to support maximum 8 MBSS and its maximum length is 512 for each beacon
+// Three section discontinue memory segments will be used.
+// 1. The original region for BCN 0~3
+// 2. Extract memory from FCE table for BCN 4~5
+// 3. Extract memory from Pair-wise key table for BCN 6~7
+//	  It occupied those memory of wcid 238~253 for BCN 6 
+//						      and wcid 222~237 for BCN 7  	
+#define HW_BEACON_MAX_SIZE      0x1000 /* unit: byte */
+#define HW_BEACON_BASE0         0x7800
+#define HW_BEACON_BASE1         0x7A00
+#define HW_BEACON_BASE2         0x7C00
+#define HW_BEACON_BASE3         0x7E00
+#define HW_BEACON_BASE4         0x7200
+#define HW_BEACON_BASE5         0x7400
+#define HW_BEACON_BASE6         0x5DC0
+#define HW_BEACON_BASE7         0x5BC0
+
+#define HW_BEACON_MAX_COUNT     8 
+#define HW_BEACON_OFFSET		0x0200 
+#define HW_BEACON_CONTENT_LEN	(HW_BEACON_OFFSET - TXWI_SIZE)
+
+// HOST-MCU shared memory - base address = 0x2100
+#define HOST_CMD_CSR		0x404
+#define H2M_MAILBOX_CSR         0x7010
+#define H2M_MAILBOX_CID         0x7014
+#define H2M_MAILBOX_STATUS      0x701c
+#define H2M_INT_SRC             0x7024
+#define H2M_BBP_AGENT           0x7028
+#define M2H_CMD_DONE_CSR        0x000c
+#define MCU_TXOP_ARRAY_BASE     0x000c   // TODO: to be provided by Albert
+#define MCU_TXOP_ENTRY_SIZE     32       // TODO: to be provided by Albert
+#define MAX_NUM_OF_TXOP_ENTRY   16       // TODO: must be same with 8051 firmware
+#define MCU_MBOX_VERSION        0x01     // TODO: to be confirmed by Albert
+#define MCU_MBOX_VERSION_OFFSET 5        // TODO: to be provided by Albert
+
+//
+// Host DMA registers - base address 0x200 .  TX0-3=EDCAQid0-3, TX4=HCCA, TX5=MGMT,
+//
+//
+//  DMA RING DESCRIPTOR
+//
+#define E2PROM_CSR          0x0004
+#define IO_CNTL_CSR         0x77d0
+
+
+
+// ================================================================
+// Tx /	Rx / Mgmt ring descriptor definition
+// ================================================================
+
+// the following PID values are used to mark outgoing frame type in TXD->PID so that
+// proper TX statistics can be collected based on these categories
+// b3-2 of PID field -
+#define PID_MGMT			0x05
+#define PID_BEACON			0x0c
+#define PID_DATA_NORMALUCAST	 	0x02
+#define PID_DATA_AMPDU	 	0x04
+#define PID_DATA_NO_ACK    	0x08
+#define PID_DATA_NOT_NORM_ACK	 	0x03
+// value domain of pTxD->HostQId (4-bit: 0~15)
+#define QID_AC_BK               1   // meet ACI definition in 802.11e
+#define QID_AC_BE               0   // meet ACI definition in 802.11e
+#define QID_AC_VI               2
+#define QID_AC_VO               3
+#define QID_HCCA                4
+#define NUM_OF_TX_RING          5
+#define QID_MGMT                13
+#define QID_RX                  14
+#define QID_OTHER               15
+
+#endif // __RTMP_MAC_H__ //
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/chip/rtmp_phy.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/chip/rtmp_phy.h
new file mode 100644
index 000000000..938ed8d77
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/chip/rtmp_phy.h
@@ -0,0 +1,636 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+	Module Name:
+	rtmp_phy.h
+
+	Abstract:
+	Ralink Wireless Chip PHY(BBP/RF) related definition & structures
+
+	Revision History:
+	Who			When		  What
+	--------	----------	  ----------------------------------------------
+*/
+
+#ifndef __RTMP_PHY_H__
+#define __RTMP_PHY_H__
+
+
+/*
+	RF sections
+*/
+#define RF_R00			0
+#define RF_R01			1
+#define RF_R02			2
+#define RF_R03			3
+#define RF_R04			4
+#define RF_R05			5
+#define RF_R06			6
+#define RF_R07			7
+#define RF_R08			8
+#define RF_R09			9
+#define RF_R10			10
+#define RF_R11			11
+#define RF_R12			12
+#define RF_R13			13
+#define RF_R14			14
+#define RF_R15			15
+#define RF_R16			16
+#define RF_R17			17
+#define RF_R18			18
+#define RF_R19			19
+#define RF_R20			20
+#define RF_R21			21
+#define RF_R22			22
+#define RF_R23			23
+#define RF_R24			24
+#define RF_R25			25
+#define RF_R26			26
+#define RF_R27			27
+#define RF_R28			28
+#define RF_R29			29
+#define RF_R30			30
+#define RF_R31			31
+
+
+// value domain of pAd->RfIcType
+#define RFIC_2820                   1       // 2.4G 2T3R
+#define RFIC_2850                   2       // 2.4G/5G 2T3R
+#define RFIC_2720                   3       // 2.4G 1T2R
+#define RFIC_2750                   4       // 2.4G/5G 1T2R
+#define RFIC_3020                   5       // 2.4G 1T1R
+#define RFIC_2020                   6       // 2.4G B/G
+#define RFIC_3021                   7       // 2.4G 1T2R
+#define RFIC_3022                   8       // 2.4G 2T2R
+#define RFIC_3052                   9       // 2.4G/5G 2T2R
+#define RFIC_3320			11	   // 2.4G 1T1R
+
+
+/*
+	BBP sections
+*/
+#define BBP_R0			0  // version
+#define BBP_R1			1  // TSSI
+#define BBP_R2			2  // TX configure
+#define BBP_R3			3
+#define BBP_R4			4
+#define BBP_R5			5
+#define BBP_R6			6
+#define BBP_R14			14 // RX configure
+#define BBP_R16			16
+#define BBP_R17			17 // RX sensibility
+#define BBP_R18			18
+#define BBP_R21			21
+#define BBP_R22			22
+#define BBP_R24			24
+#define BBP_R25			25
+#define BBP_R26			26
+#define BBP_R27			27
+#define BBP_R31			31
+#define BBP_R49			49 //TSSI
+#define BBP_R50			50
+#define BBP_R51			51
+#define BBP_R52			52
+#define BBP_R55			55
+#define BBP_R62			62 // Rx SQ0 Threshold HIGH
+#define BBP_R63			63
+#define BBP_R64			64
+#define BBP_R65			65
+#define BBP_R66			66
+#define BBP_R67			67
+#define BBP_R68			68
+#define BBP_R69			69
+#define BBP_R70			70 // Rx AGC SQ CCK Xcorr threshold
+#define BBP_R73			73
+#define BBP_R75			75
+#define BBP_R77			77
+#define BBP_R78			78
+#define BBP_R79			79
+#define BBP_R80			80
+#define BBP_R81			81
+#define BBP_R82			82
+#define BBP_R83			83
+#define BBP_R84			84
+#define BBP_R86			86
+#define BBP_R91			91
+#define BBP_R92			92
+#define BBP_R94			94 // Tx Gain Control
+#define BBP_R103		103
+#define BBP_R105		105
+#define BBP_R106		106
+#define BBP_R113		113
+#define BBP_R114		114
+#define BBP_R115		115
+#define BBP_R116		116
+#define BBP_R117		117
+#define BBP_R118		118
+#define BBP_R119		119
+#define BBP_R120		120
+#define BBP_R121		121
+#define BBP_R122		122
+#define BBP_R123		123
+#ifdef RT30xx
+#define BBP_R138		138 // add by johnli, RF power sequence setup, ADC dynamic on/off control
+#endif // RT30xx //
+
+
+#define BBPR94_DEFAULT	0x06 // Add 1 value will gain 1db
+
+
+#ifdef MERGE_ARCH_TEAM
+	#define MAX_BBP_ID	200
+	#define MAX_BBP_MSG_SIZE	4096
+#else
+#ifdef RT30xx
+	// edit by johnli, RF power sequence setup, add BBP R138 for ADC dynamic on/off control
+	#define MAX_BBP_ID	138
+#elif defined(RT2883)
+	#define MAX_BBP_ID	180
+#else
+	#define MAX_BBP_ID	136
+#endif // RT30xx //
+	#define MAX_BBP_MSG_SIZE	2048
+#endif // MERGE_ARCH_TEAM //
+
+
+//
+// BBP & RF are using indirect access. Before write any value into it.
+// We have to make sure there is no outstanding command pending via checking busy bit.
+//
+#define MAX_BUSY_COUNT  100         // Number of retry before failing access BBP & RF indirect register
+
+//#define PHY_TR_SWITCH_TIME          5  // usec
+
+//#define BBP_R17_LOW_SENSIBILITY     0x50
+//#define BBP_R17_MID_SENSIBILITY     0x41
+//#define BBP_R17_DYNAMIC_UP_BOUND    0x40
+
+#define RSSI_FOR_VERY_LOW_SENSIBILITY   -35
+#define RSSI_FOR_LOW_SENSIBILITY		-58
+#define RSSI_FOR_MID_LOW_SENSIBILITY	-80
+#define RSSI_FOR_MID_SENSIBILITY		-90
+
+/*****************************************************************************
+	RF register Read/Write marco definition
+ *****************************************************************************/
+#ifdef RTMP_MAC_PCI
+#define RTMP_RF_IO_WRITE32(_A, _V)                  \
+{                                                   					\
+	if ((_A)->bPCIclkOff == FALSE) 	                \
+	{												\
+		PHY_CSR4_STRUC  _value;                          \
+		ULONG           _busyCnt = 0;                    \
+											\
+		do {                                            \
+			RTMP_IO_READ32((_A), RF_CSR_CFG0, &_value.word);  \
+			if (_value.field.Busy == IDLE)               \
+				break;                                  \
+			_busyCnt++;                                  \
+		}while (_busyCnt < MAX_BUSY_COUNT);			\
+		if(_busyCnt < MAX_BUSY_COUNT)                   \
+		{                                               \
+			RTMP_IO_WRITE32((_A), RF_CSR_CFG0, (_V));          \
+    		}                                               \
+    	}								\
+}
+#endif // RTMP_MAC_PCI //
+
+
+
+#ifdef RT30xx
+#define RTMP_RF_IO_READ8_BY_REG_ID(_A, _I, _pV)    RT30xxReadRFRegister(_A, _I, _pV)
+#define RTMP_RF_IO_WRITE8_BY_REG_ID(_A, _I, _V)    RT30xxWriteRFRegister(_A, _I, _V)
+#endif // RT30xx //
+
+
+/*****************************************************************************
+	BBP register Read/Write marco definitions.
+	we read/write the bbp value by register's ID. 
+	Generate PER to test BA
+ *****************************************************************************/
+#ifdef RTMP_MAC_PCI
+/*
+	basic marco for BBP read operation. 
+	_pAd: the data structure pointer of RTMP_ADAPTER
+	_bbpID : the bbp register ID
+	_pV: data pointer used to save the value of queried bbp register.
+	_bViaMCU: if we need access the bbp via the MCU.
+*/
+#ifdef RELASE_INCLUDE
+/*
+	The RTMP_PCIE_PS_L3_BBP_IO_READ8 is used to support PCIE power-saving solution3.
+	"brc =AsicSendCommandToMcu" is used to avoid any muc command is executed during
+	RF_OFF command.
+*/
+#endif // RELASE_INCLUDE //
+
+	
+#ifdef CONFIG_STA_SUPPORT
+#define IS_SUPPORT_PCIE_PS_L3(_pAd) (((_pAd)->OpMode == OPMODE_STA) &&\
+	(IS_RT3090((_pAd)) || IS_RT3572((_pAd)) || IS_RT3390((_pAd))) && \
+	((_pAd)->StaCfg.PSControl.field.rt30xxPowerMode == 3)&& \
+	((_pAd)->StaCfg.PSControl.field.EnableNewPS == TRUE)) 
+	
+#define RTMP_PCIE_PS_L3_BBP_IO_READ8(_pAd, _bbpID, _pV, _bViaMCU)			\
+	do{															\
+	BBP_CSR_CFG_STRUC	BbpCsr;									\
+	int					_busyCnt, _secCnt, _regID;					\
+	BOOLEAN					brc;									\
+	_regID = ((_bViaMCU) == TRUE ? H2M_BBP_AGENT : BBP_CSR_CFG);	\
+	BbpCsr.field.Busy = IDLE;										\
+	if (((_pAd)->bPCIclkOff == FALSE)								\
+		&& ((_pAd)->brt30xxBanMcuCmd == FALSE))					\
+	{															\
+		for (_busyCnt=0; _busyCnt<MAX_BUSY_COUNT; _busyCnt++)	\
+		{														\
+			RTMP_IO_READ32(_pAd, _regID, &BbpCsr.word);			\
+			if (BbpCsr.field.Busy == BUSY)                 					\
+				continue;                                               				\
+			BbpCsr.word = 0;										\
+			BbpCsr.field.fRead = 1;									\
+			BbpCsr.field.BBP_RW_MODE = 1;							\
+			BbpCsr.field.Busy = 1;									\
+			BbpCsr.field.RegNum = _bbpID;                       			\
+			RTMP_IO_WRITE32(_pAd, _regID, BbpCsr.word);			\
+			if ((_bViaMCU) == TRUE)								\
+			{													\
+				brc =AsicSendCommandToMcu(_pAd, 0x80, 0xff, 0x0, 0x0); \
+				RTMPusecDelay(1000);							\
+			}							\
+	               if (brc == TRUE) 										\
+			{                                                 								\
+				for (_secCnt=0; _secCnt<MAX_BUSY_COUNT; _secCnt++)       	\
+				{														\
+					RTMP_IO_READ32(_pAd, _regID, &BbpCsr.word); 	\
+					if (BbpCsr.field.Busy == IDLE)							\
+						break;											\
+				}														\
+				if ((BbpCsr.field.Busy == IDLE) &&							\
+				(BbpCsr.field.RegNum == _bbpID))                					\
+				{																\
+					*(_pV) = (UCHAR)BbpCsr.field.Value;							\
+					break;														\
+				}																\
+			}																\
+			else 																\
+			{																\
+				BbpCsr.field.Busy = 0;											\
+				RTMP_IO_WRITE32(_pAd, _regID, BbpCsr.word);				\
+			}																\
+		}																	\
+	}	\
+	else 										\
+	{																	\
+			DBGPRINT_ERR(("RTMP_PCIE_PS_L3_BBP_IO_READ8(viaMCU=%d) read R%d fail\n", (_bViaMCU), _bbpID));      \
+			*(_pV) = (_pAd)->BbpWriteLatch[_bbpID];               \
+	              if ((_bViaMCU) == TRUE)				\
+			{									\
+				RTMP_IO_READ32(_pAd, _regID, &BbpCsr.word);				\
+				BbpCsr.field.Busy = 0;                         						 \
+				RTMP_IO_WRITE32(_pAd, _regID, BbpCsr.word);				\
+			}															\
+	}																	\
+	if ((BbpCsr.field.Busy == BUSY) || ((_pAd)->bPCIclkOff == TRUE))				\
+	{																	\
+	                DBGPRINT_ERR(("RTMP_PCIE_PS_L3_BBP_IO_READ8(viaMCU=%d) read R%d fail(reason:clk=%d,busy=%x)\n", (_bViaMCU), _bbpID,(_pAd)->bPCIclkOff ,BbpCsr.field.Busy));      \
+			*(_pV) = (_pAd)->BbpWriteLatch[_bbpID];               \
+			if ((_bViaMCU) == TRUE)				\
+			{									\
+				RTMP_IO_READ32(_pAd, _regID, &BbpCsr.word);				\
+				BbpCsr.field.Busy = 0;                          \
+				RTMP_IO_WRITE32(_pAd, _regID, BbpCsr.word);				\
+			}				\
+	}																	\
+}while(0)
+#else
+#define IS_SUPPORT_PCIE_PS_L3(_pAd) FALSE
+#define RTMP_PCIE_PS_L3_BBP_IO_READ8(_pAd, _bbpID, _pV, _bViaMCU)
+#endif // CONFIG_STA_SUPPORT //
+
+#ifndef VENDOR_FEATURE3_SUPPORT
+#define RTMP_BBP_IO_READ8(_pAd, _bbpID, _pV, _bViaMCU)			\
+	do{															\
+		BBP_CSR_CFG_STRUC  BbpCsr;								\
+		int   _busyCnt, _secCnt, _regID;                               			\
+																\
+		_regID = ((_bViaMCU) == TRUE ? H2M_BBP_AGENT : BBP_CSR_CFG);	\
+		for (_busyCnt=0; _busyCnt<MAX_BUSY_COUNT; _busyCnt++)      \
+		{                                                   							\
+			RTMP_IO_READ32(_pAd, _regID, &BbpCsr.word);     	\
+			if (BbpCsr.field.Busy == BUSY)                  \
+				continue;                                               \
+			BbpCsr.word = 0;                                \
+			BbpCsr.field.fRead = 1;                         \
+			BbpCsr.field.BBP_RW_MODE = 1;                         \
+			BbpCsr.field.Busy = 1;                          \
+			BbpCsr.field.RegNum = _bbpID;                       \
+			RTMP_IO_WRITE32(_pAd, _regID, BbpCsr.word);     \
+			if ((_bViaMCU) == TRUE)							\
+			{													\
+				AsicSendCommandToMcu(_pAd, 0x80, 0xff, 0x0, 0x0); \
+				RTMPusecDelay(1000);	\
+			}							\
+			for (_secCnt=0; _secCnt<MAX_BUSY_COUNT; _secCnt++)       \
+			{                                               \
+				RTMP_IO_READ32(_pAd, _regID, &BbpCsr.word); \
+				if (BbpCsr.field.Busy == IDLE)              \
+					break;                                  \
+			}                                               \
+			if ((BbpCsr.field.Busy == IDLE) &&              \
+				(BbpCsr.field.RegNum == _bbpID))                \
+			{                                               \
+				*(_pV) = (UCHAR)BbpCsr.field.Value;         \
+				break;                                      \
+			}                                               \
+		}                                                   \
+		if (BbpCsr.field.Busy == BUSY)                      \
+		{                                                   \
+			DBGPRINT_ERR(("BBP(viaMCU=%d) read R%d fail\n", (_bViaMCU), _bbpID));      \
+			*(_pV) = (_pAd)->BbpWriteLatch[_bbpID];               \
+			if ((_bViaMCU) == TRUE)				\
+			{									\
+				RTMP_IO_READ32(_pAd, _regID, &BbpCsr.word);				\
+				BbpCsr.field.Busy = 0;                          \
+				RTMP_IO_WRITE32(_pAd, _regID, BbpCsr.word);				\
+			}				\
+		}													\
+	}while(0)
+#endif // VENDOR_FEATURE3_SUPPORT //
+
+/*
+	This marco used for the BBP read operation which didn't need via MCU.
+*/
+#define BBP_IO_READ8_BY_REG_ID(_A, _I, _pV)			\
+	RTMP_BBP_IO_READ8((_A), (_I), (_pV), FALSE)
+
+/*
+	This marco used for the BBP read operation which need via MCU.
+	But for some chipset which didn't have mcu (e.g., RBUS based chipset), we
+	will use this function too and didn't access the bbp register via the MCU.
+*/
+#ifndef VENDOR_FEATURE3_SUPPORT
+#define RTMP_BBP_IO_READ8_BY_REG_ID(_A, _I, _pV)			\
+	do{														\
+		if ((_A)->bPCIclkOff == FALSE)                     				\
+		{													\
+			if ((_A)->infType == RTMP_DEV_INF_RBUS)			\
+				RTMP_BBP_IO_READ8((_A), (_I), (_pV), FALSE);	\
+			else												\
+				if(IS_SUPPORT_PCIE_PS_L3((_A)))				\
+					RTMP_PCIE_PS_L3_BBP_IO_READ8((_A), (_I), (_pV), TRUE);	\
+				else												\
+				RTMP_BBP_IO_READ8((_A), (_I), (_pV), TRUE);	\
+		}													\
+	}while(0)
+#endif // VENDOR_FEATURE3_SUPPORT //
+
+/*
+	basic marco for BBP write operation. 
+	_pAd: the data structure pointer of RTMP_ADAPTER
+	_bbpID : the bbp register ID
+	_pV: data used to save the value of queried bbp register.
+	_bViaMCU: if we need access the bbp via the MCU.
+*/
+#ifdef CONFIG_STA_SUPPORT
+#define RTMP_PCIE_PS_L3_BBP_IO_WRITE8(_pAd, _bbpID, _pV, _bViaMCU)			\
+	do{															\
+		BBP_CSR_CFG_STRUC  BbpCsr;                            			 	\
+		int             _busyCnt=0, _regID;                               				\
+		BOOLEAN					brc;								\
+		_regID = ((_bViaMCU) == TRUE ? H2M_BBP_AGENT : BBP_CSR_CFG);	\
+			if (((_pAd)->bPCIclkOff == FALSE)	\
+			&& ((_pAd)->brt30xxBanMcuCmd == FALSE))	\
+			{																	\
+				if (_pAd->AccessBBPFailCount > 20)									\
+				{																	\
+					AsicResetBBPAgent(_pAd);				\
+					_pAd->AccessBBPFailCount = 0;											\
+				}		\
+				for (_busyCnt=0; _busyCnt<MAX_BUSY_COUNT; _busyCnt++)  \
+				{                                                  						 \
+					RTMP_IO_READ32((_pAd), _regID, &BbpCsr.word);     \
+					if (BbpCsr.field.Busy == BUSY)                  \
+						continue;                                   \
+					BbpCsr.word = 0;                                \
+					BbpCsr.field.fRead = 0;                         \
+					BbpCsr.field.BBP_RW_MODE = 1;                         \
+					BbpCsr.field.Busy = 1;                          \
+					BbpCsr.field.Value = _pV;                        \
+					BbpCsr.field.RegNum = _bbpID;                       \
+					RTMP_IO_WRITE32((_pAd), _regID, BbpCsr.word);     \
+					if ((_bViaMCU) == TRUE)									\
+					{														\
+						brc =AsicSendCommandToMcu(_pAd, 0x80, 0xff, 0x0, 0x0);		\
+						if ((_pAd)->OpMode == OPMODE_AP)						\
+							RTMPusecDelay(1000);							\
+					}														\
+					if (brc == TRUE) 											\
+					{														\
+						(_pAd)->BbpWriteLatch[_bbpID] = _pV;                   		\
+					}														\
+					else 													\
+					{														\
+						BbpCsr.field.Busy = 0;									\
+						RTMP_IO_WRITE32(_pAd, _regID, BbpCsr.word);	\
+					}								\
+					break;													\
+				}  	\
+			}		\
+			else 										\
+			{																	\
+			DBGPRINT_ERR(("  brt30xxBanMcuCmd = %d. Write BBP %d \n",  (_pAd)->brt30xxBanMcuCmd, (_regID)));	\
+			}																	\
+		if ((_busyCnt == MAX_BUSY_COUNT) || ((_pAd)->bPCIclkOff == TRUE))			\
+			{																	\
+				if (_busyCnt == MAX_BUSY_COUNT)					\
+				(_pAd)->AccessBBPFailCount++;					\
+				DBGPRINT_ERR(("BBP write R%d=0x%x fail. BusyCnt= %d.bPCIclkOff = %d. \n", _regID, BbpCsr.word, _busyCnt, (_pAd)->bPCIclkOff ));	\
+			}																	\
+	}while(0)
+#else
+#define RTMP_PCIE_PS_L3_BBP_IO_WRITE8(_pAd, _bbpID, _pV, _bViaMCU)
+#endif // CONFIG_STA_SUPPORT //
+
+#ifndef VENDOR_FEATURE3_SUPPORT
+#define RTMP_BBP_IO_WRITE8(_pAd, _bbpID, _pV, _bViaMCU)			\
+	do{															\
+		BBP_CSR_CFG_STRUC  BbpCsr;                             \
+		int             _busyCnt=0, _regID;                    \
+		BOOLEAN					brc;			\
+																\
+		_regID = ((_bViaMCU) == TRUE ? H2M_BBP_AGENT : BBP_CSR_CFG);	\
+		for (_busyCnt=0; _busyCnt<MAX_BUSY_COUNT; _busyCnt++)  \
+		{                                                   \
+			RTMP_IO_READ32((_pAd), _regID, &BbpCsr.word);     \
+			if (BbpCsr.field.Busy == BUSY)									\
+			{\
+					if ( ((_bViaMCU) == TRUE) && ((_busyCnt % 20) == 0)) \
+					{\
+						BbpCsr.field.Busy = IDLE;\
+						RTMP_IO_WRITE32(_pAd, H2M_BBP_AGENT, BbpCsr.word);\
+					}\
+					continue;													\
+			}\
+			BbpCsr.word = 0;                                \
+			BbpCsr.field.fRead = 0;                         \
+			BbpCsr.field.BBP_RW_MODE = 1;                         \
+			BbpCsr.field.Busy = 1;                          \
+			BbpCsr.field.Value = _pV;                        \
+			BbpCsr.field.RegNum = _bbpID;                       \
+			RTMP_IO_WRITE32((_pAd), _regID, BbpCsr.word);     \
+			if ((_bViaMCU) == TRUE)									\
+			{														\
+				brc = AsicSendCommandToMcu(_pAd, 0x80, 0xff, 0x0, 0x0);		\
+				if ((_pAd)->OpMode == OPMODE_AP)						\
+					RTMPusecDelay(1000);							\
+				if (brc == FALSE) \
+				{ \
+					BbpCsr.field.Busy = IDLE;											\
+					RTMP_IO_WRITE32((_pAd), H2M_BBP_AGENT, BbpCsr.word);				\
+				} \
+			}														\
+			(_pAd)->BbpWriteLatch[_bbpID] = _pV;                   			\
+			break;													\
+		}                                                   								\
+		if (_busyCnt == MAX_BUSY_COUNT)                      					\
+		{                                                   								\
+			DBGPRINT_ERR(("BBP write R%d fail\n", _bbpID));     			\
+			if((_bViaMCU) == TRUE)									\
+			{														\
+				RTMP_IO_READ32(_pAd, H2M_BBP_AGENT, &BbpCsr.word);	\
+				BbpCsr.field.Busy = 0;                          					\
+				RTMP_IO_WRITE32(_pAd, H2M_BBP_AGENT, BbpCsr.word);	\
+			}														\
+		}                                                   								\
+	}while(0)
+#endif // VENDOR_FEATURE3_SUPPORT //
+
+
+/*
+	This marco used for the BBP write operation which didn't need via MCU.
+*/
+#define BBP_IO_WRITE8_BY_REG_ID(_A, _I, _pV)			\
+	RTMP_BBP_IO_WRITE8((_A), (_I), (_pV), FALSE)
+
+/*
+	This marco used for the BBP write operation which need via MCU.
+	But for some chipset which didn't have mcu (e.g., RBUS based chipset), we
+	will use this function too and didn't access the bbp register via the MCU.
+*/
+#ifndef VENDOR_FEATURE3_SUPPORT
+#define RTMP_BBP_IO_WRITE8_BY_REG_ID(_A, _I, _pV)			\
+	do{														\
+		if ((_A)->bPCIclkOff == FALSE)                     				\
+		{													\
+			if ((_A)->infType == RTMP_DEV_INF_RBUS)			\
+				RTMP_BBP_IO_WRITE8((_A), (_I), (_pV), FALSE);	\
+			else												\
+				if(IS_SUPPORT_PCIE_PS_L3((_A)))				\
+					RTMP_PCIE_PS_L3_BBP_IO_WRITE8((_A), (_I), (_pV), TRUE);	\
+				else												\
+				RTMP_BBP_IO_WRITE8((_A), (_I), (_pV), TRUE);	\
+		}													\
+	}while(0)
+#endif // VENDOR_FEATURE3_SUPPORT //
+	
+#endif // RTMP_MAC_PCI //
+
+
+
+#ifdef RT30xx
+//Need to collect each ant's rssi concurrently
+//rssi1 is report to pair2 Ant and rss2 is reprot to pair1 Ant when 4 Ant
+#ifdef RELEASE_EXCLUDE
+/* STA will get the Avg. RSSI from Mgmt Frame and Peer AP Beacon.
+ * The reason to use moving average is prevent STA switch antenna back and forth quickly
+ * to cause antenna switching hourly.
+ */
+#endif // RELEASE_EXCLUDE //
+#define COLLECT_RX_ANTENNA_AVERAGE_RSSI(_pAd, _rssi1, _rssi2)					\
+{																				\
+	SHORT	AvgRssi;															\
+	UCHAR	UsedAnt;															\
+	if (_pAd->RxAnt.EvaluatePeriod == 0)									\
+	{																		\
+		UsedAnt = _pAd->RxAnt.Pair1PrimaryRxAnt;							\
+		AvgRssi = _pAd->RxAnt.Pair1AvgRssi[UsedAnt];						\
+		if (AvgRssi < 0)													\
+			AvgRssi = AvgRssi - (AvgRssi >> 3) + _rssi1;					\
+		else																\
+			AvgRssi = _rssi1 << 3;											\
+		_pAd->RxAnt.Pair1AvgRssi[UsedAnt] = AvgRssi;						\
+	}																		\
+	else																	\
+	{																		\
+		UsedAnt = _pAd->RxAnt.Pair1SecondaryRxAnt;							\
+		AvgRssi = _pAd->RxAnt.Pair1AvgRssi[UsedAnt];						\
+		if ((AvgRssi < 0) && (_pAd->RxAnt.FirstPktArrivedWhenEvaluate))		\
+			AvgRssi = AvgRssi - (AvgRssi >> 3) + _rssi1;					\
+		else																\
+		{																	\
+			_pAd->RxAnt.FirstPktArrivedWhenEvaluate = TRUE;					\
+			AvgRssi = _rssi1 << 3;											\
+		}																	\
+		_pAd->RxAnt.Pair1AvgRssi[UsedAnt] = AvgRssi;						\
+		_pAd->RxAnt.RcvPktNumWhenEvaluate++;								\
+	}																		\
+}
+
+#define RTMP_ASIC_MMPS_DISABLE(_pAd)							\
+	do{															\
+		UCHAR _bbpData = 0;											\
+		UINT32 _macData;											\
+		/* disable MMPS BBP control register */						\
+		RTMP_BBP_IO_READ8_BY_REG_ID(_pAd, BBP_R3, &_bbpData);	\
+		_bbpData &= ~(0x04);	/*bit 2*/								\
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(_pAd, BBP_R3, _bbpData);	\
+																\
+		/* disable MMPS MAC control register */						\
+		RTMP_IO_READ32(_pAd, 0x1210, &_macData);				\
+		_macData &= ~(0x09);	/*bit 0, 3*/							\
+		RTMP_IO_WRITE32(_pAd, 0x1210, _macData);				\
+	}while(0)
+
+
+#define RTMP_ASIC_MMPS_ENABLE(_pAd)							\
+	do{															\
+		UCHAR _bbpData = 0;											\
+		UINT32 _macData;											\
+		/* enable MMPS BBP control register */						\
+		RTMP_BBP_IO_READ8_BY_REG_ID(_pAd, BBP_R3, &_bbpData);	\
+		_bbpData |= (0x04);	/*bit 2*/								\
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(_pAd, BBP_R3, _bbpData);	\
+																\
+		/* enable MMPS MAC control register */						\
+		RTMP_IO_READ32(_pAd, 0x1210, &_macData);				\
+		_macData |= (0x09);	/*bit 0, 3*/							\
+		RTMP_IO_WRITE32(_pAd, 0x1210, _macData);				\
+	}while(0)
+				
+#endif // RT30xx //
+
+#endif // __RTMP_PHY_H__ //
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/chlist.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/chlist.h
new file mode 100644
index 000000000..af2c3d1c6
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/chlist.h
@@ -0,0 +1,118 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+	Module Name:
+	chlist.c
+
+	Abstract:
+
+	Revision History:
+	Who         When          What
+	--------    ----------    ----------------------------------------------
+	Fonchi Wu   2007-12-19    created
+*/
+
+#ifndef __CHLIST_H__
+#define __CHLIST_H__
+
+#include "rtmp_type.h"
+#include "rtmp_def.h"
+
+#define BAND_5G         0
+#define BAND_24G        1
+#define BAND_BOTH       2
+
+#ifdef EXT_BUILD_CHANNEL_LIST
+#define ODOR			0
+#define IDOR			1
+#define BOTH			2
+
+typedef struct _CH_DESP {
+	UCHAR FirstChannel;
+	UCHAR NumOfCh;
+	CHAR MaxTxPwr;			// dBm
+	UCHAR Geography;			// 0:out door, 1:in door, 2:both
+	BOOLEAN DfsReq;			// Dfs require, 0: No, 1: yes.
+} CH_DESP, *PCH_DESP;
+
+typedef struct _CH_REGION {
+	UCHAR CountReg[3];
+	UCHAR DfsType;			// 0: CE, 1: FCC, 2: JAP, 3:JAP_W53, JAP_W56
+	CH_DESP ChDesp[10];
+} CH_REGION, *PCH_REGION;
+
+extern CH_REGION ChRegion[];
+#endif // EXT_BUILD_CHANNEL_LIST //
+
+typedef struct _CH_FREQ_MAP_{
+	UINT16		channel;
+	UINT16		freqKHz;
+}CH_FREQ_MAP;
+
+extern CH_FREQ_MAP CH_HZ_ID_MAP[];
+extern int CH_HZ_ID_MAP_NUM;
+
+
+
+
+#define     MAP_CHANNEL_ID_TO_KHZ(_ch, _khz)                 \
+			RTMP_MapChannelID2KHZ(_ch, (UINT32 *)&(_khz))
+#define     MAP_KHZ_TO_CHANNEL_ID(_khz, _ch)                 \
+			RTMP_MapKHZ2ChannelID(_khz, (INT *)&(_ch))
+
+
+#ifdef EXT_BUILD_CHANNEL_LIST
+VOID BuildChannelListEx(
+	IN PRTMP_ADAPTER pAd);
+
+VOID BuildBeaconChList(
+	IN PRTMP_ADAPTER pAd,
+	OUT PUCHAR pBuf,
+	OUT	PULONG pBufLen);
+#endif // EXT_BUILD_CHANNEL_LIST //
+
+#ifdef DOT11_N_SUPPORT
+VOID N_ChannelCheck(
+	IN PRTMP_ADAPTER pAd);
+
+VOID N_SetCenCh(
+	IN PRTMP_ADAPTER pAd);
+#endif // DOT11_N_SUPPORT //
+
+UINT8 GetCuntryMaxTxPwr(
+	IN PRTMP_ADAPTER pAd,
+	IN UINT8 channel);
+
+VOID RTMP_MapChannelID2KHZ(
+	IN UCHAR Ch,
+	OUT UINT32 *pFreq);
+
+VOID RTMP_MapKHZ2ChannelID(
+	IN ULONG Freq,
+	OUT INT *pCh);
+	
+#endif // __CHLIST_H__
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/client_wds.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/client_wds.h
new file mode 100644
index 000000000..013ca73c5
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/client_wds.h
@@ -0,0 +1,68 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+	Module Name:
+	client_wds.h
+
+	Abstract:
+*/
+
+#ifndef __CLIENT_WDS_H__
+#define __CLIENT_WDS_H__
+
+#include "client_wds_cmm.h"
+
+VOID CliWds_ProxyTabInit(
+	IN PRTMP_ADAPTER pAd);
+
+VOID CliWds_ProxyTabDestory(
+	IN PRTMP_ADAPTER pAd);
+
+PCLIWDS_PROXY_ENTRY CliWdsEntyAlloc(
+	IN PRTMP_ADAPTER pAd);
+
+
+VOID CliWdsEntyFree(
+	IN PRTMP_ADAPTER pAd,
+	IN PCLIWDS_PROXY_ENTRY pCliWdsEntry);
+
+
+PUCHAR CliWds_ProxyLookup(
+	IN PRTMP_ADAPTER pAd,
+	IN PUCHAR pMac);
+
+
+VOID CliWds_ProxyTabUpdate(
+	IN PRTMP_ADAPTER pAd,
+	IN SHORT Aid,
+	IN PUCHAR pMac);
+
+
+VOID CliWds_ProxyTabMaintain(
+	IN PRTMP_ADAPTER pAd);
+
+#endif // __CLIENT_WDS_H__ //
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/client_wds_cmm.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/client_wds_cmm.h
new file mode 100644
index 000000000..ea8d2ad18
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/client_wds_cmm.h
@@ -0,0 +1,55 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+	Module Name:
+	client_wds_cmm.h
+
+	Abstract:
+*/
+
+#ifndef __CLIENT_WDS_CMM_H__
+#define __CLIENT_WDS_CMM_H__
+
+#include "rtmp_def.h"
+
+#ifdef CLIENT_WDS
+
+
+#define CLI_WDS_ENTRY_AGEOUT 5000  /* seconds */
+
+#define CLIWDS_POOL_SIZE 128
+#define CLIWDS_HASH_TAB_SIZE 64  /* the legth of hash table must be power of 2. */
+typedef struct _CLIWDS_PROXY_ENTRY {
+	struct _CLIWDS_PROXY_ENTRY * pNext;
+	ULONG LastRefTime;
+	SHORT Aid;
+	UCHAR Addr[MAC_ADDR_LEN];
+} CLIWDS_PROXY_ENTRY, *PCLIWDS_PROXY_ENTRY;
+
+#endif // CLIENT_WDS //
+
+#endif // __CLIENT_WDS_CMM_H__ //
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/crypt_aes.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/crypt_aes.h
new file mode 100644
index 000000000..e982a620f
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/crypt_aes.h
@@ -0,0 +1,235 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************/
+
+
+#ifndef __CRYPT_AES_H__
+#define __CRYPT_AES_H__
+
+#include "rt_config.h"
+
+
+/*
+//#undef SWAP32
+//#define SWAP32(x) \
+//    ((unsigned long)( \
+//    (((unsigned long)(x) & (unsigned long) 0x000000ffUL) << 24) | \
+//    (((unsigned long)(x) & (unsigned long) 0x0000ff00UL) <<  8) | \
+//    (((unsigned long)(x) & (unsigned long) 0x00ff0000UL) >>  8) | \
+//    (((unsigned long)(x) & (unsigned long) 0xff000000UL) >> 24) ))
+*/
+#define GETU32(p) cpu2be32(get_unaligned((u32 *) (p)))
+#define PUTU32(ct, st) put_unaligned(cpu2be32(st), (u32*)(ct)) //{ *((u32 *)(ct)) = cpu2be32((st)); }    
+
+#define AES_ENCRYPT	1
+#define AES_DECRYPT	0
+
+/* Because array size can't be a const in C, the following two are macros.
+   Both sizes are in bytes. */
+#define AES_MAXNR 14
+#define AES_BLOCK_SIZE 16
+
+/* This should be a hidden type, but EVP requires that the size be known */
+struct aes_key_st {
+#ifdef AES_LONG
+    unsigned long rd_key[4 *(AES_MAXNR + 1)];
+#else
+    unsigned int rd_key[4 *(AES_MAXNR + 1)];
+#endif
+    int rounds;
+};
+typedef struct aes_key_st AES_KEY;
+
+typedef struct _EVP_CIPHER_CTX_ {
+	unsigned long flag;
+	unsigned long type;  
+	unsigned long encrypt; //1: Encrypt 0: Decrypt, 
+	unsigned char key[16];
+	unsigned char iv[8 + 16];
+	unsigned long bufferlen;
+	unsigned char buffer[AES_BLOCK_SIZE];
+	AES_KEY        aesKey;
+} EVP_CIPHER_CTX, *PEVP_CIPHER_CTX;
+
+void evp_aes_encrypt(const unsigned char *in, unsigned char *out, const AES_KEY *key);
+void evp_aes_decrypt(const unsigned char *in, unsigned char *out, const AES_KEY *key);
+int AES_set_encrypt_key(const unsigned char *userKey, const int bits, AES_KEY *key);
+int AES_set_decrypt_key(const unsigned char *userKey, const int bits, AES_KEY *key);
+int EVP_aes_128_cbc(void);
+int EVP_EncryptInit(EVP_CIPHER_CTX *ctx, int type, unsigned char *key, unsigned char *iv);
+int EVP_EncryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *outbuf, int *outlen, unsigned char *inbuf, int inlen);
+int EVP_EncryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *outbuf, int *outlen);
+int EVP_DecryptInit(EVP_CIPHER_CTX *ctx, int type, unsigned char *key, unsigned char *iv);
+int EVP_DecryptUpdate(EVP_CIPHER_CTX *ctx, unsigned char *outbuf, int *outlen, unsigned char *inbuf, int inlen);
+int EVP_DecryptFinal(EVP_CIPHER_CTX *ctx, unsigned char *outbuf, int *outlen);
+void evp_aes_cbc_encrypt(const unsigned char *in, unsigned char *out,
+		     const unsigned long length, const AES_KEY *key,
+		     unsigned char *ivec, const int enc);
+
+void WscEncryptData(
+    unsigned char *plainText,   int ptx_len,
+    unsigned char *key, unsigned char *iv,
+    unsigned char *cipherText,  int *ctx_len);
+    
+void WscDecryptData(
+    unsigned char *cipherText,  int ctx_len, 
+    unsigned char *key, unsigned char *iv,
+    unsigned char *plainText,   int *ptx_len);	
+
+#define AES_CBC_Encrypt(Plain, PlainL, Key, KeyL, IV, IVL, Cipher, CipherL) \
+    WscEncryptData((Plain), (PlainL), (Key), (IV), (Cipher), (int *) (CipherL));
+
+#define AES_CBC_Decrypt(Cipher, CipherL, Key, KeyL, IV, IVL, Plain, PlainL) \
+    WscDecryptData((Cipher), (CipherL), (Key), (IV), (Plain), (int *) (PlainL));
+
+typedef	struct
+{
+	uint32 erk[64];		/* encryption round	keys */
+	uint32 drk[64];		/* decryption round	keys */
+	int	nr;				/* number of rounds	*/
+}
+aes_context;
+
+int	 rtmp_aes_set_key( aes_context *ctx,	uint8 *key,	int	nbits );
+void rtmp_aes_encrypt( aes_context *ctx,	uint8 input[16], uint8 output[16] );
+void rtmp_aes_decrypt( aes_context *ctx,	uint8 input[16], uint8 output[16] );
+
+VOID AES_GTK_KEY_WRAP( 
+	IN UCHAR *key,
+	IN UCHAR *plaintext,
+	IN UINT p_len,
+	OUT UCHAR *ciphertext,
+	OUT UINT *c_len);
+    
+VOID AES_GTK_KEY_UNWRAP( 
+	IN	UCHAR	*key,
+	OUT	UCHAR	*plaintext,
+	OUT	UINT    *p_len,
+	IN	UCHAR	*ciphertext,
+	IN	UINT    c_len);
+
+#define AES_Key_Wrap(Plain, PlainL, Key, KeyL, Cipher, CipherL) \
+    AES_GTK_KEY_WRAP((Key), (Plain), (PlainL), (Cipher), (CipherL))
+
+#define AES_Key_Unwrap(Cipher, CipherL, Key, KeyL, Plain, PlainL) \
+    AES_GTK_KEY_UNWRAP((Key), (Plain), (PlainL), (Cipher), (CipherL))
+
+/* AES definition & structure */
+#define AES_STATE_ROWS 4     /* Block size: 4*4*8 = 128 bits */
+#define AES_STATE_COLUMNS 4
+#define AES_BLOCK_SIZES AES_STATE_ROWS*AES_STATE_COLUMNS
+#define AES_KEY_ROWS 4
+#define AES_KEY_COLUMNS 8    /*Key length: 4*{4,6,8}*8 = 128, 192, 256 bits */
+#define AES_KEY128_LENGTH 16
+#define AES_KEY192_LENGTH 24
+#define AES_KEY256_LENGTH 32
+#define AES_CBC_IV_LENGTH 16
+
+typedef struct {
+    UINT8 State[AES_STATE_ROWS][AES_STATE_COLUMNS];
+    UINT8 KeyWordExpansion[AES_KEY_ROWS][AES_KEY_ROWS*((AES_KEY256_LENGTH >> 2) + 6 + 1)];
+} AES_CTX_STRUC, *PAES_CTX_STRUC;
+
+
+/* AES operations */
+VOID RT_AES_KeyExpansion (
+    IN UINT8 Key[],
+    IN UINT KeyLength,
+    INOUT AES_CTX_STRUC *paes_ctx);
+
+VOID RT_AES_Encrypt (
+    IN UINT8 PlainBlock[],
+    IN UINT PlainBlockSize,
+    IN UINT8 Key[],
+    IN UINT KeyLength,
+    OUT UINT8 CipherBlock[],
+    INOUT UINT *CipherBlockSize);
+
+VOID RT_AES_Decrypt (
+    IN UINT8 CipherBlock[],
+    IN UINT CipherBlockSize,
+    IN UINT8 Key[],
+    IN UINT KeyLength,
+    OUT UINT8 PlainBlock[],
+    INOUT UINT *PlainBlockSize);
+
+/* AES Counter with CBC-MAC operations */
+VOID AES_CCM_MAC (
+    IN UINT8 Payload[],
+    IN UINT  PayloadLength,
+    IN UINT8 Key[],
+    IN UINT  KeyLength,
+    IN UINT8 Nonce[],
+    IN UINT  NonceLength,
+    IN UINT8 AAD[],
+    IN UINT  AADLength,
+    IN UINT  MACLength,
+    OUT UINT8 MACText[]);
+
+INT AES_CCM_Encrypt (
+    IN UINT8 PlainText[],
+    IN UINT  PlainTextLength,
+    IN UINT8 Key[],
+    IN UINT  KeyLength,
+    IN UINT8 Nonce[],
+    IN UINT  NonceLength,
+    IN UINT8 AAD[],
+    IN UINT  AADLength,
+    IN UINT  MACLength,
+    OUT UINT8 CipherText[],
+    INOUT UINT *CipherTextLength);
+
+INT AES_CCM_Decrypt (
+    IN UINT8 CipherText[],
+    IN UINT  CipherTextLength,
+    IN UINT8 Key[],
+    IN UINT  KeyLength,
+    IN UINT8 Nonce[],
+    IN UINT  NonceLength,
+    IN UINT8 AAD[],
+    IN UINT  AADLength,
+    IN UINT  MACLength,
+    OUT UINT8 PlainText[],
+    INOUT UINT *PlainTextLength);
+
+/* AES-CMAC operations */
+VOID AES_CMAC_GenerateSubKey (
+    IN UINT8 Key[],
+    IN UINT KeyLength,
+    OUT UINT8 SubKey1[],
+    OUT UINT8 SubKey2[]);
+
+VOID AES_CMAC (
+    IN UINT8 PlainText[],
+    IN UINT PlainTextLength,
+    IN UINT8 Key[],
+    IN UINT KeyLength,
+    OUT UINT8 MACText[],
+    INOUT UINT *MACTextLength);
+
+
+
+#endif /* __CRYPT_AES_H__ */
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/crypt_arc4.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/crypt_arc4.h
new file mode 100644
index 000000000..27cdef458
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/crypt_arc4.h
@@ -0,0 +1,71 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************/
+
+/****************************************************************************
+    Module Name:
+    RC4
+
+    Abstract:
+    
+    Revision History:
+    Who         When            What
+    --------    ----------      ------------------------------------------
+    Eddy        2009/05/13      ARC4
+***************************************************************************/
+
+#ifndef __CRYPT_ARC4_H__
+#define __CRYPT_ARC4_H__
+
+#include "rt_config.h"
+
+/* ARC4 definition & structure */
+#define ARC4_KEY_BLOCK_SIZE 256
+
+typedef struct {
+    UINT BlockIndex1;
+    UINT BlockIndex2;
+    UINT8 KeyBlock[256];
+} ARC4_CTX_STRUC, *PARC4_CTX_STRUC;
+
+
+/* ARC4 operations */
+VOID ARC4_INIT (
+    IN ARC4_CTX_STRUC *pARC4_CTX,
+    IN PUCHAR pKey,
+	IN UINT KeyLength);
+
+VOID ARC4_Compute (
+    IN ARC4_CTX_STRUC *pARC4_CTX,
+    IN UINT8 InputBlock[],
+    IN UINT InputBlockSize,
+    OUT UINT8 OutputBlock[]);
+
+VOID ARC4_Discard_KeyLength (
+    IN ARC4_CTX_STRUC *pARC4_CTX,
+    IN UINT Length);
+
+#endif /* __CRYPT_ARC4_H__ */
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/crypt_hmac.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/crypt_hmac.h
new file mode 100644
index 000000000..536915c1f
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/crypt_hmac.h
@@ -0,0 +1,90 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************/
+
+
+#ifndef __CRYPT_HMAC_H__
+#define __CRYPT_HMAC_H__
+
+#include "rt_config.h"
+
+
+#if defined(__cplusplus)
+extern "C"
+{
+#endif
+
+#define USE_SHA256
+
+#if !defined(USE_SHA1) && !defined(USE_SHA256)
+#error define USE_SHA1 or USE_SHA256 to set the HMAC hash algorithm
+#endif
+
+#ifdef USE_SHA1
+#define HASH_INPUT_SIZE     SHA1_BLOCK_SIZE
+#define HASH_OUTPUT_SIZE    SHA1_DIGEST_SIZE
+#define sha_ctx             sha1_ctx
+#define sha_begin           sha1_begin
+#define sha_hash            sha1_hash
+#define sha_end             sha1_end
+#endif
+
+#ifdef USE_SHA256
+#define HASH_INPUT_SIZE     SHA256_BLOCK_SIZE
+#define HASH_OUTPUT_SIZE    SHA256_DIGEST_SIZE
+#define sha_ctx             sha256_ctx
+#define sha_begin           sha256_begin
+#define sha_hash            sha256_hash
+#define sha_end             sha256_end
+#endif
+
+#define HMAC_OK                0
+#define HMAC_BAD_MODE         -1
+#define HMAC_IN_DATA  0xffffffff
+
+typedef struct
+{   unsigned char   key[HASH_INPUT_SIZE];
+    sha_ctx         ctx[1];
+    unsigned int   klen;
+} hmac_ctx;
+
+void hmac_sha_begin(hmac_ctx cx[1]);
+int  hmac_sha_key(const unsigned char key[], unsigned int key_len, hmac_ctx cx[1]);
+void hmac_sha_data(const unsigned char data[], unsigned int data_len, hmac_ctx cx[1]);
+void hmac_sha_end(unsigned char mac[], unsigned int mac_len, hmac_ctx cx[1]);
+void hmac_sha(const unsigned char key[], unsigned int key_len,
+          const unsigned char data[], unsigned int data_len,
+          unsigned char mac[], unsigned int mac_len);
+
+#define RT_HMAC_SHA256(Key, KeyL, Data, DataL, Mac, MacL) \
+    hmac_sha((Key), (KeyL), (Data), (DataL), (Mac), (MacL))
+
+#if defined(__cplusplus)
+}
+#endif
+
+
+#endif /* __CRYPT_HMAC_H__ */
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/crypt_md5.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/crypt_md5.h
new file mode 100644
index 000000000..8a1e07c25
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/crypt_md5.h
@@ -0,0 +1,90 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+ */
+
+
+#ifndef __CRYPT_MD5_H__
+#define __CRYPT_MD5_H__
+
+
+#ifndef	uint8
+#define	uint8  unsigned	char
+#endif
+
+#ifndef	uint32
+#define	uint32 unsigned	long int
+#endif
+
+#define MD5_MAC_LEN 16
+
+typedef struct _MD5_CTX {
+    ULONG   Buf[4];             // buffers of four states
+	UCHAR   Input[64];          // input message
+	ULONG   LenInBitCount[2];   // length counter for input message, 0 up to 64 bits	                            
+}   MD5_CTX;
+
+VOID MD5Init(MD5_CTX *pCtx);
+VOID MD5Update(MD5_CTX *pCtx, UCHAR *pData, ULONG LenInBytes);
+VOID MD5Final(UCHAR Digest[16], MD5_CTX *pCtx);
+VOID MD5Transform(ULONG Buf[4], ULONG Mes[16]);
+
+void md5_mac(u8 *key, size_t key_len, u8 *data, size_t data_len, u8 *mac);
+void hmac_md5(u8 *key, size_t key_len, u8 *data, size_t data_len, u8 *mac);
+
+//
+// SHA context
+//
+typedef	struct _SHA_CTX
+{
+	ULONG   Buf[5];             // buffers of five states
+	UCHAR   Input[80];          // input message
+	ULONG   LenInBitCount[2];   // length counter for input message, 0 up to 64 bits
+	
+}	SHA_CTX;
+
+VOID SHAInit(SHA_CTX *pCtx);
+UCHAR SHAUpdate(SHA_CTX *pCtx, UCHAR *pData, ULONG LenInBytes);
+VOID SHAFinal(SHA_CTX *pCtx, UCHAR Digest[20]);
+VOID SHATransform(ULONG Buf[5], ULONG Mes[20]);
+
+#define SHA_DIGEST_LEN 20
+
+VOID	HMAC_SHA1(
+	IN	UCHAR	*text,
+	IN	UINT	text_len,
+	IN	UCHAR	*key,
+	IN	UINT	key_len,
+	IN	UCHAR	*digest);
+	
+#define RT_HMAC_MD5(Key, KeyL, Meg, MegL, MAC, MACL) \
+    hmac_md5((Key), (KeyL), (Meg), (MegL), (MAC))
+
+#define RT_HMAC_SHA1(Key, KeyL, Meg, MegL, MAC, MACL) \
+    HMAC_SHA1((Meg), (MegL), (Key), (KeyL), (MAC))
+
+
+#endif /* __CRYPT_MD5_H__ */
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/crypt_sha2.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/crypt_sha2.h
new file mode 100644
index 000000000..18f81d9fd
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/crypt_sha2.h
@@ -0,0 +1,158 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+ */
+
+
+#ifndef __CRYPT_SHA2_H__
+#define __CRYPT_SHA2_H__
+
+
+#define EXIT_SUCCESS    0
+#define EXIT_FAILURE    1
+
+typedef unsigned char       uint_8t;
+typedef unsigned short      uint_16t;
+typedef unsigned int        uint_32t;
+typedef unsigned long long  uint_64t;
+
+#define void_ret  void
+#define int_ret   int
+
+
+/* define the hash functions that you need  */
+#define SHA_2   /* for dynamic hash length  */
+#define SHA_224
+#define SHA_256
+
+
+#if defined(__cplusplus)
+extern "C"
+{
+#endif
+
+/* Note that the following function prototypes are the same */
+/* for both the bit and byte oriented implementations.  But */
+/* the length fields are in bytes or bits as is appropriate */
+/* for the version used.  Bit sequences are arrays of bytes */
+/* in which bit sequence indexes increase from the most to  */
+/* the least significant end of each byte                   */
+
+#define SHA1_BLOCK_SIZE    64 /* 512 bits = 64 bytes */
+#define SHA1_DIGEST_SIZE   20 /* 160 bits = 20 bytes */
+#define SHA224_DIGEST_SIZE  28
+#define SHA224_BLOCK_SIZE   64
+#define SHA256_DIGEST_SIZE  32
+#define SHA256_BLOCK_SIZE   64
+
+/* type to hold the SHA256 (and SHA224) context */
+
+typedef struct
+{   uint_32t count[2];
+    uint_32t hash[8];
+    uint_32t wbuf[16];
+} sha256_ctx;
+
+typedef sha256_ctx  sha224_ctx;
+
+void_ret sha256_compile(sha256_ctx ctx[1]);
+
+void_ret sha224_begin(sha224_ctx ctx[1]);
+#define sha224_hash sha256_hash
+void_ret sha224_end(unsigned char hval[], sha224_ctx ctx[1]);
+void_ret sha224(unsigned char hval[], const unsigned char data[], unsigned int len);
+
+void_ret sha256_begin(sha256_ctx ctx[1]);
+void_ret sha256_hash(const unsigned char data[], unsigned int len, sha256_ctx ctx[1]);
+void_ret sha256_end(unsigned char hval[], sha256_ctx ctx[1]);
+void_ret sha256(unsigned char hval[], const unsigned char data[], unsigned int len);
+ 
+
+#ifndef SHA_64BIT
+
+typedef struct
+{   union
+    { sha256_ctx  ctx256[1];
+    } uu[1];
+    uint_32t    sha2_len;
+} sha2_ctx;
+
+#define SHA2_MAX_DIGEST_SIZE    SHA256_DIGEST_SIZE
+
+#else
+
+#define SHA384_DIGEST_SIZE  48
+#define SHA384_BLOCK_SIZE  128
+#define SHA512_DIGEST_SIZE  64
+#define SHA512_BLOCK_SIZE  128
+#define SHA2_MAX_DIGEST_SIZE    SHA512_DIGEST_SIZE
+
+/* type to hold the SHA384 (and SHA512) context */
+
+typedef struct
+{   uint_64t count[2];
+    uint_64t hash[8];
+    uint_64t wbuf[16];
+} sha512_ctx;
+
+typedef sha512_ctx  sha384_ctx;
+
+typedef struct
+{   union
+    { sha256_ctx  ctx256[1];
+      sha512_ctx  ctx512[1];
+    } uu[1];
+    uint_32t    sha2_len;
+} sha2_ctx;
+
+void_ret sha512_compile(sha512_ctx ctx[1]);
+
+void_ret sha384_begin(sha384_ctx ctx[1]);
+#define sha384_hash sha512_hash
+void_ret sha384_end(unsigned char hval[], sha384_ctx ctx[1]);
+void_ret sha384(unsigned char hval[], const unsigned char data[], unsigned int len);
+
+void_ret sha512_begin(sha512_ctx ctx[1]);
+void_ret sha512_hash(const unsigned char data[], unsigned int len, sha512_ctx ctx[1]);
+void_ret sha512_end(unsigned char hval[], sha512_ctx ctx[1]);
+void_ret sha512(unsigned char hval[], const unsigned char data[], unsigned int len);
+
+int_ret  sha2_begin(unsigned int size, sha2_ctx ctx[1]);
+void_ret sha2_hash(const unsigned char data[], unsigned int len, sha2_ctx ctx[1]);
+void_ret sha2_end(unsigned char hval[], sha2_ctx ctx[1]);
+int_ret  sha2(unsigned char hval[], unsigned int size, const unsigned char data[], unsigned int len);
+#endif
+
+#define RT_SHA256(Message, MessageL, DMessage) \
+    sha256((DMessage), (Message), (MessageL));    
+
+
+#if defined(__cplusplus)
+}
+#endif
+
+
+#endif /* __CRYPT_SHA2_H__ */
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/dfs.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/dfs.h
new file mode 100644
index 000000000..4a056eba9
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/dfs.h
@@ -0,0 +1,138 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+    Module Name:
+    dfs.h
+
+    Abstract:
+    Support DFS function.
+
+    Revision History:
+    Who       When            What
+    --------  ----------      ----------------------------------------------
+    Fonchi    03-12-2007      created
+*/
+
+#define RADAR_PULSE 1
+#define RADAR_WIDTH 2
+
+#define WIDTH_RD_IDLE 0
+#define WIDTH_RD_CHECK 1
+
+
+
+/*************************************************************************
+  *
+  *	DFS Radar related definitions.
+  *
+  ************************************************************************/  
+//#define CARRIER_DETECT_TASK_NUM	6
+//#define RADAR_DETECT_TASK_NUM	7
+
+// McuRadarState && McuCarrierState for 2880-SW-MCU
+#define FREE_FOR_TX				0
+#define WAIT_CTS_BEING_SENT		1
+#define DO_DETECTION			2
+
+// McuRadarEvent
+#define RADAR_EVENT_CTS_SENT			0x01 // Host signal MCU that CTS has been sent
+#define RADAR_EVENT_CTS_CARRIER_SENT	0x02 // Host signal MCU that CTS has been sent (Carrier)
+#define RADAR_EVENT_RADAR_DETECTING		0x04 // Radar detection is on going, carrier detection hold back
+#define RADAR_EVENT_CARRIER_DETECTING	0x08 // Carrier detection is on going, radar detection hold back
+#define RADAR_EVENT_WIDTH_RADAR			0x10 // BBP == 2 radar detected
+#define RADAR_EVENT_CTS_KICKED			0x20 // Radar detection need to sent double CTS, first CTS sent
+
+// McuRadarCmd
+#define DETECTION_STOP			0
+#define RADAR_DETECTION			1
+#define CARRIER_DETECTION		2
+
+
+
+#ifdef TONE_RADAR_DETECT_SUPPORT
+INT Set_CarrierCriteria_Proc(IN PRTMP_ADAPTER pAd, IN PSTRING arg);
+int Set_CarrierReCheck_Proc(IN PRTMP_ADAPTER pAd, IN PSTRING arg);
+INT Set_CarrierStopCheck_Proc(IN PRTMP_ADAPTER pAd, IN PSTRING arg);
+void NewCarrierDetectionStart(PRTMP_ADAPTER pAd);
+void RTMPHandleRadarInterrupt(PRTMP_ADAPTER  pAd);
+#endif // TONE_RADAR_DETECT_SUPPORT //
+
+
+VOID BbpRadarDetectionStart(
+	IN PRTMP_ADAPTER pAd);
+
+VOID BbpRadarDetectionStop(
+	IN PRTMP_ADAPTER pAd);
+
+VOID RadarDetectionStart(
+	IN PRTMP_ADAPTER pAd,
+	IN BOOLEAN CTS_Protect,
+	IN UINT8 CTSPeriod);
+
+VOID RadarDetectionStop(
+	IN PRTMP_ADAPTER	pAd);
+
+VOID RadarDetectPeriodic(
+	IN PRTMP_ADAPTER	pAd);
+	
+
+BOOLEAN RadarChannelCheck(
+	IN PRTMP_ADAPTER	pAd,
+	IN UCHAR			Ch);
+
+ULONG JapRadarType(
+	IN PRTMP_ADAPTER pAd);
+
+ULONG RTMPBbpReadRadarDuration(
+	IN PRTMP_ADAPTER	pAd);
+
+ULONG RTMPReadRadarDuration(
+	IN PRTMP_ADAPTER	pAd);
+
+VOID RTMPCleanRadarDuration(
+	IN PRTMP_ADAPTER	pAd);
+
+VOID RTMPPrepareRDCTSFrame(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PUCHAR			pDA,
+	IN	ULONG			Duration,
+	IN  UCHAR           RTSRate,
+	IN  ULONG           CTSBaseAddr,
+	IN  UCHAR			FrameGap);
+
+VOID RTMPPrepareRadarDetectParams(
+	IN PRTMP_ADAPTER	pAd);
+
+
+INT Set_ChMovingTime_Proc(
+	IN PRTMP_ADAPTER pAd, 
+	IN PSTRING arg);
+
+INT Set_LongPulseRadarTh_Proc(
+	IN PRTMP_ADAPTER pAd, 
+	IN PSTRING arg);
+
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/dot11i_wpa.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/dot11i_wpa.h
new file mode 100644
index 000000000..c9f3fc606
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/dot11i_wpa.h
@@ -0,0 +1,298 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+	Module Name:
+	dot11i_wpa.h
+	
+	Revision History:
+	Who 			When			What
+	--------		----------		----------------------------------------------
+	
+*/
+
+#ifndef	__DOT11I_WPA_H__
+#define	__DOT11I_WPA_H__
+
+#include "rtmp_type.h"
+
+/* The length is the EAPoL-Key frame except key data field. 
+   Please refer to 802.11i-2004 ,Figure 43u in p.78 */
+#define MIN_LEN_OF_EAPOL_KEY_MSG	95	
+
+/* The related length of the EAPOL Key frame */
+#define LEN_KEY_DESC_NONCE			32
+#define LEN_KEY_DESC_IV				16
+#define LEN_KEY_DESC_RSC			8
+#define LEN_KEY_DESC_ID				8
+#define LEN_KEY_DESC_REPLAY			8
+#define LEN_KEY_DESC_MIC			16
+
+/* EAP Code Type */
+#define EAP_CODE_REQUEST	1
+#define EAP_CODE_RESPONSE	2
+#define EAP_CODE_SUCCESS    3
+#define EAP_CODE_FAILURE    4
+
+/* EAPOL frame Protocol Version */
+#define	EAPOL_VER					1
+#define	EAPOL_VER2					2
+
+/* EAPOL-KEY Descriptor Type */
+#define	WPA1_KEY_DESC				0xfe
+#define WPA2_KEY_DESC               0x02
+
+/* Key Descriptor Version of Key Information */
+#define	KEY_DESC_TKIP			1
+#define	KEY_DESC_AES			2
+#define KEY_DESC_EXT			3
+
+#define IE_WPA					221
+#define IE_RSN					48
+
+#define WPA_KDE_TYPE			0xdd
+
+//EAP Packet Type
+#define	EAPPacket		0
+#define	EAPOLStart		1
+#define	EAPOLLogoff		2
+#define	EAPOLKey		3
+#define	EAPOLASFAlert	4
+#define	EAPTtypeMax		5
+
+#define PAIRWISEKEY					1
+#define GROUPKEY					0
+
+/* RSN IE Length definition */
+#define MAX_LEN_OF_RSNIE         	255
+#define MIN_LEN_OF_RSNIE         	18
+#define MAX_LEN_GTK					32
+#define MIN_LEN_GTK					5
+
+#define LEN_PMK						32
+#define LEN_PMKID					16
+#define LEN_PMK_NAME				16
+
+#define LEN_GMK						32
+
+#define LEN_PTK_KCK					16
+#define LEN_PTK_KEK					16
+#define LEN_TK						16	// The length Temporal key.
+#define LEN_TKIP_MIC				8	// The length of TX/RX Mic of TKIP
+#define LEN_TK2						(2 * LEN_TKIP_MIC)
+#define LEN_PTK						(LEN_PTK_KCK + LEN_PTK_KEK + LEN_TK + LEN_TK2)
+
+#define LEN_TKIP_PTK				LEN_PTK
+#define LEN_AES_PTK					(LEN_PTK_KCK + LEN_PTK_KEK + LEN_TK)
+#define LEN_TKIP_GTK				(LEN_TK + LEN_TK2)
+#define LEN_AES_GTK					LEN_TK
+#define LEN_TKIP_TK					(LEN_TK + LEN_TK2)
+#define LEN_AES_TK					LEN_TK
+
+#define OFFSET_OF_PTK_TK			(LEN_PTK_KCK + LEN_PTK_KEK)	// The offset of the PTK Temporal key in PTK
+#define OFFSET_OF_AP_TKIP_TX_MIC	(OFFSET_OF_PTK_TK + LEN_TK)
+#define OFFSET_OF_AP_TKIP_RX_MIC	(OFFSET_OF_AP_TKIP_TX_MIC + LEN_TKIP_MIC)
+#define OFFSET_OF_STA_TKIP_RX_MIC	(OFFSET_OF_PTK_TK + LEN_TK)
+#define OFFSET_OF_STA_TKIP_TX_MIC	(OFFSET_OF_AP_TKIP_TX_MIC + LEN_TKIP_MIC)
+
+#define LEN_KDE_HDR					6
+#define LEN_NONCE					32
+#define LEN_PN						6
+#define LEN_TKIP_IV_HDR				8
+#define LEN_CCMP_HDR				8
+#define LEN_CCMP_MIC				8
+#define LEN_OUI_SUITE				4
+#define LEN_WEP_TSC					3
+#define LEN_WPA_TSC					6
+#define LEN_WEP_IV_HDR				4
+#define LEN_ICV						4
+
+/* It's defined in IEEE Std 802.11-2007 Table 8-4 */
+typedef enum _WPA_KDE_ID
+{		
+   	KDE_RESV0,
+   	KDE_GTK,
+   	KDE_RESV2,
+   	KDE_MAC_ADDR,
+   	KDE_PMKID,
+   	KDE_SMK,
+   	KDE_NONCE,
+   	KDE_LIFETIME,
+   	KDE_ERROR,
+   	KDE_RESV_OTHER
+} WPA_KDE_ID;
+
+// EAPOL Key Information definition within Key descriptor format
+typedef	struct GNU_PACKED _KEY_INFO
+{
+#ifdef RT_BIG_ENDIAN
+	UCHAR	KeyAck:1;
+    UCHAR	Install:1;
+    UCHAR	KeyIndex:2;
+    UCHAR	KeyType:1;
+    UCHAR	KeyDescVer:3;
+    UCHAR	Rsvd:3;
+    UCHAR	EKD_DL:1;		// EKD for AP; DL for STA
+    UCHAR	Request:1;
+    UCHAR	Error:1;
+    UCHAR	Secure:1;
+    UCHAR	KeyMic:1;
+#else
+	UCHAR	KeyMic:1;
+	UCHAR	Secure:1;
+	UCHAR	Error:1;
+	UCHAR	Request:1;
+	UCHAR	EKD_DL:1;       // EKD for AP; DL for STA
+	UCHAR	Rsvd:3;
+	UCHAR	KeyDescVer:3;
+	UCHAR	KeyType:1;
+	UCHAR	KeyIndex:2;
+	UCHAR	Install:1;
+	UCHAR	KeyAck:1;
+#endif	
+}	KEY_INFO, *PKEY_INFO;
+
+// EAPOL Key descriptor format
+typedef	struct GNU_PACKED _KEY_DESCRIPTER
+{
+	UCHAR		Type;
+	KEY_INFO	KeyInfo;
+	UCHAR		KeyLength[2];
+	UCHAR		ReplayCounter[LEN_KEY_DESC_REPLAY];
+	UCHAR		KeyNonce[LEN_KEY_DESC_NONCE];
+	UCHAR		KeyIv[LEN_KEY_DESC_IV];
+	UCHAR		KeyRsc[LEN_KEY_DESC_RSC];
+	UCHAR		KeyId[LEN_KEY_DESC_ID];
+	UCHAR		KeyMic[LEN_KEY_DESC_MIC];
+	UCHAR		KeyDataLen[2];	   
+	UCHAR		KeyData[0];
+}	KEY_DESCRIPTER, *PKEY_DESCRIPTER;
+
+typedef	struct GNU_PACKED _EAPOL_PACKET
+{
+	UCHAR	 			ProVer;
+	UCHAR	 			ProType;
+	UCHAR	 			Body_Len[2];
+	KEY_DESCRIPTER		KeyDesc;
+}	EAPOL_PACKET, *PEAPOL_PACKET;
+
+typedef struct GNU_PACKED _KDE_HDR
+{
+    UCHAR               Type;
+    UCHAR               Len;
+    UCHAR               OUI[3];
+    UCHAR               DataType;
+	UCHAR				octet[0];
+}   KDE_HDR, *PKDE_HDR;
+
+//802.11i D10 page 83
+typedef struct GNU_PACKED _GTK_KDE
+{
+#ifndef RT_BIG_ENDIAN
+    UCHAR               Kid:2;
+    UCHAR               tx:1;
+    UCHAR               rsv:5;
+    UCHAR               rsv1;
+#else
+    UCHAR               rsv:5;
+    UCHAR               tx:1;
+    UCHAR               Kid:2;
+    UCHAR               rsv1;    	
+#endif
+    UCHAR               GTK[0];
+}   GTK_KDE, *PGTK_KDE;
+
+// For WPA1
+typedef struct GNU_PACKED _RSNIE {
+    UCHAR   oui[4];
+    USHORT  version;
+    UCHAR   mcast[4];
+    USHORT  ucount;
+    struct GNU_PACKED {
+        UCHAR oui[4];
+    }ucast[1];
+} RSNIE, *PRSNIE;
+
+// For WPA2
+typedef struct GNU_PACKED _RSNIE2 {
+    USHORT  version;
+    UCHAR   mcast[4];
+    USHORT  ucount;
+    struct GNU_PACKED {
+        UCHAR oui[4];
+    }ucast[1];
+} RSNIE2, *PRSNIE2;
+
+// AKM Suite
+typedef struct GNU_PACKED _RSNIE_AUTH {
+    USHORT acount;
+    struct GNU_PACKED {
+        UCHAR oui[4];
+    }auth[1];
+} RSNIE_AUTH,*PRSNIE_AUTH;
+
+// PMKID List
+typedef struct GNU_PACKED _RSNIE_PMKID {
+    USHORT pcount;
+    struct GNU_PACKED {
+        UCHAR list[16];
+    }pmkid[1];
+} RSNIE_PMKID,*PRSNIE_PMKID;
+
+typedef	union GNU_PACKED _RSN_CAPABILITIES	{
+	struct	GNU_PACKED {
+#ifdef RT_BIG_ENDIAN
+        USHORT		Rsvd:8;		
+		USHORT		MFPC:1;
+		USHORT		MFPR:1;
+        USHORT		GTKSA_R_Counter:2;
+        USHORT		PTKSA_R_Counter:2;
+        USHORT		No_Pairwise:1;
+		USHORT		PreAuth:1;
+#else
+        USHORT		PreAuth:1;
+		USHORT		No_Pairwise:1;
+		USHORT		PTKSA_R_Counter:2;
+		USHORT		GTKSA_R_Counter:2;
+		USHORT		MFPR:1;
+		USHORT		MFPC:1;
+		USHORT		Rsvd:8;
+#endif
+	}	field;
+	USHORT			word;
+}	RSN_CAPABILITIES, *PRSN_CAPABILITIES;
+
+typedef struct GNU_PACKED _EAP_HDR {
+    UCHAR   ProVer;
+    UCHAR   ProType;
+    UCHAR   Body_Len[2];
+    UCHAR   code;
+    UCHAR   identifier;
+    UCHAR   length[2]; // including code and identifier, followed by length-2 octets of data
+} EAP_HDR, *PEAP_HDR;
+
+
+#endif // __DOT11I_WPA_H__ //
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/eeprom.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/eeprom.h
new file mode 100644
index 000000000..539942b77
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/eeprom.h
@@ -0,0 +1,82 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+	Module Name:
+	eeprom.h
+
+	Abstract:
+	Miniport header file for eeprom related information
+
+	Revision History:
+	Who         When          What
+	--------    ----------    ----------------------------------------------
+*/
+#ifndef __EEPROM_H__
+#define __EEPROM_H__
+
+
+
+#ifdef RTMP_PCI_SUPPORT
+/*************************************************************************
+  *	Public function declarations for prom-based chipset
+  ************************************************************************/
+int rtmp_ee_prom_read16(
+	IN PRTMP_ADAPTER	pAd,
+	IN USHORT			Offset,
+	OUT USHORT			*pValue);
+
+int rtmp_ee_prom_write16(
+	IN PRTMP_ADAPTER	pAd,
+	IN USHORT			Offset,
+	IN USHORT			value);
+#endif // RTMP_PCI_SUPPORT //
+
+
+
+
+
+#ifdef RT30xx
+#ifdef RTMP_EFUSE_SUPPORT
+int rtmp_ee_efuse_read16(
+	IN RTMP_ADAPTER *pAd, 
+	IN USHORT Offset,
+	OUT USHORT *pValue);
+
+int rtmp_ee_efuse_write16(
+	IN RTMP_ADAPTER *pAd, 
+	IN USHORT Offset, 
+	IN USHORT data);
+#endif // RTMP_EFUSE_SUPPORT //
+#endif // RT30xx //
+
+/*************************************************************************
+  *	Public function declarations for prom operation callback functions setting
+  ************************************************************************/
+INT RtmpChipOpsEepromHook(
+	IN RTMP_ADAPTER *pAd,
+	IN INT			infType);
+
+#endif // __EEPROM_H__ //
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/firmware.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/firmware.h
new file mode 100644
index 000000000..eef41f67c
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/firmware.h
@@ -0,0 +1,558 @@
+/*
+ Copyright (c) 2007, Ralink Technology Corporation 
+ All rights reserved. 
+
+ Redistribution.  Redistribution and use in binary form, without 
+ modification, are permitted provided that the following conditions are 
+ met: 
+
+ 	* Redistributions must reproduce the above copyright notice and the 
+ 	following disclaimer in the documentation and/or other materials 
+ 	provided with the distribution. 
+ 	* Neither the name of Ralink Technology Corporation nor the names of its 
+ 	suppliers may be used to endorse or promote products derived from this 
+ 	software without specific prior written permission. 
+ 	* No reverse engineering, decompilation, or disassembly of this software 
+ 	is permitted. 
+
+ Limited patent license. Ralink Technology Corporation grants a world-wide, 
+ royalty-free, non-exclusive license under patents it now or hereafter 
+ owns or controls to make, have made, use, import, offer to sell and 
+ sell ("Utilize") this software, but solely to the extent that any 
+ such patent is necessary to Utilize the software alone, or in 
+ combination with an operating system licensed under an approved Open 
+ Source license as listed by the Open Source Initiative at 
+ http://opensource.org/licenses.  The patent license shall not apply to 
+ any other combinations which include this software.  No hardware per 
+ se is licensed hereunder. 
+
+ DISCLAIMER.  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+ CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, 
+ BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 
+ FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
+ COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 
+ OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR 
+ TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE 
+ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH 
+ DAMAGE. 
+*/ 
+/* AUTO GEN PLEASE DO NOT MODIFY IT */ 
+/* AUTO GEN PLEASE DO NOT MODIFY IT */ 
+
+
+UCHAR FirmwareImage [] = { 
+0x02, 0x03, 0x5b, 0x02, 0x02, 0xa6, 0x22, 0x22, 0xff, 0xff, 0xff, 0x02, 0x01, 0x2c, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0x02, 0x00, 0x1e, 0xff, 0xff, 0xff, 0xff, 0xff, 0x02, 0x00, 0xdd, 0xc0, 0xe0, 
+0xc0, 0xf0, 0xc0, 0x83, 0xc0, 0x82, 0xc0, 0xd0, 0x75, 0xd0, 0x18, 0xc2, 0xaf, 0x30, 0x45, 0x03, 
+0x12, 0x10, 0x09, 0x90, 0x04, 0x16, 0xe0, 0x30, 0xe3, 0x03, 0x74, 0x08, 0xf0, 0x90, 0x04, 0x14, 
+0xe0, 0x20, 0xe7, 0x03, 0x02, 0x00, 0xcb, 0x74, 0x80, 0xf0, 0x90, 0x70, 0x12, 0xe0, 0xf5, 0x36, 
+0x90, 0x04, 0x04, 0xe0, 0x24, 0xcf, 0x60, 0x30, 0x14, 0x60, 0x42, 0x24, 0xe2, 0x60, 0x47, 0x14, 
+0x60, 0x55, 0x24, 0x21, 0x70, 0x60, 0xe5, 0x55, 0x24, 0xfe, 0x60, 0x07, 0x14, 0x60, 0x08, 0x24, 
+0x02, 0x70, 0x08, 0x7d, 0x01, 0x80, 0x28, 0x7d, 0x02, 0x80, 0x24, 0x90, 0x70, 0x10, 0xe0, 0xf5, 
+0x50, 0x85, 0x36, 0x40, 0xd2, 0x01, 0x80, 0x3e, 0xe5, 0x55, 0x64, 0x03, 0x60, 0x04, 0xe5, 0x55, 
+0x70, 0x04, 0x7d, 0x02, 0x80, 0x09, 0x85, 0x36, 0x41, 0xd2, 0x02, 0x80, 0x29, 0xad, 0x55, 0xaf, 
+0x36, 0x12, 0x02, 0x82, 0x80, 0x20, 0x90, 0x70, 0x10, 0xe0, 0xf5, 0x47, 0x90, 0x70, 0x11, 0xe0, 
+0xf5, 0x44, 0x12, 0x10, 0x25, 0x80, 0x06, 0x90, 0x70, 0x10, 0xe0, 0xf5, 0x45, 0xe4, 0xfd, 0xaf, 
+0x36, 0x12, 0x02, 0x82, 0xd2, 0x04, 0x90, 0x70, 0x13, 0xe4, 0xf0, 0x90, 0x70, 0x13, 0xe4, 0xf0, 
+0xd2, 0xaf, 0xd0, 0xd0, 0xd0, 0x82, 0xd0, 0x83, 0xd0, 0xf0, 0xd0, 0xe0, 0x32, 0xc0, 0xe0, 0xc0, 
+0xf0, 0xc0, 0x83, 0xc0, 0x82, 0xc0, 0xd0, 0xe8, 0xc0, 0xe0, 0xe9, 0xc0, 0xe0, 0xea, 0xc0, 0xe0, 
+0xeb, 0xc0, 0xe0, 0xec, 0xc0, 0xe0, 0xed, 0xc0, 0xe0, 0xee, 0xc0, 0xe0, 0xef, 0xc0, 0xe0, 0xc2, 
+0xaf, 0x30, 0x45, 0x03, 0x12, 0x10, 0x12, 0xd2, 0xaf, 0xd0, 0xe0, 0xff, 0xd0, 0xe0, 0xfe, 0xd0, 
+0xe0, 0xfd, 0xd0, 0xe0, 0xfc, 0xd0, 0xe0, 0xfb, 0xd0, 0xe0, 0xfa, 0xd0, 0xe0, 0xf9, 0xd0, 0xe0, 
+0xf8, 0xd0, 0xd0, 0xd0, 0x82, 0xd0, 0x83, 0xd0, 0xf0, 0xd0, 0xe0, 0x32, 0xc0, 0xe0, 0xc0, 0xf0, 
+0xc0, 0x83, 0xc0, 0x82, 0xc0, 0xd0, 0x75, 0xd0, 0x10, 0xc2, 0xaf, 0x30, 0x45, 0x03, 0x12, 0x10, 
+0x0c, 0x30, 0x58, 0x0a, 0xe5, 0x54, 0x60, 0x04, 0x15, 0x54, 0x80, 0x02, 0xc2, 0x58, 0x30, 0x59, 
+0x0a, 0xe5, 0x50, 0x60, 0x04, 0x15, 0x50, 0x80, 0x02, 0xc2, 0x59, 0xd5, 0x53, 0x07, 0x30, 0x60, 
+0x04, 0x15, 0x46, 0xd2, 0x04, 0x30, 0x45, 0x03, 0x12, 0x10, 0x0f, 0xc2, 0x8d, 0xd2, 0xaf, 0xd0, 
+0xd0, 0xd0, 0x82, 0xd0, 0x83, 0xd0, 0xf0, 0xd0, 0xe0, 0x32, 0x90, 0x70, 0x2a, 0xe0, 0x30, 0xe1, 
+0x43, 0xc2, 0xaf, 0x90, 0x70, 0x28, 0xe0, 0x90, 0x10, 0x1c, 0xf0, 0x90, 0x70, 0x29, 0xe0, 0x90, 
+0x10, 0x1d, 0xf0, 0x90, 0x70, 0x2a, 0xe0, 0x90, 0x10, 0x1e, 0xf0, 0x90, 0x10, 0x1c, 0xe0, 0xf5, 
+0x37, 0x90, 0x10, 0x1e, 0xe0, 0x20, 0xe1, 0xf3, 0x90, 0x10, 0x1c, 0xe0, 0x90, 0x70, 0x28, 0xf0, 
+0x90, 0x10, 0x1d, 0xe0, 0x90, 0x70, 0x29, 0xf0, 0x90, 0x10, 0x1e, 0xe0, 0x90, 0x70, 0x2a, 0xf0, 
+0xc2, 0x05, 0xd2, 0xaf, 0x22, 0x12, 0x02, 0xc8, 0x30, 0x45, 0x03, 0x12, 0x10, 0x03, 0x30, 0x01, 
+0x06, 0x20, 0x09, 0x03, 0x12, 0x10, 0x1c, 0x30, 0x02, 0x06, 0x20, 0x0a, 0x03, 0x12, 0x10, 0x1f, 
+0x30, 0x03, 0x06, 0x20, 0x0b, 0x03, 0x12, 0x10, 0x1f, 0x30, 0x04, 0x06, 0x20, 0x0c, 0x03, 0x12, 
+0x10, 0x22, 0x20, 0x13, 0x09, 0x20, 0x11, 0x06, 0xe5, 0x2b, 0x45, 0x2c, 0x60, 0x03, 0xd3, 0x80, 
+0x01, 0xc3, 0x92, 0xa9, 0x12, 0x03, 0x1c, 0x80, 0xbf, 0xc2, 0x43, 0xd2, 0x45, 0xe4, 0xf5, 0x20, 
+0xf5, 0x21, 0xf5, 0x53, 0xf5, 0x46, 0xf5, 0x2b, 0xf5, 0x2c, 0xc2, 0x42, 0xf5, 0x51, 0xf5, 0x52, 
+0xf5, 0x55, 0x90, 0x04, 0x18, 0x74, 0x80, 0xf0, 0x90, 0x04, 0x1a, 0x74, 0x08, 0xf0, 0xc2, 0x1a, 
+0xc2, 0x18, 0xc2, 0x1b, 0x22, 0xc8, 0xef, 0xc8, 0xe6, 0xfa, 0x08, 0xe6, 0x4a, 0x60, 0x0c, 0xc8, 
+0xef, 0xc8, 0x08, 0xe6, 0x16, 0x18, 0x70, 0x01, 0x16, 0xc3, 0x22, 0xed, 0x24, 0xff, 0xfd, 0xec, 
+0x34, 0xff, 0xc8, 0xef, 0xc8, 0xf6, 0x08, 0xc6, 0xed, 0xc6, 0xd3, 0x22, 0xd0, 0x83, 0xd0, 0x82, 
+0xf8, 0xe4, 0x93, 0x70, 0x12, 0x74, 0x01, 0x93, 0x70, 0x0d, 0xa3, 0xa3, 0x93, 0xf8, 0x74, 0x01, 
+0x93, 0xf5, 0x82, 0x88, 0x83, 0xe4, 0x73, 0x74, 0x02, 0x93, 0x68, 0x60, 0xef, 0xa3, 0xa3, 0xa3, 
+0x80, 0xdf, 0xef, 0xf4, 0x60, 0x1f, 0xe4, 0xfe, 0x12, 0x03, 0x67, 0xe0, 0xb4, 0xff, 0x12, 0x12, 
+0x03, 0x67, 0xef, 0xf0, 0x74, 0x1c, 0x2e, 0xf5, 0x82, 0xe4, 0x34, 0x70, 0xf5, 0x83, 0xed, 0xf0, 
+0x22, 0x0e, 0xbe, 0x04, 0xe3, 0x22, 0xc0, 0xe0, 0xc0, 0xf0, 0xc0, 0x83, 0xc0, 0x82, 0xc0, 0xd0, 
+0x75, 0xd0, 0x08, 0xc2, 0xaf, 0x30, 0x45, 0x03, 0x12, 0x10, 0x06, 0xd2, 0xaf, 0xd0, 0xd0, 0xd0, 
+0x82, 0xd0, 0x83, 0xd0, 0xf0, 0xd0, 0xe0, 0x32, 0xc2, 0xaf, 0x12, 0x00, 0x06, 0x12, 0x02, 0x09, 
+0x12, 0x02, 0xe1, 0xe4, 0xf5, 0x22, 0xf5, 0x47, 0x90, 0x04, 0x00, 0x74, 0x80, 0xf0, 0xd2, 0xaf, 
+0x22, 0x75, 0x89, 0x02, 0xe4, 0xf5, 0x8c, 0xf5, 0x8a, 0xf5, 0x88, 0xf5, 0xb8, 0xf5, 0xe8, 0x75, 
+0x90, 0x18, 0xd2, 0x8c, 0x75, 0xa8, 0x05, 0x22, 0xef, 0x60, 0x03, 0x1f, 0x80, 0xfa, 0x22, 0xff, 
+0xc0, 0x26, 0x74, 0x03, 0xc0, 0xe0, 0xc0, 0x82, 0xc0, 0x83, 0x75, 0x26, 0x0a, 0x22, 0xc0, 0x26, 
+0x74, 0x03, 0xc0, 0xe0, 0xc0, 0x82, 0xc0, 0x83, 0x75, 0x26, 0x18, 0x22, 0x30, 0x45, 0x03, 0x12, 
+0x10, 0x15, 0xe5, 0x20, 0x70, 0x03, 0x20, 0x10, 0x03, 0x30, 0x11, 0x03, 0x43, 0x87, 0x01, 0x22, 
+0xce, 0xef, 0xce, 0xee, 0x60, 0x08, 0x7f, 0xff, 0x12, 0x02, 0xf8, 0x1e, 0x80, 0xf5, 0x22, 0xc8, 
+0xef, 0xc8, 0xe6, 0x60, 0x03, 0x16, 0xc3, 0x22, 0xed, 0x14, 0xf6, 0xd3, 0x22, 0xc8, 0xef, 0xc8, 
+0xe6, 0x60, 0x06, 0x16, 0xe6, 0x24, 0xff, 0xb3, 0x22, 0xc3, 0x22, 0x78, 0x7f, 0xe4, 0xf6, 0xd8, 
+0xfd, 0x75, 0x81, 0x5f, 0x02, 0x01, 0xc5, 0x74, 0x14, 0x2e, 0xf5, 0x82, 0xe4, 0x34, 0x70, 0xf5, 
+0x83, 0x22, 0xef, 0x90, 0x03, 0x7b, 0x93, 0x90, 0x03, 0x00, 0x73, 0x0a, 0x18, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
+0xff, 0xff, 0xff, 0x02, 0x10, 0x28, 0x02, 0x10, 0x3b, 0x02, 0x10, 0x3c, 0x02, 0x13, 0xbc, 0x02, 
+0x13, 0xbd, 0x02, 0x14, 0x72, 0x02, 0x14, 0x73, 0xc3, 0x22, 0xff, 0xff, 0x02, 0x19, 0x4a, 0x02, 
+0x1a, 0xf4, 0x02, 0x15, 0x6c, 0x02, 0x14, 0xa7, 0x30, 0x05, 0x06, 0x20, 0x0d, 0x03, 0x12, 0x01, 
+0x7a, 0x30, 0x06, 0x06, 0x20, 0x0e, 0x03, 0x12, 0x1c, 0x2e, 0x22, 0x22, 0x90, 0x04, 0x14, 0xe0, 
+0x20, 0xe7, 0x03, 0x02, 0x13, 0xbb, 0x90, 0x70, 0x12, 0xe0, 0xf5, 0x56, 0x90, 0x04, 0x04, 0xe0, 
+0x12, 0x02, 0x5c, 0x10, 0xfb, 0x30, 0x10, 0xd2, 0x31, 0x10, 0x93, 0x33, 0x10, 0xa1, 0x34, 0x10, 
+0xb4, 0x35, 0x10, 0xab, 0x36, 0x11, 0x09, 0x50, 0x11, 0x4e, 0x51, 0x11, 0x57, 0x52, 0x11, 0x57, 
+0x53, 0x11, 0x57, 0x54, 0x11, 0x93, 0x55, 0x11, 0xf0, 0x56, 0x12, 0x43, 0x70, 0x12, 0x69, 0x71, 
+0x12, 0x92, 0x72, 0x13, 0x3e, 0x73, 0x13, 0x61, 0x80, 0x13, 0x88, 0x83, 0x13, 0xa0, 0x84, 0x00, 
+0x00, 0x13, 0xbb, 0xd2, 0x18, 0xd2, 0x61, 0x75, 0x35, 0x2a, 0x75, 0x32, 0x0b, 0x75, 0x33, 0xb8, 
+0x22, 0xc2, 0x18, 0x90, 0x01, 0x14, 0xe0, 0x54, 0xfd, 0xf0, 0x22, 0x90, 0x70, 0x11, 0xe0, 0xf5, 
+0x3c, 0x02, 0x13, 0xb5, 0xe5, 0x55, 0xb4, 0x02, 0x0f, 0xe5, 0x58, 0x30, 0xe0, 0x06, 0x90, 0x01, 
+0x0d, 0x74, 0x08, 0xf0, 0x7d, 0x01, 0x80, 0x02, 0x7d, 0x02, 0xaf, 0x56, 0x12, 0x02, 0x82, 0x02, 
+0x13, 0xb5, 0x20, 0x02, 0x03, 0x30, 0x03, 0x0a, 0x7d, 0x02, 0xaf, 0x56, 0x12, 0x02, 0x82, 0x02, 
+0x13, 0xb5, 0xe5, 0x34, 0xd3, 0x94, 0x01, 0x40, 0x0c, 0x90, 0x01, 0x0c, 0xe0, 0x44, 0x02, 0xf0, 
+0xa3, 0xe0, 0x44, 0x04, 0xf0, 0x85, 0x56, 0x41, 0xd2, 0x02, 0x22, 0x90, 0x70, 0x11, 0xe0, 0xf4, 
+0x70, 0x03, 0x02, 0x13, 0xbb, 0xe0, 0xf5, 0x30, 0x22, 0xe5, 0x34, 0xd3, 0x94, 0x01, 0x40, 0x07, 
+0xe5, 0x55, 0x60, 0x03, 0x02, 0x13, 0xbb, 0x90, 0x70, 0x10, 0xe0, 0x54, 0x7f, 0xff, 0xbf, 0x0a, 
+0x0d, 0x90, 0x70, 0x11, 0xe0, 0xb4, 0x08, 0x06, 0x75, 0x4e, 0x01, 0x75, 0x4f, 0x84, 0x90, 0x70, 
+0x10, 0xe0, 0x54, 0x7f, 0xff, 0xbf, 0x02, 0x12, 0x90, 0x70, 0x11, 0xe0, 0x64, 0x08, 0x60, 0x04, 
+0xe0, 0xb4, 0x20, 0x06, 0x75, 0x4e, 0x03, 0x75, 0x4f, 0x20, 0xe4, 0xf5, 0x27, 0x22, 0x90, 0x70, 
+0x11, 0xe0, 0x24, 0xff, 0x92, 0x47, 0x22, 0xe5, 0x34, 0xd3, 0x94, 0x01, 0x40, 0x07, 0xe5, 0x55, 
+0x60, 0x03, 0x02, 0x13, 0x49, 0x90, 0x04, 0x04, 0xe0, 0x25, 0xe0, 0x24, 0x5d, 0xf5, 0x57, 0x90, 
+0x70, 0x10, 0xe0, 0xff, 0x74, 0x47, 0x25, 0x57, 0xf8, 0xc6, 0xef, 0xc6, 0x90, 0x70, 0x11, 0xe0, 
+0xff, 0x74, 0x48, 0x25, 0x57, 0xf8, 0xc6, 0xef, 0xc6, 0xe4, 0xfd, 0xaf, 0x56, 0x12, 0x02, 0x82, 
+0x02, 0x13, 0xb5, 0xe5, 0x34, 0xd3, 0x94, 0x01, 0x40, 0x07, 0xe5, 0x55, 0x60, 0x03, 0x02, 0x13, 
+0x49, 0xe5, 0x47, 0x64, 0x07, 0x60, 0x1d, 0xe5, 0x47, 0x64, 0x08, 0x60, 0x17, 0xe5, 0x47, 0x64, 
+0x09, 0x60, 0x11, 0xe5, 0x47, 0x64, 0x0a, 0x60, 0x0b, 0xe5, 0x47, 0x64, 0x0b, 0x60, 0x05, 0xe5, 
+0x47, 0xb4, 0x0c, 0x08, 0x90, 0x70, 0x11, 0xe0, 0x54, 0x0f, 0xf5, 0x3a, 0xe5, 0x47, 0xb4, 0x09, 
+0x08, 0xe5, 0x3a, 0xb4, 0x03, 0x03, 0xe4, 0xf5, 0x46, 0xe5, 0x47, 0xb4, 0x0a, 0x08, 0xe5, 0x3a, 
+0xb4, 0x01, 0x03, 0xe4, 0xf5, 0x46, 0xe4, 0xfd, 0xaf, 0x56, 0x12, 0x02, 0x82, 0xd2, 0x04, 0x22, 
+0x90, 0x70, 0x11, 0xe0, 0xf4, 0xff, 0x90, 0x70, 0x10, 0xe0, 0x5f, 0xff, 0x90, 0x70, 0x11, 0xe0, 
+0x55, 0x27, 0x4f, 0x90, 0x70, 0x18, 0xf0, 0x90, 0x70, 0x11, 0xe0, 0x90, 0x70, 0x19, 0xf0, 0xe4, 
+0xfd, 0xaf, 0x56, 0x12, 0x02, 0x82, 0x30, 0x15, 0x03, 0xd2, 0x14, 0x22, 0x90, 0x70, 0x18, 0xe0, 
+0xf5, 0x27, 0x90, 0x02, 0x29, 0xe0, 0xff, 0x90, 0x70, 0x19, 0xe0, 0xfe, 0xef, 0x5e, 0x90, 0x02, 
+0x29, 0xf0, 0x30, 0x47, 0x04, 0xaf, 0x27, 0x80, 0x04, 0xe5, 0x27, 0xf4, 0xff, 0x90, 0x02, 0x28, 
+0xef, 0xf0, 0x22, 0xe5, 0x34, 0xd3, 0x94, 0x01, 0x40, 0x07, 0xe5, 0x55, 0x60, 0x03, 0x02, 0x13, 
+0x49, 0x90, 0x70, 0x10, 0xe0, 0xfe, 0x90, 0x70, 0x11, 0xe0, 0xfd, 0xed, 0xf8, 0xe6, 0xf5, 0x57, 
+0xfd, 0xaf, 0x56, 0x12, 0x02, 0x82, 0x02, 0x13, 0xb5, 0xe5, 0x34, 0xd3, 0x94, 0x01, 0x40, 0x07, 
+0xe5, 0x55, 0x60, 0x03, 0x02, 0x13, 0x49, 0x90, 0x70, 0x10, 0xe0, 0xfe, 0x90, 0x70, 0x11, 0xe0, 
+0xfd, 0xed, 0xf5, 0x82, 0x8e, 0x83, 0xe0, 0xf5, 0x57, 0xfd, 0xaf, 0x56, 0x12, 0x02, 0x82, 0x02, 
+0x13, 0xb5, 0x90, 0x10, 0x00, 0xe0, 0xf5, 0x57, 0xe4, 0xf5, 0x58, 0xf5, 0x59, 0x90, 0x10, 0x03, 
+0xe0, 0xb4, 0x28, 0x05, 0x75, 0x58, 0x01, 0x80, 0x3c, 0x90, 0x10, 0x03, 0xe0, 0xb4, 0x30, 0x05, 
+0x75, 0x58, 0x02, 0x80, 0x30, 0x90, 0x10, 0x03, 0xe0, 0xb4, 0x33, 0x05, 0x75, 0x58, 0x04, 0x80, 
+0x24, 0x90, 0x10, 0x03, 0xe0, 0xb4, 0x35, 0x0c, 0x90, 0x10, 0x02, 0xe0, 0xb4, 0x72, 0x05, 0x75, 
+0x58, 0x08, 0x80, 0x11, 0x90, 0x10, 0x03, 0xe0, 0xb4, 0x35, 0x0a, 0x90, 0x10, 0x02, 0xe0, 0xb4, 
+0x93, 0x03, 0x75, 0x58, 0x10, 0xe5, 0x58, 0x30, 0xe1, 0x19, 0x90, 0x05, 0x08, 0xe0, 0x44, 0x01, 
+0xf0, 0xfd, 0x90, 0x05, 0x05, 0xe0, 0x54, 0xfb, 0xf0, 0x44, 0x04, 0xf0, 0xed, 0x54, 0xfe, 0x90, 
+0x05, 0x08, 0xf0, 0xe4, 0xf5, 0x4e, 0xf5, 0x4f, 0x75, 0x3a, 0xff, 0xc2, 0x1a, 0xc2, 0x18, 0xc2, 
+0x1b, 0xf5, 0x34, 0x90, 0x05, 0xa4, 0x74, 0x11, 0xf0, 0xa3, 0x74, 0xff, 0xf0, 0xa3, 0x74, 0x03, 
+0xf0, 0xe4, 0xf5, 0x30, 0xc2, 0x19, 0x90, 0x01, 0x0d, 0xe0, 0x44, 0x40, 0xf0, 0x75, 0x3c, 0xff, 
+0xad, 0x57, 0xaf, 0x56, 0x12, 0x02, 0x82, 0xe4, 0x90, 0x70, 0x32, 0xf0, 0x80, 0x77, 0xe5, 0x34, 
+0xd3, 0x94, 0x01, 0x40, 0x0b, 0xe5, 0x55, 0x60, 0x07, 0x7d, 0x03, 0xaf, 0x56, 0x02, 0x02, 0x82, 
+0x90, 0x70, 0x10, 0xe0, 0x24, 0xff, 0x92, 0x93, 0xe4, 0xfd, 0xaf, 0x56, 0x12, 0x02, 0x82, 0x80, 
+0x54, 0xe5, 0x34, 0xd3, 0x94, 0x01, 0x40, 0x0d, 0xe5, 0x55, 0x60, 0x09, 0x7d, 0x03, 0xaf, 0x56, 
+0x12, 0x02, 0x82, 0x80, 0x40, 0x90, 0x70, 0x10, 0xe0, 0x24, 0xff, 0x92, 0x4a, 0xd2, 0x05, 0xad, 
+0x57, 0xaf, 0x56, 0x12, 0x02, 0x82, 0x80, 0x2d, 0xe4, 0xf5, 0x34, 0xf5, 0x30, 0x90, 0x70, 0x10, 
+0xe0, 0xf4, 0x60, 0x03, 0xe0, 0xf5, 0x34, 0xad, 0x57, 0xaf, 0x56, 0x12, 0x02, 0x82, 0x80, 0x15, 
+0xd2, 0x19, 0x05, 0x2f, 0xe5, 0x2f, 0xb4, 0x1a, 0x03, 0xe4, 0xf5, 0x2f, 0xd2, 0x04, 0xad, 0x57, 
+0xaf, 0x56, 0x12, 0x02, 0x82, 0x90, 0x04, 0x14, 0x74, 0x80, 0xf0, 0x22, 0x22, 0xe5, 0x34, 0xc3, 
+0x94, 0x03, 0x40, 0x17, 0xe5, 0x55, 0xb4, 0x02, 0x12, 0xe5, 0x30, 0x60, 0x0e, 0x30, 0x60, 0x0b, 
+0x74, 0xfd, 0x25, 0x46, 0xf5, 0x46, 0xd2, 0x04, 0xe4, 0xf5, 0x53, 0xe5, 0x53, 0x60, 0x03, 0x02, 
+0x14, 0x71, 0x30, 0x60, 0x21, 0xb2, 0x4d, 0x30, 0x4d, 0x1c, 0xe5, 0x34, 0xc3, 0x94, 0x03, 0x40, 
+0x11, 0xe5, 0x55, 0xb4, 0x02, 0x0c, 0xe5, 0x30, 0x60, 0x08, 0x74, 0x03, 0x25, 0x46, 0xf5, 0x46, 
+0x80, 0x02, 0x05, 0x46, 0xc2, 0x04, 0xe5, 0x4f, 0x45, 0x4e, 0x60, 0x08, 0xe5, 0x4f, 0x15, 0x4f, 
+0x70, 0x02, 0x15, 0x4e, 0x30, 0x1a, 0x49, 0x7f, 0x32, 0x7d, 0xb8, 0x7c, 0x0b, 0x12, 0x02, 0x35, 
+0x50, 0x06, 0x90, 0x04, 0x10, 0x74, 0x40, 0xf0, 0x7f, 0x35, 0x7d, 0x32, 0x12, 0x03, 0x3f, 0x50, 
+0x09, 0x90, 0x10, 0x04, 0xe0, 0x54, 0xf7, 0xf0, 0xd2, 0x06, 0xe5, 0x35, 0xd3, 0x94, 0x2d, 0x40, 
+0x30, 0x30, 0x1b, 0x2d, 0xc2, 0x1b, 0xa2, 0x18, 0x92, 0x1a, 0x20, 0x1a, 0x24, 0x90, 0x04, 0x09, 
+0xe0, 0x54, 0xdd, 0xf0, 0x90, 0x10, 0x04, 0xe0, 0x44, 0x08, 0xf0, 0xc2, 0x61, 0xd2, 0x03, 0x22, 
+0xe4, 0xf5, 0x35, 0xa2, 0x18, 0x92, 0x1a, 0x30, 0x1a, 0x07, 0x90, 0x04, 0x09, 0xe0, 0x44, 0x22, 
+0xf0, 0x22, 0x22, 0x30, 0x14, 0x30, 0x90, 0x70, 0x19, 0xe0, 0x55, 0x27, 0xff, 0x90, 0x70, 0x18, 
+0xe0, 0x4f, 0xf5, 0x27, 0x90, 0x02, 0x29, 0xe0, 0xff, 0x90, 0x70, 0x19, 0xe0, 0xfe, 0xef, 0x5e, 
+0x90, 0x02, 0x29, 0xf0, 0x30, 0x47, 0x04, 0xaf, 0x27, 0x80, 0x04, 0xe5, 0x27, 0xf4, 0xff, 0x90, 
+0x02, 0x28, 0xef, 0xf0, 0xc2, 0x14, 0x22, 0xc2, 0x4b, 0xc2, 0x4c, 0xe5, 0x44, 0x12, 0x02, 0x5c, 
+0x14, 0xc9, 0x00, 0x15, 0x57, 0x04, 0x15, 0x53, 0x08, 0x15, 0x33, 0x10, 0x14, 0xdd, 0x20, 0x14, 
+0xfd, 0x60, 0x15, 0x0e, 0xa0, 0x00, 0x00, 0x15, 0x59, 0x85, 0x48, 0x43, 0x85, 0x4a, 0x42, 0x85, 
+0x4c, 0x5e, 0xe5, 0x47, 0x64, 0x06, 0x60, 0x03, 0x02, 0x15, 0x59, 0x80, 0x1b, 0xe5, 0x48, 0xc4, 
+0x54, 0x0f, 0xf5, 0x43, 0xe5, 0x4a, 0xc4, 0x54, 0x0f, 0xf5, 0x42, 0xe5, 0x4c, 0xc4, 0x54, 0x0f, 
+0xf5, 0x5e, 0xe5, 0x47, 0x64, 0x06, 0x70, 0x61, 0x53, 0x43, 0x0f, 0x80, 0x5c, 0x85, 0x49, 0x43, 
+0x85, 0x4b, 0x42, 0x85, 0x4d, 0x5e, 0xe5, 0x47, 0x64, 0x06, 0x70, 0x4d, 0x80, 0x1b, 0xe5, 0x49, 
+0xc4, 0x54, 0x0f, 0xf5, 0x43, 0xe5, 0x4b, 0xc4, 0x54, 0x0f, 0xf5, 0x42, 0xe5, 0x4d, 0xc4, 0x54, 
+0x0f, 0xf5, 0x5e, 0xe5, 0x47, 0x64, 0x06, 0x70, 0x30, 0xe5, 0x43, 0x54, 0x0f, 0x44, 0x10, 0xf5, 
+0x43, 0x80, 0x26, 0xe5, 0x47, 0x64, 0x04, 0x60, 0x05, 0xe5, 0x47, 0xb4, 0x05, 0x06, 0x43, 0x5e, 
+0x04, 0x75, 0x42, 0x09, 0xe5, 0x47, 0xb4, 0x06, 0x10, 0xe5, 0x43, 0x54, 0x0f, 0x44, 0x30, 0xf5, 
+0x43, 0x80, 0x06, 0xd2, 0x4b, 0x80, 0x02, 0xd2, 0x4c, 0xe4, 0xf5, 0x2a, 0xe5, 0x42, 0xc4, 0x54, 
+0xf0, 0xff, 0xe5, 0x43, 0x54, 0x0f, 0x4f, 0xf5, 0x5f, 0xd2, 0x60, 0x22, 0xd2, 0x15, 0xe5, 0x47, 
+0x24, 0xf5, 0x60, 0x0b, 0x24, 0xcb, 0x60, 0x07, 0x24, 0x40, 0x70, 0x06, 0xc2, 0x15, 0x22, 0x12, 
+0x19, 0x15, 0x12, 0x15, 0x8e, 0xc2, 0x15, 0xc2, 0xaf, 0xc2, 0x04, 0xd2, 0xaf, 0x22, 0xc2, 0xaf, 
+0x90, 0x04, 0x14, 0xe0, 0x54, 0x0e, 0x60, 0x04, 0xd2, 0x1c, 0x80, 0x08, 0xe5, 0x4e, 0x45, 0x4f, 
+0x24, 0xff, 0x92, 0x1c, 0xd2, 0xaf, 0x90, 0x04, 0x14, 0xe0, 0xa2, 0xe4, 0x92, 0x1d, 0x74, 0x1e, 
+0xf0, 0xe5, 0x5f, 0x54, 0x0f, 0xf5, 0x2d, 0xe5, 0x2a, 0x70, 0x13, 0x30, 0x1c, 0x05, 0xe5, 0x5f, 
+0x20, 0xe5, 0x0b, 0x30, 0x1d, 0x29, 0xe5, 0x5f, 0x54, 0x30, 0x64, 0x30, 0x70, 0x21, 0xe5, 0x2a, 
+0x70, 0x15, 0xe5, 0x34, 0xc3, 0x94, 0x03, 0x40, 0x09, 0xe5, 0x30, 0x60, 0x05, 0x75, 0x2a, 0x05, 
+0x80, 0x07, 0x75, 0x2a, 0x0c, 0x80, 0x02, 0x15, 0x2a, 0xd2, 0x6c, 0xd2, 0x6d, 0x80, 0x0f, 0xe5, 
+0x5f, 0x30, 0xe6, 0x06, 0xc2, 0x6c, 0xd2, 0x6d, 0x80, 0x04, 0xd2, 0x6c, 0xc2, 0x6d, 0xe5, 0x47, 
+0x64, 0x03, 0x70, 0x21, 0x30, 0x4b, 0x06, 0xc2, 0x6c, 0xd2, 0x6d, 0x80, 0x18, 0xe5, 0x2a, 0x70, 
+0x03, 0x30, 0x4c, 0x11, 0xc2, 0x4c, 0xe5, 0x2a, 0x70, 0x05, 0x75, 0x2a, 0x07, 0x80, 0x02, 0x15, 
+0x2a, 0xd2, 0x6c, 0xd2, 0x6d, 0xe5, 0x47, 0xb4, 0x09, 0x14, 0xe5, 0x44, 0x20, 0xe3, 0x0b, 0xe5, 
+0x3a, 0x64, 0x02, 0x60, 0x05, 0xe5, 0x3a, 0xb4, 0x03, 0x04, 0xc2, 0x6c, 0xd2, 0x6d, 0xe5, 0x47, 
+0xb4, 0x0a, 0x13, 0xe5, 0x3a, 0xb4, 0x01, 0x06, 0xc2, 0x6c, 0xd2, 0x6d, 0x80, 0x08, 0xe5, 0x3a, 
+0x70, 0x04, 0xd2, 0x6c, 0xc2, 0x6d, 0x20, 0x69, 0x07, 0xe5, 0x5e, 0x20, 0xe0, 0x02, 0xb2, 0x68, 
+0x20, 0x6b, 0x07, 0xe5, 0x5e, 0x20, 0xe1, 0x02, 0xb2, 0x6a, 0x20, 0x6d, 0x07, 0xe5, 0x5e, 0x20, 
+0xe2, 0x02, 0xb2, 0x6c, 0x75, 0x2e, 0x40, 0x20, 0x69, 0x04, 0xa2, 0x68, 0x80, 0x45, 0x30, 0x68, 
+0x06, 0xe5, 0x46, 0xa2, 0xe2, 0x80, 0x3c, 0x30, 0x19, 0x1c, 0xe5, 0x5e, 0x20, 0xe0, 0x04, 0x7f, 
+0x01, 0x80, 0x02, 0x7f, 0x00, 0xe5, 0x2f, 0xb4, 0x19, 0x04, 0x7e, 0x01, 0x80, 0x02, 0x7e, 0x00, 
+0xee, 0x6f, 0x24, 0xff, 0x80, 0x1d, 0xe5, 0x5e, 0x20, 0xe0, 0x04, 0x7f, 0x01, 0x80, 0x02, 0x7f, 
+0x00, 0xe5, 0x46, 0x54, 0xf0, 0xfe, 0xbe, 0xf0, 0x04, 0x7e, 0x01, 0x80, 0x02, 0x7e, 0x00, 0xee, 
+0x6f, 0x24, 0xff, 0x92, 0x73, 0x92, 0x72, 0x20, 0x6b, 0x04, 0xa2, 0x6a, 0x80, 0x45, 0x30, 0x6a, 
+0x06, 0xe5, 0x46, 0xa2, 0xe2, 0x80, 0x3c, 0x30, 0x19, 0x1c, 0xe5, 0x5e, 0x20, 0xe1, 0x04, 0x7f, 
+0x01, 0x80, 0x02, 0x7f, 0x00, 0xe5, 0x2f, 0xb4, 0x19, 0x04, 0x7e, 0x01, 0x80, 0x02, 0x7e, 0x00, 
+0xee, 0x6f, 0x24, 0xff, 0x80, 0x1d, 0xe5, 0x5e, 0x20, 0xe1, 0x04, 0x7f, 0x01, 0x80, 0x02, 0x7f, 
+0x00, 0xe5, 0x46, 0x54, 0xf0, 0xfe, 0xbe, 0xf0, 0x04, 0x7e, 0x01, 0x80, 0x02, 0x7e, 0x00, 0xee, 
+0x6f, 0x24, 0xff, 0x92, 0x75, 0x92, 0x74, 0x20, 0x6d, 0x04, 0xa2, 0x6c, 0x80, 0x26, 0xe5, 0x47, 
+0x64, 0x0a, 0x70, 0x22, 0x30, 0x6c, 0x06, 0xe5, 0x46, 0xa2, 0xe3, 0x80, 0x17, 0xe5, 0x3a, 0xb4, 
+0x01, 0x06, 0xe5, 0x46, 0xa2, 0xe3, 0x80, 0x53, 0xe5, 0x46, 0x20, 0xe4, 0x03, 0x30, 0xe5, 0x03, 
+0xd3, 0x80, 0x01, 0xc3, 0x80, 0x45, 0x30, 0x6c, 0x06, 0xe5, 0x46, 0xa2, 0xe2, 0x80, 0x3c, 0x30, 
+0x19, 0x1c, 0xe5, 0x5e, 0x20, 0xe2, 0x04, 0x7f, 0x01, 0x80, 0x02, 0x7f, 0x00, 0xe5, 0x2f, 0xb4, 
+0x19, 0x04, 0x7e, 0x01, 0x80, 0x02, 0x7e, 0x00, 0xee, 0x6f, 0x24, 0xff, 0x80, 0x1d, 0xe5, 0x5e, 
+0x20, 0xe2, 0x04, 0x7f, 0x01, 0x80, 0x02, 0x7f, 0x00, 0xe5, 0x46, 0x54, 0xf0, 0xfe, 0xbe, 0xf0, 
+0x04, 0x7e, 0x01, 0x80, 0x02, 0x7e, 0x00, 0xee, 0x6f, 0x24, 0xff, 0x92, 0x71, 0x92, 0x70, 0x90, 
+0x10, 0x00, 0xe0, 0x90, 0x10, 0x2c, 0xf0, 0x90, 0x10, 0x03, 0xe0, 0xc3, 0x94, 0x30, 0x40, 0x14, 
+0xa2, 0x71, 0x92, 0x77, 0xa2, 0x70, 0x92, 0x76, 0xe5, 0x2e, 0x13, 0x13, 0x54, 0x3f, 0xf5, 0x2e, 
+0xc2, 0x77, 0xd2, 0x76, 0x90, 0x10, 0x2f, 0xe5, 0x2e, 0xf0, 0xe5, 0x47, 0x64, 0x06, 0x70, 0x39, 
+0x90, 0x02, 0x29, 0xe0, 0x54, 0xfe, 0xf0, 0xe5, 0x43, 0xc4, 0x54, 0x0f, 0x14, 0x60, 0x0c, 0x24, 
+0xfe, 0x60, 0x0c, 0x24, 0x03, 0x70, 0x13, 0xc2, 0x38, 0x80, 0x0f, 0xd2, 0x38, 0x80, 0x0b, 0xe5, 
+0x46, 0x30, 0xe2, 0x03, 0xd3, 0x80, 0x01, 0xc3, 0x92, 0x38, 0x30, 0x47, 0x05, 0xaf, 0x27, 0x02, 
+0x19, 0x0f, 0xe5, 0x27, 0xf4, 0xff, 0x02, 0x19, 0x0f, 0xe5, 0x47, 0x64, 0x07, 0x60, 0x0f, 0xe5, 
+0x47, 0x64, 0x08, 0x60, 0x09, 0xe5, 0x47, 0x64, 0x09, 0x60, 0x03, 0x02, 0x18, 0x8e, 0x90, 0x02, 
+0x29, 0xe0, 0x54, 0xfc, 0xf0, 0xe5, 0x3a, 0x14, 0x60, 0x22, 0x14, 0x60, 0x25, 0x14, 0x60, 0x2d, 
+0x24, 0xfc, 0x60, 0x49, 0x24, 0xf9, 0x60, 0x14, 0x24, 0x0e, 0x70, 0x50, 0xe5, 0x46, 0x13, 0x13, 
+0x54, 0x3f, 0x75, 0xf0, 0x03, 0x84, 0xe5, 0xf0, 0x24, 0xff, 0x80, 0x3a, 0xd2, 0x39, 0xc2, 0x38, 
+0x80, 0x3e, 0xe5, 0x46, 0x30, 0xe2, 0x03, 0xd3, 0x80, 0x1d, 0xc3, 0x80, 0x1a, 0xe5, 0x46, 0x30, 
+0xe2, 0x0d, 0x54, 0x38, 0xc3, 0x94, 0x30, 0x50, 0x06, 0x7e, 0x00, 0x7f, 0x01, 0x80, 0x04, 0x7e, 
+0x00, 0x7f, 0x00, 0xee, 0x4f, 0x24, 0xff, 0x92, 0x38, 0xc2, 0x39, 0x80, 0x13, 0xe5, 0x46, 0x30, 
+0xe2, 0x03, 0xd3, 0x80, 0x01, 0xc3, 0x92, 0x39, 0xc2, 0x38, 0x80, 0x04, 0xc2, 0x38, 0xc2, 0x39, 
+0x30, 0x47, 0x04, 0xaf, 0x27, 0x80, 0x04, 0xe5, 0x27, 0xf4, 0xff, 0x02, 0x19, 0x0f, 0xe5, 0x47, 
+0x64, 0x0c, 0x60, 0x06, 0xe5, 0x47, 0x64, 0x0b, 0x70, 0x7a, 0x90, 0x02, 0x29, 0xe0, 0x54, 0xfd, 
+0xf0, 0xe5, 0x3a, 0x14, 0x60, 0x20, 0x14, 0x60, 0x21, 0x14, 0x60, 0x2b, 0x24, 0xfc, 0x60, 0x45, 
+0x24, 0xf9, 0x60, 0x12, 0x24, 0x0e, 0x70, 0x4a, 0xe5, 0x46, 0x13, 0x13, 0x54, 0x3f, 0x75, 0xf0, 
+0x03, 0x84, 0xe5, 0xf0, 0x80, 0x29, 0xd2, 0x39, 0x80, 0x3a, 0xe5, 0x46, 0x30, 0xe2, 0x03, 0xd3, 
+0x80, 0x01, 0xc3, 0x92, 0x39, 0x80, 0x2d, 0xe5, 0x46, 0x30, 0xe2, 0x0d, 0x54, 0x38, 0xc3, 0x94, 
+0x30, 0x50, 0x06, 0x7e, 0x00, 0x7f, 0x01, 0x80, 0x04, 0x7e, 0x00, 0x7f, 0x00, 0xee, 0x4f, 0x24, 
+0xff, 0x92, 0x39, 0x80, 0x0f, 0xe5, 0x46, 0x30, 0xe2, 0x03, 0xd3, 0x80, 0x01, 0xc3, 0x92, 0x39, 
+0x80, 0x02, 0xc2, 0x39, 0x30, 0x47, 0x04, 0xaf, 0x27, 0x80, 0x04, 0xe5, 0x27, 0xf4, 0xff, 0x90, 
+0x02, 0x28, 0xef, 0xf0, 0x22, 0xe5, 0x47, 0xb4, 0x0b, 0x10, 0x90, 0x02, 0x29, 0xe0, 0x54, 0xeb, 
+0xf0, 0xe5, 0x27, 0x54, 0xeb, 0x45, 0x45, 0xf5, 0x27, 0x22, 0xe4, 0x90, 0x02, 0x29, 0xf0, 0x30, 
+0x47, 0x04, 0xaf, 0x45, 0x80, 0x04, 0xe5, 0x45, 0xf4, 0xff, 0x90, 0x02, 0x28, 0xef, 0xf0, 0x22, 
+0x8f, 0x50, 0xd2, 0x59, 0x22, 0x8f, 0x54, 0xd2, 0x58, 0x22, 0xe4, 0xf5, 0x37, 0xc2, 0xaf, 0xe5, 
+0x51, 0x14, 0x60, 0x4a, 0x14, 0x60, 0x6b, 0x24, 0x02, 0x60, 0x03, 0x02, 0x1a, 0xd5, 0xd2, 0x59, 
+0x75, 0x55, 0x01, 0x20, 0x1a, 0x1c, 0x90, 0x02, 0x08, 0xe0, 0x54, 0xfe, 0xf0, 0xe0, 0x20, 0xe1, 
+0x23, 0x90, 0x04, 0x34, 0xe0, 0xb4, 0x02, 0x1c, 0xa3, 0xe0, 0xb4, 0x02, 0x17, 0xa3, 0xe0, 0xb4, 
+0x02, 0x12, 0x7f, 0x20, 0x12, 0x19, 0x40, 0x90, 0x10, 0x04, 0xe0, 0x54, 0xf3, 0xf0, 0x75, 0x51, 
+0x01, 0x02, 0x1a, 0xd5, 0xe5, 0x50, 0x70, 0x06, 0x75, 0x37, 0x03, 0x02, 0x1a, 0xd5, 0x90, 0x12, 
+0x00, 0xe0, 0x54, 0x03, 0x70, 0x15, 0x7f, 0x20, 0x12, 0x19, 0x40, 0x20, 0x1a, 0x07, 0x90, 0x02, 
+0x08, 0xe0, 0x54, 0xfb, 0xf0, 0x75, 0x51, 0x02, 0x02, 0x1a, 0xd5, 0xe5, 0x50, 0x70, 0x03, 0x02, 
+0x1a, 0xd0, 0x20, 0x1a, 0x15, 0x90, 0x02, 0x08, 0xe0, 0x30, 0xe3, 0x03, 0x02, 0x1a, 0xcc, 0x90, 
+0x04, 0x37, 0xe0, 0x64, 0x22, 0x60, 0x03, 0x02, 0x1a, 0xcc, 0x90, 0x12, 0x04, 0x74, 0x0a, 0xf0, 
+0xe5, 0x58, 0x30, 0xe3, 0x15, 0xe4, 0x90, 0x05, 0x00, 0xf0, 0xa3, 0x74, 0x08, 0xf0, 0xa3, 0x74, 
+0x01, 0xf0, 0x74, 0x03, 0xf0, 0x7f, 0x01, 0x12, 0x03, 0x30, 0x90, 0x13, 0x28, 0xe0, 0x90, 0x70, 
+0x1a, 0xf0, 0x90, 0x13, 0x29, 0xe0, 0x90, 0x70, 0x1b, 0xf0, 0x90, 0x13, 0x2b, 0xe0, 0x90, 0x70, 
+0x22, 0xf0, 0x90, 0x13, 0x28, 0xe0, 0x54, 0xf0, 0xf0, 0xa3, 0xe0, 0x54, 0xf0, 0xf0, 0x90, 0x13, 
+0x2b, 0xe0, 0x54, 0xcc, 0xf0, 0xe5, 0x58, 0x30, 0xe3, 0x17, 0xe5, 0x34, 0x70, 0x13, 0xe5, 0x3c, 
+0xf4, 0x90, 0x13, 0x2a, 0x60, 0x05, 0xe0, 0x54, 0xf3, 0x80, 0x11, 0xe0, 0x54, 0xfb, 0xf0, 0x80, 
+0x14, 0xe5, 0x3c, 0xf4, 0x90, 0x13, 0x2a, 0x60, 0x08, 0xe0, 0x54, 0xf2, 0x45, 0x3c, 0xf0, 0x80, 
+0x04, 0xe0, 0x54, 0xfa, 0xf0, 0x20, 0x1a, 0x07, 0x90, 0x04, 0x01, 0xe0, 0x44, 0x10, 0xf0, 0xe5, 
+0x34, 0xd3, 0x94, 0x01, 0x40, 0x09, 0xe5, 0x30, 0x70, 0x05, 0x75, 0x8c, 0x40, 0x80, 0x03, 0x75, 
+0x8c, 0x80, 0x90, 0x04, 0x01, 0xe0, 0x54, 0xfd, 0xf0, 0x20, 0x1a, 0x07, 0x90, 0x12, 0x04, 0xe0, 
+0x44, 0x04, 0xf0, 0xe5, 0x58, 0x30, 0xe0, 0x06, 0x90, 0x01, 0x0d, 0xe0, 0xf5, 0x31, 0xe5, 0x34, 
+0xd3, 0x94, 0x01, 0x40, 0x2c, 0x90, 0x01, 0x0d, 0xe0, 0x44, 0x01, 0xf0, 0xe5, 0x58, 0x20, 0xe3, 
+0x0c, 0xe5, 0x34, 0xb4, 0x03, 0x07, 0x90, 0x12, 0x04, 0xe0, 0x54, 0xfd, 0xf0, 0x20, 0x02, 0x11, 
+0x20, 0x03, 0x0e, 0x90, 0x01, 0x0d, 0xe0, 0x54, 0xfb, 0xf0, 0x90, 0x01, 0x0c, 0xe0, 0x54, 0xfd, 
+0xf0, 0x75, 0x37, 0x01, 0x75, 0x55, 0x02, 0xe4, 0xf5, 0x51, 0x80, 0x09, 0xe5, 0x50, 0x70, 0x05, 
+0x75, 0x37, 0x03, 0xf5, 0x51, 0xe5, 0x37, 0x60, 0x18, 0xc2, 0x01, 0xe4, 0xf5, 0x51, 0xc2, 0x59, 
+0x20, 0x1a, 0x0e, 0xad, 0x37, 0xaf, 0x40, 0x12, 0x1b, 0xfa, 0xe5, 0x37, 0xb4, 0x03, 0x02, 0xd2, 
+0x03, 0xd2, 0xaf, 0x22, 0xc2, 0xaf, 0x30, 0x01, 0x0e, 0xe4, 0xf5, 0x51, 0xc2, 0x59, 0xc2, 0x01, 
+0x7d, 0x02, 0xaf, 0x40, 0x12, 0x1b, 0xfa, 0xe5, 0x52, 0x14, 0x60, 0x56, 0x14, 0x60, 0x33, 0x24, 
+0x02, 0x60, 0x03, 0x02, 0x1b, 0xf7, 0xe5, 0x34, 0xd3, 0x94, 0x01, 0x40, 0x1f, 0x90, 0x01, 0x0c, 
+0xe0, 0x44, 0x02, 0xf0, 0xa3, 0xe0, 0x44, 0x04, 0xf0, 0x90, 0x12, 0x04, 0xe0, 0x44, 0x02, 0xf0, 
+0x7f, 0x32, 0x12, 0x03, 0x30, 0x90, 0x01, 0x0d, 0xe0, 0x54, 0xfe, 0xf0, 0x75, 0x52, 0x02, 0x75, 
+0x55, 0x03, 0xe5, 0x58, 0x30, 0xe0, 0x06, 0x90, 0x01, 0x0d, 0xe5, 0x31, 0xf0, 0x90, 0x12, 0x04, 
+0xe0, 0x54, 0xfb, 0xf0, 0x7f, 0x20, 0x12, 0x19, 0x45, 0x75, 0x52, 0x01, 0x75, 0x55, 0x03, 0x02, 
+0x1b, 0xf7, 0xe5, 0x54, 0x60, 0x03, 0x02, 0x1b, 0xf7, 0x90, 0x04, 0x01, 0xe0, 0x44, 0x0e, 0xf0, 
+0x20, 0x1a, 0x04, 0xe0, 0x54, 0xef, 0xf0, 0xe4, 0xf5, 0x8c, 0xe5, 0x58, 0x54, 0x18, 0x60, 0x1e, 
+0x90, 0x70, 0x1a, 0xe0, 0x90, 0x13, 0x28, 0xf0, 0x90, 0x70, 0x1b, 0xe0, 0x90, 0x13, 0x29, 0xf0, 
+0xa3, 0x74, 0x05, 0xf0, 0x90, 0x70, 0x22, 0xe0, 0x90, 0x13, 0x2b, 0xf0, 0x80, 0x11, 0x90, 0x13, 
+0x28, 0xe0, 0x44, 0x0f, 0xf0, 0xa3, 0xe0, 0x44, 0x0f, 0xf0, 0xa3, 0xe0, 0x44, 0x05, 0xf0, 0x90, 
+0x12, 0x04, 0x74, 0x03, 0xf0, 0xe5, 0x58, 0x30, 0xe3, 0x16, 0x90, 0x05, 0x00, 0x74, 0xe2, 0xf0, 
+0xa3, 0x74, 0x08, 0xf0, 0xa3, 0x74, 0x01, 0xf0, 0x74, 0x03, 0xf0, 0x7f, 0x01, 0x12, 0x03, 0x30, 
+0x20, 0x1a, 0x07, 0x90, 0x02, 0x08, 0xe0, 0x44, 0x05, 0xf0, 0x90, 0x10, 0x04, 0xe0, 0x44, 0x0c, 
+0xf0, 0xe4, 0xf5, 0x52, 0xf5, 0x55, 0x30, 0x02, 0x09, 0xc2, 0x02, 0x7d, 0x01, 0xaf, 0x41, 0x12, 
+0x1b, 0xfa, 0x30, 0x03, 0x02, 0xc2, 0x03, 0xd2, 0xaf, 0x22, 0xef, 0xf4, 0x60, 0x2d, 0xe4, 0xfe, 
+0x74, 0x14, 0x2e, 0xf5, 0x82, 0xe4, 0x34, 0x70, 0xf5, 0x83, 0xe0, 0xb4, 0xff, 0x19, 0x74, 0x14, 
+0x2e, 0xf5, 0x82, 0xe4, 0x34, 0x70, 0xf5, 0x83, 0xef, 0xf0, 0x74, 0x1c, 0x2e, 0xf5, 0x82, 0xe4, 
+0x34, 0x70, 0xf5, 0x83, 0xed, 0xf0, 0x22, 0x0e, 0xbe, 0x04, 0xd5, 0x22, 0x22, 0x22, 0x30, 0x1a, 
+0x77, 0x90, 0x04, 0x37, 0xe0, 0x20, 0xe5, 0x6c, 0x90, 0x04, 0x28, 0xe0, 0xf5, 0x38, 0xa3, 0xe0, 
+0xf5, 0x37, 0xf5, 0x39, 0xe4, 0xf5, 0x25, 0xe5, 0x39, 0x75, 0xf0, 0x80, 0xa4, 0x24, 0x00, 0xff, 
+0xe5, 0xf0, 0x34, 0x80, 0xfe, 0xe5, 0x37, 0x65, 0x39, 0x70, 0x05, 0xfc, 0x7d, 0x28, 0x80, 0x04, 
+0x7c, 0x00, 0x7d, 0x00, 0xef, 0x2d, 0xff, 0xee, 0x3c, 0xfe, 0x12, 0x1c, 0xa9, 0x50, 0x07, 0x90, 
+0x01, 0x14, 0xe0, 0x44, 0x02, 0xf0, 0xe5, 0x39, 0x65, 0x38, 0x60, 0x10, 0xe4, 0x25, 0x39, 0xff, 
+0xe4, 0x34, 0x80, 0x8f, 0x82, 0xf5, 0x83, 0xe0, 0xf5, 0x39, 0x80, 0xbb, 0x90, 0x04, 0x10, 0x74, 
+0x01, 0xf0, 0x90, 0x04, 0x28, 0xe5, 0x38, 0xf0, 0xa3, 0xe5, 0x37, 0xf0, 0x90, 0x04, 0x11, 0x74, 
+0x01, 0xf0, 0x80, 0x8d, 0xc2, 0x06, 0xd2, 0x1b, 0x22, 0xe5, 0x25, 0xc3, 0x94, 0x06, 0x50, 0x19, 
+0x8f, 0x82, 0x8e, 0x83, 0xe0, 0xb4, 0xff, 0x07, 0x05, 0x25, 0xe4, 0xf5, 0x24, 0x80, 0x2e, 0xe4, 
+0xf5, 0x25, 0x8f, 0x82, 0x8e, 0x83, 0xf0, 0x80, 0x24, 0xe5, 0x24, 0x75, 0xf0, 0x06, 0x84, 0x74, 
+0x08, 0x25, 0xf0, 0xf5, 0x82, 0xe4, 0x34, 0x10, 0xf5, 0x83, 0xe0, 0xfd, 0x8f, 0x82, 0x8e, 0x83, 
+0xe0, 0x6d, 0x70, 0x06, 0x05, 0x25, 0x05, 0x24, 0x80, 0x03, 0xe4, 0xf5, 0x25, 0x0f, 0xbf, 0x00, 
+0x01, 0x0e, 0xef, 0x54, 0x7f, 0x60, 0x07, 0xe5, 0x25, 0xc3, 0x94, 0x2a, 0x40, 0xab, 0xe5, 0x25, 
+0xb4, 0x2a, 0x03, 0xd3, 0x80, 0x01, 0xc3, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
+0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x53, 0x88, } ;
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/iface/rtmp_pci.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/iface/rtmp_pci.h
new file mode 100644
index 000000000..0665a77b4
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/iface/rtmp_pci.h
@@ -0,0 +1,99 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+    Module Name:
+	rtmp_pci.h
+ 
+    Abstract:
+ 
+    Revision History:
+    Who          When          What
+    ---------    ----------    ----------------------------------------------
+*/
+
+#ifndef __RTMP_PCI_H__
+#define __RTMP_PCI_H__
+
+#define RT28XX_HANDLE_DEV_ASSIGN(handle, dev_p)				\
+	((POS_COOKIE)handle)->pci_dev = dev_p;
+
+
+#ifdef LINUX
+// set driver data
+#define RT28XX_DRVDATA_SET(_a)			pci_set_drvdata(_a, net_dev);
+
+#define RT28XX_PUT_DEVICE(dev_p)
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)
+#ifndef SA_SHIRQ
+#define SA_SHIRQ IRQF_SHARED
+#endif
+#endif
+
+#ifdef PCI_MSI_SUPPORT
+#define RTMP_MSI_ENABLE(_pAd) \
+	{     POS_COOKIE _pObj = (POS_COOKIE)(_pAd->OS_Cookie); \
+		(_pAd)->HaveMsi = pci_enable_msi(_pObj->pci_dev) == 0 ? TRUE : FALSE; \
+	}
+
+#define RTMP_MSI_DISABLE(_pAd) \
+	{     POS_COOKIE _pObj = (POS_COOKIE)(_pAd->OS_Cookie); \
+		if (_pAd->HaveMsi == TRUE) \
+			pci_disable_msi(_pObj->pci_dev); \
+		_pAd->HaveMsi = FALSE;  \
+	}
+#else
+#define RTMP_MSI_ENABLE(_pAd)		do{}while(0)
+#define RTMP_MSI_DISABLE(_pAd)		do{}while(0)
+#endif // PCI_MSI_SUPPORT //
+
+#define RTMP_PCI_DEV_UNMAP()										\
+{	if (net_dev->base_addr)	{								\
+		iounmap((void *)(net_dev->base_addr));				\
+		release_mem_region(pci_resource_start(dev_p, 0),	\
+							pci_resource_len(dev_p, 0)); }	\
+	if (net_dev->irq) pci_release_regions(dev_p); }
+
+
+#define PCI_REG_READ_WORD(pci_dev, offset, Configuration)   \
+    if (pci_read_config_word(pci_dev, offset, &reg16) == 0)     \
+        Configuration = le2cpu16(reg16);                        \
+    else                                                        \
+        Configuration = 0;
+
+#define PCI_REG_WIRTE_WORD(pci_dev, offset, Configuration)  \
+    reg16 = cpu2le16(Configuration);                        \
+    pci_write_config_word(pci_dev, offset, reg16);
+
+#endif // LINUX //
+
+#define CMDTHREAD_CHAN_RESCAN					0x0D730101	// cmd
+#define CMDTHREAD_REG_HINT						0x0D730102	// cmd
+#define CMDTHREAD_REG_HINT_11D					0x0D730103	// cmd
+#define CMDTHREAD_SCAN_END						0x0D730104	// cmd
+#define CMDTHREAD_CONNECT_RESULT_INFORM			0x0D730105	// cmd
+
+#endif // __RTMP_PCI_H__ //
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/link_list.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/link_list.h
new file mode 100644
index 000000000..a2358e165
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/link_list.h
@@ -0,0 +1,134 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+ */
+
+#ifndef __LINK_LIST_H__
+#define __LINK_LIST_H__
+
+typedef struct _LIST_ENTRY
+{
+	struct _LIST_ENTRY *pNext;
+} LIST_ENTRY, *PLIST_ENTRY;
+
+typedef struct _LIST_HEADR
+{
+	PLIST_ENTRY pHead;
+	PLIST_ENTRY pTail;
+	UCHAR size;
+} LIST_HEADER, *PLIST_HEADER;
+
+static inline VOID initList(
+	IN PLIST_HEADER pList)
+{
+	pList->pHead = pList->pTail = NULL;
+	pList->size = 0;
+	return;
+}
+
+static inline VOID insertTailList(
+	IN PLIST_HEADER pList,
+	IN PLIST_ENTRY pEntry)
+{
+	pEntry->pNext = NULL;
+	if (pList->pTail)
+		pList->pTail->pNext = pEntry;
+	else
+		pList->pHead = pEntry;
+	pList->pTail = pEntry;
+	pList->size++;
+
+	return;
+}
+
+static inline PLIST_ENTRY removeHeadList(
+	IN PLIST_HEADER pList)
+{
+	PLIST_ENTRY pNext;
+	PLIST_ENTRY pEntry;
+
+	pEntry = pList->pHead;
+	if (pList->pHead != NULL)
+	{
+		pNext = pList->pHead->pNext;
+		pList->pHead = pNext;
+		if (pNext == NULL)
+			pList->pTail = NULL;
+		pList->size--;
+	}
+	return pEntry;
+}
+
+static inline int getListSize(
+	IN PLIST_HEADER pList)
+{
+	return pList->size;
+}
+
+static inline PLIST_ENTRY delEntryList(
+	IN PLIST_HEADER pList,
+	IN PLIST_ENTRY pEntry)
+{
+	PLIST_ENTRY pCurEntry;
+	PLIST_ENTRY pPrvEntry;
+
+	if(pList->pHead == NULL)
+		return NULL;
+
+	if(pEntry == pList->pHead)
+	{
+		pCurEntry = pList->pHead;
+		pList->pHead = pCurEntry->pNext;
+
+		if(pList->pHead == NULL)
+			pList->pTail = NULL;
+
+		pList->size--;
+		return pCurEntry;
+	}
+
+	pPrvEntry = pList->pHead;
+	pCurEntry = pPrvEntry->pNext;
+	while(pCurEntry != NULL)
+	{
+		if (pEntry == pCurEntry)
+		{
+			pPrvEntry->pNext = pCurEntry->pNext;
+
+			if(pEntry == pList->pTail)
+				pList->pTail = pPrvEntry;
+
+			pList->size--;
+			break;
+		}
+		pPrvEntry = pCurEntry;
+		pCurEntry = pPrvEntry->pNext;
+	}
+
+	return pCurEntry;
+}
+
+#endif // ___LINK_LIST_H__ //
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/mlme.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/mlme.h
new file mode 100644
index 000000000..c94178a36
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/mlme.h
@@ -0,0 +1,1360 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+	Module Name:
+	mlme.h
+
+	Abstract:
+
+	Revision History:
+	Who			When			What
+	--------	----------		----------------------------------------------
+	John Chang	2003-08-28		Created
+	John Chang  2004-09-06      modified for RT2600
+	
+*/
+#ifndef __MLME_H__
+#define __MLME_H__
+
+#include "rtmp_dot11.h"
+
+#ifdef CONFIG_STA_SUPPORT
+#endif // CONFIG_STA_SUPPORT //
+
+// maximum supported capability information - 
+// ESS, IBSS, Privacy, Short Preamble, Spectrum mgmt, Short Slot
+#define SUPPORTED_CAPABILITY_INFO   0x0533
+
+#define END_OF_ARGS                 -1
+#define LFSR_MASK                   0x80000057
+#define MLME_TASK_EXEC_INTV         100/*200*/       //  
+#define LEAD_TIME                   5
+#define MLME_TASK_EXEC_MULTIPLE       10  /*5*/       // MLME_TASK_EXEC_MULTIPLE * MLME_TASK_EXEC_INTV = 1 sec
+#define REORDER_EXEC_INTV         	100       // 0.1 sec
+//#define TBTT_PRELOAD_TIME         384        // usec. LomgPreamble + 24-byte at 1Mbps
+
+// The definition of Radar detection duration region
+#define CE		0
+#define FCC		1
+#define JAP		2
+#define JAP_W53	3
+#define JAP_W56	4
+#define MAX_RD_REGION 5
+
+#define BEACON_LOST_TIME            4 * OS_HZ    // 2048 msec = 2 sec
+
+#define DLS_TIMEOUT                 1200      // unit: msec
+#define AUTH_TIMEOUT                300       // unit: msec
+#define ASSOC_TIMEOUT               300       // unit: msec
+#define JOIN_TIMEOUT                2000        // unit: msec
+#define SHORT_CHANNEL_TIME          90        // unit: msec
+#define MIN_CHANNEL_TIME            110        // unit: msec, for dual band scan
+#define MAX_CHANNEL_TIME            140       // unit: msec, for single band scan
+#define	FAST_ACTIVE_SCAN_TIME	    30 		  // Active scan waiting for probe response time
+#define CW_MIN_IN_BITS              4         // actual CwMin = 2^CW_MIN_IN_BITS - 1
+#define LINK_DOWN_TIMEOUT           20000      // unit: msec
+#define AUTO_WAKEUP_TIMEOUT			70			//unit: msec
+
+
+#ifdef CONFIG_STA_SUPPORT
+#define CW_MAX_IN_BITS              10        // actual CwMax = 2^CW_MAX_IN_BITS - 1
+#endif // CONFIG_STA_SUPPORT //
+
+#ifdef CONFIG_APSTA_MIXED_SUPPORT
+extern UINT32 CW_MAX_IN_BITS;
+#endif // CONFIG_APSTA_MIXED_SUPPORT //
+
+// Note: RSSI_TO_DBM_OFFSET has been changed to variable for new RF (2004-0720).
+// SHould not refer to this constant anymore
+//#define RSSI_TO_DBM_OFFSET          120 // for RT2530 RSSI-115 = dBm
+#define RSSI_FOR_MID_TX_POWER       -55  // -55 db is considered mid-distance
+#define RSSI_FOR_LOW_TX_POWER       -45  // -45 db is considered very short distance and 
+                                        // eligible to use a lower TX power
+#define RSSI_FOR_LOWEST_TX_POWER    -30
+//#define MID_TX_POWER_DELTA          0   // 0 db from full TX power upon mid-distance to AP
+#define LOW_TX_POWER_DELTA          6    // -3 db from full TX power upon very short distance. 1 grade is 0.5 db
+#define LOWEST_TX_POWER_DELTA       16   // -8 db from full TX power upon shortest distance. 1 grade is 0.5 db
+
+#define RSSI_TRIGGERED_UPON_BELOW_THRESHOLD     0
+#define RSSI_TRIGGERED_UPON_EXCCEED_THRESHOLD   1
+#define RSSI_THRESHOLD_FOR_ROAMING              25
+#define RSSI_DELTA                              5
+
+// Channel Quality Indication
+#define CQI_IS_GOOD(cqi)            ((cqi) >= 50)
+//#define CQI_IS_FAIR(cqi)          (((cqi) >= 20) && ((cqi) < 50))
+#define CQI_IS_POOR(cqi)            (cqi < 50)  //(((cqi) >= 5) && ((cqi) < 20))
+#define CQI_IS_BAD(cqi)             (cqi < 5)
+#define CQI_IS_DEAD(cqi)            (cqi == 0)
+
+// weighting factor to calculate Channel quality, total should be 100%
+#define RSSI_WEIGHTING                   50
+#define TX_WEIGHTING                     30
+#define RX_WEIGHTING                     20
+
+//#define PEER_KEY_NOT_USED                0
+//#define PEER_KEY_64_BIT                  64
+//#define PEER_KEY_128_BIT                 128
+
+//#define PEER_KEY_64BIT_LEN               8
+//#define PEER_KEY_128BIT_LEN              16
+
+#define BSS_NOT_FOUND                    0xFFFFFFFF
+
+
+#ifdef CONFIG_STA_SUPPORT
+#define MAX_LEN_OF_MLME_QUEUE            40 //10
+#endif // CONFIG_STA_SUPPORT //
+
+#define SCAN_PASSIVE                     18		// scan with no probe request, only wait beacon and probe response
+#define SCAN_ACTIVE                      19		// scan with probe request, and wait beacon and probe response
+#define	SCAN_CISCO_PASSIVE				 20		// Single channel passive scan
+#define	SCAN_CISCO_ACTIVE				 21		// Single channel active scan
+#define	SCAN_CISCO_NOISE				 22		// Single channel passive scan for noise histogram collection
+#define	SCAN_CISCO_CHANNEL_LOAD			 23		// Single channel passive scan for channel load collection
+#define FAST_SCAN_ACTIVE                 24		// scan with probe request, and wait beacon and probe response
+
+#ifdef DOT11N_DRAFT3
+#define SCAN_2040_BSS_COEXIST                  26
+#endif // DOT11N_DRAFT3 //
+
+//#define BSS_TABLE_EMPTY(x)             ((x).BssNr == 0)
+#define MAC_ADDR_IS_GROUP(Addr)       (((Addr[0]) & 0x01))
+#define MAC_ADDR_HASH(Addr)            (Addr[0] ^ Addr[1] ^ Addr[2] ^ Addr[3] ^ Addr[4] ^ Addr[5])
+#define MAC_ADDR_HASH_INDEX(Addr)      (MAC_ADDR_HASH(Addr) & (HASH_TABLE_SIZE - 1))
+#define TID_MAC_HASH(Addr,TID)            (TID^Addr[0] ^ Addr[1] ^ Addr[2] ^ Addr[3] ^ Addr[4] ^ Addr[5])
+#define TID_MAC_HASH_INDEX(Addr,TID)      (TID_MAC_HASH(Addr,TID) & (HASH_TABLE_SIZE - 1))
+
+// LED Control
+// assoiation ON. one LED ON. another blinking when TX, OFF when idle
+// no association, both LED off
+#define ASIC_LED_ACT_ON(pAd)        RTMP_IO_WRITE32(pAd, MAC_CSR14, 0x00031e46)
+#define ASIC_LED_ACT_OFF(pAd)       RTMP_IO_WRITE32(pAd, MAC_CSR14, 0x00001e46)
+
+// bit definition of the 2-byte pBEACON->Capability field
+#define CAP_IS_ESS_ON(x)                 (((x) & 0x0001) != 0)
+#define CAP_IS_IBSS_ON(x)                (((x) & 0x0002) != 0)
+#define CAP_IS_CF_POLLABLE_ON(x)         (((x) & 0x0004) != 0)
+#define CAP_IS_CF_POLL_REQ_ON(x)         (((x) & 0x0008) != 0)
+#define CAP_IS_PRIVACY_ON(x)             (((x) & 0x0010) != 0)
+#define CAP_IS_SHORT_PREAMBLE_ON(x)      (((x) & 0x0020) != 0)
+#define CAP_IS_PBCC_ON(x)                (((x) & 0x0040) != 0)
+#define CAP_IS_AGILITY_ON(x)             (((x) & 0x0080) != 0)
+#define CAP_IS_SPECTRUM_MGMT(x)          (((x) & 0x0100) != 0)  // 802.11e d9
+#define CAP_IS_QOS(x)                    (((x) & 0x0200) != 0)  // 802.11e d9
+#define CAP_IS_SHORT_SLOT(x)             (((x) & 0x0400) != 0)
+#define CAP_IS_APSD(x)                   (((x) & 0x0800) != 0)  // 802.11e d9
+#define CAP_IS_IMMED_BA(x)               (((x) & 0x1000) != 0)  // 802.11e d9
+#define CAP_IS_DSSS_OFDM(x)              (((x) & 0x2000) != 0)
+#define CAP_IS_DELAY_BA(x)               (((x) & 0x4000) != 0)  // 802.11e d9
+
+#define CAP_GENERATE(ess,ibss,priv,s_pre,s_slot,spectrum)  (((ess) ? 0x0001 : 0x0000) | ((ibss) ? 0x0002 : 0x0000) | ((priv) ? 0x0010 : 0x0000) | ((s_pre) ? 0x0020 : 0x0000) | ((s_slot) ? 0x0400 : 0x0000) | ((spectrum) ? 0x0100 : 0x0000))
+
+//#define STA_QOS_CAPABILITY               0 // 1-byte. see 802.11e d9.0 for bit definition
+
+#define ERP_IS_NON_ERP_PRESENT(x)        (((x) & 0x01) != 0)    // 802.11g
+#define ERP_IS_USE_PROTECTION(x)         (((x) & 0x02) != 0)    // 802.11g
+#define ERP_IS_USE_BARKER_PREAMBLE(x)    (((x) & 0x04) != 0)    // 802.11g
+
+#define DRS_TX_QUALITY_WORST_BOUND       8// 3  // just test by gary
+#define DRS_PENALTY                      8
+
+#define BA_NOTUSE 	2
+//BA Policy subfiled value in ADDBA frame
+#define IMMED_BA 	1
+#define DELAY_BA	0
+
+// BA Initiator subfield in DELBA frame
+#define ORIGINATOR	1
+#define RECIPIENT	0
+
+// ADDBA Status Code
+#define ADDBA_RESULTCODE_SUCCESS					0
+#define ADDBA_RESULTCODE_REFUSED					37
+#define ADDBA_RESULTCODE_INVALID_PARAMETERS			38
+
+// DELBA Reason Code
+#define DELBA_REASONCODE_QSTA_LEAVING				36
+#define DELBA_REASONCODE_END_BA						37
+#define DELBA_REASONCODE_UNKNOWN_BA					38
+#define DELBA_REASONCODE_TIMEOUT					39
+
+// reset all OneSecTx counters
+#define RESET_ONE_SEC_TX_CNT(__pEntry) \
+if (((__pEntry)) != NULL) \
+{ \
+	(__pEntry)->OneSecTxRetryOkCount = 0; \
+	(__pEntry)->OneSecTxFailCount = 0; \
+	(__pEntry)->OneSecTxNoRetryOkCount = 0; \
+}
+
+
+//
+// 802.11 frame formats
+//
+//  HT Capability INFO field in HT Cap IE .   
+typedef struct GNU_PACKED {
+#ifdef RT_BIG_ENDIAN
+	USHORT	LSIGTxopProSup:1;
+	USHORT	Forty_Mhz_Intolerant:1;
+	USHORT	PSMP:1;
+	USHORT	CCKmodein40:1;
+	USHORT	AMsduSize:1;
+	USHORT	DelayedBA:1;	//rt2860c not support
+	USHORT	RxSTBC:2;
+	USHORT	TxSTBC:1;
+	USHORT	ShortGIfor40:1;	//for40MHz
+	USHORT	ShortGIfor20:1;
+	USHORT	GF:1;	//green field
+	USHORT	MimoPs:2;//momi power safe
+	USHORT	ChannelWidth:1;
+	USHORT	AdvCoding:1;
+#else
+	USHORT	AdvCoding:1;
+	USHORT	ChannelWidth:1;
+	USHORT	MimoPs:2;//momi power safe
+	USHORT	GF:1;	//green field
+	USHORT	ShortGIfor20:1;
+	USHORT	ShortGIfor40:1;	//for40MHz
+	USHORT	TxSTBC:1;
+	USHORT	RxSTBC:2;
+	USHORT	DelayedBA:1;	//rt2860c not support
+	USHORT	AMsduSize:1;	// only support as zero
+	USHORT	CCKmodein40:1;
+	USHORT	PSMP:1;
+	USHORT	Forty_Mhz_Intolerant:1;
+	USHORT	LSIGTxopProSup:1;
+#endif	/* !RT_BIG_ENDIAN */
+} HT_CAP_INFO, *PHT_CAP_INFO;
+
+//  HT Capability INFO field in HT Cap IE .   
+typedef struct GNU_PACKED {
+#ifdef RT_BIG_ENDIAN
+	UCHAR	rsv:3;//momi power safe
+	UCHAR	MpduDensity:3;
+	UCHAR	MaxRAmpduFactor:2;
+#else
+	UCHAR	MaxRAmpduFactor:2;
+	UCHAR	MpduDensity:3;
+	UCHAR	rsv:3;//momi power safe
+#endif /* !RT_BIG_ENDIAN */
+} HT_CAP_PARM, *PHT_CAP_PARM;
+
+//  HT Capability INFO field in HT Cap IE .   
+typedef struct GNU_PACKED {
+	UCHAR	MCSSet[10];
+	UCHAR	SupRate[2];  // unit : 1Mbps
+#ifdef RT_BIG_ENDIAN
+	UCHAR	rsv:3;
+	UCHAR	MpduDensity:1;
+	UCHAR	TxStream:2;
+	UCHAR	TxRxNotEqual:1;
+	UCHAR	TxMCSSetDefined:1; 
+#else
+	UCHAR	TxMCSSetDefined:1; 
+	UCHAR	TxRxNotEqual:1;
+	UCHAR	TxStream:2;
+	UCHAR	MpduDensity:1;
+	UCHAR	rsv:3;
+#endif // RT_BIG_ENDIAN //
+	UCHAR	rsv3[3];  
+} HT_MCS_SET, *PHT_MCS_SET;
+
+//  HT Capability INFO field in HT Cap IE .  
+typedef struct GNU_PACKED {
+#ifdef RT_BIG_ENDIAN 
+	USHORT	rsv2:4;
+	USHORT	RDGSupport:1;	//reverse Direction Grant  support
+	USHORT	PlusHTC:1;	//+HTC control field support
+	USHORT	MCSFeedback:2;	//0:no MCS feedback, 2:unsolicited MCS feedback, 3:Full MCS feedback,  1:rsv.
+	USHORT	rsv:5;//momi power safe
+	USHORT	TranTime:2;
+	USHORT	Pco:1;
+#else
+	USHORT	Pco:1;
+	USHORT	TranTime:2;
+	USHORT	rsv:5;//momi power safe
+	USHORT	MCSFeedback:2;	//0:no MCS feedback, 2:unsolicited MCS feedback, 3:Full MCS feedback,  1:rsv.
+	USHORT	PlusHTC:1;	//+HTC control field support
+	USHORT	RDGSupport:1;	//reverse Direction Grant  support
+	USHORT	rsv2:4;
+#endif /* RT_BIG_ENDIAN */
+} EXT_HT_CAP_INFO, *PEXT_HT_CAP_INFO;
+
+//  HT Beamforming field in HT Cap IE .   
+typedef struct GNU_PACKED _HT_BF_CAP{
+#ifdef RT_BIG_ENDIAN
+	ULONG	rsv:3;
+	ULONG	ChanEstimation:2;
+	ULONG	CSIRowBFSup:2;
+	ULONG	ComSteerBFAntSup:2;
+	ULONG	NoComSteerBFAntSup:2;
+	ULONG	CSIBFAntSup:2;
+	ULONG	MinGrouping:2;
+	ULONG	ExpComBF:2;	
+	ULONG	ExpNoComBF:2;
+	ULONG	ExpCSIFbk:2;
+	ULONG	ExpComSteerCapable:1;
+	ULONG	ExpNoComSteerCapable:1;
+	ULONG	ExpCSICapable:1;
+	ULONG	Calibration:2;
+	ULONG	ImpTxBFCapable:1;
+	ULONG	TxNDPCapable:1;	
+	ULONG	RxNDPCapable:1;	
+	ULONG	TxSoundCapable:1;
+	ULONG	RxSoundCapable:1;
+	ULONG	TxBFRecCapable:1;
+#else
+	ULONG	TxBFRecCapable:1;
+	ULONG	RxSoundCapable:1;
+	ULONG	TxSoundCapable:1;
+	ULONG	RxNDPCapable:1;	
+	ULONG	TxNDPCapable:1;	
+	ULONG	ImpTxBFCapable:1;	
+	ULONG	Calibration:2;
+	ULONG	ExpCSICapable:1;
+	ULONG	ExpNoComSteerCapable:1;
+	ULONG	ExpComSteerCapable:1;
+	ULONG	ExpCSIFbk:2;	
+	ULONG	ExpNoComBF:2;	
+	ULONG	ExpComBF:2;	
+	ULONG	MinGrouping:2;
+	ULONG	CSIBFAntSup:2;
+	ULONG	NoComSteerBFAntSup:2;
+	ULONG	ComSteerBFAntSup:2;
+	ULONG	CSIRowBFSup:2;
+	ULONG	ChanEstimation:2;
+	ULONG	rsv:3;
+#endif // RT_BIG_ENDIAN //
+} HT_BF_CAP, *PHT_BF_CAP;
+
+//  HT antenna selection field in HT Cap IE .   
+typedef struct GNU_PACKED _HT_AS_CAP{
+#ifdef RT_BIG_ENDIAN
+	UCHAR	rsv:1;
+	UCHAR	TxSoundPPDU:1;
+	UCHAR	RxASel:1;
+	UCHAR	AntIndFbk:1;
+	UCHAR	ExpCSIFbk:1;
+	UCHAR	AntIndFbkTxASEL:1;
+	UCHAR	ExpCSIFbkTxASEL:1;
+	UCHAR	AntSelect:1; 
+#else
+	UCHAR	AntSelect:1; 
+	UCHAR	ExpCSIFbkTxASEL:1;
+	UCHAR	AntIndFbkTxASEL:1;
+	UCHAR	ExpCSIFbk:1;
+	UCHAR	AntIndFbk:1;
+	UCHAR	RxASel:1;
+	UCHAR	TxSoundPPDU:1;
+	UCHAR	rsv:1;
+#endif // RT_BIG_ENDIAN //
+} HT_AS_CAP, *PHT_AS_CAP;
+
+// Draft 1.0 set IE length 26, but is extensible..
+#define SIZE_HT_CAP_IE		26
+// The structure for HT Capability IE.
+typedef struct GNU_PACKED _HT_CAPABILITY_IE{
+	HT_CAP_INFO		HtCapInfo;
+	HT_CAP_PARM		HtCapParm;
+//	HT_MCS_SET		HtMCSSet;
+	UCHAR			MCSSet[16];
+	EXT_HT_CAP_INFO	ExtHtCapInfo;
+	HT_BF_CAP		TxBFCap;	// beamforming cap. rt2860c not support beamforming.
+	HT_AS_CAP		ASCap;	//antenna selection.
+} HT_CAPABILITY_IE, *PHT_CAPABILITY_IE;
+
+
+// 802.11n draft3 related structure definitions.
+// 7.3.2.60
+#define dot11OBSSScanPassiveDwell							20	// in TU. min amount of time that the STA continously scans each channel when performing an active OBSS scan.
+#define dot11OBSSScanActiveDwell							10	// in TU.min amount of time that the STA continously scans each channel when performing an passive OBSS scan.
+#define dot11BSSWidthTriggerScanInterval					300  // in sec. max interval between scan operations to be performed to detect BSS channel width trigger events.
+#define dot11OBSSScanPassiveTotalPerChannel					200	// in TU. min total amount of time that the STA scans each channel when performing a passive OBSS scan.
+#define dot11OBSSScanActiveTotalPerChannel					20	//in TU. min total amount of time that the STA scans each channel when performing a active OBSS scan
+#define dot11BSSWidthChannelTransactionDelayFactor			5	// min ratio between the delay time in performing a switch from 20MHz BSS to 20/40 BSS operation and the maximum
+																//	interval between overlapping BSS scan operations.
+#define dot11BSSScanActivityThreshold						25	// in %%, max total time that a STA may be active on the medium during a period of 
+																//	(dot11BSSWidthChannelTransactionDelayFactor * dot11BSSWidthTriggerScanInterval) seconds without
+																//	being obligated to perform OBSS Scan operations. default is 25(== 0.25%)
+
+typedef struct GNU_PACKED _OVERLAP_BSS_SCAN_IE{
+	USHORT		ScanPassiveDwell;
+	USHORT		ScanActiveDwell;
+	USHORT		TriggerScanInt;				// Trigger scan interval
+	USHORT		PassiveTalPerChannel;		// passive total per channel
+	USHORT		ActiveTalPerChannel;		// active total per channel
+	USHORT		DelayFactor;				// BSS width channel transition delay factor
+	USHORT		ScanActThre;				// Scan Activity threshold
+}OVERLAP_BSS_SCAN_IE, *POVERLAP_BSS_SCAN_IE;
+
+
+//  7.3.2.56. 20/40 Coexistence element used in  Element ID = 72 = IE_2040_BSS_COEXIST
+typedef union GNU_PACKED _BSS_2040_COEXIST_IE{
+ struct GNU_PACKED {
+ #ifdef RT_BIG_ENDIAN
+	UCHAR	rsv:3;
+ 	UCHAR	ObssScanExempGrant:1;
+	UCHAR	ObssScanExempReq:1;
+	UCHAR	BSS20WidthReq:1;
+	UCHAR	Intolerant40:1;	
+	UCHAR	InfoReq:1; 
+ #else
+	UCHAR	InfoReq:1;
+	UCHAR	Intolerant40:1;			// Inter-BSS. set 1 when prohibits a receiving BSS from operating as a 20/40 Mhz BSS.
+	UCHAR	BSS20WidthReq:1;		// Intra-BSS set 1 when prohibits a receiving AP from operating its BSS as a 20/40MHz BSS.
+	UCHAR	ObssScanExempReq:1;
+	UCHAR	ObssScanExempGrant:1;
+	UCHAR	rsv:3;
+#endif // RT_BIG_ENDIAN //
+    } field;
+ UCHAR   word;
+} BSS_2040_COEXIST_IE, *PBSS_2040_COEXIST_IE;
+
+
+typedef struct  _TRIGGER_EVENTA{
+	BOOLEAN			bValid;	 
+	UCHAR	BSSID[6];	
+	UCHAR	RegClass;	// Regulatory Class
+	USHORT	Channel;
+} TRIGGER_EVENTA, *PTRIGGER_EVENTA;
+
+// 20/40 trigger event table
+// If one Event A delete or created, or if Event B is detected or not detected, STA should send 2040BSSCoexistence to AP.
+#define MAX_TRIGGER_EVENT		64
+typedef struct  _TRIGGER_EVENT_TAB{
+	UCHAR	EventANo;	
+	TRIGGER_EVENTA	EventA[MAX_TRIGGER_EVENT];	
+	ULONG			EventBCountDown;	// Count down counter for Event B. 
+} TRIGGER_EVENT_TAB, *PTRIGGER_EVENT_TAB;
+
+// 7.3.27 20/40 Bss Coexistence Mgmt capability used in extended capabilities information IE( ID = 127 = IE_EXT_CAPABILITY). 
+//	This is the first octet and was defined in 802.11n D3.03 and 802.11yD9.0
+typedef struct GNU_PACKED _EXT_CAP_INFO_ELEMENT{
+#ifdef RT_BIG_ENDIAN
+	UCHAR	rsv2:5;
+	UCHAR	ExtendChannelSwitch:1;
+	UCHAR	rsv:1;
+	UCHAR	BssCoexistMgmtSupport:1;
+#else
+	UCHAR	BssCoexistMgmtSupport:1;
+	UCHAR	rsv:1;
+	UCHAR	ExtendChannelSwitch:1;
+	UCHAR	rsv2:5;
+#endif // RT_BIG_ENDIAN //
+}EXT_CAP_INFO_ELEMENT, *PEXT_CAP_INFO_ELEMENT;
+
+
+// 802.11n 7.3.2.61
+typedef struct GNU_PACKED _BSS_2040_COEXIST_ELEMENT{
+	UCHAR					ElementID;		// ID = IE_2040_BSS_COEXIST = 72
+	UCHAR					Len;
+	BSS_2040_COEXIST_IE		BssCoexistIe;
+}BSS_2040_COEXIST_ELEMENT, *PBSS_2040_COEXIST_ELEMENT;
+
+
+//802.11n 7.3.2.59
+typedef struct GNU_PACKED _BSS_2040_INTOLERANT_CH_REPORT{
+	UCHAR				ElementID;		// ID = IE_2040_BSS_INTOLERANT_REPORT = 73
+	UCHAR				Len;	
+	UCHAR				RegulatoryClass;
+	UCHAR				ChList[0];
+}BSS_2040_INTOLERANT_CH_REPORT, *PBSS_2040_INTOLERANT_CH_REPORT;
+
+
+// The structure for channel switch annoucement IE. This is in 802.11n D3.03
+typedef struct GNU_PACKED _CHA_SWITCH_ANNOUNCE_IE{
+	UCHAR			SwitchMode;	//channel switch mode
+	UCHAR			NewChannel;	// 
+	UCHAR			SwitchCount;	// 
+} CHA_SWITCH_ANNOUNCE_IE, *PCHA_SWITCH_ANNOUNCE_IE;
+
+
+// The structure for channel switch annoucement IE. This is in 802.11n D3.03
+typedef struct GNU_PACKED _SEC_CHA_OFFSET_IE{
+	UCHAR			SecondaryChannelOffset;	 // 1: Secondary above, 3: Secondary below, 0: no Secondary 
+} SEC_CHA_OFFSET_IE, *PSEC_CHA_OFFSET_IE;
+
+
+// This structure is extracted from struct RT_HT_CAPABILITY
+typedef struct {
+	BOOLEAN			bHtEnable;	 // If we should use ht rate.
+	BOOLEAN			bPreNHt;	 // If we should use ht rate.
+	//Substract from HT Capability IE
+	UCHAR			MCSSet[16];
+} RT_HT_PHY_INFO, *PRT_HT_PHY_INFO;
+
+//This structure substracts ralink supports from all 802.11n-related features.
+//Features not listed here but contained in 802.11n spec are not supported in rt2860.
+typedef struct {
+#ifdef RT_BIG_ENDIAN
+	USHORT	rsv:5;
+	USHORT	AmsduSize:1;	// Max receiving A-MSDU size
+	USHORT	AmsduEnable:1;	// Enable to transmit A-MSDU. Suggest disable. We should use A-MPDU to gain best benifit of 802.11n
+	USHORT	RxSTBC:2;	// 2 bits
+	USHORT	TxSTBC:1;
+	USHORT	ShortGIfor40:1;	//for40MHz
+	USHORT	ShortGIfor20:1;
+	USHORT	GF:1;	//green field
+	USHORT	MimoPs:2;//mimo power safe MMPS_	
+	USHORT	ChannelWidth:1;
+#else
+	USHORT	ChannelWidth:1;
+	USHORT	MimoPs:2;//mimo power safe MMPS_
+	USHORT	GF:1;	//green field
+	USHORT	ShortGIfor20:1;
+	USHORT	ShortGIfor40:1;	//for40MHz
+	USHORT	TxSTBC:1;
+	USHORT	RxSTBC:2;	// 2 bits
+	USHORT	AmsduEnable:1;	// Enable to transmit A-MSDU. Suggest disable. We should use A-MPDU to gain best benifit of 802.11n
+	USHORT	AmsduSize:1;	// Max receiving A-MSDU size
+	USHORT	rsv:5;
+#endif
+
+	//Substract from Addiont HT INFO IE
+#ifdef RT_BIG_ENDIAN
+	UCHAR	RecomWidth:1;
+	UCHAR	ExtChanOffset:2;	// Please not the difference with following 	UCHAR	NewExtChannelOffset; from 802.11n 
+	UCHAR	MpduDensity:3;	
+	UCHAR	MaxRAmpduFactor:2;
+#else
+	UCHAR	MaxRAmpduFactor:2;
+	UCHAR	MpduDensity:3;
+	UCHAR	ExtChanOffset:2;	// Please not the difference with following 	UCHAR	NewExtChannelOffset; from 802.11n 
+	UCHAR	RecomWidth:1;
+#endif
+
+#ifdef RT_BIG_ENDIAN
+	USHORT	rsv2:11;
+	USHORT	OBSS_NonHTExist:1;
+	USHORT	rsv3:1;
+	USHORT	NonGfPresent:1;
+	USHORT	OperaionMode:2;
+#else
+	USHORT	OperaionMode:2;
+	USHORT	NonGfPresent:1;
+	USHORT	rsv3:1;
+	USHORT	OBSS_NonHTExist:1;
+	USHORT	rsv2:11;
+#endif
+	
+	// New Extension Channel Offset IE
+	UCHAR	NewExtChannelOffset;	
+	// Extension Capability IE = 127
+	UCHAR	BSSCoexist2040;	
+} RT_HT_CAPABILITY, *PRT_HT_CAPABILITY;
+
+//   field in Addtional HT Information IE .   
+typedef struct GNU_PACKED {
+#ifdef RT_BIG_ENDIAN
+	UCHAR	SerInterGranu:3;
+	UCHAR	S_PSMPSup:1;
+	UCHAR	RifsMode:1; 
+	UCHAR	RecomWidth:1;	
+	UCHAR	ExtChanOffset:2;
+#else
+	UCHAR	ExtChanOffset:2;
+	UCHAR	RecomWidth:1;
+	UCHAR	RifsMode:1; 
+	UCHAR	S_PSMPSup:1;	 //Indicate support for scheduled PSMP
+	UCHAR	SerInterGranu:3;	 //service interval granularity
+#endif
+} ADD_HTINFO, *PADD_HTINFO;
+
+typedef struct GNU_PACKED{
+#ifdef RT_BIG_ENDIAN
+	USHORT	rsv2:11; 
+	USHORT	OBSS_NonHTExist:1;
+	USHORT	rsv:1;
+	USHORT	NonGfPresent:1;
+	USHORT	OperaionMode:2;	
+#else
+	USHORT	OperaionMode:2;
+	USHORT	NonGfPresent:1;
+	USHORT	rsv:1; 
+	USHORT	OBSS_NonHTExist:1;
+	USHORT	rsv2:11; 
+#endif
+} ADD_HTINFO2, *PADD_HTINFO2;
+
+
+// TODO: Need sync with spec about the definition of StbcMcs. In Draft 3.03, it's reserved.
+typedef struct GNU_PACKED{
+#ifdef RT_BIG_ENDIAN
+	USHORT	rsv:4;
+	USHORT	PcoPhase:1;
+	USHORT	PcoActive:1;
+	USHORT	LsigTxopProt:1;
+	USHORT	STBCBeacon:1;
+	USHORT	DualCTSProtect:1;
+	USHORT	DualBeacon:1;
+	USHORT	StbcMcs:6;
+#else
+	USHORT	StbcMcs:6;
+	USHORT	DualBeacon:1;
+	USHORT	DualCTSProtect:1; 
+	USHORT	STBCBeacon:1;
+	USHORT	LsigTxopProt:1;	// L-SIG TXOP protection full support 
+	USHORT	PcoActive:1; 
+	USHORT	PcoPhase:1; 
+	USHORT	rsv:4; 
+#endif // RT_BIG_ENDIAN //
+} ADD_HTINFO3, *PADD_HTINFO3;
+
+#define SIZE_ADD_HT_INFO_IE		22
+typedef struct  GNU_PACKED{
+	UCHAR				ControlChan;
+	ADD_HTINFO			AddHtInfo;
+	ADD_HTINFO2			AddHtInfo2;	 
+	ADD_HTINFO3			AddHtInfo3;	 
+	UCHAR				MCSSet[16];		// Basic MCS set
+} ADD_HT_INFO_IE, *PADD_HT_INFO_IE;
+
+typedef struct  GNU_PACKED{
+	UCHAR				NewExtChanOffset;
+} NEW_EXT_CHAN_IE, *PNEW_EXT_CHAN_IE;
+
+typedef struct GNU_PACKED _FRAME_802_11 {
+    HEADER_802_11   Hdr;
+    UCHAR            Octet[1];
+}   FRAME_802_11, *PFRAME_802_11;
+
+// QoSNull embedding of management action. When HT Control MA field set to 1.
+typedef struct GNU_PACKED _MA_BODY {
+    UCHAR            Category;
+    UCHAR            Action;
+    UCHAR            Octet[1];
+}   MA_BODY, *PMA_BODY;
+
+typedef	struct	GNU_PACKED _HEADER_802_3	{
+    UCHAR           DAAddr1[MAC_ADDR_LEN];
+    UCHAR           SAAddr2[MAC_ADDR_LEN];
+    UCHAR           Octet[2];
+}	HEADER_802_3, *PHEADER_802_3;
+////Block ACK related format
+// 2-byte BA Parameter  field  in 	DELBA frames to terminate an already set up bA
+typedef struct GNU_PACKED{
+#ifdef RT_BIG_ENDIAN
+    USHORT      TID:4;	// value of TC os TS
+    USHORT      Initiator:1;	// 1: originator    0:recipient
+    USHORT      Rsv:11;	// always set to 0
+#else
+    USHORT      Rsv:11;	// always set to 0
+    USHORT      Initiator:1;	// 1: originator    0:recipient
+    USHORT      TID:4;	// value of TC os TS
+#endif /* !RT_BIG_ENDIAN */
+} DELBA_PARM, *PDELBA_PARM;
+
+// 2-byte BA Parameter Set field  in ADDBA frames to signal parm for setting up a BA
+typedef struct GNU_PACKED {
+#ifdef RT_BIG_ENDIAN
+    USHORT      BufSize:10;	// number of buffe of size 2304 octetsr
+    USHORT      TID:4;	// value of TC os TS
+    USHORT      BAPolicy:1;	// 1: immediately BA    0:delayed BA
+    USHORT      AMSDUSupported:1;	// 0: not permitted		1: permitted
+#else
+    USHORT      AMSDUSupported:1;	// 0: not permitted		1: permitted
+    USHORT      BAPolicy:1;	// 1: immediately BA    0:delayed BA
+    USHORT      TID:4;	// value of TC os TS
+    USHORT      BufSize:10;	// number of buffe of size 2304 octetsr
+#endif /* !RT_BIG_ENDIAN */
+} BA_PARM, *PBA_PARM;
+
+// 2-byte BA Starting Seq CONTROL field
+typedef union GNU_PACKED {
+    struct GNU_PACKED {
+#ifdef RT_BIG_ENDIAN
+    USHORT      StartSeq:12;   // sequence number of the 1st MSDU for which this BAR is sent
+	USHORT      FragNum:4;	// always set to 0
+#else
+    USHORT      FragNum:4;	// always set to 0
+	USHORT      StartSeq:12;   // sequence number of the 1st MSDU for which this BAR is sent
+#endif /* RT_BIG_ENDIAN */
+    }   field;
+    USHORT           word;
+} BASEQ_CONTROL, *PBASEQ_CONTROL;
+
+//BAControl and BARControl are the same
+// 2-byte BA CONTROL field in BA frame
+typedef struct GNU_PACKED {
+#ifdef RT_BIG_ENDIAN
+    USHORT      TID:4;
+    USHORT      Rsv:9;
+    USHORT      Compressed:1;
+    USHORT      MTID:1;		//EWC V1.24
+    USHORT      ACKPolicy:1; // only related to N-Delayed BA. But not support in RT2860b. 0:NormalACK  1:No ACK
+#else
+    USHORT      ACKPolicy:1; // only related to N-Delayed BA. But not support in RT2860b. 0:NormalACK  1:No ACK
+    USHORT      MTID:1;		//EWC V1.24
+    USHORT      Compressed:1;
+    USHORT      Rsv:9;
+    USHORT      TID:4;
+#endif /* !RT_BIG_ENDIAN */
+} BA_CONTROL, *PBA_CONTROL;
+
+// 2-byte BAR CONTROL field in BAR frame
+typedef struct GNU_PACKED {
+#ifdef RT_BIG_ENDIAN
+    USHORT      TID:4;
+    USHORT      Rsv1:9;
+    USHORT      Compressed:1;
+    USHORT      MTID:1;		//if this bit1, use  FRAME_MTBA_REQ,  if 0, use FRAME_BA_REQ
+    USHORT      ACKPolicy:1;
+#else
+    USHORT      ACKPolicy:1; // 0:normal ack,  1:no ack.
+    USHORT      MTID:1;		//if this bit1, use  FRAME_MTBA_REQ,  if 0, use FRAME_BA_REQ
+    USHORT      Compressed:1;
+    USHORT      Rsv1:9;
+    USHORT      TID:4;
+#endif /* !RT_BIG_ENDIAN */
+} BAR_CONTROL, *PBAR_CONTROL;
+
+// BARControl in MTBAR frame
+typedef struct GNU_PACKED {
+#ifdef RT_BIG_ENDIAN
+    USHORT      NumTID:4;
+    USHORT      Rsv1:9;
+    USHORT      Compressed:1;
+    USHORT      MTID:1;		
+    USHORT      ACKPolicy:1;
+#else
+    USHORT      ACKPolicy:1;
+    USHORT      MTID:1;		
+    USHORT      Compressed:1;
+    USHORT      Rsv1:9;
+    USHORT      NumTID:4;
+#endif /* !RT_BIG_ENDIAN */
+} MTBAR_CONTROL, *PMTBAR_CONTROL;
+
+typedef struct GNU_PACKED {
+#ifdef RT_BIG_ENDIAN
+    USHORT      TID:4;
+    USHORT      Rsv1:12;
+#else
+    USHORT      Rsv1:12;
+    USHORT      TID:4;
+#endif /* !RT_BIG_ENDIAN */
+} PER_TID_INFO, *PPER_TID_INFO;
+
+typedef struct {
+	PER_TID_INFO      PerTID;
+	BASEQ_CONTROL 	 BAStartingSeq;
+} EACH_TID, *PEACH_TID;
+
+
+// BAREQ AND MTBAREQ have the same subtype BAR, 802.11n BAR use compressed bitmap.
+typedef struct GNU_PACKED _FRAME_BA_REQ {
+	FRAME_CONTROL   FC;
+	USHORT          Duration;
+	UCHAR           Addr1[MAC_ADDR_LEN];
+	UCHAR           Addr2[MAC_ADDR_LEN];
+	BAR_CONTROL  BARControl;
+	BASEQ_CONTROL 	 BAStartingSeq;
+}   FRAME_BA_REQ, *PFRAME_BA_REQ;
+
+typedef struct GNU_PACKED _FRAME_MTBA_REQ {
+	FRAME_CONTROL   FC;
+	USHORT          Duration;
+	UCHAR           Addr1[MAC_ADDR_LEN];
+	UCHAR           Addr2[MAC_ADDR_LEN];
+	MTBAR_CONTROL  MTBARControl;
+	PER_TID_INFO	PerTIDInfo;
+	BASEQ_CONTROL 	 BAStartingSeq;
+}   FRAME_MTBA_REQ, *PFRAME_MTBA_REQ;
+
+// Compressed format is mandantory in HT STA
+typedef struct GNU_PACKED _FRAME_MTBA {
+	FRAME_CONTROL   FC;
+	USHORT          Duration;
+	UCHAR           Addr1[MAC_ADDR_LEN];
+	UCHAR           Addr2[MAC_ADDR_LEN];
+	BA_CONTROL  BAControl;
+	BASEQ_CONTROL 	 BAStartingSeq;
+	UCHAR		BitMap[8];
+}   FRAME_MTBA, *PFRAME_MTBA;
+
+typedef struct GNU_PACKED _FRAME_PSMP_ACTION {
+	HEADER_802_11   Hdr;
+	UCHAR	Category;
+	UCHAR	Action;
+	UCHAR	Psmp;	// 7.3.1.25
+}   FRAME_PSMP_ACTION, *PFRAME_PSMP_ACTION;
+
+typedef struct GNU_PACKED _FRAME_ACTION_HDR {
+	HEADER_802_11   Hdr;
+	UCHAR	Category;
+	UCHAR	Action;
+}   FRAME_ACTION_HDR, *PFRAME_ACTION_HDR;
+
+//Action Frame
+//Action Frame  Category:Spectrum,  Action:Channel Switch. 7.3.2.20
+typedef struct GNU_PACKED _CHAN_SWITCH_ANNOUNCE {
+	UCHAR					ElementID;	// ID = IE_CHANNEL_SWITCH_ANNOUNCEMENT = 37
+	UCHAR					Len;
+	CHA_SWITCH_ANNOUNCE_IE	CSAnnounceIe;
+}   CHAN_SWITCH_ANNOUNCE, *PCHAN_SWITCH_ANNOUNCE;
+
+
+//802.11n : 7.3.2.20a
+typedef struct GNU_PACKED _SECOND_CHAN_OFFSET {
+	UCHAR				ElementID;		// ID = IE_SECONDARY_CH_OFFSET = 62
+	UCHAR				Len;
+	SEC_CHA_OFFSET_IE	SecChOffsetIe;
+}   SECOND_CHAN_OFFSET, *PSECOND_CHAN_OFFSET;
+
+
+typedef struct GNU_PACKED _FRAME_SPETRUM_CS {
+	HEADER_802_11   Hdr;
+	UCHAR	Category;
+	UCHAR	Action;
+	CHAN_SWITCH_ANNOUNCE	CSAnnounce;
+	SECOND_CHAN_OFFSET		SecondChannel;
+}   FRAME_SPETRUM_CS, *PFRAME_SPETRUM_CS;
+
+
+typedef struct GNU_PACKED _FRAME_ADDBA_REQ {
+	HEADER_802_11   Hdr;
+	UCHAR	Category;
+	UCHAR	Action;
+	UCHAR	Token;	// 1
+	BA_PARM		BaParm;	      //  2 - 10
+	USHORT		TimeOutValue;	// 0 - 0 
+	BASEQ_CONTROL	BaStartSeq; // 0-0
+}   FRAME_ADDBA_REQ, *PFRAME_ADDBA_REQ;
+
+typedef struct GNU_PACKED _FRAME_ADDBA_RSP {
+	HEADER_802_11   Hdr;
+	UCHAR	Category;
+	UCHAR	Action;
+	UCHAR	Token;
+	USHORT	StatusCode;
+	BA_PARM		BaParm; //0 - 2
+	USHORT		TimeOutValue;
+}   FRAME_ADDBA_RSP, *PFRAME_ADDBA_RSP;
+
+typedef struct GNU_PACKED _FRAME_DELBA_REQ {
+	HEADER_802_11   Hdr;
+	UCHAR	Category;
+	UCHAR	Action;
+	DELBA_PARM		DelbaParm;
+	USHORT	ReasonCode;
+}   FRAME_DELBA_REQ, *PFRAME_DELBA_REQ;
+
+
+//7.2.1.7
+typedef struct GNU_PACKED _FRAME_BAR {
+	FRAME_CONTROL   FC;
+	USHORT          Duration;
+	UCHAR           Addr1[MAC_ADDR_LEN];
+	UCHAR           Addr2[MAC_ADDR_LEN];
+	BAR_CONTROL		BarControl;
+	BASEQ_CONTROL	StartingSeq;
+}   FRAME_BAR, *PFRAME_BAR;
+
+//7.2.1.7
+typedef struct GNU_PACKED _FRAME_BA {
+	FRAME_CONTROL   FC;
+	USHORT          Duration;
+	UCHAR           Addr1[MAC_ADDR_LEN];
+	UCHAR           Addr2[MAC_ADDR_LEN];
+	BAR_CONTROL		BarControl;
+	BASEQ_CONTROL	StartingSeq;
+	UCHAR		bitmask[8];
+}   FRAME_BA, *PFRAME_BA;
+
+
+// Radio Measuement Request Frame Format
+typedef struct GNU_PACKED _FRAME_RM_REQ_ACTION {
+	HEADER_802_11   Hdr;
+	UCHAR	Category;
+	UCHAR	Action;
+	UCHAR	Token;
+	USHORT	Repetition;
+	UCHAR   data[0];
+}   FRAME_RM_REQ_ACTION, *PFRAME_RM_REQ_ACTION;
+
+typedef struct GNU_PACKED {
+	UCHAR		ID;
+	UCHAR		Length;
+	UCHAR		ChannelSwitchMode;
+	UCHAR		NewRegClass;
+	UCHAR		NewChannelNum;
+	UCHAR		ChannelSwitchCount;
+} HT_EXT_CHANNEL_SWITCH_ANNOUNCEMENT_IE, *PHT_EXT_CHANNEL_SWITCH_ANNOUNCEMENT_IE;
+
+
+//
+// _Limit must be the 2**n - 1
+// _SEQ1 , _SEQ2 must be within 0 ~ _Limit
+// 
+#define SEQ_STEPONE(_SEQ1, _SEQ2, _Limit)	((_SEQ1 == ((_SEQ2+1) & _Limit)))
+#define SEQ_SMALLER(_SEQ1, _SEQ2, _Limit)	(((_SEQ1-_SEQ2) & ((_Limit+1)>>1)))
+#define SEQ_LARGER(_SEQ1, _SEQ2, _Limit)	((_SEQ1 != _SEQ2) && !(((_SEQ1-_SEQ2) & ((_Limit+1)>>1))))
+#define SEQ_WITHIN_WIN(_SEQ1, _SEQ2, _WIN, _Limit) (SEQ_LARGER(_SEQ1, _SEQ2, _Limit) &&  \
+												SEQ_SMALLER(_SEQ1, ((_SEQ2+_WIN+1)&_Limit), _Limit))
+
+//
+// Contention-free parameter (without ID and Length)
+//
+typedef struct GNU_PACKED {
+    BOOLEAN     bValid;         // 1: variable contains valid value
+    UCHAR       CfpCount;
+    UCHAR       CfpPeriod;
+    USHORT      CfpMaxDuration;
+    USHORT      CfpDurRemaining;
+} CF_PARM, *PCF_PARM;
+
+typedef	struct	_CIPHER_SUITE	{
+	NDIS_802_11_ENCRYPTION_STATUS	PairCipher;		// Unicast cipher 1, this one has more secured cipher suite
+	NDIS_802_11_ENCRYPTION_STATUS	PairCipherAux;	// Unicast cipher 2 if AP announce two unicast cipher suite
+	NDIS_802_11_ENCRYPTION_STATUS	GroupCipher;	// Group cipher
+	USHORT							RsnCapability;	// RSN capability from beacon
+	BOOLEAN							bMixMode;		// Indicate Pair & Group cipher might be different
+}	CIPHER_SUITE, *PCIPHER_SUITE;
+	
+// EDCA configuration from AP's BEACON/ProbeRsp
+typedef struct {
+    BOOLEAN     bValid;         // 1: variable contains valid value
+    BOOLEAN     bAdd;         // 1: variable contains valid value
+    BOOLEAN     bQAck;
+    BOOLEAN     bQueueRequest;
+    BOOLEAN     bTxopRequest;
+    BOOLEAN     bAPSDCapable;
+//  BOOLEAN     bMoreDataAck;
+    UCHAR       EdcaUpdateCount;
+    UCHAR       Aifsn[4];       // 0:AC_BK, 1:AC_BE, 2:AC_VI, 3:AC_VO
+    UCHAR       Cwmin[4];
+    UCHAR       Cwmax[4];
+    USHORT      Txop[4];      // in unit of 32-us
+    BOOLEAN     bACM[4];      // 1: Admission Control of AC_BK is mandattory
+} EDCA_PARM, *PEDCA_PARM;
+
+// QBSS LOAD information from QAP's BEACON/ProbeRsp
+typedef struct {
+    BOOLEAN     bValid;                     // 1: variable contains valid value
+    USHORT      StaNum;
+    UCHAR       ChannelUtilization;
+    USHORT      RemainingAdmissionControl;  // in unit of 32-us
+} QBSS_LOAD_PARM, *PQBSS_LOAD_PARM;
+
+// QBSS Info field in QSTA's assoc req
+typedef struct GNU_PACKED {
+#ifdef RT_BIG_ENDIAN
+	UCHAR		Rsv2:1;
+	UCHAR		MaxSPLength:2;
+	UCHAR		Rsv1:1;
+	UCHAR		UAPSD_AC_BE:1;
+	UCHAR		UAPSD_AC_BK:1;
+	UCHAR		UAPSD_AC_VI:1;
+	UCHAR		UAPSD_AC_VO:1;
+#else
+    UCHAR		UAPSD_AC_VO:1;
+	UCHAR		UAPSD_AC_VI:1;
+	UCHAR		UAPSD_AC_BK:1;
+	UCHAR		UAPSD_AC_BE:1;
+	UCHAR		Rsv1:1;
+	UCHAR		MaxSPLength:2;
+	UCHAR		Rsv2:1;
+#endif /* !RT_BIG_ENDIAN */
+} QBSS_STA_INFO_PARM, *PQBSS_STA_INFO_PARM;
+
+typedef struct {
+	QBSS_STA_INFO_PARM	QosInfo;
+	UCHAR	Rsv;
+	UCHAR	Q_AC_BE[4];
+	UCHAR	Q_AC_BK[4];
+	UCHAR	Q_AC_VI[4];
+	UCHAR	Q_AC_VO[4];
+} QBSS_STA_EDCA_PARM, *PQBSS_STA_EDCA_PARM;
+
+// QBSS Info field in QAP's Beacon/ProbeRsp
+typedef struct GNU_PACKED {
+#ifdef RT_BIG_ENDIAN
+	UCHAR		UAPSD:1;
+	UCHAR		Rsv:3;
+    UCHAR		ParamSetCount:4;
+#else
+    UCHAR		ParamSetCount:4;
+	UCHAR		Rsv:3;
+	UCHAR		UAPSD:1;
+#endif /* !RT_BIG_ENDIAN */
+} QBSS_AP_INFO_PARM, *PQBSS_AP_INFO_PARM;
+
+// QOS Capability reported in QAP's BEACON/ProbeRsp
+// QOS Capability sent out in QSTA's AssociateReq/ReAssociateReq
+typedef struct {
+    BOOLEAN     bValid;                     // 1: variable contains valid value
+    BOOLEAN     bQAck;
+    BOOLEAN     bQueueRequest;
+    BOOLEAN     bTxopRequest;
+//  BOOLEAN     bMoreDataAck;
+    UCHAR       EdcaUpdateCount;
+} QOS_CAPABILITY_PARM, *PQOS_CAPABILITY_PARM;
+
+#ifdef CONFIG_STA_SUPPORT
+typedef struct {
+    UCHAR       IELen;
+    UCHAR       IE[MAX_CUSTOM_LEN];
+} WPA_IE_;
+#endif // CONFIG_STA_SUPPORT //
+
+
+typedef struct {
+    UCHAR   Bssid[MAC_ADDR_LEN];
+    UCHAR   Channel;
+	UCHAR   CentralChannel;	//Store the wide-band central channel for 40MHz.  .used in 40MHz AP. Or this is the same as Channel.
+    UCHAR   BssType;
+    USHORT  AtimWin;
+    USHORT  BeaconPeriod;
+
+    UCHAR   SupRate[MAX_LEN_OF_SUPPORTED_RATES];
+    UCHAR   SupRateLen;
+    UCHAR   ExtRate[MAX_LEN_OF_SUPPORTED_RATES];
+    UCHAR   ExtRateLen;
+	HT_CAPABILITY_IE HtCapability;
+	UCHAR			HtCapabilityLen;
+	ADD_HT_INFO_IE AddHtInfo;	// AP might use this additional ht info IE 
+	UCHAR			AddHtInfoLen;
+	EXT_CAP_INFO_ELEMENT ExtCapInfo;	// this is the extened capibility IE appreed in MGMT frames. Doesn't need to update once set in Init.
+	UCHAR			NewExtChanOffset;
+	CHAR    Rssi;
+	CHAR	MinSNR;	
+    UCHAR   Privacy;			// Indicate security function ON/OFF. Don't mess up with auth mode.
+	UCHAR	Hidden;
+
+    USHORT  DtimPeriod;
+    USHORT  CapabilityInfo;
+
+    USHORT  CfpCount;
+    USHORT  CfpPeriod;
+    USHORT  CfpMaxDuration;
+    USHORT  CfpDurRemaining;
+    UCHAR   SsidLen;
+    CHAR    Ssid[MAX_LEN_OF_SSID];
+    
+    ULONG   LastBeaconRxTime; // OS's timestamp
+
+	BOOLEAN	bSES;
+
+	// New for WPA2
+	CIPHER_SUITE					WPA;			// AP announced WPA cipher suite
+	CIPHER_SUITE					WPA2;			// AP announced WPA2 cipher suite
+
+	// New for microsoft WPA support
+	NDIS_802_11_FIXED_IEs	FixIEs;
+	NDIS_802_11_AUTHENTICATION_MODE	AuthModeAux;	// Addition mode for WPA2 / WPA capable AP
+	NDIS_802_11_AUTHENTICATION_MODE	AuthMode;	
+	NDIS_802_11_WEP_STATUS	WepStatus;				// Unicast Encryption Algorithm extract from VAR_IE
+	USHORT					VarIELen;				// Length of next VIE include EID & Length
+	UCHAR					VarIEs[MAX_VIE_LEN];
+	USHORT					VarIeFromProbeRspLen;
+	UCHAR					*pVarIeFromProbRsp;
+
+	// CCX Ckip information
+    UCHAR   CkipFlag;
+
+	// CCX 2 TSF
+	UCHAR	PTSF[4];		// Parent TSF
+	UCHAR	TTSF[8];		// Target TSF
+
+    // 802.11e d9, and WMM
+	EDCA_PARM           EdcaParm;
+	QOS_CAPABILITY_PARM QosCapability;
+	QBSS_LOAD_PARM      QbssLoad;
+
+
+#ifdef CONFIG_STA_SUPPORT
+    WPA_IE_     WpaIE;
+    WPA_IE_     RsnIE;
+
+#ifdef EXT_BUILD_CHANNEL_LIST
+	UCHAR		CountryString[3];
+	BOOLEAN		bHasCountryIE;
+#endif // EXT_BUILD_CHANNEL_LIST //
+#endif // CONFIG_STA_SUPPORT //
+
+	UCHAR   MacAddr[MAC_ADDR_LEN];
+
+#if defined(AP_SCAN_SUPPORT) || defined(CONFIG_STA_SUPPORT)
+#ifdef LINUX
+#ifdef RT_CFG80211_SUPPORT	
+	VOID *pCfg80211_Chan;
+#endif // RT_CFG80211_SUPPORT //
+#endif // LINUX //
+#endif // AP_SCAN_SUPPORT || CONFIG_STA_SUPPORT //
+} BSS_ENTRY, *PBSS_ENTRY;
+
+typedef struct {
+    UCHAR           BssNr;
+    UCHAR           BssOverlapNr;
+    BSS_ENTRY       BssEntry[MAX_LEN_OF_BSS_TABLE];
+} BSS_TABLE, *PBSS_TABLE;
+
+
+typedef struct _MLME_QUEUE_ELEM {
+	UCHAR             Msg[MGMT_DMA_BUFFER_SIZE];	// move here to fix the bug of alignment for ARM CPU
+    ULONG             Machine;
+    ULONG             MsgType;
+    ULONG             MsgLen;
+    //UCHAR           Msg[MGMT_DMA_BUFFER_SIZE];	// move above to fix the bug of alignment for ARM CPU
+    LARGE_INTEGER     TimeStamp;
+    UCHAR             Rssi0;
+    UCHAR             Rssi1;
+    UCHAR             Rssi2;
+    UCHAR             Signal;
+    UCHAR             Channel;
+    UCHAR             Wcid;
+    BOOLEAN           Occupied;
+	ULONG             Priv;
+} MLME_QUEUE_ELEM, *PMLME_QUEUE_ELEM;
+
+typedef struct _MLME_QUEUE {
+    ULONG             Num;
+    ULONG             Head;
+    ULONG             Tail;
+    NDIS_SPIN_LOCK   Lock;
+    MLME_QUEUE_ELEM  Entry[MAX_LEN_OF_MLME_QUEUE];
+} MLME_QUEUE, *PMLME_QUEUE;
+
+typedef VOID (*STATE_MACHINE_FUNC)(VOID *Adaptor, MLME_QUEUE_ELEM *Elem);
+
+typedef struct _STATE_MACHINE {
+    ULONG                           Base;
+    ULONG                           NrState;
+    ULONG                           NrMsg;
+    ULONG                           CurrState;
+    STATE_MACHINE_FUNC             *TransFunc;
+} STATE_MACHINE, *PSTATE_MACHINE;
+
+
+// MLME AUX data structure that hold temporarliy settings during a connection attempt.
+// Once this attemp succeeds, all settings will be copy to pAd->StaActive.
+// A connection attempt (user set OID, roaming, CCX fast roaming,..) consists of
+// several steps (JOIN, AUTH, ASSOC or REASSOC) and may fail at any step. We purposely
+// separate this under-trial settings away from pAd->StaActive so that once
+// this new attempt failed, driver can auto-recover back to the active settings.
+typedef struct _MLME_AUX {
+    UCHAR               BssType;
+    UCHAR               Ssid[MAX_LEN_OF_SSID];
+    UCHAR               SsidLen;
+    UCHAR               Bssid[MAC_ADDR_LEN];
+	UCHAR				AutoReconnectSsid[MAX_LEN_OF_SSID];
+	UCHAR				AutoReconnectSsidLen;
+    USHORT              Alg;
+    UCHAR               ScanType;
+    UCHAR               Channel;
+	UCHAR               CentralChannel;
+    USHORT              Aid;
+    USHORT              CapabilityInfo;
+    USHORT              BeaconPeriod;
+    USHORT              CfpMaxDuration;
+    USHORT              CfpPeriod;
+    USHORT              AtimWin;
+    
+	// Copy supported rate from desired AP's beacon. We are trying to match
+	// AP's supported and extended rate settings.
+	UCHAR		        SupRate[MAX_LEN_OF_SUPPORTED_RATES];
+	UCHAR		        ExtRate[MAX_LEN_OF_SUPPORTED_RATES];
+	UCHAR		        SupRateLen;
+	UCHAR		        ExtRateLen;
+	HT_CAPABILITY_IE		HtCapability;
+	UCHAR		        	HtCapabilityLen;
+	ADD_HT_INFO_IE		AddHtInfo;	// AP might use this additional ht info IE 
+	EXT_CAP_INFO_ELEMENT ExtCapInfo; // this is the extened capibility IE appreed in MGMT frames. Doesn't need to update once set in Init.
+	UCHAR			NewExtChannelOffset;
+	//RT_HT_CAPABILITY	SupportedHtPhy;
+
+    // new for QOS
+    QOS_CAPABILITY_PARM APQosCapability;    // QOS capability of the current associated AP
+    EDCA_PARM           APEdcaParm;         // EDCA parameters of the current associated AP
+    QBSS_LOAD_PARM      APQbssLoad;         // QBSS load of the current associated AP
+
+    // new to keep Ralink specific feature
+    ULONG               APRalinkIe;
+    
+    BSS_TABLE           SsidBssTab;     // AP list for the same SSID
+    BSS_TABLE           RoamTab;        // AP list eligible for roaming
+    ULONG               BssIdx;
+    ULONG               RoamIdx;
+
+	BOOLEAN				CurrReqIsFromNdis;
+
+    RALINK_TIMER_STRUCT BeaconTimer, ScanTimer;
+    RALINK_TIMER_STRUCT AuthTimer;
+    RALINK_TIMER_STRUCT AssocTimer, ReassocTimer, DisassocTimer;
+
+#ifdef CONFIG_STA_SUPPORT
+#endif // CONFIG_STA_SUPPORT //
+} MLME_AUX, *PMLME_AUX;
+
+typedef struct _MLME_ADDBA_REQ_STRUCT{
+	UCHAR   Wcid;	// 
+	UCHAR   pAddr[MAC_ADDR_LEN];
+	UCHAR   BaBufSize;
+	USHORT	TimeOutValue;
+	UCHAR   TID;
+	UCHAR   Token;
+	USHORT	BaStartSeq;
+} MLME_ADDBA_REQ_STRUCT, *PMLME_ADDBA_REQ_STRUCT;
+
+
+typedef struct _MLME_DELBA_REQ_STRUCT{
+	UCHAR   Wcid;	// 
+	UCHAR     Addr[MAC_ADDR_LEN];
+	UCHAR   TID;
+	UCHAR	Initiator;
+} MLME_DELBA_REQ_STRUCT, *PMLME_DELBA_REQ_STRUCT;
+
+// assoc struct is equal to reassoc
+typedef struct _MLME_ASSOC_REQ_STRUCT{
+    UCHAR     Addr[MAC_ADDR_LEN];
+    USHORT    CapabilityInfo;
+    USHORT    ListenIntv;
+    ULONG     Timeout;
+} MLME_ASSOC_REQ_STRUCT, *PMLME_ASSOC_REQ_STRUCT, MLME_REASSOC_REQ_STRUCT, *PMLME_REASSOC_REQ_STRUCT;
+
+typedef struct _MLME_DISASSOC_REQ_STRUCT{
+    UCHAR     Addr[MAC_ADDR_LEN];
+    USHORT    Reason;
+} MLME_DISASSOC_REQ_STRUCT, *PMLME_DISASSOC_REQ_STRUCT;
+
+typedef struct _MLME_AUTH_REQ_STRUCT {
+    UCHAR        Addr[MAC_ADDR_LEN];
+    USHORT       Alg;
+    ULONG        Timeout;
+} MLME_AUTH_REQ_STRUCT, *PMLME_AUTH_REQ_STRUCT;
+
+typedef struct _MLME_DEAUTH_REQ_STRUCT {
+    UCHAR        Addr[MAC_ADDR_LEN];
+    USHORT       Reason;
+} MLME_DEAUTH_REQ_STRUCT, *PMLME_DEAUTH_REQ_STRUCT;
+
+typedef struct {
+    ULONG      BssIdx;
+} MLME_JOIN_REQ_STRUCT;
+
+typedef struct _MLME_SCAN_REQ_STRUCT {
+    UCHAR      Bssid[MAC_ADDR_LEN];
+    UCHAR      BssType;
+    UCHAR      ScanType;
+    UCHAR      SsidLen;
+    CHAR       Ssid[MAX_LEN_OF_SSID];
+} MLME_SCAN_REQ_STRUCT, *PMLME_SCAN_REQ_STRUCT;
+
+typedef struct _MLME_START_REQ_STRUCT {
+    CHAR        Ssid[MAX_LEN_OF_SSID];
+    UCHAR       SsidLen;
+} MLME_START_REQ_STRUCT, *PMLME_START_REQ_STRUCT;
+
+#ifdef CONFIG_STA_SUPPORT
+#ifdef QOS_DLS_SUPPORT
+// structure for DLS
+typedef struct _RT_802_11_DLS {
+	USHORT						TimeOut;		// Use to time out while slience, unit: second , set by UI
+	USHORT						CountDownTimer;	// Use to time out while slience,unit: second , used by driver only
+	NDIS_802_11_MAC_ADDRESS		MacAddr;		// set by UI
+	UCHAR						Status;			// 0: none , 1: wait STAkey, 2: finish DLS setup , set by driver only
+	BOOLEAN						Valid;			// 1: valid , 0: invalid , set by UI, use to setup or tear down DLS link
+	RALINK_TIMER_STRUCT			Timer;			// Use to time out while handshake
+	USHORT						Sequence;
+	USHORT						MacTabMatchWCID;	// ASIC
+	BOOLEAN						bHTCap;
+	PVOID						pAd;
+} RT_802_11_DLS, *PRT_802_11_DLS;
+
+typedef struct _MLME_DLS_REQ_STRUCT {
+    PRT_802_11_DLS	pDLS;
+    USHORT			Reason;
+} MLME_DLS_REQ_STRUCT, *PMLME_DLS_REQ_STRUCT;
+#endif // QOS_DLS_SUPPORT //
+#endif // CONFIG_STA_SUPPORT //
+
+typedef struct GNU_PACKED {
+    UCHAR   Eid;
+    UCHAR   Len;
+    UCHAR   Octet[1];
+} EID_STRUCT,*PEID_STRUCT, BEACON_EID_STRUCT, *PBEACON_EID_STRUCT;
+
+typedef struct GNU_PACKED _RTMP_TX_RATE_SWITCH
+{
+	UCHAR   ItemNo;
+#ifdef RT_BIG_ENDIAN
+	UCHAR	Rsv2:2;
+	UCHAR	Mode:2;
+	UCHAR	Rsv1:1;	
+	UCHAR	BW:1;
+	UCHAR	ShortGI:1;
+	UCHAR	STBC:1;
+#else
+	UCHAR	STBC:1;
+	UCHAR	ShortGI:1;
+	UCHAR	BW:1;
+	UCHAR	Rsv1:1;
+	UCHAR	Mode:2;
+	UCHAR	Rsv2:2;
+#endif	
+	UCHAR   CurrMCS;
+	UCHAR   TrainUp;
+	UCHAR   TrainDown;
+} RRTMP_TX_RATE_SWITCH, *PRTMP_TX_RATE_SWITCH;
+
+
+// ========================== AP mlme.h ===============================
+#define TBTT_PRELOAD_TIME       384        // usec. LomgPreamble + 24-byte at 1Mbps
+#define DEFAULT_DTIM_PERIOD     1
+
+// weighting factor to calculate Channel quality, total should be 100%
+//#define RSSI_WEIGHTING                   0
+//#define TX_WEIGHTING                     40
+//#define RX_WEIGHTING                     60
+
+#define MAC_TABLE_AGEOUT_TIME			300			// unit: sec
+#define MAC_TABLE_MIN_AGEOUT_TIME		60			// unit: sec
+#define MAC_TABLE_ASSOC_TIMEOUT			5			// unit: sec
+#define MAC_TABLE_FULL(Tab)				((Tab).size == MAX_LEN_OF_MAC_TABLE)
+
+// AP shall drop the sta if contine Tx fail count reach it.
+#define MAC_ENTRY_LIFE_CHECK_CNT		20			// packet cnt.
+
+// Value domain of pMacEntry->Sst
+typedef enum _Sst {
+    SST_NOT_AUTH,   // 0: equivalent to IEEE 802.11/1999 state 1
+    SST_AUTH,       // 1: equivalent to IEEE 802.11/1999 state 2
+    SST_ASSOC       // 2: equivalent to IEEE 802.11/1999 state 3
+} SST;
+
+// value domain of pMacEntry->AuthState
+typedef enum _AuthState {
+    AS_NOT_AUTH,
+    AS_AUTH_OPEN,       // STA has been authenticated using OPEN SYSTEM
+    AS_AUTH_KEY,        // STA has been authenticated using SHARED KEY
+    AS_AUTHENTICATING   // STA is waiting for AUTH seq#3 using SHARED KEY
+} AUTH_STATE;
+
+// ====================== end of AP mlme.h ============================
+
+
+#endif	// MLME_H__
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/netif_block.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/netif_block.h
new file mode 100644
index 000000000..1528a5cd0
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/netif_block.h
@@ -0,0 +1,57 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+ */ 
+
+#ifndef __NET_IF_BLOCK_H__
+#define __NET_IF_BLOCK_H__
+
+#include "link_list.h"
+#include "rtmp.h"
+
+#define FREE_NETIF_POOL_SIZE 32
+
+typedef struct _NETIF_ENTRY
+{
+	struct _NETIF_ENTRY *pNext;
+	PNET_DEV pNetDev;
+} NETIF_ENTRY, *PNETIF_ENTRY;
+
+void initblockQueueTab(
+	IN PRTMP_ADAPTER pAd);
+
+BOOLEAN blockNetIf(
+	IN PBLOCK_QUEUE_ENTRY pBlockQueueEntry,
+	IN PNET_DEV pNetDev);
+
+VOID releaseNetIf(
+	IN PBLOCK_QUEUE_ENTRY pBlockQueueEntry);
+
+VOID StopNetIfQueue(
+	IN PRTMP_ADAPTER pAd,
+	IN UCHAR QueIdx,
+	IN PNDIS_PACKET pPacket);
+#endif // __NET_IF_BLOCK_H__
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/oid.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/oid.h
new file mode 100644
index 000000000..774f1c0e0
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/oid.h
@@ -0,0 +1,1294 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+	Module Name:
+	oid.h
+
+	Abstract:
+
+	Revision History:
+	Who			When			What
+	--------	----------		----------------------------------------------
+	Name		Date			Modification logs
+*/
+#ifndef _OID_H_
+#define _OID_H_
+
+//#include <linux/wireless.h>
+
+#ifndef TRUE
+#define TRUE				1
+#endif
+#ifndef FALSE
+#define FALSE				0
+#endif
+//
+// IEEE 802.11 Structures and definitions
+//
+#define MAX_TX_POWER_LEVEL              100   /* mW */
+#define MAX_RSSI_TRIGGER                -10    /* dBm */
+#define MIN_RSSI_TRIGGER                -200   /* dBm */
+#define MAX_FRAG_THRESHOLD              2346  /* byte count */
+#define MIN_FRAG_THRESHOLD              256   /* byte count */
+#define MAX_RTS_THRESHOLD               2347  /* byte count */
+
+// new types for Media Specific Indications
+// Extension channel offset
+#define EXTCHA_NONE			0
+#define EXTCHA_ABOVE		0x1
+#define EXTCHA_BELOW		0x3
+
+// BW
+#define BAND_WIDTH_20		0
+#define BAND_WIDTH_40		1
+#define BAND_WIDTH_BOTH		2
+#define BAND_WIDTH_10		3	// 802.11j has 10MHz. This definition is for internal usage. doesn't fill in the IE or other field.
+// SHORTGI
+#define GAP_INTERVAL_400	1	// only support in HT mode
+#define GAP_INTERVAL_800	0	
+#define GAP_INTERVAL_BOTH	2
+
+#define NdisMediaStateConnected			1
+#define NdisMediaStateDisconnected		0
+
+#define NDIS_802_11_LENGTH_SSID         32
+
+#define	IEEE80211_ADDR_LEN		6		/* size of 802.11 address */
+#define	IEEE80211_NWID_LEN      32
+
+#define NDIS_802_11_LENGTH_RATES        8
+#define NDIS_802_11_LENGTH_RATES_EX     16
+#define MAC_ADDR_LENGTH                 6
+//#define MAX_NUM_OF_CHS					49 // 14 channels @2.4G +  12@UNII + 4 @MMAC + 11 @HiperLAN2 + 7 @Japan + 1 as NULL terminationc
+#define MAX_NUM_OF_CHS             		54      // 14 channels @2.4G +  12@UNII(lower/middle) + 16@HiperLAN2 + 11@UNII(upper) + 0 @Japan + 1 as NULL termination
+#define MAX_NUMBER_OF_EVENT				10  // entry # in EVENT table
+#define MAX_NUMBER_OF_MAC				32 // if MAX_MBSSID_NUM is 8, this value can't be larger than 211
+#define MAX_NUMBER_OF_ACL				64
+#define MAX_LENGTH_OF_SUPPORT_RATES		12    // 1, 2, 5.5, 11, 6, 9, 12, 18, 24, 36, 48, 54
+#define MAX_NUMBER_OF_DLS_ENTRY			4
+
+
+#define RT_QUERY_SIGNAL_CONTEXT				0x0402
+#define RT_SET_IAPP_PID                 	0x0404
+#define RT_SET_APD_PID						0x0405
+#define RT_SET_DEL_MAC_ENTRY				0x0406
+#define RT_QUERY_EVENT_TABLE            	0x0407
+//
+// IEEE 802.11 OIDs
+//
+#define	OID_GET_SET_TOGGLE			0x8000
+#define	OID_GET_SET_FROM_UI			0x4000
+
+#define	OID_802_11_NETWORK_TYPES_SUPPORTED			0x0103
+#define	OID_802_11_NETWORK_TYPE_IN_USE				0x0104
+#define	OID_802_11_RSSI_TRIGGER						0x0107
+#define	RT_OID_802_11_RSSI							0x0108 //rt2860	only , kathy
+#define	RT_OID_802_11_RSSI_1						0x0109 //rt2860	only , kathy
+#define	RT_OID_802_11_RSSI_2						0x010A //rt2860	only , kathy
+#define	OID_802_11_NUMBER_OF_ANTENNAS				0x010B
+#define	OID_802_11_RX_ANTENNA_SELECTED				0x010C
+#define	OID_802_11_TX_ANTENNA_SELECTED				0x010D
+#define	OID_802_11_SUPPORTED_RATES					0x010E
+#define	OID_802_11_ADD_WEP							0x0112
+#define	OID_802_11_REMOVE_WEP						0x0113
+#define	OID_802_11_DISASSOCIATE						0x0114
+#define	OID_802_11_PRIVACY_FILTER					0x0118
+#define	OID_802_11_ASSOCIATION_INFORMATION			0x011E
+#define	OID_802_11_TEST								0x011F
+
+
+#define	RT_OID_802_11_COUNTRY_REGION				0x0507
+#define	OID_802_11_BSSID_LIST_SCAN					0x0508
+#define	OID_802_11_SSID								0x0509
+#define	OID_802_11_BSSID							0x050A
+#define	RT_OID_802_11_RADIO							0x050B
+#define	RT_OID_802_11_PHY_MODE						0x050C
+#define	RT_OID_802_11_STA_CONFIG					0x050D
+#define	OID_802_11_DESIRED_RATES					0x050E
+#define	RT_OID_802_11_PREAMBLE						0x050F
+#define	OID_802_11_WEP_STATUS						0x0510
+#define	OID_802_11_AUTHENTICATION_MODE				0x0511
+#define	OID_802_11_INFRASTRUCTURE_MODE				0x0512
+#define	RT_OID_802_11_RESET_COUNTERS				0x0513
+#define	OID_802_11_RTS_THRESHOLD					0x0514
+#define	OID_802_11_FRAGMENTATION_THRESHOLD			0x0515
+#define	OID_802_11_POWER_MODE						0x0516
+#define	OID_802_11_TX_POWER_LEVEL					0x0517
+#define	RT_OID_802_11_ADD_WPA						0x0518
+#define	OID_802_11_REMOVE_KEY						0x0519
+#define	OID_802_11_ADD_KEY							0x0520
+#define	OID_802_11_CONFIGURATION					0x0521
+#define	OID_802_11_TX_PACKET_BURST					0x0522
+#define	RT_OID_802_11_QUERY_NOISE_LEVEL				0x0523
+#define	RT_OID_802_11_EXTRA_INFO					0x0524
+#define	RT_OID_802_11_HARDWARE_REGISTER				0x0525
+#define OID_802_11_ENCRYPTION_STATUS            OID_802_11_WEP_STATUS
+#define OID_802_11_DEAUTHENTICATION                 0x0526
+#define OID_802_11_DROP_UNENCRYPTED                 0x0527
+#define OID_802_11_MIC_FAILURE_REPORT_FRAME         0x0528
+#define OID_802_11_EAP_METHOD						0x0529
+
+/* For 802.1x daemin using */
+#ifdef DOT1X_SUPPORT
+#define OID_802_DOT1X_CONFIGURATION					0x0540
+#define OID_802_DOT1X_PMKID_CACHE					0x0541
+#define OID_802_DOT1X_RADIUS_DATA					0x0542
+#define OID_802_DOT1X_WPA_KEY						0x0543
+#define OID_802_DOT1X_STATIC_WEP_COPY				0x0544
+#define OID_802_DOT1X_IDLE_TIMEOUT					0x0545
+#endif // DOT1X_SUPPORT //
+
+#define	RT_OID_DEVICE_NAME							0x0607
+#define	RT_OID_VERSION_INFO							0x0608
+#define	OID_802_11_BSSID_LIST						0x0609
+#define	OID_802_3_CURRENT_ADDRESS					0x060A
+#define	OID_GEN_MEDIA_CONNECT_STATUS				0x060B
+#define	RT_OID_802_11_QUERY_LINK_STATUS				0x060C
+#define	OID_802_11_RSSI								0x060D
+#define	OID_802_11_STATISTICS						0x060E
+#define	OID_GEN_RCV_OK								0x060F
+#define	OID_GEN_RCV_NO_BUFFER						0x0610
+#define	RT_OID_802_11_QUERY_EEPROM_VERSION			0x0611
+#define	RT_OID_802_11_QUERY_FIRMWARE_VERSION		0x0612
+#define	RT_OID_802_11_QUERY_LAST_RX_RATE			0x0613
+#define	RT_OID_802_11_TX_POWER_LEVEL_1				0x0614
+#define	RT_OID_802_11_QUERY_PIDVID					0x0615
+//for WPA_SUPPLICANT_SUPPORT
+#define OID_SET_COUNTERMEASURES                     0x0616
+#define OID_802_11_SET_IEEE8021X                    0x0617
+#define OID_802_11_SET_IEEE8021X_REQUIRE_KEY        0x0618
+#define OID_802_11_PMKID                            0x0620
+#define RT_OID_WPA_SUPPLICANT_SUPPORT               0x0621
+#define RT_OID_WE_VERSION_COMPILED                  0x0622
+#define RT_OID_NEW_DRIVER                           0x0623
+#define	OID_AUTO_PROVISION_BSSID_LIST				0x0624
+#define RT_OID_WPS_PROBE_REQ_IE						0x0625
+
+#define	RT_OID_802_11_SNR_0							0x0630
+#define	RT_OID_802_11_SNR_1							0x0631
+#define	RT_OID_802_11_QUERY_LAST_TX_RATE			0x0632
+#define	RT_OID_802_11_QUERY_HT_PHYMODE				0x0633
+#define	RT_OID_802_11_SET_HT_PHYMODE				0x0634
+#define	OID_802_11_RELOAD_DEFAULTS					0x0635
+#define	RT_OID_802_11_QUERY_APSD_SETTING			0x0636
+#define	RT_OID_802_11_SET_APSD_SETTING				0x0637
+#define	RT_OID_802_11_QUERY_APSD_PSM				0x0638
+#define	RT_OID_802_11_SET_APSD_PSM					0x0639
+#define	RT_OID_802_11_QUERY_DLS						0x063A
+#define	RT_OID_802_11_SET_DLS						0x063B
+#define	RT_OID_802_11_QUERY_DLS_PARAM				0x063C
+#define	RT_OID_802_11_SET_DLS_PARAM					0x063D
+#define RT_OID_802_11_QUERY_WMM              		0x063E
+#define RT_OID_802_11_SET_WMM      					0x063F
+#define RT_OID_802_11_QUERY_IMME_BA_CAP				0x0640
+#define RT_OID_802_11_SET_IMME_BA_CAP				0x0641
+#define RT_OID_802_11_QUERY_BATABLE					0x0642
+#define RT_OID_802_11_ADD_IMME_BA					0x0643
+#define RT_OID_802_11_TEAR_IMME_BA					0x0644
+#define RT_OID_DRIVER_DEVICE_NAME                   0x0645
+#define RT_OID_802_11_QUERY_DAT_HT_PHYMODE          0x0646
+#define RT_OID_QUERY_MULTIPLE_CARD_SUPPORT          0x0647
+#define OID_802_11_SET_PSPXLINK_MODE				0x0648
+/*+++ add by woody +++*/
+#define OID_802_11_SET_PASSPHRASE				0x0649
+#define RT_OID_802_11_QUERY_TX_PHYMODE                          0x0650
+#define RT_OID_802_11_QUERY_MAP_REAL_TX_RATE                          0x0678
+#define RT_OID_802_11_QUERY_MAP_REAL_RX_RATE                          0x0679
+
+
+
+
+#ifdef HOSTAPD_SUPPORT
+#define SIOCSIWGENIE	0x8B30
+#define OID_HOSTAPD_SUPPORT               0x0661
+
+#define HOSTAPD_OID_STATIC_WEP_COPY   0x0662
+#define HOSTAPD_OID_GET_1X_GROUP_KEY   0x0663
+
+#define HOSTAPD_OID_SET_STA_AUTHORIZED   0x0664
+#define HOSTAPD_OID_SET_STA_DISASSOC   0x0665
+#define HOSTAPD_OID_SET_STA_DEAUTH   0x0666
+#define HOSTAPD_OID_DEL_KEY   0x0667
+#define HOSTAPD_OID_SET_KEY   0x0668
+#define HOSTAPD_OID_SET_802_1X   0x0669
+#define HOSTAPD_OID_GET_SEQ   0x0670
+#define HOSTAPD_OID_GETWPAIE                 0x0671
+#define HOSTAPD_OID_COUNTERMEASURES 0x0672
+#define HOSTAPD_OID_SET_WPAPSK 0x0673
+#define HOSTAPD_OID_SET_WPS_BEACON_IE 0x0674
+#define HOSTAPD_OID_SET_WPS_PROBE_RESP_IE 0x0675
+
+#define	RT_HOSTAPD_OID_HOSTAPD_SUPPORT				(OID_GET_SET_TOGGLE |	OID_HOSTAPD_SUPPORT)
+#define	RT_HOSTAPD_OID_STATIC_WEP_COPY				(OID_GET_SET_TOGGLE |	HOSTAPD_OID_STATIC_WEP_COPY)
+#define	RT_HOSTAPD_OID_GET_1X_GROUP_KEY				(OID_GET_SET_TOGGLE |	HOSTAPD_OID_GET_1X_GROUP_KEY)
+#define	RT_HOSTAPD_OID_SET_STA_AUTHORIZED			(OID_GET_SET_TOGGLE |	HOSTAPD_OID_SET_STA_AUTHORIZED)
+#define	RT_HOSTAPD_OID_SET_STA_DISASSOC				(OID_GET_SET_TOGGLE |	HOSTAPD_OID_SET_STA_DISASSOC)
+#define	RT_HOSTAPD_OID_SET_STA_DEAUTH				(OID_GET_SET_TOGGLE |	HOSTAPD_OID_SET_STA_DEAUTH)
+#define	RT_HOSTAPD_OID_DEL_KEY						(OID_GET_SET_TOGGLE |	HOSTAPD_OID_DEL_KEY)
+#define	RT_HOSTAPD_OID_SET_KEY						(OID_GET_SET_TOGGLE |	HOSTAPD_OID_SET_KEY)
+#define	RT_HOSTAPD_OID_SET_802_1X						(OID_GET_SET_TOGGLE |	HOSTAPD_OID_SET_802_1X)
+#define	RT_HOSTAPD_OID_COUNTERMEASURES				(OID_GET_SET_TOGGLE |	HOSTAPD_OID_COUNTERMEASURES)
+#define	RT_HOSTAPD_OID_SET_WPAPSK				(OID_GET_SET_TOGGLE |	HOSTAPD_OID_SET_WPAPSK)
+#define	RT_HOSTAPD_OID_SET_WPS_BEACON_IE				(OID_GET_SET_TOGGLE |	HOSTAPD_OID_SET_WPS_BEACON_IE)
+#define	RT_HOSTAPD_OID_SET_WPS_PROBE_RESP_IE				(OID_GET_SET_TOGGLE |	HOSTAPD_OID_SET_WPS_PROBE_RESP_IE)
+
+
+#define IEEE80211_IS_MULTICAST(_a) (*(_a) & 0x01)
+#define	IEEE80211_KEYBUF_SIZE	16
+#define	IEEE80211_MICBUF_SIZE	(8 + 8)		/* space for both tx+rx keys */
+#define IEEE80211_TID_SIZE		17			/* total number of TIDs */
+
+#define	IEEE80211_MLME_ASSOC		    1	/* associate station */
+#define	IEEE80211_MLME_DISASSOC		    2	/* disassociate station */
+#define	IEEE80211_MLME_DEAUTH		    3	/* deauthenticate station */
+#define	IEEE80211_MLME_AUTHORIZE	    4	/* authorize station */
+#define	IEEE80211_MLME_UNAUTHORIZE	    5	/* unauthorize station */
+#define IEEE80211_MLME_CLEAR_STATS	    6	/* clear station statistic */
+#define IEEE80211_1X_COPY_KEY        	7	/* copy static-wep unicast key */
+
+#define	IEEE80211_MAX_OPT_IE	256
+#define IWEVEXPIRED	0x8C04
+
+struct ieee80211req_mlme {
+	UINT8 im_op;			    /* operation to perform */
+	UINT8 im_ssid_len;		/* length of optional ssid */
+	UINT16 im_reason;		/* 802.11 reason code */
+	UINT8 im_macaddr[IEEE80211_ADDR_LEN];
+	UINT8 im_ssid[IEEE80211_NWID_LEN];
+};
+
+struct ieee80211req_key {
+	UINT8 ik_type;		/* key/cipher type */
+	UINT8 ik_pad;
+	UINT16 ik_keyix;		/* key index */
+	UINT8 ik_keylen;		/* key length in bytes */
+	UINT8 ik_flags;
+	UINT8 ik_macaddr[IEEE80211_ADDR_LEN];
+	UINT64 ik_keyrsc;		/* key receive sequence counter */
+	UINT64 ik_keytsc;		/* key transmit sequence counter */
+	UINT8 ik_keydata[IEEE80211_KEYBUF_SIZE+IEEE80211_MICBUF_SIZE];
+	int txkey;
+};
+
+struct ieee80211req_del_key {
+	UINT8 idk_keyix;		/* key index */
+	UINT8 idk_macaddr[IEEE80211_ADDR_LEN];
+};
+
+struct default_group_key {
+	UINT16 ik_keyix;		/* key index */
+	UINT8 ik_keylen;		/* key length in bytes */
+	UINT8 ik_keydata[IEEE80211_KEYBUF_SIZE+IEEE80211_MICBUF_SIZE];
+};
+
+struct ieee80211req_wpaie {
+	UINT8	wpa_macaddr[IEEE80211_ADDR_LEN];
+	UINT8	wpa_ie[IEEE80211_MAX_OPT_IE];
+	UINT8	rsn_ie[IEEE80211_MAX_OPT_IE];
+};
+
+struct hostapd_wpa_psk {
+	struct hostapd_wpa_psk *next;
+	int group;
+	UCHAR psk[32];
+	UCHAR addr[6];
+};
+
+#endif //HOSTAPD_SUPPORT//
+
+#define RT_OID_802_11_QUERY_TDLS_PARAM			0x0676
+#define	RT_OID_802_11_QUERY_TDLS				0x0677
+
+// Ralink defined OIDs
+// Dennis Lee move to platform specific	
+
+#define	RT_OID_802_11_BSSID					  (OID_GET_SET_TOGGLE |	OID_802_11_BSSID)
+#define	RT_OID_802_11_SSID					  (OID_GET_SET_TOGGLE |	OID_802_11_SSID)
+#define	RT_OID_802_11_INFRASTRUCTURE_MODE	  (OID_GET_SET_TOGGLE |	OID_802_11_INFRASTRUCTURE_MODE)
+#define	RT_OID_802_11_ADD_WEP				  (OID_GET_SET_TOGGLE |	OID_802_11_ADD_WEP)
+#define	RT_OID_802_11_ADD_KEY				  (OID_GET_SET_TOGGLE |	OID_802_11_ADD_KEY)
+#define	RT_OID_802_11_REMOVE_WEP			  (OID_GET_SET_TOGGLE |	OID_802_11_REMOVE_WEP)
+#define	RT_OID_802_11_REMOVE_KEY			  (OID_GET_SET_TOGGLE |	OID_802_11_REMOVE_KEY)
+#define	RT_OID_802_11_DISASSOCIATE			  (OID_GET_SET_TOGGLE |	OID_802_11_DISASSOCIATE)
+#define	RT_OID_802_11_AUTHENTICATION_MODE	  (OID_GET_SET_TOGGLE |	OID_802_11_AUTHENTICATION_MODE)
+#define	RT_OID_802_11_PRIVACY_FILTER		  (OID_GET_SET_TOGGLE |	OID_802_11_PRIVACY_FILTER)
+#define	RT_OID_802_11_BSSID_LIST_SCAN		  (OID_GET_SET_TOGGLE |	OID_802_11_BSSID_LIST_SCAN)
+#define	RT_OID_802_11_WEP_STATUS			  (OID_GET_SET_TOGGLE |	OID_802_11_WEP_STATUS)
+#define	RT_OID_802_11_RELOAD_DEFAULTS		  (OID_GET_SET_TOGGLE |	OID_802_11_RELOAD_DEFAULTS)
+#define	RT_OID_802_11_NETWORK_TYPE_IN_USE	  (OID_GET_SET_TOGGLE |	OID_802_11_NETWORK_TYPE_IN_USE)
+#define	RT_OID_802_11_TX_POWER_LEVEL		  (OID_GET_SET_TOGGLE |	OID_802_11_TX_POWER_LEVEL)
+#define	RT_OID_802_11_RSSI_TRIGGER			  (OID_GET_SET_TOGGLE |	OID_802_11_RSSI_TRIGGER)
+#define	RT_OID_802_11_FRAGMENTATION_THRESHOLD (OID_GET_SET_TOGGLE |	OID_802_11_FRAGMENTATION_THRESHOLD)
+#define	RT_OID_802_11_RTS_THRESHOLD			  (OID_GET_SET_TOGGLE |	OID_802_11_RTS_THRESHOLD)
+#define	RT_OID_802_11_RX_ANTENNA_SELECTED	  (OID_GET_SET_TOGGLE |	OID_802_11_RX_ANTENNA_SELECTED)
+#define	RT_OID_802_11_TX_ANTENNA_SELECTED	  (OID_GET_SET_TOGGLE |	OID_802_11_TX_ANTENNA_SELECTED)
+#define	RT_OID_802_11_SUPPORTED_RATES		  (OID_GET_SET_TOGGLE |	OID_802_11_SUPPORTED_RATES)
+#define	RT_OID_802_11_DESIRED_RATES			  (OID_GET_SET_TOGGLE |	OID_802_11_DESIRED_RATES)
+#define	RT_OID_802_11_CONFIGURATION			  (OID_GET_SET_TOGGLE |	OID_802_11_CONFIGURATION)
+#define	RT_OID_802_11_POWER_MODE			  (OID_GET_SET_TOGGLE |	OID_802_11_POWER_MODE)
+#define RT_OID_802_11_SET_PSPXLINK_MODE		  (OID_GET_SET_TOGGLE |	OID_802_11_SET_PSPXLINK_MODE)
+#define RT_OID_802_11_EAP_METHOD			  (OID_GET_SET_TOGGLE | OID_802_11_EAP_METHOD)
+#define RT_OID_802_11_SET_PASSPHRASE		  (OID_GET_SET_TOGGLE | OID_802_11_SET_PASSPHRASE)
+
+#ifdef DOT1X_SUPPORT
+#define RT_OID_802_DOT1X_PMKID_CACHE		(OID_GET_SET_TOGGLE | OID_802_DOT1X_PMKID_CACHE)
+#define RT_OID_802_DOT1X_RADIUS_DATA		(OID_GET_SET_TOGGLE | OID_802_DOT1X_RADIUS_DATA)
+#define RT_OID_802_DOT1X_WPA_KEY			(OID_GET_SET_TOGGLE | OID_802_DOT1X_WPA_KEY)
+#define RT_OID_802_DOT1X_STATIC_WEP_COPY	(OID_GET_SET_TOGGLE | OID_802_DOT1X_STATIC_WEP_COPY)
+#define RT_OID_802_DOT1X_IDLE_TIMEOUT		(OID_GET_SET_TOGGLE | OID_802_DOT1X_IDLE_TIMEOUT)
+#endif // DOT1X_SUPPORT //
+
+#define RT_OID_802_11_SET_TDLS_PARAM			(OID_GET_SET_TOGGLE | RT_OID_802_11_QUERY_TDLS_PARAM)
+#define RT_OID_802_11_SET_TDLS				(OID_GET_SET_TOGGLE | RT_OID_802_11_QUERY_TDLS)
+
+
+typedef enum _NDIS_802_11_STATUS_TYPE
+{
+    Ndis802_11StatusType_Authentication,
+    Ndis802_11StatusType_MediaStreamMode,
+    Ndis802_11StatusType_PMKID_CandidateList,		
+    Ndis802_11StatusTypeMax    // not a real type, defined as an upper bound
+} NDIS_802_11_STATUS_TYPE, *PNDIS_802_11_STATUS_TYPE;
+
+typedef UCHAR   NDIS_802_11_MAC_ADDRESS[6];
+
+typedef struct _NDIS_802_11_STATUS_INDICATION
+{
+    NDIS_802_11_STATUS_TYPE StatusType;
+} NDIS_802_11_STATUS_INDICATION, *PNDIS_802_11_STATUS_INDICATION;
+
+// mask for authentication/integrity fields
+#define NDIS_802_11_AUTH_REQUEST_AUTH_FIELDS        0x0f
+
+#define NDIS_802_11_AUTH_REQUEST_REAUTH             0x01
+#define NDIS_802_11_AUTH_REQUEST_KEYUPDATE          0x02
+#define NDIS_802_11_AUTH_REQUEST_PAIRWISE_ERROR     0x06
+#define NDIS_802_11_AUTH_REQUEST_GROUP_ERROR        0x0E
+
+typedef struct _NDIS_802_11_AUTHENTICATION_REQUEST
+{
+    ULONG Length;            // Length of structure
+    NDIS_802_11_MAC_ADDRESS Bssid;
+    ULONG Flags;
+} NDIS_802_11_AUTHENTICATION_REQUEST, *PNDIS_802_11_AUTHENTICATION_REQUEST;
+
+//Added new types for PMKID Candidate lists.
+typedef struct _PMKID_CANDIDATE {
+    NDIS_802_11_MAC_ADDRESS BSSID;
+    ULONG Flags;
+} PMKID_CANDIDATE, *PPMKID_CANDIDATE;
+
+typedef struct _NDIS_802_11_PMKID_CANDIDATE_LIST
+{
+    ULONG Version;       // Version of the structure
+    ULONG NumCandidates; // No. of pmkid candidates
+    PMKID_CANDIDATE CandidateList[1];
+} NDIS_802_11_PMKID_CANDIDATE_LIST, *PNDIS_802_11_PMKID_CANDIDATE_LIST;
+
+//Flags for PMKID Candidate list structure
+#define NDIS_802_11_PMKID_CANDIDATE_PREAUTH_ENABLED	0x01
+
+// Added new types for OFDM 5G and 2.4G
+typedef enum _NDIS_802_11_NETWORK_TYPE
+{
+   Ndis802_11FH, 
+   Ndis802_11DS, 
+    Ndis802_11OFDM5,    
+    Ndis802_11OFDM24,
+	Ndis802_11Automode,
+    Ndis802_11OFDM5_N,
+    Ndis802_11OFDM24_N,
+    Ndis802_11NetworkTypeMax    // not a real type, defined as an upper bound
+} NDIS_802_11_NETWORK_TYPE, *PNDIS_802_11_NETWORK_TYPE;
+
+typedef struct _NDIS_802_11_NETWORK_TYPE_LIST
+{
+    UINT                       NumberOfItems;  // in list below, at least 1
+   NDIS_802_11_NETWORK_TYPE    NetworkType [1];
+} NDIS_802_11_NETWORK_TYPE_LIST, *PNDIS_802_11_NETWORK_TYPE_LIST;
+
+typedef enum _NDIS_802_11_POWER_MODE
+{
+    Ndis802_11PowerModeCAM,
+    Ndis802_11PowerModeMAX_PSP,
+    Ndis802_11PowerModeFast_PSP,
+    Ndis802_11PowerModeLegacy_PSP,
+    Ndis802_11PowerModeMax      // not a real mode, defined as an upper bound
+} NDIS_802_11_POWER_MODE, *PNDIS_802_11_POWER_MODE;
+
+typedef ULONG   NDIS_802_11_TX_POWER_LEVEL; // in milliwatts
+
+//
+// Received Signal Strength Indication
+//
+typedef LONG    NDIS_802_11_RSSI;           // in dBm
+
+typedef struct _NDIS_802_11_CONFIGURATION_FH
+{
+   ULONG           Length;            // Length of structure
+   ULONG           HopPattern;        // As defined by 802.11, MSB set 
+   ULONG           HopSet;            // to one if non-802.11
+   ULONG           DwellTime;         // units are Kusec
+} NDIS_802_11_CONFIGURATION_FH, *PNDIS_802_11_CONFIGURATION_FH;
+
+typedef struct _NDIS_802_11_CONFIGURATION
+{
+   ULONG                           Length;             // Length of structure
+   ULONG                           BeaconPeriod;       // units are Kusec
+   ULONG                           ATIMWindow;         // units are Kusec
+   ULONG                           DSConfig;           // Frequency, units are kHz
+   NDIS_802_11_CONFIGURATION_FH    FHConfig;
+} NDIS_802_11_CONFIGURATION, *PNDIS_802_11_CONFIGURATION;
+
+typedef struct _NDIS_802_11_STATISTICS
+{
+   ULONG           Length;             // Length of structure
+   LARGE_INTEGER   TransmittedFragmentCount;
+   LARGE_INTEGER   MulticastTransmittedFrameCount;
+   LARGE_INTEGER   FailedCount;
+   LARGE_INTEGER   RetryCount;
+   LARGE_INTEGER   MultipleRetryCount;
+   LARGE_INTEGER   RTSSuccessCount;
+   LARGE_INTEGER   RTSFailureCount;
+   LARGE_INTEGER   ACKFailureCount;
+   LARGE_INTEGER   FrameDuplicateCount;
+   LARGE_INTEGER   ReceivedFragmentCount;
+   LARGE_INTEGER   MulticastReceivedFrameCount;
+   LARGE_INTEGER   FCSErrorCount;
+   LARGE_INTEGER   TKIPLocalMICFailures;
+   LARGE_INTEGER   TKIPRemoteMICErrors;
+   LARGE_INTEGER   TKIPICVErrors;
+   LARGE_INTEGER   TKIPCounterMeasuresInvoked;
+   LARGE_INTEGER   TKIPReplays;
+   LARGE_INTEGER   CCMPFormatErrors;
+   LARGE_INTEGER   CCMPReplays;
+   LARGE_INTEGER   CCMPDecryptErrors;
+   LARGE_INTEGER   FourWayHandshakeFailures;   
+} NDIS_802_11_STATISTICS, *PNDIS_802_11_STATISTICS;
+
+typedef  ULONG  NDIS_802_11_KEY_INDEX;
+typedef ULONGLONG   NDIS_802_11_KEY_RSC;
+
+#ifdef DOT1X_SUPPORT
+#define MAX_RADIUS_SRV_NUM			2	  // 802.1x failover number
+
+/* The dot1x related structure. 
+   It's used to communicate with DOT1X daemon */
+typedef struct GNU_PACKED _RADIUS_SRV_INFO {
+	UINT32			radius_ip;
+	UINT32			radius_port;
+	UCHAR			radius_key[64];
+	UCHAR			radius_key_len;
+} RADIUS_SRV_INFO, *PRADIUS_SRV_INFO;
+
+typedef struct GNU_PACKED _DOT1X_BSS_INFO
+{
+	UCHAR			radius_srv_num;			
+	RADIUS_SRV_INFO	radius_srv_info[MAX_RADIUS_SRV_NUM];
+	UCHAR			ieee8021xWEP;		 // dynamic WEP
+    UCHAR           key_index;           
+    UCHAR           key_length;          // length of key in bytes
+    UCHAR           key_material[13];    
+	UCHAR			nasId[IFNAMSIZ];
+	UCHAR			nasId_len;
+} DOT1X_BSS_INFO, *PDOT1X_BSS_INFO;
+
+typedef struct GNU_PACKED _DOT1X_CMM_CONF
+{
+    UINT32          Length;             // Length of this structure    
+    UCHAR			mbss_num;			// indicate multiple BSS number 
+	UINT32			own_ip_addr;	
+	UINT32			retry_interval;
+	UINT32			session_timeout_interval;
+	UINT32			quiet_interval;
+	UCHAR			EAPifname[8][IFNAMSIZ];
+	UCHAR			EAPifname_len[8];
+	UCHAR 			PreAuthifname[8][IFNAMSIZ];
+	UCHAR			PreAuthifname_len[8];
+	DOT1X_BSS_INFO	Dot1xBssInfo[8];
+} DOT1X_CMM_CONF, *PDOT1X_CMM_CONF;
+
+typedef struct GNU_PACKED _DOT1X_IDLE_TIMEOUT
+{
+	UCHAR			StaAddr[6];			
+	UINT32			idle_timeout;
+} DOT1X_IDLE_TIMEOUT, *PDOT1X_IDLE_TIMEOUT;
+#endif // DOT1X_SUPPORT //
+
+
+
+#ifdef CONFIG_STA_SUPPORT
+// Key mapping keys require a BSSID
+typedef struct _NDIS_802_11_KEY
+{
+    UINT           Length;             // Length of this structure
+    UINT           KeyIndex;           
+    UINT           KeyLength;          // length of key in bytes
+    NDIS_802_11_MAC_ADDRESS BSSID;
+    NDIS_802_11_KEY_RSC KeyRSC;
+    UCHAR           KeyMaterial[1];     // variable length depending on above field
+} NDIS_802_11_KEY, *PNDIS_802_11_KEY;
+
+typedef struct _NDIS_802_11_PASSPHRASE
+{
+    UINT           KeyLength;          // length of key in bytes
+    NDIS_802_11_MAC_ADDRESS BSSID;
+    UCHAR           KeyMaterial[1];     // variable length depending on above field
+} NDIS_802_11_PASSPHRASE, *PNDIS_802_11_PASSPHRASE;
+#endif // CONFIG_STA_SUPPORT //
+
+typedef struct _NDIS_802_11_REMOVE_KEY
+{
+    UINT           Length;             // Length of this structure
+    UINT           KeyIndex;           
+    NDIS_802_11_MAC_ADDRESS BSSID;      
+} NDIS_802_11_REMOVE_KEY, *PNDIS_802_11_REMOVE_KEY;
+
+typedef struct _NDIS_802_11_WEP
+{
+   UINT     Length;        // Length of this structure
+   UINT     KeyIndex;           // 0 is the per-client key, 1-N are the
+                                        // global keys
+   UINT     KeyLength;     // length of key in bytes
+   UCHAR     KeyMaterial[1];// variable length depending on above field
+} NDIS_802_11_WEP, *PNDIS_802_11_WEP;
+
+
+typedef enum _NDIS_802_11_NETWORK_INFRASTRUCTURE
+{
+   Ndis802_11IBSS,
+   Ndis802_11Infrastructure,
+   Ndis802_11AutoUnknown,
+   Ndis802_11Monitor,
+   Ndis802_11InfrastructureMax     // Not a real value, defined as upper bound
+} NDIS_802_11_NETWORK_INFRASTRUCTURE, *PNDIS_802_11_NETWORK_INFRASTRUCTURE;
+
+// Add new authentication modes
+typedef enum _NDIS_802_11_AUTHENTICATION_MODE
+{
+   Ndis802_11AuthModeOpen,
+   Ndis802_11AuthModeShared,
+   Ndis802_11AuthModeAutoSwitch,
+    Ndis802_11AuthModeWPA,
+    Ndis802_11AuthModeWPAPSK,
+    Ndis802_11AuthModeWPANone,
+   Ndis802_11AuthModeWPA2,
+   Ndis802_11AuthModeWPA2PSK,    
+   	Ndis802_11AuthModeWPA1WPA2,
+	Ndis802_11AuthModeWPA1PSKWPA2PSK,
+   Ndis802_11AuthModeMax           // Not a real mode, defined as upper bound
+} NDIS_802_11_AUTHENTICATION_MODE, *PNDIS_802_11_AUTHENTICATION_MODE;
+
+typedef UCHAR   NDIS_802_11_RATES[NDIS_802_11_LENGTH_RATES];        // Set of 8 data rates
+typedef UCHAR   NDIS_802_11_RATES_EX[NDIS_802_11_LENGTH_RATES_EX];  // Set of 16 data rates
+
+typedef struct GNU_PACKED _NDIS_802_11_SSID
+{
+    UINT   SsidLength;         // length of SSID field below, in bytes;
+                                // this can be zero.
+    UCHAR   Ssid[NDIS_802_11_LENGTH_SSID];           // SSID information field
+} NDIS_802_11_SSID, *PNDIS_802_11_SSID;
+
+
+typedef struct GNU_PACKED _NDIS_WLAN_BSSID
+{
+   ULONG                               Length;     // Length of this structure
+   NDIS_802_11_MAC_ADDRESS             MacAddress; // BSSID
+   UCHAR                               Reserved[2];
+   NDIS_802_11_SSID                    Ssid;       // SSID
+   ULONG                               Privacy;    // WEP encryption requirement
+   NDIS_802_11_RSSI                    Rssi;       // receive signal strength in dBm
+   NDIS_802_11_NETWORK_TYPE            NetworkTypeInUse;
+   NDIS_802_11_CONFIGURATION           Configuration;
+   NDIS_802_11_NETWORK_INFRASTRUCTURE  InfrastructureMode;
+   NDIS_802_11_RATES                   SupportedRates;
+} NDIS_WLAN_BSSID, *PNDIS_WLAN_BSSID;
+
+typedef struct GNU_PACKED _NDIS_802_11_BSSID_LIST
+{
+   UINT           NumberOfItems;      // in list below, at least 1
+   NDIS_WLAN_BSSID Bssid[1];
+} NDIS_802_11_BSSID_LIST, *PNDIS_802_11_BSSID_LIST;
+
+typedef struct {
+    BOOLEAN     bValid;                     // 1: variable contains valid value
+    USHORT      StaNum;
+    UCHAR       ChannelUtilization;
+    USHORT      RemainingAdmissionControl;  // in unit of 32-us
+} QBSS_LOAD_UI, *PQBSS_LOAD_UI;
+
+// Added Capabilities, IELength and IEs for each BSSID
+typedef struct GNU_PACKED _NDIS_WLAN_BSSID_EX
+{
+    ULONG                               Length;             // Length of this structure
+    NDIS_802_11_MAC_ADDRESS             MacAddress;         // BSSID
+    UCHAR                               Reserved[2];
+    NDIS_802_11_SSID                    Ssid;               // SSID
+    UINT                                Privacy;            // WEP encryption requirement
+    NDIS_802_11_RSSI                    Rssi;               // receive signal
+                                                            // strength in dBm
+    NDIS_802_11_NETWORK_TYPE            NetworkTypeInUse;
+    NDIS_802_11_CONFIGURATION           Configuration;
+    NDIS_802_11_NETWORK_INFRASTRUCTURE  InfrastructureMode;
+    NDIS_802_11_RATES_EX                SupportedRates;
+    ULONG                               IELength;
+    UCHAR                               IEs[1];
+} NDIS_WLAN_BSSID_EX, *PNDIS_WLAN_BSSID_EX;
+
+typedef struct GNU_PACKED _NDIS_802_11_BSSID_LIST_EX
+{
+    UINT                   NumberOfItems;      // in list below, at least 1
+    NDIS_WLAN_BSSID_EX      Bssid[1];
+} NDIS_802_11_BSSID_LIST_EX, *PNDIS_802_11_BSSID_LIST_EX;
+
+typedef struct GNU_PACKED _NDIS_802_11_FIXED_IEs 
+{
+    UCHAR Timestamp[8];
+    USHORT BeaconInterval;
+    USHORT Capabilities;
+} NDIS_802_11_FIXED_IEs, *PNDIS_802_11_FIXED_IEs;
+
+typedef struct _NDIS_802_11_VARIABLE_IEs 
+{
+    UCHAR ElementID;
+    UCHAR Length;    // Number of bytes in data field
+    UCHAR data[1];
+} NDIS_802_11_VARIABLE_IEs, *PNDIS_802_11_VARIABLE_IEs;
+
+typedef  ULONG   NDIS_802_11_FRAGMENTATION_THRESHOLD;
+
+typedef  ULONG   NDIS_802_11_RTS_THRESHOLD;
+
+typedef  ULONG   NDIS_802_11_ANTENNA;
+
+typedef enum _NDIS_802_11_PRIVACY_FILTER
+{
+   Ndis802_11PrivFilterAcceptAll,
+   Ndis802_11PrivFilter8021xWEP
+} NDIS_802_11_PRIVACY_FILTER, *PNDIS_802_11_PRIVACY_FILTER;
+
+// Added new encryption types
+// Also aliased typedef to new name
+typedef enum _NDIS_802_11_WEP_STATUS
+{
+   Ndis802_11WEPEnabled,
+    Ndis802_11Encryption1Enabled = Ndis802_11WEPEnabled,
+   Ndis802_11WEPDisabled,
+    Ndis802_11EncryptionDisabled = Ndis802_11WEPDisabled,
+   Ndis802_11WEPKeyAbsent,
+    Ndis802_11Encryption1KeyAbsent = Ndis802_11WEPKeyAbsent,
+   Ndis802_11WEPNotSupported,
+    Ndis802_11EncryptionNotSupported = Ndis802_11WEPNotSupported,
+    Ndis802_11Encryption2Enabled,
+    Ndis802_11Encryption2KeyAbsent,
+    Ndis802_11Encryption3Enabled,
+    Ndis802_11Encryption3KeyAbsent,
+    Ndis802_11Encryption4Enabled,	// TKIP or AES mix
+    Ndis802_11Encryption4KeyAbsent,
+    Ndis802_11GroupWEP40Enabled,
+	Ndis802_11GroupWEP104Enabled,
+} NDIS_802_11_WEP_STATUS, *PNDIS_802_11_WEP_STATUS,
+  NDIS_802_11_ENCRYPTION_STATUS, *PNDIS_802_11_ENCRYPTION_STATUS;
+
+typedef enum _NDIS_802_11_RELOAD_DEFAULTS
+{
+   Ndis802_11ReloadWEPKeys
+} NDIS_802_11_RELOAD_DEFAULTS, *PNDIS_802_11_RELOAD_DEFAULTS;
+
+#define NDIS_802_11_AI_REQFI_CAPABILITIES      1
+#define NDIS_802_11_AI_REQFI_LISTENINTERVAL    2
+#define NDIS_802_11_AI_REQFI_CURRENTAPADDRESS  4
+
+#define NDIS_802_11_AI_RESFI_CAPABILITIES      1
+#define NDIS_802_11_AI_RESFI_STATUSCODE        2
+#define NDIS_802_11_AI_RESFI_ASSOCIATIONID     4
+
+typedef struct _NDIS_802_11_AI_REQFI
+{
+    USHORT Capabilities;
+    USHORT ListenInterval;
+    NDIS_802_11_MAC_ADDRESS  CurrentAPAddress;
+} NDIS_802_11_AI_REQFI, *PNDIS_802_11_AI_REQFI;
+
+typedef struct _NDIS_802_11_AI_RESFI
+{
+    USHORT Capabilities;
+    USHORT StatusCode;
+    USHORT AssociationId;
+} NDIS_802_11_AI_RESFI, *PNDIS_802_11_AI_RESFI;
+
+typedef struct _NDIS_802_11_ASSOCIATION_INFORMATION
+{
+    ULONG                   Length;
+    USHORT                  AvailableRequestFixedIEs;
+    NDIS_802_11_AI_REQFI    RequestFixedIEs;
+    ULONG                   RequestIELength;
+    ULONG                   OffsetRequestIEs;
+    USHORT                  AvailableResponseFixedIEs;
+    NDIS_802_11_AI_RESFI    ResponseFixedIEs;
+    ULONG                   ResponseIELength;
+    ULONG                   OffsetResponseIEs;
+} NDIS_802_11_ASSOCIATION_INFORMATION, *PNDIS_802_11_ASSOCIATION_INFORMATION;
+
+typedef struct _NDIS_802_11_AUTHENTICATION_EVENT
+{
+    NDIS_802_11_STATUS_INDICATION       Status;
+    NDIS_802_11_AUTHENTICATION_REQUEST  Request[1];
+} NDIS_802_11_AUTHENTICATION_EVENT, *PNDIS_802_11_AUTHENTICATION_EVENT;
+        
+/*        
+typedef struct _NDIS_802_11_TEST
+{
+    ULONG Length;
+    ULONG Type;
+    union
+    {
+        NDIS_802_11_AUTHENTICATION_EVENT AuthenticationEvent;
+        NDIS_802_11_RSSI RssiTrigger;
+    };
+} NDIS_802_11_TEST, *PNDIS_802_11_TEST;
+ */
+
+// 802.11 Media stream constraints, associated with OID_802_11_MEDIA_STREAM_MODE
+typedef enum _NDIS_802_11_MEDIA_STREAM_MODE
+{
+    Ndis802_11MediaStreamOff,
+    Ndis802_11MediaStreamOn,
+} NDIS_802_11_MEDIA_STREAM_MODE, *PNDIS_802_11_MEDIA_STREAM_MODE;
+
+// PMKID Structures
+typedef UCHAR   NDIS_802_11_PMKID_VALUE[16];
+
+#ifdef CONFIG_STA_SUPPORT
+typedef struct _BSSID_INFO
+{
+    NDIS_802_11_MAC_ADDRESS BSSID;
+    NDIS_802_11_PMKID_VALUE PMKID;
+} BSSID_INFO, *PBSSID_INFO;
+
+typedef struct _NDIS_802_11_PMKID
+{
+    UINT    Length;
+    UINT    BSSIDInfoCount;
+    BSSID_INFO BSSIDInfo[1];
+} NDIS_802_11_PMKID, *PNDIS_802_11_PMKID;
+#endif // CONFIG_STA_SUPPORT //
+
+
+typedef struct _NDIS_802_11_AUTHENTICATION_ENCRYPTION
+{
+    NDIS_802_11_AUTHENTICATION_MODE AuthModeSupported;
+    NDIS_802_11_ENCRYPTION_STATUS EncryptStatusSupported;
+} NDIS_802_11_AUTHENTICATION_ENCRYPTION, *PNDIS_802_11_AUTHENTICATION_ENCRYPTION;
+
+typedef struct _NDIS_802_11_CAPABILITY
+{
+     ULONG Length;
+     ULONG Version;
+     ULONG NoOfPMKIDs;
+     ULONG NoOfAuthEncryptPairsSupported;
+     NDIS_802_11_AUTHENTICATION_ENCRYPTION AuthenticationEncryptionSupported[1];
+} NDIS_802_11_CAPABILITY, *PNDIS_802_11_CAPABILITY;
+
+#ifdef LINUX
+#if WIRELESS_EXT <= 11
+#ifndef SIOCDEVPRIVATE
+#define SIOCDEVPRIVATE                              0x8BE0
+#endif
+#define SIOCIWFIRSTPRIV								SIOCDEVPRIVATE
+#endif
+#endif // LINUX //
+
+
+#ifdef CONFIG_STA_SUPPORT
+#define RT_PRIV_IOCTL							(SIOCIWFIRSTPRIV + 0x01) // Sync. with AP for wsc upnp daemon
+#define RTPRIV_IOCTL_SET							(SIOCIWFIRSTPRIV + 0x02)
+
+#ifdef DBG
+#define RTPRIV_IOCTL_BBP                            (SIOCIWFIRSTPRIV + 0x03)
+#define RTPRIV_IOCTL_MAC                            (SIOCIWFIRSTPRIV + 0x05)
+
+#ifdef RTMP_RF_RW_SUPPORT
+#define RTPRIV_IOCTL_RF                             (SIOCIWFIRSTPRIV + 0x13)  // edit by johnli, fix read rf register problem
+#endif // RTMP_RF_RW_SUPPORT //
+#define RTPRIV_IOCTL_E2P                            (SIOCIWFIRSTPRIV + 0x07)
+#endif // DBG //
+
+#ifdef RALINK_ATE
+#ifdef RALINK_28xx_QA
+#define RTPRIV_IOCTL_ATE							(SIOCIWFIRSTPRIV + 0x08)
+#endif // RALINK_28xx_QA //
+#endif // RALINK_ATE //
+
+#define RTPRIV_IOCTL_STATISTICS                     (SIOCIWFIRSTPRIV + 0x09)
+#define RTPRIV_IOCTL_ADD_PMKID_CACHE                (SIOCIWFIRSTPRIV + 0x0A)
+#define RTPRIV_IOCTL_RADIUS_DATA                    (SIOCIWFIRSTPRIV + 0x0C)
+#define RTPRIV_IOCTL_GSITESURVEY					(SIOCIWFIRSTPRIV + 0x0D)
+#define RT_PRIV_IOCTL_EXT							(SIOCIWFIRSTPRIV + 0x0E) // Sync. with RT61 (for wpa_supplicant)
+#define RTPRIV_IOCTL_GET_MAC_TABLE					(SIOCIWFIRSTPRIV + 0x0F)
+
+#define RTPRIV_IOCTL_SHOW							(SIOCIWFIRSTPRIV + 0x11)
+enum {    
+	SHOW_CONN_STATUS = 4,
+	SHOW_DRVIER_VERION = 5,
+	SHOW_BA_INFO = 6,
+	SHOW_DESC_INFO = 7,
+	RAIO_OFF = 10,
+	RAIO_ON = 11,
+#ifdef QOS_DLS_SUPPORT
+	SHOW_DLS_ENTRY_INFO = 20,
+#endif // QOS_DLS_SUPPORT //
+	SHOW_CFG_VALUE = 21,
+	SHOW_ADHOC_ENTRY_INFO = 22,
+};
+
+
+#endif // CONFIG_STA_SUPPORT //
+
+
+
+#ifdef SNMP_SUPPORT
+//SNMP ieee 802dot11, kathy , 2008_0220
+// dot11res(3)
+#define RT_OID_802_11_MANUFACTUREROUI			0x0700
+#define RT_OID_802_11_MANUFACTURERNAME			0x0701
+#define RT_OID_802_11_RESOURCETYPEIDNAME		0x0702
+
+// dot11smt(1)
+#define RT_OID_802_11_PRIVACYOPTIONIMPLEMENTED	0x0703
+#define RT_OID_802_11_POWERMANAGEMENTMODE		0x0704
+#define OID_802_11_WEPDEFAULTKEYVALUE			0x0705 // read , write
+#define OID_802_11_WEPDEFAULTKEYID				0x0706
+#define RT_OID_802_11_WEPKEYMAPPINGLENGTH		0x0707
+#define OID_802_11_SHORTRETRYLIMIT				0x0708
+#define OID_802_11_LONGRETRYLIMIT				0x0709
+#define RT_OID_802_11_PRODUCTID					0x0710
+#define RT_OID_802_11_MANUFACTUREID				0x0711
+
+// //dot11Phy(4)
+#define OID_802_11_CURRENTCHANNEL				0x0712
+
+//dot11mac
+#define RT_OID_802_11_MAC_ADDRESS				0x0713
+#endif // SNMP_SUPPORT //
+
+#define OID_802_11_BUILD_CHANNEL_EX				0x0714
+#define OID_802_11_GET_CH_LIST					0x0715
+#define OID_802_11_GET_COUNTRY_CODE				0x0716
+#define OID_802_11_GET_CHANNEL_GEOGRAPHY		0x0717
+
+//#define RT_OID_802_11_STATISTICS              (OID_GET_SET_TOGGLE | OID_802_11_STATISTICS)
+
+#ifdef CONFIG_STA_SUPPORT
+#define RT_OID_WSC_SET_PASSPHRASE                   0x0740 // passphrase for wpa(2)-psk
+#define RT_OID_WSC_DRIVER_AUTO_CONNECT              0x0741
+#define RT_OID_WSC_QUERY_DEFAULT_PROFILE            0x0742
+#define RT_OID_WSC_SET_CONN_BY_PROFILE_INDEX        0x0743
+#define RT_OID_WSC_SET_ACTION                       0x0744
+#define RT_OID_WSC_SET_SSID                         0x0745
+#define RT_OID_WSC_SET_PIN_CODE                     0x0746
+#define RT_OID_WSC_SET_MODE                         0x0747 // PIN or PBC
+#define RT_OID_WSC_SET_CONF_MODE                    0x0748 // Enrollee or Registrar
+#define RT_OID_WSC_SET_PROFILE                      0x0749
+#endif // CONFIG_STA_SUPPORT //
+#define	RT_OID_WSC_CONFIG_STATUS					0x074F
+#define RT_OID_802_11_WSC_QUERY_PROFILE				0x0750
+// for consistency with RT61
+#define RT_OID_WSC_QUERY_STATUS						0x0751
+#define RT_OID_WSC_PIN_CODE							0x0752
+#define RT_OID_WSC_UUID								0x0753
+#define RT_OID_WSC_SET_SELECTED_REGISTRAR			0x0754
+#define RT_OID_WSC_EAPMSG							0x0755
+#define RT_OID_WSC_MANUFACTURER						0x0756
+#define RT_OID_WSC_MODEL_NAME						0x0757
+#define RT_OID_WSC_MODEL_NO							0x0758
+#define RT_OID_WSC_SERIAL_NO						0x0759
+#define RT_OID_WSC_READ_UFD_FILE					0x075A
+#define RT_OID_WSC_WRITE_UFD_FILE					0x075B
+#define RT_OID_WSC_MAC_ADDRESS						0x0760
+
+#ifdef LLTD_SUPPORT
+// for consistency with RT61
+#define RT_OID_GET_PHY_MODE                         0x761
+#endif // LLTD_SUPPORT //
+
+#ifdef NINTENDO_AP
+//#define RT_OID_NINTENDO                             0x0D010770 
+#define RT_OID_802_11_NINTENDO_GET_TABLE			0x0771 //((RT_OID_NINTENDO + 0x01) & 0xffff)
+#define RT_OID_802_11_NINTENDO_SET_TABLE			0x0772 //((RT_OID_NINTENDO + 0x02) & 0xffff)
+#define RT_OID_802_11_NINTENDO_CAPABLE				0x0773 //((RT_OID_NINTENDO + 0x03) & 0xffff)
+#endif // NINTENDO_AP //
+
+
+// New for MeetingHouse Api support
+#define OID_MH_802_1X_SUPPORTED               0xFFEDC100
+
+// MIMO Tx parameter, ShortGI, MCS, STBC, etc.  these are fields in TXWI. Don't change this definition!!!
+typedef union  _HTTRANSMIT_SETTING {
+#ifdef RT_BIG_ENDIAN
+	struct	{
+	USHORT		MODE:2;	// Use definition MODE_xxx.  
+//	USHORT		rsv:3;	 
+	USHORT		TxBF:1;
+	USHORT		rsv:2;
+	USHORT		STBC:2;	//SPACE 
+	USHORT		ShortGI:1;
+	USHORT		BW:1;	//channel bandwidth 20MHz or 40 MHz
+	USHORT   	MCS:7;                 // MCS
+	}	field;
+#else
+	struct	{
+	USHORT   	MCS:7;                 // MCS
+	USHORT		BW:1;	//channel bandwidth 20MHz or 40 MHz
+	USHORT		ShortGI:1;
+	USHORT		STBC:2;	//SPACE 
+//	USHORT		rsv:3;
+	USHORT		rsv:2;
+	USHORT		TxBF:1;
+	USHORT		MODE:2;	// Use definition MODE_xxx.  
+	}	field;
+#endif
+	USHORT		word;
+ } HTTRANSMIT_SETTING, *PHTTRANSMIT_SETTING;
+
+typedef enum _RT_802_11_PREAMBLE {
+    Rt802_11PreambleLong,
+    Rt802_11PreambleShort,
+    Rt802_11PreambleAuto
+} RT_802_11_PREAMBLE, *PRT_802_11_PREAMBLE;
+
+typedef enum _RT_802_11_PHY_MODE {
+	PHY_11BG_MIXED = 0,
+	PHY_11B,
+	PHY_11A,
+	PHY_11ABG_MIXED,
+	PHY_11G,
+#ifdef DOT11_N_SUPPORT
+	PHY_11ABGN_MIXED,	// both band   5
+	PHY_11N_2_4G,		// 11n-only with 2.4G band   	6
+	PHY_11GN_MIXED,	// 2.4G band      7
+	PHY_11AN_MIXED,	// 5G  band       8
+	PHY_11BGN_MIXED,	// if check 802.11b.      9
+	PHY_11AGN_MIXED,	// if check 802.11b.      10
+	PHY_11N_5G,			// 11n-only with 5G band		11
+#endif // DOT11_N_SUPPORT //
+} RT_802_11_PHY_MODE;
+
+
+// put all proprietery for-query objects here to reduce # of Query_OID
+typedef struct _RT_802_11_LINK_STATUS {
+    ULONG   CurrTxRate;         // in units of 0.5Mbps
+    ULONG   ChannelQuality;     // 0..100 %
+    ULONG   TxByteCount;        // both ok and fail
+    ULONG   RxByteCount;        // both ok and fail
+    ULONG	CentralChannel;		// 40MHz central channel number
+} RT_802_11_LINK_STATUS, *PRT_802_11_LINK_STATUS;
+
+typedef struct _RT_802_11_EVENT_LOG {
+    LARGE_INTEGER   SystemTime;  // timestammp via NdisGetCurrentSystemTime()
+    UCHAR           Addr[MAC_ADDR_LENGTH];
+    USHORT          Event;       // EVENT_xxx
+} RT_802_11_EVENT_LOG, *PRT_802_11_EVENT_LOG;
+
+typedef struct _RT_802_11_EVENT_TABLE {
+    ULONG       Num;
+    ULONG       Rsv;     // to align Log[] at LARGE_INEGER boundary
+    RT_802_11_EVENT_LOG   Log[MAX_NUMBER_OF_EVENT];
+} RT_802_11_EVENT_TABLE, PRT_802_11_EVENT_TABLE;
+
+// MIMO Tx parameter, ShortGI, MCS, STBC, etc.  these are fields in TXWI. Don't change this definition!!!
+typedef union  _MACHTTRANSMIT_SETTING {
+	struct	{
+	USHORT   	MCS:7;                 // MCS
+	USHORT		BW:1;	//channel bandwidth 20MHz or 40 MHz
+	USHORT		ShortGI:1;
+	USHORT		STBC:2;	//SPACE 
+	USHORT		rsv:3;	 
+	USHORT		MODE:2;	// Use definition MODE_xxx.  
+	}	field;
+	USHORT		word;
+ } MACHTTRANSMIT_SETTING, *PMACHTTRANSMIT_SETTING;
+
+typedef struct _RT_802_11_MAC_ENTRY {
+    UCHAR       Addr[MAC_ADDR_LENGTH];
+    UCHAR       Aid;
+    UCHAR       Psm;     // 0:PWR_ACTIVE, 1:PWR_SAVE
+    UCHAR		MimoPs;  // 0:MMPS_STATIC, 1:MMPS_DYNAMIC, 3:MMPS_Enabled
+    CHAR		AvgRssi0;
+	CHAR		AvgRssi1;
+	CHAR		AvgRssi2;
+	UINT32		ConnectedTime;
+    MACHTTRANSMIT_SETTING	TxRate;
+} RT_802_11_MAC_ENTRY, *PRT_802_11_MAC_ENTRY;
+
+typedef struct _RT_802_11_MAC_TABLE {
+    ULONG       Num;
+    RT_802_11_MAC_ENTRY Entry[MAX_NUMBER_OF_MAC];
+} RT_802_11_MAC_TABLE, *PRT_802_11_MAC_TABLE;
+
+// structure for query/set hardware register - MAC, BBP, RF register
+typedef struct _RT_802_11_HARDWARE_REGISTER {
+    ULONG   HardwareType;       // 0:MAC, 1:BBP, 2:RF register, 3:EEPROM
+    ULONG   Offset;             // Q/S register offset addr
+    ULONG   Data;               // R/W data buffer
+} RT_802_11_HARDWARE_REGISTER, *PRT_802_11_HARDWARE_REGISTER;
+
+typedef struct _RT_802_11_AP_CONFIG {
+    ULONG   EnableTxBurst;      // 0-disable, 1-enable
+    ULONG   EnableTurboRate;    // 0-disable, 1-enable 72/100mbps turbo rate
+    ULONG   IsolateInterStaTraffic;     // 0-disable, 1-enable isolation
+    ULONG   HideSsid;           // 0-disable, 1-enable hiding
+    ULONG   UseBGProtection;    // 0-AUTO, 1-always ON, 2-always OFF
+    ULONG   UseShortSlotTime;   // 0-no use, 1-use 9-us short slot time
+    ULONG   Rsv1;               // must be 0
+    ULONG   SystemErrorBitmap;  // ignore upon SET, return system error upon QUERY
+} RT_802_11_AP_CONFIG, *PRT_802_11_AP_CONFIG;
+
+// structure to query/set STA_CONFIG
+typedef struct _RT_802_11_STA_CONFIG {
+    ULONG   EnableTxBurst;      // 0-disable, 1-enable
+    ULONG   EnableTurboRate;    // 0-disable, 1-enable 72/100mbps turbo rate
+    ULONG   UseBGProtection;    // 0-AUTO, 1-always ON, 2-always OFF
+    ULONG   UseShortSlotTime;   // 0-no use, 1-use 9-us short slot time when applicable
+    ULONG   AdhocMode; 			// 0-11b rates only (WIFI spec), 1 - b/g mixed, 2 - g only
+    ULONG   HwRadioStatus;      // 0-OFF, 1-ON, default is 1, Read-Only
+    ULONG   Rsv1;               // must be 0
+    ULONG   SystemErrorBitmap;  // ignore upon SET, return system error upon QUERY
+} RT_802_11_STA_CONFIG, *PRT_802_11_STA_CONFIG;
+
+//
+//  For OID Query or Set about BA structure
+//
+typedef	struct	_OID_BACAP_STRUC	{
+		UCHAR		RxBAWinLimit;
+		UCHAR		TxBAWinLimit;
+		UCHAR		Policy;	// 0: DELAY_BA 1:IMMED_BA  (//BA Policy subfiled value in ADDBA frame)   2:BA-not use. other value invalid
+		UCHAR		MpduDensity;	// 0: DELAY_BA 1:IMMED_BA  (//BA Policy subfiled value in ADDBA frame)   2:BA-not use. other value invalid
+		UCHAR       	AmsduEnable;	//Enable AMSDU transmisstion
+		UCHAR       	AmsduSize;	// 0:3839, 1:7935 bytes. UINT  MSDUSizeToBytes[]	= { 3839, 7935};
+		UCHAR       	MMPSmode;	// MIMO power save more, 0:static, 1:dynamic, 2:rsv, 3:mimo enable
+		BOOLEAN		AutoBA;	// Auto BA will automatically	
+} OID_BACAP_STRUC, *POID_BACAP_STRUC;
+
+typedef struct _RT_802_11_ACL_ENTRY {
+    UCHAR   Addr[MAC_ADDR_LENGTH];
+    USHORT  Rsv;
+} RT_802_11_ACL_ENTRY, *PRT_802_11_ACL_ENTRY;
+
+typedef struct GNU_PACKED _RT_802_11_ACL {
+    ULONG   Policy;             // 0-disable, 1-positive list, 2-negative list
+    ULONG   Num;
+    RT_802_11_ACL_ENTRY Entry[MAX_NUMBER_OF_ACL];
+} RT_802_11_ACL, *PRT_802_11_ACL;
+
+typedef struct _RT_802_11_WDS {
+    ULONG						Num;
+    NDIS_802_11_MAC_ADDRESS		Entry[24/*MAX_NUM_OF_WDS_LINK*/];
+	ULONG						KeyLength;
+	UCHAR						KeyMaterial[32];
+} RT_802_11_WDS, *PRT_802_11_WDS;
+
+typedef struct _RT_802_11_TX_RATES_ {
+    UCHAR       SupRateLen;	
+    UCHAR       SupRate[MAX_LENGTH_OF_SUPPORT_RATES];
+    UCHAR       ExtRateLen;	
+    UCHAR       ExtRate[MAX_LENGTH_OF_SUPPORT_RATES];
+} RT_802_11_TX_RATES, *PRT_802_11_TX_RATES;
+
+
+// Definition of extra information code
+#define	GENERAL_LINK_UP			0x0			// Link is Up
+#define	GENERAL_LINK_DOWN		0x1			// Link is Down
+#define	HW_RADIO_OFF			0x2			// Hardware radio off
+#define	SW_RADIO_OFF			0x3			// Software radio off
+#define	AUTH_FAIL				0x4			// Open authentication fail
+#define	AUTH_FAIL_KEYS			0x5			// Shared authentication fail
+#define	ASSOC_FAIL				0x6			// Association failed
+#define	EAP_MIC_FAILURE			0x7			// Deauthencation because MIC failure
+#define	EAP_4WAY_TIMEOUT		0x8			// Deauthencation on 4-way handshake timeout
+#define	EAP_GROUP_KEY_TIMEOUT	0x9			// Deauthencation on group key handshake timeout
+#define	EAP_SUCCESS				0xa			// EAP succeed
+#define	DETECT_RADAR_SIGNAL		0xb         // Radar signal occur in current channel
+#define EXTRA_INFO_MAX			0xb			// Indicate Last OID
+
+#define EXTRA_INFO_CLEAR		0xffffffff
+
+// This is OID setting structure. So only GF or MM as Mode. This is valid when our wirelss mode has 802.11n in use.
+typedef struct {
+	RT_802_11_PHY_MODE		PhyMode; 	// 
+	UCHAR		TransmitNo;
+	UCHAR		HtMode; 	//HTMODE_GF or HTMODE_MM
+	UCHAR		ExtOffset;	//extension channel above or below
+	UCHAR		MCS;
+	UCHAR   	BW;
+	UCHAR		STBC;
+	UCHAR		SHORTGI;
+	UCHAR		rsv;
+} OID_SET_HT_PHYMODE, *POID_SET_HT_PHYMODE;
+
+#ifdef NINTENDO_AP
+#define NINTENDO_MAX_ENTRY 16
+#define NINTENDO_SSID_NAME_LN 8
+#define NINTENDO_SSID_NAME "NWCUSBAP"
+#define NINTENDO_PROBE_REQ_FLAG_MASK 0x03
+#define NINTENDO_PROBE_REQ_ON 0x01
+#define NINTENDO_PROBE_REQ_SIGNAL 0x02
+#define NINTENDO_PROBE_RSP_ON 0x01
+#define NINTENDO_SSID_NICKNAME_LN 20
+
+#define NINTENDO_WEPKEY_LN 13
+
+typedef struct _NINTENDO_SSID 
+{
+	UCHAR	NINTENDOFixChar[NINTENDO_SSID_NAME_LN];
+	UCHAR	zero1;
+	UCHAR	registe;
+	UCHAR	ID;
+	UCHAR	zero2;
+	UCHAR	NICKname[NINTENDO_SSID_NICKNAME_LN];
+} RT_NINTENDO_SSID, *PRT_NINTENDO_SSID;
+
+typedef struct _NINTENDO_ENTRY 
+{
+	UCHAR	NICKname[NINTENDO_SSID_NICKNAME_LN];
+    UCHAR   DS_Addr[ETH_LENGTH_OF_ADDRESS];
+	UCHAR	registe;
+	UCHAR	UserSpaceAck;
+} RT_NINTENDO_ENTRY, *PRT_NINTENDO_ENTRY;
+
+//RTPRIV_IOCTL_NINTENDO_GET_TABLE
+//RTPRIV_IOCTL_NINTENDO_SET_TABLE
+typedef struct _NINTENDO_TABLE 
+{
+	UINT				number;
+	RT_NINTENDO_ENTRY	entry[NINTENDO_MAX_ENTRY];
+} RT_NINTENDO_TABLE, *PRT_NINTENDO_TABLE;
+
+//RTPRIV_IOCTL_NINTENDO_SEED_WEPKEY
+typedef struct _NINTENDO_SEED_WEPKEY 
+{
+	UCHAR	seed[NINTENDO_SSID_NICKNAME_LN];
+	UCHAR	wepkey[16];//use 13 for 104 bits wep key
+} RT_NINTENDO_SEED_WEPKEY, *PRT_NINTENDO_SEED_WEPKEY;
+#endif // NINTENDO_AP //
+
+#ifdef LLTD_SUPPORT
+typedef struct _RT_LLTD_ASSOICATION_ENTRY {
+    UCHAR           Addr[ETH_LENGTH_OF_ADDRESS];
+    unsigned short  MOR;        // maximum operational rate
+    UCHAR           phyMode;
+} RT_LLTD_ASSOICATION_ENTRY, *PRT_LLTD_ASSOICATION_ENTRY;
+
+typedef struct _RT_LLTD_ASSOICATION_TABLE {
+    unsigned int                Num;
+    RT_LLTD_ASSOICATION_ENTRY   Entry[MAX_NUMBER_OF_MAC];
+} RT_LLTD_ASSOICATION_TABLE, *PRT_LLTD_ASSOICATION_TABLE;
+#endif // LLTD_SUPPORT //
+
+#ifdef CONFIG_STA_SUPPORT
+#ifdef QOS_DLS_SUPPORT
+//rt2860, kathy 2007-0118
+// structure for DLS
+typedef struct _RT_802_11_DLS_UI {
+	USHORT						TimeOut;		// unit: second , set by UI
+	USHORT						CountDownTimer;	// unit: second , used by driver only
+	NDIS_802_11_MAC_ADDRESS		MacAddr;		// set by UI
+	UCHAR						Status;			// 0: none , 1: wait STAkey, 2: finish DLS setup , set by driver only
+	BOOLEAN						Valid;			// 1: valid , 0: invalid , set by UI, use to setup or tear down DLS link
+} RT_802_11_DLS_UI, *PRT_802_11_DLS_UI;
+
+typedef struct _RT_802_11_DLS_INFO {
+	RT_802_11_DLS_UI	Entry[MAX_NUMBER_OF_DLS_ENTRY];
+	UCHAR				num;
+} RT_802_11_DLS_INFO, *PRT_802_11_DLS_INFO;
+
+typedef enum _RT_802_11_DLS_MODE {
+    DLS_NONE,
+    DLS_WAIT_KEY,
+    DLS_FINISH
+} RT_802_11_DLS_MODE;
+#endif // QOS_DLS_SUPPORT //
+
+
+#ifdef WPA_SUPPLICANT_SUPPORT
+#ifndef NATIVE_WPA_SUPPLICANT_SUPPORT
+#define	RT_ASSOC_EVENT_FLAG                         0x0101
+#define	RT_DISASSOC_EVENT_FLAG                      0x0102
+#define	RT_REQIE_EVENT_FLAG                         0x0103
+#define	RT_RESPIE_EVENT_FLAG                        0x0104
+#define	RT_ASSOCINFO_EVENT_FLAG                     0x0105
+#define RT_PMKIDCAND_FLAG                           0x0106
+#define RT_INTERFACE_DOWN                           0x0107
+#define RT_INTERFACE_UP                             0x0108
+#endif // NATIVE_WPA_SUPPLICANT_SUPPORT //
+#endif // WPA_SUPPLICANT_SUPPORT //
+#endif // CONFIG_STA_SUPPORT //
+
+
+
+
+#define MAX_CUSTOM_LEN 128 
+
+#ifdef CONFIG_STA_SUPPORT
+typedef enum _RT_802_11_D_CLIENT_MODE
+{
+   Rt802_11_D_None,
+   Rt802_11_D_Flexible,
+   Rt802_11_D_Strict,
+} RT_802_11_D_CLIENT_MODE, *PRT_802_11_D_CLIENT_MODE;
+#endif // CONFIG_STA_SUPPORT //
+
+typedef struct _RT_CHANNEL_LIST_INFO
+{
+	UCHAR ChannelList[MAX_NUM_OF_CHS];   // list all supported channels for site survey
+	UCHAR ChannelListNum; // number of channel in ChannelList[]
+} RT_CHANNEL_LIST_INFO, *PRT_CHANNEL_LIST_INFO;
+
+// WSC configured credential
+typedef	struct	_WSC_CREDENTIAL
+{
+	NDIS_802_11_SSID	SSID;				// mandatory
+	USHORT				AuthType;			// mandatory, 1: open, 2: wpa-psk, 4: shared, 8:wpa, 0x10: wpa2, 0x20: wpa2-psk
+	USHORT				EncrType;			// mandatory, 1: none, 2: wep, 4: tkip, 8: aes
+	UCHAR				Key[64];			// mandatory, Maximum 64 byte
+	USHORT				KeyLength;
+	UCHAR				MacAddr[6];			// mandatory, AP MAC address
+	UCHAR				KeyIndex;			// optional, default is 1
+	UCHAR				Rsvd[3];			// Make alignment
+}	WSC_CREDENTIAL, *PWSC_CREDENTIAL;
+
+// WSC configured profiles
+typedef	struct	_WSC_PROFILE
+{
+	UINT			ProfileCnt;
+	UINT			ApplyProfileIdx;  // add by johnli, fix WPS test plan 5.1.1
+	WSC_CREDENTIAL	Profile[8];				// Support up to 8 profiles
+}	WSC_PROFILE, *PWSC_PROFILE;
+
+
+
+#endif // _OID_H_
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/os/rt_linux.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/os/rt_linux.h
new file mode 100644
index 000000000..0594605a7
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/os/rt_linux.h
@@ -0,0 +1,1113 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+    Module Name:
+	rt_linux.h
+
+    Abstract:
+
+    Revision History:
+    Who          When          What
+    ---------    ----------    ----------------------------------------------
+*/
+
+#ifndef __RT_LINUX_H__
+#define __RT_LINUX_H__
+
+#include <linux/module.h>
+#include <linux/version.h>
+#include <linux/kernel.h>
+#include <linux/spinlock.h>
+#include <linux/init.h>
+#include <linux/string.h>
+#include <linux/timer.h>
+#include <linux/errno.h>
+#include <linux/slab.h>
+#include <linux/interrupt.h>
+#include <linux/pci.h>
+#include <linux/netdevice.h>
+#include <linux/etherdevice.h>
+#include <linux/skbuff.h>
+#include <linux/ethtool.h>
+#include <linux/wireless.h>
+#include <linux/proc_fs.h>
+#include <linux/delay.h>
+#include <linux/if_arp.h>
+#include <linux/ctype.h>
+#include <linux/vmalloc.h>
+#include <linux/usb.h>
+#include <linux/wireless.h>
+#include <net/iw_handler.h>
+
+#ifdef INF_AMAZON_PPA
+#include <asm/amazon_se/ifx_ppa_interface.h>
+#include <asm/amazon_se/ifx_ppa_hook.h>
+#endif // INF_AMAZON_PPA //
+
+// load firmware
+#define __KERNEL_SYSCALLS__
+#include <linux/unistd.h>
+#include <asm/uaccess.h>
+#include <asm/types.h>
+#include <asm/unaligned.h>	// for get_unaligned()
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29)
+#define KTHREAD_SUPPORT 1
+#endif
+
+#ifdef KTHREAD_SUPPORT
+#include <linux/err.h>
+#include <linux/kthread.h>
+#endif // KTHREAD_SUPPORT //
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27)
+#include <linux/pid.h>
+#endif
+
+#ifdef RT_CFG80211_SUPPORT
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28))
+#include <net/mac80211.h>
+#define EXT_BUILD_CHANNEL_LIST	/* must define with CRDA */
+#else // LINUX_VERSION_CODE //
+#undef RT_CFG80211_SUPPORT
+#endif // LINUX_VERSION_CODE //
+#endif // RT_CFG80211_SUPPORT //
+
+#undef AP_WSC_INCLUDED
+#undef STA_WSC_INCLUDED
+#undef WSC_INCLUDED
+
+
+#ifdef CONFIG_STA_SUPPORT
+#endif // CONFIG_STA_SUPPORT //
+
+
+#ifdef KTHREAD_SUPPORT
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,4)
+#error "This kerne version doesn't support kthread!!"
+#endif
+#endif // KTHREAD_SUPPORT //
+
+
+/***********************************************************************************
+ *	Profile related sections
+ ***********************************************************************************/
+
+
+#ifdef CONFIG_STA_SUPPORT
+#ifdef RTMP_MAC_PCI
+#define STA_PROFILE_PATH			"/etc/Wireless/RT3060STA/RT3060STA.dat"
+#define STA_DRIVER_VERSION			"2.3.0.0-alpha20100128"
+#ifdef MULTIPLE_CARD_SUPPORT
+#define CARD_INFO_PATH			"/etc/Wireless/RT3060STA/RT3060STACard.dat"
+#endif // MULTIPLE_CARD_SUPPORT //
+#endif // RTMP_MAC_PCI //
+
+
+
+extern	const struct iw_handler_def rt28xx_iw_handler_def;
+#endif // CONFIG_STA_SUPPORT //
+
+#ifdef CONFIG_APSTA_MIXED_SUPPORT
+extern	const struct iw_handler_def rt28xx_ap_iw_handler_def;
+#endif // CONFIG_APSTA_MIXED_SUPPORT //
+
+/***********************************************************************************
+ *	Compiler related definitions
+ ***********************************************************************************/
+#undef __inline
+#define __inline		static inline
+#define IN
+#define OUT
+#define INOUT
+#define NDIS_STATUS		INT
+
+
+/***********************************************************************************
+ *	OS Specific definitions and data structures
+ ***********************************************************************************/
+typedef struct pci_dev 		* PPCI_DEV;
+typedef struct net_device	* PNET_DEV;
+typedef void				* PNDIS_PACKET;
+typedef char				NDIS_PACKET;
+typedef PNDIS_PACKET		* PPNDIS_PACKET;
+typedef	dma_addr_t			NDIS_PHYSICAL_ADDRESS;
+typedef	dma_addr_t			* PNDIS_PHYSICAL_ADDRESS;
+typedef void				* NDIS_HANDLE;
+typedef char 				* PNDIS_BUFFER;
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27)
+typedef	struct pid *	RTMP_OS_PID;
+#else
+typedef pid_t 				RTMP_OS_PID;
+#endif
+
+typedef struct semaphore	RTMP_OS_SEM;
+
+typedef int (*HARD_START_XMIT_FUNC)(struct sk_buff *skb, struct net_device *net_dev);
+
+#ifdef RTMP_MAC_PCI
+#ifndef PCI_DEVICE
+#define PCI_DEVICE(vend,dev) \
+	.vendor = (vend), .device = (dev), \
+	.subvendor = PCI_ANY_ID, .subdevice = PCI_ANY_ID
+#endif // PCI_DEVICE //
+#endif // RTMP_MAC_PCI //
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
+#define RT_MOD_INC_USE_COUNT() \
+	if (!try_module_get(THIS_MODULE)) \
+	{ \
+		DBGPRINT(RT_DEBUG_ERROR, ("%s: cannot reserve module\n", __FUNCTION__)); \
+		return -1; \
+	}
+
+#define RT_MOD_DEC_USE_COUNT() module_put(THIS_MODULE);
+#else
+#define RT_MOD_INC_USE_COUNT()	MOD_INC_USE_COUNT;
+#define RT_MOD_DEC_USE_COUNT() MOD_DEC_USE_COUNT;
+#endif
+
+#define RTMP_INC_REF(_A)		0
+#define RTMP_DEC_REF(_A)		0
+#define RTMP_GET_REF(_A)		0
+
+
+#if WIRELESS_EXT >= 12
+// This function will be called when query /proc
+struct iw_statistics *rt28xx_get_wireless_stats(
+    IN struct net_device *net_dev);
+#endif
+
+
+/***********************************************************************************
+ *	Network related constant definitions
+ ***********************************************************************************/
+#ifndef IFNAMSIZ
+#define IFNAMSIZ 16
+#endif
+
+#define ETH_LENGTH_OF_ADDRESS	6
+
+#define NDIS_STATUS_SUCCESS                     0x00
+#define NDIS_STATUS_FAILURE                     0x01
+#define NDIS_STATUS_INVALID_DATA				0x02
+#define NDIS_STATUS_RESOURCES                   0x03
+
+#define NDIS_SET_PACKET_STATUS(_p, _status)			do{} while(0)
+#define NdisWriteErrorLogEntry(_a, _b, _c, _d)		do{} while(0)
+
+/* statistics counter */
+#define STATS_INC_RX_PACKETS(_pAd, _dev)
+#define STATS_INC_TX_PACKETS(_pAd, _dev)
+
+#define STATS_INC_RX_BYTESS(_pAd, _dev, len)
+#define STATS_INC_TX_BYTESS(_pAd, _dev, len)
+
+#define STATS_INC_RX_ERRORS(_pAd, _dev)
+#define STATS_INC_TX_ERRORS(_pAd, _dev)
+
+#define STATS_INC_RX_DROPPED(_pAd, _dev)
+#define STATS_INC_TX_DROPPED(_pAd, _dev)
+
+
+/***********************************************************************************
+ *	Ralink Specific network related constant definitions
+ ***********************************************************************************/
+#define MIN_NET_DEVICE_FOR_AID			0x00		//0x00~0x3f
+#define MIN_NET_DEVICE_FOR_MBSSID		0x00		//0x00,0x10,0x20,0x30
+#define MIN_NET_DEVICE_FOR_WDS			0x10		//0x40,0x50,0x60,0x70
+#define MIN_NET_DEVICE_FOR_APCLI		0x20
+#define MIN_NET_DEVICE_FOR_MESH			0x30
+#ifdef CONFIG_STA_SUPPORT
+#define MIN_NET_DEVICE_FOR_DLS			0x40
+#define MIN_NET_DEVICE_FOR_TDLS			0x80
+#endif // CONFIG_STA_SUPPORT //
+#define NET_DEVICE_REAL_IDX_MASK		0x0f		// for each operation mode, we maximum support 15 entities.
+
+
+#ifdef CONFIG_STA_SUPPORT
+#define NDIS_PACKET_TYPE_DIRECTED		0
+#define NDIS_PACKET_TYPE_MULTICAST		1
+#define NDIS_PACKET_TYPE_BROADCAST		2
+#define NDIS_PACKET_TYPE_ALL_MULTICAST	3
+#define NDIS_PACKET_TYPE_PROMISCUOUS	4
+#endif // CONFIG_STA_SUPPORT //
+
+
+/***********************************************************************************
+ *	OS signaling related constant definitions
+ ***********************************************************************************/
+
+
+/***********************************************************************************
+ *	OS file operation related data structure definitions
+ ***********************************************************************************/
+typedef struct file* RTMP_OS_FD;
+
+typedef struct _RTMP_OS_FS_INFO_
+{
+	int				fsuid;
+	int				fsgid;
+	mm_segment_t	fs;
+}RTMP_OS_FS_INFO;
+
+#define IS_FILE_OPEN_ERR(_fd) 	IS_ERR((_fd))
+
+
+/***********************************************************************************
+ *	OS semaphore related data structure and definitions
+ ***********************************************************************************/
+struct os_lock  {
+	spinlock_t		lock;
+	unsigned long  	flags;
+};
+
+typedef spinlock_t			NDIS_SPIN_LOCK;
+
+//
+//  spin_lock enhanced for Nested spin lock
+//
+#define NdisAllocateSpinLock(__lock)      \
+{                                       \
+    spin_lock_init((spinlock_t *)(__lock));               \
+}
+
+#define NdisFreeSpinLock(lock)          \
+	do{}while(0)
+
+
+#define RTMP_SEM_LOCK(__lock)					\
+{												\
+	spin_lock_bh((spinlock_t *)(__lock));		\
+}
+
+#define RTMP_SEM_UNLOCK(__lock)					\
+{												\
+	spin_unlock_bh((spinlock_t *)(__lock));		\
+}
+
+
+// sample, use semaphore lock to replace IRQ lock, 2007/11/15
+#define RTMP_IRQ_LOCK(__lock, __irqflags)			\
+{													\
+	__irqflags = 0;									\
+	spin_lock_bh((spinlock_t *)(__lock));			\
+	pAd->irq_disabled |= 1; \
+}
+
+#define RTMP_IRQ_UNLOCK(__lock, __irqflag)			\
+{													\
+	pAd->irq_disabled &= 0; 						\
+	spin_unlock_bh((spinlock_t *)(__lock));			\
+}
+
+#define RTMP_INT_LOCK(__lock, __irqflags)			\
+{													\
+	spin_lock_irqsave((spinlock_t *)__lock, __irqflags);	\
+}
+
+#define RTMP_INT_UNLOCK(__lock, __irqflag)			\
+{													\
+	spin_unlock_irqrestore((spinlock_t *)(__lock), ((unsigned long)__irqflag));	\
+}
+
+#define NdisAcquireSpinLock		RTMP_SEM_LOCK
+#define NdisReleaseSpinLock		RTMP_SEM_UNLOCK
+
+#ifndef wait_event_interruptible_timeout
+#define __wait_event_interruptible_timeout(wq, condition, ret) \
+do { \
+        wait_queue_t __wait; \
+        init_waitqueue_entry(&__wait, current); \
+        add_wait_queue(&wq, &__wait); \
+        for (;;) { \
+                set_current_state(TASK_INTERRUPTIBLE); \
+                if (condition) \
+                        break; \
+                if (!signal_pending(current)) { \
+                        ret = schedule_timeout(ret); \
+                        if (!ret) \
+                                break; \
+                        continue; \
+                } \
+                ret = -ERESTARTSYS; \
+                break; \
+        } \
+        current->state = TASK_RUNNING; \
+        remove_wait_queue(&wq, &__wait); \
+} while (0)
+
+#define wait_event_interruptible_timeout(wq, condition, timeout) \
+({ \
+        long __ret = timeout; \
+        if (!(condition)) \
+                __wait_event_interruptible_timeout(wq, condition, __ret); \
+        __ret; \
+})
+#endif
+
+#define RTMP_SEM_EVENT_INIT_LOCKED(_pSema) 	sema_init((_pSema), 0)
+#define RTMP_SEM_EVENT_INIT(_pSema)			sema_init((_pSema), 1)
+#define RTMP_SEM_EVENT_DESTORY(_pSema)		do{}while(0)
+#define RTMP_SEM_EVENT_WAIT(_pSema, _status)	((_status) = down_interruptible((_pSema)))
+#define RTMP_SEM_EVENT_UP(_pSema)			up(_pSema)
+
+#ifdef KTHREAD_SUPPORT
+#define RTMP_WAIT_EVENT_INTERRUPTIBLE(_pAd, _pTask) \
+{ \
+		wait_event_interruptible(_pTask->kthread_q, \
+								 _pTask->kthread_running || kthread_should_stop()); \
+		_pTask->kthread_running = FALSE; \
+		if (kthread_should_stop()) \
+		{ \
+			RTMP_SET_FLAG(_pAd, fRTMP_ADAPTER_HALT_IN_PROGRESS); \
+			break; \
+		} \
+}
+#endif
+
+#ifdef KTHREAD_SUPPORT
+#define WAKE_UP(_pTask) \
+	do{ \
+		if ((_pTask)->kthread_task) \
+        { \
+			(_pTask)->kthread_running = TRUE; \
+	        wake_up(&(_pTask)->kthread_q); \
+		} \
+	}while(0)
+#endif
+
+/***********************************************************************************
+ *	OS Memory Access related data structure and definitions
+ ***********************************************************************************/
+#define MEM_ALLOC_FLAG      (GFP_ATOMIC) //(GFP_DMA | GFP_ATOMIC)
+
+#define NdisMoveMemory(Destination, Source, Length) memmove(Destination, Source, Length)
+#define NdisCopyMemory(Destination, Source, Length) memcpy(Destination, Source, Length)
+#define NdisZeroMemory(Destination, Length)         memset(Destination, 0, Length)
+#define NdisFillMemory(Destination, Length, Fill)   memset(Destination, Fill, Length)
+#define NdisCmpMemory(Destination, Source, Length)  memcmp(Destination, Source, Length)
+#define NdisEqualMemory(Source1, Source2, Length)   (!memcmp(Source1, Source2, Length))
+#define RTMPEqualMemory(Source1, Source2, Length)	(!memcmp(Source1, Source2, Length))
+
+#define MlmeAllocateMemory(_pAd, _ppVA)		os_alloc_mem(_pAd, _ppVA, MGMT_DMA_BUFFER_SIZE)
+#define MlmeFreeMemory(_pAd, _pVA)			os_free_mem(_pAd, _pVA)
+
+#define COPY_MAC_ADDR(Addr1, Addr2)             memcpy((Addr1), (Addr2), MAC_ADDR_LEN)
+
+
+/***********************************************************************************
+ *	OS task related data structure and definitions
+ ***********************************************************************************/
+#define RTMP_OS_MGMT_TASK_FLAGS	CLONE_VM
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27)
+typedef	struct pid *	THREAD_PID;
+#define	THREAD_PID_INIT_VALUE	NULL
+// TODO: Use this IOCTL carefully when linux kernel version larger than 2.6.27, because the PID only correct when the user space task do this ioctl itself.
+//#define RTMP_GET_OS_PID(_x, _y)    _x = get_task_pid(current, PIDTYPE_PID);
+#define RTMP_GET_OS_PID(_x, _y)		do{rcu_read_lock(); _x=current->pids[PIDTYPE_PID].pid; rcu_read_unlock();}while(0)
+#define	GET_PID_NUMBER(_v)	pid_nr((_v))
+#define CHECK_PID_LEGALITY(_pid)	if (pid_nr((_pid)) > 0)
+#define KILL_THREAD_PID(_A, _B, _C)	kill_pid((_A), (_B), (_C))
+#else
+typedef	pid_t	THREAD_PID;
+#define	THREAD_PID_INIT_VALUE	-1
+#define RTMP_GET_OS_PID(_x, _pid)		_x = _pid
+#define	GET_PID_NUMBER(_v)	(_v)
+#define CHECK_PID_LEGALITY(_pid)	if ((_pid) >= 0)
+#define KILL_THREAD_PID(_A, _B, _C)	kill_proc((_A), (_B), (_C))
+#endif
+
+typedef int (*RTMP_OS_TASK_CALLBACK)(void *data);
+typedef struct tasklet_struct  RTMP_NET_TASK_STRUCT;
+typedef struct tasklet_struct  *PRTMP_NET_TASK_STRUCT;
+
+
+/***********************************************************************************
+ * Timer related definitions and data structures.
+ **********************************************************************************/
+#define OS_HZ			HZ
+
+typedef struct timer_list	NDIS_MINIPORT_TIMER;
+typedef struct timer_list	RTMP_OS_TIMER;
+typedef void (*TIMER_FUNCTION)(unsigned long);
+
+
+#define OS_WAIT(_time) \
+{	\
+	if (in_interrupt()) \
+	{\
+		RTMPusecDelay(_time * 1000);\
+	}else	\
+	{\
+		int _i; \
+		long _loop = ((_time)/(1000/OS_HZ)) > 0 ? ((_time)/(1000/OS_HZ)) : 1;\
+		wait_queue_head_t _wait; \
+		init_waitqueue_head(&_wait); \
+		for (_i=0; _i<(_loop); _i++) \
+			wait_event_interruptible_timeout(_wait, 0, ONE_TICK); \
+	}\
+}
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
+#define RTMP_TIME_AFTER(a,b)		\
+	(typecheck(unsigned long, (unsigned long)a) && \
+	 typecheck(unsigned long, (unsigned long)b) && \
+	 ((long)(b) - (long)(a) < 0))
+
+#define RTMP_TIME_AFTER_EQ(a,b)	\
+	(typecheck(unsigned long, (unsigned long)a) && \
+	 typecheck(unsigned long, (unsigned long)b) && \
+	 ((long)(a) - (long)(b) >= 0))
+#define RTMP_TIME_BEFORE(a,b)	RTMP_TIME_AFTER_EQ(b,a)
+#else
+#define typecheck(type,x) \
+({      type __dummy; \
+        typeof(x) __dummy2; \
+        (void)(&__dummy == &__dummy2); \
+        1; \
+})
+#define RTMP_TIME_AFTER_EQ(a,b)	\
+	(typecheck(unsigned long, (unsigned long)a) && \
+	 typecheck(unsigned long, (unsigned long)b) && \
+	 ((long)(a) - (long)(b) >= 0))
+#define RTMP_TIME_BEFORE(a,b)	RTMP_TIME_AFTER_EQ(b,a)
+#define RTMP_TIME_AFTER(a,b) time_after(a, b)
+#endif
+
+#define ONE_TICK 1
+
+static inline void NdisGetSystemUpTime(ULONG *time)
+{
+	*time = jiffies;
+}
+
+
+/***********************************************************************************
+ *	OS specific cookie data structure binding to RTMP_ADAPTER
+ ***********************************************************************************/
+
+struct os_cookie {
+#ifdef RTMP_MAC_PCI
+	struct pci_dev 			*pci_dev;
+	struct pci_dev 			*parent_pci_dev;
+	USHORT                  DeviceID;
+	dma_addr_t		  		pAd_pa;
+#endif // RTMP_MAC_PCI //
+
+
+	RTMP_NET_TASK_STRUCT rx_done_task;
+	RTMP_NET_TASK_STRUCT mgmt_dma_done_task;
+	RTMP_NET_TASK_STRUCT ac0_dma_done_task;
+	RTMP_NET_TASK_STRUCT ac1_dma_done_task;
+	RTMP_NET_TASK_STRUCT ac2_dma_done_task;
+	RTMP_NET_TASK_STRUCT ac3_dma_done_task;
+	RTMP_NET_TASK_STRUCT hcca_dma_done_task;
+	RTMP_NET_TASK_STRUCT tbtt_task;
+#ifdef RTMP_MAC_PCI
+	RTMP_NET_TASK_STRUCT fifo_statistic_full_task;
+#endif // RTMP_MAC_PCI //
+
+
+
+	RTMP_OS_PID			apd_pid; //802.1x daemon pid
+	unsigned long			apd_pid_nr;
+	INT						ioctl_if_type;
+	INT 					ioctl_if;
+};
+
+typedef struct os_cookie	* POS_COOKIE;
+
+
+
+/***********************************************************************************
+ *	OS debugging and printing related definitions and data structure
+ ***********************************************************************************/
+#define PRINT_MAC(addr)	\
+	addr[0], addr[1], addr[2], addr[3], addr[4], addr[5]
+
+#ifdef DBG
+extern ULONG		RTDebugLevel;
+
+#define DBGPRINT_RAW(Level, Fmt)    \
+do{                                   \
+    if (Level <= RTDebugLevel)      \
+    {                               \
+        printk Fmt;               \
+    }                               \
+}while(0)
+
+#define DBGPRINT(Level, Fmt)    DBGPRINT_RAW(Level, Fmt)
+
+
+#define DBGPRINT_ERR(Fmt)           \
+{                                   \
+    printk("ERROR!!! ");          \
+    printk Fmt;                  \
+}
+
+#define DBGPRINT_S(Status, Fmt)		\
+{									\
+	printk Fmt;					\
+}
+#else
+#define DBGPRINT(Level, Fmt)
+#define DBGPRINT_RAW(Level, Fmt)
+#define DBGPRINT_S(Status, Fmt)
+#define DBGPRINT_ERR(Fmt)
+#endif
+
+#undef  ASSERT
+
+#ifdef VENDOR_FEATURE3_SUPPORT
+#define ASSERT(x)
+
+#else
+#define ASSERT(x)                                                               \
+{                                                                               \
+    if (!(x))                                                                   \
+    {                                                                           \
+        printk(KERN_WARNING __FILE__ ":%d assert " #x "failed\n", __LINE__);    \
+    }                                                                           \
+}
+#endif // VENDOR_FEATURE3_SUPPORT //
+
+void hex_dump(char *str, unsigned char *pSrcBufVA, unsigned int SrcBufLen);
+
+
+/*********************************************************************************************************
+	The following code are not revised, temporary put it here.
+  *********************************************************************************************************/
+
+
+/***********************************************************************************
+ * Device DMA Access related definitions and data structures.
+ **********************************************************************************/
+#ifdef RTMP_MAC_PCI
+dma_addr_t linux_pci_map_single(void *handle, void *ptr, size_t size, int sd_idx, int direction);
+void linux_pci_unmap_single(void *handle, dma_addr_t dma_addr, size_t size, int direction);
+
+#define PCI_MAP_SINGLE(_handle, _ptr, _size, _sd_idx, _dir) \
+	linux_pci_map_single(_handle, _ptr, _size, _sd_idx, _dir)
+	
+#define PCI_UNMAP_SINGLE(_handle, _ptr, _size, _dir) \
+	linux_pci_unmap_single(_handle, _ptr, _size, _dir)
+
+#define PCI_ALLOC_CONSISTENT(_pci_dev, _size, _ptr) \
+	pci_alloc_consistent(_pci_dev, _size, _ptr)
+
+#define PCI_FREE_CONSISTENT(_pci_dev, _size, _virtual_addr, _physical_addr) \
+	pci_free_consistent(_pci_dev, _size, _virtual_addr, _physical_addr)
+#endif // RTMP_MAC_PCI //
+
+#ifdef VENDOR_FEATURE2_SUPPORT
+#define DEV_ALLOC_SKB(_pAd, _Pkt, _length)	\
+	_Pkt = dev_alloc_skb(_length);			\
+	if (_Pkt != NULL) _pAd->NumOfPktAlloc ++;
+#else
+
+#define DEV_ALLOC_SKB(_pAd, _Pkt, _length)	\
+	_Pkt = dev_alloc_skb(_length);
+#endif // VENDOR_FEATURE2_SUPPORT //
+
+
+
+/*
+ * ULONG
+ * RTMP_GetPhysicalAddressLow(
+ *   IN NDIS_PHYSICAL_ADDRESS  PhysicalAddress);
+ */
+#define RTMP_GetPhysicalAddressLow(PhysicalAddress)		(PhysicalAddress)
+
+/*
+ * ULONG
+ * RTMP_GetPhysicalAddressHigh(
+ *   IN NDIS_PHYSICAL_ADDRESS  PhysicalAddress);
+ */
+#define RTMP_GetPhysicalAddressHigh(PhysicalAddress)		(0)
+
+/*
+ * VOID
+ * RTMP_SetPhysicalAddressLow(
+ *   IN NDIS_PHYSICAL_ADDRESS  PhysicalAddress,
+ *   IN ULONG  Value);
+ */
+#define RTMP_SetPhysicalAddressLow(PhysicalAddress, Value)	\
+			PhysicalAddress = Value;
+
+/*
+ * VOID
+ * RTMP_SetPhysicalAddressHigh(
+ *   IN NDIS_PHYSICAL_ADDRESS  PhysicalAddress,
+ *   IN ULONG  Value);
+ */
+#define RTMP_SetPhysicalAddressHigh(PhysicalAddress, Value)
+
+#define NdisMIndicateStatus(_w, _x, _y, _z)
+
+
+
+/***********************************************************************************
+ * Device Register I/O Access related definitions and data structures.
+ **********************************************************************************/
+#ifdef RTMP_MAC_PCI
+#if defined(INF_TWINPASS) || defined(INF_DANUBE) || defined(INF_AR9) || defined(IKANOS_VX_1X0)
+//Patch for ASIC turst read/write bug, needs to remove after metel fix
+#define RTMP_IO_READ32(_A, _R, _pV)									\
+{																	\
+    if ((_A)->bPCIclkOff == FALSE)                                      \
+    {                                                                   \
+	(*_pV = readl((void *)((_A)->CSRBaseAddress + MAC_CSR0)));		\
+	(*_pV = readl((void *)((_A)->CSRBaseAddress + (_R))));			\
+	(*_pV = SWAP32(*((UINT32 *)(_pV))));                           \
+    }                                                                   \
+}
+
+#define RTMP_IO_READ8(_A, _R, _pV)									\
+{																	\
+	(*_pV = readl((void *)((_A)->CSRBaseAddress + MAC_CSR0)));		\
+	(*_pV = readb((void *)((_A)->CSRBaseAddress + (_R))));			\
+}
+
+#ifndef VENDOR_FEATURE3_SUPPORT
+#define RTMP_IO_WRITE32(_A, _R, _V)									\
+{																	\
+    if ((_A)->bPCIclkOff == FALSE)                                      \
+    {                                                                   \
+	UINT32	_Val;													\
+	_Val = readl((void *)((_A)->CSRBaseAddress + MAC_CSR0));		\
+	_Val = SWAP32(_V);												\
+	writel(_Val, (void *)((_A)->CSRBaseAddress + (_R)));			\
+    }                                                                   \
+}
+#endif // VENDOR_FEATURE3_SUPPORT //
+
+#define RTMP_IO_WRITE8(_A, _R, _V)									\
+{																	\
+	UINT	Val;													\
+	Val = readl((void *)((_A)->CSRBaseAddress + MAC_CSR0));		\
+	writeb((_V), (PUCHAR)((_A)->CSRBaseAddress + (_R)));			\
+}
+
+#define RTMP_IO_WRITE16(_A, _R, _V)									\
+{																	\
+	UINT	Val;													\
+	Val = readl((void *)((_A)->CSRBaseAddress + MAC_CSR0));		\
+	writew(SWAP16((_V)), (PUSHORT)((_A)->CSRBaseAddress + (_R)));	\
+}
+#else
+//Patch for ASIC turst read/write bug, needs to remove after metel fix
+#define RTMP_IO_READ32(_A, _R, _pV)								\
+{																\
+    if ((_A)->bPCIclkOff == FALSE)                                  \
+    {                                                               \
+		(*_pV = readl((void *)((_A)->CSRBaseAddress + MAC_CSR0)));		\
+		(*_pV = readl((void *)((_A)->CSRBaseAddress + (_R))));			\
+    }                                                               \
+    else															\
+		*_pV = 0;													\
+}
+
+#define RTMP_IO_FORCE_READ32(_A, _R, _pV)							\
+{																	\
+	(*_pV = readl((void *)((_A)->CSRBaseAddress + MAC_CSR0)));		\
+	(*_pV = readl((void *)((_A)->CSRBaseAddress + (_R))));			\
+}
+
+#define RTMP_IO_READ8(_A, _R, _pV)								\
+{																\
+	(*_pV = readl((void *)((_A)->CSRBaseAddress + MAC_CSR0)));			\
+	(*_pV = readb((void *)((_A)->CSRBaseAddress + (_R))));				\
+}
+
+#ifndef VENDOR_FEATURE3_SUPPORT
+#define RTMP_IO_WRITE32(_A, _R, _V)												\
+{																				\
+    if ((_A)->bPCIclkOff == FALSE)                                  \
+    {                                                               \
+	UINT	Val;																\
+	Val = readl((void *)((_A)->CSRBaseAddress + MAC_CSR0));			\
+	writel((_V), (void *)((_A)->CSRBaseAddress + (_R)));								\
+    }                                                               \
+}
+#endif // VENDOR_FEATURE3_SUPPORT //
+
+#define RTMP_IO_FORCE_WRITE32(_A, _R, _V)												\
+{																				\
+	UINT	Val;																\
+	Val = readl((void *)((_A)->CSRBaseAddress + MAC_CSR0));			\
+	writel(_V, (void *)((_A)->CSRBaseAddress + (_R)));								\
+}
+
+
+
+#if defined(BRCM_6358) || defined(RALINK_2880) || defined(RALINK_3052) || defined(RALINK_2883)
+#define RTMP_IO_WRITE8(_A, _R, _V)            \
+{                    \
+	ULONG Val;                \
+	UCHAR _i;                \
+	_i = ((_R) & 0x3);             \
+	Val = readl((void *)((_A)->CSRBaseAddress + ((_R) - _i)));   \
+	Val = Val & (~(0x000000ff << ((_i)*8)));         \
+	Val = Val | ((ULONG)(_V) << ((_i)*8));         \
+	writel((Val), (void *)((_A)->CSRBaseAddress + ((_R) - _i)));    \
+}
+#else
+#define RTMP_IO_WRITE8(_A, _R, _V)							\
+{															\
+	UINT	Val;												\
+	Val = readl((void *)((_A)->CSRBaseAddress + MAC_CSR0));	\
+	writeb((_V), (PUCHAR)((_A)->CSRBaseAddress + (_R)));		\
+}
+#endif // #if defined(BRCM_6358) || defined(RALINK_2880) //
+
+#define RTMP_IO_WRITE16(_A, _R, _V)							\
+{															\
+	UINT	Val;											\
+	Val = readl((void *)((_A)->CSRBaseAddress + MAC_CSR0));	\
+	writew((_V), (PUSHORT)((_A)->CSRBaseAddress + (_R)));	\
+}
+#endif // #if defined(INF_TWINPASS) || defined(INF_DANUBE) || defined(IKANOS_VX_1X0) //
+#endif // RTMP_MAC_PCI //
+
+
+
+/***********************************************************************************
+ *	Network Related data structure and marco definitions
+ ***********************************************************************************/
+#define PKTSRC_NDIS             0x7f
+#define PKTSRC_DRIVER           0x0f
+
+#define RTMP_OS_NETDEV_STATE_RUNNING(_pNetDev)	((_pNetDev)->flags & IFF_UP)
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29)
+#define RTMP_OS_NETDEV_GET_PRIV(_pNetDev)		((_pNetDev)->ml_priv)
+#define RTMP_OS_NETDEV_SET_PRIV(_pNetDev, _pPriv)	((_pNetDev)->ml_priv = (_pPriv))
+#else
+#define RTMP_OS_NETDEV_GET_PRIV(_pNetDev)		((_pNetDev)->priv)
+#define RTMP_OS_NETDEV_SET_PRIV(_pNetDev, _pPriv)	((_pNetDev)->priv = (_pPriv))
+#endif
+#define RTMP_OS_NETDEV_GET_DEVNAME(_pNetDev)	((_pNetDev)->name)
+#define RTMP_OS_NETDEV_GET_PHYADDR(_PNETDEV)	((_PNETDEV)->dev_addr)
+
+#define RTMP_OS_NETDEV_START_QUEUE(_pNetDev)	netif_start_queue((_pNetDev))
+#define RTMP_OS_NETDEV_STOP_QUEUE(_pNetDev)	netif_stop_queue((_pNetDev))
+#define RTMP_OS_NETDEV_WAKE_QUEUE(_pNetDev)	netif_wake_queue((_pNetDev))
+#define RTMP_OS_NETDEV_CARRIER_OFF(_pNetDev)	netif_carrier_off((_pNetDev))
+
+#define QUEUE_ENTRY_TO_PACKET(pEntry) \
+	(PNDIS_PACKET)(pEntry)
+
+#define PACKET_TO_QUEUE_ENTRY(pPacket) \
+	(PQUEUE_ENTRY)(pPacket)
+
+#ifdef CONFIG_5VT_ENHANCE
+#define BRIDGE_TAG 0x35564252    // depends on 5VT define in br_input.c
+#endif
+
+#define GET_SG_LIST_FROM_PACKET(_p, _sc)	\
+    rt_get_sg_list_from_packet(_p, _sc)
+
+#define RELEASE_NDIS_PACKET(_pAd, _pPacket, _Status)                    \
+{                                                                       \
+        RTMPFreeNdisPacket(_pAd, _pPacket);                             \
+}
+
+/*
+ * packet helper
+ * 	- convert internal rt packet to os packet or
+ *             os packet to rt packet
+ */
+#define RTPKT_TO_OSPKT(_p)		((struct sk_buff *)(_p))
+#define OSPKT_TO_RTPKT(_p)		((PNDIS_PACKET)(_p))
+
+#define GET_OS_PKT_DATAPTR(_pkt) \
+		(RTPKT_TO_OSPKT(_pkt)->data)
+#define SET_OS_PKT_DATAPTR(_pkt, _dataPtr)	\
+		(RTPKT_TO_OSPKT(_pkt)->data) = (_dataPtr)
+
+#define GET_OS_PKT_LEN(_pkt) \
+		(RTPKT_TO_OSPKT(_pkt)->len)
+#define SET_OS_PKT_LEN(_pkt, _len)	\
+		(RTPKT_TO_OSPKT(_pkt)->len) = (_len)
+		
+#define GET_OS_PKT_DATATAIL(_pkt) \
+		(RTPKT_TO_OSPKT(_pkt)->tail)
+#define SET_OS_PKT_DATATAIL(_pkt, _start, _len)	\
+		((RTPKT_TO_OSPKT(_pkt))->tail) = (PUCHAR)((_start) + (_len))
+		
+#define GET_OS_PKT_HEAD(_pkt) \
+		(RTPKT_TO_OSPKT(_pkt)->head)
+
+#define GET_OS_PKT_END(_pkt) \
+		(RTPKT_TO_OSPKT(_pkt)->end)
+
+#define GET_OS_PKT_NETDEV(_pkt) \
+		(RTPKT_TO_OSPKT(_pkt)->dev)
+#define SET_OS_PKT_NETDEV(_pkt, _pNetDev)	\
+		(RTPKT_TO_OSPKT(_pkt)->dev) = (_pNetDev)
+		
+#define GET_OS_PKT_TYPE(_pkt) \
+		(RTPKT_TO_OSPKT(_pkt))
+
+#define GET_OS_PKT_NEXT(_pkt) \
+		(RTPKT_TO_OSPKT(_pkt)->next)
+
+
+#define OS_PKT_CLONED(_pkt)		skb_cloned(RTPKT_TO_OSPKT(_pkt))
+
+#ifdef VENDOR_FEATURE2_SUPPORT
+#define OS_PKT_CLONE(_pAd, _pkt, _src, _flag)		\
+	_src = skb_clone(RTPKT_TO_OSPKT(_pkt), _flag);	\
+	if (_src != NULL) _pAd->NumOfPktAlloc ++;
+#else
+
+#define OS_PKT_CLONE(_pAd, _pkt, _src, _flag)		\
+	_src = skb_clone(RTPKT_TO_OSPKT(_pkt), _flag);
+#endif // VENDOR_FEATURE2_SUPPORT //
+
+#define OS_NTOHS(_Val) \
+		(ntohs(_Val))
+#define OS_HTONS(_Val) \
+		(htons(_Val))
+#define OS_NTOHL(_Val) \
+		(ntohl(_Val))
+#define OS_HTONL(_Val) \
+		(htonl(_Val))
+
+#define CB_OFF  10
+
+// User Priority
+#define RTMP_SET_PACKET_UP(_p, _prio)			(RTPKT_TO_OSPKT(_p)->cb[CB_OFF+0] = _prio)
+#define RTMP_GET_PACKET_UP(_p)					(RTPKT_TO_OSPKT(_p)->cb[CB_OFF+0])
+
+// Fragment #
+#define RTMP_SET_PACKET_FRAGMENTS(_p, _num)		(RTPKT_TO_OSPKT(_p)->cb[CB_OFF+1] = _num)
+#define RTMP_GET_PACKET_FRAGMENTS(_p)			(RTPKT_TO_OSPKT(_p)->cb[CB_OFF+1])
+
+// 0x0 ~0x7f: TX to AP's own BSS which has the specified AID. if AID>127, set bit 7 in RTMP_SET_PACKET_EMACTAB too.
+//(this value also as MAC(on-chip WCID) table index)
+// 0x80~0xff: TX to a WDS link. b0~6: WDS index
+#define RTMP_SET_PACKET_WCID(_p, _wdsidx)		(RTPKT_TO_OSPKT(_p)->cb[CB_OFF+2] = _wdsidx)
+#define RTMP_GET_PACKET_WCID(_p)          		((UCHAR)(RTPKT_TO_OSPKT(_p)->cb[CB_OFF+2]))
+
+// 0xff: PKTSRC_NDIS, others: local TX buffer index. This value affects how to a packet
+#define RTMP_SET_PACKET_SOURCE(_p, _pktsrc)		(RTPKT_TO_OSPKT(_p)->cb[CB_OFF+3] = _pktsrc)
+#define RTMP_GET_PACKET_SOURCE(_p)       		(RTPKT_TO_OSPKT(_p)->cb[CB_OFF+3])
+
+// RTS/CTS-to-self protection method
+#define RTMP_SET_PACKET_RTS(_p, _num)      		(RTPKT_TO_OSPKT(_p)->cb[CB_OFF+4] = _num)
+#define RTMP_GET_PACKET_RTS(_p)          		(RTPKT_TO_OSPKT(_p)->cb[CB_OFF+4])
+// see RTMP_S(G)ET_PACKET_EMACTAB
+
+// TX rate index
+#define RTMP_SET_PACKET_TXRATE(_p, _rate)		(RTPKT_TO_OSPKT(_p)->cb[CB_OFF+5] = _rate)
+#define RTMP_GET_PACKET_TXRATE(_p)		  		(RTPKT_TO_OSPKT(_p)->cb[CB_OFF+5])
+
+// From which Interface
+#define RTMP_SET_PACKET_IF(_p, _ifdx)		(RTPKT_TO_OSPKT(_p)->cb[CB_OFF+6] = _ifdx)
+#define RTMP_GET_PACKET_IF(_p)		  		(RTPKT_TO_OSPKT(_p)->cb[CB_OFF+6])
+#define RTMP_SET_PACKET_NET_DEVICE_MBSSID(_p, _bss)		RTMP_SET_PACKET_IF((_p), (_bss))
+#define RTMP_SET_PACKET_NET_DEVICE_WDS(_p, _bss)		RTMP_SET_PACKET_IF((_p), ((_bss) + MIN_NET_DEVICE_FOR_WDS))
+#define RTMP_SET_PACKET_NET_DEVICE_APCLI(_p, _idx)   	RTMP_SET_PACKET_IF((_p), ((_idx) + MIN_NET_DEVICE_FOR_APCLI))
+#define RTMP_SET_PACKET_NET_DEVICE_MESH(_p, _idx)   	RTMP_SET_PACKET_IF((_p), ((_idx) + MIN_NET_DEVICE_FOR_MESH))
+#define RTMP_GET_PACKET_NET_DEVICE_MBSSID(_p)			RTMP_GET_PACKET_IF((_p))
+#define RTMP_GET_PACKET_NET_DEVICE(_p)					RTMP_GET_PACKET_IF((_p))
+
+#define RTMP_SET_PACKET_MOREDATA(_p, _morebit)		(RTPKT_TO_OSPKT(_p)->cb[CB_OFF+7] = _morebit)
+#define RTMP_GET_PACKET_MOREDATA(_p)				(RTPKT_TO_OSPKT(_p)->cb[CB_OFF+7])
+
+
+
+
+
+//
+//	Sepcific Pakcet Type definition
+//
+#define RTMP_PACKET_SPECIFIC_CB_OFFSET	11
+
+#define RTMP_PACKET_SPECIFIC_DHCP		0x01
+#define RTMP_PACKET_SPECIFIC_EAPOL		0x02
+#define RTMP_PACKET_SPECIFIC_IPV4		0x04
+#define RTMP_PACKET_SPECIFIC_WAI		0x08
+#define RTMP_PACKET_SPECIFIC_VLAN		0x10
+#define RTMP_PACKET_SPECIFIC_LLCSNAP	0x20
+
+//Specific
+#define RTMP_SET_PACKET_SPECIFIC(_p, _flg)	   	(RTPKT_TO_OSPKT(_p)->cb[CB_OFF+11] = _flg)
+
+//DHCP
+#define RTMP_SET_PACKET_DHCP(_p, _flg)   													\
+			do{																				\
+				if (_flg)																	\
+					(RTPKT_TO_OSPKT(_p)->cb[CB_OFF+11]) |= (RTMP_PACKET_SPECIFIC_DHCP);		\
+				else																		\
+					(RTPKT_TO_OSPKT(_p)->cb[CB_OFF+11]) &= (!RTMP_PACKET_SPECIFIC_DHCP);	\
+			}while(0)
+#define RTMP_GET_PACKET_DHCP(_p)		(RTPKT_TO_OSPKT(_p)->cb[CB_OFF+11] & RTMP_PACKET_SPECIFIC_DHCP)
+
+//EAPOL
+#define RTMP_SET_PACKET_EAPOL(_p, _flg)   													\
+			do{																				\
+				if (_flg)																	\
+					(RTPKT_TO_OSPKT(_p)->cb[CB_OFF+11]) |= (RTMP_PACKET_SPECIFIC_EAPOL);		\
+				else																		\
+					(RTPKT_TO_OSPKT(_p)->cb[CB_OFF+11]) &= (!RTMP_PACKET_SPECIFIC_EAPOL);	\
+			}while(0)
+#define RTMP_GET_PACKET_EAPOL(_p)		(RTPKT_TO_OSPKT(_p)->cb[CB_OFF+11] & RTMP_PACKET_SPECIFIC_EAPOL)
+
+//WAI
+#define RTMP_SET_PACKET_WAI(_p, _flg)   													\
+			do{																				\
+				if (_flg)																	\
+					(RTPKT_TO_OSPKT(_p)->cb[CB_OFF+11]) |= (RTMP_PACKET_SPECIFIC_WAI);		\
+				else																		\
+					(RTPKT_TO_OSPKT(_p)->cb[CB_OFF+11]) &= (!RTMP_PACKET_SPECIFIC_WAI);	\
+			}while(0)
+#define RTMP_GET_PACKET_WAI(_p)		(RTPKT_TO_OSPKT(_p)->cb[CB_OFF+11] & RTMP_PACKET_SPECIFIC_WAI)
+
+#define RTMP_GET_PACKET_LOWRATE(_p)		(RTPKT_TO_OSPKT(_p)->cb[CB_OFF+11] & (RTMP_PACKET_SPECIFIC_EAPOL | RTMP_PACKET_SPECIFIC_DHCP | RTMP_PACKET_SPECIFIC_WAI))
+
+//VLAN
+#define RTMP_SET_PACKET_VLAN(_p, _flg)   													\
+			do{																				\
+				if (_flg)																	\
+					(RTPKT_TO_OSPKT(_p)->cb[CB_OFF+11]) |= (RTMP_PACKET_SPECIFIC_VLAN);		\
+				else																		\
+					(RTPKT_TO_OSPKT(_p)->cb[CB_OFF+11]) &= (!RTMP_PACKET_SPECIFIC_VLAN);	\
+			}while(0)
+#define RTMP_GET_PACKET_VLAN(_p)		(RTPKT_TO_OSPKT(_p)->cb[CB_OFF+11] & RTMP_PACKET_SPECIFIC_VLAN)
+
+//LLC/SNAP
+#define RTMP_SET_PACKET_LLCSNAP(_p, _flg)   													\
+			do{																				\
+				if (_flg)																	\
+					(RTPKT_TO_OSPKT(_p)->cb[CB_OFF+11]) |= (RTMP_PACKET_SPECIFIC_LLCSNAP);		\
+				else																		\
+					(RTPKT_TO_OSPKT(_p)->cb[CB_OFF+11]) &= (!RTMP_PACKET_SPECIFIC_LLCSNAP);		\
+			}while(0)
+			
+#define RTMP_GET_PACKET_LLCSNAP(_p)		(RTPKT_TO_OSPKT(_p)->cb[CB_OFF+11] & RTMP_PACKET_SPECIFIC_LLCSNAP)
+
+// IP
+#define RTMP_SET_PACKET_IPV4(_p, _flg)														\
+			do{																				\
+				if (_flg)																	\
+					(RTPKT_TO_OSPKT(_p)->cb[CB_OFF+11]) |= (RTMP_PACKET_SPECIFIC_IPV4);		\
+				else																		\
+					(RTPKT_TO_OSPKT(_p)->cb[CB_OFF+11]) &= (!RTMP_PACKET_SPECIFIC_IPV4);	\
+			}while(0)
+			
+#define RTMP_GET_PACKET_IPV4(_p)		(RTPKT_TO_OSPKT(_p)->cb[CB_OFF+11] & RTMP_PACKET_SPECIFIC_IPV4)
+
+
+// If this flag is set, it indicates that this EAPoL frame MUST be clear.
+#define RTMP_SET_PACKET_CLEAR_EAP_FRAME(_p, _flg)   (RTPKT_TO_OSPKT(_p)->cb[CB_OFF+12] = _flg)
+#define RTMP_GET_PACKET_CLEAR_EAP_FRAME(_p)         (RTPKT_TO_OSPKT(_p)->cb[CB_OFF+12])
+
+
+
+/* use bit3 of cb[CB_OFF+16] */
+
+#define RTMP_SET_PACKET_5VT(_p, _flg)   (RTPKT_TO_OSPKT(_p)->cb[CB_OFF+22] = _flg)
+#define RTMP_GET_PACKET_5VT(_p)         (RTPKT_TO_OSPKT(_p)->cb[CB_OFF+22])
+
+#define RTMP_SET_PACKET_PROTOCOL(_p, _protocol) {\
+	(RTPKT_TO_OSPKT(_p)->cb[CB_OFF+23] = (UINT8)((_protocol) & 0x00ff)); \
+	(RTPKT_TO_OSPKT(_p)->cb[CB_OFF+24] = (UINT8)(((_protocol) & 0xff00) >> 8)); \
+}
+
+#define RTMP_GET_PACKET_PROTOCOL(_p) \
+	((((UINT16)(RTPKT_TO_OSPKT(_p)->cb[CB_OFF+23])) << 8) \
+	| ((UINT16)(RTPKT_TO_OSPKT(_p)->cb[CB_OFF+24])))
+
+#ifdef INF_AMAZON_SE
+/* [CB_OFF+28], 1B, Iverson patch for WMM A5-T07 ,WirelessStaToWirelessSta do not bulk out aggregate */
+#define RTMP_SET_PACKET_NOBULKOUT(_p, _morebit)			(RTPKT_TO_OSPKT(_p)->cb[CB_OFF+28] = _morebit)
+#define RTMP_GET_PACKET_NOBULKOUT(_p)					(RTPKT_TO_OSPKT(_p)->cb[CB_OFF+28])			
+#endif // INF_AMAZON_SE //
+/* Max skb->cb = 48B = [CB_OFF+38] */
+
+
+
+
+
+
+/***********************************************************************************
+ *	Other function prototypes definitions
+ ***********************************************************************************/
+void RTMP_GetCurrentSystemTime(LARGE_INTEGER *time);
+int rt28xx_packet_xmit(struct sk_buff *skb);
+
+
+#if LINUX_VERSION_CODE <= 0x20402	// Red Hat 7.1
+struct net_device *alloc_netdev(int sizeof_priv, const char *mask, void (*setup)(struct net_device *));
+#endif // LINUX_VERSION_CODE //
+
+
+#ifdef RTMP_MAC_PCI
+/* function declarations */
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
+#define IRQ_HANDLE_TYPE  irqreturn_t
+#else
+#define IRQ_HANDLE_TYPE  void
+#endif
+
+IRQ_HANDLE_TYPE
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19))
+rt2860_interrupt(int irq, void *dev_instance);
+#else
+rt2860_interrupt(int irq, void *dev_instance, struct pt_regs *regs);
+#endif
+
+#endif // RTMP_MAC_PCI //
+
+INT rt28xx_ioctl(
+	IN	PNET_DEV		net_dev,
+	IN	OUT	struct ifreq	*rq, 
+	IN	INT			cmd);
+
+
+#ifdef CONFIG_STA_SUPPORT
+INT rt28xx_sta_ioctl(
+	IN	PNET_DEV		net_dev, 
+	IN	OUT	struct ifreq	*rq, 
+	IN	INT			cmd);
+#endif // CONFIG_STA_SUPPORT //
+
+extern int ra_mtd_write(int num, loff_t to, size_t len, const u_char *buf);
+extern int ra_mtd_read(int num, loff_t from, size_t len, u_char *buf);
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29)
+#define GET_PAD_FROM_NET_DEV(_pAd, _net_dev)	(_pAd) = (PRTMP_ADAPTER)(_net_dev)->ml_priv;
+#else
+#define GET_PAD_FROM_NET_DEV(_pAd, _net_dev)	(_pAd) = (PRTMP_ADAPTER)(_net_dev)->priv;
+#endif
+
+
+#endif // __RT_LINUX_H__ //
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rt_ate.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rt_ate.h
new file mode 100644
index 000000000..dc383dbd8
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rt_ate.h
@@ -0,0 +1,348 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+ */ 
+
+#ifndef __ATE_H__
+#define __ATE_H__
+
+
+#ifdef LINUX
+#define ate_print printk
+#define ATEDBGPRINT DBGPRINT
+#ifdef RTMP_MAC_PCI
+#define EEPROM_SIZE								0x200
+#ifdef CONFIG_STA_SUPPORT
+#define EEPROM_BIN_FILE_NAME  "/etc/Wireless/RT2860STA/e2p.bin"
+#endif // CONFIG_STA_SUPPORT //
+#endif // RTMP_MAC_PCI //
+#endif // LINUX //
+
+
+#define ATE_ON(_p)              (((_p)->ate.Mode) != ATE_STOP)
+
+#ifdef RTMP_MAC_PCI
+NTSTATUS	ATE_RT3562WriteBBPR66(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	UCHAR			Value);
+
+#define ATEPCIReadBBPRegister(_A, _I, _pV)        \
+{                                                       \
+    BBP_CSR_CFG_STRUC  BbpCsr;                             \
+    int             j, k;                               \
+    for (j=0; j<MAX_BUSY_COUNT; j++)                    \
+    {                                                   \
+        RTMP_IO_READ32(_A, BBP_CSR_CFG, &BbpCsr.word);     \
+        if (BbpCsr.field.Busy == BUSY)                  \
+        {                                               \
+            continue;                                   \
+        }                                               \
+        BbpCsr.word = 0;                                \
+        BbpCsr.field.fRead = 1;                         \
+        BbpCsr.field.BBP_RW_MODE = 1;                         \
+        BbpCsr.field.Busy = 1;                          \
+        BbpCsr.field.RegNum = _I;                       \
+        RTMP_IO_WRITE32(_A, BBP_CSR_CFG, BbpCsr.word);     \
+        for (k=0; k<MAX_BUSY_COUNT; k++)                \
+        {                                               \
+            RTMP_IO_READ32(_A, BBP_CSR_CFG, &BbpCsr.word); \
+            if (BbpCsr.field.Busy == IDLE)              \
+                break;                                  \
+        }                                               \
+        if ((BbpCsr.field.Busy == IDLE) &&              \
+            (BbpCsr.field.RegNum == _I))                \
+        {                                               \
+            *(_pV) = (UCHAR)BbpCsr.field.Value;         \
+            break;                                      \
+        }                                               \
+    }                                                   \
+    if (BbpCsr.field.Busy == BUSY)                      \
+    {                                                   \
+        ATEDBGPRINT(RT_DEBUG_ERROR, ("BBP read R%d fail\n", _I));      \
+        *(_pV) = (_A)->BbpWriteLatch[_I];               \
+    }                                                   \
+}
+
+#define ATEPCIWriteBBPRegister(_A, _I, _V)        \
+{                                                       \
+    BBP_CSR_CFG_STRUC  BbpCsr;                             \
+    int             BusyCnt;                            \
+    for (BusyCnt=0; BusyCnt<MAX_BUSY_COUNT; BusyCnt++)  \
+    {                                                   \
+        RTMP_IO_READ32(_A, BBP_CSR_CFG, &BbpCsr.word);     \
+        if (BbpCsr.field.Busy == BUSY)                  \
+            continue;                                   \
+        BbpCsr.word = 0;                                \
+        BbpCsr.field.fRead = 0;                         \
+        BbpCsr.field.BBP_RW_MODE = 1;                         \
+        BbpCsr.field.Busy = 1;                          \
+        BbpCsr.field.Value = _V;                        \
+        BbpCsr.field.RegNum = _I;                       \
+        RTMP_IO_WRITE32(_A, BBP_CSR_CFG, BbpCsr.word);     \
+        (_A)->BbpWriteLatch[_I] = _V;                   \
+        break;                                          \
+    }                                                   \
+    if (BusyCnt == MAX_BUSY_COUNT)                      \
+    {                                                   \
+        ATEDBGPRINT(RT_DEBUG_ERROR, ("BBP write R%d fail\n", _I));     \
+    }                                                   \
+}
+
+#define ATE_BBP_IO_READ8_BY_REG_ID(_A, _I, _pV)		ATEPCIReadBBPRegister(_A, _I, _pV)
+
+#ifdef RT35xx
+#define ATE_BBP_IO_WRITE8_BY_REG_ID(_A, _I, _V)			\
+	do{													\
+		if ((_I) != BBP_R66)							\
+			ATEPCIWriteBBPRegister((_A), (_I), (_V))	\
+		else											\
+			ATE_RT3562WriteBBPR66((_A), (_V));			\
+	}while(0)
+#else
+#define ATE_BBP_IO_WRITE8_BY_REG_ID(_A, _I, _V)		ATEPCIWriteBBPRegister(_A, _I, _V)
+#endif 
+
+#endif // RTMP_MAC_PCI //
+
+
+#ifdef RTMP_RF_RW_SUPPORT
+#define ATE_RF_IO_READ8_BY_REG_ID(_A, _I, _pV)     RT30xxReadRFRegister(_A, _I, _pV)
+#define ATE_RF_IO_WRITE8_BY_REG_ID(_A, _I, _V)     RT30xxWriteRFRegister(_A, _I, _V)
+#endif // RTMP_RF_RW_SUPPORT //
+
+VOID rt_ee_read_all(
+	IN  PRTMP_ADAPTER   pAd,
+	OUT USHORT *Data);
+
+VOID rt_ee_write_all(
+	IN  PRTMP_ADAPTER   pAd,
+	IN  USHORT *Data);
+
+INT Set_ATE_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT	Set_ATE_DA_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT	Set_ATE_SA_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT	Set_ATE_BSSID_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT	Set_ATE_CHANNEL_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT	Set_ATE_TX_POWER0_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT	Set_ATE_TX_POWER1_Proc(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PSTRING			arg);
+
+
+INT	Set_ATE_TX_Antenna_Proc(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PSTRING			arg);
+
+INT	Set_ATE_RX_Antenna_Proc(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PSTRING			arg);
+	
+INT	Set_ATE_TX_FREQOFFSET_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT	Set_ATE_TX_BW_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT	Set_ATE_TX_LENGTH_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT	Set_ATE_TX_COUNT_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT	Set_ATE_TX_MCS_Proc(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PSTRING			arg);
+
+INT	Set_ATE_TX_MODE_Proc(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PSTRING			arg);
+
+INT	Set_ATE_TX_GI_Proc(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PSTRING			arg);
+
+
+INT	Set_ATE_RX_FER_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT Set_ATE_Read_RF_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+#ifndef RTMP_RF_RW_SUPPORT
+INT Set_ATE_Write_RF1_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT Set_ATE_Write_RF2_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT Set_ATE_Write_RF3_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT Set_ATE_Write_RF4_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+#endif // RTMP_RF_RW_SUPPORT //
+
+INT Set_ATE_Load_E2P_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT Set_ATE_Read_E2P_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+#ifdef RT35xx
+INT Set_ATE_LED_Proc(
+	IN PRTMP_ADAPTER 	pAd, 
+	IN PSTRING			arg);
+
+INT Set_ATE_HW_LED_Proc(
+	IN PRTMP_ADAPTER 	pAd, 
+	IN PSTRING			arg);
+#endif // RT35xx //
+
+INT	Set_ATE_Show_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT	Set_ATE_Help_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+#ifdef RALINK_28xx_QA
+VOID ATE_QA_Statistics(
+	IN PRTMP_ADAPTER		pAd,
+	IN PRXWI_STRUC			pRxWI,
+	IN PRT28XX_RXD_STRUC    p28xxRxD,
+	IN PHEADER_802_11		pHeader);
+	
+VOID RtmpDoAte(
+	IN	PRTMP_ADAPTER	pAdapter, 
+	IN	struct iwreq	*wrq);
+
+VOID BubbleSort(
+	IN  INT32 n,
+	IN  INT32 a[]);
+
+VOID CalNoiseLevel(
+	IN  PRTMP_ADAPTER   pAdapter,
+	IN  UCHAR           channel,
+	OUT INT32           buffer[3][10]);
+
+BOOLEAN SyncTxRxConfig(
+	IN	PRTMP_ADAPTER	pAdapter, 
+	IN	USHORT			offset, 
+	IN	UCHAR			value);
+
+INT Set_TxStop_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT Set_RxStop_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+#ifdef DBG
+INT Set_EERead_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT Set_EEWrite_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT Set_BBPRead_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT Set_BBPWrite_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT Set_RFWrite_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+#endif // DBG // 
+#endif // RALINK_28xx_QA //
+
+#ifdef RT35xx
+VOID ATEAsicSetTxRxPath(
+    IN PRTMP_ADAPTER pAd);
+#endif // RT35xx //
+
+VOID ATEAsicSwitchChannel(
+	IN PRTMP_ADAPTER pAd); 
+
+VOID ATEAsicAdjustTxPower(
+	IN PRTMP_ADAPTER pAd);
+
+VOID ATEDisableAsicProtect(
+	IN		PRTMP_ADAPTER	pAd);
+
+CHAR ATEConvertToRssi(
+	IN PRTMP_ADAPTER  pAd,
+	IN CHAR				Rssi,
+	IN UCHAR    RssiNumber);
+
+VOID ATESampleRssi(
+	IN PRTMP_ADAPTER	pAd,
+	IN PRXWI_STRUC		pRxWI);
+
+
+#ifdef CONFIG_STA_SUPPORT
+VOID RTMPStationStop(
+    IN  PRTMP_ADAPTER   pAd);
+
+VOID RTMPStationStart(
+    IN  PRTMP_ADAPTER   pAd);
+#endif // CONFIG_STA_SUPPORT //
+#endif // __ATE_H__ //
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rt_config.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rt_config.h
new file mode 100644
index 000000000..6fe16ddc9
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rt_config.h
@@ -0,0 +1,156 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+	Module Name:
+	rt_config.h
+
+	Abstract:
+	Central header file to maintain all include files for all NDIS
+	miniport driver routines.
+
+	Revision History:
+	Who         When          What
+	--------    ----------    ----------------------------------------------
+	Paul Lin    08-01-2002    created
+
+*/
+#ifndef	__RT_CONFIG_H__
+#define	__RT_CONFIG_H__
+
+#define VENDOR_FEATURE1_SUPPORT
+//#define VENDOR_FEATURE2_SUPPORT
+//#define VENDOR_FEATURE3_SUPPORT
+
+
+#ifdef VENDOR_FEATURE3_SUPPORT 
+#ifdef DOT1X_SUPPORT
+#undef DOT1X_SUPPORT
+#endif // DOT1X_SUPPORT //
+#ifdef SYSTEM_LOG_SUPPORT
+#undef SYSTEM_LOG_SUPPORT
+#endif // SYSTEM_LOG_SUPPORT //
+#endif // VENDOR_FEATURE3_SUPPORT //
+
+
+#include "rtmp_type.h"
+#include "rtmp_os.h"
+
+#include "rtmp_def.h"
+#include "rtmp_chip.h"
+#include "rtmp_timer.h"
+
+#ifdef LINUX
+#ifdef RT_CFG80211_SUPPORT
+#include "cfg80211extr.h"
+#endif // RT_CFG80211_SUPPORT //
+#endif // LINUX //
+
+#include "oid.h"
+#include "mlme.h"
+#include "crypt_md5.h"
+#include "crypt_sha2.h"
+#include "crypt_hmac.h"
+#include "crypt_aes.h"
+#include "crypt_arc4.h"
+#include "rtmp_cmd.h"
+#include "rtmp.h"
+#include "ap.h"
+#include "wpa.h"
+#include "dfs.h"
+#include "chlist.h"
+#include "spectrum.h"
+
+#include "eeprom.h"
+#if defined(RTMP_PCI_SUPPORT) || defined(RTMP_USB_SUPPORT)
+#include "rtmp_mcu.h"
+#endif
+
+
+
+#undef AP_WSC_INCLUDED
+#undef STA_WSC_INCLUDED
+#undef WSC_INCLUDED
+
+
+
+#ifdef CONFIG_STA_SUPPORT
+#endif // CONFIG_STA_SUPPORT //
+
+#ifdef BLOCK_NET_IF
+#include "netif_block.h"
+#endif // BLOCK_NET_IF //
+
+#ifdef IGMP_SNOOP_SUPPORT
+#include "igmp_snoop.h"
+#endif // IGMP_SNOOP_SUPPORT //
+
+#ifdef RALINK_ATE
+#include "rt_ate.h"
+#endif // RALINK_ATE //
+
+#ifdef RALINK_28xx_QA
+#ifndef RALINK_ATE
+#error "For supporting QA GUI, please set HAS_ATE=y and HAS_QA_SUPPORT=y."
+#endif // RALINK_ATE //
+#endif // RALINK_28xx_QA //
+
+
+
+
+
+#if defined(AP_WSC_INCLUDED) || defined(STA_WSC_INCLUDED)
+#define WSC_INCLUDED
+#endif
+
+
+#ifdef CONFIG_STA_SUPPORT
+#ifdef NATIVE_WPA_SUPPLICANT_SUPPORT
+#ifndef WPA_SUPPLICANT_SUPPORT
+#error "Build for being controlled by NetworkManager or wext, please set HAS_WPA_SUPPLICANT=y and HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y"
+#endif // WPA_SUPPLICANT_SUPPORT //
+#endif // NATIVE_WPA_SUPPLICANT_SUPPORT //
+
+#endif // CONFIG_STA_SUPPORT //
+
+
+
+#ifdef IKANOS_VX_1X0
+#include "vr_ikans.h"
+#endif // IKANOS_VX_1X0 //
+
+
+
+
+#ifdef LINUX
+#ifdef RT_CFG80211_SUPPORT
+#include "cfg80211.h"
+#endif // RT_CFG80211_SUPPORT //
+#endif // LINUX //
+
+
+
+#endif	// __RT_CONFIG_H__
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rtmp.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rtmp.h
new file mode 100644
index 000000000..c5fbe2f2f
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rtmp.h
@@ -0,0 +1,7270 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+    Module Name:
+    rtmp.h
+
+    Abstract:
+    Miniport generic portion header file
+
+    Revision History:
+    Who         When          What
+    --------    ----------    ----------------------------------------------
+    Paul Lin    2002-08-01    created
+    James Tan   2002-09-06    modified (Revise NTCRegTable)
+    John Chang  2004-09-06    modified for RT2600     
+*/
+#ifndef __RTMP_H__
+#define __RTMP_H__
+
+#include "link_list.h"
+#include "spectrum_def.h"
+
+#include "rtmp_dot11.h"
+#include "wpa_cmm.h"
+
+#ifdef CONFIG_STA_SUPPORT
+#endif // CONFIG_STA_SUPPORT //
+
+#undef AP_WSC_INCLUDED
+#undef STA_WSC_INCLUDED
+#undef WSC_INCLUDED
+
+
+#ifdef CONFIG_STA_SUPPORT
+#endif // CONFIG_STA_SUPPORT //
+
+#if defined(AP_WSC_INCLUDED) || defined(STA_WSC_INCLUDED)
+#define WSC_INCLUDED
+#endif
+
+
+
+
+
+#include "rtmp_chip.h"
+
+
+
+
+
+#ifdef CLIENT_WDS
+#include "client_wds_cmm.h"
+#endif // CLIENT_WDS //
+
+
+
+typedef struct _RTMP_ADAPTER		RTMP_ADAPTER;
+typedef struct _RTMP_ADAPTER		*PRTMP_ADAPTER;
+
+typedef struct _RTMP_CHIP_OP_ RTMP_CHIP_OP;
+
+
+//#define DBG		1
+
+//#define DBG_DIAGNOSE		1
+
+
+//+++Add by shiang for merge MiniportMMRequest() and MiniportDataMMRequest() into one function
+#define MAX_DATAMM_RETRY	3
+#define MGMT_USE_QUEUE_FLAG	0x80
+//---Add by shiang for merge MiniportMMRequest() and MiniportDataMMRequest() into one function
+
+#define	MAXSEQ		(0xFFF)
+
+#define MAX_MCS_SET 16 /* From MCS 0 ~ MCS 15 */
+
+#if defined(CONFIG_AP_SUPPORT) && defined(CONFIG_STA_SUPPORT)
+#define IF_DEV_CONFIG_OPMODE_ON_AP(_pAd)	if(_pAd->OpMode == OPMODE_AP)
+#define IF_DEV_CONFIG_OPMODE_ON_STA(_pAd)	if(_pAd->OpMode == OPMODE_STA)
+#else
+#define IF_DEV_CONFIG_OPMODE_ON_AP(_pAd)
+#define IF_DEV_CONFIG_OPMODE_ON_STA(_pAd)
+#endif
+
+#define MAX_TXPOWER_ARRAY_SIZE	5
+
+extern  unsigned char   SNAP_AIRONET[];
+extern  unsigned char   CISCO_OUI[];
+extern  UCHAR	BaSizeArray[4];
+
+extern UCHAR BROADCAST_ADDR[MAC_ADDR_LEN];
+extern UCHAR ZERO_MAC_ADDR[MAC_ADDR_LEN];
+extern ULONG BIT32[32];
+extern UCHAR BIT8[8];
+extern char* CipherName[];
+extern char* MCSToMbps[];
+extern UCHAR	 RxwiMCSToOfdmRate[12];
+extern UCHAR SNAP_802_1H[6];
+extern UCHAR SNAP_BRIDGE_TUNNEL[6];
+extern UCHAR SNAP_AIRONET[8];
+extern UCHAR CKIP_LLC_SNAP[8];
+extern UCHAR EAPOL_LLC_SNAP[8];
+extern UCHAR EAPOL[2];
+extern UCHAR IPX[2];
+extern UCHAR TPID[];
+extern UCHAR APPLE_TALK[2];
+extern UCHAR RateIdToPlcpSignal[12]; // see IEEE802.11a-1999 p.14
+extern UCHAR	 OfdmRateToRxwiMCS[];
+extern UCHAR OfdmSignalToRateId[16] ;
+extern UCHAR default_cwmin[4];
+extern UCHAR default_cwmax[4];
+extern UCHAR default_sta_aifsn[4];
+extern UCHAR MapUserPriorityToAccessCategory[8];
+
+extern USHORT RateUpPER[];
+extern USHORT RateDownPER[];
+extern UCHAR  Phy11BNextRateDownward[];
+extern UCHAR  Phy11BNextRateUpward[];
+extern UCHAR  Phy11BGNextRateDownward[];
+extern UCHAR  Phy11BGNextRateUpward[];
+extern UCHAR  Phy11ANextRateDownward[];
+extern UCHAR  Phy11ANextRateUpward[];
+extern signed char   RssiSafeLevelForTxRate[];
+extern unsigned char  RateIdToMbps[];
+extern USHORT RateIdTo500Kbps[];
+
+extern UCHAR  CipherSuiteWpaNoneTkip[];
+extern UCHAR  CipherSuiteWpaNoneTkipLen;
+
+extern UCHAR  CipherSuiteWpaNoneAes[];
+extern UCHAR  CipherSuiteWpaNoneAesLen;
+
+extern UCHAR  SsidIe;
+extern UCHAR  SupRateIe;
+extern UCHAR  ExtRateIe;
+
+#ifdef DOT11_N_SUPPORT
+extern UCHAR  HtCapIe;
+extern UCHAR  AddHtInfoIe;
+extern UCHAR  NewExtChanIe;
+extern UCHAR  BssCoexistIe;
+extern UCHAR  ExtHtCapIe;
+#endif // DOT11_N_SUPPORT //
+extern UCHAR  ExtCapIe;
+
+extern UCHAR  ErpIe;
+extern UCHAR  DsIe;
+extern UCHAR  TimIe;
+extern UCHAR  WpaIe;
+extern UCHAR  Wpa2Ie;
+extern UCHAR  IbssIe;
+extern UCHAR  Ccx2Ie;
+extern UCHAR  WapiIe;
+
+extern UCHAR  WPA_OUI[];
+extern UCHAR  RSN_OUI[];
+extern UCHAR  WAPI_OUI[];
+extern UCHAR  WME_INFO_ELEM[];
+extern UCHAR  WME_PARM_ELEM[];
+extern UCHAR  Ccx2QosInfo[];
+extern UCHAR  Ccx2IeInfo[];
+extern UCHAR  RALINK_OUI[];
+extern UCHAR  PowerConstraintIE[];
+
+
+extern UCHAR  RateSwitchTable[];
+extern UCHAR  RateSwitchTable11B[];
+extern UCHAR  RateSwitchTable11G[];
+extern UCHAR  RateSwitchTable11BG[];
+
+#ifdef DOT11_N_SUPPORT
+extern UCHAR  RateSwitchTable11BGN1S[];
+extern UCHAR  RateSwitchTable11BGN2S[];
+extern UCHAR  RateSwitchTable11BGN2SForABand[];
+extern UCHAR  RateSwitchTable11N1S[];
+extern UCHAR  RateSwitchTable11N2S[];
+extern UCHAR  RateSwitchTable11N2SForABand[];
+
+#ifdef CONFIG_STA_SUPPORT
+extern UCHAR  PRE_N_HT_OUI[];
+#endif // CONFIG_STA_SUPPORT //
+#endif // DOT11_N_SUPPORT //
+
+
+#ifdef RALINK_ATE
+typedef	struct _ATE_INFO {
+	UCHAR	Mode;
+	CHAR	TxPower0;
+	CHAR	TxPower1;
+	CHAR    TxAntennaSel;
+	CHAR    RxAntennaSel;
+	TXWI_STRUC  TxWI; 	  // TXWI
+	USHORT	QID;
+	UCHAR	Addr1[MAC_ADDR_LEN];
+	UCHAR	Addr2[MAC_ADDR_LEN];
+	UCHAR	Addr3[MAC_ADDR_LEN];
+	UCHAR	Channel;
+	UINT32	TxLength;
+	UINT32	TxCount;
+	UINT32	TxDoneCount; // Tx DMA Done
+	UINT32	RFFreqOffset;
+	BOOLEAN	bRxFER;		// Show Rx Frame Error Rate
+	BOOLEAN	bQATxStart; // Have compiled QA in and use it to ATE tx.
+	BOOLEAN	bQARxStart;	// Have compiled QA in and use it to ATE rx.
+#ifdef RTMP_MAC_PCI
+	BOOLEAN	bFWLoading;	// Reload firmware when ATE is done.
+#endif // RTMP_MAC_PCI //
+	UINT32	RxTotalCnt;
+	UINT32	RxCntPerSec;
+
+	CHAR	LastSNR0;             // last received SNR
+	CHAR    LastSNR1;             // last received SNR for 2nd  antenna
+	CHAR    LastRssi0;            // last received RSSI
+	CHAR    LastRssi1;            // last received RSSI for 2nd  antenna
+	CHAR    LastRssi2;            // last received RSSI for 3rd  antenna
+	CHAR    AvgRssi0;             // last 8 frames' average RSSI
+	CHAR    AvgRssi1;             // last 8 frames' average RSSI
+	CHAR    AvgRssi2;             // last 8 frames' average RSSI
+	SHORT   AvgRssi0X8;           // sum of last 8 frames' RSSI
+	SHORT   AvgRssi1X8;           // sum of last 8 frames' RSSI
+	SHORT   AvgRssi2X8;           // sum of last 8 frames' RSSI
+
+	UINT32	NumOfAvgRssiSample;
+
+#ifdef RT35xx
+	UCHAR	LedIndicatorStrength;
+#endif // RT35xx //
+
+#ifdef RALINK_28xx_QA
+	// Tx frame
+	USHORT		HLen; // Header Length
+	USHORT		PLen; // Pattern Length
+	UCHAR 		Header[32]; // Header buffer
+	UCHAR		Pattern[32]; // Pattern buffer
+	USHORT		DLen; // Data Length
+	USHORT		seq;
+	UINT32		CID;
+	RTMP_OS_PID	AtePid;
+	// counters
+	UINT32		U2M;
+	UINT32		OtherData;
+	UINT32		Beacon;
+	UINT32		OtherCount;
+	UINT32		TxAc0;
+	UINT32		TxAc1;
+	UINT32		TxAc2;
+	UINT32		TxAc3;
+	UINT32		TxHCCA;
+	UINT32		TxMgmt;
+	UINT32		RSSI0;
+	UINT32		RSSI1;
+	UINT32		RSSI2;
+	UINT32		SNR0;
+	UINT32		SNR1;
+	// TxStatus : 0 --> task is idle, 1 --> task is running
+	UCHAR		TxStatus;
+#endif // RALINK_28xx_QA //
+
+}	ATE_INFO, *PATE_INFO;
+
+#ifdef RALINK_28xx_QA
+struct ate_racfghdr {
+ 	UINT32		magic_no;
+	USHORT		command_type;
+	USHORT		command_id;
+	USHORT		length;
+	USHORT		sequence;
+	USHORT		status;
+	UCHAR		data[2046];
+}  __attribute__((packed));
+#endif // RALINK_28xx_QA //
+#endif // RALINK_ATE //
+
+
+typedef struct 	_RSSI_SAMPLE {
+	CHAR			LastRssi0;             // last received RSSI
+	CHAR			LastRssi1;             // last received RSSI
+	CHAR			LastRssi2;             // last received RSSI
+	CHAR			AvgRssi0;
+	CHAR			AvgRssi1;
+	CHAR			AvgRssi2;
+	SHORT			AvgRssi0X8;
+	SHORT			AvgRssi1X8;
+	SHORT			AvgRssi2X8;
+} RSSI_SAMPLE;
+
+//
+//  Queue structure and macros
+//
+#define InitializeQueueHeader(QueueHeader)              \
+{                                                       \
+	(QueueHeader)->Head = (QueueHeader)->Tail = NULL;   \
+	(QueueHeader)->Number = 0;                          \
+}
+
+#define RemoveHeadQueue(QueueHeader)                \
+(QueueHeader)->Head;                                \
+{                                                   \
+	PQUEUE_ENTRY pNext;                             \
+	if ((QueueHeader)->Head != NULL)				\
+	{												\
+		pNext = (QueueHeader)->Head->Next;          \
+		(QueueHeader)->Head->Next = NULL;		\
+		(QueueHeader)->Head = pNext;                \
+		if (pNext == NULL)                          \
+			(QueueHeader)->Tail = NULL;             \
+		(QueueHeader)->Number--;                    \
+	}												\
+}
+
+#define InsertHeadQueue(QueueHeader, QueueEntry)            \
+{                                                           \
+		((PQUEUE_ENTRY)QueueEntry)->Next = (QueueHeader)->Head; \
+		(QueueHeader)->Head = (PQUEUE_ENTRY)(QueueEntry);       \
+		if ((QueueHeader)->Tail == NULL)                        \
+			(QueueHeader)->Tail = (PQUEUE_ENTRY)(QueueEntry);   \
+		(QueueHeader)->Number++;                                \
+}
+
+#define InsertTailQueue(QueueHeader, QueueEntry)				\
+{                                                               \
+	((PQUEUE_ENTRY)QueueEntry)->Next = NULL;                    \
+	if ((QueueHeader)->Tail)                                    \
+		(QueueHeader)->Tail->Next = (PQUEUE_ENTRY)(QueueEntry); \
+	else                                                        \
+		(QueueHeader)->Head = (PQUEUE_ENTRY)(QueueEntry);       \
+	(QueueHeader)->Tail = (PQUEUE_ENTRY)(QueueEntry);           \
+	(QueueHeader)->Number++;                                    \
+}
+
+#define InsertTailQueueAc(pAd, pEntry, QueueHeader, QueueEntry)			\
+{																		\
+	((PQUEUE_ENTRY)QueueEntry)->Next = NULL;							\
+	if ((QueueHeader)->Tail)											\
+		(QueueHeader)->Tail->Next = (PQUEUE_ENTRY)(QueueEntry);			\
+	else																\
+		(QueueHeader)->Head = (PQUEUE_ENTRY)(QueueEntry);				\
+	(QueueHeader)->Tail = (PQUEUE_ENTRY)(QueueEntry);					\
+	(QueueHeader)->Number++;											\
+}
+
+
+
+//
+//  Macros for flag and ref count operations
+//
+#define RTMP_SET_FLAG(_M, _F)       ((_M)->Flags |= (_F))
+#define RTMP_CLEAR_FLAG(_M, _F)     ((_M)->Flags &= ~(_F))
+#define RTMP_CLEAR_FLAGS(_M)        ((_M)->Flags = 0)
+#define RTMP_TEST_FLAG(_M, _F)      (((_M)->Flags & (_F)) != 0)
+#define RTMP_TEST_FLAGS(_M, _F)     (((_M)->Flags & (_F)) == (_F))
+// Macro for power save flag.
+#define RTMP_SET_PSFLAG(_M, _F)       ((_M)->PSFlags |= (_F))
+#define RTMP_CLEAR_PSFLAG(_M, _F)     ((_M)->PSFlags &= ~(_F))
+#define RTMP_CLEAR_PSFLAGS(_M)        ((_M)->PSFlags = 0)
+#define RTMP_TEST_PSFLAG(_M, _F)      (((_M)->PSFlags & (_F)) != 0)
+#define RTMP_TEST_PSFLAGS(_M, _F)     (((_M)->PSFlags & (_F)) == (_F))
+
+#define OPSTATUS_SET_FLAG(_pAd, _F)     ((_pAd)->CommonCfg.OpStatusFlags |= (_F))
+#define OPSTATUS_CLEAR_FLAG(_pAd, _F)   ((_pAd)->CommonCfg.OpStatusFlags &= ~(_F))
+#define OPSTATUS_TEST_FLAG(_pAd, _F)    (((_pAd)->CommonCfg.OpStatusFlags & (_F)) != 0)
+
+#define CLIENT_STATUS_SET_FLAG(_pEntry,_F)      ((_pEntry)->ClientStatusFlags |= (_F))
+#define CLIENT_STATUS_CLEAR_FLAG(_pEntry,_F)    ((_pEntry)->ClientStatusFlags &= ~(_F))
+#define CLIENT_STATUS_TEST_FLAG(_pEntry,_F)     (((_pEntry)->ClientStatusFlags & (_F)) != 0)
+
+#define RX_FILTER_SET_FLAG(_pAd, _F)    ((_pAd)->CommonCfg.PacketFilter |= (_F))
+#define RX_FILTER_CLEAR_FLAG(_pAd, _F)  ((_pAd)->CommonCfg.PacketFilter &= ~(_F))
+#define RX_FILTER_TEST_FLAG(_pAd, _F)   (((_pAd)->CommonCfg.PacketFilter & (_F)) != 0)
+
+#ifdef CONFIG_STA_SUPPORT
+#define STA_NO_SECURITY_ON(_p)          (_p->StaCfg.WepStatus == Ndis802_11EncryptionDisabled)
+#define STA_WEP_ON(_p)                  (_p->StaCfg.WepStatus == Ndis802_11Encryption1Enabled)
+#define STA_TKIP_ON(_p)                 (_p->StaCfg.WepStatus == Ndis802_11Encryption2Enabled)
+#define STA_AES_ON(_p)                  (_p->StaCfg.WepStatus == Ndis802_11Encryption3Enabled)
+
+#define STA_TGN_WIFI_ON(_p)             (_p->StaCfg.bTGnWifiTest == TRUE)
+#endif // CONFIG_STA_SUPPORT //
+
+#define CKIP_KP_ON(_p)				((((_p)->StaCfg.CkipFlag) & 0x10) && ((_p)->StaCfg.bCkipCmicOn == TRUE))
+#define CKIP_CMIC_ON(_p)			((((_p)->StaCfg.CkipFlag) & 0x08) && ((_p)->StaCfg.bCkipCmicOn == TRUE))
+
+
+#define INC_RING_INDEX(_idx, _RingSize)    \
+{                                          \
+    (_idx) = (_idx+1) % (_RingSize);       \
+}
+
+
+#ifdef DOT11_N_SUPPORT
+// StaActive.SupportedHtPhy.MCSSet is copied from AP beacon.  Don't need to update here.
+#define COPY_HTSETTINGS_FROM_MLME_AUX_TO_ACTIVE_CFG(_pAd)                                 \
+{                                                                                       \
+	_pAd->StaActive.SupportedHtPhy.ChannelWidth = _pAd->MlmeAux.HtCapability.HtCapInfo.ChannelWidth;      \
+	_pAd->StaActive.SupportedHtPhy.MimoPs = _pAd->MlmeAux.HtCapability.HtCapInfo.MimoPs;      \
+	_pAd->StaActive.SupportedHtPhy.GF = _pAd->MlmeAux.HtCapability.HtCapInfo.GF;      \
+	_pAd->StaActive.SupportedHtPhy.ShortGIfor20 = _pAd->MlmeAux.HtCapability.HtCapInfo.ShortGIfor20;      \
+	_pAd->StaActive.SupportedHtPhy.ShortGIfor40 = _pAd->MlmeAux.HtCapability.HtCapInfo.ShortGIfor40;      \
+	_pAd->StaActive.SupportedHtPhy.TxSTBC = _pAd->MlmeAux.HtCapability.HtCapInfo.TxSTBC;      \
+	_pAd->StaActive.SupportedHtPhy.RxSTBC = _pAd->MlmeAux.HtCapability.HtCapInfo.RxSTBC;      \
+	_pAd->StaActive.SupportedHtPhy.ExtChanOffset = _pAd->MlmeAux.AddHtInfo.AddHtInfo.ExtChanOffset;      \
+	_pAd->StaActive.SupportedHtPhy.RecomWidth = _pAd->MlmeAux.AddHtInfo.AddHtInfo.RecomWidth;      \
+	_pAd->StaActive.SupportedHtPhy.OperaionMode = _pAd->MlmeAux.AddHtInfo.AddHtInfo2.OperaionMode;      \
+	_pAd->StaActive.SupportedHtPhy.NonGfPresent = _pAd->MlmeAux.AddHtInfo.AddHtInfo2.NonGfPresent;      \
+	NdisMoveMemory((_pAd)->MacTab.Content[BSSID_WCID].HTCapability.MCSSet, (_pAd)->StaActive.SupportedPhyInfo.MCSSet, sizeof(UCHAR) * 16);\
+}
+
+#define COPY_AP_HTSETTINGS_FROM_BEACON(_pAd, _pHtCapability)                                 \
+{                                                                                       \
+	_pAd->MacTab.Content[BSSID_WCID].AMsduSize = (UCHAR)(_pHtCapability->HtCapInfo.AMsduSize);	\
+	_pAd->MacTab.Content[BSSID_WCID].MmpsMode= (UCHAR)(_pHtCapability->HtCapInfo.MimoPs);	\
+	_pAd->MacTab.Content[BSSID_WCID].MaxRAmpduFactor = (UCHAR)(_pHtCapability->HtCapParm.MaxRAmpduFactor);	\
+}
+#endif // DOT11_N_SUPPORT //
+
+//
+// MACRO for 32-bit PCI register read / write
+//
+// Usage : RTMP_IO_READ32(
+//              PRTMP_ADAPTER pAd,
+//              ULONG Register_Offset,
+//              PULONG  pValue)
+//
+//         RTMP_IO_WRITE32(
+//              PRTMP_ADAPTER pAd,
+//              ULONG Register_Offset,
+//              ULONG Value)
+//
+
+
+//
+// Common fragment list structure -  Identical to the scatter gather frag list structure
+//
+//#define RTMP_SCATTER_GATHER_ELEMENT         SCATTER_GATHER_ELEMENT 
+//#define PRTMP_SCATTER_GATHER_ELEMENT        PSCATTER_GATHER_ELEMENT 
+#define NIC_MAX_PHYS_BUF_COUNT              8
+
+typedef struct _RTMP_SCATTER_GATHER_ELEMENT {
+    PVOID		Address;
+    ULONG		Length;
+    PULONG		Reserved;
+} RTMP_SCATTER_GATHER_ELEMENT, *PRTMP_SCATTER_GATHER_ELEMENT;
+
+
+typedef struct _RTMP_SCATTER_GATHER_LIST {
+    ULONG  NumberOfElements;
+    PULONG Reserved;
+    RTMP_SCATTER_GATHER_ELEMENT Elements[NIC_MAX_PHYS_BUF_COUNT];
+} RTMP_SCATTER_GATHER_LIST, *PRTMP_SCATTER_GATHER_LIST;
+
+
+//
+//  Some utility macros
+//
+#ifndef min
+#define min(_a, _b)     (((_a) < (_b)) ? (_a) : (_b))
+#endif
+
+#ifndef max
+#define max(_a, _b)     (((_a) > (_b)) ? (_a) : (_b))
+#endif
+
+#define GET_LNA_GAIN(_pAd)	((_pAd->LatchRfRegs.Channel <= 14) ? (_pAd->BLNAGain) : ((_pAd->LatchRfRegs.Channel <= 64) ? (_pAd->ALNAGain0) : ((_pAd->LatchRfRegs.Channel <= 128) ? (_pAd->ALNAGain1) : (_pAd->ALNAGain2))))
+
+#define INC_COUNTER64(Val)          (Val.QuadPart++)
+
+#define INFRA_ON(_p)                (OPSTATUS_TEST_FLAG(_p, fOP_STATUS_INFRA_ON))
+#define ADHOC_ON(_p)                (OPSTATUS_TEST_FLAG(_p, fOP_STATUS_ADHOC_ON))
+#define MONITOR_ON(_p)              (((_p)->StaCfg.BssType) == BSS_MONITOR)
+#define IDLE_ON(_p)                 (!INFRA_ON(_p) && !ADHOC_ON(_p))
+
+// Check LEAP & CCKM flags
+#define LEAP_ON(_p)                 (((_p)->StaCfg.LeapAuthMode) == CISCO_AuthModeLEAP)
+#define LEAP_CCKM_ON(_p)            ((((_p)->StaCfg.LeapAuthMode) == CISCO_AuthModeLEAP) && ((_p)->StaCfg.LeapAuthInfo.CCKM == TRUE))
+
+// if orginal Ethernet frame contains no LLC/SNAP, then an extra LLC/SNAP encap is required 
+#define EXTRA_LLCSNAP_ENCAP_FROM_PKT_START(_pBufVA, _pExtraLlcSnapEncap)		\
+{																\
+	if (((*(_pBufVA + 12) << 8) + *(_pBufVA + 13)) > 1500)		\
+	{															\
+		_pExtraLlcSnapEncap = SNAP_802_1H;						\
+		if (NdisEqualMemory(IPX, _pBufVA + 12, 2) || 			\
+			NdisEqualMemory(APPLE_TALK, _pBufVA + 12, 2))		\
+		{														\
+			_pExtraLlcSnapEncap = SNAP_BRIDGE_TUNNEL;			\
+		}														\
+	}															\
+	else														\
+	{															\
+		_pExtraLlcSnapEncap = NULL;								\
+	}															\
+}
+
+// New Define for new Tx Path.
+#define EXTRA_LLCSNAP_ENCAP_FROM_PKT_OFFSET(_pBufVA, _pExtraLlcSnapEncap)	\
+{																\
+	if (((*(_pBufVA) << 8) + *(_pBufVA + 1)) > 1500)			\
+	{															\
+		_pExtraLlcSnapEncap = SNAP_802_1H;						\
+		if (NdisEqualMemory(IPX, _pBufVA, 2) || 				\
+			NdisEqualMemory(APPLE_TALK, _pBufVA, 2))			\
+		{														\
+			_pExtraLlcSnapEncap = SNAP_BRIDGE_TUNNEL;			\
+		}														\
+	}															\
+	else														\
+	{															\
+		_pExtraLlcSnapEncap = NULL;								\
+	}															\
+}
+
+
+#define MAKE_802_3_HEADER(_p, _pMac1, _pMac2, _pType)                   \
+{                                                                       \
+    NdisMoveMemory(_p, _pMac1, MAC_ADDR_LEN);                           \
+    NdisMoveMemory((_p + MAC_ADDR_LEN), _pMac2, MAC_ADDR_LEN);          \
+    NdisMoveMemory((_p + MAC_ADDR_LEN * 2), _pType, LENGTH_802_3_TYPE); \
+}
+
+// if pData has no LLC/SNAP (neither RFC1042 nor Bridge tunnel), keep it that way.
+// else if the received frame is LLC/SNAP-encaped IPX or APPLETALK, preserve the LLC/SNAP field 
+// else remove the LLC/SNAP field from the result Ethernet frame
+// Patch for WHQL only, which did not turn on Netbios but use IPX within its payload
+// Note:
+//     _pData & _DataSize may be altered (remove 8-byte LLC/SNAP) by this MACRO
+//     _pRemovedLLCSNAP: pointer to removed LLC/SNAP; NULL is not removed
+#define CONVERT_TO_802_3(_p8023hdr, _pDA, _pSA, _pData, _DataSize, _pRemovedLLCSNAP)      \
+{                                                                       \
+    char LLC_Len[2];                                                    \
+                                                                        \
+    _pRemovedLLCSNAP = NULL;                                            \
+    if (NdisEqualMemory(SNAP_802_1H, _pData, 6)  ||                     \
+        NdisEqualMemory(SNAP_BRIDGE_TUNNEL, _pData, 6))                 \
+    {                                                                   \
+        PUCHAR pProto = _pData + 6;                                     \
+                                                                        \
+        if ((NdisEqualMemory(IPX, pProto, 2) || NdisEqualMemory(APPLE_TALK, pProto, 2)) &&  \
+            NdisEqualMemory(SNAP_802_1H, _pData, 6))                    \
+        {                                                               \
+            LLC_Len[0] = (UCHAR)(_DataSize >> 8);                       \
+            LLC_Len[1] = (UCHAR)(_DataSize & (256 - 1));                \
+            MAKE_802_3_HEADER(_p8023hdr, _pDA, _pSA, LLC_Len);          \
+        }                                                               \
+        else                                                            \
+        {                                                               \
+            MAKE_802_3_HEADER(_p8023hdr, _pDA, _pSA, pProto);           \
+            _pRemovedLLCSNAP = _pData;                                  \
+            _DataSize -= LENGTH_802_1_H;                                \
+            _pData += LENGTH_802_1_H;                                   \
+        }                                                               \
+    }                                                                   \
+    else                                                                \
+    {                                                                   \
+        LLC_Len[0] = (UCHAR)(_DataSize >> 8);                           \
+        LLC_Len[1] = (UCHAR)(_DataSize & (256 - 1));                    \
+        MAKE_802_3_HEADER(_p8023hdr, _pDA, _pSA, LLC_Len);              \
+    }                                                                   \
+}
+
+
+// Enqueue this frame to MLME engine
+// We need to enqueue the whole frame because MLME need to pass data type
+// information from 802.11 header
+#ifdef RTMP_MAC_PCI
+#define REPORT_MGMT_FRAME_TO_MLME(_pAd, Wcid, _pFrame, _FrameSize, _Rssi0, _Rssi1, _Rssi2, _MinSNR)        \
+{                                                                                       \
+    UINT32 High32TSF, Low32TSF;                                                          \
+    RTMP_IO_READ32(_pAd, TSF_TIMER_DW1, &High32TSF);                                       \
+    RTMP_IO_READ32(_pAd, TSF_TIMER_DW0, &Low32TSF);                                        \
+    MlmeEnqueueForRecv(_pAd, Wcid, High32TSF, Low32TSF, (UCHAR)_Rssi0, (UCHAR)_Rssi1,(UCHAR)_Rssi2,_FrameSize, _pFrame, (UCHAR)_MinSNR);   \
+}
+#endif // RTMP_MAC_PCI //
+
+#define MAC_ADDR_EQUAL(pAddr1,pAddr2)           RTMPEqualMemory((PVOID)(pAddr1), (PVOID)(pAddr2), MAC_ADDR_LEN)
+#define SSID_EQUAL(ssid1, len1, ssid2, len2)    ((len1==len2) && (RTMPEqualMemory(ssid1, ssid2, len1)))
+
+//
+// Check if it is Japan W53(ch52,56,60,64) channel.
+//
+#define JapanChannelCheck(channel)  ((channel == 52) || (channel == 56) || (channel == 60) || (channel == 64))
+
+#ifdef CONFIG_STA_SUPPORT
+#define STA_EXTRA_SETTING(_pAd)
+
+#define STA_PORT_SECURED(_pAd) \
+{ \
+	BOOLEAN	Cancelled; \
+	(_pAd)->StaCfg.PortSecured = WPA_802_1X_PORT_SECURED; \
+	NdisAcquireSpinLock(&((_pAd)->MacTabLock)); \
+	(_pAd)->MacTab.Content[BSSID_WCID].PortSecured = (_pAd)->StaCfg.PortSecured; \
+	(_pAd)->MacTab.Content[BSSID_WCID].PrivacyFilter = Ndis802_11PrivFilterAcceptAll;\
+	NdisReleaseSpinLock(&(_pAd)->MacTabLock); \
+	RTMPCancelTimer(&((_pAd)->Mlme.LinkDownTimer), &Cancelled);\
+	STA_EXTRA_SETTING(_pAd); \
+}
+#endif // CONFIG_STA_SUPPORT //
+
+
+
+//
+//  Data buffer for DMA operation, the buffer must be contiguous physical memory
+//  Both DMA to / from CPU use the same structure.
+//
+typedef struct  _RTMP_DMABUF
+{
+	ULONG                   AllocSize;
+	PVOID                   AllocVa;            // TxBuf virtual address
+	NDIS_PHYSICAL_ADDRESS   AllocPa;            // TxBuf physical address
+} RTMP_DMABUF, *PRTMP_DMABUF;
+
+
+//
+// Control block (Descriptor) for all ring descriptor DMA operation, buffer must be 
+// contiguous physical memory. NDIS_PACKET stored the binding Rx packet descriptor
+// which won't be released, driver has to wait until upper layer return the packet
+// before giveing up this rx ring descriptor to ASIC. NDIS_BUFFER is assocaited pair
+// to describe the packet buffer. For Tx, NDIS_PACKET stored the tx packet descriptor
+// which driver should ACK upper layer when the tx is physically done or failed.
+//
+typedef struct _RTMP_DMACB
+{
+	ULONG                   AllocSize;          // Control block size
+	PVOID                   AllocVa;            // Control block virtual address
+	NDIS_PHYSICAL_ADDRESS   AllocPa;            // Control block physical address
+	PNDIS_PACKET pNdisPacket;
+	PNDIS_PACKET pNextNdisPacket;
+
+	RTMP_DMABUF             DmaBuf;             // Associated DMA buffer structure
+} RTMP_DMACB, *PRTMP_DMACB;
+
+
+typedef struct _RTMP_TX_RING
+{
+	RTMP_DMACB  Cell[TX_RING_SIZE];
+	UINT32		TxCpuIdx;	
+	UINT32		TxDmaIdx;   
+	UINT32		TxSwFreeIdx; 	// software next free tx index
+} RTMP_TX_RING, *PRTMP_TX_RING;
+
+typedef struct _RTMP_RX_RING
+{
+	RTMP_DMACB  Cell[RX_RING_SIZE];
+	UINT32		RxCpuIdx;
+	UINT32		RxDmaIdx;
+	INT32		RxSwReadIdx; 	// software next read index
+} RTMP_RX_RING, *PRTMP_RX_RING;
+
+typedef struct _RTMP_MGMT_RING
+{
+	RTMP_DMACB  Cell[MGMT_RING_SIZE];
+	UINT32		TxCpuIdx;
+	UINT32		TxDmaIdx;
+	UINT32		TxSwFreeIdx; // software next free tx index
+} RTMP_MGMT_RING, *PRTMP_MGMT_RING;
+
+
+//
+//  Statistic counter structure
+//
+typedef struct _COUNTER_802_3
+{
+	// General Stats
+	ULONG       GoodTransmits;
+	ULONG       GoodReceives;
+	ULONG       TxErrors;
+	ULONG       RxErrors;
+	ULONG       RxNoBuffer;
+
+	// Ethernet Stats
+	ULONG       RcvAlignmentErrors;
+	ULONG       OneCollision;
+	ULONG       MoreCollisions;
+
+} COUNTER_802_3, *PCOUNTER_802_3;
+
+typedef struct _COUNTER_802_11 {
+	ULONG           Length;
+//	LARGE_INTEGER   LastTransmittedFragmentCount;
+	LARGE_INTEGER   TransmittedFragmentCount;
+	LARGE_INTEGER   MulticastTransmittedFrameCount;
+	LARGE_INTEGER   FailedCount;
+	LARGE_INTEGER   RetryCount;
+	LARGE_INTEGER   MultipleRetryCount;
+	LARGE_INTEGER   RTSSuccessCount;
+	LARGE_INTEGER   RTSFailureCount;
+	LARGE_INTEGER   ACKFailureCount;
+	LARGE_INTEGER   FrameDuplicateCount;
+	LARGE_INTEGER   ReceivedFragmentCount;
+	LARGE_INTEGER   MulticastReceivedFrameCount;
+	LARGE_INTEGER   FCSErrorCount;
+} COUNTER_802_11, *PCOUNTER_802_11;
+
+typedef struct _COUNTER_RALINK {
+
+	UINT32			OneSecStart; /* for one sec count clear use */
+	UINT32          OneSecBeaconSentCnt;
+	UINT32          OneSecFalseCCACnt;      // CCA error count, for debug purpose, might move to global counter
+	UINT32          OneSecRxFcsErrCnt;      // CRC error
+	UINT32          OneSecRxOkCnt;          // RX without error
+	UINT32          OneSecTxFailCount;
+	UINT32          OneSecTxNoRetryOkCount;
+	UINT32          OneSecTxRetryOkCount;
+	UINT32          OneSecRxOkDataCnt;      // unicast-to-me DATA frame count
+	UINT32          OneSecTransmittedByteCount;   // both successful and failure, used to calculate TX throughput
+
+	ULONG           OneSecOsTxCount[NUM_OF_TX_RING];
+	ULONG           OneSecDmaDoneCount[NUM_OF_TX_RING];
+	UINT32          OneSecTxDoneCount;
+	ULONG           OneSecRxCount;
+	UINT32          OneSecReceivedByteCount;
+	UINT32          OneSecTxAggregationCount;
+	UINT32          OneSecRxAggregationCount;
+	UINT32   		OneSecFrameDuplicateCount;
+	UINT32			OneSecEnd; /* for one sec count clear use */
+
+	ULONG           TransmittedByteCount;   // both successful and failure, used to calculate TX throughput
+	ULONG           ReceivedByteCount;      // both CRC okay and CRC error, used to calculate RX throughput
+	ULONG           BeenDisassociatedCount;
+	ULONG           BadCQIAutoRecoveryCount;
+	ULONG           PoorCQIRoamingCount;
+	ULONG           MgmtRingFullCount;
+	ULONG           RxCountSinceLastNULL;
+	ULONG           RxCount;
+	ULONG           RxRingErrCount;
+	ULONG           KickTxCount;
+	ULONG           TxRingErrCount;
+	LARGE_INTEGER   RealFcsErrCount;
+	ULONG           PendingNdisPacketCount;
+
+//	ULONG           OneSecOsTxCount[NUM_OF_TX_RING];
+//	ULONG           OneSecDmaDoneCount[NUM_OF_TX_RING];
+//	UINT32          OneSecTxDoneCount;
+//	ULONG           OneSecRxCount;
+//	UINT32          OneSecTxAggregationCount;
+//	UINT32          OneSecRxAggregationCount;
+//	UINT32          OneSecReceivedByteCount;
+//	UINT32   		OneSecFrameDuplicateCount;
+
+//	UINT32          OneSecTransmittedByteCount;   // both successful and failure, used to calculate TX throughput
+//	UINT32          OneSecTxNoRetryOkCount;
+//	UINT32          OneSecTxRetryOkCount;
+//	UINT32          OneSecTxFailCount;
+//	UINT32          OneSecFalseCCACnt;      // CCA error count, for debug purpose, might move to global counter
+//	UINT32          OneSecRxOkCnt;          // RX without error
+//	UINT32          OneSecRxOkDataCnt;      // unicast-to-me DATA frame count
+//	UINT32          OneSecRxFcsErrCnt;      // CRC error
+//	UINT32          OneSecBeaconSentCnt;
+
+	UINT32          LastOneSecTotalTxCount; // OneSecTxNoRetryOkCount + OneSecTxRetryOkCount + OneSecTxFailCount
+	UINT32          LastOneSecRxOkDataCnt;  // OneSecRxOkDataCnt
+	ULONG		DuplicateRcv;
+	ULONG		TxAggCount;
+	ULONG		TxNonAggCount;
+	ULONG		TxAgg1MPDUCount;
+	ULONG		TxAgg2MPDUCount;
+	ULONG		TxAgg3MPDUCount;
+	ULONG		TxAgg4MPDUCount;
+	ULONG		TxAgg5MPDUCount;
+	ULONG		TxAgg6MPDUCount;
+	ULONG		TxAgg7MPDUCount;
+	ULONG		TxAgg8MPDUCount;
+	ULONG		TxAgg9MPDUCount;
+	ULONG		TxAgg10MPDUCount;
+	ULONG		TxAgg11MPDUCount;
+	ULONG		TxAgg12MPDUCount;
+	ULONG		TxAgg13MPDUCount;
+	ULONG		TxAgg14MPDUCount;
+	ULONG		TxAgg15MPDUCount;
+	ULONG		TxAgg16MPDUCount;
+
+	LARGE_INTEGER       TransmittedOctetsInAMSDU; 
+	LARGE_INTEGER       TransmittedAMSDUCount; 
+	LARGE_INTEGER       ReceivedOctesInAMSDUCount; 
+	LARGE_INTEGER       ReceivedAMSDUCount; 
+	LARGE_INTEGER       TransmittedAMPDUCount;
+	LARGE_INTEGER       TransmittedMPDUsInAMPDUCount;
+	LARGE_INTEGER       TransmittedOctetsInAMPDUCount; 		
+	LARGE_INTEGER       MPDUInReceivedAMPDUCount;
+} COUNTER_RALINK, *PCOUNTER_RALINK;
+
+
+typedef struct _COUNTER_DRS {
+	// to record the each TX rate's quality. 0 is best, the bigger the worse.
+	USHORT          TxQuality[MAX_STEP_OF_TX_RATE_SWITCH];
+	UCHAR           PER[MAX_STEP_OF_TX_RATE_SWITCH];
+	UCHAR           TxRateUpPenalty;      // extra # of second penalty due to last unstable condition
+	ULONG           CurrTxRateStableTime; // # of second in current TX rate
+	BOOLEAN         fNoisyEnvironment;
+	BOOLEAN         fLastSecAccordingRSSI;
+	UCHAR           LastSecTxRateChangeAction; // 0: no change, 1:rate UP, 2:rate down
+	UCHAR			LastTimeTxRateChangeAction; //Keep last time value of LastSecTxRateChangeAction
+	ULONG			LastTxOkCount;
+} COUNTER_DRS, *PCOUNTER_DRS;
+
+
+
+
+/***************************************************************************
+  *	security key related data structure
+  **************************************************************************/
+
+// structure to define WPA Group Key Rekey Interval
+typedef struct GNU_PACKED _RT_802_11_WPA_REKEY {
+	ULONG ReKeyMethod;          // mechanism for rekeying: 0:disable, 1: time-based, 2: packet-based
+	ULONG ReKeyInterval;        // time-based: seconds, packet-based: kilo-packets
+} RT_WPA_REKEY,*PRT_WPA_REKEY, RT_802_11_WPA_REKEY, *PRT_802_11_WPA_REKEY;
+
+
+
+typedef struct {
+	UCHAR        Addr[MAC_ADDR_LEN];
+	UCHAR        ErrorCode[2];  //00 01-Invalid authentication type
+							//00 02-Authentication timeout
+							//00 03-Challenge from AP failed
+							//00 04-Challenge to AP failed
+	BOOLEAN      Reported;
+} ROGUEAP_ENTRY, *PROGUEAP_ENTRY;
+
+typedef struct {
+	UCHAR               RogueApNr;
+	ROGUEAP_ENTRY       RogueApEntry[MAX_LEN_OF_BSS_TABLE];
+} ROGUEAP_TABLE, *PROGUEAP_TABLE;
+
+//
+// Cisco IAPP format
+//
+typedef struct  _CISCO_IAPP_CONTENT_
+{
+	USHORT     Length;        //IAPP Length
+	UCHAR      MessageType;      //IAPP type
+	UCHAR      FunctionCode;     //IAPP function type
+	UCHAR      DestinaionMAC[MAC_ADDR_LEN];   
+	UCHAR      SourceMAC[MAC_ADDR_LEN];
+	USHORT     Tag;           //Tag(element IE) - Adjacent AP report
+	USHORT     TagLength;     //Length of element not including 4 byte header
+	UCHAR      OUI[4];           //0x00, 0x40, 0x96, 0x00
+	UCHAR      PreviousAP[MAC_ADDR_LEN];       //MAC Address of access point
+	USHORT     Channel;       
+	USHORT     SsidLen;
+	UCHAR      Ssid[MAX_LEN_OF_SSID];
+	USHORT     Seconds;          //Seconds that the client has been disassociated.
+} CISCO_IAPP_CONTENT, *PCISCO_IAPP_CONTENT;
+
+
+/*
+  *	Fragment Frame structure
+  */
+typedef struct  _FRAGMENT_FRAME {
+	PNDIS_PACKET    pFragPacket;
+	ULONG       RxSize;
+	USHORT      Sequence;
+	USHORT      LastFrag;
+	ULONG       Flags;          // Some extra frame information. bit 0: LLC presented
+} FRAGMENT_FRAME, *PFRAGMENT_FRAME;
+
+
+//
+// Packet information for NdisQueryPacket
+//
+typedef struct  _PACKET_INFO    {
+	UINT            PhysicalBufferCount;    // Physical breaks of buffer descripor chained
+	UINT            BufferCount ;           // Number of Buffer descriptor chained
+	UINT            TotalPacketLength ;     // Self explained
+	PNDIS_BUFFER    pFirstBuffer;           // Pointer to first buffer descriptor
+} PACKET_INFO, *PPACKET_INFO;
+
+//
+// Tkip Key structure which RC4 key & MIC calculation
+//
+typedef struct  _TKIP_KEY_INFO  {
+	UINT        nBytesInM;  // # bytes in M for MICKEY
+	ULONG       IV16;
+	ULONG       IV32;   
+	ULONG       K0;         // for MICKEY Low
+	ULONG       K1;         // for MICKEY Hig
+	ULONG       L;          // Current state for MICKEY
+	ULONG       R;          // Current state for MICKEY
+	ULONG       M;          // Message accumulator for MICKEY
+	UCHAR       RC4KEY[16];
+	UCHAR       MIC[8];
+} TKIP_KEY_INFO, *PTKIP_KEY_INFO;
+
+
+//
+// Private / Misc data, counters for driver internal use
+//
+typedef struct  __PRIVATE_STRUC {
+	UINT       SystemResetCnt;         // System reset counter
+	UINT       TxRingFullCnt;          // Tx ring full occurrance number
+	UINT       PhyRxErrCnt;            // PHY Rx error count, for debug purpose, might move to global counter
+	// Variables for WEP encryption / decryption in rtmp_wep.c
+	// Tkip stuff
+	TKIP_KEY_INFO   Tx;
+	TKIP_KEY_INFO   Rx;
+} PRIVATE_STRUC, *PPRIVATE_STRUC;
+
+
+/***************************************************************************
+  *	Channel and BBP related data structures
+  **************************************************************************/
+// structure to tune BBP R66 (BBP TUNING)
+typedef struct _BBP_R66_TUNING {
+	BOOLEAN     bEnable;
+	USHORT      FalseCcaLowerThreshold;  // default 100
+	USHORT      FalseCcaUpperThreshold;  // default 512
+	UCHAR       R66Delta;
+	UCHAR       R66CurrentValue;
+	BOOLEAN		R66LowerUpperSelect; //Before LinkUp, Used LowerBound or UpperBound as R66 value.
+} BBP_R66_TUNING, *PBBP_R66_TUNING;
+
+// structure to store channel TX power
+typedef struct _CHANNEL_TX_POWER {
+	USHORT     RemainingTimeForUse;		//unit: sec
+	UCHAR      Channel;
+#ifdef DOT11N_DRAFT3
+	BOOLEAN       bEffectedChannel;	// For BW 40 operating in 2.4GHz , the "effected channel" is the channel that is covered in 40Mhz.
+#endif // DOT11N_DRAFT3 //
+	CHAR       Power;
+	CHAR       Power2;
+	UCHAR      MaxTxPwr;
+	UCHAR      DfsReq;
+	UCHAR	   RegulatoryDomain;
+
+/*
+	Channel property:
+ 
+	CHANNEL_DISABLED: The channel is disabled.
+	CHANNEL_PASSIVE_SCAN: Only passive scanning is allowed.
+	CHANNEL_NO_IBSS: IBSS is not allowed.
+	CHANNEL_RADAR: Radar detection is required.
+	CHANNEL_NO_FAT_ABOVE: Extension channel above this channel is not allowed.
+	CHANNEL_NO_FAT_BELOW: Extension channel below this channel is not allowed.
+ */
+#define CHANNEL_DISABLED		0x01 /* no use */
+#define CHANNEL_PASSIVE_SCAN	0x02
+#define CHANNEL_NO_IBSS			0x04
+#define CHANNEL_RADAR			0x08
+#define CHANNEL_NO_FAT_ABOVE	0x10
+#define CHANNEL_NO_FAT_BELOW	0x20
+
+	UCHAR	Flags;
+} CHANNEL_TX_POWER, *PCHANNEL_TX_POWER;
+
+// structure to store 802.11j channel TX power
+typedef struct _CHANNEL_11J_TX_POWER {
+	UCHAR      Channel;
+	UCHAR      BW;	// BW_10 or BW_20
+	CHAR       Power;
+	CHAR       Power2;
+	USHORT     RemainingTimeForUse;		//unit: sec
+} CHANNEL_11J_TX_POWER, *PCHANNEL_11J_TX_POWER;
+
+typedef struct _SOFT_RX_ANT_DIVERSITY_STRUCT {
+	UCHAR     EvaluatePeriod;		 // 0:not evalute status, 1: evaluate status, 2: switching status
+	UCHAR     EvaluateStableCnt;
+	UCHAR     Pair1PrimaryRxAnt;     // 0:Ant-E1, 1:Ant-E2
+	UCHAR     Pair1SecondaryRxAnt;   // 0:Ant-E1, 1:Ant-E2
+	UCHAR     Pair2PrimaryRxAnt;     // 0:Ant-E3, 1:Ant-E4
+	UCHAR     Pair2SecondaryRxAnt;   // 0:Ant-E3, 1:Ant-E4
+#ifdef CONFIG_STA_SUPPORT
+	SHORT     Pair1AvgRssi[2];       // AvgRssi[0]:E1, AvgRssi[1]:E2
+	SHORT     Pair2AvgRssi[2];       // AvgRssi[0]:E3, AvgRssi[1]:E4
+#endif // CONFIG_STA_SUPPORT //
+	SHORT     Pair1LastAvgRssi;      // 
+	SHORT     Pair2LastAvgRssi;      // 
+	ULONG     RcvPktNumWhenEvaluate;
+	BOOLEAN   FirstPktArrivedWhenEvaluate;
+	RALINK_TIMER_STRUCT    RxAntDiversityTimer;
+} SOFT_RX_ANT_DIVERSITY, *PSOFT_RX_ANT_DIVERSITY;
+
+
+/***************************************************************************
+  *	structure for radar detection and channel switch
+  **************************************************************************/
+typedef struct _RADAR_DETECT_STRUCT {
+    //BOOLEAN		IEEE80211H;			// 0: disable, 1: enable IEEE802.11h
+	UCHAR		CSCount;			//Channel switch counter
+	UCHAR		CSPeriod;			//Channel switch period (beacon count)
+	UCHAR		RDCount;			//Radar detection counter
+	UCHAR		RDMode;				//Radar Detection mode
+	UCHAR		RDDurRegion;		//Radar detection duration region
+	UCHAR		BBPR16;
+	UCHAR		BBPR17;
+	UCHAR		BBPR18;
+	UCHAR		BBPR21;
+	UCHAR		BBPR22;
+	UCHAR		BBPR64;
+	ULONG		InServiceMonitorCount; // unit: sec
+	UINT8		DfsSessionTime;
+#ifdef DFS_FCC_BW40_FIX
+	CHAR		DfsSessionFccOff;
+#endif
+	BOOLEAN		bFastDfs;
+	UINT8		ChMovingTime;
+	UINT8		LongPulseRadarTh;
+#ifdef MERGE_ARCH_TEAM
+	CHAR		AvgRssiReq;
+	ULONG		DfsLowerLimit;
+	ULONG		DfsUpperLimit;
+	UINT8		FixDfsLimit;
+	ULONG		upperlimit;
+	ULONG		lowerlimit;
+#endif // MERGE_ARCH_TEAM //
+} RADAR_DETECT_STRUCT, *PRADAR_DETECT_STRUCT;
+
+#ifdef CARRIER_DETECTION_SUPPORT
+typedef enum CD_STATE_n
+{
+	CD_NORMAL,
+	CD_SILENCE,
+	CD_MAX_STATE
+} CD_STATE;
+
+#ifdef TONE_RADAR_DETECT_SUPPORT
+#define CARRIER_DETECT_RECHECK_TIME			3
+#define CARRIER_DETECT_CRITIRIA				280
+#define CARRIER_DETECT_STOP_RATIO				2
+#define CARRIER_DETECT_STOP_RECHECK_TIME		4
+#define CARRIER_DETECT_CRITIRIA_A				230
+#define CARRIER_DETECT_DELTA					7
+#define CARRIER_DETECT_DIV_FLAG				0
+#define CARRIER_DETECT_THRESHOLD			0x0fffffff
+#endif // TONE_RADAR_DETECT_SUPPORT //
+
+typedef struct CARRIER_DETECTION_s
+{
+	BOOLEAN					Enable;
+	UINT8					CDSessionTime;
+	UINT8					CDPeriod;
+	CD_STATE				CD_State;
+#ifdef TONE_RADAR_DETECT_SUPPORT
+	UINT8					delta;
+	UINT8					div_flag;
+	UINT32					threshold;
+	UINT8					recheck;
+	UINT8					recheck1;
+	UINT8					recheck2;
+	UINT32					TimeStamp;
+	UINT32					criteria;
+	UINT32					CarrierDebug;
+	ULONG					idle_time;
+	ULONG					busy_time;
+	ULONG					Debug;
+#endif // TONE_RADAR_DETECT_SUPPORT //
+}CARRIER_DETECTION_STRUCT, *PCARRIER_DETECTION_STRUCT;
+#endif // CARRIER_DETECTION_SUPPORT //
+
+
+#ifdef NEW_DFS
+typedef struct _NewDFSDebug
+{
+	UCHAR channel;
+	ULONG wait_time;
+	UCHAR delta_delay_range;
+	UCHAR delta_delay_step;
+	UCHAR EL_range;
+	UCHAR EL_step;
+	UCHAR EH_range;
+	UCHAR EH_step;
+	UCHAR WL_range;
+	UCHAR WL_step;
+	UCHAR WH_range;
+	UCHAR WH_step;
+	ULONG T_expected;
+	ULONG T_margin;
+	UCHAR start;
+	ULONG count;
+	ULONG idx;
+
+}NewDFSDebug, *pNewDFSDebug;
+
+#define NEW_DFS_FCC_5_ENT_NUM		5
+#define NEW_DFS_DBG_PORT_ENT_NUM_POWER	8
+#define NEW_DFS_DBG_PORT_ENT_NUM		(1 << NEW_DFS_DBG_PORT_ENT_NUM_POWER)  // CE Debug Port entry number, 256
+#define NEW_DFS_DBG_PORT_MASK	0xff
+
+// Matched Period definition
+#define NEW_DFS_MPERIOD_ENT_NUM_POWER		8
+#define NEW_DFS_MPERIOD_ENT_NUM		(1 << NEW_DFS_MPERIOD_ENT_NUM_POWER)	 // CE Period Table entry number, 512
+#define NEW_DFS_MAX_CHANNEL	4
+
+typedef struct _NewDFSDebugPort{
+	ULONG counter;
+	ULONG timestamp;
+	USHORT width;
+	USHORT start_idx; // start index to period table
+	USHORT end_idx; // end index to period table
+}NewDFSDebugPort, *pNewDFSDebugPort;
+
+// Matched Period Table
+typedef struct _NewDFSMPeriod{
+	USHORT	idx;
+	USHORT width;
+	USHORT	idx2;
+	USHORT width2;
+	ULONG period;
+}NewDFSMPeriod, *pNewDFSMPeriod;
+
+#endif // NEW_DFS //
+
+
+typedef enum _ABGBAND_STATE_ {
+	UNKNOWN_BAND,
+	BG_BAND,
+	A_BAND,
+} ABGBAND_STATE;
+
+#ifdef CONFIG_STA_SUPPORT
+#ifdef RTMP_MAC_PCI
+// Power save method control
+typedef	union	_PS_CONTROL	{
+	struct	{
+		ULONG		EnablePSinIdle:1;			// Enable radio off when not connect to AP. radio on only when sitesurvey,
+		ULONG		EnableNewPS:1;		// Enable new  Chip power save fucntion . New method can only be applied in chip version after 2872. and PCIe.
+		ULONG		rt30xxPowerMode:2;			// Power Level Mode for rt30xx chip
+		ULONG		rt30xxFollowHostASPM:1;			// Card Follows Host's setting for rt30xx chip. 
+		ULONG		rt30xxForceASPMTest:1;			// Force enable L1 for rt30xx chip. This has higher priority than rt30xxFollowHostASPM Mode.
+		ULONG		rsv:26;			// Radio Measurement Enable
+	}	field;
+	ULONG			word;
+}	PS_CONTROL, *PPS_CONTROL;
+#endif // RTMP_MAC_PCI //
+#endif // CONFIG_STA_SUPPORT //
+/***************************************************************************
+  *	structure for MLME state machine
+  **************************************************************************/
+typedef struct _MLME_STRUCT {
+#ifdef CONFIG_STA_SUPPORT
+	// STA state machines
+	STATE_MACHINE           CntlMachine;
+	STATE_MACHINE           AssocMachine;
+	STATE_MACHINE           AuthMachine;
+	STATE_MACHINE           AuthRspMachine;
+	STATE_MACHINE           SyncMachine;
+	STATE_MACHINE           WpaPskMachine;
+	STATE_MACHINE           LeapMachine;
+	STATE_MACHINE_FUNC      AssocFunc[ASSOC_FUNC_SIZE];
+	STATE_MACHINE_FUNC      AuthFunc[AUTH_FUNC_SIZE];
+	STATE_MACHINE_FUNC      AuthRspFunc[AUTH_RSP_FUNC_SIZE];
+	STATE_MACHINE_FUNC      SyncFunc[SYNC_FUNC_SIZE];
+
+#endif // CONFIG_STA_SUPPORT //
+	STATE_MACHINE_FUNC      ActFunc[ACT_FUNC_SIZE];
+	// Action 
+	STATE_MACHINE           ActMachine;
+
+
+#ifdef QOS_DLS_SUPPORT
+	STATE_MACHINE			DlsMachine;
+	STATE_MACHINE_FUNC      DlsFunc[DLS_FUNC_SIZE];
+#endif // QOS_DLS_SUPPORT //
+
+
+	
+	// common WPA state machine
+	STATE_MACHINE           WpaMachine;
+	STATE_MACHINE_FUNC      WpaFunc[WPA_FUNC_SIZE];
+
+	
+
+	ULONG                   ChannelQuality;  // 0..100, Channel Quality Indication for Roaming
+	ULONG                   Now32;           // latch the value of NdisGetSystemUpTime()
+	ULONG                   LastSendNULLpsmTime;
+
+	BOOLEAN                 bRunning;
+	NDIS_SPIN_LOCK          TaskLock;
+	MLME_QUEUE              Queue;
+
+	UINT                    ShiftReg;
+
+	RALINK_TIMER_STRUCT     PeriodicTimer;
+	RALINK_TIMER_STRUCT     APSDPeriodicTimer;
+	RALINK_TIMER_STRUCT     LinkDownTimer;
+	RALINK_TIMER_STRUCT     LinkUpTimer;
+#ifdef RTMP_MAC_PCI
+    UCHAR                   bPsPollTimerRunning;
+    RALINK_TIMER_STRUCT     PsPollTimer;    
+	RALINK_TIMER_STRUCT     RadioOnOffTimer;
+#endif // RTMP_MAC_PCI //
+	ULONG                   PeriodicRound;
+	ULONG                   OneSecPeriodicRound;
+
+	UCHAR					RealRxPath;
+	BOOLEAN					bLowThroughput;
+	BOOLEAN					bEnableAutoAntennaCheck;
+	RALINK_TIMER_STRUCT		RxAntEvalTimer;
+
+#ifdef RT30xx
+	UCHAR CaliBW40RfR24;
+	UCHAR CaliBW20RfR24;
+	UCHAR CaliBW20RfR31;
+	UCHAR CaliBW40RfR31;
+#endif // RT30xx //
+	
+} MLME_STRUCT, *PMLME_STRUCT;
+
+
+#ifdef DOT11_N_SUPPORT
+/***************************************************************************
+  *	802.11 N related data structures
+  **************************************************************************/
+struct reordering_mpdu
+{
+	struct reordering_mpdu	*next;
+	PNDIS_PACKET			pPacket;		/* coverted to 802.3 frame */
+	int						Sequence;		/* sequence number of MPDU */
+	BOOLEAN					bAMSDU;
+};
+
+struct reordering_list
+{
+	struct reordering_mpdu *next;
+	int 	qlen;
+};
+
+struct reordering_mpdu_pool
+{
+	PVOID					mem;
+	NDIS_SPIN_LOCK			lock;
+	struct reordering_list 	freelist;
+};
+
+typedef enum _REC_BLOCKACK_STATUS
+{	
+    Recipient_NONE=0,
+	Recipient_USED,
+	Recipient_HandleRes,
+    Recipient_Accept
+} REC_BLOCKACK_STATUS, *PREC_BLOCKACK_STATUS;
+
+typedef enum _ORI_BLOCKACK_STATUS
+{
+    Originator_NONE=0,
+	Originator_USED,
+    Originator_WaitRes,
+    Originator_Done
+} ORI_BLOCKACK_STATUS, *PORI_BLOCKACK_STATUS;
+
+typedef struct _BA_ORI_ENTRY{
+	UCHAR   Wcid;
+	UCHAR   TID;
+	UCHAR   BAWinSize;
+	UCHAR   Token;
+// Sequence is to fill every outgoing QoS DATA frame's sequence field in 802.11 header.
+	USHORT	Sequence;
+	USHORT	TimeOutValue;
+	ORI_BLOCKACK_STATUS  ORI_BA_Status;
+	RALINK_TIMER_STRUCT ORIBATimer;
+	PVOID	pAdapter;
+} BA_ORI_ENTRY, *PBA_ORI_ENTRY;
+
+typedef struct _BA_REC_ENTRY {
+	UCHAR   Wcid;
+	UCHAR   TID;
+	UCHAR   BAWinSize;	// 7.3.1.14. each buffer is capable of holding a max AMSDU or MSDU.
+	//UCHAR	NumOfRxPkt;
+	//UCHAR    Curindidx; // the head in the RX reordering buffer
+	USHORT		LastIndSeq;
+//	USHORT		LastIndSeqAtTimer;
+	USHORT		TimeOutValue;
+	RALINK_TIMER_STRUCT RECBATimer;
+	ULONG		LastIndSeqAtTimer;
+	ULONG		nDropPacket;
+	ULONG		rcvSeq;
+	REC_BLOCKACK_STATUS  REC_BA_Status;
+//	UCHAR	RxBufIdxUsed;
+	// corresponding virtual address for RX reordering packet storage.
+	//RTMP_REORDERDMABUF MAP_RXBuf[MAX_RX_REORDERBUF]; 
+	NDIS_SPIN_LOCK          RxReRingLock;                 // Rx Ring spinlock
+//	struct _BA_REC_ENTRY *pNext;
+	PVOID	pAdapter;
+	struct reordering_list	list;
+} BA_REC_ENTRY, *PBA_REC_ENTRY;
+
+
+typedef struct {
+	ULONG		numAsRecipient;		// I am recipient of numAsRecipient clients. These client are in the BARecEntry[]
+	ULONG		numAsOriginator;	// I am originator of 	numAsOriginator clients. These clients are in the BAOriEntry[]
+	ULONG  		numDoneOriginator; 	// count Done Originator sessions
+	BA_ORI_ENTRY       BAOriEntry[MAX_LEN_OF_BA_ORI_TABLE];
+	BA_REC_ENTRY       BARecEntry[MAX_LEN_OF_BA_REC_TABLE];
+} BA_TABLE, *PBA_TABLE;
+
+//For QureyBATableOID use;
+typedef struct  GNU_PACKED _OID_BA_REC_ENTRY{
+	UCHAR   MACAddr[MAC_ADDR_LEN];
+	UCHAR   BaBitmap;   // if (BaBitmap&(1<<TID)), this session with{MACAddr, TID}exists, so read BufSize[TID] for BufferSize
+	UCHAR   rsv; 
+	UCHAR   BufSize[8];
+	REC_BLOCKACK_STATUS	REC_BA_Status[8];
+} OID_BA_REC_ENTRY, *POID_BA_REC_ENTRY;
+
+//For QureyBATableOID use;
+typedef struct  GNU_PACKED _OID_BA_ORI_ENTRY{
+	UCHAR   MACAddr[MAC_ADDR_LEN];
+	UCHAR   BaBitmap;  // if (BaBitmap&(1<<TID)), this session with{MACAddr, TID}exists, so read BufSize[TID] for BufferSize, read ORI_BA_Status[TID] for status
+	UCHAR   rsv; 
+	UCHAR   BufSize[8];
+	ORI_BLOCKACK_STATUS  ORI_BA_Status[8];
+} OID_BA_ORI_ENTRY, *POID_BA_ORI_ENTRY;
+
+typedef struct _QUERYBA_TABLE{
+	OID_BA_ORI_ENTRY       BAOriEntry[32];
+	OID_BA_REC_ENTRY       BARecEntry[32];
+	UCHAR   OriNum;// Number of below BAOriEntry
+	UCHAR   RecNum;// Number of below BARecEntry
+} QUERYBA_TABLE, *PQUERYBA_TABLE;
+
+typedef	union	_BACAP_STRUC	{
+#ifdef RT_BIG_ENDIAN
+	struct	{
+		UINT32     :4;
+		UINT32     b2040CoexistScanSup:1;		//As Sta, support do 2040 coexistence scan for AP. As Ap, support monitor trigger event to check if can use BW 40MHz.
+		UINT32     bHtAdhoc:1;			// adhoc can use ht rate.
+		UINT32     MMPSmode:2;	// MIMO power save more, 0:static, 1:dynamic, 2:rsv, 3:mimo enable
+		UINT32     AmsduSize:1;	// 0:3839, 1:7935 bytes. UINT  MSDUSizeToBytes[]	= { 3839, 7935};
+		UINT32     AmsduEnable:1;	//Enable AMSDU transmisstion
+		UINT32		MpduDensity:3;	
+		UINT32		Policy:2;	// 0: DELAY_BA 1:IMMED_BA  (//BA Policy subfiled value in ADDBA frame)   2:BA-not use
+		UINT32		AutoBA:1;	// automatically BA  	
+		UINT32		TxBAWinLimit:8;
+		UINT32		RxBAWinLimit:8;
+	}	field;
+#else
+	struct	{
+		UINT32		RxBAWinLimit:8;
+		UINT32		TxBAWinLimit:8;
+		UINT32		AutoBA:1;	// automatically BA  	
+		UINT32		Policy:2;	// 0: DELAY_BA 1:IMMED_BA  (//BA Policy subfiled value in ADDBA frame)   2:BA-not use
+		UINT32		MpduDensity:3;	
+		UINT32       	AmsduEnable:1;	//Enable AMSDU transmisstion
+		UINT32       	AmsduSize:1;	// 0:3839, 1:7935 bytes. UINT  MSDUSizeToBytes[]	= { 3839, 7935};
+		UINT32       	MMPSmode:2;	// MIMO power save more, 0:static, 1:dynamic, 2:rsv, 3:mimo enable
+		UINT32       	bHtAdhoc:1;			// adhoc can use ht rate.
+		UINT32       	b2040CoexistScanSup:1;		//As Sta, support do 2040 coexistence scan for AP. As Ap, support monitor trigger event to check if can use BW 40MHz.
+		UINT32       	:4;	
+	}	field;
+#endif
+	UINT32			word;
+} BACAP_STRUC, *PBACAP_STRUC;
+
+
+typedef struct {
+	BOOLEAN		IsRecipient;
+	UCHAR   MACAddr[MAC_ADDR_LEN];
+	UCHAR   TID;
+	UCHAR   nMSDU;
+	USHORT   TimeOut;
+	BOOLEAN bAllTid;  // If True, delete all TID for BA sessions with this MACaddr.
+} OID_ADD_BA_ENTRY, *POID_ADD_BA_ENTRY;
+
+
+#ifdef DOT11N_DRAFT3
+typedef enum _BSS2040COEXIST_FLAG{
+	BSS_2040_COEXIST_DISABLE = 0,
+	BSS_2040_COEXIST_TIMER_FIRED  = 1,
+	BSS_2040_COEXIST_INFO_SYNC = 2,
+	BSS_2040_COEXIST_INFO_NOTIFY = 4,
+}BSS2040COEXIST_FLAG;
+
+typedef struct _BssCoexChRange_{
+	UCHAR primaryCh;
+	UCHAR secondaryCh;
+	UCHAR effectChStart;
+	UCHAR effectChEnd;
+}BSS_COEX_CH_RANGE;
+#endif // DOT11N_DRAFT3 //
+
+#define IS_HT_STA(_pMacEntry)	\
+	(_pMacEntry->MaxHTPhyMode.field.MODE >= MODE_HTMIX)
+
+#define IS_HT_RATE(_pMacEntry)	\
+	(_pMacEntry->HTPhyMode.field.MODE >= MODE_HTMIX)
+
+#define PEER_IS_HT_RATE(_pMacEntry)	\
+	(_pMacEntry->HTPhyMode.field.MODE >= MODE_HTMIX)
+
+#endif // DOT11_N_SUPPORT //
+
+
+//This structure is for all 802.11n card InterOptibilityTest action. Reset all Num every n second.  (Details see MLMEPeriodic)
+typedef	struct	_IOT_STRUC	{
+	UCHAR			Threshold[2];
+	UCHAR			ReorderTimeOutNum[MAX_LEN_OF_BA_REC_TABLE];	// compare with threshold[0]
+	UCHAR			RefreshNum[MAX_LEN_OF_BA_REC_TABLE];	// compare with threshold[1]
+	ULONG			OneSecInWindowCount;
+	ULONG			OneSecFrameDuplicateCount;
+	ULONG			OneSecOutWindowCount;
+	UCHAR			DelOriAct;
+	UCHAR			DelRecAct;
+	UCHAR			RTSShortProt;
+	UCHAR			RTSLongProt;
+	BOOLEAN			bRTSLongProtOn;
+#ifdef CONFIG_STA_SUPPORT 
+	BOOLEAN			bLastAtheros;
+    BOOLEAN			bCurrentAtheros;
+    BOOLEAN         bNowAtherosBurstOn;
+	BOOLEAN			bNextDisableRxBA;
+    BOOLEAN			bToggle;
+#endif // CONFIG_STA_SUPPORT //
+} IOT_STRUC, *PIOT_STRUC;
+
+
+// This is the registry setting for 802.11n transmit setting.  Used in advanced page.
+typedef union _REG_TRANSMIT_SETTING {
+#ifdef RT_BIG_ENDIAN
+ struct {
+         UINT32  rsv:13;
+		 UINT32  EXTCHA:2;
+		 UINT32  HTMODE:1;
+		 UINT32  TRANSNO:2; 
+		 UINT32  STBC:1; //SPACE 
+		 UINT32  ShortGI:1;
+		 UINT32  BW:1; //channel bandwidth 20MHz or 40 MHz
+		 UINT32  TxBF:1; // 3*3
+		 UINT32  rsv0:10;
+		 //UINT32  MCS:7;                 // MCS
+         //UINT32  PhyMode:4;             
+    } field;
+#else
+ struct {
+         //UINT32  PhyMode:4;                
+         //UINT32  MCS:7;                 // MCS
+		 UINT32  rsv0:10;
+		 UINT32  TxBF:1;
+         UINT32  BW:1; //channel bandwidth 20MHz or 40 MHz
+         UINT32  ShortGI:1;
+         UINT32  STBC:1; //SPACE 
+         UINT32  TRANSNO:2; 
+         UINT32  HTMODE:1;
+         UINT32  EXTCHA:2;
+         UINT32  rsv:13;
+    } field;
+#endif
+ UINT32   word;
+} REG_TRANSMIT_SETTING, *PREG_TRANSMIT_SETTING;
+
+
+typedef union  _DESIRED_TRANSMIT_SETTING {
+#ifdef RT_BIG_ENDIAN
+	struct	{
+			USHORT		rsv:3;	 
+			USHORT		FixedTxMode:2;			// If MCS isn't AUTO, fix rate in CCK, OFDM or HT mode.
+			USHORT		PhyMode:4;	
+			USHORT   	MCS:7;                 // MCS
+	}	field;
+#else
+	struct	{
+			USHORT   	MCS:7;                 	// MCS
+			USHORT		PhyMode:4;				
+			USHORT	 	FixedTxMode:2;			// If MCS isn't AUTO, fix rate in CCK, OFDM or HT mode.
+			USHORT		rsv:3;	 	 
+	}	field;
+#endif
+	USHORT		word;
+ } DESIRED_TRANSMIT_SETTING, *PDESIRED_TRANSMIT_SETTING;
+
+
+
+
+/***************************************************************************
+  *	Multiple SSID related data structures
+  **************************************************************************/
+#define WLAN_MAX_NUM_OF_TIM			((MAX_LEN_OF_MAC_TABLE >> 3) + 1) /* /8 + 1 */
+#define WLAN_CT_TIM_BCMC_OFFSET		0 /* unit: 32B */
+
+/* clear bcmc TIM bit */
+#define WLAN_MR_TIM_BCMC_CLEAR(apidx) \
+	pAd->ApCfg.MBSSID[apidx].TimBitmaps[WLAN_CT_TIM_BCMC_OFFSET] &= ~BIT8[0];
+
+/* set bcmc TIM bit */
+#define WLAN_MR_TIM_BCMC_SET(apidx) \
+	pAd->ApCfg.MBSSID[apidx].TimBitmaps[WLAN_CT_TIM_BCMC_OFFSET] |= BIT8[0];
+
+/* clear a station PS TIM bit */
+#define WLAN_MR_TIM_BIT_CLEAR(ad_p, apidx, wcid) \
+	{	UCHAR tim_offset = wcid >> 3; \
+		UCHAR bit_offset = wcid & 0x7; \
+		ad_p->ApCfg.MBSSID[apidx].TimBitmaps[tim_offset] &= (~BIT8[bit_offset]); }
+
+/* set a station PS TIM bit */
+#define WLAN_MR_TIM_BIT_SET(ad_p, apidx, wcid) \
+	{	UCHAR tim_offset = wcid >> 3; \
+		UCHAR bit_offset = wcid & 0x7; \
+		ad_p->ApCfg.MBSSID[apidx].TimBitmaps[tim_offset] |= BIT8[bit_offset]; }
+
+
+// configuration common to OPMODE_AP as well as OPMODE_STA
+typedef struct _COMMON_CONFIG {
+
+	BOOLEAN		bCountryFlag;
+	UCHAR		CountryCode[3];
+#ifdef EXT_BUILD_CHANNEL_LIST
+	UCHAR		Geography;
+#endif // EXT_BUILD_CHANNEL_LIST //
+	UCHAR       CountryRegion;      // Enum of country region, 0:FCC, 1:IC, 2:ETSI, 3:SPAIN, 4:France, 5:MKK, 6:MKK1, 7:Israel
+	UCHAR       CountryRegionForABand;	// Enum of country region for A band
+	UCHAR       PhyMode;            // PHY_11A, PHY_11B, PHY_11BG_MIXED, PHY_ABG_MIXED
+	UCHAR       DesiredPhyMode;            // PHY_11A, PHY_11B, PHY_11BG_MIXED, PHY_ABG_MIXED	
+	USHORT      Dsifs;              // in units of usec
+	ULONG       PacketFilter;       // Packet filter for receiving
+	UINT8		RegulatoryClass[MAX_NUM_OF_REGULATORY_CLASS];
+
+	CHAR        Ssid[MAX_LEN_OF_SSID]; // NOT NULL-terminated
+	UCHAR       SsidLen;               // the actual ssid length in used
+	UCHAR       LastSsidLen;               // the actual ssid length in used
+	CHAR        LastSsid[MAX_LEN_OF_SSID]; // NOT NULL-terminated
+	UCHAR		LastBssid[MAC_ADDR_LEN];
+
+	UCHAR       Bssid[MAC_ADDR_LEN];
+	USHORT      BeaconPeriod;
+	UCHAR       Channel;            
+	UCHAR       CentralChannel;    	// Central Channel when using 40MHz is indicating. not real channel.        
+
+	UCHAR       SupRate[MAX_LEN_OF_SUPPORTED_RATES];
+	UCHAR       SupRateLen;
+	UCHAR       ExtRate[MAX_LEN_OF_SUPPORTED_RATES];
+	UCHAR       ExtRateLen;
+	UCHAR       DesireRate[MAX_LEN_OF_SUPPORTED_RATES];      // OID_802_11_DESIRED_RATES
+	UCHAR       MaxDesiredRate;
+	UCHAR       ExpectedACKRate[MAX_LEN_OF_SUPPORTED_RATES];
+
+	ULONG       BasicRateBitmap;        // backup basic ratebitmap
+
+	BOOLEAN		bAPSDCapable;
+	BOOLEAN		bInServicePeriod;
+	BOOLEAN		bAPSDAC_BE;
+	BOOLEAN		bAPSDAC_BK;
+	BOOLEAN		bAPSDAC_VI;
+	BOOLEAN		bAPSDAC_VO;
+
+	/* because TSPEC can modify the APSD flag, we need to keep the APSD flag
+		requested in association stage from the station;
+		we need to recover the APSD flag after the TSPEC is deleted. */
+	BOOLEAN		bACMAPSDBackup[4]; /* for delivery-enabled & trigger-enabled both */
+	BOOLEAN		bACMAPSDTr[4]; /* no use */
+
+	BOOLEAN		bNeedSendTriggerFrame;
+	BOOLEAN		bAPSDForcePowerSave;	// Force power save mode, should only use in APSD-STAUT
+	ULONG		TriggerTimerCount;
+	UCHAR		MaxSPLength;
+	UCHAR		BBPCurrentBW;	// BW_10, 	BW_20, BW_40
+	// move to MULTISSID_STRUCT for MBSS 
+	//HTTRANSMIT_SETTING	HTPhyMode, MaxHTPhyMode, MinHTPhyMode;// For transmit phy setting in TXWI.	
+	REG_TRANSMIT_SETTING        RegTransmitSetting; //registry transmit setting. this is for reading registry setting only. not useful.
+	//UCHAR       FixedTxMode;              // Fixed Tx Mode (CCK, OFDM), for HT fixed tx mode (GF, MIX) , refer to RegTransmitSetting.field.HTMode
+	UCHAR       TxRate;                 // Same value to fill in TXD. TxRate is 6-bit 
+	UCHAR       MaxTxRate;              // RATE_1, RATE_2, RATE_5_5, RATE_11
+	UCHAR       TxRateIndex;            // Tx rate index in RateSwitchTable
+	UCHAR       TxRateTableSize;        // Valid Tx rate table size in RateSwitchTable
+	//BOOLEAN		bAutoTxRateSwitch;
+	UCHAR       MinTxRate;              // RATE_1, RATE_2, RATE_5_5, RATE_11
+	UCHAR       RtsRate;                // RATE_xxx
+	HTTRANSMIT_SETTING	MlmeTransmit;   // MGMT frame PHY rate setting when operatin at Ht rate.
+	UCHAR       MlmeRate;               // RATE_xxx, used to send MLME frames
+	UCHAR       BasicMlmeRate;          // Default Rate for sending MLME frames
+
+	USHORT      RtsThreshold;           // in unit of BYTE
+	USHORT      FragmentThreshold;      // in unit of BYTE
+
+	UCHAR       TxPower;                // in unit of mW
+	ULONG       TxPowerPercentage;      // 0~100 %
+	ULONG       TxPowerDefault;         // keep for TxPowerPercentage
+	UINT8		PwrConstraint;
+
+#ifdef DOT11_N_SUPPORT
+	BACAP_STRUC        BACapability; //   NO USE = 0XFF  ;  IMMED_BA =1  ;  DELAY_BA=0
+	BACAP_STRUC        REGBACapability; //   NO USE = 0XFF  ;  IMMED_BA =1  ;  DELAY_BA=0
+#endif // DOT11_N_SUPPORT //
+	IOT_STRUC		IOTestParm;	// 802.11n InterOpbility Test Parameter;
+	ULONG       TxPreamble;             // Rt802_11PreambleLong, Rt802_11PreambleShort, Rt802_11PreambleAuto
+	BOOLEAN     bUseZeroToDisableFragment;     // Microsoft use 0 as disable 
+	ULONG       UseBGProtection;        // 0: auto, 1: always use, 2: always not use
+	BOOLEAN     bUseShortSlotTime;      // 0: disable, 1 - use short slot (9us)
+	BOOLEAN     bEnableTxBurst;         // 1: enble TX PACKET BURST (when BA is established or AP is not a legacy WMM AP), 0: disable TX PACKET BURST
+	BOOLEAN     bAggregationCapable;      // 1: enable TX aggregation when the peer supports it
+	BOOLEAN     bPiggyBackCapable;		// 1: enable TX piggy-back according MAC's version
+	BOOLEAN     bIEEE80211H;			// 1: enable IEEE802.11h spec.
+	ULONG		DisableOLBCDetect;		// 0: enable OLBC detect; 1 disable OLBC detect 
+
+#ifdef DOT11_N_SUPPORT
+	BOOLEAN				bRdg;
+#endif // DOT11_N_SUPPORT //
+	BOOLEAN             bWmmCapable;        // 0:disable WMM, 1:enable WMM
+	QOS_CAPABILITY_PARM APQosCapability;    // QOS capability of the current associated AP
+	EDCA_PARM           APEdcaParm;         // EDCA parameters of the current associated AP
+	QBSS_LOAD_PARM      APQbssLoad;         // QBSS load of the current associated AP
+	UCHAR               AckPolicy[4];       // ACK policy of the specified AC. see ACK_xxx
+#ifdef CONFIG_STA_SUPPORT
+	BOOLEAN				bDLSCapable;		// 0:disable DLS, 1:enable DLS
+#endif // CONFIG_STA_SUPPORT //
+	// a bitmap of BOOLEAN flags. each bit represent an operation status of a particular 
+	// BOOLEAN control, either ON or OFF. These flags should always be accessed via
+	// OPSTATUS_TEST_FLAG(), OPSTATUS_SET_FLAG(), OP_STATUS_CLEAR_FLAG() macros.
+	// see fOP_STATUS_xxx in RTMP_DEF.C for detail bit definition
+	ULONG               OpStatusFlags;
+
+	BOOLEAN				NdisRadioStateOff; //For HCT 12.0, set this flag to TRUE instead of called MlmeRadioOff.       
+	ABGBAND_STATE		BandState;		// For setting BBP used on B/G or A mode.
+
+	// IEEE802.11H--DFS.
+	RADAR_DETECT_STRUCT	RadarDetect;
+
+#ifdef CARRIER_DETECTION_SUPPORT
+	CARRIER_DETECTION_STRUCT		CarrierDetect;
+#endif // CARRIER_DETECTION_SUPPORT //
+
+#ifdef DOT11_N_SUPPORT
+	// HT
+	UCHAR			BASize;		// USer desired BAWindowSize. Should not exceed our max capability
+	//RT_HT_CAPABILITY	SupportedHtPhy;
+	RT_HT_CAPABILITY	DesiredHtPhy;
+	HT_CAPABILITY_IE		HtCapability;	
+	ADD_HT_INFO_IE		AddHTInfo;	// Useful as AP.
+	//This IE is used with channel switch announcement element when changing to a new 40MHz.
+	//This IE is included in channel switch ammouncement frames 7.4.1.5, beacons, probe Rsp.
+	NEW_EXT_CHAN_IE	NewExtChanOffset;	//7.3.2.20A, 1 if extension channel is above the control channel, 3 if below, 0 if not present
+
+	EXT_CAP_INFO_ELEMENT	ExtCapIE;	// this is the extened capibility IE appreed in MGMT frames. Doesn't need to update once set in Init.
+	
+#ifdef DOT11N_DRAFT3
+	BOOLEAN					bBssCoexEnable;
+	UCHAR					Bss2040CoexistFlag;		// bit 0: bBssCoexistTimerRunning, bit 1: NeedSyncAddHtInfo.
+	RALINK_TIMER_STRUCT	Bss2040CoexistTimer;
+
+	//This IE is used for 20/40 BSS Coexistence.
+	BSS_2040_COEXIST_IE		BSS2040CoexistInfo;
+	// ====== 11n D3.0 =======================>
+	USHORT					Dot11OBssScanPassiveDwell;				// Unit : TU. 5~1000
+	USHORT					Dot11OBssScanActiveDwell;				// Unit : TU. 10~1000
+	USHORT					Dot11BssWidthTriggerScanInt;			// Unit : Second
+	USHORT					Dot11OBssScanPassiveTotalPerChannel;	// Unit : TU. 200~10000
+	USHORT					Dot11OBssScanActiveTotalPerChannel;	// Unit : TU. 20~10000
+	USHORT					Dot11BssWidthChanTranDelayFactor;
+	USHORT					Dot11OBssScanActivityThre;				// Unit : percentage
+	
+	ULONG					Dot11BssWidthChanTranDelay;			// multiple of (Dot11BssWidthTriggerScanInt * Dot11BssWidthChanTranDelayFactor)
+	ULONG					CountDownCtr;	// CountDown Counter from (Dot11BssWidthTriggerScanInt * Dot11BssWidthChanTranDelayFactor)
+	
+	NDIS_SPIN_LOCK			TriggerEventTabLock;
+	BSS_2040_COEXIST_IE		LastBSSCoexist2040;
+	BSS_2040_COEXIST_IE		BSSCoexist2040;
+	TRIGGER_EVENT_TAB		TriggerEventTab;
+	UCHAR					ChannelListIdx;
+	// <====== 11n D3.0 =======================
+	BOOLEAN					bOverlapScanning;
+	BOOLEAN					bBssCoexNotify;
+#endif // DOT11N_DRAFT3 //
+
+    BOOLEAN                 bHTProtect;
+    BOOLEAN                 bMIMOPSEnable;
+    BOOLEAN					bBADecline;
+	BOOLEAN					bDisableReordering;
+	BOOLEAN					bForty_Mhz_Intolerant;
+	BOOLEAN					bExtChannelSwitchAnnouncement;
+	BOOLEAN					bRcvBSSWidthTriggerEvents;
+	ULONG					LastRcvBSSWidthTriggerEventsTime;
+
+	UCHAR					TxBASize;	
+#endif // DOT11_N_SUPPORT //
+
+#ifdef SYSTEM_LOG_SUPPORT
+	// Enable wireless event
+	BOOLEAN				bWirelessEvent;
+#endif // SYSTEM_LOG_SUPPORT //
+
+	BOOLEAN				bWiFiTest;				// Enable this parameter for WiFi test		
+
+	// Tx & Rx Stream number selection
+	UCHAR				TxStream;
+	UCHAR				RxStream;
+
+	// transmit phy mode, trasmit rate for Multicast.
+#ifdef MCAST_RATE_SPECIFIC
+	UCHAR				McastTransmitMcs;
+	UCHAR				McastTransmitPhyMode;
+#endif // MCAST_RATE_SPECIFIC //
+
+	BOOLEAN     		bHardwareRadio;     // Hardware controlled Radio enabled
+
+
+
+	NDIS_SPIN_LOCK			MeasureReqTabLock;
+	PMEASURE_REQ_TAB		pMeasureReqTab;
+
+	NDIS_SPIN_LOCK			TpcReqTabLock;
+	PTPC_REQ_TAB			pTpcReqTab;
+
+	// transmit phy mode, trasmit rate for Multicast.
+#ifdef MCAST_RATE_SPECIFIC
+	HTTRANSMIT_SETTING		MCastPhyMode;
+#endif // MCAST_RATE_SPECIFIC //
+
+#ifdef SINGLE_SKU
+	UINT16					DefineMaxTxPwr;
+	BOOLEAN bSKUMode;
+	UINT16	AntGain;
+	UINT16	BandedgeDelta;
+#endif // SINGLE_SKU //
+
+
+
+#if defined(RT305x)||defined(RT30xx)
+	// request by Gary, for High Power issue
+	UCHAR	HighPowerPatchDisabled;
+#endif
+
+	BOOLEAN		HT_DisallowTKIP;		/* Restrict the encryption type in 11n HT mode */
+
+	BOOLEAN		HT_Disable; /* 1: disable HT function; 0: enable HT function */
+} COMMON_CONFIG, *PCOMMON_CONFIG;
+
+
+#ifdef CONFIG_STA_SUPPORT 
+/* Modified by Wu Xi-Kun 4/21/2006 */
+// STA configuration and status
+typedef struct _STA_ADMIN_CONFIG {
+	// GROUP 1 -
+	//   User configuration loaded from Registry, E2PROM or OID_xxx. These settings describe
+	//   the user intended configuration, but not necessary fully equal to the final 
+	//   settings in ACTIVE BSS after negotiation/compromize with the BSS holder (either 
+	//   AP or IBSS holder).
+	//   Once initialized, user configuration can only be changed via OID_xxx
+	UCHAR       BssType;              // BSS_INFRA or BSS_ADHOC
+	USHORT      AtimWin;          // used when starting a new IBSS
+
+	// GROUP 2 -
+	//   User configuration loaded from Registry, E2PROM or OID_xxx. These settings describe
+	//   the user intended configuration, and should be always applied to the final 
+	//   settings in ACTIVE BSS without compromising with the BSS holder.
+	//   Once initialized, user configuration can only be changed via OID_xxx
+	UCHAR       RssiTrigger;
+	UCHAR       RssiTriggerMode;      // RSSI_TRIGGERED_UPON_BELOW_THRESHOLD or RSSI_TRIGGERED_UPON_EXCCEED_THRESHOLD
+	USHORT      DefaultListenCount;   // default listen count;
+	ULONG       WindowsPowerMode;           // Power mode for AC power
+	ULONG       WindowsBatteryPowerMode;    // Power mode for battery if exists
+	BOOLEAN     bWindowsACCAMEnable;        // Enable CAM power mode when AC on
+	BOOLEAN     bAutoReconnect;         // Set to TRUE when setting OID_802_11_SSID with no matching BSSID
+	ULONG       WindowsPowerProfile;    // Windows power profile, for NDIS5.1 PnP
+
+	// MIB:ieee802dot11.dot11smt(1).dot11StationConfigTable(1)
+	USHORT      Psm;                  // power management mode   (PWR_ACTIVE|PWR_SAVE)
+	USHORT      DisassocReason;
+	UCHAR       DisassocSta[MAC_ADDR_LEN];
+	USHORT      DeauthReason;
+	UCHAR       DeauthSta[MAC_ADDR_LEN];
+	USHORT      AuthFailReason;
+	UCHAR       AuthFailSta[MAC_ADDR_LEN];
+
+	NDIS_802_11_PRIVACY_FILTER          PrivacyFilter;  // PrivacyFilter enum for 802.1X
+	NDIS_802_11_AUTHENTICATION_MODE     AuthMode;       // This should match to whatever microsoft defined
+	NDIS_802_11_WEP_STATUS              WepStatus;
+	NDIS_802_11_WEP_STATUS				OrigWepStatus;	// Original wep status set from OID
+
+	// Add to support different cipher suite for WPA2/WPA mode
+	NDIS_802_11_ENCRYPTION_STATUS		GroupCipher;		// Multicast cipher suite
+	NDIS_802_11_ENCRYPTION_STATUS		PairCipher;			// Unicast cipher suite
+	BOOLEAN								bMixCipher;			// Indicate current Pair & Group use different cipher suites
+	USHORT								RsnCapability;
+	
+	NDIS_802_11_WEP_STATUS              GroupKeyWepStatus;
+
+	UCHAR		WpaPassPhrase[64];		// WPA PSK pass phrase
+	UINT		WpaPassPhraseLen;		// the length of WPA PSK pass phrase
+	UCHAR		PMK[LEN_PMK];                // WPA PSK mode PMK
+	UCHAR       PTK[LEN_PTK];                // WPA PSK mode PTK
+	UCHAR		GMK[LEN_GMK];           // WPA PSK mode GMK	
+	UCHAR		GTK[MAX_LEN_GTK];				// GTK from authenticator
+	UCHAR		GNonce[32];			    // GNonce for WPA2PSK from authenticator
+	CIPHER_KEY  TxGTK;		
+	BSSID_INFO	SavedPMK[PMKID_NO];
+	UINT		SavedPMKNum;			// Saved PMKID number
+
+	UCHAR		DefaultKeyId;			
+
+
+	// WPA 802.1x port control, WPA_802_1X_PORT_SECURED, WPA_802_1X_PORT_NOT_SECURED
+	UCHAR       PortSecured;
+
+	// For WPA countermeasures
+	ULONG       LastMicErrorTime;   // record last MIC error time
+	ULONG       MicErrCnt;          // Should be 0, 1, 2, then reset to zero (after disassoiciation).
+	BOOLEAN     bBlockAssoc;        // Block associate attempt for 60 seconds after counter measure occurred.
+	// For WPA-PSK supplicant state
+	UINT8   	WpaState;           // Default is SS_NOTUSE and handled by microsoft 802.1x
+	UCHAR       ReplayCounter[8];
+	UCHAR       ANonce[32];         // ANonce for WPA-PSK from aurhenticator
+	UCHAR       SNonce[32];         // SNonce for WPA-PSK
+
+	UCHAR       LastSNR0;             // last received BEACON's SNR
+	UCHAR       LastSNR1;            // last received BEACON's SNR for 2nd  antenna
+	RSSI_SAMPLE RssiSample;
+	ULONG       NumOfAvgRssiSample;
+
+	ULONG       LastBeaconRxTime;     // OS's timestamp of the last BEACON RX time
+	ULONG       Last11bBeaconRxTime;  // OS's timestamp of the last 11B BEACON RX time
+	ULONG		Last11gBeaconRxTime;	// OS's timestamp of the last 11G BEACON RX time
+	ULONG		Last20NBeaconRxTime;	// OS's timestamp of the last 20MHz N BEACON RX time
+	
+	ULONG       LastScanTime;       // Record last scan time for issue BSSID_SCAN_LIST
+	ULONG       ScanCnt;            // Scan counts since most recent SSID, BSSID, SCAN OID request
+	BOOLEAN	    bNotFirstScan;	// Sam add for ADHOC flag to do first scan when do initialization
+	BOOLEAN     bSwRadio;           // Software controlled Radio On/Off, TRUE: On
+	BOOLEAN     bHwRadio;           // Hardware controlled Radio On/Off, TRUE: On
+	BOOLEAN     bRadio;             // Radio state, And of Sw & Hw radio state
+	BOOLEAN     bHardwareRadio;     // Hardware controlled Radio enabled
+	BOOLEAN     bShowHiddenSSID;    // Show all known SSID in SSID list get operation
+
+	// New for WPA, windows want us to to keep association information and
+	// Fixed IEs from last association response
+	NDIS_802_11_ASSOCIATION_INFORMATION     AssocInfo;
+	USHORT       ReqVarIELen;                // Length of next VIE include EID & Length
+	UCHAR       ReqVarIEs[MAX_VIE_LEN];		// The content saved here should be little-endian format.
+	USHORT       ResVarIELen;                // Length of next VIE include EID & Length
+	UCHAR       ResVarIEs[MAX_VIE_LEN];
+
+	UCHAR       RSNIE_Len;
+	UCHAR       RSN_IE[MAX_LEN_OF_RSNIE];	// The content saved here should be little-endian format.
+
+	ULONG               CLBusyBytes;                // Save the total bytes received durning channel load scan time
+	USHORT              RPIDensity[8];              // Array for RPI density collection
+
+	UCHAR               RMReqCnt;                   // Number of measurement request saved.
+	UCHAR               CurrentRMReqIdx;            // Number of measurement request saved.
+	BOOLEAN             ParallelReq;                // Parallel measurement, only one request performed,
+													// It must be the same channel with maximum duration
+	USHORT              ParallelDuration;           // Maximum duration for parallel measurement
+	UCHAR               ParallelChannel;            // Only one channel with parallel measurement
+	USHORT              IAPPToken;                  // IAPP dialog token
+	// Hack for channel load and noise histogram parameters
+	UCHAR               NHFactor;                   // Parameter for Noise histogram
+	UCHAR               CLFactor;                   // Parameter for channel load
+
+	RALINK_TIMER_STRUCT	StaQuickResponeForRateUpTimer;
+	BOOLEAN				StaQuickResponeForRateUpTimerRunning;
+
+	UCHAR           	DtimCount;      // 0.. DtimPeriod-1
+	UCHAR           	DtimPeriod;     // default = 3
+
+#ifdef QOS_DLS_SUPPORT
+	RT_802_11_DLS		DLSEntry[MAX_NUM_OF_DLS_ENTRY];
+	UCHAR				DlsReplayCounter[8];
+#endif // QOS_DLS_SUPPORT //
+
+	BOOLEAN				bTDLSCapable;		// 0:disable TDLS, 1:enable TDLS
+	////////////////////////////////////////////////////////////////////////////////////////
+	// This is only for WHQL test.
+	BOOLEAN				WhqlTest;
+	////////////////////////////////////////////////////////////////////////////////////////
+	
+    RALINK_TIMER_STRUCT WpaDisassocAndBlockAssocTimer;
+    // Fast Roaming
+	BOOLEAN		        bAutoRoaming;       // 0:disable auto roaming by RSSI, 1:enable auto roaming by RSSI
+	CHAR		        dBmToRoam;          // the condition to roam when receiving Rssi less than this value. It's negative value.
+	
+#ifdef WPA_SUPPLICANT_SUPPORT
+    BOOLEAN             IEEE8021X;
+    BOOLEAN             IEEE8021x_required_keys;
+    CIPHER_KEY	        DesireSharedKey[4];	// Record user desired WEP keys	
+    UCHAR               DesireSharedKeyId;
+    
+    // 0x00: driver ignores wpa_supplicant
+    // 0x01: wpa_supplicant initiates scanning and AP selection
+    // 0x02: driver takes care of scanning, AP selection, and IEEE 802.11 association parameters
+    // 0x80: wpa_supplicant trigger driver to do WPS
+    UCHAR               WpaSupplicantUP;
+	UCHAR				WpaSupplicantScanCount;
+	BOOLEAN				bRSN_IE_FromWpaSupplicant;
+	BOOLEAN				bLostAp;
+	UCHAR				*pWpsProbeReqIe;
+	UINT				WpsProbeReqIeLen;
+	UCHAR				*pWpaAssocIe;
+	UINT				WpaAssocIeLen;
+#endif // WPA_SUPPLICANT_SUPPORT //
+
+    CHAR                dev_name[16];
+    USHORT              OriDevType;
+
+    BOOLEAN             bTGnWifiTest;
+	BOOLEAN			    bScanReqIsFromWebUI;
+
+	HTTRANSMIT_SETTING				HTPhyMode, MaxHTPhyMode, MinHTPhyMode;// For transmit phy setting in TXWI.	
+	DESIRED_TRANSMIT_SETTING       	DesiredTransmitSetting;
+	RT_HT_PHY_INFO					DesiredHtPhyInfo;
+	BOOLEAN							bAutoTxRateSwitch;
+
+#ifdef RTMP_MAC_PCI
+    UCHAR       BBPR3;
+	// PS Control has 2 meanings for advanced power save function.
+	// 1. EnablePSinIdle : When no connection, always radio off except need to do site survey.
+	// 2. EnableNewPS  : will save more current in sleep or radio off mode. 
+	PS_CONTROL				PSControl;
+#endif // RTMP_MAC_PCI //
+
+#ifdef EXT_BUILD_CHANNEL_LIST
+	UCHAR				IEEE80211dClientMode;
+	UCHAR				StaOriCountryCode[3];
+	UCHAR				StaOriGeography;
+#endif // EXT_BUILD_CHANNEL_LIST //
+
+
+
+
+
+	BOOLEAN				bAutoConnectByBssid;
+	ULONG				BeaconLostTime;	// seconds
+	BOOLEAN     		bForceTxBurst;          // 1: force enble TX PACKET BURST, 0: disable
+#ifdef XLINK_SUPPORT
+	BOOLEAN				PSPXlink;  // 0: Disable. 1: Enable
+#endif // XLINK_SUPPORT //
+	BOOLEAN				bAutoConnectIfNoSSID;
+#ifdef DOT11_N_SUPPORT
+#ifdef DOT11N_DRAFT3
+	UCHAR				RegClass; //IE_SUPP_REG_CLASS: 2009 PF#3: For 20/40 Intolerant Channel Report
+#endif // DOT11N_DRAFT3 //
+	BOOLEAN				bAdhocN;
+#endif // DOT11_N_SUPPORT //
+} STA_ADMIN_CONFIG, *PSTA_ADMIN_CONFIG;
+
+// This data structure keep the current active BSS/IBSS's configuration that this STA
+// had agreed upon joining the network. Which means these parameters are usually decided
+// by the BSS/IBSS creator instead of user configuration. Data in this data structurre 
+// is valid only when either ADHOC_ON(pAd) or INFRA_ON(pAd) is TRUE.
+// Normally, after SCAN or failed roaming attempts, we need to recover back to
+// the current active settings.
+typedef struct _STA_ACTIVE_CONFIG {
+	USHORT      Aid;
+	USHORT      AtimWin;                // in kusec; IBSS parameter set element
+	USHORT      CapabilityInfo;
+	USHORT      CfpMaxDuration;
+	USHORT      CfpPeriod;
+
+	// Copy supported rate from desired AP's beacon. We are trying to match
+	// AP's supported and extended rate settings.
+	UCHAR       SupRate[MAX_LEN_OF_SUPPORTED_RATES];
+	UCHAR       ExtRate[MAX_LEN_OF_SUPPORTED_RATES];
+	UCHAR       SupRateLen;
+	UCHAR       ExtRateLen;
+	// Copy supported ht from desired AP's beacon. We are trying to match
+	RT_HT_PHY_INFO		SupportedPhyInfo;
+	RT_HT_CAPABILITY	SupportedHtPhy;
+} STA_ACTIVE_CONFIG, *PSTA_ACTIVE_CONFIG;
+
+
+
+#endif // CONFIG_STA_SUPPORT //
+
+
+
+typedef struct _FOUR_WAY_HANDSHAKE_PROFILE {
+    UINT8           Role;       // Authenticator or Supplicant
+    UINT8    		WpaState;
+    UCHAR			RxMsgType;  //Now receive message type
+    UCHAR			TxMsgType;  //Will transmit message type
+    PUCHAR          pBssid;    
+    PUCHAR          AA;         //Authenticator address
+    PUCHAR          SPA;        //Supplicant address
+	UCHAR           ANonce[LEN_KEY_DESC_NONCE];
+	UCHAR           SNonce[LEN_KEY_DESC_NONCE];
+	UCHAR           GNonce[LEN_KEY_DESC_NONCE];
+    UCHAR           ReplayCounter[LEN_KEY_DESC_REPLAY];
+	PUCHAR          pPMK;       // WPA PSK mode PMK
+	UCHAR           PTK[80];    // Don't modify the size
+	PUCHAR          pGTK;       // WPA PSK mode PMK
+	UCHAR           DefaultKeyId;	
+	UCHAR 			TxTsc[6];
+	UCHAR           RSNIELen;
+	PUCHAR          pRSN_IE;    // The content saved here should be little-endian format.
+	UCHAR			GroupCipher;
+    RALINK_TIMER_STRUCT     MsgRetryTimer;
+    UCHAR                   MsgRetryCounter;
+    ULONG                   MsgRetryTimeInterval;
+} FOUR_WAY_HANDSHAKE_PROFILE, *PFOUR_WAY_HANDSHAKE_PROFILE;
+
+typedef struct _MAC_TABLE_ENTRY {
+	/*
+		0:Invalid,
+		Bit 0: AsCli, Bit 1: AsWds, Bit 2: AsAPCLI,
+		Bit 3: AsMesh, Bit 4: AsDls, Bit 5: AsTDls
+	*/
+	UINT32		EntryType;
+	BOOLEAN		isCached;
+	BOOLEAN		bIAmBadAtheros;	// Flag if this is Atheros chip that has IOT problem.  We need to turn on RTS/CTS protection.
+
+	/* WPA/WPA2 4-way database */
+	UCHAR         	EnqueueEapolStartTimerRunning;  // Enqueue EAPoL-Start for triggering EAP SM
+	RALINK_TIMER_STRUCT				EnqueueStartForPSKTimer;	    // A timer which enqueue EAPoL-Start for triggering PSK SM
+    UINT8                           WpaRole;
+	PFOUR_WAY_HANDSHAKE_PROFILE     pWPA_Supplicant;
+    PFOUR_WAY_HANDSHAKE_PROFILE     pWPA_Authenticator;
+    CIPHER_KEY                      RxGTK;
+    
+	//jan for wpa
+	// record which entry revoke MIC Failure , if it leaves the BSS itself, AP won't update aMICFailTime MIB
+	UCHAR           CMTimerRunning;
+	UCHAR           apidx;			// MBSS number 
+	UCHAR           RSNIE_Len;
+	UCHAR           RSN_IE[MAX_LEN_OF_RSNIE];
+	UCHAR           ANonce[LEN_KEY_DESC_NONCE];
+	UCHAR           SNonce[LEN_KEY_DESC_NONCE];
+	UCHAR           R_Counter[LEN_KEY_DESC_REPLAY];
+	UCHAR           PTK[64];
+	UCHAR           ReTryCounter;   
+	RALINK_TIMER_STRUCT                 RetryTimer;
+	NDIS_802_11_AUTHENTICATION_MODE     AuthMode;   // This should match to whatever microsoft defined
+	NDIS_802_11_WEP_STATUS              WepStatus;
+	NDIS_802_11_WEP_STATUS              GroupKeyWepStatus;
+	UINT8    		WpaState;
+	UINT8       	GTKState;
+	USHORT          PortSecured;
+	NDIS_802_11_PRIVACY_FILTER  PrivacyFilter;      // PrivacyFilter enum for 802.1X
+	CIPHER_KEY      PairwiseKey;
+	PVOID           pAd;
+	INT				PMKID_CacheIdx;
+	UCHAR			PMKID[LEN_PMKID];
+	UCHAR			NegotiatedAKM[LEN_OUI_SUITE];	// It indicate the negotiated AKM suite
+
+
+	UCHAR           Addr[MAC_ADDR_LEN];
+	UCHAR           PsMode;
+	SST             Sst;
+	AUTH_STATE      AuthState; // for SHARED KEY authentication state machine used only
+	BOOLEAN			IsReassocSta;	// Indicate whether this is a reassociation procedure
+	USHORT          Aid;
+	USHORT          CapabilityInfo;
+	UCHAR           LastRssi;
+	ULONG           NoDataIdleCount;
+	UINT16			StationKeepAliveCount; // unit: second
+	ULONG           PsQIdleCount;
+	QUEUE_HEADER    PsQueue;
+
+	UINT32			StaConnectTime;		// the live time of this station since associated with AP 
+	UINT32			StaIdleTimeout;		/* idle timeout per entry */
+
+
+#ifdef DOT11_N_SUPPORT
+	BOOLEAN			bSendBAR;
+	USHORT			NoBADataCountDown;
+
+	UINT32   		CachedBuf[16];		// UINT (4 bytes) for alignment
+	UINT			TxBFCount; // 3*3
+#endif // DOT11_N_SUPPORT //
+	UINT			FIFOCount;
+	UINT			DebugFIFOCount;
+	UINT			DebugTxCount;
+    BOOLEAN			bDlsInit;
+
+
+//====================================================
+//WDS entry needs these
+// if ValidAsWDS==TRUE, MatchWDSTabIdx is the index in WdsTab.MacTab
+	UINT			MatchWDSTabIdx;
+	UCHAR           MaxSupportedRate;
+	UCHAR           CurrTxRate;
+	UCHAR           CurrTxRateIndex;
+	// to record the each TX rate's quality. 0 is best, the bigger the worse.
+	USHORT          TxQuality[MAX_STEP_OF_TX_RATE_SWITCH];
+//	USHORT          OneSecTxOkCount;
+	UINT32			OneSecTxNoRetryOkCount;
+	UINT32          OneSecTxRetryOkCount;
+	UINT32          OneSecTxFailCount;
+	UINT32			ContinueTxFailCnt;
+	UINT32          CurrTxRateStableTime; // # of second in current TX rate
+	UCHAR           TxRateUpPenalty;      // extra # of second penalty due to last unstable condition
+#ifdef WDS_SUPPORT
+	BOOLEAN		LockEntryTx; // TRUE = block to WDS Entry traffic, FALSE = not. 
+	ULONG		TimeStamp_toTxRing;
+#endif // WDS_SUPPORT //
+
+//====================================================
+
+
+
+#ifdef CONFIG_STA_SUPPORT
+#ifdef QOS_DLS_SUPPORT
+	UINT			MatchDlsEntryIdx; // indicate the index in pAd->StaCfg.DLSEntry
+#endif // QOS_DLS_SUPPORT //
+#endif // CONFIG_STA_SUPPORT //
+
+	BOOLEAN         fNoisyEnvironment;
+	BOOLEAN			fLastSecAccordingRSSI;
+	UCHAR           LastSecTxRateChangeAction; // 0: no change, 1:rate UP, 2:rate down
+	CHAR			LastTimeTxRateChangeAction; //Keep last time value of LastSecTxRateChangeAction	
+	ULONG			LastTxOkCount;
+	UCHAR           PER[MAX_STEP_OF_TX_RATE_SWITCH];
+
+	// a bitmap of BOOLEAN flags. each bit represent an operation status of a particular 
+	// BOOLEAN control, either ON or OFF. These flags should always be accessed via
+	// CLIENT_STATUS_TEST_FLAG(), CLIENT_STATUS_SET_FLAG(), CLIENT_STATUS_CLEAR_FLAG() macros.
+	// see fOP_STATUS_xxx in RTMP_DEF.C for detail bit definition. fCLIENT_STATUS_AMSDU_INUSED
+	ULONG           ClientStatusFlags;
+
+	HTTRANSMIT_SETTING	HTPhyMode, MaxHTPhyMode, MinHTPhyMode;// For transmit phy setting in TXWI.
+	
+#ifdef DOT11_N_SUPPORT
+	// HT EWC MIMO-N used parameters
+	USHORT		RXBAbitmap;	// fill to on-chip  RXWI_BA_BITMASK in 8.1.3RX attribute entry format
+	USHORT		TXBAbitmap;	// This bitmap as originator, only keep in software used to mark AMPDU bit in TXWI 
+	USHORT		TXAutoBAbitmap;
+	USHORT		BADeclineBitmap;
+	USHORT		BARecWcidArray[NUM_OF_TID];	// The mapping wcid of recipient session. if RXBAbitmap bit is masked
+	USHORT		BAOriWcidArray[NUM_OF_TID]; // The mapping wcid of originator session. if TXBAbitmap bit is masked
+	USHORT		BAOriSequence[NUM_OF_TID]; // The mapping wcid of originator session. if TXBAbitmap bit is masked
+
+	// 802.11n features.
+	UCHAR		MpduDensity;
+	UCHAR		MaxRAmpduFactor;
+	UCHAR		AMsduSize;
+	UCHAR		MmpsMode;	// MIMO power save more. 
+
+	HT_CAPABILITY_IE		HTCapability;
+
+#ifdef DOT11N_DRAFT3
+	UCHAR		BSS2040CoexistenceMgmtSupport;
+	BOOLEAN		bForty_Mhz_Intolerant;
+#endif // DOT11N_DRAFT3 //
+#endif // DOT11_N_SUPPORT //
+
+
+	BOOLEAN		bAutoTxRateSwitch;
+
+	UCHAR       RateLen;
+	struct _MAC_TABLE_ENTRY *pNext;
+    USHORT      TxSeq[NUM_OF_TID];
+	USHORT		NonQosDataSeq;
+
+	RSSI_SAMPLE	RssiSample;
+
+    BOOLEAN                 bWscCapable;
+    UCHAR                   Receive_EapolStart_EapRspId;
+
+	UINT32			TXMCSExpected[16];
+	UINT32			TXMCSSuccessful[16];
+	UINT32			TXMCSFailed[16];
+	UINT32			TXMCSAutoFallBack[16][16];
+
+#ifdef CONFIG_STA_SUPPORT
+	ULONG   		LastBeaconRxTime;
+#endif // CONFIG_STA_SUPPORT //
+
+
+
+	ULONG AssocDeadLine;
+
+
+
+
+	ULONG ChannelQuality;  // 0..100, Channel Quality Indication for Roaming
+
+
+
+
+
+
+#ifdef VENDOR_FEATURE1_SUPPORT
+	UCHAR			HeaderBuf[128];				// TempBuffer for TX_INFO + TX_WI + 802.11 Header + padding + AMSDU SubHeader + LLC/SNAP
+	UCHAR			HdrPadLen;					// recording Header Padding Length;
+	UCHAR			MpduHeaderLen;
+	UINT16			Protocol;
+#endif // VENDOR_FEATURE1_SUPPORT //
+} MAC_TABLE_ENTRY, *PMAC_TABLE_ENTRY;
+
+typedef struct _MAC_TABLE {
+	USHORT			Size;
+	MAC_TABLE_ENTRY *Hash[HASH_TABLE_SIZE];
+	MAC_TABLE_ENTRY Content[MAX_LEN_OF_MAC_TABLE];
+	QUEUE_HEADER    McastPsQueue;
+	ULONG           PsQIdleCount;
+	BOOLEAN         fAnyStationInPsm;   
+	BOOLEAN         fAnyStationBadAtheros;	// Check if any Station is atheros 802.11n Chip.  We need to use RTS/CTS with Atheros 802,.11n chip. 
+	BOOLEAN			fAnyTxOPForceDisable;	// Check if it is necessary to disable BE TxOP
+	BOOLEAN			fAllStationAsRalink; 	// Check if all stations are ralink-chipset 
+#ifdef DOT11_N_SUPPORT	
+	BOOLEAN         fAnyStationIsLegacy;	// Check if I use legacy rate to transmit to my BSS Station/
+	BOOLEAN         fAnyStationNonGF;		// Check if any Station can't support GF.
+	BOOLEAN         fAnyStation20Only;		// Check if any Station can't support GF.
+	BOOLEAN			fAnyStationMIMOPSDynamic; // Check if any Station is MIMO Dynamic
+	BOOLEAN         fAnyBASession;   // Check if there is BA session.  Force turn on RTS/CTS 
+	BOOLEAN		fAnyStaFortyIntolerant;		// Check if still has any station set the Intolerant bit on!
+
+//2008/10/28: KH add to support Antenna power-saving of AP<--
+//2008/10/28: KH add to support Antenna power-saving of AP-->
+#endif // DOT11_N_SUPPORT //
+} MAC_TABLE, *PMAC_TABLE;
+
+
+
+
+#ifdef BLOCK_NET_IF
+typedef struct _BLOCK_QUEUE_ENTRY
+{
+	BOOLEAN SwTxQueueBlockFlag;
+	LIST_HEADER NetIfList;
+} BLOCK_QUEUE_ENTRY, *PBLOCK_QUEUE_ENTRY;
+#endif // BLOCK_NET_IF //
+
+
+struct wificonf
+{
+	BOOLEAN	bShortGI;
+	BOOLEAN bGreenField;
+};
+
+
+typedef struct _RTMP_DEV_INFO_
+{
+	UCHAR			chipName[16];
+	RTMP_INF_TYPE	infType;
+}RTMP_DEV_INFO;
+
+
+#ifdef DBG_DIAGNOSE
+#define DIAGNOSE_TIME	10   // 10 sec
+typedef struct _RtmpDiagStrcut_
+{	// Diagnosis Related element
+	unsigned char		inited;
+	unsigned char 	qIdx;
+	unsigned char 	ArrayStartIdx;
+	unsigned char		ArrayCurIdx;
+	// Tx Related Count
+	USHORT			TxDataCnt[DIAGNOSE_TIME];
+	USHORT			TxFailCnt[DIAGNOSE_TIME];				
+//	USHORT			TxDescCnt[DIAGNOSE_TIME][16];		// TxDesc queue length in scale of 0~14, >=15
+	USHORT			TxDescCnt[DIAGNOSE_TIME][24]; // 3*3	// TxDesc queue length in scale of 0~14, >=15
+//	USHORT			TxMcsCnt[DIAGNOSE_TIME][16];			// TxDate MCS Count in range from 0 to 15, step in 1.
+	USHORT			TxMcsCnt[DIAGNOSE_TIME][MAX_MCS_SET]; // 3*3
+	USHORT			TxSWQueCnt[DIAGNOSE_TIME][9];		// TxSwQueue length in scale of 0, 1, 2, 3, 4, 5, 6, 7, >=8
+
+	USHORT			TxAggCnt[DIAGNOSE_TIME];
+	USHORT			TxNonAggCnt[DIAGNOSE_TIME];
+//	USHORT			TxAMPDUCnt[DIAGNOSE_TIME][16];		// 10 sec, TxDMA APMDU Aggregation count in range from 0 to 15, in setp of 1.
+	USHORT			TxAMPDUCnt[DIAGNOSE_TIME][MAX_MCS_SET]; // 3*3 // 10 sec, TxDMA APMDU Aggregation count in range from 0 to 15, in setp of 1.
+	USHORT			TxRalinkCnt[DIAGNOSE_TIME];			// TxRalink Aggregation Count in 1 sec scale.
+	USHORT			TxAMSDUCnt[DIAGNOSE_TIME];			// TxAMSUD Aggregation Count in 1 sec scale.
+
+	// Rx Related Count
+	USHORT			RxDataCnt[DIAGNOSE_TIME];			// Rx Total Data count.
+	USHORT			RxCrcErrCnt[DIAGNOSE_TIME];
+//	USHORT			RxMcsCnt[DIAGNOSE_TIME][16];		// Rx MCS Count in range from 0 to 15, step in 1.
+	USHORT			RxMcsCnt[DIAGNOSE_TIME][MAX_MCS_SET]; // 3*3
+}RtmpDiagStruct;
+#endif // DBG_DIAGNOSE //
+
+
+struct _RTMP_CHIP_OP_
+{
+	/*  Calibration access related callback functions */
+	int (*eeinit)(RTMP_ADAPTER *pAd);										/* int (*eeinit)(RTMP_ADAPTER *pAd); */
+	int (*eeread)(RTMP_ADAPTER *pAd, USHORT offset, PUSHORT pValue);				/* int (*eeread)(RTMP_ADAPTER *pAd, int offset, PUSHORT pValue); */
+	int (*eewrite)(RTMP_ADAPTER *pAd, USHORT offset, USHORT value);				/* int (*eewrite)(RTMP_ADAPTER *pAd, int offset, USHORT value); */
+
+	/* MCU related callback functions */
+	int (*loadFirmware)(RTMP_ADAPTER *pAd);								/* int (*loadFirmware)(RTMP_ADAPTER *pAd); */
+	int (*eraseFirmware)(RTMP_ADAPTER *pAd);								/* int (*eraseFirmware)(RTMP_ADAPTER *pAd); */
+	int (*sendCommandToMcu)(RTMP_ADAPTER *pAd, UCHAR cmd, UCHAR token, UCHAR arg0, UCHAR arg1);	/* int (*sendCommandToMcu)(RTMP_ADAPTER *pAd, UCHAR cmd, UCHAR token, UCHAR arg0, UCHAR arg1); */
+
+	/* RF access related callback functions */
+	REG_PAIR *pRFRegTable;
+	REG_PAIR *pBBPRegTable;
+	UCHAR	bbpRegTbSize;
+	void (*AsicRfInit)(RTMP_ADAPTER *pAd);
+	void (*AsicRfTurnOn)(RTMP_ADAPTER *pAd);
+	void (*AsicRfTurnOff)(RTMP_ADAPTER *pAd);
+	void (*AsicReverseRfFromSleepMode)(RTMP_ADAPTER *pAd);
+	void (*AsicHaltAction)(RTMP_ADAPTER *pAd);
+};
+
+
+//
+//  The miniport adapter structure
+//
+struct _RTMP_ADAPTER
+{
+	PVOID					OS_Cookie;	// save specific structure relative to OS
+	PNET_DEV				net_dev;
+	ULONG					VirtualIfCnt;
+
+	RTMP_CHIP_OP			chipOps;
+
+#ifdef CONFIG_STA_SUPPORT
+	USHORT					ThisTbttNumToNextWakeUp;
+#endif // CONFIG_STA_SUPPORT //
+
+#ifdef HOSTAPD_SUPPORT
+	UINT32               IoctlIF;
+#endif//HOSTAPD_SUPPORT//
+#ifdef INF_AMAZON_PPA
+	UINT32  g_if_id;
+	BOOLEAN	PPAEnable;
+	PPA_DIRECTPATH_CB       *pDirectpathCb;
+#endif // INF_AMAZON_PPA //
+	
+#ifdef RTMP_MAC_PCI
+/*****************************************************************************************/
+/*      PCI related parameters                                                           								  */
+/*****************************************************************************************/
+	PUCHAR                  CSRBaseAddress;     // PCI MMIO Base Address, all access will use
+	unsigned int			irq_num;
+#ifdef CONFIG_STA_SUPPORT
+	USHORT		            LnkCtrlBitMask;
+	USHORT		            RLnkCtrlConfiguration;
+	USHORT                  RLnkCtrlOffset;
+	USHORT		            HostLnkCtrlConfiguration;
+	USHORT                  HostLnkCtrlOffset;
+	USHORT		            PCIePowerSaveLevel;
+	ULONG				Rt3xxHostLinkCtrl;	// USed for 3090F chip
+	ULONG				Rt3xxRalinkLinkCtrl;	// USed for 3090F chip
+#endif // CONFIG_STA_SUPPORT //
+	USHORT                  	DeviceID;           // Read from PCI config
+	ULONG				AccessBBPFailCount;
+   	BOOLEAN					bPCIclkOff;						// flag that indicate if the PICE power status in Configuration SPace..
+	BOOLEAN					bPCIclkOffDisableTx;			// 
+
+	BOOLEAN					brt30xxBanMcuCmd;	//when = 0xff means all commands are ok to set .
+	BOOLEAN					b3090ESpecialChip;	//3090E special chip that write EEPROM 0x24=0x9280.
+	//ULONG					CheckDmaBusyCount;  // Check Interrupt Status Register Count.
+
+	UINT					int_enable_reg;
+	UINT					int_disable_mask;
+	UINT					int_pending;
+
+	RTMP_DMABUF             TxBufSpace[NUM_OF_TX_RING]; // Shared memory of all 1st pre-allocated TxBuf associated with each TXD
+	RTMP_DMABUF             RxDescRing;                 // Shared memory for RX descriptors
+	RTMP_DMABUF             TxDescRing[NUM_OF_TX_RING]; 	// Shared memory for Tx descriptors
+	RTMP_TX_RING            TxRing[NUM_OF_TX_RING];     	// AC0~4 + HCCA
+#endif // RTMP_MAC_PCI //
+
+
+	NDIS_SPIN_LOCK		irq_lock;
+	UCHAR				irq_disabled;
+
+	//======Cmd Thread in PCI/RBUS/USB
+	CmdQ					CmdQ;
+	NDIS_SPIN_LOCK			CmdQLock;				// CmdQLock spinlock
+	RTMP_OS_TASK			cmdQTask;
+
+
+/*****************************************************************************************/
+/*      RBUS related parameters                                                           								  */
+/*****************************************************************************************/
+
+
+/*****************************************************************************************/
+/*      Both PCI/USB related parameters                                                  							  */
+/*****************************************************************************************/
+	//RTMP_DEV_INFO			chipInfo;
+	RTMP_INF_TYPE			infType;
+
+/*****************************************************************************************/
+/*      Driver Mgmt related parameters                                                  							  */
+/*****************************************************************************************/
+	RTMP_OS_TASK			mlmeTask;
+#ifdef RTMP_TIMER_TASK_SUPPORT
+	// If you want use timer task to handle the timer related jobs, enable this.
+	RTMP_TIMER_TASK_QUEUE	TimerQ;
+	NDIS_SPIN_LOCK			TimerQLock;
+	RTMP_OS_TASK			timerTask;
+#endif // RTMP_TIMER_TASK_SUPPORT //
+
+
+/*****************************************************************************************/
+/*      Tx related parameters                                                           */
+/*****************************************************************************************/
+	BOOLEAN                 DeQueueRunning[NUM_OF_TX_RING];  // for ensuring RTUSBDeQueuePacket get call once
+	NDIS_SPIN_LOCK          DeQueueLock[NUM_OF_TX_RING];
+		
+
+	// resource for software backlog queues
+	QUEUE_HEADER            TxSwQueue[NUM_OF_TX_RING];  // 4 AC + 1 HCCA
+	NDIS_SPIN_LOCK          TxSwQueueLock[NUM_OF_TX_RING];	// TxSwQueue spinlock
+	
+	RTMP_DMABUF             MgmtDescRing;               	// Shared memory for MGMT descriptors
+	RTMP_MGMT_RING          MgmtRing;
+	NDIS_SPIN_LOCK          MgmtRingLock;               	// Prio Ring spinlock
+
+
+/*****************************************************************************************/
+/*      Rx related parameters                                                           */
+/*****************************************************************************************/
+
+#ifdef RTMP_MAC_PCI
+	RTMP_RX_RING            RxRing;
+	NDIS_SPIN_LOCK          RxRingLock;                 // Rx Ring spinlock
+#endif // RTMP_MAC_PCI //
+	
+
+
+/*****************************************************************************************/
+/*      ASIC related parameters                                                          */
+/*****************************************************************************************/
+	UINT32               	MACVersion;      	// MAC version. Record rt2860C(0x28600100) or rt2860D (0x28600101)..
+
+	// ---------------------------
+	// E2PROM
+	// ---------------------------
+	ULONG				EepromVersion;          // byte 0: version, byte 1: revision, byte 2~3: unused
+	ULONG				FirmwareVersion;        // byte 0: Minor version, byte 1: Major version, otherwise unused.
+	USHORT				EEPROMDefaultValue[NUM_EEPROM_BBP_PARMS];
+	UCHAR				EEPROMAddressNum;       // 93c46=6  93c66=8
+	BOOLEAN				EepromAccess;
+	UCHAR				EFuseTag;
+
+
+	// ---------------------------
+	// BBP Control
+	// ---------------------------
+#ifdef MERGE_ARCH_TEAM
+	UCHAR                   BbpWriteLatch[256];     // record last BBP register value written via BBP_IO_WRITE/BBP_IO_WRITE_VY_REG_ID
+#else
+	UCHAR                   BbpWriteLatch[140];     // record last BBP register value written via BBP_IO_WRITE/BBP_IO_WRITE_VY_REG_ID
+#endif // MERGE_ARCH_TEAM //
+	CHAR					BbpRssiToDbmDelta;		// change from UCHAR to CHAR for high power
+	BBP_R66_TUNING          BbpTuning;
+
+	// ----------------------------
+	// RFIC control
+	// ----------------------------
+	UCHAR                   RfIcType;       // RFIC_xxx
+	ULONG                   RfFreqOffset;   // Frequency offset for channel switching
+	RTMP_RF_REGS            LatchRfRegs;    // latch th latest RF programming value since RF IC doesn't support READ
+
+	EEPROM_ANTENNA_STRUC    Antenna;                            // Since ANtenna definition is different for a & g. We need to save it for future reference.
+	EEPROM_NIC_CONFIG2_STRUC    NicConfig2;
+
+	// This soft Rx Antenna Diversity mechanism is used only when user set 
+	// RX Antenna = DIVERSITY ON
+	SOFT_RX_ANT_DIVERSITY   RxAnt;
+
+	UCHAR                   RFProgSeq;
+	CHANNEL_TX_POWER        TxPower[MAX_NUM_OF_CHANNELS];       // Store Tx power value for all channels.
+	CHANNEL_TX_POWER        ChannelList[MAX_NUM_OF_CHANNELS];   // list all supported channels for site survey
+	CHANNEL_11J_TX_POWER    TxPower11J[MAX_NUM_OF_11JCHANNELS];       // 802.11j channel and bw
+	CHANNEL_11J_TX_POWER    ChannelList11J[MAX_NUM_OF_11JCHANNELS];   // list all supported channels for site survey
+	
+	UCHAR                   ChannelListNum;                     // number of channel in ChannelList[]
+	UCHAR					Bbp94;
+	BOOLEAN					BbpForCCK;
+	ULONG		Tx20MPwrCfgABand[MAX_TXPOWER_ARRAY_SIZE];
+	ULONG		Tx20MPwrCfgGBand[MAX_TXPOWER_ARRAY_SIZE];
+	ULONG		Tx40MPwrCfgABand[MAX_TXPOWER_ARRAY_SIZE];
+	ULONG		Tx40MPwrCfgGBand[MAX_TXPOWER_ARRAY_SIZE];
+
+	BOOLEAN     bAutoTxAgcA;                // Enable driver auto Tx Agc control
+	UCHAR	    TssiRefA;					// Store Tssi reference value as 25 temperature.	
+	UCHAR	    TssiPlusBoundaryA[5];		// Tssi boundary for increase Tx power to compensate.
+	UCHAR	    TssiMinusBoundaryA[5];		// Tssi boundary for decrease Tx power to compensate.
+	UCHAR	    TxAgcStepA;					// Store Tx TSSI delta increment / decrement value
+	CHAR		TxAgcCompensateA;			// Store the compensation (TxAgcStep * (idx-1))
+	
+	BOOLEAN     bAutoTxAgcG;                // Enable driver auto Tx Agc control
+	UCHAR	    TssiRefG;					// Store Tssi reference value as 25 temperature.	
+	UCHAR	    TssiPlusBoundaryG[5];		// Tssi boundary for increase Tx power to compensate.
+	UCHAR	    TssiMinusBoundaryG[5];		// Tssi boundary for decrease Tx power to compensate.
+	UCHAR	    TxAgcStepG;					// Store Tx TSSI delta increment / decrement value
+	CHAR		TxAgcCompensateG;			// Store the compensation (TxAgcStep * (idx-1))
+
+	signed char		BGRssiOffset0;				// Store B/G RSSI#0 Offset value on EEPROM 0x46h
+	signed char		BGRssiOffset1;				// Store B/G RSSI#1 Offset value 
+	signed char		BGRssiOffset2;				// Store B/G RSSI#2 Offset value 
+	
+	signed char		ARssiOffset0;				// Store A RSSI#0 Offset value on EEPROM 0x4Ah
+	signed char		ARssiOffset1;				// Store A RSSI#1 Offset value 
+	signed char		ARssiOffset2;				// Store A RSSI#2 Offset value 
+	
+	CHAR		BLNAGain;					// Store B/G external LNA#0 value on EEPROM 0x44h
+	CHAR		ALNAGain0;					// Store A external LNA#0 value for ch36~64
+	CHAR		ALNAGain1;					// Store A external LNA#1 value for ch100~128
+	CHAR		ALNAGain2;					// Store A external LNA#2 value for ch132~165
+#ifdef RT30xx
+	// for 3572	
+	UCHAR		Bbp25;	
+	UCHAR		Bbp26;
+	
+	UCHAR		TxMixerGain24G;				// Tx mixer gain value from EEPROM to improve Tx EVM / Tx DAC, 2.4G
+	UCHAR		TxMixerGain5G;	
+#endif // RT30xx //
+	// ----------------------------
+	// LED control
+	// ----------------------------
+	MCU_LEDCS_STRUC		LedCntl;
+	USHORT				Led1;	// read from EEPROM 0x3c
+	USHORT				Led2;	// EEPROM 0x3e
+	USHORT				Led3;	// EEPROM 0x40
+	UCHAR				LedIndicatorStrength;
+	UCHAR				RssiSingalstrengthOffet;
+	BOOLEAN				bLedOnScanning;
+	UCHAR				LedStatus;
+
+/*****************************************************************************************/
+/*      802.11 related parameters                                                        */
+/*****************************************************************************************/
+	// outgoing BEACON frame buffer and corresponding TXD 
+	TXWI_STRUC              	BeaconTxWI;
+	PUCHAR						BeaconBuf;
+	USHORT						BeaconOffset[HW_BEACON_MAX_COUNT];
+
+	// pre-build PS-POLL and NULL frame upon link up. for efficiency purpose.
+#ifdef CONFIG_STA_SUPPORT
+	PSPOLL_FRAME            	PsPollFrame;
+#endif // CONFIG_STA_SUPPORT //
+	HEADER_802_11           	NullFrame;
+
+
+
+
+//=========AP===========
+
+
+//=======STA===========
+#ifdef CONFIG_STA_SUPPORT	
+	// -----------------------------------------------
+	// STA specific configuration & operation status
+	// used only when pAd->OpMode == OPMODE_STA
+	// -----------------------------------------------
+	STA_ADMIN_CONFIG        StaCfg;		// user desired settings
+	STA_ACTIVE_CONFIG       StaActive;		// valid only when ADHOC_ON(pAd) || INFRA_ON(pAd)
+	CHAR                    nickname[IW_ESSID_MAX_SIZE+1]; // nickname, only used in the iwconfig i/f 
+	NDIS_MEDIA_STATE        PreMediaState;
+#endif // CONFIG_STA_SUPPORT //
+
+//=======Common===========
+	// OP mode: either AP or STA
+	UCHAR                   OpMode;                     // OPMODE_STA, OPMODE_AP
+	
+	NDIS_MEDIA_STATE        IndicateMediaState;			// Base on Indication state, default is NdisMediaStateDisConnected
+
+
+	/* MAT related parameters */
+	
+	// configuration: read from Registry & E2PROM
+	BOOLEAN                 bLocalAdminMAC;             // Use user changed MAC
+	UCHAR                   PermanentAddress[MAC_ADDR_LEN];    // Factory default MAC address
+	UCHAR                   CurrentAddress[MAC_ADDR_LEN];      // User changed MAC address
+
+	// ------------------------------------------------------
+	// common configuration to both OPMODE_STA and OPMODE_AP
+	// ------------------------------------------------------
+	COMMON_CONFIG           CommonCfg;
+	MLME_STRUCT             Mlme;
+
+	// AP needs those vaiables for site survey feature.
+	MLME_AUX                MlmeAux;           // temporary settings used during MLME state machine
+#if defined(AP_SCAN_SUPPORT) || defined(CONFIG_STA_SUPPORT)
+	BSS_TABLE               ScanTab;           // store the latest SCAN result
+#endif
+
+	//About MacTab, the sta driver will use #0 and #1 for multicast and AP.
+	MAC_TABLE                 MacTab;     // ASIC on-chip WCID entry table.  At TX, ASIC always use key according to this on-chip table.
+	NDIS_SPIN_LOCK          MacTabLock;
+
+#ifdef DOT11_N_SUPPORT
+	BA_TABLE			BATable;
+	NDIS_SPIN_LOCK          BATabLock;
+	RALINK_TIMER_STRUCT RECBATimer;
+#endif // DOT11_N_SUPPORT //
+	
+	// encryption/decryption KEY tables
+	CIPHER_KEY              SharedKey[MAX_MBSSID_NUM][4]; // STA always use SharedKey[BSS0][0..3]
+
+	// RX re-assembly buffer for fragmentation
+	FRAGMENT_FRAME          FragFrame;                  // Frame storage for fragment frame
+
+	// various Counters 
+	COUNTER_802_3           Counters8023;               // 802.3 counters
+	COUNTER_802_11          WlanCounters;               // 802.11 MIB counters
+	COUNTER_RALINK          RalinkCounters;             // Ralink propriety counters
+	COUNTER_DRS             DrsCounters;                // counters for Dynamic TX Rate Switching
+	PRIVATE_STRUC           PrivateInfo;                // Private information & counters
+
+	// flags, see fRTMP_ADAPTER_xxx flags
+	ULONG                   Flags;                      // Represent current device status
+	ULONG                   PSFlags;                    // Power Save operation flag.
+
+	// current TX sequence #
+	USHORT                  Sequence;
+
+	// Control disconnect / connect event generation
+	//+++Didn't used anymore
+	ULONG                   LinkDownTime;
+	//---
+	ULONG                   LastRxRate;
+	ULONG                   LastTxRate;
+	//+++Used only for Station
+	BOOLEAN                 bConfigChanged;         // Config Change flag for the same SSID setting
+	//---
+	
+	ULONG                   ExtraInfo;              // Extra information for displaying status
+	ULONG                   SystemErrorBitmap;      // b0: E2PROM version error
+
+	//+++Didn't used anymore
+	ULONG                   MacIcVersion;           // MAC/BBP serial interface issue solved after ver.D
+	//---
+
+#ifdef SYSTEM_LOG_SUPPORT
+	// ---------------------------
+	// System event log
+	// ---------------------------
+	RT_802_11_EVENT_TABLE   EventTab;
+#endif // SYSTEM_LOG_SUPPORT //
+
+
+	BOOLEAN		HTCEnable;
+	
+	/*****************************************************************************************/
+	/*      Statistic related parameters                                                     */
+	/*****************************************************************************************/
+
+	BOOLEAN						bUpdateBcnCntDone;		
+	ULONG						watchDogMacDeadlock;	// prevent MAC/BBP into deadlock condition
+	// ----------------------------
+	// DEBUG paramerts
+	// ----------------------------
+	//ULONG		DebugSetting[4];
+	BOOLEAN		bBanAllBaSetup;
+	BOOLEAN		bPromiscuous;
+
+	// ----------------------------
+	// rt2860c emulation-use Parameters 
+	// ----------------------------
+	//ULONG		rtsaccu[30];
+	//ULONG		ctsaccu[30];
+	//ULONG		cfendaccu[30];
+	//ULONG		bacontent[16];
+	//ULONG		rxint[RX_RING_SIZE+1];
+	//UCHAR		rcvba[60];
+	BOOLEAN		bLinkAdapt;
+	BOOLEAN		bForcePrintTX;
+	BOOLEAN		bForcePrintRX;
+	//BOOLEAN		bDisablescanning;		//defined in RT2870 USB
+	BOOLEAN		bStaFifoTest;
+	BOOLEAN		bProtectionTest;
+	BOOLEAN		bHCCATest;
+	BOOLEAN		bGenOneHCCA;
+	BOOLEAN		bBroadComHT;
+	//+++Following add from RT2870 USB.
+	ULONG		BulkOutReq;
+	ULONG		BulkOutComplete;
+	ULONG		BulkOutCompleteOther;
+	ULONG		BulkOutCompleteCancel;	// seems not use now?
+	ULONG		BulkInReq;
+	ULONG		BulkInComplete;
+	ULONG		BulkInCompleteFail;
+	//---
+
+    struct wificonf			WIFItestbed;
+
+#ifdef RALINK_ATE
+	ATE_INFO				ate;
+#endif // RALINK_ATE //
+
+#ifdef DOT11_N_SUPPORT
+	struct reordering_mpdu_pool mpdu_blk_pool;
+#endif // DOT11_N_SUPPORT //
+
+	/* statistics count */
+#ifdef LINUX
+#if WIRELESS_EXT >= 12
+    struct iw_statistics    iw_stats;
+#endif
+
+	struct net_device_stats	stats;
+#endif // LINUX //
+
+#ifdef BLOCK_NET_IF
+	BLOCK_QUEUE_ENTRY		blockQueueTab[NUM_OF_TX_RING];
+#endif // BLOCK_NET_IF //
+
+
+
+#ifdef MULTIPLE_CARD_SUPPORT
+	INT32					MC_RowID;
+	STRING					MC_FileName[256];
+#endif // MULTIPLE_CARD_SUPPORT //
+
+	ULONG					TbttTickCount; /* beacon timestamp work-around */
+#ifdef PCI_MSI_SUPPORT
+	BOOLEAN					HaveMsi;
+#endif // PCI_MSI_SUPPORT //
+
+
+	/* for detect_wmm_traffic() BE TXOP use */
+	ULONG					OneSecondnonBEpackets;		// record non BE packets per second 
+	UCHAR					is_on;
+
+	/* for detect_wmm_traffic() BE/BK TXOP use */
+#define TIME_BASE			(1000000/OS_HZ)
+#define TIME_ONE_SECOND		(1000000/TIME_BASE)
+	UCHAR					flg_be_adjust;
+	ULONG					be_adjust_last_time;
+
+#ifdef NINTENDO_AP
+	NINDO_CTRL_BLOCK		nindo_ctrl_block;
+#endif // NINTENDO_AP //
+
+
+#ifdef IKANOS_VX_1X0
+	struct IKANOS_TX_INFO	IkanosTxInfo;
+	struct IKANOS_TX_INFO	IkanosRxInfo[MAX_MBSSID_NUM + MAX_WDS_ENTRY + MAX_APCLI_NUM + MAX_MESH_NUM];
+#endif // IKANOS_VX_1X0 //
+
+
+#ifdef DBG_DIAGNOSE
+	RtmpDiagStruct	DiagStruct;
+#endif // DBG_DIAGNOSE //
+
+
+	UINT8					FlgCtsEnabled;
+	UINT8					PM_FlgSuspend;
+
+#ifdef RT30xx
+#ifdef RTMP_EFUSE_SUPPORT
+	BOOLEAN		bUseEfuse;
+	BOOLEAN		bEEPROMFile;
+	BOOLEAN		bFroceEEPROMBuffer;
+	UCHAR		EEPROMImage[1024];
+#endif // RTMP_EFUSE_SUPPORT //
+#endif // RT30xx //
+
+
+#ifdef CONFIG_STA_SUPPORT
+#endif // CONFIG_STA_SUPPORT //
+
+	EXT_CAP_INFO_ELEMENT ExtCapInfo;
+
+
+#ifdef VENDOR_FEATURE1_SUPPORT
+	UCHAR	FifoUpdateDone, FifoUpdateRx;
+#endif // VENDOR_FEATURE1_SUPPORT //
+
+#ifdef VENDOR_FEATURE2_SUPPORT
+
+#define MEM_DBG_PKT_ALLOC_INC(_pAd)	_pAd->NumOfPktAlloc ++
+#define MEM_DBG_PKT_FREE_INC(_pAd)	_pAd->NumOfPktFree ++
+	UINT32	NumOfPktAlloc, NumOfPktFree; // used in memory debug
+#else
+
+#define MEM_DBG_PKT_ALLOC_INC(_pAd)
+#define MEM_DBG_PKT_FREE_INC(_pAd)
+#endif // VENDOR_FEATURE2_SUPPORT //
+
+#define RFIC_24GHZ		0x01
+#define RFIC_5GHZ		0x02
+	UINT8	RFICType;
+
+#ifdef LINUX
+#ifdef RT_CFG80211_SUPPORT
+	VOID *pCfgDev;
+	VOID *pCfg80211_CB;
+
+	BOOLEAN FlgCfg80211Scanning;
+	BOOLEAN FlgCfg80211Connecting;
+	UCHAR Cfg80211_Alpha2[2];
+
+	/* function pointers used in driver.ko */
+	VOID (*CFG80211_Register)(
+		IN VOID 				*pAd,
+		IN struct device		*pDev,
+		IN struct net_device	*pNetDev);
+
+	CFG80211_FUNC_OPS;
+
+#endif // RT_CFG80211_SUPPORT //
+#endif // LINUX //
+
+
+	struct {
+	UCHAR	*pIe;
+	INT		IeLen;
+	} ProbeRespIE[MAX_LEN_OF_BSS_TABLE];
+};
+
+
+
+#ifdef TONE_RADAR_DETECT_SUPPORT
+#define DELAYINTMASK		0x0013fffb
+#define INTMASK				0x0013fffb
+#define IndMask				0x0013fffc
+#define RadarInt			0x00100000
+#else
+#define DELAYINTMASK		0x0003fffb
+#define INTMASK				0x0003fffb
+#define IndMask				0x0003fffc
+#endif // TONE_RADAR_DETECT_SUPPORT //
+
+#define RxINT				0x00000005	// Delayed Rx or indivi rx
+#define TxDataInt			0x000000fa	// Delayed Tx or indivi tx
+#define TxMgmtInt			0x00000102	// Delayed Tx or indivi tx 
+#define TxCoherent			0x00020000	// tx coherent 
+#define RxCoherent			0x00010000	// rx coherent
+#define McuCommand			0x00000200	// mcu
+#define PreTBTTInt			0x00001000	// Pre-TBTT interrupt
+#define TBTTInt				0x00000800		// TBTT interrupt
+#define GPTimeOutInt			0x00008000		// GPtimeout interrupt
+#define AutoWakeupInt		0x00004000		// AutoWakeupInt interrupt
+#define FifoStaFullInt			0x00002000	//  fifo statistics full interrupt
+
+
+/***************************************************************************
+  *	Rx Path software control block related data structures
+  **************************************************************************/
+typedef struct _RX_BLK_
+{
+//	RXD_STRUC		RxD; // sample
+	RT28XX_RXD_STRUC	RxD;
+	PRXWI_STRUC			pRxWI;
+	PHEADER_802_11		pHeader;
+	PNDIS_PACKET		pRxPacket;
+	UCHAR				*pData;
+	USHORT				DataSize;
+	USHORT				Flags;
+	UCHAR				UserPriority;	// for calculate TKIP MIC using
+} RX_BLK;
+
+
+#define RX_BLK_SET_FLAG(_pRxBlk, _flag)		(_pRxBlk->Flags |= _flag)
+#define RX_BLK_TEST_FLAG(_pRxBlk, _flag)	(_pRxBlk->Flags & _flag)
+#define RX_BLK_CLEAR_FLAG(_pRxBlk, _flag)	(_pRxBlk->Flags &= ~(_flag))
+
+
+#define fRX_WDS			0x0001
+#define fRX_AMSDU		0x0002
+#define fRX_ARALINK		0x0004
+#define fRX_HTC			0x0008
+#define fRX_PAD			0x0010
+#define fRX_AMPDU		0x0020
+#define fRX_QOS			0x0040
+#define fRX_INFRA		0x0080
+#define fRX_EAP			0x0100
+#define fRX_MESH		0x0200
+#define fRX_APCLI		0x0400
+#define fRX_DLS			0x0800
+#define fRX_WPI			0x1000
+
+#define LENGTH_AMSDU_SUBFRAMEHEAD	14
+#define LENGTH_ARALINK_SUBFRAMEHEAD	14
+#define LENGTH_ARALINK_HEADER_FIELD	 2
+
+
+/***************************************************************************
+  *	Tx Path software control block related data structures
+  **************************************************************************/
+#define TX_UNKOWN_FRAME		0x00
+#define TX_MCAST_FRAME			0x01
+#define TX_LEGACY_FRAME		0x02
+#define TX_AMPDU_FRAME		0x04
+#define TX_AMSDU_FRAME		0x08
+#define TX_RALINK_FRAME		0x10
+#define TX_FRAG_FRAME			0x20
+
+
+//	Currently the sizeof(TX_BLK) is 148 bytes.
+typedef struct _TX_BLK_
+{
+	UCHAR				QueIdx;
+	UCHAR				TxFrameType;				// Indicate the Transmission type of the all frames in one batch
+	UCHAR				TotalFrameNum;				// Total frame number want to send-out in one batch
+	USHORT				TotalFragNum;				// Total frame fragments required in one batch
+	USHORT				TotalFrameLen;				// Total length of all frames want to send-out in one batch
+
+	QUEUE_HEADER		TxPacketList;
+	MAC_TABLE_ENTRY		*pMacEntry;					// NULL: packet with 802.11 RA field is multicast/broadcast address
+	HTTRANSMIT_SETTING	*pTransmit;
+	
+	// Following structure used for the characteristics of a specific packet.
+	PNDIS_PACKET		pPacket;
+	PUCHAR				pSrcBufHeader;				// Reference to the head of sk_buff->data
+	PUCHAR				pSrcBufData;				// Reference to the sk_buff->data, will changed depends on hanlding progresss
+	UINT				SrcBufLen;					// Length of packet payload which not including Layer 2 header
+	PUCHAR				pExtraLlcSnapEncap;			// NULL means no extra LLC/SNAP is required
+#ifndef VENDOR_FEATURE1_SUPPORT
+	UCHAR				HeaderBuf[128];				// TempBuffer for TX_INFO + TX_WI + 802.11 Header + padding + AMSDU SubHeader + LLC/SNAP
+#else
+	UCHAR				*HeaderBuf;					// TempBuffer for TX_INFO + TX_WI + 802.11 Header + padding + AMSDU SubHeader + LLC/SNAP
+	UCHAR				HeaderBuffer[128];			// TempBuffer for TX_INFO + TX_WI + 802.11 Header + padding + AMSDU SubHeader + LLC/SNAP
+#endif // VENDOR_FEATURE1_SUPPORT //
+	UCHAR				MpduHeaderLen;				// 802.11 header length NOT including the padding
+	UCHAR				HdrPadLen;					// recording Header Padding Length;
+	UCHAR				apidx;						// The interface associated to this packet 
+	UCHAR				Wcid;						// The MAC entry associated to this packet
+	UCHAR				UserPriority;				// priority class of packet
+	UCHAR				FrameGap;					// what kind of IFS this packet use
+	UCHAR				MpduReqNum;					// number of fragments of this frame
+	UCHAR				TxRate;						// TODO: Obsoleted? Should change to MCS?
+	UCHAR				CipherAlg;					// cipher alogrithm
+	PCIPHER_KEY			pKey;
+	UCHAR				KeyIdx;						// Indicate the transmit key index
+
+
+	UINT32				Flags;						//See following definitions for detail.
+
+	//YOU SHOULD NOT TOUCH IT! Following parameters are used for hardware-depended layer.
+	ULONG				Priv;						// Hardware specific value saved in here.
+
+
+#ifdef RT2883_TEMP_PATCH
+	UCHAR				TxSndgPkt; // 1: sounding 2: NDP sounding
+	UCHAR				TxNDPSndgBW;
+	UCHAR				TxNDPSndgMcs;
+#endif // RT2883_TEMP_PATCH //
+} TX_BLK, *PTX_BLK;
+
+
+#define fTX_bRtsRequired			0x0001	// Indicate if need send RTS frame for protection. Not used in RT2860/RT2870.
+#define fTX_bAckRequired			0x0002	// the packet need ack response
+#define fTX_bPiggyBack			0x0004	// Legacy device use Piggback or not
+#define fTX_bHTRate				0x0008	// allow to use HT rate
+#define fTX_bForceNonQoS		0x0010	// force to transmit frame without WMM-QoS in HT mode 
+#define fTX_bAllowFrag			0x0020	// allow to fragment the packet, A-MPDU, A-MSDU, A-Ralink is not allowed to fragment
+#define fTX_bMoreData			0x0040	// there are more data packets in PowerSave Queue
+#define fTX_bWMM				0x0080	// QOS Data
+#define fTX_bClearEAPFrame		0x0100
+
+#define	fTX_bSwEncrypt			0x0400	// this packet need to be encrypted by software before TX
+
+#ifdef CONFIG_STA_SUPPORT
+#endif // CONFIG_STA_SUPPORT //
+
+
+
+#ifdef CLIENT_WDS
+#define fTX_bClientWDSFrame		0x10000
+#endif // CLIENT_WDS //
+
+
+#define TX_BLK_SET_FLAG(_pTxBlk, _flag)		(_pTxBlk->Flags |= _flag)
+#define TX_BLK_TEST_FLAG(_pTxBlk, _flag)	(((_pTxBlk->Flags & _flag) == _flag) ? 1 : 0)
+#define TX_BLK_CLEAR_FLAG(_pTxBlk, _flag)	(_pTxBlk->Flags &= ~(_flag))
+	
+
+
+
+#ifdef RT_BIG_ENDIAN
+/***************************************************************************
+  *	Endian conversion related functions
+  **************************************************************************/
+/*
+	========================================================================
+
+	Routine Description:
+		Endian conversion of Tx/Rx descriptor .
+
+	Arguments:
+		pAd 	Pointer to our adapter
+		pData			Pointer to Tx/Rx descriptor
+		DescriptorType	Direction of the frame
+
+	Return Value:
+		None
+
+	Note:
+		Call this function when read or update descriptor
+	========================================================================
+*/
+static inline VOID	RTMPWIEndianChange(
+	IN	PUCHAR			pData,
+	IN	ULONG			DescriptorType)
+{
+	int size;
+	int i;
+	
+	size = ((DescriptorType == TYPE_TXWI) ? TXWI_SIZE : RXWI_SIZE);
+	
+	if(DescriptorType == TYPE_TXWI)
+	{
+		*((UINT32 *)(pData)) = SWAP32(*((UINT32 *)(pData)));		// Byte 0~3
+		*((UINT32 *)(pData + 4)) = SWAP32(*((UINT32 *)(pData+4)));	// Byte 4~7
+	} 
+	else
+	{
+		for(i=0; i < size/4 ; i++)
+			*(((UINT32 *)pData) +i) = SWAP32(*(((UINT32 *)pData)+i));
+	}
+}
+
+
+#ifdef RTMP_MAC_PCI
+static inline VOID	WriteBackToDescriptor(
+	IN  PUCHAR			Dest,
+ 	IN	PUCHAR			Src,
+    IN  BOOLEAN			DoEncrypt,
+	IN  ULONG           DescriptorType)
+{
+	UINT32 *p1, *p2;
+
+	p1 = ((UINT32 *)Dest);
+	p2 = ((UINT32 *)Src);
+	
+	*p1 = *p2;
+	*(p1+2) = *(p2+2);
+	*(p1+3) = *(p2+3);
+	*(p1+1) = *(p2+1); // Word 1; this must be written back last
+}
+#endif // RTMP_MAC_PCI //
+
+
+/*
+	========================================================================
+
+	Routine Description:
+		Endian conversion of Tx/Rx descriptor .
+
+	Arguments:
+		pAd 	Pointer to our adapter
+		pData			Pointer to Tx/Rx descriptor
+		DescriptorType	Direction of the frame
+
+	Return Value:
+		None
+
+	Note:
+		Call this function when read or update descriptor
+	========================================================================
+*/
+#ifdef RTMP_MAC_PCI
+static inline VOID	RTMPDescriptorEndianChange(
+	IN	PUCHAR			pData,
+	IN	ULONG			DescriptorType)
+{
+	*((UINT32 *)(pData)) = SWAP32(*((UINT32 *)(pData)));		// Byte 0~3
+	*((UINT32 *)(pData + 8)) = SWAP32(*((UINT32 *)(pData+8)));	// Byte 8~11
+	*((UINT32 *)(pData +12)) = SWAP32(*((UINT32 *)(pData + 12)));	// Byte 12~15
+	*((UINT32 *)(pData + 4)) = SWAP32(*((UINT32 *)(pData + 4)));				// Byte 4~7, this must be swapped last
+}
+#endif // RTMP_MAC_PCI //
+
+/*
+	========================================================================
+
+	Routine Description:
+		Endian conversion of all kinds of 802.11 frames .
+
+	Arguments:
+		pAd 	Pointer to our adapter
+		pData			Pointer to the 802.11 frame structure
+		Dir 			Direction of the frame
+		FromRxDoneInt	Caller is from RxDone interrupt
+
+	Return Value:
+		None
+
+	Note:
+		Call this function when read or update buffer data
+	========================================================================
+*/
+static inline VOID	RTMPFrameEndianChange(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PUCHAR			pData, 
+	IN	ULONG			Dir,
+	IN	BOOLEAN 		FromRxDoneInt)
+{
+	PHEADER_802_11 pFrame;
+	PUCHAR	pMacHdr;
+
+	// swab 16 bit fields - Frame Control field
+	if(Dir == DIR_READ)
+	{
+		*(USHORT *)pData = SWAP16(*(USHORT *)pData);
+	}
+
+	pFrame = (PHEADER_802_11) pData;
+	pMacHdr = (PUCHAR) pFrame;
+
+	// swab 16 bit fields - Duration/ID field
+	*(USHORT *)(pMacHdr + 2) = SWAP16(*(USHORT *)(pMacHdr + 2));
+
+	if (pFrame->FC.Type != BTYPE_CNTL)
+	{
+		// swab 16 bit fields - Sequence Control field
+		*(USHORT *)(pMacHdr + 22) = SWAP16(*(USHORT *)(pMacHdr + 22));
+	}
+
+	if(pFrame->FC.Type == BTYPE_MGMT)
+	{
+		switch(pFrame->FC.SubType)
+		{
+			case SUBTYPE_ASSOC_REQ:
+			case SUBTYPE_REASSOC_REQ:
+				// swab 16 bit fields - CapabilityInfo field
+				pMacHdr += sizeof(HEADER_802_11);
+				*(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr);
+
+				// swab 16 bit fields - Listen Interval field
+				pMacHdr += 2;
+				*(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr);
+				break;
+
+			case SUBTYPE_ASSOC_RSP:
+			case SUBTYPE_REASSOC_RSP:
+				// swab 16 bit fields - CapabilityInfo field
+				pMacHdr += sizeof(HEADER_802_11);
+				*(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr);
+
+				// swab 16 bit fields - Status Code field
+				pMacHdr += 2;
+				*(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr);
+
+				// swab 16 bit fields - AID field
+				pMacHdr += 2;
+				*(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr);
+				break;
+
+			case SUBTYPE_AUTH:
+				// If from APHandleRxDoneInterrupt routine, it is still a encrypt format.
+				// The convertion is delayed to RTMPHandleDecryptionDoneInterrupt.
+				if(!FromRxDoneInt && pFrame->FC.Wep == 1)
+					break;
+				else
+				{
+					// swab 16 bit fields - Auth Alg No. field
+					pMacHdr += sizeof(HEADER_802_11);
+					*(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr);
+
+					// swab 16 bit fields - Auth Seq No. field
+					pMacHdr += 2;
+					*(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr);
+
+					// swab 16 bit fields - Status Code field
+					pMacHdr += 2;
+					*(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr);
+				}
+				break;
+
+			case SUBTYPE_BEACON:
+			case SUBTYPE_PROBE_RSP:
+				// swab 16 bit fields - BeaconInterval field
+				pMacHdr += (sizeof(HEADER_802_11) + TIMESTAMP_LEN);
+				*(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr);
+
+				// swab 16 bit fields - CapabilityInfo field
+				pMacHdr += sizeof(USHORT);
+				*(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr);
+				break;
+
+			case SUBTYPE_DEAUTH:
+			case SUBTYPE_DISASSOC:
+				/* If the PMF is negotiated, those frames shall be encrypted */
+				if(!FromRxDoneInt && pFrame->FC.Wep == 1)
+					break;
+				else
+				{
+					// swab 16 bit fields - Reason code field
+					pMacHdr += sizeof(HEADER_802_11);
+					*(USHORT *)pMacHdr = SWAP16(*(USHORT *)pMacHdr);
+				}
+				break;
+		}
+	}
+	else if( pFrame->FC.Type == BTYPE_DATA )
+	{
+	}
+	else if(pFrame->FC.Type == BTYPE_CNTL)
+	{
+		switch(pFrame->FC.SubType)
+		{
+			case SUBTYPE_BLOCK_ACK_REQ:
+				{
+					PFRAME_BA_REQ pBAReq = (PFRAME_BA_REQ)pFrame;
+					*(USHORT *)(&pBAReq->BARControl) = SWAP16(*(USHORT *)(&pBAReq->BARControl));
+					pBAReq->BAStartingSeq.word = SWAP16(pBAReq->BAStartingSeq.word);
+				}
+				break;
+			case SUBTYPE_BLOCK_ACK:
+				// For Block Ack packet, the HT_CONTROL field is in the same offset with Addr3 
+				*(UINT32 *)(&pFrame->Addr3[0]) = SWAP32(*(UINT32 *)(&pFrame->Addr3[0]));
+				break;
+
+			case SUBTYPE_ACK:
+				//For ACK packet, the HT_CONTROL field is in the same offset with Addr2
+				*(UINT32 *)(&pFrame->Addr2[0])=	SWAP32(*(UINT32 *)(&pFrame->Addr2[0]));
+				break;
+		}
+	}
+	else
+	{
+		DBGPRINT(RT_DEBUG_ERROR,("Invalid Frame Type!!!\n"));
+	}
+
+	// swab 16 bit fields - Frame Control
+	if(Dir == DIR_WRITE)
+	{
+		*(USHORT *)pData = SWAP16(*(USHORT *)pData);
+	}
+}
+#endif // RT_BIG_ENDIAN //
+
+
+/***************************************************************************
+  *	Other static inline function definitions
+  **************************************************************************/
+static inline VOID ConvertMulticastIP2MAC(
+	IN PUCHAR pIpAddr,
+	IN PUCHAR *ppMacAddr, 
+	IN UINT16 ProtoType)
+{
+	if (pIpAddr == NULL)
+		return;
+
+	if (ppMacAddr == NULL || *ppMacAddr == NULL)
+		return;
+
+	switch (ProtoType)
+	{
+		case ETH_P_IPV6:
+//			memset(*ppMacAddr, 0, ETH_LENGTH_OF_ADDRESS);
+			*(*ppMacAddr) = 0x33;
+			*(*ppMacAddr + 1) = 0x33;
+			*(*ppMacAddr + 2) = pIpAddr[12];
+			*(*ppMacAddr + 3) = pIpAddr[13];
+			*(*ppMacAddr + 4) = pIpAddr[14];
+			*(*ppMacAddr + 5) = pIpAddr[15];
+			break;
+
+		case ETH_P_IP:
+		default:
+//			memset(*ppMacAddr, 0, ETH_LENGTH_OF_ADDRESS);
+			*(*ppMacAddr) = 0x01;
+			*(*ppMacAddr + 1) = 0x00;
+			*(*ppMacAddr + 2) = 0x5e;
+			*(*ppMacAddr + 3) = pIpAddr[1] & 0x7f;
+			*(*ppMacAddr + 4) = pIpAddr[2];
+			*(*ppMacAddr + 5) = pIpAddr[3];
+			break;
+	}
+
+	return;
+}
+
+
+char *GetPhyMode(int Mode);
+char* GetBW(int BW);
+
+
+
+BOOLEAN RTMPCheckForHang(
+	IN  NDIS_HANDLE MiniportAdapterContext);
+
+VOID  RTMPHalt(
+	IN  NDIS_HANDLE MiniportAdapterContext);
+
+//
+//  Private routines in rtmp_init.c
+//
+NDIS_STATUS RTMPAllocAdapterBlock(
+	IN PVOID			handle,
+	OUT PRTMP_ADAPTER   *ppAdapter);
+
+NDIS_STATUS RTMPAllocTxRxRingMemory(
+	IN  PRTMP_ADAPTER   pAd);
+
+NDIS_STATUS RTMPFindAdapter(
+	IN  PRTMP_ADAPTER   pAd,
+	IN  NDIS_HANDLE     WrapperConfigurationContext);
+
+NDIS_STATUS	RTMPReadParametersHook(
+	IN	PRTMP_ADAPTER pAd);
+
+NDIS_STATUS	RTMPSetProfileParameters(
+	IN RTMP_ADAPTER *pAd,
+	IN PSTRING		pBuffer);
+
+INT RTMPGetKeyParameter(
+    IN PSTRING key,
+    OUT PSTRING dest,
+    IN INT destsize,
+    IN PSTRING buffer,
+    IN BOOLEAN bTrimSpace);
+
+
+VOID RTMPFreeAdapter(
+	IN  PRTMP_ADAPTER   pAd);
+
+NDIS_STATUS NICReadRegParameters(
+	IN  PRTMP_ADAPTER       pAd,
+	IN  NDIS_HANDLE         WrapperConfigurationContext);
+
+#ifdef RTMP_RF_RW_SUPPORT
+VOID NICInitRFRegisters(
+	IN PRTMP_ADAPTER pAd);
+
+VOID RtmpChipOpsRFHook(
+	IN RTMP_ADAPTER *pAd);
+	
+NDIS_STATUS	RT30xxWriteRFRegister(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	UCHAR			regID,
+	IN	UCHAR			value);
+
+NDIS_STATUS	RT30xxReadRFRegister(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	UCHAR			regID,
+	IN	PUCHAR			pValue);
+#endif // RTMP_RF_RW_SUPPORT //
+
+VOID NICReadEEPROMParameters(
+	IN  PRTMP_ADAPTER       pAd,
+	IN	PSTRING				mac_addr);
+
+VOID NICInitAsicFromEEPROM(
+	IN  PRTMP_ADAPTER       pAd);
+
+
+NDIS_STATUS NICInitializeAdapter(
+	IN  PRTMP_ADAPTER   pAd,
+	IN   BOOLEAN    bHardReset);
+
+NDIS_STATUS NICInitializeAsic(
+	IN  PRTMP_ADAPTER   pAd,
+	IN  BOOLEAN		bHardReset);
+
+VOID NICIssueReset(
+	IN  PRTMP_ADAPTER   pAd);
+
+VOID RTMPRingCleanUp(
+	IN  PRTMP_ADAPTER   pAd,
+	IN  UCHAR           RingType);
+
+VOID RxTest(
+	IN  PRTMP_ADAPTER   pAd);
+
+NDIS_STATUS DbgSendPacket(
+	IN  PRTMP_ADAPTER   pAd,
+	IN  PNDIS_PACKET    pPacket);
+
+VOID UserCfgExit(	
+	IN RTMP_ADAPTER *pAd);
+
+VOID UserCfgInit(
+	IN  PRTMP_ADAPTER   pAd);
+
+VOID NICResetFromError(
+	IN  PRTMP_ADAPTER   pAd);
+
+NDIS_STATUS NICLoadFirmware(
+	IN  PRTMP_ADAPTER   pAd);
+
+VOID NICEraseFirmware(
+	IN PRTMP_ADAPTER pAd);
+
+NDIS_STATUS NICLoadRateSwitchingParams(
+	IN PRTMP_ADAPTER pAd);
+
+BOOLEAN NICCheckForHang(
+	IN  PRTMP_ADAPTER   pAd);
+
+VOID NICUpdateFifoStaCounters(
+	IN PRTMP_ADAPTER pAd);
+
+VOID NICUpdateRawCounters(
+	IN  PRTMP_ADAPTER   pAd);
+
+VOID RTMPZeroMemory(
+	IN  PVOID   pSrc,
+	IN  ULONG   Length);
+
+ULONG RTMPCompareMemory(
+	IN  PVOID   pSrc1,
+	IN  PVOID   pSrc2,
+	IN  ULONG   Length);
+
+VOID RTMPMoveMemory(
+	OUT PVOID   pDest,
+	IN  PVOID   pSrc,
+	IN  ULONG   Length);
+
+VOID AtoH(
+	PSTRING	src,
+	PUCHAR dest,
+	int		destlen);
+
+UCHAR BtoH(
+	char ch);
+
+VOID RTMPPatchMacBbpBug(
+	IN  PRTMP_ADAPTER   pAd);
+
+VOID RTMPPatchCardBus(
+	IN	PRTMP_ADAPTER	pAdapter);
+
+VOID RTMPPatchRalinkCardBus(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	ULONG			Bus);
+
+ULONG RTMPReadCBConfig(
+	IN	ULONG	Bus,
+	IN	ULONG	Slot,
+	IN	ULONG	Func,
+	IN	ULONG	Offset);
+
+VOID RTMPWriteCBConfig(
+	IN	ULONG	Bus,
+	IN	ULONG	Slot,
+	IN	ULONG	Func,
+	IN	ULONG	Offset,
+	IN	ULONG	Value);
+
+VOID RTMPInitTimer(
+	IN  PRTMP_ADAPTER           pAd,
+	IN  PRALINK_TIMER_STRUCT    pTimer,
+	IN  PVOID                   pTimerFunc,
+	IN	PVOID					pData,
+	IN  BOOLEAN                 Repeat);
+
+VOID RTMPSetTimer(
+	IN  PRALINK_TIMER_STRUCT    pTimer,
+	IN  ULONG                   Value);
+
+
+VOID RTMPModTimer(
+	IN	PRALINK_TIMER_STRUCT	pTimer,
+	IN	ULONG					Value);
+
+VOID RTMPCancelTimer(
+	IN  PRALINK_TIMER_STRUCT    pTimer,
+	OUT BOOLEAN                 *pCancelled);
+
+VOID RTMPSetLED(
+	IN PRTMP_ADAPTER 	pAd, 
+	IN UCHAR			Status);
+
+VOID RTMPSetSignalLED(
+	IN PRTMP_ADAPTER 	pAd, 
+	IN NDIS_802_11_RSSI Dbm);
+
+
+VOID RTMPEnableRxTx(
+	IN PRTMP_ADAPTER	pAd);
+
+//
+// prototype in action.c
+//
+VOID ActionStateMachineInit(
+    IN	PRTMP_ADAPTER	pAd, 
+    IN  STATE_MACHINE *S, 
+    OUT STATE_MACHINE_FUNC Trans[]);
+
+VOID MlmeADDBAAction(
+    IN PRTMP_ADAPTER pAd, 
+    IN MLME_QUEUE_ELEM *Elem);
+
+VOID MlmeDELBAAction(
+    IN PRTMP_ADAPTER pAd, 
+    IN MLME_QUEUE_ELEM *Elem);
+
+VOID MlmeDLSAction(
+    IN PRTMP_ADAPTER pAd, 
+    IN MLME_QUEUE_ELEM *Elem);
+
+VOID MlmeInvalidAction(
+    IN PRTMP_ADAPTER pAd, 
+    IN MLME_QUEUE_ELEM *Elem);
+
+VOID MlmeQOSAction(
+    IN PRTMP_ADAPTER pAd, 
+    IN MLME_QUEUE_ELEM *Elem);
+
+#ifdef DOT11_N_SUPPORT
+VOID PeerAddBAReqAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem);
+
+VOID PeerAddBARspAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem);
+
+VOID PeerDelBAAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem);
+
+VOID PeerBAAction(
+    IN PRTMP_ADAPTER pAd, 
+    IN MLME_QUEUE_ELEM *Elem);
+#endif // DOT11_N_SUPPORT //
+
+VOID SendPSMPAction(
+	IN PRTMP_ADAPTER	pAd,
+	IN UCHAR			Wcid,
+	IN UCHAR			Psmp);
+				   
+
+VOID PeerRMAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem);
+
+VOID PeerPublicAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem);
+
+#ifdef CONFIG_STA_SUPPORT
+VOID StaPublicAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN BSS_2040_COEXIST_IE *pBss2040CoexIE);
+#endif // CONFIG_STA_SUPPORT //
+
+
+VOID PeerBSSTranAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem);
+
+#ifdef DOT11_N_SUPPORT
+VOID PeerHTAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem);
+#endif // DOT11_N_SUPPORT //
+
+VOID PeerQOSAction(
+    IN PRTMP_ADAPTER pAd, 
+    IN MLME_QUEUE_ELEM *Elem);
+
+#ifdef QOS_DLS_SUPPORT
+VOID PeerDLSAction(
+    IN PRTMP_ADAPTER pAd, 
+    IN MLME_QUEUE_ELEM *Elem);
+#endif // QOS_DLS_SUPPORT //
+
+#ifdef CONFIG_STA_SUPPORT
+#ifdef QOS_DLS_SUPPORT
+VOID DlsParmFill(
+	IN PRTMP_ADAPTER pAd, 
+	IN OUT MLME_DLS_REQ_STRUCT *pDlsReq,
+	IN PRT_802_11_DLS pDls,
+	IN USHORT reason);
+#endif // QOS_DLS_SUPPORT //
+#endif // CONFIG_STA_SUPPORT //
+
+#ifdef DOT11_N_SUPPORT
+VOID RECBATimerTimeout(
+    IN PVOID SystemSpecific1, 
+    IN PVOID FunctionContext, 
+    IN PVOID SystemSpecific2, 
+    IN PVOID SystemSpecific3);
+
+VOID ORIBATimerTimeout(
+	IN	PRTMP_ADAPTER	pAd);
+
+VOID SendRefreshBAR(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	MAC_TABLE_ENTRY	*pEntry);
+
+#ifdef DOT11N_DRAFT3
+VOID RTMP_11N_D3_TimerInit(
+	IN PRTMP_ADAPTER pAd);
+
+VOID SendBSS2040CoexistMgmtAction(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	UCHAR	Wcid,
+	IN	UCHAR	apidx,
+	IN	UCHAR	InfoReq);
+
+VOID SendNotifyBWActionFrame(
+	IN PRTMP_ADAPTER pAd,
+	IN UCHAR  Wcid,
+	IN UCHAR apidx);
+	
+BOOLEAN ChannelSwitchSanityCheck(
+	IN	PRTMP_ADAPTER	pAd,
+	IN    UCHAR  Wcid,
+	IN    UCHAR  NewChannel,
+	IN    UCHAR  Secondary);
+
+VOID ChannelSwitchAction(
+	IN	PRTMP_ADAPTER	pAd,
+	IN    UCHAR  Wcid,
+	IN    UCHAR  Channel,
+	IN    UCHAR  Secondary);
+
+ULONG BuildIntolerantChannelRep(
+	IN	PRTMP_ADAPTER	pAd,
+	IN    PUCHAR  pDest); 
+
+VOID Update2040CoexistFrameAndNotify(
+	IN	PRTMP_ADAPTER	pAd,
+	IN    UCHAR  Wcid,
+	IN	BOOLEAN	bAddIntolerantCha);
+	
+VOID Send2040CoexistAction(
+	IN	PRTMP_ADAPTER	pAd,
+	IN    UCHAR  Wcid,
+	IN	BOOLEAN	bAddIntolerantCha);
+
+VOID UpdateBssScanParm(
+	IN PRTMP_ADAPTER pAd,
+	IN OVERLAP_BSS_SCAN_IE APBssScan);
+#endif // DOT11N_DRAFT3 //
+#endif // DOT11_N_SUPPORT //
+	
+VOID ActHeaderInit(
+    IN	PRTMP_ADAPTER	pAd, 
+    IN OUT PHEADER_802_11 pHdr80211, 
+    IN PUCHAR Addr1, 
+    IN PUCHAR Addr2,
+    IN PUCHAR Addr3);
+
+VOID BarHeaderInit(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN OUT PFRAME_BAR pCntlBar, 
+	IN PUCHAR pDA,
+	IN PUCHAR pSA);
+
+VOID InsertActField(
+	IN PRTMP_ADAPTER pAd,
+	OUT PUCHAR pFrameBuf,
+	OUT PULONG pFrameLen,
+	IN UINT8 Category,
+	IN UINT8 ActCode);
+
+BOOLEAN QosBADataParse(
+	IN PRTMP_ADAPTER	pAd, 
+	IN BOOLEAN bAMSDU,
+	IN PUCHAR p8023Header,
+	IN UCHAR	WCID,
+	IN UCHAR	TID,
+	IN USHORT Sequence,
+	IN UCHAR DataOffset, 
+	IN USHORT Datasize,
+	IN UINT   CurRxIndex);
+
+#ifdef DOT11_N_SUPPORT
+BOOLEAN CntlEnqueueForRecv(
+    IN	PRTMP_ADAPTER	pAd, 
+	IN ULONG Wcid, 
+    IN ULONG MsgLen, 
+	IN PFRAME_BA_REQ pMsg);
+
+VOID BaAutoManSwitch(
+	IN	PRTMP_ADAPTER	pAd);
+#endif // DOT11_N_SUPPORT //
+
+VOID HTIOTCheck(
+	IN	PRTMP_ADAPTER	pAd,
+	IN    UCHAR     BatRecIdx);
+
+//
+// Private routines in rtmp_data.c
+//
+BOOLEAN RTMPHandleRxDoneInterrupt(
+	IN  PRTMP_ADAPTER   pAd);
+
+VOID RTMPHandleTxDoneInterrupt(
+	IN  PRTMP_ADAPTER   pAd);
+
+BOOLEAN RTMPHandleTxRingDmaDoneInterrupt(
+	IN  PRTMP_ADAPTER   pAd,
+	IN  INT_SOURCE_CSR_STRUC TxRingBitmap);
+
+VOID RTMPHandleMgmtRingDmaDoneInterrupt(
+	IN  PRTMP_ADAPTER   pAd);
+
+VOID RTMPHandleTBTTInterrupt(
+	IN  PRTMP_ADAPTER   pAd);
+
+VOID RTMPHandlePreTBTTInterrupt(
+	IN  PRTMP_ADAPTER   pAd);
+
+void RTMPHandleTwakeupInterrupt(
+	IN PRTMP_ADAPTER pAd);
+
+VOID	RTMPHandleRxCoherentInterrupt(
+	IN	PRTMP_ADAPTER	pAd);
+
+
+BOOLEAN TxFrameIsAggregatible(
+	IN  PRTMP_ADAPTER   pAd,
+	IN  PUCHAR          pPrevAddr1,
+	IN  PUCHAR          p8023hdr);
+
+BOOLEAN PeerIsAggreOn(
+    IN  PRTMP_ADAPTER   pAd,
+    IN  ULONG          TxRate,
+    IN  PMAC_TABLE_ENTRY pMacEntry);
+
+	
+NDIS_STATUS Sniff2BytesFromNdisBuffer(
+	IN  PNDIS_BUFFER    pFirstBuffer,
+	IN  UCHAR           DesiredOffset,
+	OUT PUCHAR          pByte0,
+	OUT PUCHAR          pByte1);
+
+NDIS_STATUS STASendPacket(
+	IN  PRTMP_ADAPTER   pAd,
+	IN  PNDIS_PACKET    pPacket);
+
+VOID STASendPackets(
+	IN  NDIS_HANDLE     MiniportAdapterContext,
+	IN  PPNDIS_PACKET   ppPacketArray,
+	IN  UINT            NumberOfPackets);
+
+VOID RTMPDeQueuePacket(
+	IN  PRTMP_ADAPTER   pAd,
+   	IN	BOOLEAN			bIntContext,
+	IN  UCHAR			QueIdx,
+	IN	UCHAR			Max_Tx_Packets);
+
+NDIS_STATUS	RTMPHardTransmit(
+	IN PRTMP_ADAPTER	pAd,
+	IN PNDIS_PACKET		pPacket,
+	IN  UCHAR			QueIdx,
+	OUT	PULONG			pFreeTXDLeft);
+
+NDIS_STATUS	STAHardTransmit(
+	IN PRTMP_ADAPTER	pAd,
+	IN TX_BLK			*pTxBlk,
+	IN  UCHAR			QueIdx);
+
+VOID STARxEAPOLFrameIndicate(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	MAC_TABLE_ENTRY	*pEntry,
+	IN	RX_BLK			*pRxBlk,
+	IN	UCHAR			FromWhichBSSID);
+
+NDIS_STATUS RTMPFreeTXDRequest(
+	IN  PRTMP_ADAPTER   pAd,
+	IN  UCHAR           RingType,
+	IN  UCHAR           NumberRequired,
+	IN 	PUCHAR          FreeNumberIs);
+
+NDIS_STATUS MlmeHardTransmit(
+	IN  PRTMP_ADAPTER   pAd,
+	IN  UCHAR	QueIdx,
+	IN  PNDIS_PACKET    pPacket);
+
+NDIS_STATUS MlmeHardTransmitMgmtRing(
+	IN  PRTMP_ADAPTER   pAd,
+	IN  UCHAR	QueIdx,
+	IN  PNDIS_PACKET    pPacket);
+
+#ifdef RTMP_MAC_PCI
+NDIS_STATUS MlmeHardTransmitTxRing(
+	IN  PRTMP_ADAPTER   pAd,
+	IN  UCHAR	QueIdx,
+	IN  PNDIS_PACKET    pPacket);
+
+NDIS_STATUS MlmeDataHardTransmit(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	UCHAR	QueIdx,
+	IN	PNDIS_PACKET	pPacket);
+
+VOID RTMPWriteTxDescriptor(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PTXD_STRUC		pTxD,
+	IN	BOOLEAN			bWIV,
+	IN	UCHAR			QSEL);
+#endif // RTMP_MAC_PCI //
+
+USHORT  RTMPCalcDuration(
+	IN  PRTMP_ADAPTER   pAd,
+	IN  UCHAR           Rate,
+	IN  ULONG           Size);
+
+VOID RTMPWriteTxWI(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PTXWI_STRUC		pTxWI,	
+	IN  BOOLEAN    		FRAG,	
+	IN  BOOLEAN    		CFACK,
+	IN  BOOLEAN    		InsTimestamp,
+	IN	BOOLEAN			AMPDU,
+	IN	BOOLEAN			Ack,
+	IN	BOOLEAN			NSeq,		// HW new a sequence.
+	IN	UCHAR			BASize,
+	IN	UCHAR			WCID,
+	IN	ULONG			Length,
+	IN  UCHAR      		PID,
+	IN	UCHAR			TID,
+	IN	UCHAR			TxRate,
+	IN	UCHAR			Txopmode,	
+	IN	BOOLEAN			CfAck,	
+	IN	HTTRANSMIT_SETTING	*pTransmit);
+
+
+VOID RTMPWriteTxWI_Data(
+	IN	PRTMP_ADAPTER		pAd,
+	IN	OUT PTXWI_STRUC		pTxWI,
+	IN	TX_BLK				*pTxBlk);
+
+	
+VOID RTMPWriteTxWI_Cache(
+	IN	PRTMP_ADAPTER		pAd,
+	IN	OUT PTXWI_STRUC		pTxWI,
+	IN	TX_BLK				*pTxBlk);
+
+VOID RTMPSuspendMsduTransmission(
+	IN  PRTMP_ADAPTER   pAd);
+
+VOID RTMPResumeMsduTransmission(
+	IN  PRTMP_ADAPTER   pAd);
+
+NDIS_STATUS MiniportMMRequest(
+	IN  PRTMP_ADAPTER   pAd,
+	IN	UCHAR			QueIdx,
+	IN	PUCHAR			pData,
+	IN  UINT            Length);
+
+VOID RTMPSendNullFrame(
+	IN  PRTMP_ADAPTER   pAd,
+	IN  UCHAR           TxRate,
+	IN	BOOLEAN			bQosNull);
+
+VOID RTMPSendDisassociationFrame(
+	IN	PRTMP_ADAPTER	pAd);
+
+VOID RTMPSendRTSFrame(
+	IN  PRTMP_ADAPTER   pAd,
+	IN  PUCHAR          pDA,
+	IN	unsigned int	NextMpduSize,
+	IN  UCHAR           TxRate,
+	IN  UCHAR           RTSRate,
+	IN  USHORT          AckDuration,
+	IN  UCHAR           QueIdx,
+	IN  UCHAR			FrameGap);
+
+
+NDIS_STATUS RTMPApplyPacketFilter(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  PRT28XX_RXD_STRUC      pRxD, 
+	IN  PHEADER_802_11  pHeader);
+
+PQUEUE_HEADER   RTMPCheckTxSwQueue(
+	IN  PRTMP_ADAPTER   pAd,
+	OUT UCHAR           *QueIdx);
+
+#ifdef CONFIG_STA_SUPPORT
+VOID RTMPReportMicError(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  PCIPHER_KEY     pWpaKey);
+
+VOID	WpaMicFailureReportFrame(
+	IN  PRTMP_ADAPTER    pAd, 
+	IN  MLME_QUEUE_ELEM *Elem);
+
+VOID    WpaDisassocApAndBlockAssoc(
+    IN  PVOID SystemSpecific1, 
+    IN  PVOID FunctionContext, 
+    IN  PVOID SystemSpecific2, 
+    IN  PVOID SystemSpecific3);
+
+VOID WpaStaPairwiseKeySetting(
+	IN	PRTMP_ADAPTER	pAd);
+
+VOID WpaStaGroupKeySetting(
+	IN	PRTMP_ADAPTER	pAd);
+
+VOID    WpaSendEapolStart(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN  PUCHAR          pBssid);
+#endif // CONFIG_STA_SUPPORT //
+
+NDIS_STATUS RTMPCloneNdisPacket(
+	IN  PRTMP_ADAPTER   pAd,
+	IN	BOOLEAN    pInsAMSDUHdr,
+	IN  PNDIS_PACKET    pInPacket,
+	OUT PNDIS_PACKET   *ppOutPacket);
+
+NDIS_STATUS RTMPAllocateNdisPacket(
+	IN  PRTMP_ADAPTER   pAd,
+	IN  PNDIS_PACKET    *pPacket,
+	IN  PUCHAR          pHeader,
+	IN  UINT            HeaderLen,
+	IN  PUCHAR          pData,
+	IN  UINT            DataLen);
+
+VOID RTMPFreeNdisPacket(
+	IN  PRTMP_ADAPTER   pAd,
+	IN  PNDIS_PACKET    pPacket);
+
+BOOLEAN RTMPFreeTXDUponTxDmaDone(
+	IN PRTMP_ADAPTER    pAd, 
+	IN UCHAR            QueIdx);
+
+BOOLEAN RTMPCheckDHCPFrame(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PNDIS_PACKET	pPacket);
+
+
+BOOLEAN RTMPCheckEtherType(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PNDIS_PACKET	pPacket,
+	IN	PMAC_TABLE_ENTRY pMacEntry,
+	OUT PUCHAR pUserPriority,
+	OUT PUCHAR pQueIdx);
+
+
+VOID RTMPCckBbpTuning(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	UINT			TxRate);
+//
+// MLME routines
+//
+
+// Asic/RF/BBP related functions
+
+VOID AsicAdjustTxPower(
+	IN PRTMP_ADAPTER pAd);
+
+VOID 	AsicUpdateProtect(
+	IN		PRTMP_ADAPTER	pAd,
+	IN 		USHORT			OperaionMode,
+	IN 		UCHAR			SetMask,
+	IN		BOOLEAN			bDisableBGProtect,
+	IN		BOOLEAN			bNonGFExist);
+
+VOID AsicBBPAdjust(
+	IN RTMP_ADAPTER *pAd);
+
+VOID AsicSwitchChannel(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN	UCHAR			Channel,
+	IN	BOOLEAN			bScan);
+
+VOID AsicLockChannel(
+	IN PRTMP_ADAPTER pAd, 
+	IN UCHAR Channel) ;
+
+VOID AsicAntennaSelect(
+	IN  PRTMP_ADAPTER   pAd,
+	IN  UCHAR           Channel);
+
+VOID AsicAntennaSetting(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	ABGBAND_STATE	BandState);
+
+VOID AsicRfTuningExec(
+	IN PVOID SystemSpecific1,
+	IN PVOID FunctionContext,
+	IN PVOID SystemSpecific2,
+	IN PVOID SystemSpecific3);
+
+#ifdef CONFIG_STA_SUPPORT
+
+VOID AsicResetBBPAgent(
+	IN PRTMP_ADAPTER pAd);
+
+VOID AsicSleepThenAutoWakeup(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  USHORT TbttNumToNextWakeUp);
+
+VOID AsicForceSleep(
+	IN PRTMP_ADAPTER pAd);
+
+VOID AsicForceWakeup(
+	IN PRTMP_ADAPTER pAd,
+	IN BOOLEAN    bFromTx);
+#endif // CONFIG_STA_SUPPORT //
+
+VOID AsicSetBssid(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  PUCHAR pBssid);
+
+VOID AsicSetMcastWC(
+	IN PRTMP_ADAPTER pAd);
+
+
+VOID AsicDelWcidTab(
+	IN PRTMP_ADAPTER pAd,
+	IN UCHAR	Wcid);
+
+VOID AsicEnableRDG(
+	IN PRTMP_ADAPTER pAd);
+
+VOID AsicDisableRDG(
+	IN PRTMP_ADAPTER pAd);
+
+VOID AsicDisableSync(
+	IN  PRTMP_ADAPTER   pAd);
+
+VOID AsicEnableBssSync(
+	IN  PRTMP_ADAPTER   pAd);
+
+VOID AsicEnableIbssSync(
+	IN  PRTMP_ADAPTER   pAd);
+
+VOID AsicSetEdcaParm(
+	IN PRTMP_ADAPTER pAd,
+	IN PEDCA_PARM    pEdcaParm);
+
+VOID AsicSetSlotTime(
+	IN PRTMP_ADAPTER pAd,
+	IN BOOLEAN bUseShortSlotTime);
+
+
+VOID AsicAddSharedKeyEntry(
+	IN PRTMP_ADAPTER pAd,
+	IN UCHAR         BssIndex,
+	IN UCHAR         KeyIdx,
+	IN PCIPHER_KEY	 pCipherKey);
+
+VOID AsicRemoveSharedKeyEntry(
+	IN PRTMP_ADAPTER pAd,
+	IN UCHAR         BssIndex,
+	IN UCHAR         KeyIdx);
+
+VOID AsicUpdateWCIDIVEIV(
+	IN PRTMP_ADAPTER pAd,
+	IN USHORT		WCID,
+	IN ULONG        uIV,
+	IN ULONG        uEIV);
+
+VOID AsicUpdateRxWCIDTable(
+	IN PRTMP_ADAPTER pAd,
+	IN USHORT		WCID,
+	IN PUCHAR        pAddr);
+
+VOID	AsicUpdateWcidAttributeEntry(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	UCHAR			BssIdx,
+	IN 	UCHAR		 	KeyIdx,
+	IN 	UCHAR		 	CipherAlg,
+	IN	UINT8				Wcid,
+	IN	UINT8				KeyTabFlag);
+
+VOID AsicAddPairwiseKeyEntry(
+	IN PRTMP_ADAPTER 	pAd,
+	IN UCHAR			WCID,
+	IN PCIPHER_KEY		pCipherKey);
+
+VOID AsicRemovePairwiseKeyEntry(
+	IN PRTMP_ADAPTER  pAd,
+	IN UCHAR		 Wcid);
+
+BOOLEAN AsicSendCommandToMcu(
+	IN PRTMP_ADAPTER pAd,
+	IN UCHAR         Command,
+	IN UCHAR         Token,
+	IN UCHAR         Arg0,
+	IN UCHAR         Arg1);
+
+
+#ifdef RTMP_MAC_PCI
+BOOLEAN AsicCheckCommanOk(
+	IN PRTMP_ADAPTER pAd,
+	IN UCHAR		 Command);
+#endif // RTMP_MAC_PCI //
+
+
+VOID MacAddrRandomBssid(
+	IN  PRTMP_ADAPTER   pAd, 
+	OUT PUCHAR pAddr);
+
+VOID MgtMacHeaderInit(
+	IN  PRTMP_ADAPTER     pAd, 
+	IN OUT PHEADER_802_11 pHdr80211, 
+	IN UCHAR SubType, 
+	IN UCHAR ToDs, 
+	IN PUCHAR pDA, 
+	IN PUCHAR pBssid);
+
+VOID MlmeRadioOff(
+	IN PRTMP_ADAPTER pAd);
+
+VOID MlmeRadioOn(
+	IN PRTMP_ADAPTER pAd);
+
+
+VOID BssTableInit(
+	IN BSS_TABLE *Tab);
+
+#ifdef DOT11_N_SUPPORT
+VOID BATableInit(
+	IN PRTMP_ADAPTER pAd,
+    IN BA_TABLE *Tab);
+
+VOID BATableExit(	
+	IN RTMP_ADAPTER *pAd);
+#endif // DOT11_N_SUPPORT //
+
+ULONG BssTableSearch(
+	IN BSS_TABLE *Tab, 
+	IN PUCHAR pBssid,
+	IN UCHAR Channel);
+
+ULONG BssSsidTableSearch(
+	IN BSS_TABLE *Tab, 
+	IN PUCHAR    pBssid,
+	IN PUCHAR    pSsid,
+	IN UCHAR     SsidLen,
+	IN UCHAR     Channel);
+
+ULONG BssTableSearchWithSSID(
+	IN BSS_TABLE *Tab, 
+	IN PUCHAR    Bssid,
+	IN PUCHAR    pSsid,
+	IN UCHAR     SsidLen,
+	IN UCHAR     Channel);
+
+ULONG BssSsidTableSearchBySSID(
+	IN BSS_TABLE *Tab,
+	IN PUCHAR	 pSsid,
+	IN UCHAR	 SsidLen);
+
+VOID BssTableDeleteEntry(
+	IN OUT  PBSS_TABLE pTab, 
+	IN      PUCHAR pBssid,
+	IN      UCHAR Channel);
+
+#ifdef DOT11_N_SUPPORT
+VOID BATableDeleteORIEntry(
+	IN OUT	PRTMP_ADAPTER pAd, 
+	IN		BA_ORI_ENTRY	*pBAORIEntry);
+
+VOID BATableDeleteRECEntry(
+	IN OUT	PRTMP_ADAPTER pAd, 
+	IN		BA_REC_ENTRY	*pBARECEntry);
+
+VOID BATableTearORIEntry(
+	IN OUT	PRTMP_ADAPTER pAd, 
+	IN		UCHAR TID, 
+	IN		UCHAR Wcid, 
+	IN		BOOLEAN bForceDelete, 
+	IN		BOOLEAN ALL);
+
+VOID BATableTearRECEntry(
+	IN OUT	PRTMP_ADAPTER pAd, 
+	IN		UCHAR TID, 
+	IN		UCHAR WCID, 
+	IN		BOOLEAN ALL);
+#endif // DOT11_N_SUPPORT //
+
+VOID  BssEntrySet(
+	IN  PRTMP_ADAPTER   pAd, 
+	OUT PBSS_ENTRY pBss, 
+	IN PUCHAR pBssid, 
+	IN CHAR Ssid[], 
+	IN UCHAR SsidLen, 
+	IN UCHAR BssType, 
+	IN USHORT BeaconPeriod,
+	IN PCF_PARM CfParm, 
+	IN USHORT AtimWin, 
+	IN USHORT CapabilityInfo, 
+	IN UCHAR SupRate[], 
+	IN UCHAR SupRateLen,
+	IN UCHAR ExtRate[], 
+	IN UCHAR ExtRateLen,
+	IN HT_CAPABILITY_IE *pHtCapability,
+	IN ADD_HT_INFO_IE *pAddHtInfo,	// AP might use this additional ht info IE 
+	IN UCHAR			HtCapabilityLen,
+	IN UCHAR			AddHtInfoLen,
+	IN UCHAR			NewExtChanOffset,
+	IN UCHAR Channel,
+	IN CHAR Rssi,
+	IN LARGE_INTEGER TimeStamp,
+	IN UCHAR CkipFlag,
+	IN PEDCA_PARM pEdcaParm,
+	IN PQOS_CAPABILITY_PARM pQosCapability,
+	IN PQBSS_LOAD_PARM pQbssLoad,
+	IN USHORT LengthVIE,
+	IN PNDIS_802_11_VARIABLE_IEs pVIE);
+
+ULONG  BssTableSetEntry(
+	IN  PRTMP_ADAPTER   pAd, 
+	OUT PBSS_TABLE pTab, 
+	IN PUCHAR pBssid, 
+	IN CHAR Ssid[], 
+	IN UCHAR SsidLen, 
+	IN UCHAR BssType, 
+	IN USHORT BeaconPeriod, 
+	IN CF_PARM *CfParm, 
+	IN USHORT AtimWin, 
+	IN USHORT CapabilityInfo, 
+	IN UCHAR SupRate[], 
+	IN UCHAR SupRateLen,
+	IN UCHAR ExtRate[],
+	IN UCHAR ExtRateLen,
+	IN HT_CAPABILITY_IE *pHtCapability,
+	IN ADD_HT_INFO_IE *pAddHtInfo,	// AP might use this additional ht info IE 
+	IN UCHAR			HtCapabilityLen,
+	IN UCHAR			AddHtInfoLen,
+	IN UCHAR			NewExtChanOffset,
+	IN UCHAR Channel,
+	IN CHAR Rssi,
+	IN LARGE_INTEGER TimeStamp,
+	IN UCHAR CkipFlag,
+	IN PEDCA_PARM pEdcaParm,
+	IN PQOS_CAPABILITY_PARM pQosCapability,
+	IN PQBSS_LOAD_PARM pQbssLoad,
+	IN USHORT LengthVIE,
+	IN PNDIS_802_11_VARIABLE_IEs pVIE);
+
+#ifdef DOT11_N_SUPPORT
+VOID BATableInsertEntry(
+    IN	PRTMP_ADAPTER	pAd, 
+	IN USHORT Aid,    
+    IN USHORT		TimeOutValue,
+	IN USHORT		StartingSeq,
+    IN UCHAR TID, 
+	IN UCHAR BAWinSize, 
+	IN UCHAR OriginatorStatus, 
+    IN BOOLEAN IsRecipient);
+
+#ifdef DOT11N_DRAFT3
+VOID Bss2040CoexistTimeOut(
+	IN PVOID SystemSpecific1, 
+	IN PVOID FunctionContext, 
+	IN PVOID SystemSpecific2, 
+	IN PVOID SystemSpecific3);
+
+
+VOID  TriEventInit(
+	IN	PRTMP_ADAPTER	pAd);
+
+INT TriEventTableSetEntry(
+	IN	PRTMP_ADAPTER	pAd, 
+	OUT TRIGGER_EVENT_TAB *Tab, 
+	IN PUCHAR pBssid, 
+	IN HT_CAPABILITY_IE *pHtCapability,
+	IN UCHAR			HtCapabilityLen,
+	IN UCHAR			RegClass,
+	IN UCHAR ChannelNo);
+
+#endif // DOT11N_DRAFT3 //
+#endif // DOT11_N_SUPPORT //
+
+VOID BssTableSsidSort(
+	IN  PRTMP_ADAPTER   pAd, 
+	OUT BSS_TABLE *OutTab, 
+	IN  CHAR Ssid[], 
+	IN  UCHAR SsidLen);
+
+VOID  BssTableSortByRssi(
+	IN OUT BSS_TABLE *OutTab);
+
+VOID BssCipherParse(
+	IN OUT  PBSS_ENTRY  pBss);
+
+NDIS_STATUS  MlmeQueueInit(
+	IN MLME_QUEUE *Queue);
+
+VOID  MlmeQueueDestroy(
+	IN MLME_QUEUE *Queue);
+
+BOOLEAN MlmeEnqueue(
+	IN PRTMP_ADAPTER pAd, 
+	IN ULONG Machine, 
+	IN ULONG MsgType, 
+	IN ULONG MsgLen, 
+	IN VOID *Msg,
+	IN ULONG Priv);
+
+BOOLEAN MlmeEnqueueForRecv(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN ULONG Wcid, 
+	IN ULONG TimeStampHigh, 
+	IN ULONG TimeStampLow, 
+	IN UCHAR Rssi0, 
+	IN UCHAR Rssi1, 
+	IN UCHAR Rssi2, 
+	IN ULONG MsgLen, 
+	IN PVOID Msg,
+	IN UCHAR Signal);
+
+
+BOOLEAN MlmeDequeue(
+	IN MLME_QUEUE *Queue, 
+	OUT MLME_QUEUE_ELEM **Elem);
+
+VOID    MlmeRestartStateMachine(
+	IN  PRTMP_ADAPTER   pAd);
+
+BOOLEAN  MlmeQueueEmpty(
+	IN MLME_QUEUE *Queue);
+
+BOOLEAN  MlmeQueueFull(
+	IN MLME_QUEUE *Queue);
+
+BOOLEAN  MsgTypeSubst(
+	IN PRTMP_ADAPTER pAd, 
+	IN PFRAME_802_11 pFrame, 
+	OUT INT *Machine, 
+	OUT INT *MsgType);
+
+VOID StateMachineInit(
+	IN STATE_MACHINE *Sm, 
+	IN STATE_MACHINE_FUNC Trans[], 
+	IN ULONG StNr, 
+	IN ULONG MsgNr, 
+	IN STATE_MACHINE_FUNC DefFunc, 
+	IN ULONG InitState, 
+	IN ULONG Base);
+
+VOID StateMachineSetAction(
+	IN STATE_MACHINE *S, 
+	IN ULONG St, 
+	ULONG Msg, 
+	IN STATE_MACHINE_FUNC F);
+
+VOID StateMachinePerformAction(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN STATE_MACHINE *S, 
+	IN MLME_QUEUE_ELEM *Elem,
+	IN ULONG CurrState);
+
+VOID Drop(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN MLME_QUEUE_ELEM *Elem);
+
+VOID AssocStateMachineInit(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  STATE_MACHINE *Sm, 
+	OUT STATE_MACHINE_FUNC Trans[]);
+
+VOID ReassocTimeout(
+	IN PVOID SystemSpecific1, 
+	IN PVOID FunctionContext, 
+	IN PVOID SystemSpecific2, 
+	IN PVOID SystemSpecific3);
+
+VOID AssocTimeout(
+	IN PVOID SystemSpecific1, 
+	IN PVOID FunctionContext, 
+	IN PVOID SystemSpecific2, 
+	IN PVOID SystemSpecific3);
+
+VOID DisassocTimeout(
+	IN PVOID SystemSpecific1, 
+	IN PVOID FunctionContext, 
+	IN PVOID SystemSpecific2, 
+	IN PVOID SystemSpecific3);
+
+//----------------------------------------------
+VOID MlmeDisassocReqAction(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  MLME_QUEUE_ELEM *Elem);
+
+VOID MlmeAssocReqAction(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  MLME_QUEUE_ELEM *Elem);
+
+VOID MlmeReassocReqAction(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  MLME_QUEUE_ELEM *Elem);
+
+VOID MlmeDisassocReqAction(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  MLME_QUEUE_ELEM *Elem);
+
+VOID PeerAssocRspAction(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  MLME_QUEUE_ELEM *Elem);
+
+VOID PeerReassocRspAction(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  MLME_QUEUE_ELEM *Elem);
+
+VOID PeerDisassocAction(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  MLME_QUEUE_ELEM *Elem);
+
+VOID DisassocTimeoutAction(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  MLME_QUEUE_ELEM *Elem);
+
+VOID AssocTimeoutAction(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  MLME_QUEUE_ELEM *Elem);
+
+VOID  ReassocTimeoutAction(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  MLME_QUEUE_ELEM *Elem);
+
+VOID  Cls3errAction(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  PUCHAR pAddr);
+
+VOID  InvalidStateWhenAssoc(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  MLME_QUEUE_ELEM *Elem);
+
+VOID  InvalidStateWhenReassoc(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  MLME_QUEUE_ELEM *Elem);
+
+VOID InvalidStateWhenDisassociate(
+	IN  PRTMP_ADAPTER pAd, 
+	IN  MLME_QUEUE_ELEM *Elem);
+
+
+VOID  ComposePsPoll(
+	IN  PRTMP_ADAPTER   pAd);
+
+VOID  ComposeNullFrame(
+	IN  PRTMP_ADAPTER pAd);
+
+VOID  AssocPostProc(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  PUCHAR pAddr2, 
+	IN  USHORT CapabilityInfo, 
+	IN  USHORT Aid, 
+	IN  UCHAR SupRate[], 
+	IN  UCHAR SupRateLen,
+	IN  UCHAR ExtRate[],
+	IN  UCHAR ExtRateLen,
+	IN PEDCA_PARM pEdcaParm,
+	IN HT_CAPABILITY_IE		*pHtCapability,
+	IN  UCHAR HtCapabilityLen,
+	IN ADD_HT_INFO_IE		*pAddHtInfo);
+
+VOID AuthStateMachineInit(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN PSTATE_MACHINE sm, 
+	OUT STATE_MACHINE_FUNC Trans[]);
+
+VOID AuthTimeout(
+	IN PVOID SystemSpecific1, 
+	IN PVOID FunctionContext, 
+	IN PVOID SystemSpecific2, 
+	IN PVOID SystemSpecific3);
+
+VOID MlmeAuthReqAction(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  MLME_QUEUE_ELEM *Elem);
+
+VOID PeerAuthRspAtSeq2Action(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  MLME_QUEUE_ELEM *Elem);
+
+VOID PeerAuthRspAtSeq4Action(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  MLME_QUEUE_ELEM *Elem);
+
+VOID AuthTimeoutAction(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  MLME_QUEUE_ELEM *Elem);
+
+VOID Cls2errAction(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  PUCHAR pAddr);
+
+VOID MlmeDeauthReqAction(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  MLME_QUEUE_ELEM *Elem);
+
+VOID InvalidStateWhenAuth(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  MLME_QUEUE_ELEM *Elem);
+
+//=============================================
+
+VOID AuthRspStateMachineInit(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  PSTATE_MACHINE Sm, 
+	IN  STATE_MACHINE_FUNC Trans[]);
+
+VOID PeerDeauthAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem);
+
+VOID PeerAuthSimpleRspGenAndSend(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  PHEADER_802_11  pHdr80211, 
+	IN  USHORT Alg, 
+	IN  USHORT Seq, 
+	IN  USHORT Reason, 
+	IN  USHORT Status);
+
+//
+// Private routines in dls.c
+//
+
+#ifdef CONFIG_STA_SUPPORT
+#ifdef QOS_DLS_SUPPORT
+void DlsStateMachineInit(
+    IN PRTMP_ADAPTER pAd, 
+    IN STATE_MACHINE *Sm, 
+    OUT STATE_MACHINE_FUNC Trans[]);
+
+VOID MlmeDlsReqAction(
+    IN PRTMP_ADAPTER pAd, 
+    IN MLME_QUEUE_ELEM *Elem);
+
+VOID PeerDlsReqAction(
+    IN PRTMP_ADAPTER	pAd, 
+    IN MLME_QUEUE_ELEM	*Elem);
+
+VOID PeerDlsRspAction(
+    IN PRTMP_ADAPTER	pAd, 
+    IN MLME_QUEUE_ELEM	*Elem);
+
+VOID MlmeDlsTearDownAction(
+    IN PRTMP_ADAPTER pAd, 
+    IN MLME_QUEUE_ELEM *Elem);
+
+VOID PeerDlsTearDownAction(
+    IN PRTMP_ADAPTER	pAd, 
+    IN MLME_QUEUE_ELEM	*Elem);
+
+VOID RTMPCheckDLSTimeOut(
+	IN PRTMP_ADAPTER	pAd);
+
+BOOLEAN RTMPRcvFrameDLSCheck(
+	IN PRTMP_ADAPTER	pAd,
+	IN PHEADER_802_11	pHeader,
+	IN ULONG			Len,
+	IN PRT28XX_RXD_STRUC	pRxD);
+
+INT	RTMPCheckDLSFrame(
+	IN	PRTMP_ADAPTER	pAd,
+	IN  PUCHAR          pDA);
+
+VOID RTMPSendDLSTearDownFrame(
+	IN	PRTMP_ADAPTER	pAd,
+	IN  PUCHAR          pDA);
+
+NDIS_STATUS RTMPSendSTAKeyRequest(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PUCHAR			pDA);
+
+NDIS_STATUS RTMPSendSTAKeyHandShake(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PUCHAR			pDA);
+
+VOID DlsTimeoutAction(
+	IN PVOID SystemSpecific1, 
+	IN PVOID FunctionContext, 
+	IN PVOID SystemSpecific2, 
+	IN PVOID SystemSpecific3);
+
+BOOLEAN MlmeDlsReqSanity(
+	IN PRTMP_ADAPTER pAd, 
+    IN VOID *Msg, 
+    IN ULONG MsgLen,
+    OUT PRT_802_11_DLS *pDLS,
+    OUT PUSHORT pReason);
+
+INT Set_DlsEntryInfo_Display_Proc(
+	IN PRTMP_ADAPTER pAd, 
+	IN PUCHAR arg);
+
+MAC_TABLE_ENTRY *MacTableInsertDlsEntry(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  PUCHAR	pAddr,
+	IN  UINT	DlsEntryIdx);
+
+BOOLEAN MacTableDeleteDlsEntry(
+	IN PRTMP_ADAPTER pAd,
+	IN USHORT wcid,
+	IN PUCHAR pAddr);
+
+MAC_TABLE_ENTRY *DlsEntryTableLookup(
+	IN PRTMP_ADAPTER pAd,
+	IN PUCHAR	pAddr,
+	IN BOOLEAN	bResetIdelCount);
+
+MAC_TABLE_ENTRY *DlsEntryTableLookupByWcid(
+	IN PRTMP_ADAPTER pAd,
+	IN UCHAR	wcid,
+	IN PUCHAR	pAddr,
+	IN BOOLEAN	bResetIdelCount);
+
+INT	Set_DlsAddEntry_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT	Set_DlsTearDownEntry_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+#endif // QOS_DLS_SUPPORT //
+#endif // CONFIG_STA_SUPPORT //
+
+#ifdef QOS_DLS_SUPPORT
+BOOLEAN PeerDlsReqSanity(
+    IN PRTMP_ADAPTER pAd, 
+    IN VOID *Msg, 
+    IN ULONG MsgLen,
+    OUT PUCHAR pDA,
+    OUT PUCHAR pSA,
+    OUT USHORT *pCapabilityInfo, 
+    OUT USHORT *pDlsTimeout,
+    OUT UCHAR *pRatesLen,
+    OUT UCHAR Rates[],
+    OUT UCHAR *pHtCapabilityLen,
+    OUT HT_CAPABILITY_IE *pHtCapability);
+
+BOOLEAN PeerDlsRspSanity(
+    IN PRTMP_ADAPTER pAd, 
+    IN VOID *Msg, 
+    IN ULONG MsgLen,
+    OUT PUCHAR pDA,
+    OUT PUCHAR pSA,
+    OUT USHORT *pCapabilityInfo, 
+    OUT USHORT *pStatus,
+    OUT UCHAR *pRatesLen,
+    OUT UCHAR Rates[],
+    OUT UCHAR *pHtCapabilityLen,
+    OUT HT_CAPABILITY_IE *pHtCapability);
+
+BOOLEAN PeerDlsTearDownSanity(
+    IN PRTMP_ADAPTER pAd, 
+    IN VOID *Msg, 
+    IN ULONG MsgLen,
+    OUT PUCHAR pDA,
+    OUT PUCHAR pSA,
+    OUT USHORT *pReason);
+#endif // QOS_DLS_SUPPORT //
+
+BOOLEAN PeerProbeReqSanity(
+    IN PRTMP_ADAPTER pAd, 
+    IN VOID *Msg, 
+    IN ULONG MsgLen, 
+    OUT PUCHAR pAddr2,
+    OUT CHAR Ssid[], 
+    OUT UCHAR *SsidLen,
+    OUT BOOLEAN *bRequestRssi);
+
+//========================================
+
+VOID SyncStateMachineInit(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  STATE_MACHINE *Sm, 
+	OUT STATE_MACHINE_FUNC Trans[]);
+
+VOID BeaconTimeout(
+	IN PVOID SystemSpecific1, 
+	IN PVOID FunctionContext, 
+	IN PVOID SystemSpecific2, 
+	IN PVOID SystemSpecific3);
+
+VOID ScanTimeout(
+	IN PVOID SystemSpecific1, 
+	IN PVOID FunctionContext, 
+	IN PVOID SystemSpecific2, 
+	IN PVOID SystemSpecific3);
+
+VOID MlmeScanReqAction(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  MLME_QUEUE_ELEM *Elem);
+
+VOID InvalidStateWhenScan(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  MLME_QUEUE_ELEM *Elem);
+
+VOID InvalidStateWhenJoin(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  MLME_QUEUE_ELEM *Elem);
+
+VOID InvalidStateWhenStart(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  MLME_QUEUE_ELEM *Elem);
+
+VOID PeerBeacon(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  MLME_QUEUE_ELEM *Elem);
+
+VOID EnqueueProbeRequest(
+	IN PRTMP_ADAPTER pAd);
+
+BOOLEAN ScanRunning(
+		IN PRTMP_ADAPTER pAd);
+//=========================================
+
+VOID MlmeCntlInit(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  STATE_MACHINE *S, 
+	OUT STATE_MACHINE_FUNC Trans[]);
+
+VOID MlmeCntlMachinePerformAction(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  STATE_MACHINE *S, 
+	IN  MLME_QUEUE_ELEM *Elem);
+
+VOID CntlIdleProc(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  MLME_QUEUE_ELEM *Elem);
+
+VOID CntlOidScanProc(
+	IN  PRTMP_ADAPTER pAd,
+	IN  MLME_QUEUE_ELEM *Elem);
+
+VOID CntlOidSsidProc(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  MLME_QUEUE_ELEM * Elem);
+
+VOID CntlOidRTBssidProc(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  MLME_QUEUE_ELEM * Elem);
+
+VOID CntlMlmeRoamingProc(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  MLME_QUEUE_ELEM * Elem);
+
+VOID CntlWaitDisassocProc(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  MLME_QUEUE_ELEM *Elem);
+
+VOID CntlWaitJoinProc(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  MLME_QUEUE_ELEM *Elem);
+
+VOID CntlWaitReassocProc(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  MLME_QUEUE_ELEM *Elem);
+
+VOID CntlWaitStartProc(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  MLME_QUEUE_ELEM *Elem);
+
+VOID CntlWaitAuthProc(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  MLME_QUEUE_ELEM *Elem);
+
+VOID CntlWaitAuthProc2(
+	IN  PRTMP_ADAPTER pAd, 
+	IN  MLME_QUEUE_ELEM *Elem);
+
+VOID CntlWaitAssocProc(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  MLME_QUEUE_ELEM *Elem);
+
+#ifdef QOS_DLS_SUPPORT
+VOID CntlOidDLSSetupProc(
+	IN PRTMP_ADAPTER pAd,
+	IN MLME_QUEUE_ELEM *Elem);
+#endif // QOS_DLS_SUPPORT //
+
+
+VOID LinkUp(
+	IN  PRTMP_ADAPTER   pAd,
+	IN  UCHAR BssType);
+
+VOID LinkDown(
+	IN  PRTMP_ADAPTER   pAd,
+	IN  BOOLEAN         IsReqFromAP);
+
+VOID IterateOnBssTab(
+	IN  PRTMP_ADAPTER   pAd);
+
+VOID IterateOnBssTab2(
+	IN  PRTMP_ADAPTER   pAd);;
+
+VOID JoinParmFill(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  OUT MLME_JOIN_REQ_STRUCT *JoinReq, 
+	IN  ULONG BssIdx);
+
+VOID AssocParmFill(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN OUT MLME_ASSOC_REQ_STRUCT *AssocReq, 
+	IN  PUCHAR pAddr, 
+	IN  USHORT CapabilityInfo, 
+	IN  ULONG Timeout, 
+	IN  USHORT ListenIntv);
+
+VOID ScanParmFill(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  OUT MLME_SCAN_REQ_STRUCT *ScanReq, 
+	IN  STRING Ssid[], 
+	IN  UCHAR SsidLen, 
+	IN  UCHAR BssType, 
+	IN  UCHAR ScanType); 
+
+VOID DisassocParmFill(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  OUT MLME_DISASSOC_REQ_STRUCT *DisassocReq, 
+	IN  PUCHAR pAddr, 
+	IN  USHORT Reason);
+
+VOID StartParmFill(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  OUT MLME_START_REQ_STRUCT *StartReq, 
+	IN  CHAR Ssid[], 
+	IN  UCHAR SsidLen);
+
+VOID AuthParmFill(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  OUT MLME_AUTH_REQ_STRUCT *AuthReq, 
+	IN  PUCHAR pAddr, 
+	IN  USHORT Alg);
+
+VOID EnqueuePsPoll(
+	IN  PRTMP_ADAPTER   pAd);
+
+VOID EnqueueBeaconFrame(
+	IN  PRTMP_ADAPTER   pAd); 
+
+VOID MlmeJoinReqAction(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  MLME_QUEUE_ELEM *Elem);
+
+VOID MlmeScanReqAction(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  MLME_QUEUE_ELEM *Elem);
+
+VOID MlmeStartReqAction(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  MLME_QUEUE_ELEM *Elem);
+
+VOID ScanTimeoutAction(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  MLME_QUEUE_ELEM *Elem);
+
+VOID BeaconTimeoutAtJoinAction(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  MLME_QUEUE_ELEM *Elem);
+
+VOID PeerBeaconAtScanAction(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  MLME_QUEUE_ELEM *Elem);
+
+VOID PeerBeaconAtJoinAction(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  MLME_QUEUE_ELEM *Elem);
+
+VOID PeerBeacon(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  MLME_QUEUE_ELEM *Elem);
+
+VOID PeerProbeReqAction(
+	IN  PRTMP_ADAPTER pAd, 
+	IN  MLME_QUEUE_ELEM *Elem);
+
+VOID ScanNextChannel(
+	IN  PRTMP_ADAPTER   pAd);
+
+ULONG MakeIbssBeacon(
+	IN  PRTMP_ADAPTER   pAd);
+
+#ifdef CONFIG_STA_SUPPORT
+VOID InitChannelRelatedValue(
+	IN  PRTMP_ADAPTER   pAd);
+#endif // CONFIG_STA_SUPPORT //
+
+BOOLEAN MlmeScanReqSanity(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  VOID *Msg, 
+	IN  ULONG MsgLen, 
+	OUT UCHAR *BssType, 
+	OUT CHAR ssid[], 
+	OUT UCHAR *SsidLen, 
+	OUT UCHAR *ScanType);
+
+BOOLEAN PeerBeaconAndProbeRspSanity(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  VOID *Msg, 
+	IN  ULONG MsgLen, 
+	IN  UCHAR MsgChannel,
+	OUT PUCHAR pAddr2, 
+	OUT PUCHAR pBssid, 
+	OUT CHAR Ssid[], 
+	OUT UCHAR *pSsidLen, 
+	OUT UCHAR *pBssType, 
+	OUT USHORT *pBeaconPeriod, 
+	OUT UCHAR *pChannel, 
+	OUT UCHAR *pNewChannel, 
+	OUT LARGE_INTEGER *pTimestamp, 
+	OUT CF_PARM *pCfParm, 
+	OUT USHORT *pAtimWin, 
+	OUT USHORT *pCapabilityInfo, 
+	OUT UCHAR *pErp,
+	OUT UCHAR *pDtimCount, 
+	OUT UCHAR *pDtimPeriod, 
+	OUT UCHAR *pBcastFlag, 
+	OUT UCHAR *pMessageToMe, 
+	OUT UCHAR SupRate[],
+	OUT UCHAR *pSupRateLen,
+	OUT UCHAR ExtRate[],
+	OUT UCHAR *pExtRateLen,
+	OUT	UCHAR *pCkipFlag,
+	OUT	UCHAR *pAironetCellPowerLimit,
+	OUT PEDCA_PARM       pEdcaParm,
+	OUT PQBSS_LOAD_PARM  pQbssLoad,
+	OUT PQOS_CAPABILITY_PARM pQosCapability,
+	OUT ULONG *pRalinkIe,
+	OUT UCHAR		 *pHtCapabilityLen,
+#ifdef CONFIG_STA_SUPPORT
+	OUT UCHAR		 *pPreNHtCapabilityLen,
+#endif // CONFIG_STA_SUPPORT //
+	OUT HT_CAPABILITY_IE *pHtCapability,
+	OUT EXT_CAP_INFO_ELEMENT *pExtCapInfo,
+	OUT UCHAR		 *AddHtInfoLen,
+	OUT ADD_HT_INFO_IE *AddHtInfo,
+	OUT UCHAR *NewExtChannel,
+	OUT USHORT *LengthVIE,
+	OUT PNDIS_802_11_VARIABLE_IEs pVIE);
+
+
+#ifdef DOT11_N_SUPPORT
+#ifdef DOT11N_DRAFT3
+BOOLEAN PeerBeaconAndProbeRspSanity2(
+	IN PRTMP_ADAPTER pAd, 
+	IN VOID *Msg, 
+	IN ULONG MsgLen, 
+	IN OVERLAP_BSS_SCAN_IE *BssScan,
+	OUT UCHAR 	*RegClass);
+#endif // DOT11N_DRAFT3 //
+#endif // DOT11_N_SUPPORT //
+
+BOOLEAN PeerAddBAReqActionSanity(
+    IN PRTMP_ADAPTER pAd, 
+    IN VOID *pMsg, 
+    IN ULONG MsgLen,
+	OUT PUCHAR pAddr2);
+
+BOOLEAN PeerAddBARspActionSanity(
+    IN PRTMP_ADAPTER pAd, 
+    IN VOID *pMsg, 
+    IN ULONG MsgLen);
+
+BOOLEAN PeerDelBAActionSanity(
+    IN PRTMP_ADAPTER pAd, 
+    IN UCHAR Wcid, 
+    IN VOID *pMsg, 
+    IN ULONG MsgLen);
+
+BOOLEAN MlmeAssocReqSanity(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  VOID *Msg, 
+	IN  ULONG MsgLen, 
+	OUT PUCHAR pApAddr, 
+	OUT USHORT *CapabilityInfo, 
+	OUT ULONG *Timeout, 
+	OUT USHORT *ListenIntv);
+
+BOOLEAN MlmeAuthReqSanity(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  VOID *Msg, 
+	IN  ULONG MsgLen, 
+	OUT PUCHAR pAddr, 
+	OUT ULONG *Timeout, 
+	OUT USHORT *Alg);
+
+BOOLEAN MlmeStartReqSanity(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  VOID *Msg, 
+	IN  ULONG MsgLen, 
+	OUT CHAR Ssid[], 
+	OUT UCHAR *Ssidlen);
+
+BOOLEAN PeerAuthSanity(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  VOID *Msg, 
+	IN  ULONG MsgLen, 
+	OUT PUCHAR pAddr, 
+	OUT USHORT *Alg, 
+	OUT USHORT *Seq, 
+	OUT USHORT *Status, 
+	OUT CHAR ChlgText[]);
+
+BOOLEAN PeerAssocRspSanity(
+	IN  PRTMP_ADAPTER   pAd, 
+    IN VOID *pMsg, 
+	IN  ULONG MsgLen, 
+	OUT PUCHAR pAddr2, 
+	OUT USHORT *pCapabilityInfo, 
+	OUT USHORT *pStatus, 
+	OUT USHORT *pAid, 
+	OUT UCHAR SupRate[], 
+	OUT UCHAR *pSupRateLen,
+	OUT UCHAR ExtRate[],
+	OUT UCHAR *pExtRateLen,
+    OUT HT_CAPABILITY_IE		*pHtCapability,
+    OUT ADD_HT_INFO_IE		*pAddHtInfo,	// AP might use this additional ht info IE 
+    OUT UCHAR			*pHtCapabilityLen,
+    OUT UCHAR			*pAddHtInfoLen,
+    OUT UCHAR			*pNewExtChannelOffset,
+	OUT PEDCA_PARM pEdcaParm,
+	OUT EXT_CAP_INFO_ELEMENT *pExtCapInfo,
+	OUT UCHAR *pCkipFlag);
+
+BOOLEAN PeerDisassocSanity(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  VOID *Msg, 
+	IN  ULONG MsgLen, 
+	OUT PUCHAR pAddr2, 
+	OUT USHORT *Reason);
+
+BOOLEAN PeerDeauthSanity(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  VOID *Msg, 
+	IN  ULONG MsgLen, 
+	OUT PUCHAR pAddr1,
+	OUT PUCHAR pAddr2, 
+	OUT PUCHAR pAddr3, 
+	OUT USHORT *Reason);
+
+BOOLEAN GetTimBit(
+	IN  CHAR *Ptr, 
+	IN  USHORT Aid, 
+	OUT UCHAR *TimLen, 
+	OUT UCHAR *BcastFlag, 
+	OUT UCHAR *DtimCount, 
+	OUT UCHAR *DtimPeriod, 
+	OUT UCHAR *MessageToMe);
+
+UCHAR ChannelSanity(
+	IN PRTMP_ADAPTER pAd, 
+	IN UCHAR channel);
+
+NDIS_802_11_NETWORK_TYPE NetworkTypeInUseSanity(
+	IN PBSS_ENTRY pBss);
+
+
+BOOLEAN MlmeDelBAReqSanity(
+    IN PRTMP_ADAPTER pAd, 
+    IN VOID *Msg, 
+    IN ULONG MsgLen);
+
+BOOLEAN MlmeAddBAReqSanity(
+    IN PRTMP_ADAPTER pAd, 
+    IN VOID *Msg, 
+    IN ULONG MsgLen, 
+    OUT PUCHAR pAddr2);
+
+ULONG MakeOutgoingFrame(
+	OUT UCHAR *Buffer, 
+	OUT ULONG *Length, ...);
+
+VOID  LfsrInit(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  ULONG Seed);
+
+UCHAR RandomByte(
+	IN  PRTMP_ADAPTER   pAd);
+
+VOID AsicUpdateAutoFallBackTable(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PUCHAR			pTxRate);
+
+VOID  MlmePeriodicExec(
+	IN PVOID SystemSpecific1, 
+	IN PVOID FunctionContext, 
+	IN PVOID SystemSpecific2, 
+	IN PVOID SystemSpecific3);
+
+VOID LinkDownExec(
+	IN PVOID SystemSpecific1, 
+	IN PVOID FunctionContext, 
+	IN PVOID SystemSpecific2, 
+	IN PVOID SystemSpecific3);
+
+VOID LinkUpExec(
+	IN PVOID SystemSpecific1, 
+	IN PVOID FunctionContext, 
+	IN PVOID SystemSpecific2, 
+	IN PVOID SystemSpecific3);
+
+VOID STAMlmePeriodicExec(
+	PRTMP_ADAPTER pAd);
+
+VOID MlmeAutoScan(
+	IN PRTMP_ADAPTER pAd);
+
+VOID MlmeAutoReconnectLastSSID(
+	IN PRTMP_ADAPTER pAd);
+
+BOOLEAN MlmeValidateSSID(
+	IN PUCHAR pSsid,
+	IN UCHAR  SsidLen); 
+
+VOID MlmeCheckForRoaming(
+	IN PRTMP_ADAPTER pAd,
+	IN ULONG    Now32);
+
+BOOLEAN MlmeCheckForFastRoaming(
+	IN  PRTMP_ADAPTER   pAd);
+
+VOID MlmeDynamicTxRateSwitching(
+	IN PRTMP_ADAPTER pAd);
+
+VOID MlmeSetTxRate(
+	IN PRTMP_ADAPTER		pAd,
+	IN PMAC_TABLE_ENTRY		pEntry,
+	IN PRTMP_TX_RATE_SWITCH	pTxRate);
+
+VOID MlmeSelectTxRateTable(
+	IN PRTMP_ADAPTER		pAd,
+	IN PMAC_TABLE_ENTRY		pEntry,
+	IN PUCHAR				*ppTable,
+	IN PUCHAR				pTableSize,
+	IN PUCHAR				pInitTxRateIdx);
+
+VOID MlmeCalculateChannelQuality(
+	IN PRTMP_ADAPTER pAd,
+	IN PMAC_TABLE_ENTRY pMacEntry,
+	IN ULONG Now);
+
+VOID MlmeCheckPsmChange(
+	IN PRTMP_ADAPTER pAd,
+	IN ULONG    Now32);
+
+VOID MlmeSetPsmBit(
+	IN PRTMP_ADAPTER pAd, 
+	IN USHORT psm);
+
+VOID MlmeSetTxPreamble(
+	IN PRTMP_ADAPTER pAd, 
+	IN USHORT TxPreamble);
+
+VOID UpdateBasicRateBitmap(
+	IN	PRTMP_ADAPTER	pAd);
+
+VOID MlmeUpdateTxRates(
+	IN PRTMP_ADAPTER 	pAd,
+	IN 	BOOLEAN		 	bLinkUp,
+	IN	UCHAR			apidx);
+
+#ifdef DOT11_N_SUPPORT
+VOID MlmeUpdateHtTxRates(
+	IN PRTMP_ADAPTER 		pAd,
+	IN	UCHAR				apidx);
+#endif // DOT11_N_SUPPORT //
+
+VOID    RTMPCheckRates(
+	IN      PRTMP_ADAPTER   pAd,
+	IN OUT  UCHAR           SupRate[],
+	IN OUT  UCHAR           *SupRateLen);
+
+#ifdef CONFIG_STA_SUPPORT
+BOOLEAN RTMPCheckChannel(
+	IN PRTMP_ADAPTER pAd,
+	IN UCHAR		CentralChannel,
+	IN UCHAR		Channel);
+#endif // CONFIG_STA_SUPPORT //
+
+BOOLEAN 	RTMPCheckHt(
+	IN		PRTMP_ADAPTER	pAd,
+	IN		UCHAR	Wcid,
+	IN OUT	HT_CAPABILITY_IE			*pHtCapability,
+	IN OUT	ADD_HT_INFO_IE			*pAddHtInfo);
+
+VOID StaQuickResponeForRateUpExec(
+	IN PVOID SystemSpecific1, 
+	IN PVOID FunctionContext, 
+	IN PVOID SystemSpecific2, 
+	IN PVOID SystemSpecific3);
+
+VOID AsicBbpTuning1(
+	IN PRTMP_ADAPTER pAd);
+
+VOID AsicBbpTuning2(
+	IN PRTMP_ADAPTER pAd);
+
+VOID RTMPUpdateMlmeRate(
+	IN PRTMP_ADAPTER	pAd);
+
+CHAR RTMPMaxRssi(
+	IN PRTMP_ADAPTER	pAd,
+	IN CHAR				Rssi0,
+	IN CHAR				Rssi1,
+	IN CHAR				Rssi2);
+//Fix 2860 compile bug.
+VOID AsicSetRxAnt(
+	IN PRTMP_ADAPTER	pAd,
+	IN UCHAR			Ant);
+
+#ifdef RT30xx
+
+//Move AsicSetRxAnt to the upper to fix 2860 compile bug.
+VOID RTMPFilterCalibration(
+	IN PRTMP_ADAPTER pAd);
+
+#ifdef RTMP_EFUSE_SUPPORT
+//2008/09/11:KH add to support efuse<--
+INT set_eFuseGetFreeBlockCount_Proc(  
+   	IN	PRTMP_ADAPTER	pAd,
+	IN	PSTRING			arg);
+
+INT set_eFusedump_Proc(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PSTRING			arg);
+
+INT set_eFuseLoadFromBin_Proc(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PSTRING			arg);
+
+VOID eFusePhysicalReadRegisters( 
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	USHORT Offset, 
+	IN	USHORT Length, 
+	OUT	USHORT* pData);
+
+int RtmpEfuseSupportCheck(
+	IN RTMP_ADAPTER *pAd);
+
+#ifdef RALINK_ATE
+INT set_eFuseBufferModeWriteBack_Proc(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PSTRING			arg);
+#endif // RALINK_ATE //
+
+INT eFuseLoadEEPROM(
+	IN PRTMP_ADAPTER pAd);
+
+INT eFuseWriteEeeppromBuf(
+	IN PRTMP_ADAPTER pAd);
+
+VOID eFuseGetFreeBlockCount(IN PRTMP_ADAPTER pAd, 
+	PUINT EfuseFreeBlock);
+
+INT eFuse_init(
+	IN PRTMP_ADAPTER pAd);
+
+NTSTATUS eFuseRead(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	USHORT			Offset,
+	OUT	PUSHORT			pData,
+	IN	USHORT			Length);
+
+NTSTATUS eFuseWrite(  
+   	IN	PRTMP_ADAPTER	pAd,
+	IN	USHORT			Offset,
+	IN	PUSHORT			pData,
+	IN	USHORT			length);
+//2008/09/11:KH add to support efuse-->
+#endif // RTMP_EFUSE_SUPPORT //
+
+// add by johnli, RF power sequence setup
+VOID RT30xxLoadRFNormalModeSetup(
+	IN PRTMP_ADAPTER 	pAd);
+
+VOID RT30xxLoadRFSleepModeSetup(
+	IN PRTMP_ADAPTER 	pAd);
+
+VOID RT30xxReverseRFSleepModeSetup(
+	IN PRTMP_ADAPTER 	pAd);
+// end johnli
+
+
+
+VOID RT30xxHaltAction(
+	IN PRTMP_ADAPTER 	pAd);
+
+VOID RT30xxSetRxAnt(
+	IN PRTMP_ADAPTER	pAd,
+	IN UCHAR			Ant);
+#endif // RT30xx //
+
+#ifdef RT35xx
+VOID NICInitRT3572RFRegisters(
+	IN PRTMP_ADAPTER pAd);
+
+VOID RT3572ReverseRFSleepModeSetup(
+	IN PRTMP_ADAPTER 	pAd);
+#endif // RT35xx //
+
+
+VOID AsicEvaluateRxAnt(
+	IN PRTMP_ADAPTER	pAd);
+
+VOID AsicRxAntEvalTimeout(
+	IN PVOID SystemSpecific1, 
+	IN PVOID FunctionContext, 
+	IN PVOID SystemSpecific2, 
+	IN PVOID SystemSpecific3);
+
+VOID APSDPeriodicExec(
+	IN PVOID SystemSpecific1, 
+	IN PVOID FunctionContext, 
+	IN PVOID SystemSpecific2, 
+	IN PVOID SystemSpecific3);
+
+BOOLEAN RTMPCheckEntryEnableAutoRateSwitch(
+	IN PRTMP_ADAPTER    pAd,
+	IN PMAC_TABLE_ENTRY	pEntry);
+
+UCHAR RTMPStaFixedTxMode(
+	IN PRTMP_ADAPTER    pAd,
+	IN PMAC_TABLE_ENTRY	pEntry);
+
+VOID RTMPUpdateLegacyTxSetting(
+		UCHAR				fixed_tx_mode,
+		PMAC_TABLE_ENTRY	pEntry);
+
+BOOLEAN RTMPAutoRateSwitchCheck(
+	IN PRTMP_ADAPTER    pAd);
+
+NDIS_STATUS MlmeInit(
+	IN  PRTMP_ADAPTER   pAd);
+
+VOID MlmeHandler(
+	IN  PRTMP_ADAPTER   pAd);
+
+VOID MlmeHalt(
+	IN  PRTMP_ADAPTER   pAd);
+
+VOID MlmeResetRalinkCounters(
+	IN  PRTMP_ADAPTER   pAd);
+
+VOID BuildChannelList(
+	IN PRTMP_ADAPTER pAd);
+
+UCHAR FirstChannel(
+	IN  PRTMP_ADAPTER   pAd);
+
+UCHAR NextChannel(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  UCHAR channel);
+
+VOID ChangeToCellPowerLimit(
+	IN PRTMP_ADAPTER pAd,
+	IN UCHAR         AironetCellPowerLimit);
+
+//
+// Prototypes of function definition in cmm_tkip.c
+//
+VOID    RTMPInitTkipEngine(
+	IN  PRTMP_ADAPTER   pAd,    
+	IN  PUCHAR          pTKey,
+	IN  UCHAR           KeyId,
+	IN  PUCHAR          pTA,
+	IN  PUCHAR          pMICKey,
+	IN  PUCHAR          pTSC,
+	OUT PULONG          pIV16,
+	OUT PULONG          pIV32);
+
+VOID    RTMPInitMICEngine(
+	IN  PRTMP_ADAPTER   pAd,    
+	IN  PUCHAR          pKey,
+	IN  PUCHAR          pDA,
+	IN  PUCHAR          pSA,
+	IN  UCHAR           UserPriority,
+	IN  PUCHAR          pMICKey);
+
+BOOLEAN RTMPTkipCompareMICValue(
+	IN  PRTMP_ADAPTER   pAd,
+	IN  PUCHAR          pSrc,
+	IN  PUCHAR          pDA,
+	IN  PUCHAR          pSA,
+	IN  PUCHAR          pMICKey,
+	IN	UCHAR			UserPriority,
+	IN  UINT            Len);
+
+VOID    RTMPCalculateMICValue(
+	IN  PRTMP_ADAPTER   pAd,
+	IN  PNDIS_PACKET    pPacket,
+	IN  PUCHAR          pEncap,
+	IN  PCIPHER_KEY     pKey,
+	IN	UCHAR			apidx);
+
+BOOLEAN RTMPTkipCompareMICValueWithLLC(
+	IN  PRTMP_ADAPTER   pAd,
+	IN  PUCHAR          pLLC,
+	IN  PUCHAR          pSrc,
+	IN  PUCHAR          pDA,
+	IN  PUCHAR          pSA,
+	IN  PUCHAR          pMICKey,
+	IN  UINT            Len);
+
+VOID    RTMPTkipAppendByte( 
+	IN  PTKIP_KEY_INFO  pTkip,  
+	IN  UCHAR           uChar);
+
+VOID    RTMPTkipAppend( 
+	IN  PTKIP_KEY_INFO  pTkip,  
+	IN  PUCHAR          pSrc,
+	IN  UINT            nBytes);
+
+VOID    RTMPTkipGetMIC( 
+	IN  PTKIP_KEY_INFO  pTkip);
+
+//
+// Prototypes of function definition in cmm_cfg.c
+//
+INT RT_CfgSetCountryRegion(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg,
+	IN INT				band);
+
+INT RT_CfgSetWirelessMode(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT RT_CfgSetShortSlot(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT	RT_CfgSetWepKey(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			keyString,
+	IN	CIPHER_KEY		*pSharedKey,
+	IN	INT				keyIdx);
+
+INT RT_CfgSetWPAPSKKey(
+	IN RTMP_ADAPTER	*pAd, 
+	IN PSTRING		keyString,
+	IN UCHAR		*pHashStr,
+	IN INT			hashStrLen,
+	OUT PUCHAR		pPMKBuf);
+
+INT	RT_CfgSetFixedTxPhyMode(
+	IN	PSTRING			arg);
+
+INT	RT_CfgSetMacAddress(
+	IN 	PRTMP_ADAPTER 	pAd,
+	IN	PSTRING			arg);
+
+INT	RT_CfgSetTxMCSProc(
+	IN	PSTRING			arg,
+	OUT	BOOLEAN			*pAutoRate);
+
+INT	RT_CfgSetAutoFallBack(
+	IN 	PRTMP_ADAPTER 	pAd,
+	IN	PSTRING			arg);
+
+
+
+//
+// Prototypes of function definition in cmm_info.c
+//
+NDIS_STATUS RTMPWPARemoveKeyProc(
+	IN  PRTMP_ADAPTER   pAd,
+	IN  PVOID           pBuf);
+
+VOID    RTMPWPARemoveAllKeys(
+	IN  PRTMP_ADAPTER   pAd);
+
+BOOLEAN RTMPCheckStrPrintAble(
+    IN  CHAR *pInPutStr, 
+    IN  UCHAR strLen);
+    
+VOID    RTMPSetPhyMode(
+	IN  PRTMP_ADAPTER   pAd,
+	IN  ULONG phymode);
+
+VOID	RTMPUpdateHTIE(
+	IN	RT_HT_CAPABILITY	*pRtHt,
+	IN		UCHAR				*pMcsSet,
+	OUT		HT_CAPABILITY_IE *pHtCapability,
+	OUT		ADD_HT_INFO_IE		*pAddHtInfo);
+
+VOID	RTMPAddWcidAttributeEntry(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	UCHAR			BssIdx,
+	IN 	UCHAR		 	KeyIdx,
+	IN 	UCHAR		 	CipherAlg,
+	IN 	MAC_TABLE_ENTRY *pEntry);
+
+PSTRING GetEncryptType(
+	CHAR enc);
+
+PSTRING GetAuthMode(
+	CHAR auth);
+
+
+VOID RTMPIndicateWPA2Status(
+	IN  PRTMP_ADAPTER  pAdapter);
+
+VOID	RTMPOPModeSwitching(
+	IN	PRTMP_ADAPTER	pAd);
+
+
+#ifdef DOT11_N_SUPPORT
+VOID	RTMPSetHT(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	OID_SET_HT_PHYMODE *pHTPhyMode);
+
+VOID	RTMPSetIndividualHT(
+	IN	PRTMP_ADAPTER		pAd,
+	IN	UCHAR				apidx);
+#endif // DOT11_N_SUPPORT //
+
+#ifdef SYSTEM_LOG_SUPPORT
+VOID RTMPSendWirelessEvent(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	USHORT			Event_flag,
+	IN	PUCHAR 			pAddr,
+	IN  UCHAR			BssIdx,
+	IN	CHAR			Rssi);
+#else
+#define RTMPSendWirelessEvent(_pAd, _Event_flag, _pAddr, _BssIdx, _Rssi)
+#endif // SYSTEM_LOG_SUPPORT //
+	
+VOID	NICUpdateCntlCounters(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PHEADER_802_11	pHeader,
+	IN    UCHAR			SubType,
+	IN	PRXWI_STRUC 	pRxWI);
+
+VOID    DBGPRINT_TX_RING(
+	IN PRTMP_ADAPTER  pAd,
+	IN UCHAR          QueIdx);
+
+VOID DBGPRINT_RX_RING(
+	IN PRTMP_ADAPTER  pAd);
+
+CHAR    ConvertToRssi(
+	IN PRTMP_ADAPTER  pAd,
+	IN CHAR				Rssi,
+	IN UCHAR    RssiNumber);
+
+
+#ifdef DOT11N_DRAFT3
+VOID BuildEffectedChannelList(
+	IN PRTMP_ADAPTER pAd);
+
+
+VOID DeleteEffectedChannelList(
+	IN PRTMP_ADAPTER pAd);
+
+VOID CntlChannelWidth(
+	IN PRTMP_ADAPTER	pAd,
+	IN UCHAR			PrimaryChannel,
+	IN UCHAR			CentralChannel,	
+	IN UCHAR			ChannelWidth,
+	IN UCHAR			SecondaryChannelOffset);
+
+#endif // DOT11N_DRAFT3 //
+
+
+VOID APAsicEvaluateRxAnt(
+	IN PRTMP_ADAPTER	pAd);
+
+
+VOID APAsicRxAntEvalTimeout(
+	IN PRTMP_ADAPTER	pAd);
+
+#ifdef RT2883_TEMP_PATCH
+VOID eTxBfProbeTimerExec(
+	IN PVOID SystemSpecific1, 
+	IN PVOID FunctionContext, 
+	IN PVOID SystemSpecific2,
+	IN PVOID SystemSpecific3);
+#endif // RT2883_TEMP_PATCH //
+
+// 
+// function prototype in ap_wpa.c
+//
+VOID RTMPGetTxTscFromAsic(
+	IN  PRTMP_ADAPTER   pAd,
+	IN	UCHAR			apidx,
+	OUT	PUCHAR			pTxTsc);
+
+MAC_TABLE_ENTRY *PACInquiry(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  ULONG           Wcid);
+
+UINT	APValidateRSNIE(
+	IN PRTMP_ADAPTER    pAd,
+	IN PMAC_TABLE_ENTRY pEntry,
+	IN PUCHAR			pRsnIe,
+	IN UCHAR			rsnie_len);
+
+VOID HandleCounterMeasure(
+	IN PRTMP_ADAPTER pAd, 
+	IN MAC_TABLE_ENTRY  *pEntry);
+
+VOID WPAStart4WayHS(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  MAC_TABLE_ENTRY *pEntry,
+	IN	ULONG			TimeInterval);
+
+VOID WPAStart2WayGroupHS(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  MAC_TABLE_ENTRY *pEntry);
+
+VOID PeerPairMsg1Action(
+	IN PRTMP_ADAPTER pAd, 
+	IN MAC_TABLE_ENTRY  *pEntry,
+	IN MLME_QUEUE_ELEM *Elem);
+
+VOID PeerPairMsg2Action(
+	IN PRTMP_ADAPTER pAd, 
+	IN MAC_TABLE_ENTRY  *pEntry,
+	IN MLME_QUEUE_ELEM *Elem);
+
+VOID PeerPairMsg3Action(
+	IN PRTMP_ADAPTER pAd, 
+	IN MAC_TABLE_ENTRY  *pEntry,
+	IN MLME_QUEUE_ELEM *Elem);
+
+VOID PeerPairMsg4Action(
+	IN PRTMP_ADAPTER pAd, 
+	IN MAC_TABLE_ENTRY  *pEntry,
+	IN MLME_QUEUE_ELEM *Elem);
+
+VOID PeerGroupMsg1Action(
+	IN  PRTMP_ADAPTER    pAd, 
+	IN  PMAC_TABLE_ENTRY pEntry,
+    IN  MLME_QUEUE_ELEM  *Elem);
+
+VOID PeerGroupMsg2Action(
+	IN  PRTMP_ADAPTER    pAd, 
+	IN  PMAC_TABLE_ENTRY pEntry,
+	IN  VOID             *Msg,
+	IN  UINT             MsgLen);
+
+VOID CMTimerExec(
+	IN PVOID SystemSpecific1, 
+	IN PVOID FunctionContext, 
+	IN PVOID SystemSpecific2, 
+	IN PVOID SystemSpecific3);
+
+VOID WPARetryExec(
+	IN PVOID SystemSpecific1, 
+	IN PVOID FunctionContext, 
+	IN PVOID SystemSpecific2, 
+	IN PVOID SystemSpecific3);
+
+VOID EnqueueStartForPSKExec(
+    IN PVOID SystemSpecific1, 
+    IN PVOID FunctionContext, 
+    IN PVOID SystemSpecific2, 
+    IN PVOID SystemSpecific3); 
+
+VOID RTMPHandleSTAKey(
+    IN PRTMP_ADAPTER    pAdapter, 
+    IN MAC_TABLE_ENTRY  *pEntry,
+    IN MLME_QUEUE_ELEM  *Elem);
+
+VOID PairDisAssocAction(
+	IN  PRTMP_ADAPTER    pAd, 
+	IN  PMAC_TABLE_ENTRY pEntry,
+	IN  USHORT           Reason);
+
+VOID MlmeDeAuthAction(
+	IN  PRTMP_ADAPTER    pAd, 
+	IN  PMAC_TABLE_ENTRY pEntry,
+	IN  USHORT           Reason,
+	IN  BOOLEAN          bDataFrameFirst);
+
+VOID GREKEYPeriodicExec(
+	IN  PVOID   SystemSpecific1, 
+	IN  PVOID   FunctionContext, 
+	IN  PVOID   SystemSpecific2, 
+	IN  PVOID   SystemSpecific3);
+
+VOID AES_128_CMAC(
+	IN	PUCHAR	key,
+	IN	PUCHAR	input,
+	IN	INT		len,
+	OUT	PUCHAR	mac);
+
+#ifdef DOT1X_SUPPORT
+VOID    WpaSend(
+    IN  PRTMP_ADAPTER   pAdapter,
+    IN  PUCHAR          pPacket,
+    IN  ULONG           Len);
+
+VOID RTMPAddPMKIDCache(
+	IN  PRTMP_ADAPTER   		pAd,
+	IN	INT						apidx,
+	IN	PUCHAR				pAddr,
+	IN	UCHAR					*PMKID,
+	IN	UCHAR					*PMK);
+
+INT RTMPSearchPMKIDCache(
+	IN  PRTMP_ADAPTER   pAd,
+	IN	INT				apidx,
+	IN	PUCHAR		pAddr);
+
+VOID RTMPDeletePMKIDCache(
+	IN  PRTMP_ADAPTER   pAd,
+	IN	INT				apidx,
+	IN  INT				idx);
+
+VOID RTMPMaintainPMKIDCache(
+	IN  PRTMP_ADAPTER   pAd);
+#else
+#define RTMPMaintainPMKIDCache(_pAd)
+#endif // DOT1X_SUPPORT //
+
+VOID	RTMPSendTriggerFrame(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PVOID			pBuffer,
+	IN	ULONG			Length,
+	IN  UCHAR           TxRate,
+	IN	BOOLEAN			bQosNull);
+
+//typedef void (*TIMER_FUNCTION)(unsigned long);
+
+
+/* timeout -- ms */
+VOID RTMP_SetPeriodicTimer(
+	IN	NDIS_MINIPORT_TIMER *pTimer, 
+	IN	unsigned long timeout);
+
+VOID RTMP_OS_Init_Timer(
+	IN	PRTMP_ADAPTER pAd, 
+	IN	NDIS_MINIPORT_TIMER *pTimer, 
+	IN	TIMER_FUNCTION function,
+	IN	PVOID data);
+
+VOID RTMP_OS_Add_Timer(
+	IN	NDIS_MINIPORT_TIMER	*pTimer,
+	IN	unsigned long timeout);
+
+VOID RTMP_OS_Mod_Timer(
+	IN	NDIS_MINIPORT_TIMER	*pTimer,
+	IN	unsigned long timeout);
+
+
+VOID RTMP_OS_Del_Timer(
+	IN	NDIS_MINIPORT_TIMER	*pTimer,
+	OUT	BOOLEAN				 *pCancelled);
+
+
+VOID RTMPusecDelay(
+	IN	ULONG	usec);
+
+NDIS_STATUS os_alloc_mem(
+	IN	RTMP_ADAPTER *pAd,
+	OUT	UCHAR **mem,
+	IN	ULONG  size);
+
+NDIS_STATUS os_free_mem(
+	IN	PRTMP_ADAPTER pAd,
+	IN	PVOID mem);
+
+
+void RTMP_AllocateSharedMemory(
+	IN	PRTMP_ADAPTER pAd,
+	IN	ULONG	Length,
+	IN	BOOLEAN	Cached,
+	OUT	PVOID	*VirtualAddress,
+	OUT	PNDIS_PHYSICAL_ADDRESS PhysicalAddress);
+
+VOID RTMPFreeTxRxRingMemory(
+    IN  PRTMP_ADAPTER   pAd);
+
+NDIS_STATUS AdapterBlockAllocateMemory(
+	IN PVOID	handle,
+	OUT	PVOID	*ppAd);
+
+void RTMP_AllocateTxDescMemory(
+	IN	PRTMP_ADAPTER pAd,
+	IN	UINT	Index,
+	IN	ULONG	Length,
+	IN	BOOLEAN	Cached,
+	OUT	PVOID	*VirtualAddress,
+	OUT	PNDIS_PHYSICAL_ADDRESS PhysicalAddress);
+
+void RTMP_AllocateFirstTxBuffer(
+	IN	PRTMP_ADAPTER pAd,
+	IN	UINT	Index,
+	IN	ULONG	Length,
+	IN	BOOLEAN	Cached,
+	OUT	PVOID	*VirtualAddress,
+	OUT	PNDIS_PHYSICAL_ADDRESS PhysicalAddress);
+
+void RTMP_FreeFirstTxBuffer(
+	IN	PRTMP_ADAPTER pAd,
+	IN	ULONG	Length,
+	IN	BOOLEAN	Cached,
+	IN	PVOID	VirtualAddress,
+	IN	NDIS_PHYSICAL_ADDRESS PhysicalAddress);
+	
+void RTMP_AllocateMgmtDescMemory(
+	IN	PRTMP_ADAPTER pAd,
+	IN	ULONG	Length,
+	IN	BOOLEAN	Cached,
+	OUT	PVOID	*VirtualAddress,
+	OUT	PNDIS_PHYSICAL_ADDRESS PhysicalAddress);
+
+void RTMP_AllocateRxDescMemory(
+	IN	PRTMP_ADAPTER pAd,
+	IN	ULONG	Length,
+	IN	BOOLEAN	Cached,
+	OUT	PVOID	*VirtualAddress,
+	OUT	PNDIS_PHYSICAL_ADDRESS PhysicalAddress);
+
+void RTMP_FreeDescMemory(
+	IN	PRTMP_ADAPTER pAd,
+	IN	ULONG	Length,
+	IN	PVOID	VirtualAddress,
+	IN	NDIS_PHYSICAL_ADDRESS PhysicalAddress);
+
+PNDIS_PACKET RtmpOSNetPktAlloc(
+	IN RTMP_ADAPTER *pAd, 
+	IN int size);
+	
+PNDIS_PACKET RTMP_AllocateRxPacketBuffer(
+	IN	PRTMP_ADAPTER pAd,
+	IN	ULONG	Length,
+	IN	BOOLEAN	Cached,
+	OUT	PVOID	*VirtualAddress,
+	OUT	PNDIS_PHYSICAL_ADDRESS PhysicalAddress);
+
+PNDIS_PACKET RTMP_AllocateTxPacketBuffer(
+	IN	PRTMP_ADAPTER pAd,
+	IN	ULONG	Length,
+	IN	BOOLEAN	Cached,
+	OUT	PVOID	*VirtualAddress);
+
+PNDIS_PACKET RTMP_AllocateFragPacketBuffer(
+	IN	PRTMP_ADAPTER pAd,
+	IN	ULONG	Length);
+
+void RTMP_QueryPacketInfo(
+	IN  PNDIS_PACKET pPacket,
+	OUT PACKET_INFO  *pPacketInfo,
+	OUT PUCHAR		 *pSrcBufVA,
+	OUT	UINT		 *pSrcBufLen);
+
+void RTMP_QueryNextPacketInfo(
+	IN  PNDIS_PACKET *ppPacket,
+	OUT PACKET_INFO  *pPacketInfo,
+	OUT PUCHAR		 *pSrcBufVA,
+	OUT	UINT		 *pSrcBufLen);
+
+
+BOOLEAN RTMP_FillTxBlkInfo(
+	IN RTMP_ADAPTER *pAd,
+	IN TX_BLK *pTxBlk);
+
+
+PRTMP_SCATTER_GATHER_LIST
+rt_get_sg_list_from_packet(PNDIS_PACKET pPacket, RTMP_SCATTER_GATHER_LIST *sg);
+
+
+ void announce_802_3_packet(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PNDIS_PACKET	pPacket);
+
+
+UINT BA_Reorder_AMSDU_Annnounce(
+	IN	PRTMP_ADAPTER	pAd, 	
+	IN	PNDIS_PACKET	pPacket);
+
+
+UINT Handle_AMSDU_Packet(
+	IN	PRTMP_ADAPTER	pAd, 	
+	IN	PUCHAR			pData,
+	IN	ULONG			DataSize,
+	IN  UCHAR			FromWhichBSSID);
+
+
+void convert_802_11_to_802_3_packet(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PNDIS_PACKET	pPacket,
+	IN	PUCHAR			p8023hdr,
+	IN	PUCHAR			pData,
+	IN	ULONG			DataSize,
+	IN  UCHAR			FromWhichBSSID);
+
+
+PNET_DEV get_netdev_from_bssid(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	UCHAR			FromWhichBSSID);
+
+
+PNDIS_PACKET duplicate_pkt(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PUCHAR			pHeader802_3,
+    IN  UINT            HdrLen,
+	IN	PUCHAR			pData,
+	IN	ULONG			DataSize,
+	IN	UCHAR			FromWhichBSSID);
+
+
+PNDIS_PACKET duplicate_pkt_with_TKIP_MIC(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PNDIS_PACKET	pOldPkt);
+	
+PNDIS_PACKET duplicate_pkt_with_VLAN(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PUCHAR			pHeader802_3,
+    IN  UINT            HdrLen,
+	IN	PUCHAR			pData,
+	IN	ULONG			DataSize,
+	IN	UCHAR			FromWhichBSSID,
+	IN	UCHAR			*TPID);
+
+
+PNDIS_PACKET ExpandPacket(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PNDIS_PACKET	pPacket,
+	IN	UINT32			ext_head_len,
+	IN	UINT32			ext_tail_len);
+
+UCHAR VLAN_8023_Header_Copy(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PUCHAR			pHeader802_3,
+	IN	UINT            HdrLen,
+	OUT PUCHAR			pData,
+	IN	UCHAR			FromWhichBSSID,
+	IN	UCHAR			*TPID);
+
+#ifdef DOT11_N_SUPPORT
+void ba_flush_reordering_timeout_mpdus(
+	IN PRTMP_ADAPTER	pAd, 
+	IN PBA_REC_ENTRY	pBAEntry,
+	IN ULONG			Now32);
+
+
+VOID BAOriSessionSetUp(
+			IN PRTMP_ADAPTER    pAd, 
+			IN MAC_TABLE_ENTRY	*pEntry,
+			IN UCHAR			TID,
+			IN USHORT			TimeOut,
+			IN ULONG			DelayTime,
+			IN BOOLEAN		isForced);
+
+VOID BASessionTearDownALL(
+	IN OUT	PRTMP_ADAPTER pAd, 
+	IN		UCHAR Wcid);
+#endif // DOT11_N_SUPPORT //
+
+BOOLEAN OS_Need_Clone_Packet(void);
+
+
+VOID build_tx_packet(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PNDIS_PACKET	pPacket,
+	IN	PUCHAR	pFrame,
+	IN	ULONG	FrameLen);
+
+
+VOID BAOriSessionTearDown(
+	IN OUT	PRTMP_ADAPTER	pAd, 
+	IN		UCHAR			Wcid,
+	IN		UCHAR			TID,
+	IN		BOOLEAN			bPassive,
+	IN		BOOLEAN			bForceSend);
+
+VOID BARecSessionTearDown(
+	IN OUT	PRTMP_ADAPTER	pAd, 
+	IN		UCHAR			Wcid,
+	IN		UCHAR			TID,
+	IN		BOOLEAN			bPassive);
+
+BOOLEAN ba_reordering_resource_init(PRTMP_ADAPTER pAd, int num);
+void ba_reordering_resource_release(PRTMP_ADAPTER pAd);
+
+INT ComputeChecksum(
+	IN UINT PIN);
+
+UINT GenerateWpsPinCode(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	UCHAR	apidx);
+
+
+#ifdef NINTENDO_AP
+VOID	InitNINTENDO_TABLE(
+	IN PRTMP_ADAPTER pAd);
+
+UCHAR	CheckNINTENDO_TABLE(
+	IN PRTMP_ADAPTER pAd, 
+	PCHAR pDS_Ssid, 
+	UCHAR DS_SsidLen, 
+	PUCHAR pDS_Addr);
+
+UCHAR	DelNINTENDO_ENTRY(
+	IN	PRTMP_ADAPTER pAd,
+	UCHAR * pDS_Addr);
+
+VOID	RTMPIoctlNintendoCapable(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	struct iwreq	*wrq);
+
+VOID	RTMPIoctlNintendoGetTable(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	struct iwreq	*wrq);
+
+VOID	RTMPIoctlNintendoSetTable(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	struct iwreq	*wrq);
+
+#endif // NINTENDO_AP //
+
+BOOLEAN rtstrmactohex(
+	IN PSTRING s1,
+	IN PSTRING s2);
+
+BOOLEAN rtstrcasecmp(
+	IN PSTRING s1,
+	IN PSTRING s2);
+
+PSTRING rtstrstruncasecmp(
+	IN PSTRING s1,
+	IN PSTRING s2);
+
+PSTRING rtstrstr(
+	IN	const PSTRING s1,
+	IN	const PSTRING s2);
+
+PSTRING rstrtok(
+	IN PSTRING s,
+	IN const PSTRING ct);
+	
+int rtinet_aton(
+	const PSTRING cp, 
+	unsigned int *addr);
+	
+////////// common ioctl functions //////////
+INT Set_DriverVersion_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT Set_CountryRegion_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT Set_CountryRegionABand_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT Set_WirelessMode_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT Set_Channel_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT	Set_ShortSlot_Proc(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PSTRING			arg);
+
+INT	Set_TxPower_Proc(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PSTRING			arg);
+
+INT Set_BGProtection_Proc(
+	IN  PRTMP_ADAPTER		pAd, 
+	IN  PSTRING			arg);
+
+INT Set_TxPreamble_Proc(
+	IN  PRTMP_ADAPTER		pAd,
+	IN  PSTRING			arg);
+
+INT Set_RTSThreshold_Proc(
+	IN  PRTMP_ADAPTER		pAd,
+	IN  PSTRING			arg);
+
+INT Set_FragThreshold_Proc(
+	IN  PRTMP_ADAPTER		pAd,
+	IN  PSTRING			arg);
+
+INT Set_TxBurst_Proc(
+	IN  PRTMP_ADAPTER		pAd,
+	IN  PSTRING			arg);
+
+#ifdef AGGREGATION_SUPPORT
+INT	Set_PktAggregate_Proc(
+	IN  PRTMP_ADAPTER		pAd,
+	IN  PSTRING			arg);
+#endif // AGGREGATION_SUPPORT //
+
+#ifdef INF_AMAZON_PPA
+INT	Set_INF_AMAZON_SE_PPA_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PUCHAR			arg);
+
+#endif // INF_AMAZON_PPA //
+
+INT	Set_IEEE80211H_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+#ifdef DBG
+INT	Set_Debug_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+#endif
+
+INT	Show_DescInfo_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT	Set_ResetStatCounter_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+#ifdef DOT11_N_SUPPORT
+INT	Set_BASetup_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT	Set_BADecline_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT	Set_BAOriTearDown_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT	Set_BARecTearDown_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT	Set_HtBw_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT	Set_HtMcs_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT	Set_HtGi_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT	Set_HtOpMode_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT	Set_HtStbc_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT	Set_HtHtc_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT	Set_HtExtcha_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT	Set_HtMpduDensity_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT	Set_HtBaWinSize_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT	Set_HtRdg_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT	Set_HtLinkAdapt_Proc(																																																																																																																																																																																																																																									
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT	Set_HtAmsdu_Proc(																																																																																																																																																																																																																																																																																																																			
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+	
+INT	Set_HtAutoBa_Proc(																																																																																																																																																																																																																																																																																																																			
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+					
+INT	Set_HtProtect_Proc(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PSTRING			arg);
+
+INT	Set_HtMimoPs_Proc(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PSTRING			arg);
+
+#ifdef DOT11N_DRAFT3
+INT Set_HT_BssCoex_Proc(
+	IN	PRTMP_ADAPTER		pAd,
+	IN	PSTRING				pParam);
+#endif // DOT11N_DRAFT3 //
+
+
+
+INT	Set_ForceShortGI_Proc(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PSTRING			arg);
+
+INT	Set_ForceGF_Proc(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PSTRING			arg);
+
+INT	SetCommonHT(
+	IN	PRTMP_ADAPTER	pAd);
+
+INT	Set_SendPSMPAction_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT	Set_HtMIMOPSmode_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+
+INT	Set_HtTxBASize_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT	Set_HtDisallowTKIP_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+#endif // DOT11_N_SUPPORT //
+
+#ifdef RT2883_TEMP_PATCH
+INT	Set_ETxBfEnCond_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PCHAR			arg);
+
+INT	Set_NoSndgCntThrd_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PCHAR			arg);
+
+INT	Set_NdpSndgStreams_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PCHAR			arg);
+
+INT	Set_PerThrdAdj_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PCHAR			arg);
+
+INT Set_Trigger_Sounding_Proc(
+    IN  PRTMP_ADAPTER   pAdapter, 
+    IN  PCHAR          arg);
+#endif // RT2883_TEMP_PATCH //
+
+#ifdef APCLI_SUPPORT
+INT RTMPIoctlConnStatus(
+    IN  PRTMP_ADAPTER   pAdapter, 
+    IN  PCHAR          arg);
+
+#endif //APCLI_SUPPORT//
+
+
+
+#ifdef CONFIG_STA_SUPPORT
+//Dls ,	kathy
+VOID RTMPSendDLSTearDownFrame(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PUCHAR			pDA);
+
+#ifdef DOT11_N_SUPPORT
+//Block ACK
+VOID QueryBATABLE(
+	IN  PRTMP_ADAPTER pAd,
+	OUT PQUERYBA_TABLE pBAT);
+#endif // DOT11_N_SUPPORT //
+
+#ifdef WPA_SUPPLICANT_SUPPORT
+INT	    WpaCheckEapCode(
+	IN  PRTMP_ADAPTER   	pAd,
+	IN  PUCHAR				pFrame,
+	IN  USHORT				FrameLen,
+	IN  USHORT				OffSet);
+
+VOID    WpaSendMicFailureToWpaSupplicant(
+    IN  PRTMP_ADAPTER       pAd,
+    IN  BOOLEAN             bUnicast);
+
+VOID    SendAssocIEsToWpaSupplicant( 
+    IN  PRTMP_ADAPTER       pAd);
+#endif // WPA_SUPPLICANT_SUPPORT //
+
+#ifdef NATIVE_WPA_SUPPLICANT_SUPPORT
+int wext_notify_event_assoc(
+	IN  RTMP_ADAPTER *pAd);
+#endif // NATIVE_WPA_SUPPLICANT_SUPPORT //
+
+#endif // CONFIG_STA_SUPPORT //
+
+
+
+#ifdef DOT11_N_SUPPORT
+VOID Handle_BSS_Width_Trigger_Events(
+	IN PRTMP_ADAPTER pAd);
+
+void build_ext_channel_switch_ie(
+	IN PRTMP_ADAPTER pAd,
+	IN HT_EXT_CHANNEL_SWITCH_ANNOUNCEMENT_IE *pIE);
+#endif // DOT11_N_SUPPORT //
+
+
+BOOLEAN APRxDoneInterruptHandle(
+	IN	PRTMP_ADAPTER	pAd);
+
+BOOLEAN STARxDoneInterruptHandle(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	BOOLEAN			argc);
+
+#ifdef DOT11_N_SUPPORT
+// AMPDU packet indication
+VOID Indicate_AMPDU_Packet(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	RX_BLK			*pRxBlk,
+	IN	UCHAR			FromWhichBSSID);
+
+// AMSDU packet indication
+VOID Indicate_AMSDU_Packet(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	RX_BLK			*pRxBlk,
+	IN	UCHAR			FromWhichBSSID);
+#endif // DOT11_N_SUPPORT //
+
+#ifdef RT2883_TEMP_PATCH
+VOID Trigger_Sounding_Packet(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	UCHAR			SndgType,
+	IN	UCHAR			SndgBW,
+	IN	UCHAR			SndgMcs,
+	IN  MAC_TABLE_ENTRY *pEntry);
+#endif // RT2883_TEMP_PATCH //
+
+// Normal legacy Rx packet indication
+VOID Indicate_Legacy_Packet(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	RX_BLK			*pRxBlk,
+	IN	UCHAR			FromWhichBSSID);
+
+VOID Indicate_EAPOL_Packet(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	RX_BLK			*pRxBlk,
+	IN	UCHAR			FromWhichBSSID);
+
+void  update_os_packet_info(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	RX_BLK			*pRxBlk,
+	IN	UCHAR			FromWhichBSSID);
+
+void wlan_802_11_to_802_3_packet(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	RX_BLK			*pRxBlk,
+	IN	PUCHAR			pHeader802_3,
+	IN  UCHAR			FromWhichBSSID,
+	IN	UCHAR			*TPID);
+
+UINT deaggregate_AMSDU_announce(
+	IN	PRTMP_ADAPTER	pAd,
+	PNDIS_PACKET		pPacket,
+	IN	PUCHAR			pData,
+	IN	ULONG			DataSize);
+
+
+#ifdef CONFIG_STA_SUPPORT
+// remove LLC and get 802_3 Header
+#define  RTMP_802_11_REMOVE_LLC_AND_CONVERT_TO_802_3(_pRxBlk, _pHeader802_3)	\
+{																				\
+	PUCHAR _pRemovedLLCSNAP = NULL, _pDA, _pSA;                                 \
+																				\
+	if (RX_BLK_TEST_FLAG(_pRxBlk, fRX_WDS) || RX_BLK_TEST_FLAG(_pRxBlk, fRX_MESH)) \
+	{                                                                           \
+		_pDA = _pRxBlk->pHeader->Addr3;                                         \
+		_pSA = (PUCHAR)_pRxBlk->pHeader + sizeof(HEADER_802_11);                \
+	}                                                                           \
+	else                                                                        \
+	{                                                                           \
+		if (RX_BLK_TEST_FLAG(_pRxBlk, fRX_INFRA))                              	\
+		{                                                                       \
+			_pDA = _pRxBlk->pHeader->Addr1;                                     \
+		if (RX_BLK_TEST_FLAG(_pRxBlk, fRX_DLS))									\
+			_pSA = _pRxBlk->pHeader->Addr2;										\
+		else																	\
+			_pSA = _pRxBlk->pHeader->Addr3;                                     \
+		}                                                                       \
+		else                                                                    \
+		{                                                                       \
+			_pDA = _pRxBlk->pHeader->Addr1;                                     \
+			_pSA = _pRxBlk->pHeader->Addr2;                                     \
+		}                                                                       \
+	}                                                                           \
+																				\
+	CONVERT_TO_802_3(_pHeader802_3, _pDA, _pSA, _pRxBlk->pData, 				\
+		_pRxBlk->DataSize, _pRemovedLLCSNAP);                                   \
+}
+#endif // CONFIG_STA_SUPPORT //
+
+
+BOOLEAN APFowardWirelessStaToWirelessSta(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PNDIS_PACKET	pPacket,
+	IN	ULONG			FromWhichBSSID);
+
+VOID Announce_or_Forward_802_3_Packet(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PNDIS_PACKET	pPacket,
+	IN	UCHAR			FromWhichBSSID);
+
+VOID Sta_Announce_or_Forward_802_3_Packet(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PNDIS_PACKET	pPacket,
+	IN	UCHAR			FromWhichBSSID);
+
+
+#ifdef CONFIG_STA_SUPPORT
+#define ANNOUNCE_OR_FORWARD_802_3_PACKET(_pAd, _pPacket, _FromWhichBSS)\
+			Sta_Announce_or_Forward_802_3_Packet(_pAd, _pPacket, _FromWhichBSS);
+			//announce_802_3_packet(_pAd, _pPacket);
+#endif // CONFIG_STA_SUPPORT //
+
+
+PNDIS_PACKET DuplicatePacket(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PNDIS_PACKET	pPacket,
+	IN	UCHAR			FromWhichBSSID);
+
+
+PNDIS_PACKET ClonePacket(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PNDIS_PACKET	pPacket,	
+	IN	PUCHAR			pData,
+	IN	ULONG			DataSize);
+
+
+// Normal, AMPDU or AMSDU
+VOID CmmRxnonRalinkFrameIndicate(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	RX_BLK			*pRxBlk,
+	IN	UCHAR			FromWhichBSSID);
+
+VOID CmmRxRalinkFrameIndicate(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	MAC_TABLE_ENTRY	*pEntry,
+	IN	RX_BLK			*pRxBlk,
+	IN	UCHAR			FromWhichBSSID);
+
+VOID Update_Rssi_Sample(
+	IN PRTMP_ADAPTER	pAd,
+	IN RSSI_SAMPLE		*pRssi,
+	IN PRXWI_STRUC		pRxWI);
+
+PNDIS_PACKET GetPacketFromRxRing(
+	IN		PRTMP_ADAPTER	pAd,
+	OUT		PRT28XX_RXD_STRUC		pSaveRxD,
+	OUT		BOOLEAN			*pbReschedule,
+	IN OUT	UINT32			*pRxPending);
+
+PNDIS_PACKET RTMPDeFragmentDataFrame(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	RX_BLK			*pRxBlk);
+
+////////////////////////////////////////
+
+#if defined (AP_SCAN_SUPPORT) || defined (CONFIG_STA_SUPPORT)
+VOID RTMPIoctlGetSiteSurvey(
+	IN	PRTMP_ADAPTER	pAdapter, 
+	IN	struct iwreq	*wrq);
+#endif
+
+
+
+
+
+#ifdef SNMP_SUPPORT
+//for snmp , kathy
+typedef struct _DefaultKeyIdxValue
+{
+	UCHAR	KeyIdx;
+	UCHAR	Value[16];
+} DefaultKeyIdxValue, *PDefaultKeyIdxValue;
+#endif
+
+
+#ifdef CONFIG_STA_SUPPORT
+enum {
+	DIDmsg_lnxind_wlansniffrm		= 0x00000044,
+	DIDmsg_lnxind_wlansniffrm_hosttime	= 0x00010044,
+	DIDmsg_lnxind_wlansniffrm_mactime	= 0x00020044,
+	DIDmsg_lnxind_wlansniffrm_channel	= 0x00030044,
+	DIDmsg_lnxind_wlansniffrm_rssi		= 0x00040044,
+	DIDmsg_lnxind_wlansniffrm_sq		= 0x00050044,
+	DIDmsg_lnxind_wlansniffrm_signal	= 0x00060044,
+	DIDmsg_lnxind_wlansniffrm_noise		= 0x00070044,
+	DIDmsg_lnxind_wlansniffrm_rate		= 0x00080044,
+	DIDmsg_lnxind_wlansniffrm_istx		= 0x00090044,
+	DIDmsg_lnxind_wlansniffrm_frmlen	= 0x000A0044
+};
+enum {
+	P80211ENUM_msgitem_status_no_value	= 0x00
+};
+enum {
+	P80211ENUM_truth_false			= 0x00,
+	P80211ENUM_truth_true			= 0x01
+};
+
+/* Definition from madwifi */
+typedef struct {
+        UINT32 did;
+        UINT16 status;
+        UINT16 len;
+        UINT32 data;
+} p80211item_uint32_t;
+
+typedef struct {
+        UINT32 msgcode;
+        UINT32 msglen;
+#define WLAN_DEVNAMELEN_MAX 16
+        UINT8 devname[WLAN_DEVNAMELEN_MAX];
+        p80211item_uint32_t hosttime;
+        p80211item_uint32_t mactime;
+        p80211item_uint32_t channel;
+        p80211item_uint32_t rssi;
+        p80211item_uint32_t sq;
+        p80211item_uint32_t signal;
+        p80211item_uint32_t noise;
+        p80211item_uint32_t rate;
+        p80211item_uint32_t istx;
+        p80211item_uint32_t frmlen;
+} wlan_ng_prism2_header;
+
+/* The radio capture header precedes the 802.11 header. */
+typedef struct GNU_PACKED _ieee80211_radiotap_header {
+    UINT8	it_version;	/* Version 0. Only increases
+				 * for drastic changes,
+				 * introduction of compatible
+				 * new fields does not count.
+				 */
+    UINT8	it_pad;
+    UINT16     it_len;         /* length of the whole
+				 * header in bytes, including
+				 * it_version, it_pad,
+				 * it_len, and data fields.
+				 */
+    UINT32   it_present;	/* A bitmap telling which
+					 * fields are present. Set bit 31
+					 * (0x80000000) to extend the
+					 * bitmap by another 32 bits.
+					 * Additional extensions are made
+					 * by setting bit 31.
+					 */
+}ieee80211_radiotap_header ;
+
+enum ieee80211_radiotap_type {
+    IEEE80211_RADIOTAP_TSFT = 0,
+    IEEE80211_RADIOTAP_FLAGS = 1,
+    IEEE80211_RADIOTAP_RATE = 2,
+    IEEE80211_RADIOTAP_CHANNEL = 3,
+    IEEE80211_RADIOTAP_FHSS = 4,
+    IEEE80211_RADIOTAP_DBM_ANTSIGNAL = 5,
+    IEEE80211_RADIOTAP_DBM_ANTNOISE = 6,
+    IEEE80211_RADIOTAP_LOCK_QUALITY = 7,
+    IEEE80211_RADIOTAP_TX_ATTENUATION = 8,
+    IEEE80211_RADIOTAP_DB_TX_ATTENUATION = 9,
+    IEEE80211_RADIOTAP_DBM_TX_POWER = 10,
+    IEEE80211_RADIOTAP_ANTENNA = 11,
+    IEEE80211_RADIOTAP_DB_ANTSIGNAL = 12,
+    IEEE80211_RADIOTAP_DB_ANTNOISE = 13
+};
+
+#define WLAN_RADIOTAP_PRESENT (			\
+	(1 << IEEE80211_RADIOTAP_TSFT)	|	\
+	(1 << IEEE80211_RADIOTAP_FLAGS) |	\
+	(1 << IEEE80211_RADIOTAP_RATE)  | 	\
+	 0)
+
+typedef struct _wlan_radiotap_header {
+	ieee80211_radiotap_header wt_ihdr;
+	INT64 wt_tsft;
+	UINT8 wt_flags;	
+	UINT8 wt_rate;
+} wlan_radiotap_header;
+/* Definition from madwifi */
+
+
+void send_monitor_packets(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	RX_BLK			*pRxBlk,
+	IN  CHAR			(*RTMPMaxRssi)(
+			IN PRTMP_ADAPTER	pAd,
+			IN CHAR				Rssi0,
+			IN CHAR				Rssi1,
+			IN CHAR				Rssi2),
+	IN  CHAR			(*ConvertToRssi)(
+			IN PRTMP_ADAPTER	pAd,
+			IN CHAR				Rssi,
+			IN UCHAR			RssiNumber));
+
+
+VOID    RTMPSetDesiredRates(
+    IN  PRTMP_ADAPTER   pAdapter,
+    IN  LONG            Rates);
+
+#ifdef XLINK_SUPPORT
+INT Set_XlinkMode_Proc(
+	IN	PRTMP_ADAPTER	pAdapter, 
+	IN	PSTRING			arg);
+#endif // XLINK_SUPPORT //
+#endif // CONFIG_STA_SUPPORT //
+
+INT	Set_FixedTxMode_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+#ifdef CONFIG_APSTA_MIXED_SUPPORT
+INT	Set_OpMode_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+#endif // CONFIG_APSTA_MIXED_SUPPORT //
+
+INT Set_LongRetryLimit_Proc(
+	IN	PRTMP_ADAPTER	pAdapter, 
+	IN	PSTRING			arg);
+
+INT Set_ShortRetryLimit_Proc(
+	IN	PRTMP_ADAPTER	pAdapter, 
+	IN	PSTRING			arg);
+
+INT Set_AutoFallBack_Proc(
+	IN	PRTMP_ADAPTER	pAdapter, 
+	IN	PSTRING			arg);
+
+
+BOOLEAN RT28XXChipsetCheck(
+	IN void *_dev_p);
+
+
+VOID RT28XXDMADisable(
+	IN RTMP_ADAPTER 		*pAd);
+
+VOID RT28XXDMAEnable(
+	IN RTMP_ADAPTER 		*pAd);
+	
+VOID RT28xx_UpdateBeaconToAsic(
+	IN RTMP_ADAPTER * pAd, 
+	IN INT apidx,
+	IN ULONG BeaconLen,
+	IN ULONG UpdatePos);
+
+void CfgInitHook(PRTMP_ADAPTER pAd);
+
+int rt28xx_init(
+	IN PRTMP_ADAPTER pAd, 
+	IN PSTRING pDefaultMac, 
+	IN PSTRING pHostName);
+
+BOOLEAN RT28XXSecurityKeyAdd(
+	IN		PRTMP_ADAPTER		pAd,
+	IN		ULONG				apidx,
+	IN		ULONG				KeyIdx,
+	IN		MAC_TABLE_ENTRY 	*pEntry);
+
+NDIS_STATUS RtmpNetTaskInit(
+	IN RTMP_ADAPTER *pAd);
+
+VOID RtmpNetTaskExit(
+	IN PRTMP_ADAPTER pAd);
+
+NDIS_STATUS RtmpMgmtTaskInit(
+	IN RTMP_ADAPTER *pAd);
+	
+VOID RtmpMgmtTaskExit(
+	IN RTMP_ADAPTER *pAd);
+
+void tbtt_tasklet(unsigned long data);
+
+
+PNET_DEV RtmpPhyNetDevInit(
+	IN RTMP_ADAPTER *pAd,
+	IN RTMP_OS_NETDEV_OP_HOOK *pNetHook);
+
+BOOLEAN RtmpPhyNetDevExit(
+	IN RTMP_ADAPTER *pAd, 
+	IN PNET_DEV net_dev);
+	
+INT RtmpRaDevCtrlInit(
+	IN RTMP_ADAPTER *pAd, 
+	IN RTMP_INF_TYPE infType);
+
+BOOLEAN RtmpRaDevCtrlExit(
+	IN RTMP_ADAPTER *pAd);
+
+	
+#ifdef RTMP_MAC_PCI
+//
+// Function Prototype in cmm_data_pci.c
+//
+USHORT RtmpPCI_WriteTxResource(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	TX_BLK			*pTxBlk,
+	IN	BOOLEAN			bIsLast,
+	OUT	USHORT			*FreeNumber);
+
+USHORT RtmpPCI_WriteSingleTxResource(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	TX_BLK			*pTxBlk,
+	IN	BOOLEAN			bIsLast,
+	OUT	USHORT			*FreeNumber);
+	
+USHORT RtmpPCI_WriteMultiTxResource(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	TX_BLK			*pTxBlk,
+	IN	UCHAR			frameNum,
+	OUT	USHORT			*FreeNumber);
+
+USHORT	RtmpPCI_WriteFragTxResource(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	TX_BLK			*pTxBlk,
+	IN	UCHAR			fragNum,
+	OUT	USHORT			*FreeNumber);
+	
+USHORT RtmpPCI_WriteSubTxResource(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	TX_BLK			*pTxBlk,
+	IN	BOOLEAN			bIsLast,
+	OUT	USHORT			*FreeNumber);
+
+VOID RtmpPCI_FinalWriteTxResource(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	TX_BLK			*pTxBlk,
+	IN	USHORT			totalMPDUSize,
+	IN	USHORT			FirstTxIdx);
+
+VOID RtmpPCIDataLastTxIdx(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	UCHAR			QueIdx,
+	IN	USHORT			LastTxIdx);
+
+VOID RtmpPCIDataKickOut(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	TX_BLK			*pTxBlk,
+	IN	UCHAR			QueIdx);
+
+
+int RtmpPCIMgmtKickOut(
+	IN RTMP_ADAPTER 	*pAd, 
+	IN UCHAR 			QueIdx,
+	IN PNDIS_PACKET		pPacket,
+	IN PUCHAR			pSrcBufVA,
+	IN UINT 			SrcBufLen);
+
+
+NDIS_STATUS RTMPCheckRxError(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  PHEADER_802_11  pHeader,
+	IN	PRXWI_STRUC	pRxWI,
+	IN  PRT28XX_RXD_STRUC      pRxD);
+
+BOOLEAN RT28xxPciAsicRadioOff(
+	IN PRTMP_ADAPTER    pAd,
+	IN UCHAR            Level, 
+	IN USHORT           TbttNumToNextWakeUp);
+
+BOOLEAN RT28xxPciAsicRadioOn(
+	IN PRTMP_ADAPTER pAd,
+	IN UCHAR     Level);
+
+#ifdef CONFIG_STA_SUPPORT
+#ifdef PCIE_PS_SUPPORT
+VOID RTMPInitPCIeLinkCtrlValue(
+	IN	PRTMP_ADAPTER	pAd);
+
+VOID RTMPFindHostPCIDev(
+    IN	PRTMP_ADAPTER	pAd);
+
+VOID RTMPPCIeLinkCtrlValueRestore(
+	IN	PRTMP_ADAPTER	pAd,
+	IN   UCHAR		Level);
+
+VOID RTMPPCIeLinkCtrlSetting(
+	IN	PRTMP_ADAPTER	pAd,
+	IN 	USHORT		Max);
+
+VOID RTMPrt3xSetPCIePowerLinkCtrl(
+	IN	PRTMP_ADAPTER	pAd);
+
+VOID PsPollWakeExec(
+	IN PVOID SystemSpecific1, 
+	IN PVOID FunctionContext, 
+	IN PVOID SystemSpecific2, 
+	IN PVOID SystemSpecific3);
+
+VOID  RadioOnExec(
+	IN PVOID SystemSpecific1, 
+	IN PVOID FunctionContext, 
+	IN PVOID SystemSpecific2, 
+	IN PVOID SystemSpecific3);
+#endif // PCIE_PS_SUPPORT //
+
+VOID RT28xxPciStaAsicForceWakeup(
+	IN PRTMP_ADAPTER pAd,
+	IN BOOLEAN       bFromTx);
+
+VOID RT28xxPciStaAsicSleepThenAutoWakeup(
+	IN PRTMP_ADAPTER pAd, 
+	IN USHORT TbttNumToNextWakeUp);
+
+#endif // CONFIG_STA_SUPPORT //
+
+VOID RT28xxPciMlmeRadioOn(
+	IN PRTMP_ADAPTER pAd);
+
+VOID RT28xxPciMlmeRadioOFF(
+	IN PRTMP_ADAPTER pAd);
+#endif // RTMP_MAC_PCI //
+
+VOID AsicTurnOffRFClk(
+	IN PRTMP_ADAPTER    pAd, 
+	IN	UCHAR           Channel);
+
+VOID AsicTurnOnRFClk(
+	IN PRTMP_ADAPTER 	pAd, 
+	IN	UCHAR			Channel);
+
+
+
+#ifdef RTMP_TIMER_TASK_SUPPORT
+INT RtmpTimerQThread(
+	IN ULONG Context);
+
+RTMP_TIMER_TASK_ENTRY *RtmpTimerQInsert(
+	IN RTMP_ADAPTER *pAd, 
+	IN RALINK_TIMER_STRUCT *pTimer);
+
+BOOLEAN RtmpTimerQRemove(
+	IN RTMP_ADAPTER *pAd, 
+	IN RALINK_TIMER_STRUCT *pTimer);
+
+void RtmpTimerQExit(
+	IN RTMP_ADAPTER *pAd);
+
+void RtmpTimerQInit(
+	IN RTMP_ADAPTER *pAd);
+#endif // RTMP_TIMER_TASK_SUPPORT //
+
+
+
+////////////////////////////////////////
+
+#ifdef AP_QLOAD_SUPPORT
+VOID QBSS_LoadInit(
+ 	IN		RTMP_ADAPTER	*pAd);
+
+VOID QBSS_LoadAlarmReset(
+ 	IN		RTMP_ADAPTER	*pAd);
+
+VOID QBSS_LoadAlarmResume(
+ 	IN		RTMP_ADAPTER	*pAd);
+
+UINT32 QBSS_LoadBusyTimeGet(
+ 	IN		RTMP_ADAPTER	*pAd);
+
+BOOLEAN QBSS_LoadIsAlarmIssued(
+ 	IN		RTMP_ADAPTER	*pAd);
+
+BOOLEAN QBSS_LoadIsBusyTimeAccepted(
+ 	IN		RTMP_ADAPTER	*pAd,
+	IN		UINT32			BusyTime);
+
+UINT32 QBSS_LoadElementAppend(
+ 	IN		RTMP_ADAPTER	*pAd,
+	OUT		UINT8			*buf_p);
+
+UINT32 QBSS_LoadElementParse(
+ 	IN		RTMP_ADAPTER	*pAd,
+	IN		UINT8			*pElement,
+	OUT		UINT16			*pStationCount,
+	OUT		UINT8			*pChanUtil,
+	OUT		UINT16			*pAvalAdmCap);
+
+VOID QBSS_LoadUpdate(
+ 	IN		RTMP_ADAPTER	*pAd,
+	IN		ULONG			UpTime);
+
+VOID QBSS_LoadStatusClear(
+ 	IN		RTMP_ADAPTER	*pAd);
+
+INT	Show_QoSLoad_Proc(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PSTRING			arg);
+#endif // AP_QLOAD_SUPPORT //
+
+///////////////////////////////////////
+INT RTMPShowCfgValue(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			pName,
+	IN	PSTRING			pBuf);
+
+PSTRING RTMPGetRalinkAuthModeStr(
+    IN  NDIS_802_11_AUTHENTICATION_MODE authMode);
+
+PSTRING RTMPGetRalinkEncryModeStr(
+    IN  USHORT encryMode);
+//////////////////////////////////////
+
+#ifdef CONFIG_STA_SUPPORT
+VOID AsicStaBbpTuning(
+	IN PRTMP_ADAPTER pAd);
+
+BOOLEAN StaAddMacTableEntry(
+	IN  PRTMP_ADAPTER		pAd,
+	IN  PMAC_TABLE_ENTRY	pEntry,
+	IN  UCHAR				MaxSupportedRateIn500Kbps,
+	IN  HT_CAPABILITY_IE	*pHtCapability,
+	IN  UCHAR				HtCapabilityLen,
+	IN  ADD_HT_INFO_IE		*pAddHtInfo,
+	IN  UCHAR				AddHtInfoLen,
+	IN  USHORT        		CapabilityInfo);
+
+
+BOOLEAN	AUTH_ReqSend(
+	IN  PRTMP_ADAPTER 		pAd,
+	IN  PMLME_QUEUE_ELEM	pElem,
+	IN  PRALINK_TIMER_STRUCT pAuthTimer,
+	IN  PSTRING				pSMName,
+	IN  USHORT				SeqNo,
+	IN  PUCHAR				pNewElement,
+	IN  ULONG				ElementLen);
+#endif // CONFIG_STA_SUPPORT // 
+
+void RTMP_IndicateMediaState(	
+	IN	PRTMP_ADAPTER	pAd);
+
+VOID ReSyncBeaconTime(
+	IN  PRTMP_ADAPTER   pAd);
+
+VOID RTMPSetAGCInitValue(
+	IN PRTMP_ADAPTER	pAd,
+	IN UCHAR			BandWidth);
+
+int rt28xx_close(IN PNET_DEV dev);
+int rt28xx_open(IN PNET_DEV dev);
+
+
+#define VIRTUAL_IF_INC(__pAd) ((__pAd)->VirtualIfCnt++)
+#define VIRTUAL_IF_DEC(__pAd) ((__pAd)->VirtualIfCnt--)
+#define VIRTUAL_IF_NUM(__pAd) ((__pAd)->VirtualIfCnt)
+
+
+
+#ifdef LINUX
+__inline INT VIRTUAL_IF_UP(PRTMP_ADAPTER pAd)
+{
+	if (VIRTUAL_IF_NUM(pAd) == 0)
+	{
+		if (rt28xx_open(pAd->net_dev) != 0)
+		{
+			DBGPRINT(RT_DEBUG_TRACE, ("rt28xx_open return fail!\n"));
+			return -1;
+		}
+	}
+	else
+	{
+	}
+	VIRTUAL_IF_INC(pAd);
+	return 0;
+}
+
+__inline VOID VIRTUAL_IF_DOWN(PRTMP_ADAPTER pAd)
+{
+	VIRTUAL_IF_DEC(pAd);
+	if (VIRTUAL_IF_NUM(pAd) == 0)
+		rt28xx_close(pAd->net_dev);
+	return;
+}
+#endif // LINUX //
+
+
+
+
+#ifdef SOFT_ENCRYPT
+BOOLEAN RTMPExpandPacketForSwEncrypt(
+	IN  PRTMP_ADAPTER   pAd,
+	IN	PTX_BLK			pTxBlk);
+
+VOID RTMPUpdateSwCacheCipherInfo(	
+	IN  PRTMP_ADAPTER   pAd,
+	IN	PTX_BLK			pTxBlk,
+	IN	PUCHAR			pHdr);
+#endif // SOFT_ENCRYPT //
+
+
+/*
+	OS Related funciton prototype definitions.
+	TODO: Maybe we need to move these function prototypes to other proper place.
+*/
+int RtmpOSWrielessEventSend(
+	IN RTMP_ADAPTER *pAd,
+	IN UINT32		eventType,
+	IN INT			flags,
+	IN PUCHAR		pSrcMac,
+	IN PUCHAR		pData,
+	IN UINT32		dataLen);
+
+int RtmpOSNetDevAddrSet(
+	IN PNET_DEV pNetDev,
+	IN PUCHAR	pMacAddr);
+	
+int RtmpOSNetDevAttach(
+	IN PNET_DEV pNetDev, 
+	IN RTMP_OS_NETDEV_OP_HOOK *pDevOpHook);
+
+void RtmpOSNetDevClose(
+	IN PNET_DEV pNetDev);
+
+void RtmpOSNetDevDetach(
+	IN PNET_DEV pNetDev);
+
+INT RtmpOSNetDevAlloc(
+	IN PNET_DEV *pNewNetDev,
+	IN UINT32	privDataSize);
+
+void RtmpOSNetDevFree(
+	IN PNET_DEV pNetDev);
+	
+PNET_DEV RtmpOSNetDevGetByName(
+	IN PNET_DEV pNetDev, 
+	IN PSTRING	pDevName);
+
+void RtmpOSNetDeviceRefPut(
+	IN PNET_DEV pNetDev);
+
+PNET_DEV RtmpOSNetDevCreate(
+	IN RTMP_ADAPTER *pAd,
+	IN INT 			devType, 
+	IN INT			devNum,
+	IN INT			privMemSize,
+	IN PSTRING		pNamePrefix);
+
+/*
+	Task operation related function prototypes
+*/
+void RtmpOSTaskCustomize(
+	IN RTMP_OS_TASK *pTask);
+
+INT RtmpOSTaskNotifyToExit(
+	IN RTMP_OS_TASK *pTask);
+
+NDIS_STATUS RtmpOSTaskKill(
+	IN RTMP_OS_TASK *pTask);
+
+NDIS_STATUS RtmpOSTaskInit(
+	IN RTMP_OS_TASK *pTask,
+	PSTRING			 pTaskName,
+	VOID			 *pPriv);
+	
+NDIS_STATUS RtmpOSTaskAttach(
+	IN RTMP_OS_TASK *pTask,
+	IN RTMP_OS_TASK_CALLBACK taskEntryPoint, 
+	IN ULONG arg);
+
+
+/*
+	File operation related function prototypes
+*/
+RTMP_OS_FD RtmpOSFileOpen(
+	IN char *pPath,  
+	IN int flag, 
+	IN int mode);
+
+int RtmpOSFileClose(
+	IN RTMP_OS_FD osfd);
+
+void RtmpOSFileSeek(
+	IN RTMP_OS_FD osfd, 
+	IN int offset);
+
+int RtmpOSFileRead(
+	IN RTMP_OS_FD osfd, 
+	IN char *pDataPtr, 
+	IN int readLen);
+
+int RtmpOSFileWrite(
+	IN RTMP_OS_FD osfd, 
+	IN char *pDataPtr, 
+	IN int writeLen);
+
+void RtmpOSFSInfoChange(
+	IN RTMP_OS_FS_INFO *pOSFSInfo, 
+	IN BOOLEAN bSet);
+
+#ifdef RT35xx
+NTSTATUS	RT3572WriteBBPR66(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	UCHAR			Value);
+#endif // RT35xx //
+
+VOID	RTInitializeCmdQ(
+	IN	PCmdQ	cmdq);
+
+INT RTPCICmdThread(
+	IN ULONG Context);
+
+VOID CMDHandler(                                                                                                                                                
+    IN PRTMP_ADAPTER pAd);
+
+VOID	RTThreadDequeueCmd(
+	IN	PCmdQ		cmdq,
+	OUT	PCmdQElmt	*pcmdqelmt);
+
+NDIS_STATUS RTEnqueueInternalCmd(
+	IN PRTMP_ADAPTER	pAd,
+	IN NDIS_OID			Oid,
+	IN PVOID			pInformationBuffer,
+	IN UINT32			InformationBufferLength);
+
+#ifdef HOSTAPD_SUPPORT
+VOID ieee80211_notify_michael_failure(
+	IN	PRTMP_ADAPTER    pAd,
+	IN	PHEADER_802_11   pHeader,
+	IN	UINT            keyix,
+	IN	INT              report);
+
+const CHAR* ether_sprintf(const UINT8 *mac);
+#endif//HOSTAPD_SUPPORT//
+
+#ifdef VENDOR_FEATURE3_SUPPORT
+VOID RTMP_IO_WRITE32(
+	PRTMP_ADAPTER pAd,
+	UINT32 Offset,
+	UINT32 Value);
+
+VOID RTMP_BBP_IO_READ8_BY_REG_ID(
+	PRTMP_ADAPTER pAd,
+	UINT32 Offset,
+	UINT8 *pValue);
+
+VOID RTMP_BBP_IO_READ8(
+	PRTMP_ADAPTER pAd,
+	UCHAR Offset,
+	UINT8 *pValue,
+	BOOLEAN FlgValidMCR);
+
+VOID RTMP_BBP_IO_WRITE8_BY_REG_ID(
+	PRTMP_ADAPTER pAd,
+	UINT32 Offset,
+	UINT8 Value);
+
+VOID RTMP_BBP_IO_WRITE8(
+	PRTMP_ADAPTER pAd,
+	UCHAR Offset,
+	UINT8 Value,
+	BOOLEAN FlgValidMCR);
+#endif // VENDOR_FEATURE3_SUPPORT //
+
+BOOLEAN CHAN_PropertyCheck(
+	IN PRTMP_ADAPTER	pAd,
+	IN UINT32			ChanNum,
+	IN UCHAR			Property);
+
+#ifdef CONFIG_STA_SUPPORT
+
+// command
+INT Set_SSID_Proc(
+    IN  PRTMP_ADAPTER   pAdapter, 
+    IN  PSTRING          arg);
+
+#ifdef WMM_SUPPORT
+INT	Set_WmmCapable_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+#endif
+
+INT Set_NetworkType_Proc(
+    IN  PRTMP_ADAPTER   pAdapter, 
+    IN  PSTRING          arg);
+
+INT Set_AuthMode_Proc(
+    IN  PRTMP_ADAPTER   pAdapter, 
+    IN  PSTRING          arg);
+
+INT Set_EncrypType_Proc(
+    IN  PRTMP_ADAPTER   pAdapter, 
+    IN  PSTRING          arg);
+
+INT Set_DefaultKeyID_Proc(
+    IN  PRTMP_ADAPTER   pAdapter, 
+    IN  PSTRING          arg);
+
+INT Set_Key1_Proc(
+    IN  PRTMP_ADAPTER   pAdapter, 
+    IN  PSTRING          arg);
+
+INT Set_Key2_Proc(
+    IN  PRTMP_ADAPTER   pAdapter, 
+    IN  PSTRING          arg);
+
+INT Set_Key3_Proc(
+    IN  PRTMP_ADAPTER   pAdapter, 
+    IN  PSTRING          arg);
+
+INT Set_Key4_Proc(
+    IN  PRTMP_ADAPTER   pAdapter, 
+    IN  PSTRING          arg);
+
+INT Set_WPAPSK_Proc(
+    IN  PRTMP_ADAPTER   pAdapter, 
+    IN  PSTRING          arg);
+
+
+INT Set_PSMode_Proc(
+    IN  PRTMP_ADAPTER   pAdapter, 
+    IN  PSTRING          arg);
+
+#ifdef WPA_SUPPLICANT_SUPPORT
+INT Set_Wpa_Support(
+    IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+#endif // WPA_SUPPLICANT_SUPPORT //
+
+#ifdef DBG
+
+VOID RTMPIoctlMAC(
+	IN	PRTMP_ADAPTER	pAdapter, 
+	IN	struct iwreq	*wrq);
+
+VOID RTMPIoctlE2PROM(
+    IN  PRTMP_ADAPTER   pAdapter,
+    IN  struct iwreq    *wrq);
+#endif // DBG //
+
+
+NDIS_STATUS RTMPWPANoneAddKeyProc(
+    IN  PRTMP_ADAPTER   pAd,
+    IN	PVOID			pBuf);
+	
+INT Set_FragTest_Proc(
+    IN  PRTMP_ADAPTER   pAdapter, 
+    IN  PSTRING          arg);
+	
+#ifdef DOT11_N_SUPPORT	
+INT Set_TGnWifiTest_Proc(
+    IN  PRTMP_ADAPTER   pAd, 
+    IN  PSTRING          arg);
+#endif // DOT11_N_SUPPORT //
+
+INT Set_LongRetryLimit_Proc(
+	IN	PRTMP_ADAPTER	pAdapter, 
+	IN	PSTRING			arg);
+
+INT Set_ShortRetryLimit_Proc(
+	IN	PRTMP_ADAPTER	pAdapter, 
+	IN	PSTRING			arg);
+
+#ifdef EXT_BUILD_CHANNEL_LIST
+INT Set_Ieee80211dClientMode_Proc(
+    IN  PRTMP_ADAPTER   pAdapter, 
+    IN  PSTRING          arg);
+#endif // EXT_BUILD_CHANNEL_LIST //
+
+#ifdef CARRIER_DETECTION_SUPPORT
+INT Set_CarrierDetect_Proc(
+    IN  PRTMP_ADAPTER   pAd, 
+    IN  PSTRING          arg);
+#endif // CARRIER_DETECTION_SUPPORT //
+
+INT	Show_Adhoc_MacTable_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			extra);
+
+#ifdef RTMP_RF_RW_SUPPORT
+VOID RTMPIoctlRF(
+	IN	PRTMP_ADAPTER	pAdapter, 
+	IN	struct iwreq	*wrq);
+#endif // RTMP_RF_RW_SUPPORT //
+
+
+INT Set_BeaconLostTime_Proc(
+    IN  PRTMP_ADAPTER   pAd, 
+    IN  PSTRING         arg);
+
+INT Set_AutoRoaming_Proc(
+    IN  PRTMP_ADAPTER   pAd, 
+    IN  PSTRING         arg);
+
+INT Set_SiteSurvey_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT Set_ForceTxBurst_Proc(
+    IN  PRTMP_ADAPTER   pAd, 
+    IN  PSTRING         arg);
+
+
+VOID RTMPAddKey(
+	IN	PRTMP_ADAPTER	    pAd, 
+	IN	PNDIS_802_11_KEY    pKey);
+
+
+VOID StaSiteSurvey(
+	IN	PRTMP_ADAPTER  		pAd,
+	IN	PNDIS_802_11_SSID	pSsid,
+	IN	UCHAR				ScanType);
+#endif // CONFIG_STA_SUPPORT //
+
+void  getRate(
+    IN HTTRANSMIT_SETTING HTSetting, 
+    OUT ULONG* fLastTxRxRate);
+
+#endif  // __RTMP_H__
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rtmp_chip.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rtmp_chip.h
new file mode 100644
index 000000000..c5fb837cf
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rtmp_chip.h
@@ -0,0 +1,356 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+	Module Name:
+	rtmp_chip.h
+
+	Abstract:
+	Ralink Wireless Chip related definition & structures
+
+	Revision History:
+	Who			When		  What
+	--------	----------	  ----------------------------------------------
+*/
+
+#ifndef	__RTMP_CHIP_H__
+#define	__RTMP_CHIP_H__
+
+#include "rtmp_type.h"
+
+
+#ifdef RT2860
+#include "chip/rt2860.h"
+#endif // RT2860 //
+
+
+
+
+
+
+#ifdef RT35xx
+#include "chip/rt35xx.h"
+#endif // RT35xx //
+
+
+
+#define IS_RT3090A(_pAd)				((((_pAd)->MACVersion & 0xffff0000) == 0x30900000))
+
+// We will have a cost down version which mac version is 0x3090xxxx
+#define IS_RT3090(_pAd)				((((_pAd)->MACVersion & 0xffff0000) == 0x30710000) || (IS_RT3090A(_pAd)))
+
+#define IS_RT3070(_pAd)		(((_pAd)->MACVersion & 0xffff0000) == 0x30700000)
+#define IS_RT3071(_pAd)		(((_pAd)->MACVersion & 0xffff0000) == 0x30710000)
+#define IS_RT2070(_pAd)		(((_pAd)->RfIcType == RFIC_2020) || ((_pAd)->EFuseTag == 0x27))
+
+#define IS_RT30xx(_pAd)		(((_pAd)->MACVersion & 0xfff00000) == 0x30700000||IS_RT3090A(_pAd))
+//#define IS_RT305X(_pAd)		((_pAd)->MACVersion == 0x28720200)
+
+/* RT3572, 3592, 3562, 3062 share the same MAC version */
+#define IS_RT3572(_pAd)		(((_pAd)->MACVersion & 0xffff0000) == 0x35720000)
+
+#define IS_RT2883(_pAd)		(((_pAd)->MACVersion & 0xffff0000) == 0x28830000)
+#define IS_VERSION_BEFORE_F(_pAd)			(((_pAd)->MACVersion&0xffff) <= 0x0211)
+// F version is 0x0212, E version is 0x0211. 309x can save more power after F version.
+#define IS_VERSION_AFTER_F(_pAd)			((((_pAd)->MACVersion&0xffff) >= 0x0212) || (((_pAd)->b3090ESpecialChip == TRUE)))
+
+//RT3390,RT3370
+#define IS_RT3390(_pAd)				(((_pAd)->MACVersion & 0xFFFF0000) == 0x33900000)
+
+// ------------------------------------------------------
+// PCI registers - base address 0x0000
+// ------------------------------------------------------
+#define CHIP_PCI_CFG		0x0000
+#define CHIP_PCI_EECTRL		0x0004
+#define CHIP_PCI_MCUCTRL	0x0008
+
+#define OPT_14			0x114
+
+#define RETRY_LIMIT		10
+
+
+
+// ------------------------------------------------------
+// BBP & RF	definition
+// ------------------------------------------------------
+#define	BUSY		                1
+#define	IDLE		                0
+
+
+//-------------------------------------------------------------------------
+// EEPROM definition
+//-------------------------------------------------------------------------
+#define EEDO                        0x08
+#define EEDI                        0x04
+#define EECS                        0x02
+#define EESK                        0x01
+#define EERL                        0x80
+
+#define EEPROM_WRITE_OPCODE         0x05
+#define EEPROM_READ_OPCODE          0x06
+#define EEPROM_EWDS_OPCODE          0x10
+#define EEPROM_EWEN_OPCODE          0x13
+
+#define NUM_EEPROM_BBP_PARMS		19			// Include NIC Config 0, 1, CR, TX ALC step, BBPs
+#define NUM_EEPROM_TX_G_PARMS		7
+
+#define VALID_EEPROM_VERSION        1
+#define EEPROM_VERSION_OFFSET       0x02
+#define EEPROM_NIC1_OFFSET          0x34		// The address is from NIC config 0, not BBP register ID
+#define EEPROM_NIC2_OFFSET          0x36		// The address is from NIC config 1, not BBP register ID
+#define EEPROM_TXPOWER_DELTA		0x50	// 20MHZ AND 40 MHZ use different power. This is delta in 40MHZ.
+#define EEPROM_COUNTRY_REGION		0x38
+#define EEPROM_BBP_BASE_OFFSET		0xf0		// The address is from NIC config 0, not BBP register ID
+#define EEPROM_FREQ_OFFSET			0x3a
+#define EEPROM_LED1_OFFSET			0x3c
+#define EEPROM_LED2_OFFSET			0x3e
+#define EEPROM_LED3_OFFSET			0x40
+#define EEPROM_LNA_OFFSET			0x44
+#define EEPROM_RSSI_BG_OFFSET		0x46
+#define EEPROM_TXMIXER_GAIN_2_4G	0x48
+#define EEPROM_RSSI_A_OFFSET		0x4a
+#define EEPROM_TXMIXER_GAIN_5G		0x4c
+#define EEPROM_DEFINE_MAX_TXPWR		0x4e
+#define EEPROM_G_TX_PWR_OFFSET		0x52
+#define EEPROM_G_TX2_PWR_OFFSET		0x60
+#define EEPROM_G_TSSI_BOUND1		0x6e
+#define EEPROM_G_TSSI_BOUND2		0x70
+#define EEPROM_G_TSSI_BOUND3		0x72
+#define EEPROM_G_TSSI_BOUND4		0x74
+#define EEPROM_G_TSSI_BOUND5		0x76
+#define EEPROM_A_TX_PWR_OFFSET      0x78
+#define EEPROM_A_TX2_PWR_OFFSET      0xa6
+#define EEPROM_A_TSSI_BOUND1		0xd4
+#define EEPROM_A_TSSI_BOUND2		0xd6
+#define EEPROM_A_TSSI_BOUND3		0xd8
+#define EEPROM_A_TSSI_BOUND4		0xda
+#define EEPROM_A_TSSI_BOUND5		0xdc
+#define EEPROM_TXPOWER_BYRATE_20MHZ_2_4G	0xde	// 20MHZ 2.4G tx power.
+#define EEPROM_TXPOWER_BYRATE_40MHZ_2_4G	0xee	// 40MHZ 2.4G tx power.
+#define EEPROM_TXPOWER_BYRATE_20MHZ_5G		0xfa	// 20MHZ 5G tx power.
+#define EEPROM_TXPOWER_BYRATE_40MHZ_5G		0x10a	// 40MHZ 5G tx power.
+#define EEPROM_TXPOWER_BYRATE 	0xde	// 20MHZ power. 
+//#define EEPROM_Japan_TX_PWR_OFFSET      0x90 // 802.11j
+//#define EEPROM_Japan_TX2_PWR_OFFSET      0xbe
+//#define EEPROM_TSSI_REF_OFFSET	0x54
+//#define EEPROM_TSSI_DELTA_OFFSET	0x24
+//#define EEPROM_CCK_TX_PWR_OFFSET  0x62
+//#define EEPROM_CALIBRATE_OFFSET	0x7c
+
+
+
+/*
+  *   EEPROM operation related marcos
+  */
+#define RT28xx_EEPROM_READ16(_pAd, _offset, _value)			\
+	(_pAd)->chipOps.eeread((RTMP_ADAPTER *)(_pAd), (USHORT)(_offset), (PUSHORT)&(_value))
+
+#define RT28xx_EEPROM_WRITE16(_pAd, _offset, _value)		\
+	(_pAd)->chipOps.eewrite((RTMP_ADAPTER *)(_pAd), (USHORT)(_offset), (USHORT)(_value))
+
+
+
+// -------------------------------------------------------------------
+//  E2PROM data layout
+// -------------------------------------------------------------------
+
+//
+// MCU_LEDCS: MCU LED Control Setting.
+//
+typedef union  _MCU_LEDCS_STRUC {
+	struct	{
+#ifdef RT_BIG_ENDIAN
+		UCHAR		Polarity:1;
+		UCHAR		LedMode:7;		
+#else
+		UCHAR		LedMode:7;		
+		UCHAR		Polarity:1;
+#endif // RT_BIG_ENDIAN //
+	} field;
+	UCHAR				word;
+} MCU_LEDCS_STRUC, *PMCU_LEDCS_STRUC;
+
+
+//
+// EEPROM antenna select format
+//
+#ifdef RT_BIG_ENDIAN
+typedef	union	_EEPROM_ANTENNA_STRUC	{
+	struct	{
+		USHORT      Rsv:4;              
+		USHORT      RfIcType:4;             // see E2PROM document		
+		USHORT		TxPath:4;	// 1: 1T, 2: 2T
+		USHORT		RxPath:4;	// 1: 1R, 2: 2R, 3: 3R
+	}	field;
+	USHORT			word;
+}	EEPROM_ANTENNA_STRUC, *PEEPROM_ANTENNA_STRUC;
+#else
+typedef	union	_EEPROM_ANTENNA_STRUC	{
+	struct	{
+		USHORT		RxPath:4;	// 1: 1R, 2: 2R, 3: 3R
+		USHORT		TxPath:4;	// 1: 1T, 2: 2T
+		USHORT      RfIcType:4;             // see E2PROM document		
+		USHORT      Rsv:4;              
+	}	field;
+	USHORT			word;
+}	EEPROM_ANTENNA_STRUC, *PEEPROM_ANTENNA_STRUC;
+#endif
+
+#ifdef RT_BIG_ENDIAN
+typedef	union _EEPROM_NIC_CINFIG2_STRUC	{
+	struct	{
+		USHORT		DACTestBit:1;			// control if driver should patch the DAC issue
+		USHORT		Rsv2:3;					// must be 0
+		USHORT		AntDiversity:1;			// Antenna diversity
+		USHORT		Rsv1:1;					// must be 0
+		USHORT		BW40MAvailForA:1;			// 0:enable, 1:disable
+		USHORT		BW40MAvailForG:1;			// 0:enable, 1:disable
+		USHORT		EnableWPSPBC:1;                 // WPS PBC Control bit
+		USHORT		BW40MSidebandForA:1;
+		USHORT		BW40MSidebandForG:1;
+		USHORT		CardbusAcceleration:1;	// !!! NOTE: 0 - enable, 1 - disable		
+		USHORT		ExternalLNAForA:1;			// external LNA enable for 5G		
+		USHORT		ExternalLNAForG:1;			// external LNA enable for 2.4G
+		USHORT		DynamicTxAgcControl:1;			//
+		USHORT		HardwareRadioControl:1;	// Whether RF is controlled by driver or HW. 1:enable hw control, 0:disable
+	}	field;
+	USHORT			word;
+}	EEPROM_NIC_CONFIG2_STRUC, *PEEPROM_NIC_CONFIG2_STRUC;
+#else
+typedef	union _EEPROM_NIC_CINFIG2_STRUC	{
+	struct {
+		USHORT		HardwareRadioControl:1;	// 1:enable, 0:disable
+		USHORT		DynamicTxAgcControl:1;			//
+		USHORT		ExternalLNAForG:1;				//
+		USHORT		ExternalLNAForA:1;			// external LNA enable for 2.4G
+		USHORT		CardbusAcceleration:1;	// !!! NOTE: 0 - enable, 1 - disable		
+		USHORT		BW40MSidebandForG:1;
+		USHORT		BW40MSidebandForA:1;
+		USHORT		EnableWPSPBC:1;                 // WPS PBC Control bit
+		USHORT		BW40MAvailForG:1;			// 0:enable, 1:disable
+		USHORT		BW40MAvailForA:1;			// 0:enable, 1:disable
+		USHORT		Rsv1:1;					// must be 0
+		USHORT		AntDiversity:1;			// Antenna diversity
+		USHORT		Rsv2:3;					// must be 0
+		USHORT		DACTestBit:1;			// control if driver should patch the DAC issue
+	}	field;
+	USHORT			word;
+}	EEPROM_NIC_CONFIG2_STRUC, *PEEPROM_NIC_CONFIG2_STRUC;
+#endif
+
+//
+// TX_PWR Value valid range 0xFA(-6) ~ 0x24(36)
+//
+#ifdef RT_BIG_ENDIAN
+typedef	union	_EEPROM_TX_PWR_STRUC	{
+	struct	{
+		signed char	Byte1;				// High Byte
+		signed char	Byte0;				// Low Byte
+	}	field;
+	USHORT	word;
+}	EEPROM_TX_PWR_STRUC, *PEEPROM_TX_PWR_STRUC;
+#else
+typedef	union	_EEPROM_TX_PWR_STRUC	{
+	struct	{
+		signed char	Byte0;				// Low Byte
+		signed char	Byte1;				// High Byte
+	}	field;
+	USHORT	word;
+}	EEPROM_TX_PWR_STRUC, *PEEPROM_TX_PWR_STRUC;
+#endif
+
+#ifdef RT_BIG_ENDIAN
+typedef	union	_EEPROM_VERSION_STRUC	{
+	struct	{
+		UCHAR	Version;			// High Byte
+		UCHAR	FaeReleaseNumber;	// Low Byte
+	}	field;
+	USHORT	word;
+}	EEPROM_VERSION_STRUC, *PEEPROM_VERSION_STRUC;
+#else
+typedef	union	_EEPROM_VERSION_STRUC	{
+	struct	{
+		UCHAR	FaeReleaseNumber;	// Low Byte
+		UCHAR	Version;			// High Byte
+	}	field;
+	USHORT	word;
+}	EEPROM_VERSION_STRUC, *PEEPROM_VERSION_STRUC;
+#endif
+
+#ifdef RT_BIG_ENDIAN
+typedef	union	_EEPROM_LED_STRUC	{
+	struct	{
+		USHORT	Rsvd:3;				// Reserved
+		USHORT	LedMode:5;			// Led mode.
+		USHORT	PolarityGPIO_4:1;	// Polarity GPIO#4 setting.
+		USHORT	PolarityGPIO_3:1;	// Polarity GPIO#3 setting.
+		USHORT	PolarityGPIO_2:1;	// Polarity GPIO#2 setting.
+		USHORT	PolarityGPIO_1:1;	// Polarity GPIO#1 setting.
+		USHORT	PolarityGPIO_0:1;	// Polarity GPIO#0 setting.
+		USHORT	PolarityACT:1;		// Polarity ACT setting.
+		USHORT	PolarityRDY_A:1;		// Polarity RDY_A setting.
+		USHORT	PolarityRDY_G:1;		// Polarity RDY_G setting.
+	}	field;
+	USHORT	word;
+}	EEPROM_LED_STRUC, *PEEPROM_LED_STRUC;
+#else
+typedef	union	_EEPROM_LED_STRUC	{
+	struct	{
+		USHORT	PolarityRDY_G:1;		// Polarity RDY_G setting.
+		USHORT	PolarityRDY_A:1;		// Polarity RDY_A setting.
+		USHORT	PolarityACT:1;		// Polarity ACT setting.
+		USHORT	PolarityGPIO_0:1;	// Polarity GPIO#0 setting.
+		USHORT	PolarityGPIO_1:1;	// Polarity GPIO#1 setting.
+		USHORT	PolarityGPIO_2:1;	// Polarity GPIO#2 setting.
+		USHORT	PolarityGPIO_3:1;	// Polarity GPIO#3 setting.
+		USHORT	PolarityGPIO_4:1;	// Polarity GPIO#4 setting.
+		USHORT	LedMode:5;			// Led mode.
+		USHORT	Rsvd:3;				// Reserved		
+	}	field;
+	USHORT	word;
+}	EEPROM_LED_STRUC, *PEEPROM_LED_STRUC;
+#endif
+
+#ifdef RT_BIG_ENDIAN
+typedef	union	_EEPROM_TXPOWER_DELTA_STRUC	{
+	struct	{
+		UCHAR	TxPowerEnable:1;// Enable
+		UCHAR	Type:1;			// 1: plus the delta value, 0: minus the delta value
+		UCHAR	DeltaValue:6;	// Tx Power dalta value (MAX=4)
+	}	field;
+	UCHAR	value;
+}	EEPROM_TXPOWER_DELTA_STRUC, *PEEPROM_TXPOWER_DELTA_STRUC;
+#else
+typedef	union	_EEPROM_TXPOWER_DELTA_STRUC	{
+	struct	{
+		UCHAR	DeltaValue:6;	// Tx Power dalta value (MAX=4)
+		UCHAR	Type:1;			// 1: plus the delta value, 0: minus the delta value
+		UCHAR	TxPowerEnable:1;// Enable
+	}	field;
+	UCHAR	value;
+}	EEPROM_TXPOWER_DELTA_STRUC, *PEEPROM_TXPOWER_DELTA_STRUC;
+#endif
+
+#endif	// __RTMP_CHIP_H__ //
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rtmp_cmd.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rtmp_cmd.h
new file mode 100644
index 000000000..eb3816281
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rtmp_cmd.h
@@ -0,0 +1,98 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************/
+
+#ifndef __RTMP_CMD_H__
+#define __RTMP_CMD_H__
+
+#include "rtmp_type.h"
+
+
+typedef struct _CmdQElmt {
+	UINT				command;
+	PVOID				buffer;
+	ULONG				bufferlength;
+	BOOLEAN				CmdFromNdis;
+	BOOLEAN				SetOperation;
+	struct _CmdQElmt	*next;
+} CmdQElmt, *PCmdQElmt;
+
+typedef struct _CmdQ {
+	UINT				size;
+	CmdQElmt			*head;
+	CmdQElmt			*tail;
+	UINT32				CmdQState;
+} CmdQ, *PCmdQ;
+
+
+#define EnqueueCmd(cmdq, cmdqelmt)		\
+{										\
+	if (cmdq->size == 0)				\
+		cmdq->head = cmdqelmt;			\
+	else								\
+		cmdq->tail->next = cmdqelmt;	\
+	cmdq->tail = cmdqelmt;				\
+	cmdqelmt->next = NULL;				\
+	cmdq->size++;						\
+}
+
+#define NDIS_OID	UINT
+
+#ifdef KTHREAD_SUPPORT
+#define RTCMDUp(pAd) \
+	do{	\
+		RTMP_OS_TASK	*_pTask = &((pAd)->cmdQTask);	\
+		{ \
+			_pTask->kthread_running = TRUE; \
+	        wake_up(&_pTask->kthread_q); \
+		} \
+	}while(0)
+#else
+#define RTCMDUp(pAd)	                \
+	do{									    \
+		RTMP_OS_TASK	*_pTask = &((pAd)->cmdQTask);	\
+		CHECK_PID_LEGALITY(_pTask->taskPID)	    \
+		{\
+			RTMP_SEM_EVENT_UP(&(_pTask->taskSema)); \
+		}\
+	}while(0)
+#endif
+
+#ifdef CONFIG_STA_SUPPORT
+char * rtstrchr(const char * s, int c);
+
+int rt_ioctl_setparam(struct net_device *dev, struct iw_request_info *info,
+			 void *w, char *extra);
+
+#if defined(SIOCGIWSCAN) || defined(RT_CFG80211_SUPPORT)
+int rt_ioctl_siwscan(struct net_device *dev,
+			struct iw_request_info *info,
+			struct iw_point *data, char *extra);
+#endif // SIOCGIWSCAN || RT_CFG80211_SUPPORT //
+#endif // CONFIG_STA_SUPPORT //
+
+void  getRate(HTTRANSMIT_SETTING HTSetting, ULONG* fLastTxRxRate);
+
+#endif // __RTMP_CMD_H__ //
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rtmp_def.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rtmp_def.h
new file mode 100644
index 000000000..1f9cf53d5
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rtmp_def.h
@@ -0,0 +1,1743 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+    Module Name:
+    rtmp_def.h
+
+    Abstract:
+    Miniport related definition header
+
+    Revision History:
+    Who         When          What
+    --------    ----------    ----------------------------------------------
+    Paul Lin    08-01-2002    created
+    John Chang  08-05-2003    add definition for 11g & other drafts
+*/
+#ifndef __RTMP_DEF_H__
+#define __RTMP_DEF_H__
+
+#include "oid.h"
+
+#undef AP_WSC_INCLUDED
+#undef STA_WSC_INCLUDED
+#undef WSC_INCLUDED
+
+
+#ifdef CONFIG_STA_SUPPORT
+#endif // CONFIG_STA_SUPPORT //
+
+#if defined(AP_WSC_INCLUDED) || defined(STA_WSC_INCLUDED)
+#define WSC_INCLUDED
+#endif
+//
+//  Debug information verbosity: lower values indicate higher urgency
+//
+#define RT_DEBUG_OFF        0
+#define RT_DEBUG_ERROR      1
+#define RT_DEBUG_WARN       2
+#define RT_DEBUG_TRACE      3
+#define RT_DEBUG_INFO       4
+#define RT_DEBUG_LOUD       5
+
+#define NIC_TAG             ((ULONG)'0682')
+#define NIC_DBG_STRING      ("**RT28xx**")
+
+#ifdef SNMP_SUPPORT
+// for snmp 
+// to get manufacturer OUI, kathy, 2008_0220
+#define ManufacturerOUI_LEN			3
+#define ManufacturerNAME			("Ralink Technology Company.")
+#define	ResourceTypeIdName			("Ralink_ID")
+#endif 
+
+
+//#define GNU_PACKED
+#define RALINK_3883_VERSION		((UINT32)0x38830400)
+#define RALINK_2883_VERSION		((UINT32)0x28830300)
+#define RALINK_2880E_VERSION	((UINT32)0x28720200)
+#define RALINK_3070_VERSION		((UINT32)0x30700200)
+
+#define MAX_RX_PKT_LEN	1520
+
+//
+// Entry number for each DMA descriptor ring
+//
+
+#ifdef RTMP_MAC_PCI
+#define TX_RING_SIZE            64 //64
+#define MGMT_RING_SIZE          128
+#define RX_RING_SIZE            128 //64
+#define MAX_TX_PROCESS          TX_RING_SIZE //8
+#define MAX_DMA_DONE_PROCESS    TX_RING_SIZE
+#define MAX_TX_DONE_PROCESS     TX_RING_SIZE //8
+#define LOCAL_TXBUF_SIZE        2
+#endif // RTMP_MAC_PCI //
+
+#define PCI_VIRT_TO_PHYS(__Addr)	(((UINT32)(__Addr)) & 0x0FFFFFFF)
+
+
+#ifdef MULTIPLE_CARD_SUPPORT
+// MC: Multple Cards
+#define MAX_NUM_OF_MULTIPLE_CARD		32
+#endif // MULTIPLE_CARD_SUPPORT //
+
+#define MAX_RX_PROCESS          128 //64 //32
+#define NUM_OF_LOCAL_TXBUF      2
+#define TXD_SIZE                16
+#define TXWI_SIZE               16
+#define RXD_SIZE               	16
+#define RXWI_SIZE             	16
+// TXINFO_SIZE + TXWI_SIZE + 802.11 Header Size + AMSDU sub frame header
+#define TX_DMA_1ST_BUFFER_SIZE  96    // only the 1st physical buffer is pre-allocated
+#define MGMT_DMA_BUFFER_SIZE    1536 //2048
+#define RX_BUFFER_AGGRESIZE     3840 //3904 //3968 //4096 //2048 //4096
+#define RX_BUFFER_NORMSIZE      3840 //3904 //3968 //4096 //2048 //4096
+#define TX_BUFFER_NORMSIZE		RX_BUFFER_NORMSIZE
+#define MAX_FRAME_SIZE          2346                    // Maximum 802.11 frame size
+#define MAX_AGGREGATION_SIZE    3840 //3904 //3968 //4096
+#define MAX_NUM_OF_TUPLE_CACHE  2
+#define MAX_MCAST_LIST_SIZE     32
+#define MAX_LEN_OF_VENDOR_DESC  64
+//#define MAX_SIZE_OF_MCAST_PSQ   (NUM_OF_LOCAL_TXBUF >> 2) // AP won't spend more than 1/4 of total buffers on M/BCAST PSQ
+#define MAX_SIZE_OF_MCAST_PSQ               32
+
+#define MAX_RX_PROCESS_CNT	(RX_RING_SIZE)
+
+
+/*
+	WMM Note: If memory of your system is not much, please reduce the definition;
+	or when you do WMM test, the queue for low priority AC will be full, i.e.
+	TX_RING_SIZE + MAX_PACKETS_IN_QUEUE packets for the AC will be buffered in
+	WLAN, maybe no any packet buffer can be got in Ethernet driver.
+
+	Sometimes no packet buffer can be got in Ethernet driver, the system will
+	send flow control packet to the sender to slow down its sending rate.
+	So no WMM can be saw in the air.
+*/
+
+/*
+	Need to use 64 in vxworks for test case WMM A5-T07
+	Two dnlink (10Mbps) from a WMM station to a non-WMM station.
+	If use 256, queue is not enough.
+	And in rt_main_end.c, clConfig.clNum = RX_RING_SIZE * 3; is changed to
+	clConfig.clNum = RX_RING_SIZE * 4;
+*/
+// TODO: For VxWorks the size is 256. Shall we cahnge the value as 256 for all OS?????
+#define MAX_PACKETS_IN_QUEUE				(512) //(512)    // to pass WMM A5-WPAPSK
+
+#define MAX_PACKETS_IN_MCAST_PS_QUEUE		32	 
+#define MAX_PACKETS_IN_PS_QUEUE				128	//32
+#define WMM_NUM_OF_AC                       4  /* AC0, AC1, AC2, and AC3 */
+
+
+#ifdef RTMP_EFUSE_SUPPORT
+//2008/09/11:KH add to support efuse<--
+#define MAX_EEPROM_BIN_FILE_SIZE				1024
+#define EFUSE_BUFFER_PATH						"/tmp/RT30xxEEPROM.bin"
+//2008/09/11:KH add to support efuse-->
+#endif // RTMP_EFUSE_SUPPORT //
+
+// RxFilter
+#define STANORMAL	 0x17f97
+#define APNORMAL	 0x15f97
+#ifdef CONFIG_STA_SUPPORT
+#ifdef XLINK_SUPPORT
+#define PSPXLINK	 0x17f93
+#endif // XLINK_SUPPORT //
+#endif // CONFIG_STA_SUPPORT //
+
+//
+//  RTMP_ADAPTER flags
+//
+#define fRTMP_ADAPTER_MAP_REGISTER          0x00000001
+#define fRTMP_ADAPTER_INTERRUPT_IN_USE      0x00000002
+#define fRTMP_ADAPTER_HARDWARE_ERROR        0x00000004
+#define fRTMP_ADAPTER_SCATTER_GATHER        0x00000008
+#define fRTMP_ADAPTER_SEND_PACKET_ERROR     0x00000010
+#define fRTMP_ADAPTER_MLME_RESET_IN_PROGRESS 0x00000020
+#define fRTMP_ADAPTER_HALT_IN_PROGRESS      0x00000040
+#define fRTMP_ADAPTER_RESET_IN_PROGRESS     0x00000080
+#define fRTMP_ADAPTER_NIC_NOT_EXIST         0x00000100
+#define fRTMP_ADAPTER_TX_RING_ALLOCATED     0x00000200
+#define fRTMP_ADAPTER_REMOVE_IN_PROGRESS    0x00000400
+#define fRTMP_ADAPTER_MIMORATE_INUSED       0x00000800
+#define fRTMP_ADAPTER_RX_RING_ALLOCATED     0x00001000
+#define fRTMP_ADAPTER_INTERRUPT_ACTIVE      0x00002000
+#define fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS  0x00004000
+#define	fRTMP_ADAPTER_REASSOC_IN_PROGRESS	0x00008000
+#define	fRTMP_ADAPTER_MEDIA_STATE_PENDING	0x00010000
+#define	fRTMP_ADAPTER_RADIO_OFF				0x00020000
+#define fRTMP_ADAPTER_BULKOUT_RESET			0x00040000
+#define	fRTMP_ADAPTER_BULKIN_RESET			0x00080000
+#define fRTMP_ADAPTER_RDG_ACTIVE			0x00100000
+#define fRTMP_ADAPTER_DYNAMIC_BE_TXOP_ACTIVE 0x00200000
+#define fRTMP_ADAPTER_SCAN_2040 			0x04000000
+#define	fRTMP_ADAPTER_RADIO_MEASUREMENT		0x08000000
+
+#define fRTMP_ADAPTER_START_UP         		0x10000000	//Devive already initialized and enabled Tx/Rx.
+#define fRTMP_ADAPTER_MEDIA_STATE_CHANGE    0x20000000
+#define fRTMP_ADAPTER_IDLE_RADIO_OFF        0x40000000
+
+// Lock bit for accessing different ring buffers
+//#define fRTMP_ADAPTER_TX_RING_BUSY        0x80000000
+//#define fRTMP_ADAPTER_MGMT_RING_BUSY      0x40000000
+//#define fRTMP_ADAPTER_ATIM_RING_BUSY      0x20000000
+//#define fRTMP_ADAPTER_RX_RING_BUSY        0x10000000
+
+// Lock bit for accessing different queue
+//#define   fRTMP_ADAPTER_TX_QUEUE_BUSY     0x08000000
+//#define   fRTMP_ADAPTER_MGMT_QUEUE_BUSY   0x04000000
+
+//
+//  STA operation status flags
+//
+#define fOP_STATUS_INFRA_ON                 0x00000001
+#define fOP_STATUS_ADHOC_ON                 0x00000002
+#define fOP_STATUS_BG_PROTECTION_INUSED     0x00000004
+#define fOP_STATUS_SHORT_SLOT_INUSED        0x00000008
+#define fOP_STATUS_SHORT_PREAMBLE_INUSED    0x00000010
+#define fOP_STATUS_RECEIVE_DTIM             0x00000020
+//#define fOP_STATUS_TX_RATE_SWITCH_ENABLED   0x00000040
+#define fOP_STATUS_MEDIA_STATE_CONNECTED    0x00000080
+#define fOP_STATUS_WMM_INUSED               0x00000100
+#define fOP_STATUS_AGGREGATION_INUSED       0x00000200
+#define fOP_STATUS_DOZE                     0x00000400  // debug purpose
+#define fOP_STATUS_PIGGYBACK_INUSED         0x00000800  // piggy-back, and aggregation
+#define fOP_STATUS_APSD_INUSED				0x00001000
+#define fOP_STATUS_TX_AMSDU_INUSED			0x00002000
+#define fOP_STATUS_MAX_RETRY_ENABLED		0x00004000
+#define fOP_STATUS_WAKEUP_NOW               0x00008000
+#define fOP_STATUS_ADVANCE_POWER_SAVE_PCIE_DEVICE       0x00020000
+
+
+//
+//  RTMP_ADAPTER PSFlags : related to advanced power save.
+//
+// Indicate whether driver can go to sleep mode from now. This flag is useful AFTER link up
+#define fRTMP_PS_CAN_GO_SLEEP          0x00000001
+// Indicate whether driver has issue a LinkControl command to PCIe L1
+#define fRTMP_PS_SET_PCI_CLK_OFF_COMMAND          0x00000002
+// Indicate driver should disable kick off hardware to send packets from now.
+#define fRTMP_PS_DISABLE_TX         0x00000004
+// Indicate driver should IMMEDIATELY fo to sleep after receiving AP's beacon in which  doesn't indicate unicate nor multicast packets for me
+//. This flag is used ONLY in RTMPHandleRxDoneInterrupt routine.
+#define fRTMP_PS_GO_TO_SLEEP_NOW         0x00000008
+#define fRTMP_PS_TOGGLE_L1		0x00000010	// Use Toggle L1 mechanism for rt28xx PCIe
+#ifdef DOT11N_DRAFT3
+#define fOP_STATUS_SCAN_2040               	    0x00040000
+#endif // DOT11N_DRAFT3 //
+
+#define CCKSETPROTECT		0x1
+#define OFDMSETPROTECT		0x2
+#define MM20SETPROTECT		0x4
+#define MM40SETPROTECT		0x8
+#define GF20SETPROTECT		0x10
+#define GR40SETPROTECT		0x20
+#define ALLN_SETPROTECT		(GR40SETPROTECT | GF20SETPROTECT | MM40SETPROTECT | MM20SETPROTECT)
+
+//
+//  AP's client table operation status flags
+//
+#define fCLIENT_STATUS_WMM_CAPABLE          0x00000001  // CLIENT can parse QOS DATA frame
+#define fCLIENT_STATUS_AGGREGATION_CAPABLE  0x00000002  // CLIENT can receive Ralink's proprietary TX aggregation frame
+#define fCLIENT_STATUS_PIGGYBACK_CAPABLE    0x00000004  // CLIENT support piggy-back
+#define fCLIENT_STATUS_AMSDU_INUSED			0x00000008
+#define fCLIENT_STATUS_SGI20_CAPABLE		0x00000010
+#define fCLIENT_STATUS_SGI40_CAPABLE		0x00000020
+#define fCLIENT_STATUS_TxSTBC_CAPABLE		0x00000040
+#define fCLIENT_STATUS_RxSTBC_CAPABLE		0x00000080
+#define fCLIENT_STATUS_HTC_CAPABLE			0x00000100
+#define fCLIENT_STATUS_RDG_CAPABLE			0x00000200
+#define fCLIENT_STATUS_MCSFEEDBACK_CAPABLE  0x00000400
+#define fCLIENT_STATUS_APSD_CAPABLE         0x00000800  /* UAPSD STATION */
+
+#ifdef DOT11N_DRAFT3
+#define fCLIENT_STATUS_BSSCOEXIST_CAPABLE	0x00001000
+#endif // DOT11N_DRAFT3 //
+#define fCLIENT_STATUS_SOFTWARE_ENCRYPT		0x00002000	/* Indicate the client encrypt/decrypt by software */
+#define fCLIENT_STATUS_RALINK_CHIPSET		0x00100000
+
+#ifdef CLIENT_WDS
+#define fCLIENT_STATUS_CLI_WDS				0x00200000
+#endif // CLIENT_WDS //
+
+//
+//  STA configuration flags
+//
+//#define fSTA_CFG_ENABLE_TX_BURST          0x00000001
+
+// 802.11n Operating Mode Definition. 0-3 also used in ASICUPdateProtect switch case 
+#define HT_NO_PROTECT	0
+#define HT_LEGACY_PROTECT	1
+#define HT_40_PROTECT	2
+#define HT_2040_PROTECT	3
+#define HT_RTSCTS_6M	7
+//following is our own definition in order to turn on our ASIC protection register in INFRASTRUCTURE.
+#define HT_ATHEROS	8	// rt2860c has problem with atheros chip. we need to turn on RTS/CTS .
+#define HT_FORCERTSCTS	9	// Force turn on RTS/CTS first. then go to evaluate if this force RTS is necessary.
+
+//
+// RX Packet Filter control flags. Apply on pAd->PacketFilter
+//
+#define fRX_FILTER_ACCEPT_DIRECT            NDIS_PACKET_TYPE_DIRECTED
+#define fRX_FILTER_ACCEPT_MULTICAST         NDIS_PACKET_TYPE_MULTICAST
+#define fRX_FILTER_ACCEPT_BROADCAST         NDIS_PACKET_TYPE_BROADCAST
+#define fRX_FILTER_ACCEPT_ALL_MULTICAST     NDIS_PACKET_TYPE_ALL_MULTICAST
+#define fRX_FILTER_ACCEPT_PROMISCUOUS       NDIS_PACKET_TYPE_PROMISCUOUS
+
+//
+// Error code section
+//
+// NDIS_ERROR_CODE_ADAPTER_NOT_FOUND
+#define ERRLOG_READ_PCI_SLOT_FAILED     0x00000101L
+#define ERRLOG_WRITE_PCI_SLOT_FAILED    0x00000102L
+#define ERRLOG_VENDOR_DEVICE_NOMATCH    0x00000103L
+
+// NDIS_ERROR_CODE_ADAPTER_DISABLED
+#define ERRLOG_BUS_MASTER_DISABLED      0x00000201L
+
+// NDIS_ERROR_CODE_UNSUPPORTED_CONFIGURATION
+#define ERRLOG_INVALID_SPEED_DUPLEX     0x00000301L
+#define ERRLOG_SET_SECONDARY_FAILED     0x00000302L
+
+// NDIS_ERROR_CODE_OUT_OF_RESOURCES
+#define ERRLOG_OUT_OF_MEMORY            0x00000401L
+#define ERRLOG_OUT_OF_SHARED_MEMORY     0x00000402L
+#define ERRLOG_OUT_OF_MAP_REGISTERS     0x00000403L
+#define ERRLOG_OUT_OF_BUFFER_POOL       0x00000404L
+#define ERRLOG_OUT_OF_NDIS_BUFFER       0x00000405L
+#define ERRLOG_OUT_OF_PACKET_POOL       0x00000406L
+#define ERRLOG_OUT_OF_NDIS_PACKET       0x00000407L
+#define ERRLOG_OUT_OF_LOOKASIDE_MEMORY  0x00000408L
+
+// NDIS_ERROR_CODE_HARDWARE_FAILURE
+#define ERRLOG_SELFTEST_FAILED          0x00000501L
+#define ERRLOG_INITIALIZE_ADAPTER       0x00000502L
+#define ERRLOG_REMOVE_MINIPORT          0x00000503L
+
+// NDIS_ERROR_CODE_RESOURCE_CONFLICT
+#define ERRLOG_MAP_IO_SPACE             0x00000601L
+#define ERRLOG_QUERY_ADAPTER_RESOURCES  0x00000602L
+#define ERRLOG_NO_IO_RESOURCE           0x00000603L
+#define ERRLOG_NO_INTERRUPT_RESOURCE    0x00000604L
+#define ERRLOG_NO_MEMORY_RESOURCE       0x00000605L
+
+
+// WDS definition
+#define	MAX_WDS_ENTRY               4
+#define WDS_PAIRWISE_KEY_OFFSET     60    // WDS links uses pairwise key#60 ~ 63 in ASIC pairwise key table
+
+#define	WDS_DISABLE_MODE            0
+#define	WDS_RESTRICT_MODE           1
+#define	WDS_BRIDGE_MODE             2
+#define	WDS_REPEATER_MODE           3
+#define	WDS_LAZY_MODE               4
+
+
+#define MAX_MESH_NUM				0
+
+#define MAX_APCLI_NUM				0
+#ifdef APCLI_SUPPORT
+#undef	MAX_APCLI_NUM
+#define MAX_APCLI_NUM				1
+#endif // APCLI_SUPPORT //
+
+#define MAX_MBSSID_NUM				1
+#ifdef MBSS_SUPPORT
+#undef	MAX_MBSSID_NUM
+#define MAX_MBSSID_NUM				(8 - MAX_MESH_NUM - MAX_APCLI_NUM)
+#endif // MBSS_SUPPORT //
+
+/* sanity check for apidx */
+#define MBSS_MR_APIDX_SANITY_CHECK(apidx) \
+    { if (apidx > MAX_MBSSID_NUM) { \
+          DBGPRINT(RT_DEBUG_ERROR, ("%s> Error! apidx = %d > MAX_MBSSID_NUM!\n", __FUNCTION__, apidx)); \
+	  apidx = MAIN_MBSSID; } }
+
+#define VALID_WCID(_wcid)	((_wcid) > 0 && (_wcid) < MAX_LEN_OF_MAC_TABLE )
+
+#define MAIN_MBSSID                 0
+#define FIRST_MBSSID                1
+
+
+#define MAX_BEACON_SIZE				512
+// If the MAX_MBSSID_NUM is larger than 6, 
+// it shall reserve some WCID space(wcid 222~253) for beacon frames. 
+// -	these wcid 238~253 are reserved for beacon#6(ra6).
+// -	these wcid 222~237 are reserved for beacon#7(ra7).
+#if defined(MAX_MBSSID_NUM) && (MAX_MBSSID_NUM == 8)
+#define HW_RESERVED_WCID	222
+#elif defined(MAX_MBSSID_NUM) && (MAX_MBSSID_NUM == 7)
+#define HW_RESERVED_WCID	238
+#else
+#define HW_RESERVED_WCID	255
+#endif
+
+// Then dedicate wcid of DFS and Carrier-Sense.
+#define DFS_CTS_WCID 		(HW_RESERVED_WCID - 1)
+#define CS_CTS_WCID 		(HW_RESERVED_WCID - 2)
+#define LAST_SPECIFIC_WCID	(HW_RESERVED_WCID - 2)
+
+// If MAX_MBSSID_NUM is 8, the maximum available wcid for the associated STA is 211. 
+// If MAX_MBSSID_NUM is 7, the maximum available wcid for the associated STA is 228.
+#define MAX_AVAILABLE_CLIENT_WCID	(LAST_SPECIFIC_WCID - MAX_MBSSID_NUM - 1) 
+
+// TX need WCID to find Cipher Key
+// these wcid 212 ~ 219 are reserved for bc/mc packets if MAX_MBSSID_NUM is 8.
+#define GET_GroupKey_WCID(__wcid, __bssidx) \
+	{										\
+		__wcid = LAST_SPECIFIC_WCID - (MAX_MBSSID_NUM) + __bssidx;	\
+	}
+
+#define IsGroupKeyWCID(__wcid) (((__wcid) < LAST_SPECIFIC_WCID) && ((__wcid) >= (LAST_SPECIFIC_WCID - (MAX_MBSSID_NUM))))
+
+
+// definition to support multiple BSSID
+#define BSS0                            0
+#define BSS1                            1
+#define BSS2                            2
+#define BSS3                            3
+#define BSS4                            4
+#define BSS5                            5
+#define BSS6                            6
+#define BSS7                            7
+
+
+//============================================================
+// Length definitions
+#define PEER_KEY_NO                     2
+#define MAC_ADDR_LEN                    6
+#define TIMESTAMP_LEN                   8
+#define MAX_LEN_OF_SUPPORTED_RATES      MAX_LENGTH_OF_SUPPORT_RATES // 1, 2, 5.5, 11, 6, 9, 12, 18, 24, 36, 48, 54
+#define MAX_NUM_OF_REGULATORY_CLASS		16
+#define MAX_LEN_OF_KEY                  32      // 32 octets == 256 bits, Redefine for WPA
+#define MAX_NUM_OF_CHANNELS             MAX_NUM_OF_CHS      // 14 channels @2.4G +  12@UNII + 4 @MMAC + 11 @HiperLAN2 + 7 @Japan + 1 as NULL termination
+#define MAX_NUM_OF_11JCHANNELS             20      // 14 channels @2.4G +  12@UNII + 4 @MMAC + 11 @HiperLAN2 + 7 @Japan + 1 as NULL termination
+#define MAX_LEN_OF_SSID                 32
+#define CIPHER_TEXT_LEN                 128
+#define HASH_TABLE_SIZE                 256  /* Size of hash tab must be power of 2. */
+#define MAX_VIE_LEN                     1024   // New for WPA cipher suite variable IE sizes.
+#define MAX_SUPPORT_MCS             32    
+#define MAX_NUM_OF_BBP_LATCH             140
+//============================================================
+// ASIC WCID Table definition.
+//============================================================
+#define BSSID_WCID		1	// in infra mode, always put bssid with this WCID 
+#define MCAST_WCID	0x0	 
+#define BSS0Mcast_WCID	0x0	 
+#define BSS1Mcast_WCID	0xf8	 
+#define BSS2Mcast_WCID	0xf9
+#define BSS3Mcast_WCID	0xfa
+#define BSS4Mcast_WCID	0xfb
+#define BSS5Mcast_WCID	0xfc
+#define BSS6Mcast_WCID	0xfd
+#define BSS7Mcast_WCID	0xfe
+#define RESERVED_WCID		0xff	
+
+#define MAX_NUM_OF_ACL_LIST				MAX_NUMBER_OF_ACL
+
+#define MAX_LEN_OF_MAC_TABLE            MAX_NUMBER_OF_MAC // if MAX_MBSSID_NUM is 8, this value can't be larger than 211
+
+#if MAX_LEN_OF_MAC_TABLE>MAX_AVAILABLE_CLIENT_WCID
+#error MAX_LEN_OF_MAC_TABLE can not be larger than MAX_AVAILABLE_CLIENT_WCID!!!!
+#endif
+
+#define MAX_NUM_OF_WDS_LINK_PERBSSID	            3
+#define MAX_NUM_OF_WDS_LINK	            (MAX_NUM_OF_WDS_LINK_PERBSSID*MAX_MBSSID_NUM)
+#define MAX_NUM_OF_EVENT                MAX_NUMBER_OF_EVENT
+#define WDS_LINK_START_WCID				(MAX_LEN_OF_MAC_TABLE-1)	
+
+#define NUM_OF_TID			8
+#define MAX_AID_BA                    4
+#define MAX_LEN_OF_BA_REC_TABLE          ((NUM_OF_TID * MAX_LEN_OF_MAC_TABLE)/2)//   (NUM_OF_TID*MAX_AID_BA + 32)	 //Block ACK recipient 
+#define MAX_LEN_OF_BA_ORI_TABLE          ((NUM_OF_TID * MAX_LEN_OF_MAC_TABLE)/2)//   (NUM_OF_TID*MAX_AID_BA + 32)   // Block ACK originator
+#define MAX_LEN_OF_BSS_TABLE             64
+#define MAX_REORDERING_MPDU_NUM			 512
+
+// key related definitions
+#define SHARE_KEY_NUM                   4
+#define MAX_LEN_OF_SHARE_KEY            16    // byte count
+#define MAX_LEN_OF_PEER_KEY             16    // byte count
+#define PAIRWISE_KEY_NUM                64    // in MAC ASIC pairwise key table
+#define GROUP_KEY_NUM                   4
+#define PMK_LEN                         32
+#define WDS_PAIRWISE_KEY_OFFSET         60    // WDS links uses pairwise key#60 ~ 63 in ASIC pairwise key table
+#define	PMKID_NO                        4     // Number of PMKID saved supported
+#define MAX_LEN_OF_MLME_BUFFER          2048
+
+// power status related definitions
+#define PWR_ACTIVE                      0
+#define PWR_SAVE                        1
+#define PWR_MMPS                        2			//MIMO power save
+//#define PWR_UNKNOWN                   2
+
+// Auth and Assoc mode related definitions
+#define AUTH_MODE_OPEN                  0x00
+#define AUTH_MODE_KEY                   0x01
+//#define AUTH_MODE_AUTO_SWITCH         0x03
+//#define AUTH_MODE_DEAUTH              0x04
+//#define AUTH_MODE_UPLAYER             0x05 // reserved for 802.11i use
+
+// BSS Type definitions
+#define BSS_ADHOC                       0  // = Ndis802_11IBSS
+#define BSS_INFRA                       1  // = Ndis802_11Infrastructure
+#define BSS_ANY                         2  // = Ndis802_11AutoUnknown
+#define BSS_MONITOR			            3  // = Ndis802_11Monitor
+
+
+// Reason code definitions
+#define REASON_RESERVED                 0
+#define REASON_UNSPECIFY                1
+#define REASON_NO_LONGER_VALID          2
+#define REASON_DEAUTH_STA_LEAVING       3
+#define REASON_DISASSOC_INACTIVE        4
+#define REASON_DISASSPC_AP_UNABLE       5
+#define REASON_CLS2ERR                  6
+#define REASON_CLS3ERR                  7
+#define REASON_DISASSOC_STA_LEAVING     8
+#define REASON_STA_REQ_ASSOC_NOT_AUTH   9
+#define REASON_INVALID_IE               13
+#define REASON_MIC_FAILURE              14
+#define REASON_4_WAY_TIMEOUT            15
+#define REASON_GROUP_KEY_HS_TIMEOUT     16
+#define REASON_IE_DIFFERENT             17
+#define REASON_MCIPHER_NOT_VALID        18
+#define REASON_UCIPHER_NOT_VALID        19
+#define REASON_AKMP_NOT_VALID           20
+#define REASON_UNSUPPORT_RSNE_VER       21
+#define REASON_INVALID_RSNE_CAP         22
+#define REASON_8021X_AUTH_FAIL          23
+#define REASON_CIPHER_SUITE_REJECTED    24
+#define REASON_DECLINED                 37
+
+#define REASON_QOS_UNSPECIFY              32	
+#define REASON_QOS_LACK_BANDWIDTH         33	
+#define REASON_POOR_CHANNEL_CONDITION     34
+#define REASON_QOS_OUTSIDE_TXOP_LIMITION  35
+#define REASON_QOS_QSTA_LEAVING_QBSS      36
+#define REASON_QOS_UNWANTED_MECHANISM     37
+#define REASON_QOS_MECH_SETUP_REQUIRED    38
+#define REASON_QOS_REQUEST_TIMEOUT        39
+#define REASON_QOS_CIPHER_NOT_SUPPORT     45
+
+
+#define REASON_FT_INVALID_FTIE				55
+
+// Status code definitions
+#define MLME_SUCCESS                    0
+#define MLME_UNSPECIFY_FAIL             1
+#define MLME_CANNOT_SUPPORT_CAP         10
+#define MLME_REASSOC_DENY_ASSOC_EXIST   11 
+#define MLME_ASSOC_DENY_OUT_SCOPE       12
+#define MLME_ALG_NOT_SUPPORT            13
+#define MLME_SEQ_NR_OUT_OF_SEQUENCE     14
+#define MLME_REJ_CHALLENGE_FAILURE      15
+#define MLME_REJ_TIMEOUT                  16
+#define MLME_ASSOC_REJ_UNABLE_HANDLE_STA  17
+#define MLME_ASSOC_REJ_DATA_RATE          18
+
+#define MLME_ASSOC_REJ_NO_EXT_RATE        22
+#define MLME_ASSOC_REJ_NO_EXT_RATE_PBCC   23
+#define MLME_ASSOC_REJ_NO_CCK_OFDM        24
+
+
+#define MLME_QOS_UNSPECIFY                32
+#define MLME_REQUEST_DECLINED             37
+#define MLME_REQUEST_WITH_INVALID_PARAM   38
+#define MLME_INVALID_INFORMATION_ELEMENT  40
+#define MLME_INVALID_GROUP_CIPHER   	  41
+#define MLME_INVALID_PAIRWISE_CIPHER   	  42
+#define MLME_INVALID_AKMP   			  43
+#define MLME_NOT_SUPPORT_RSN_VERSION	  44
+#define	MLME_INVALID_RSN_CAPABILITIES	  45
+#define MLME_DLS_NOT_ALLOW_IN_QBSS        48
+#define MLME_DEST_STA_NOT_IN_QBSS         49
+#define MLME_DEST_STA_IS_NOT_A_QSTA       50
+
+#define MLME_INVALID_FORMAT             0x51
+#define MLME_FAIL_NO_RESOURCE           0x52
+#define MLME_STATE_MACHINE_REJECT       0x53
+#define MLME_MAC_TABLE_FAIL             0x54
+
+// IE code
+#define IE_SSID                         0
+#define IE_SUPP_RATES                   1
+#define IE_FH_PARM                      2
+#define IE_DS_PARM                      3
+#define IE_CF_PARM                      4
+#define IE_TIM                          5
+#define IE_IBSS_PARM                    6
+#define IE_COUNTRY                      7     // 802.11d
+#define IE_802_11D_REQUEST              10    // 802.11d
+#define IE_QBSS_LOAD                    11    // 802.11e d9
+#define IE_EDCA_PARAMETER               12    // 802.11e d9
+#define IE_TSPEC                        13    // 802.11e d9 
+#define IE_TCLAS                        14    // 802.11e d9
+#define IE_SCHEDULE                     15    // 802.11e d9
+#define IE_CHALLENGE_TEXT               16
+#define IE_POWER_CONSTRAINT             32    // 802.11h d3.3
+#define IE_POWER_CAPABILITY             33    // 802.11h d3.3
+#define IE_TPC_REQUEST                  34    // 802.11h d3.3
+#define IE_TPC_REPORT                   35    // 802.11h d3.3
+#define IE_SUPP_CHANNELS                36    // 802.11h d3.3
+#define IE_CHANNEL_SWITCH_ANNOUNCEMENT  37    // 802.11h d3.3
+#define IE_MEASUREMENT_REQUEST          38    // 802.11h d3.3
+#define IE_MEASUREMENT_REPORT           39    // 802.11h d3.3
+#define IE_QUIET                        40    // 802.11h d3.3
+#define IE_IBSS_DFS                     41    // 802.11h d3.3
+#define IE_ERP                          42    // 802.11g
+#define IE_TS_DELAY                     43    // 802.11e d9
+#define IE_TCLAS_PROCESSING             44    // 802.11e d9
+#define IE_QOS_CAPABILITY               46    // 802.11e d6
+#define IE_HT_CAP                       45    // 802.11n d1. HT CAPABILITY. ELEMENT ID TBD
+#define IE_AP_CHANNEL_REPORT			51    // 802.11k d6
+#define IE_HT_CAP2                         52    // 802.11n d1. HT CAPABILITY. ELEMENT ID TBD
+#define IE_RSN                          48    // 802.11i d3.0
+#define IE_WPA2                         48    // WPA2
+#define IE_EXT_SUPP_RATES               50    // 802.11g
+#define IE_SUPP_REG_CLASS               59    // 802.11y. Supported regulatory classes.
+#define IE_EXT_CHANNEL_SWITCH_ANNOUNCEMENT	60	// 802.11n 
+#define IE_ADD_HT                         61    // 802.11n d1. ADDITIONAL HT CAPABILITY. ELEMENT ID TBD
+#define IE_ADD_HT2                        53    // 802.11n d1. ADDITIONAL HT CAPABILITY. ELEMENT ID TBD
+
+
+// For 802.11n D3.03
+//#define IE_NEW_EXT_CHA_OFFSET             62    // 802.11n d1. New extension channel offset elemet
+#define IE_SECONDARY_CH_OFFSET		62	// 802.11n D3.03	Secondary Channel Offset element
+#define IE_WAPI							68		// WAPI information element. Same as Bss Ac Access Dealy Element.
+#define IE_2040_BSS_COEXIST               72    // 802.11n D3.0.3
+#define IE_2040_BSS_INTOLERANT_REPORT     73    // 802.11n D3.03
+#define IE_OVERLAPBSS_SCAN_PARM           74    // 802.11n D3.03
+#define IE_EXT_CAPABILITY                127   // 802.11n D3.03 
+
+
+#define IE_WPA                          221   // WPA
+#define IE_VENDOR_SPECIFIC              221   // Wifi WMM (WME)
+#define	IE_WFA_WSC							221
+
+#define OUI_BROADCOM_HT              51   //  
+#define OUI_BROADCOM_HTADD              52   //  
+#define OUI_PREN_HT_CAP              51   //  
+#define OUI_PREN_ADD_HT              52   //  
+
+// CCX information
+#define IE_AIRONET_CKIP                 133   // CCX1.0 ID 85H for CKIP 
+#define IE_AP_TX_POWER                  150   // CCX 2.0 for AP transmit power
+#define IE_MEASUREMENT_CAPABILITY       221   // CCX 2.0
+#define IE_CCX_V2                       221
+#define IE_AIRONET_IPADDRESS            149   // CCX ID 95H for IP Address
+#define IE_AIRONET_CCKMREASSOC          156   // CCX ID 9CH for CCKM Reassociation Request element
+#define CKIP_NEGOTIATION_LENGTH         30
+#define AIRONET_IPADDRESS_LENGTH        10
+#define AIRONET_CCKMREASSOC_LENGTH      24
+
+// ========================================================
+// MLME state machine definition
+// ========================================================
+
+// STA MLME state mahcines
+#define ASSOC_STATE_MACHINE             1
+#define AUTH_STATE_MACHINE              2
+#define AUTH_RSP_STATE_MACHINE          3
+#define SYNC_STATE_MACHINE              4
+#define MLME_CNTL_STATE_MACHINE         5
+#define WPA_PSK_STATE_MACHINE           6
+//#define LEAP_STATE_MACHINE              7
+#define AIRONET_STATE_MACHINE           8
+#define ACTION_STATE_MACHINE           9
+
+
+// AP MLME state machines
+#define AP_ASSOC_STATE_MACHINE          11
+#define AP_AUTH_STATE_MACHINE           12
+#define AP_SYNC_STATE_MACHINE           14
+#define AP_CNTL_STATE_MACHINE           15
+#define WSC_STATE_MACHINE            17
+#define WSC_UPNP_STATE_MACHINE		    18
+
+
+#define WPA_STATE_MACHINE            		23
+
+
+#ifdef QOS_DLS_SUPPORT
+#define DLS_STATE_MACHINE               26
+#endif // QOS_DLS_SUPPORT //
+
+
+
+//
+// STA's CONTROL/CONNECT state machine: states, events, total function #
+//
+#define CNTL_IDLE                       0
+#define CNTL_WAIT_DISASSOC              1
+#define CNTL_WAIT_JOIN                  2
+#define CNTL_WAIT_REASSOC               3
+#define CNTL_WAIT_START                 4
+#define CNTL_WAIT_AUTH                  5
+#define CNTL_WAIT_ASSOC                 6
+#define CNTL_WAIT_AUTH2                 7
+#define CNTL_WAIT_OID_LIST_SCAN         8
+#define CNTL_WAIT_OID_DISASSOC          9
+
+#define MT2_ASSOC_CONF                  34
+#define MT2_AUTH_CONF                   35
+#define MT2_DEAUTH_CONF                 36
+#define MT2_DISASSOC_CONF               37
+#define MT2_REASSOC_CONF                38
+#define MT2_PWR_MGMT_CONF               39
+#define MT2_JOIN_CONF                   40
+#define MT2_SCAN_CONF                   41
+#define MT2_START_CONF                  42
+#define MT2_GET_CONF                    43
+#define MT2_SET_CONF                    44
+#define MT2_RESET_CONF                  45
+#define MT2_FT_OTD_CONF					46
+#define MT2_MLME_ROAMING_REQ            52
+
+#define CNTL_FUNC_SIZE                  1
+
+//
+// STA's ASSOC state machine: states, events, total function #
+//
+#define ASSOC_IDLE                      0
+#define ASSOC_WAIT_RSP                  1
+#define REASSOC_WAIT_RSP                2
+#define DISASSOC_WAIT_RSP               3
+#define MAX_ASSOC_STATE                 4
+
+#define ASSOC_MACHINE_BASE              0
+#define MT2_MLME_ASSOC_REQ              0
+#define MT2_MLME_REASSOC_REQ            1
+#define MT2_MLME_DISASSOC_REQ           2  
+#define MT2_PEER_DISASSOC_REQ           3
+#define MT2_PEER_ASSOC_REQ              4
+#define MT2_PEER_ASSOC_RSP              5
+#define MT2_PEER_REASSOC_REQ            6
+#define MT2_PEER_REASSOC_RSP            7
+#define MT2_DISASSOC_TIMEOUT            8
+#define MT2_ASSOC_TIMEOUT               9
+#define MT2_REASSOC_TIMEOUT             10
+#define MAX_ASSOC_MSG                   11
+
+#define ASSOC_FUNC_SIZE                 (MAX_ASSOC_STATE * MAX_ASSOC_MSG)
+
+//
+// ACT state machine: states, events, total function #
+//
+#define ACT_IDLE                      0
+#define MAX_ACT_STATE                 1
+
+#define ACT_MACHINE_BASE              0
+
+/* Those PEER_xx_CATE number is based on real Categary value in IEEE spec. 
+   Please doesn't modify it by yourself. */
+//Category 
+#define MT2_PEER_SPECTRUM_CATE              0
+#define MT2_PEER_QOS_CATE              1
+#define MT2_PEER_DLS_CATE             2
+#define MT2_PEER_BA_CATE             3
+#define MT2_PEER_PUBLIC_CATE             4
+#define MT2_PEER_RM_CATE             5
+/* "FT_CATEGORY_BSS_TRANSITION equal to 6" is defined file of "dot11r_ft.h" */
+#define MT2_PEER_HT_CATE             7	//	7.4.7
+#define MT2_PEER_PMF_CATE				8	/* defined in IEEE 802.11w-D8.0 7.3.1.11*/
+#define MT2_PEER_RESV_9					9
+#define MT2_PEER_RESV_10				10
+#define MT2_PEER_RESV_11				11
+#define MT2_PEER_RESV_12				12
+#define MT2_PEER_RESV_13				13
+#define MT2_PEER_RESV_14				14
+#define MT2_PEER_RESV_15				15
+#define MT2_PEER_RESV_16				16
+/*
+	In WMM spec v1.1. the category must be 17
+	(see Table 7 Management Action Frame Fields)
+*/
+#define MT2_PEER_WMM					17
+#define MAX_IEEE_STD_CATE				17	/* Indicate the maximum category code defined in IEEE-802.11-Std */
+#define MAX_PEER_CATE_MSG				MAX_IEEE_STD_CATE
+
+#define MT2_MLME_ADD_BA_CATE            (MAX_IEEE_STD_CATE + 1)
+#define MT2_MLME_ORI_DELBA_CATE         (MAX_IEEE_STD_CATE + 2)
+#define MT2_MLME_REC_DELBA_CATE         (MAX_IEEE_STD_CATE + 3)
+#define MT2_MLME_QOS_CATE              	(MAX_IEEE_STD_CATE + 4)
+#define MT2_MLME_DLS_CATE             	(MAX_IEEE_STD_CATE + 5)
+#define MT2_ACT_INVALID             	(MAX_IEEE_STD_CATE + 6)
+
+#define MAX_ACT_MSG                   	(MAX_IEEE_STD_CATE + 7)
+
+
+//Category field
+#define CATEGORY_SPECTRUM		0
+#define CATEGORY_QOS			1
+#define CATEGORY_DLS			2
+#define CATEGORY_BA			3
+#define CATEGORY_PUBLIC		4
+#define CATEGORY_RM			5
+#define CATEGORY_FT			6
+#define CATEGORY_HT			7
+#define CATEGORY_PMF			8	/* defined in IEEE 802.11w-D8.0 7.3.1.11*/
+
+// DLS Action frame definition
+#define ACTION_DLS_REQUEST			0
+#define ACTION_DLS_RESPONSE			1
+#define ACTION_DLS_TEARDOWN			2
+
+//Spectrum  Action field value 802.11h 7.4.1
+#define SPEC_MRQ	0	// Request
+#define SPEC_MRP	1	//Report
+#define SPEC_TPCRQ	2
+#define SPEC_TPCRP	3
+#define SPEC_CHANNEL_SWITCH	4
+
+
+//BA  Action field value
+#define ADDBA_REQ	0
+#define ADDBA_RESP	1
+#define DELBA   2
+
+//Public's  Action field value in Public Category.  Some in 802.11y and some in 11n
+#define ACTION_BSS_2040_COEXIST				0	// 11n
+#define ACTION_DSE_ENABLEMENT					1	// 11y D9.0
+#define ACTION_DSE_DEENABLEMENT				2	// 11y D9.0
+#define ACTION_DSE_REG_LOCATION_ANNOUNCE	3	// 11y D9.0
+#define ACTION_EXT_CH_SWITCH_ANNOUNCE		4	// 11y D9.0
+#define ACTION_DSE_MEASUREMENT_REQ			5	// 11y D9.0
+#define ACTION_DSE_MEASUREMENT_REPORT		6	// 11y D9.0
+#define ACTION_MEASUREMENT_PILOT_ACTION		7  	// 11y D9.0
+#define ACTION_DSE_POWER_CONSTRAINT			8	// 11y D9.0
+
+
+//HT  Action field value
+#define NOTIFY_BW_ACTION				0
+#define SMPS_ACTION						1
+#define PSMP_ACTION   					2
+#define SETPCO_ACTION					3
+#define MIMO_CHA_MEASURE_ACTION			4
+#define MIMO_N_BEACONFORM				5
+#define MIMO_BEACONFORM					6
+#define ANTENNA_SELECT					7
+#define HT_INFO_EXCHANGE				8
+
+#define ACT_FUNC_SIZE                 (MAX_ACT_STATE * MAX_ACT_MSG)
+//
+// STA's AUTHENTICATION state machine: states, evvents, total function #
+//
+#define AUTH_REQ_IDLE                   0
+#define AUTH_WAIT_SEQ2                  1
+#define AUTH_WAIT_SEQ4                  2
+#define MAX_AUTH_STATE                  3
+
+#define AUTH_MACHINE_BASE               0
+#define MT2_MLME_AUTH_REQ               0
+#define MT2_PEER_AUTH_EVEN              1
+#define MT2_AUTH_TIMEOUT                2
+#define MAX_AUTH_MSG                    3
+
+#define AUTH_FUNC_SIZE                  (MAX_AUTH_STATE * MAX_AUTH_MSG)
+
+//
+// STA's AUTH_RSP state machine: states, events, total function #
+//
+#define AUTH_RSP_IDLE                   0
+#define AUTH_RSP_WAIT_CHAL              1
+#define MAX_AUTH_RSP_STATE              2
+
+#define AUTH_RSP_MACHINE_BASE           0
+#define MT2_AUTH_CHALLENGE_TIMEOUT      0
+#define MT2_PEER_AUTH_ODD               1
+#define MT2_PEER_DEAUTH                 2
+#define MAX_AUTH_RSP_MSG                3
+
+#define AUTH_RSP_FUNC_SIZE              (MAX_AUTH_RSP_STATE * MAX_AUTH_RSP_MSG)
+
+//
+// STA's SYNC state machine: states, events, total function #
+//
+#define SYNC_IDLE                       0  // merge NO_BSS,IBSS_IDLE,IBSS_ACTIVE and BSS in to 1 state
+#define JOIN_WAIT_BEACON                1
+#define SCAN_LISTEN                     2
+#define MAX_SYNC_STATE                  3
+
+#define SYNC_MACHINE_BASE               0
+#define MT2_MLME_SCAN_REQ               0
+#define MT2_MLME_JOIN_REQ               1
+#define MT2_MLME_START_REQ              2
+#define MT2_PEER_BEACON                 3
+#define MT2_PEER_PROBE_RSP              4
+#define MT2_PEER_ATIM                   5
+#define MT2_SCAN_TIMEOUT                6
+#define MT2_BEACON_TIMEOUT              7
+#define MT2_ATIM_TIMEOUT                8
+#define MT2_PEER_PROBE_REQ              9
+#define MAX_SYNC_MSG                    10
+
+#define SYNC_FUNC_SIZE                  (MAX_SYNC_STATE * MAX_SYNC_MSG)
+
+//Messages for the DLS state machine
+#define DLS_IDLE						0
+#define MAX_DLS_STATE					1
+
+#define DLS_MACHINE_BASE				0
+#define MT2_MLME_DLS_REQ			    0
+#define MT2_PEER_DLS_REQ			    1
+#define MT2_PEER_DLS_RSP			    2
+#define MT2_MLME_DLS_TEAR_DOWN		    3
+#define MT2_PEER_DLS_TEAR_DOWN		    4
+#define MAX_DLS_MSG				        5
+
+#define DLS_FUNC_SIZE					(MAX_DLS_STATE * MAX_DLS_MSG)
+
+
+// 
+// WSC State machine: states, events, total function #
+//
+
+// 
+// AP's CONTROL/CONNECT state machine: states, events, total function #
+// 
+#define AP_CNTL_FUNC_SIZE               1
+
+//
+// AP's ASSOC state machine: states, events, total function #
+//
+#define AP_ASSOC_IDLE                   0
+#define AP_MAX_ASSOC_STATE              1
+
+#define AP_ASSOC_MACHINE_BASE           0
+#define APMT2_MLME_DISASSOC_REQ         0
+#define APMT2_PEER_DISASSOC_REQ         1
+#define APMT2_PEER_ASSOC_REQ            2
+#define APMT2_PEER_REASSOC_REQ          3
+#define APMT2_CLS3ERR                   4
+#define AP_MAX_ASSOC_MSG                5
+
+#define AP_ASSOC_FUNC_SIZE              (AP_MAX_ASSOC_STATE * AP_MAX_ASSOC_MSG)
+
+//
+// AP's AUTHENTICATION state machine: states, events, total function #
+//
+#define AP_AUTH_REQ_IDLE                0
+#define AP_MAX_AUTH_STATE               1
+
+#define AP_AUTH_MACHINE_BASE            0
+#define APMT2_MLME_DEAUTH_REQ           0
+#define APMT2_CLS2ERR                   1
+#define APMT2_PEER_DEAUTH				2
+#define APMT2_PEER_AUTH_REQ				3
+#define APMT2_PEER_AUTH_CONFIRM			4
+#define AP_MAX_AUTH_MSG                 5
+
+#define AP_AUTH_FUNC_SIZE               (AP_MAX_AUTH_STATE * AP_MAX_AUTH_MSG)
+
+//
+// AP's SYNC state machine: states, events, total function #
+//
+#define AP_SYNC_IDLE                    0
+#ifdef AP_SCAN_SUPPORT
+#define AP_SCAN_LISTEN					1
+#define AP_MAX_SYNC_STATE               2
+#else
+#define AP_MAX_SYNC_STATE               1
+#endif
+
+#define AP_SYNC_MACHINE_BASE		0
+#define APMT2_PEER_PROBE_REQ		0
+#define APMT2_PEER_BEACON			1
+#define APMT2_PEER_PROBE_RSP		2
+#ifdef AP_SCAN_SUPPORT
+#define APMT2_MLME_SCAN_REQ		3
+#define APMT2_SCAN_TIMEOUT		4
+#define APMT2_MLME_SCAN_CNCL		5
+#define AP_MAX_SYNC_MSG			6
+#else
+#define AP_MAX_SYNC_MSG			3
+#endif
+
+#define AP_SYNC_FUNC_SIZE               (AP_MAX_SYNC_STATE * AP_MAX_SYNC_MSG)
+
+#ifdef APCLI_SUPPORT
+//ApCli authentication state machine
+#define APCLI_AUTH_REQ_IDLE                0
+#define APCLI_AUTH_WAIT_SEQ2               1
+#define APCLI_AUTH_WAIT_SEQ4               2
+#define APCLI_MAX_AUTH_STATE               3
+
+#define APCLI_AUTH_MACHINE_BASE            0
+#define APCLI_MT2_MLME_AUTH_REQ            0
+#define APCLI_MT2_MLME_DEAUTH_REQ          1
+#define APCLI_MT2_PEER_AUTH_EVEN           2
+#define APCLI_MT2_PEER_DEAUTH              3
+#define APCLI_MT2_AUTH_TIMEOUT             4
+#define APCLI_MAX_AUTH_MSG                 5
+
+#define APCLI_AUTH_FUNC_SIZE               (APCLI_MAX_AUTH_STATE * APCLI_MAX_AUTH_MSG)
+
+//ApCli association state machine
+#define APCLI_ASSOC_IDLE                   0
+#define APCLI_ASSOC_WAIT_RSP               1
+#define APCLI_MAX_ASSOC_STATE              2
+
+#define APCLI_ASSOC_MACHINE_BASE           0
+#define APCLI_MT2_MLME_ASSOC_REQ           0
+#define APCLI_MT2_MLME_DISASSOC_REQ        1  
+#define APCLI_MT2_PEER_DISASSOC_REQ        2
+#define APCLI_MT2_PEER_ASSOC_RSP           3
+#define APCLI_MT2_ASSOC_TIMEOUT            4
+#define APCLI_MAX_ASSOC_MSG                5
+
+#define APCLI_ASSOC_FUNC_SIZE              (APCLI_MAX_ASSOC_STATE * APCLI_MAX_ASSOC_MSG)
+
+//ApCli sync state machine
+#define APCLI_SYNC_IDLE                   0  // merge NO_BSS,IBSS_IDLE,IBSS_ACTIVE and BSS in to 1 state
+#define APCLI_JOIN_WAIT_PROBE_RSP         1
+#define APCLI_MAX_SYNC_STATE              2
+
+#define APCLI_SYNC_MACHINE_BASE           0
+#define APCLI_MT2_MLME_PROBE_REQ          0
+#define APCLI_MT2_PEER_PROBE_RSP          1
+#define APCLI_MT2_PROBE_TIMEOUT           2
+#define APCLI_MAX_SYNC_MSG                3
+
+#define APCLI_SYNC_FUNC_SIZE              (APCLI_MAX_SYNC_STATE * APCLI_MAX_SYNC_MSG)
+
+//ApCli ctrl state machine
+#define APCLI_CTRL_DISCONNECTED           0  // merge NO_BSS,IBSS_IDLE,IBSS_ACTIVE and BSS in to 1 state
+#define APCLI_CTRL_PROBE                  1
+#define APCLI_CTRL_AUTH                   2
+#define APCLI_CTRL_AUTH_2                 3
+#define APCLI_CTRL_ASSOC                  4
+#define APCLI_CTRL_DEASSOC                5
+#define APCLI_CTRL_CONNECTED              6
+#define APCLI_MAX_CTRL_STATE              7
+
+#define APCLI_CTRL_MACHINE_BASE           0
+#define APCLI_CTRL_JOIN_REQ               0
+#define APCLI_CTRL_PROBE_RSP              1
+#define APCLI_CTRL_AUTH_RSP               2
+#define APCLI_CTRL_DISCONNECT_REQ         3
+#define APCLI_CTRL_PEER_DISCONNECT_REQ    4
+#define APCLI_CTRL_ASSOC_RSP              5
+#define APCLI_CTRL_DEASSOC_RSP            6
+#define APCLI_CTRL_JOIN_REQ_TIMEOUT       7
+#define APCLI_CTRL_AUTH_REQ_TIMEOUT       8
+#define APCLI_CTRL_ASSOC_REQ_TIMEOUT      9
+#define APCLI_MAX_CTRL_MSG                10
+
+#define APCLI_CTRL_FUNC_SIZE              (APCLI_MAX_CTRL_STATE * APCLI_MAX_CTRL_MSG)
+
+
+#endif	// APCLI_SUPPORT //
+
+
+// =============================================================================
+
+// value domain of 802.11 header FC.Tyte, which is b3..b2 of the 1st-byte of MAC header
+#define BTYPE_MGMT                  0
+#define BTYPE_CNTL                  1
+#define BTYPE_DATA                  2
+
+// value domain of 802.11 MGMT frame's FC.subtype, which is b7..4 of the 1st-byte of MAC header
+#define SUBTYPE_ASSOC_REQ           0
+#define SUBTYPE_ASSOC_RSP           1
+#define SUBTYPE_REASSOC_REQ         2
+#define SUBTYPE_REASSOC_RSP         3
+#define SUBTYPE_PROBE_REQ           4
+#define SUBTYPE_PROBE_RSP           5
+#define SUBTYPE_BEACON              8
+#define SUBTYPE_ATIM                9
+#define SUBTYPE_DISASSOC            10
+#define SUBTYPE_AUTH                11
+#define SUBTYPE_DEAUTH              12
+#define SUBTYPE_ACTION              13
+#define SUBTYPE_ACTION_NO_ACK              14
+
+// value domain of 802.11 CNTL frame's FC.subtype, which is b7..4 of the 1st-byte of MAC header
+#define SUBTYPE_WRAPPER       	7
+#define SUBTYPE_BLOCK_ACK_REQ       8
+#define SUBTYPE_BLOCK_ACK           9
+#define SUBTYPE_PS_POLL             10
+#define SUBTYPE_RTS                 11
+#define SUBTYPE_CTS                 12
+#define SUBTYPE_ACK                 13
+#define SUBTYPE_CFEND               14
+#define SUBTYPE_CFEND_CFACK         15
+
+// value domain of 802.11 DATA frame's FC.subtype, which is b7..4 of the 1st-byte of MAC header
+#define SUBTYPE_DATA                0
+#define SUBTYPE_DATA_CFACK          1
+#define SUBTYPE_DATA_CFPOLL         2
+#define SUBTYPE_DATA_CFACK_CFPOLL   3
+#define SUBTYPE_NULL_FUNC           4
+#define SUBTYPE_CFACK               5
+#define SUBTYPE_CFPOLL              6
+#define SUBTYPE_CFACK_CFPOLL        7
+#define SUBTYPE_QDATA               8
+#define SUBTYPE_QDATA_CFACK         9
+#define SUBTYPE_QDATA_CFPOLL        10
+#define SUBTYPE_QDATA_CFACK_CFPOLL  11
+#define SUBTYPE_QOS_NULL            12
+#define SUBTYPE_QOS_CFACK           13
+#define SUBTYPE_QOS_CFPOLL          14
+#define SUBTYPE_QOS_CFACK_CFPOLL    15
+
+// ACK policy of QOS Control field bit 6:5
+#define NORMAL_ACK                  0x00  // b6:5 = 00
+#define NO_ACK                      0x20  // b6:5 = 01
+#define NO_EXPLICIT_ACK             0x40  // b6:5 = 10
+#define BLOCK_ACK                   0x60  // b6:5 = 11
+
+//
+// rtmp_data.c use these definition
+//
+#define LENGTH_802_11               24
+#define LENGTH_802_11_AND_H         30
+#define LENGTH_802_11_CRC_H         34
+#define LENGTH_802_11_CRC           28
+#define LENGTH_802_11_WITH_ADDR4    30
+#define LENGTH_802_3                14
+#define LENGTH_802_3_TYPE           2
+#define LENGTH_802_1_H              8
+#define LENGTH_EAPOL_H              4
+#define LENGTH_WMMQOS_H				2
+#define LENGTH_CRC                  4
+#define MAX_SEQ_NUMBER              0x0fff
+#define LENGTH_802_3_NO_TYPE		12
+#define LENGTH_802_1Q				4 /* VLAN related */
+
+// STA_CSR4.field.TxResult
+#define TX_RESULT_SUCCESS           0
+#define TX_RESULT_ZERO_LENGTH       1
+#define TX_RESULT_UNDER_RUN         2
+#define TX_RESULT_OHY_ERROR         4
+#define TX_RESULT_RETRY_FAIL        6
+
+// All PHY rate summary in TXD
+// Preamble MODE in TxD
+#define MODE_CCK	0
+#define MODE_OFDM   1
+#ifdef DOT11_N_SUPPORT
+#define MODE_HTMIX	2
+#define MODE_HTGREENFIELD	3
+#endif // DOT11_N_SUPPORT //
+// MCS for CCK.  BW.SGI.STBC are reserved
+#define MCS_LONGP_RATE_1                      0	 // long preamble CCK 1Mbps
+#define MCS_LONGP_RATE_2                      1	// long preamble CCK 1Mbps
+#define MCS_LONGP_RATE_5_5                    2
+#define MCS_LONGP_RATE_11                     3
+#define MCS_SHORTP_RATE_1                      4	 // long preamble CCK 1Mbps. short is forbidden in 1Mbps
+#define MCS_SHORTP_RATE_2                      5	// short preamble CCK 2Mbps
+#define MCS_SHORTP_RATE_5_5                    6
+#define MCS_SHORTP_RATE_11                     7
+// To send duplicate legacy OFDM. set BW=BW_40.  SGI.STBC are reserved
+#define MCS_RATE_6                      0   // legacy OFDM
+#define MCS_RATE_9                      1   // OFDM
+#define MCS_RATE_12                     2   // OFDM
+#define MCS_RATE_18                     3   // OFDM
+#define MCS_RATE_24                     4  // OFDM
+#define MCS_RATE_36                     5   // OFDM
+#define MCS_RATE_48                     6  // OFDM
+#define MCS_RATE_54                     7 // OFDM	
+// HT
+#define MCS_0		0	// 1S
+#define MCS_1		1
+#define MCS_2		2
+#define MCS_3		3
+#define MCS_4		4
+#define MCS_5		5
+#define MCS_6		6
+#define MCS_7		7
+#define MCS_8		8	// 2S
+#define MCS_9		9
+#define MCS_10		10
+#define MCS_11		11
+#define MCS_12		12
+#define MCS_13		13
+#define MCS_14		14
+#define MCS_15		15
+#define MCS_16		16	// 3*3
+#define MCS_17		17
+#define MCS_18		18
+#define MCS_19		19
+#define MCS_20		20
+#define MCS_21		21
+#define MCS_22		22
+#define MCS_23		23
+#define MCS_32		32
+#define MCS_AUTO		33
+
+#ifdef DOT11_N_SUPPORT
+// OID_HTPHYMODE
+// MODE
+#define HTMODE_MM	0	 
+#define HTMODE_GF	1
+#endif // DOT11_N_SUPPORT //
+
+// Fixed Tx MODE - HT, CCK or OFDM
+#define FIXED_TXMODE_HT		0
+#define FIXED_TXMODE_CCK	1
+#define FIXED_TXMODE_OFDM 	2
+// BW
+#define BW_20		BAND_WIDTH_20
+#define BW_40		BAND_WIDTH_40
+#define BW_BOTH		BAND_WIDTH_BOTH
+#define BW_10		BAND_WIDTH_10	// 802.11j has 10MHz. This definition is for internal usage. doesn't fill in the IE or other field.
+
+#ifdef DOT11_N_SUPPORT
+// SHORTGI
+#define GI_400		GAP_INTERVAL_400	// only support in HT mode
+#define GI_BOTH		GAP_INTERVAL_BOTH
+#endif // DOT11_N_SUPPORT //
+#define GI_800		GAP_INTERVAL_800	
+// STBC
+#define STBC_NONE	0
+#ifdef DOT11_N_SUPPORT
+#define STBC_USE	1	// limited use in rt2860b phy
+#define RXSTBC_ONE	1	// rx support of one spatial stream
+#define RXSTBC_TWO	2	// rx support of 1 and 2 spatial stream
+#define RXSTBC_THR	3	// rx support of 1~3 spatial stream
+// MCS FEEDBACK
+#define MCSFBK_NONE	0  // not support mcs feedback /
+#define MCSFBK_RSV	1	// reserved
+#define MCSFBK_UNSOLICIT	2	// only support unsolict mcs feedback
+#define MCSFBK_MRQ	3	// response to both MRQ and unsolict mcs feedback
+
+// MIMO power safe 
+#define	MMPS_STATIC	0
+#define	MMPS_DYNAMIC		1
+#define   MMPS_RSV		2
+#define MMPS_ENABLE		3
+
+
+// A-MSDU size
+#define	AMSDU_0	0
+#define	AMSDU_1		1
+
+#endif // DOT11_N_SUPPORT //
+
+// MCS use 7 bits 
+#define TXRATEMIMO		0x80
+#define TXRATEMCS		0x7F
+#define TXRATEOFDM		0x7F
+#define RATE_1                      0
+#define RATE_2                      1
+#define RATE_5_5                    2
+#define RATE_11                     3
+#define RATE_6                      4   // OFDM
+#define RATE_9                      5   // OFDM
+#define RATE_12                     6   // OFDM
+#define RATE_18                     7   // OFDM
+#define RATE_24                     8   // OFDM
+#define RATE_36                     9   // OFDM
+#define RATE_48                     10  // OFDM
+#define RATE_54                     11  // OFDM
+#define RATE_FIRST_OFDM_RATE        RATE_6
+#define RATE_LAST_OFDM_RATE        	RATE_54
+#define RATE_6_5                    12  // HT mix
+#define RATE_13                     13  // HT mix
+#define RATE_19_5                   14  // HT mix
+#define RATE_26                     15  // HT mix
+#define RATE_39                     16  // HT mix
+#define RATE_52                     17  // HT mix
+#define RATE_58_5                   18  // HT mix
+#define RATE_65                     19  // HT mix
+#define RATE_78                     20  // HT mix
+#define RATE_104                    21  // HT mix
+#define RATE_117                    22  // HT mix
+#define RATE_130                    23  // HT mix
+//#define RATE_AUTO_SWITCH            255 // for StaCfg.FixedTxRate only
+#define HTRATE_0                      12
+#define RATE_FIRST_MM_RATE        HTRATE_0
+#define RATE_FIRST_HT_RATE        HTRATE_0
+#define RATE_LAST_HT_RATE        HTRATE_0
+
+// pTxWI->txop
+#define IFS_HTTXOP                 0	// The txop will be handles by ASIC.
+#define IFS_PIFS                    1
+#define IFS_SIFS                    2
+#define IFS_BACKOFF                 3
+
+// pTxD->RetryMode 
+#define LONG_RETRY                  1
+#define SHORT_RETRY                 0
+
+// Country Region definition
+#define REGION_MINIMUM_BG_BAND            0
+#define REGION_0_BG_BAND                  0       // 1-11
+#define REGION_1_BG_BAND                  1       // 1-13
+#define REGION_2_BG_BAND                  2       // 10-11
+#define REGION_3_BG_BAND                  3       // 10-13
+#define REGION_4_BG_BAND                  4       // 14
+#define REGION_5_BG_BAND                  5       // 1-14
+#define REGION_6_BG_BAND                  6       // 3-9
+#define REGION_7_BG_BAND                  7       // 5-13
+#define REGION_31_BG_BAND                 31       // 5-13
+#define REGION_MAXIMUM_BG_BAND            7
+
+#define REGION_MINIMUM_A_BAND             0
+#define REGION_0_A_BAND                   0       // 36, 40, 44, 48, 52, 56, 60, 64, 149, 153, 157, 161, 165
+#define REGION_1_A_BAND                   1       // 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140
+#define REGION_2_A_BAND                   2       // 36, 40, 44, 48, 52, 56, 60, 64
+#define REGION_3_A_BAND                   3       // 52, 56, 60, 64, 149, 153, 157, 161
+#define REGION_4_A_BAND                   4       // 149, 153, 157, 161, 165
+#define REGION_5_A_BAND                   5       // 149, 153, 157, 161
+#define REGION_6_A_BAND                   6       // 36, 40, 44, 48
+#define REGION_7_A_BAND                   7       // 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 149, 153, 157, 161, 165, 169, 173
+#define REGION_8_A_BAND                   8       // 52, 56, 60, 64
+#define REGION_9_A_BAND                   9       // 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 132, 136, 140, 149, 153, 157, 161, 165
+#define REGION_10_A_BAND                  10	  // 36, 40, 44, 48, 149, 153, 157, 161, 165	
+#define REGION_11_A_BAND                  11	  // 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 149, 153, 157, 161
+#define REGION_12_A_BAND                  12       // 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140 
+#define REGION_13_A_BAND                  13       // 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 149, 153, 157, 161
+#define REGION_14_A_BAND                  14       // 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 136, 140, 149, 153, 157, 161, 165
+#define REGION_15_A_BAND                  15       // 149, 153, 157, 161, 165, 169, 173
+#define REGION_16_A_BAND                  16       // 52, 56, 60, 64, 149, 153, 157, 161, 165
+#define REGION_MAXIMUM_A_BAND             16
+
+/* The security mode definition in MAC register */
+#define CIPHER_NONE                 0
+#define CIPHER_WEP64                1
+#define CIPHER_WEP128               2
+#define CIPHER_TKIP                 3
+#define CIPHER_AES                  4
+#define CIPHER_CKIP64               5
+#define CIPHER_CKIP128              6
+#define CIPHER_CKIP152          	7
+#define CIPHER_SMS4					8
+
+
+// LED Status.
+#define LED_LINK_DOWN               0
+#define LED_LINK_UP                 1
+#define LED_RADIO_OFF               2
+#define LED_RADIO_ON                3
+#define LED_HALT                    4
+#define LED_WPS                     5
+#define LED_ON_SITE_SURVEY          6
+#define LED_POWER_UP                7
+#ifdef RT35xx
+#ifdef RALINK_ATE
+/* set LED to controll by MAC registers instead of by firmware */
+#define LED_HW_CONTROL         8
+#endif // RALINK_ATE //  
+#endif // RT35xx //
+
+
+// value domain of pAd->LedCntl.LedMode and E2PROM
+#define LED_MODE_DEFAULT            0
+#define LED_MODE_TWO_LED			1
+//#define LED_MODE_SIGNAL_STREGTH		8  // EEPROM define =8
+#define LED_MODE_SIGNAL_STREGTH		0x40 // EEPROM define = 64
+
+// RC4 init value, used fro WEP & TKIP
+#define PPPINITFCS32                0xffffffff   /* Initial FCS value */
+
+// value domain of pAd->StaCfg.PortSecured. 802.1X controlled port definition
+#define WPA_802_1X_PORT_SECURED     1
+#define WPA_802_1X_PORT_NOT_SECURED 2
+
+#define PAIRWISE_KEY                1
+#define GROUP_KEY                   2
+
+//definition of DRS
+#define MAX_STEP_OF_TX_RATE_SWITCH	32
+
+
+// pre-allocated free NDIS PACKET/BUFFER poll for internal usage
+#define MAX_NUM_OF_FREE_NDIS_PACKET 128
+
+//Block ACK
+#define MAX_TX_REORDERBUF   64
+#define MAX_RX_REORDERBUF   64
+#define DEFAULT_TX_TIMEOUT   30
+#define DEFAULT_RX_TIMEOUT   30
+
+// definition of Recipient or Originator
+#define I_RECIPIENT                  TRUE
+#define I_ORIGINATOR                   FALSE
+
+#define DEFAULT_BBP_TX_POWER        0
+#define DEFAULT_RF_TX_POWER         5
+
+#define MAX_INI_BUFFER_SIZE		4096
+#define MAX_PARAM_BUFFER_SIZE		(2048) // enough for ACL (18*64)
+											//18 : the length of Mac address acceptable format "01:02:03:04:05:06;")
+											//64 : MAX_NUM_OF_ACL_LIST
+// definition of pAd->OpMode
+#define OPMODE_STA                  0
+#define OPMODE_AP                   1
+//#define OPMODE_L3_BRG               2       // as AP and STA at the same time
+
+#ifdef RT_BIG_ENDIAN
+#define DIR_READ                    0
+#define DIR_WRITE                   1
+#define TYPE_TXD                    0
+#define TYPE_RXD                    1
+#define TYPE_TXINFO					0
+#define TYPE_RXINFO					1
+#define TYPE_TXWI					0
+#define TYPE_RXWI					1
+#endif
+
+// ========================= AP rtmp_def.h ===========================
+// value domain for pAd->EventTab.Log[].Event
+#define EVENT_RESET_ACCESS_POINT    0 // Log = "hh:mm:ss   Restart Access Point"
+#define EVENT_ASSOCIATED            1 // Log = "hh:mm:ss   STA 00:01:02:03:04:05 associated"
+#define EVENT_DISASSOCIATED         2 // Log = "hh:mm:ss   STA 00:01:02:03:04:05 left this BSS"
+#define EVENT_AGED_OUT              3 // Log = "hh:mm:ss   STA 00:01:02:03:04:05 was aged-out and removed from this BSS"
+#define EVENT_COUNTER_M             4
+#define EVENT_INVALID_PSK           5
+#define EVENT_MAX_EVENT_TYPE        6
+// ==== end of AP rtmp_def.h ============
+
+// definition RSSI Number
+#define RSSI_0					0
+#define RSSI_1					1
+#define RSSI_2					2
+
+// definition of radar detection
+#define RD_NORMAL_MODE				0	// Not found radar signal
+#define RD_SWITCHING_MODE			1	// Found radar signal, and doing channel switch
+#define RD_SILENCE_MODE				2	// After channel switch, need to be silence a while to ensure radar not found
+
+//Driver defined cid for mapping status and command.
+#define  SLEEPCID	0x11
+#define  WAKECID	0x22
+#define  QUERYPOWERCID	0x33
+#define  OWNERMCU	0x1
+#define  OWNERCPU	0x0
+
+// MBSSID definition
+#define ENTRY_NOT_FOUND             0xFF
+
+
+/* After Linux 2.6.9, 
+ * VLAN module use Private (from user) interface flags (netdevice->priv_flags). 
+ * #define IFF_802_1Q_VLAN 0x1         --    802.1Q VLAN device.  in if.h     
+ * ref to ip_sabotage_out() [ out->priv_flags & IFF_802_1Q_VLAN ] in br_netfilter.c
+ * 
+ * For this reason, we MUST use EVEN value in priv_flags
+ */
+#define INT_MAIN			0x0100
+#define INT_MBSSID			0x0200
+#define INT_WDS				0x0300
+#define INT_APCLI			0x0400
+#define INT_MESH			0x0500
+
+#define ENTRY_NONE			0
+#define ENTRY_CLIENT		1
+#define ENTRY_WDS			2
+#define ENTRY_APCLI			3
+#define ENTRY_MESH			4
+#define ENTRY_DLS			5
+#define ENTRY_TDLS			6
+
+#define IS_ENTRY_NONE(_x)		((_x)->EntryType == ENTRY_NONE)
+#define IS_ENTRY_CLIENT(_x)		((_x)->EntryType == ENTRY_CLIENT)
+#define IS_ENTRY_WDS(_x)		((_x)->EntryType == ENTRY_WDS)
+#define IS_ENTRY_APCLI(_x)		((_x)->EntryType == ENTRY_APCLI)
+#define IS_ENTRY_MESH(_x)		((_x)->EntryType == ENTRY_MESH)
+#define IS_ENTRY_DLS(_x)		((_x)->EntryType == ENTRY_DLS)
+#define IS_ENTRY_TDLS(_x)		((_x)->EntryType == ENTRY_TDLS)
+#ifdef CLIENT_WDS
+#define IS_ENTRY_CLIWDS(_x)		CLIENT_STATUS_TEST_FLAG((_x), fCLIENT_STATUS_CLI_WDS)
+#endif // CLIENT_WDS //
+
+#define SET_ENTRY_NONE(_x)		((_x)->EntryType = ENTRY_NONE)
+#define SET_ENTRY_CLIENT(_x)	((_x)->EntryType = ENTRY_CLIENT)
+#define SET_ENTRY_WDS(_x)		((_x)->EntryType = ENTRY_WDS)
+#define SET_ENTRY_APCLI(_x)		((_x)->EntryType = ENTRY_APCLI)
+#define SET_ENTRY_MESH(_x)		((_x)->EntryType = ENTRY_MESH)
+#define SET_ENTRY_DLS(_x)		((_x)->EntryType = ENTRY_DLS)
+#define SET_ENTRY_TDLS(_x)		((_x)->EntryType = ENTRY_TDLS)
+#ifdef CLIENT_WDS
+#define SET_ENTRY_CLIWDS(_x)	CLIENT_STATUS_SET_FLAG((_x), fCLIENT_STATUS_CLI_WDS)
+#endif // CLIENT_WDS //
+
+#define INF_MAIN_DEV_NAME		"ra"
+#define INF_MBSSID_DEV_NAME		"ra"
+#define INF_WDS_DEV_NAME		"wds"
+#define INF_APCLI_DEV_NAME		"apcli"
+#define INF_MESH_DEV_NAME		"mesh"
+
+#ifdef RALINK_ATE
+/* 
+	Use bitmap to allow coexist of ATE_TXFRAME 
+	and ATE_RXFRAME(i.e.,to support LoopBack mode).
+*/
+#define fATE_IDLE					0x00  
+#define fATE_TX_ENABLE				0x01  
+#define fATE_RX_ENABLE				0x02  
+#define fATE_TXCONT_ENABLE			0x04  
+#define fATE_TXCARR_ENABLE			0x08
+#define fATE_TXCARRSUPP_ENABLE		0x10
+#define fATE_RESERVED_1				0x20
+#define fATE_RESERVED_2				0x40
+#define fATE_EXIT					0x80
+
+/* Enter/Reset ATE */
+#define	ATE_START                   (fATE_IDLE)   
+/* Stop/Exit ATE */
+#define	ATE_STOP                    (fATE_EXIT)   
+/* Continuous Transmit */
+#define	ATE_TXCONT                  ((fATE_TX_ENABLE)|(fATE_TXCONT_ENABLE))   
+/* Transmit Carrier */
+#define	ATE_TXCARR                  ((fATE_TX_ENABLE)|(fATE_TXCARR_ENABLE))   
+/* Transmit Carrier Suppression (information without carrier) */
+#define	ATE_TXCARRSUPP              ((fATE_TX_ENABLE)|(fATE_TXCARRSUPP_ENABLE))   
+/* Transmit Frames */
+#define	ATE_TXFRAME                 (fATE_TX_ENABLE)   
+/* Receive Frames */
+#define	ATE_RXFRAME                 (fATE_RX_ENABLE)   
+#ifdef RALINK_28xx_QA
+/* Stop Transmition */
+#define ATE_TXSTOP                  ((~(fATE_TX_ENABLE))&(~(fATE_TXCONT_ENABLE))&(~(fATE_TXCARR_ENABLE))&(~(fATE_TXCARRSUPP_ENABLE)))   
+/* Stop receiving Frames */
+#define ATE_RXSTOP					(~(fATE_RX_ENABLE))   
+
+/* NOTE : may be different with chipset in the future ++ */
+#define	BBP22_TXFRAME     			0x00   /* Transmit Frames */
+#define	BBP22_TXCONT_OR_CARRSUPP    0x80   /* Continuous Transmit or Carrier Suppression */
+#define	BBP22_TXCARR                0xc1   /* Transmit Carrier */
+#define	BBP24_TXCONT                0x00   /* Continuous Transmit */
+#define	BBP24_CARRSUPP              0x01   /* Carrier Suppression */
+/* NOTE : may be different with chipset in the future -- */
+#endif // RALINK_28xx_QA //
+#endif // RALINK_ATE //
+
+// WEP Key TYPE
+#define WEP_HEXADECIMAL_TYPE    0
+#define WEP_ASCII_TYPE          1
+
+
+
+// WIRELESS EVENTS definition
+/* Max number of char in custom event, refer to wireless_tools.28/wireless.20.h */
+#define IW_CUSTOM_MAX_LEN				  			255	/* In bytes */	
+
+// For system event - start 
+#define	IW_SYS_EVENT_FLAG_START                     0x0200
+#define	IW_ASSOC_EVENT_FLAG                         0x0200
+#define	IW_DISASSOC_EVENT_FLAG                      0x0201
+#define	IW_DEAUTH_EVENT_FLAG                      	0x0202
+#define	IW_AGEOUT_EVENT_FLAG                      	0x0203
+#define	IW_COUNTER_MEASURES_EVENT_FLAG              0x0204
+#define	IW_REPLAY_COUNTER_DIFF_EVENT_FLAG           0x0205
+#define	IW_RSNIE_DIFF_EVENT_FLAG           			0x0206
+#define	IW_MIC_DIFF_EVENT_FLAG           			0x0207
+#define IW_ICV_ERROR_EVENT_FLAG						0x0208
+#define IW_MIC_ERROR_EVENT_FLAG						0x0209
+#define IW_GROUP_HS_TIMEOUT_EVENT_FLAG				0x020A
+#define	IW_PAIRWISE_HS_TIMEOUT_EVENT_FLAG			0x020B
+#define IW_RSNIE_SANITY_FAIL_EVENT_FLAG				0x020C
+#define IW_SET_KEY_DONE_WPA1_EVENT_FLAG				0x020D
+#define IW_SET_KEY_DONE_WPA2_EVENT_FLAG				0x020E
+#define IW_STA_LINKUP_EVENT_FLAG					0x020F
+#define IW_STA_LINKDOWN_EVENT_FLAG					0x0210
+#define IW_SCAN_COMPLETED_EVENT_FLAG				0x0211
+#define IW_SCAN_ENQUEUE_FAIL_EVENT_FLAG				0x0212
+#define IW_CHANNEL_CHANGE_EVENT_FLAG				0x0213
+#define IW_STA_MODE_EVENT_FLAG						0x0214
+#define IW_MAC_FILTER_LIST_EVENT_FLAG				0x0215
+#define IW_AUTH_REJECT_CHALLENGE_FAILURE			0x0216
+#define IW_SCANNING_EVENT_FLAG						0x0217
+#define IW_START_IBSS_FLAG							0x0218
+#define IW_JOIN_IBSS_FLAG							0x0219
+// if add new system event flag, please upadte the IW_SYS_EVENT_FLAG_END
+#define	IW_SYS_EVENT_FLAG_END                       0x0219
+#define	IW_SYS_EVENT_TYPE_NUM						(IW_SYS_EVENT_FLAG_END - IW_SYS_EVENT_FLAG_START + 1)
+// For system event - end 
+
+#ifdef IDS_SUPPORT
+// For spoof attack event - start
+#define	IW_SPOOF_EVENT_FLAG_START                   0x0300
+#define IW_CONFLICT_SSID_EVENT_FLAG					0x0300
+#define IW_SPOOF_ASSOC_RESP_EVENT_FLAG				0x0301
+#define IW_SPOOF_REASSOC_RESP_EVENT_FLAG			0x0302
+#define IW_SPOOF_PROBE_RESP_EVENT_FLAG				0x0303
+#define IW_SPOOF_BEACON_EVENT_FLAG					0x0304
+#define IW_SPOOF_DISASSOC_EVENT_FLAG				0x0305
+#define IW_SPOOF_AUTH_EVENT_FLAG					0x0306
+#define IW_SPOOF_DEAUTH_EVENT_FLAG					0x0307
+#define IW_SPOOF_UNKNOWN_MGMT_EVENT_FLAG			0x0308
+#define IW_REPLAY_ATTACK_EVENT_FLAG					0x0309
+// if add new spoof attack event flag, please upadte the IW_SPOOF_EVENT_FLAG_END
+#define	IW_SPOOF_EVENT_FLAG_END                     0x0309
+#define	IW_SPOOF_EVENT_TYPE_NUM						(IW_SPOOF_EVENT_FLAG_END - IW_SPOOF_EVENT_FLAG_START + 1)
+// For spoof attack event - end 
+
+// For flooding attack event - start
+#define	IW_FLOOD_EVENT_FLAG_START                   0x0400
+#define IW_FLOOD_AUTH_EVENT_FLAG					0x0400
+#define IW_FLOOD_ASSOC_REQ_EVENT_FLAG				0x0401
+#define IW_FLOOD_REASSOC_REQ_EVENT_FLAG				0x0402
+#define IW_FLOOD_PROBE_REQ_EVENT_FLAG				0x0403
+#define IW_FLOOD_DISASSOC_EVENT_FLAG				0x0404
+#define IW_FLOOD_DEAUTH_EVENT_FLAG					0x0405
+#define IW_FLOOD_EAP_REQ_EVENT_FLAG					0x0406
+// if add new flooding attack event flag, please upadte the IW_FLOOD_EVENT_FLAG_END
+#define	IW_FLOOD_EVENT_FLAG_END                   	0x0406
+#define	IW_FLOOD_EVENT_TYPE_NUM						(IW_FLOOD_EVENT_FLAG_END - IW_FLOOD_EVENT_FLAG_START + 1)
+// For flooding attack - end 
+#endif // IDS_SUPPORT //
+
+// End - WIRELESS EVENTS definition
+
+#ifdef CONFIG_STA_SUPPORT
+// definition for DLS, kathy
+#define	MAX_NUM_OF_INIT_DLS_ENTRY   1
+#define	MAX_NUM_OF_DLS_ENTRY        MAX_NUMBER_OF_DLS_ENTRY
+
+//Block ACK, kathy
+#define MAX_TX_REORDERBUF		64
+#define MAX_RX_REORDERBUF		64
+#define DEFAULT_TX_TIMEOUT		30
+#define DEFAULT_RX_TIMEOUT		30
+#define MAX_BARECI_SESSION		8
+
+#ifndef IW_ESSID_MAX_SIZE
+/* Maximum size of the ESSID and pAd->nickname strings */
+#define IW_ESSID_MAX_SIZE   		32
+#endif
+#endif // CONFIG_STA_SUPPORT //
+
+#ifdef MCAST_RATE_SPECIFIC
+#define MCAST_DISABLE	0
+#define MCAST_CCK		1
+#define MCAST_OFDM		2
+#define MCAST_HTMIX		3
+#endif // MCAST_RATE_SPECIFIC //
+
+// For AsicRadioOff/AsicRadioOn function
+#define DOT11POWERSAVE		0
+#define GUIRADIO_OFF		1
+#define RTMP_HALT		    2
+#define GUI_IDLE_POWER_SAVE		3
+// --
+
+
+// definition for WpaSupport flag
+#define WPA_SUPPLICANT_DISABLE				0x00
+#define WPA_SUPPLICANT_ENABLE				0x01
+#define	WPA_SUPPLICANT_ENABLE_WITH_WEB_UI	0x02
+#define	WPA_SUPPLICANT_ENABLE_WPS			0x80
+
+// definition for Antenna Diversity flag
+
+
+// Endian byte swapping codes
+#define SWAP16(x) \
+    ((UINT16)( \
+    (((UINT16)(x) & (UINT16) 0x00ffU) << 8) | \
+    (((UINT16)(x) & (UINT16) 0xff00U) >> 8) ))
+
+#define SWAP32(x) \
+    ((UINT32)( \
+    (((UINT32)(x) & (UINT32) 0x000000ffUL) << 24) | \
+    (((UINT32)(x) & (UINT32) 0x0000ff00UL) <<  8) | \
+    (((UINT32)(x) & (UINT32) 0x00ff0000UL) >>  8) | \
+    (((UINT32)(x) & (UINT32) 0xff000000UL) >> 24) ))
+
+#define SWAP64(x) \
+    ((UINT64)( \
+    (UINT64)(((UINT64)(x) & (UINT64) 0x00000000000000ffULL) << 56) | \
+    (UINT64)(((UINT64)(x) & (UINT64) 0x000000000000ff00ULL) << 40) | \
+    (UINT64)(((UINT64)(x) & (UINT64) 0x0000000000ff0000ULL) << 24) | \
+    (UINT64)(((UINT64)(x) & (UINT64) 0x00000000ff000000ULL) <<  8) | \
+    (UINT64)(((UINT64)(x) & (UINT64) 0x000000ff00000000ULL) >>  8) | \
+    (UINT64)(((UINT64)(x) & (UINT64) 0x0000ff0000000000ULL) >> 24) | \
+    (UINT64)(((UINT64)(x) & (UINT64) 0x00ff000000000000ULL) >> 40) | \
+    (UINT64)(((UINT64)(x) & (UINT64) 0xff00000000000000ULL) >> 56) ))
+ 
+#ifdef RT_BIG_ENDIAN
+
+#define cpu2le64(x) SWAP64((x))
+#define le2cpu64(x) SWAP64((x))
+#define cpu2le32(x) SWAP32((x))
+#define le2cpu32(x) SWAP32((x))
+#define cpu2le16(x) SWAP16((x))
+#define le2cpu16(x) SWAP16((x))
+#define cpu2be64(x) ((UINT64)(x))
+#define be2cpu64(x) ((UINT64)(x))
+#define cpu2be32(x) ((UINT32)(x))
+#define be2cpu32(x) ((UINT32)(x))
+#define cpu2be16(x) ((UINT16)(x))
+#define be2cpu16(x) ((UINT16)(x))
+
+#else   // Little_Endian
+
+#define cpu2le64(x) ((UINT64)(x))
+#define le2cpu64(x) ((UINT64)(x))
+#define cpu2le32(x) ((UINT32)(x))
+#define le2cpu32(x) ((UINT32)(x))
+#define cpu2le16(x) ((UINT16)(x))
+#define le2cpu16(x) ((UINT16)(x))
+#define cpu2be64(x) SWAP64((x))
+#define be2cpu64(x) SWAP64((x))
+#define cpu2be32(x) SWAP32((x))
+#define be2cpu32(x) SWAP32((x))
+#define cpu2be16(x) SWAP16((x))
+#define be2cpu16(x) SWAP16((x))
+
+#endif  // RT_BIG_ENDIAN
+
+#define ABS(_x, _y) ((_x) > (_y)) ? ((_x) -(_y)) : ((_y) -(_x))
+
+
+#define A2Dec(_X, _p) 				\
+{									\
+	UCHAR *p;						\
+	_X = 0;							\
+	p = _p;							\
+	while (((*p >= '0') && (*p <= '9')))		\
+	{												\
+		if ((*p >= '0') && (*p <= '9'))		\
+			_X = _X * 10 + *p - 48;					\
+		p++;										\
+	}												\
+}
+
+
+#define A2Hex(_X, _p) 				\
+do{									\
+	char *__p;						\
+	(_X) = 0;							\
+	__p = (char *)(_p);							\
+	while (((*__p >= 'a') && (*__p <= 'f')) || ((*__p >= 'A') && (*__p <= 'F')) || ((*__p >= '0') && (*__p <= '9')))		\
+	{												\
+		if ((*__p >= 'a') && (*__p <= 'f'))				\
+			(_X) = (_X) * 16 + *__p - 87;					\
+		else if ((*__p >= 'A') && (*__p <= 'F'))		\
+			(_X) = (_X) * 16 + *__p - 55;					\
+		else if ((*__p >= '0') && (*__p <= '9'))		\
+			(_X) = (_X) * 16 + *__p - 48;					\
+		__p++;										\
+	}												\
+}while(0)
+
+#endif  // __RTMP_DEF_H__
+
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rtmp_dot11.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rtmp_dot11.h
new file mode 100644
index 000000000..1a840741b
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rtmp_dot11.h
@@ -0,0 +1,146 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+*/
+
+#ifndef __DOT11_BASE_H__
+#define __DOT11_BASE_H__
+
+#include "rtmp_type.h"
+
+
+// 4-byte HTC field.  maybe included in any frame except non-QOS data frame.  The Order bit must set 1.
+typedef struct GNU_PACKED {
+#ifdef RT_BIG_ENDIAN
+    UINT32		RDG:1;	//RDG / More PPDU
+    UINT32		ACConstraint:1;	//feedback request
+    UINT32		rsv2:5;  //calibration sequence
+    UINT32		NDPAnnouce:1;	// ZLF announcement
+    UINT32		CSISTEERING:2;	//CSI/ STEERING
+    UINT32		rsv1:2;	// Reserved
+    UINT32		CalSeq:2;  //calibration sequence
+    UINT32		CalPos:2;	// calibration position
+    UINT32		MFBorASC:7;	//Link adaptation feedback containing recommended MCS. 0x7f for no feedback or not available
+    UINT32		MFSI:3;	//SET to the received value of MRS. 0x111 for unsolicited MFB.
+    UINT32		MSI:3;	//MCS Request, MRQ Sequence identifier
+    UINT32		MRQ:1;	//MCS feedback. Request for a MCS feedback
+    UINT32		TRQ:1;	//sounding request
+    UINT32		rsv:1;	// Reserved
+#else
+    UINT32		rsv:1;	// Reserved
+    UINT32		TRQ:1;	//sounding request
+    UINT32		MRQ:1;	//MCS feedback. Request for a MCS feedback
+    UINT32		MSI:3;	//MCS Request, MRQ Sequence identifier
+    UINT32		MFSI:3;	//SET to the received value of MRS. 0x111 for unsolicited MFB.
+    UINT32		MFBorASC:7;	//Link adaptation feedback containing recommended MCS. 0x7f for no feedback or not available
+    UINT32		CalPos:2;	// calibration position
+    UINT32		CalSeq:2;  //calibration sequence
+    UINT32		rsv1:2;	// Reserved
+    UINT32		CSISTEERING:2;	//CSI/ STEERING
+    UINT32		NDPAnnouce:1;	// ZLF announcement
+    UINT32		rsv2:5;  //calibration sequence
+    UINT32		ACConstraint:1;	//feedback request
+    UINT32		RDG:1;	//RDG / More PPDU
+#endif /* !RT_BIG_ENDIAN */
+} HT_CONTROL, *PHT_CONTROL;
+
+// 2-byte QOS CONTROL field
+typedef struct GNU_PACKED {
+#ifdef RT_BIG_ENDIAN
+    USHORT      Txop_QueueSize:8;
+    USHORT      AMsduPresent:1;
+    USHORT      AckPolicy:2;  //0: normal ACK 1:No ACK 2:scheduled under MTBA/PSMP  3: BA
+    USHORT      EOSP:1;
+    USHORT      TID:4;
+#else
+    USHORT      TID:4;
+    USHORT      EOSP:1;
+    USHORT      AckPolicy:2;  //0: normal ACK 1:No ACK 2:scheduled under MTBA/PSMP  3: BA
+    USHORT      AMsduPresent:1;
+    USHORT      Txop_QueueSize:8;
+#endif /* !RT_BIG_ENDIAN */
+} QOS_CONTROL, *PQOS_CONTROL;	
+
+
+// 2-byte Frame control field
+typedef	struct	GNU_PACKED {
+#ifdef RT_BIG_ENDIAN
+	USHORT		Order:1;			// Strict order expected
+	USHORT		Wep:1;				// Wep data
+	USHORT		MoreData:1;			// More data bit
+	USHORT		PwrMgmt:1;			// Power management bit
+	USHORT		Retry:1;			// Retry status bit
+	USHORT		MoreFrag:1;			// More fragment bit
+	USHORT		FrDs:1;				// From DS indication
+	USHORT		ToDs:1;				// To DS indication
+	USHORT		SubType:4;			// MSDU subtype
+	USHORT		Type:2;				// MSDU type
+	USHORT		Ver:2;				// Protocol version
+#else
+	USHORT		Ver:2;				// Protocol version
+	USHORT		Type:2;				// MSDU type
+	USHORT		SubType:4;			// MSDU subtype
+	USHORT		ToDs:1;				// To DS indication
+	USHORT		FrDs:1;				// From DS indication
+	USHORT		MoreFrag:1;			// More fragment bit
+	USHORT		Retry:1;			// Retry status bit
+	USHORT		PwrMgmt:1;			// Power management bit
+	USHORT		MoreData:1;			// More data bit
+	USHORT		Wep:1;				// Wep data
+	USHORT		Order:1;			// Strict order expected
+#endif /* !RT_BIG_ENDIAN */
+} FRAME_CONTROL, *PFRAME_CONTROL;
+
+typedef	struct	GNU_PACKED _HEADER_802_11	{
+    FRAME_CONTROL   FC;
+    USHORT          Duration;
+    UCHAR           Addr1[MAC_ADDR_LEN];
+    UCHAR           Addr2[MAC_ADDR_LEN];
+	UCHAR			Addr3[MAC_ADDR_LEN];
+#ifdef RT_BIG_ENDIAN
+	USHORT			Sequence:12;
+	USHORT			Frag:4;
+#else
+	USHORT			Frag:4;
+	USHORT			Sequence:12;
+#endif /* !RT_BIG_ENDIAN */
+	UCHAR			Octet[0];
+}	HEADER_802_11, *PHEADER_802_11;
+
+typedef struct GNU_PACKED _PSPOLL_FRAME {
+    FRAME_CONTROL   FC;
+    USHORT          Aid;
+    UCHAR           Bssid[MAC_ADDR_LEN];
+    UCHAR           Ta[MAC_ADDR_LEN];
+}   PSPOLL_FRAME, *PPSPOLL_FRAME;
+
+typedef	struct	GNU_PACKED _RTS_FRAME	{
+    FRAME_CONTROL   FC;
+    USHORT          Duration;
+    UCHAR           Addr1[MAC_ADDR_LEN];
+    UCHAR           Addr2[MAC_ADDR_LEN];
+}RTS_FRAME, *PRTS_FRAME;
+
+#endif // __DOT11_BASE_H__ //
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rtmp_iface.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rtmp_iface.h
new file mode 100644
index 000000000..cbf0f2791
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rtmp_iface.h
@@ -0,0 +1,85 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+    Module Name:
+	rt_iface.h
+
+    Abstract:
+
+    Revision History:
+    Who          When          What
+    ---------    ----------    ----------------------------------------------
+ */
+
+#ifndef __RTMP_IFACE_H__
+#define __RTMP_IFACE_H__
+
+
+#ifdef RTMP_PCI_SUPPORT
+#include "iface/rtmp_pci.h"
+#endif // RTMP_PCI_SUPPORT //
+
+
+
+
+typedef struct _INF_PCI_CONFIG_
+{
+	unsigned long	CSRBaseAddress;     // PCI MMIO Base Address, all access will use
+	unsigned int	irq_num;
+}INF_PCI_CONFIG;
+
+
+typedef struct _INF_USB_CONFIG_
+{
+	unsigned char BulkInEpAddr;		// bulk-in endpoint address
+	unsigned char BulkOutEpAddr[6];	// bulk-out endpoint address
+}INF_USB_CONFIG;
+
+
+typedef struct _INF_RBUS_CONFIG_
+{
+	unsigned long		csr_addr;
+	unsigned int		irq;
+}INF_RBUS_CONFIG;
+
+
+typedef enum _RTMP_INF_TYPE_
+{	
+	RTMP_DEV_INF_UNKNOWN = 0,
+	RTMP_DEV_INF_PCI = 1,
+	RTMP_DEV_INF_USB = 2,
+	RTMP_DEV_INF_RBUS = 4,
+	RTMP_DEV_INF_PCIE = 5,
+}RTMP_INF_TYPE;
+
+
+typedef union _RTMP_INF_CONFIG_{
+	struct _INF_PCI_CONFIG_ 		pciConfig;
+	struct _INF_USB_CONFIG_ 		usbConfig;
+	struct _INF_RBUS_CONFIG_		rbusConfig;
+}RTMP_INF_CONFIG;
+
+#endif // __RTMP_IFACE_H__ //
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rtmp_mcu.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rtmp_mcu.h
new file mode 100644
index 000000000..2f399df9d
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rtmp_mcu.h
@@ -0,0 +1,55 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+	Module Name:
+	rtmp_mcu.h
+
+	Abstract:
+	Miniport header file for mcu related information
+
+	Revision History:
+	Who         When          What
+	--------    ----------    ----------------------------------------------
+*/
+
+#ifndef __RTMP_MCU_H__
+#define __RTMP_MCU_H__
+
+
+INT RtmpAsicEraseFirmware(
+	IN PRTMP_ADAPTER pAd);
+
+NDIS_STATUS RtmpAsicLoadFirmware(
+	IN PRTMP_ADAPTER pAd);
+
+INT RtmpAsicSendCommandToMcu(
+	IN PRTMP_ADAPTER pAd,
+	IN UCHAR		 Command,
+	IN UCHAR		 Token,
+	IN UCHAR		 Arg0,
+	IN UCHAR		 Arg1);
+	
+#endif // __RTMP_MCU_H__ //
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rtmp_os.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rtmp_os.h
new file mode 100644
index 000000000..dd4f629cc
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rtmp_os.h
@@ -0,0 +1,104 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+    Module Name:
+	rtmp_os.h
+ 
+    Abstract:
+ 
+    Revision History:
+    Who          When          What
+    ---------    ----------    ----------------------------------------------
+ */
+ 
+
+#ifndef __RTMP_OS_H__
+#define __RTMP_OS_H__
+
+#ifdef LINUX
+#include "os/rt_linux.h"
+#endif // LINUX //
+
+
+
+/*
+	This data structure mainly strip some callback function defined in 
+	"struct net_device" in kernel source "include/linux/netdevice.h".
+
+	The definition of this data structure may various depends on different
+	OS. Use it carefully.
+*/
+typedef struct _RTMP_OS_NETDEV_OP_HOOK_
+{
+	void			*open;
+	void			*stop;
+	void			*xmit;
+	void			*ioctl;
+	void			*get_stats;
+	void			*priv;
+	void			*get_wstats;
+	void			*iw_handler;
+	int			priv_flags;
+	unsigned char devAddr[6];
+	unsigned char	devName[16];
+	unsigned char	needProtcted;
+}RTMP_OS_NETDEV_OP_HOOK, *PRTMP_OS_NETDEV_OP_HOOK;
+
+
+typedef enum _RTMP_TASK_STATUS_
+{
+	RTMP_TASK_STAT_UNKNOWN = 0,
+	RTMP_TASK_STAT_INITED = 1,
+	RTMP_TASK_STAT_RUNNING = 2,
+	RTMP_TASK_STAT_STOPED = 4,
+}RTMP_TASK_STATUS;
+#define RTMP_TASK_CAN_DO_INSERT		(RTMP_TASK_STAT_INITED |RTMP_TASK_STAT_RUNNING)
+
+#define RTMP_OS_TASK_NAME_LEN	16
+typedef struct _RTMP_OS_TASK_
+{
+	char					taskName[RTMP_OS_TASK_NAME_LEN];
+	void					*priv;
+	//unsigned long		taskFlags;
+	RTMP_TASK_STATUS	taskStatus;
+#ifndef KTHREAD_SUPPORT
+	RTMP_OS_SEM			taskSema;
+	RTMP_OS_PID			taskPID;
+	struct completion		taskComplete;
+#endif
+	unsigned char			task_killed;
+#ifdef KTHREAD_SUPPORT
+	struct task_struct 	*kthread_task;
+	wait_queue_head_t		kthread_q;
+	BOOLEAN					kthread_running;
+#endif
+}RTMP_OS_TASK;
+
+
+int RtmpOSIRQRequest(IN PNET_DEV pNetDev);
+int RtmpOSIRQRelease(IN PNET_DEV pNetDev);
+
+#endif // __RMTP_OS_H__ //
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rtmp_timer.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rtmp_timer.h
new file mode 100644
index 000000000..d07caae38
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rtmp_timer.h
@@ -0,0 +1,165 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+    Module Name:
+	rtmp_timer.h
+
+    Abstract:
+	Ralink Wireless Driver timer related data structures and delcarations
+	
+    Revision History:
+	Who           When                What
+	--------    ----------      ----------------------------------------------
+	Name          Date                 Modification logs
+	Shiang Tu    Aug-28-2008	init version
+	
+*/
+
+#ifndef __RTMP_TIMER_H__
+#define  __RTMP_TIMER_H__
+
+#include "rtmp_os.h"
+
+
+#define DECLARE_TIMER_FUNCTION(_func)			\
+	void rtmp_timer_##_func(unsigned long data)
+
+#define GET_TIMER_FUNCTION(_func)				\
+	(PVOID)rtmp_timer_##_func
+
+
+/* ----------------- Timer Related MARCO ---------------*/
+// In some os or chipset, we have a lot of timer functions and will read/write register, 
+//   it's not allowed in Linux USB sub-system to do it ( because of sleep issue when 
+//  submit to ctrl pipe). So we need a wrapper function to take care it.
+
+#ifdef RTMP_TIMER_TASK_SUPPORT
+typedef VOID (*RTMP_TIMER_TASK_HANDLE)(
+	IN  PVOID   SystemSpecific1, 
+	IN  PVOID   FunctionContext, 
+	IN  PVOID   SystemSpecific2, 
+	IN  PVOID   SystemSpecific3);
+#endif // RTMP_TIMER_TASK_SUPPORT //
+
+typedef struct  _RALINK_TIMER_STRUCT    {
+	RTMP_OS_TIMER		TimerObj;       // Ndis Timer object
+	BOOLEAN				Valid;			// Set to True when call RTMPInitTimer
+	BOOLEAN				State;          // True if timer cancelled
+	BOOLEAN				PeriodicType;	// True if timer is periodic timer 
+	BOOLEAN				Repeat;         // True if periodic timer
+	ULONG				TimerValue;     // Timer value in milliseconds
+	ULONG				cookie;			// os specific object
+	void					*pAd;
+#ifdef RTMP_TIMER_TASK_SUPPORT
+	RTMP_TIMER_TASK_HANDLE	handle;
+#endif // RTMP_TIMER_TASK_SUPPORT //
+}RALINK_TIMER_STRUCT, *PRALINK_TIMER_STRUCT;
+
+
+#ifdef RTMP_TIMER_TASK_SUPPORT
+typedef struct _RTMP_TIMER_TASK_ENTRY_
+{
+	RALINK_TIMER_STRUCT 			*pRaTimer;
+	struct _RTMP_TIMER_TASK_ENTRY_ 	*pNext;
+}RTMP_TIMER_TASK_ENTRY;
+
+
+#define TIMER_QUEUE_SIZE_MAX	128
+typedef struct _RTMP_TIMER_TASK_QUEUE_
+{
+	unsigned int				status;
+	unsigned char				*pTimerQPoll;
+	RTMP_TIMER_TASK_ENTRY	*pQPollFreeList;
+	RTMP_TIMER_TASK_ENTRY 	*pQHead;
+	RTMP_TIMER_TASK_ENTRY 	*pQTail;
+}RTMP_TIMER_TASK_QUEUE;
+
+#define BUILD_TIMER_FUNCTION(_func)										\
+void rtmp_timer_##_func(unsigned long data)										\
+{																			\
+	PRALINK_TIMER_STRUCT	_pTimer = (PRALINK_TIMER_STRUCT)data;				\
+	RTMP_TIMER_TASK_ENTRY	*_pQNode;										\
+	RTMP_ADAPTER			*_pAd;											\
+																			\
+	_pTimer->handle = _func;													\
+	_pAd = (RTMP_ADAPTER *)_pTimer->pAd;										\
+	_pQNode = RtmpTimerQInsert(_pAd, _pTimer); 								\
+	if ((_pQNode == NULL) && (_pAd->TimerQ.status & RTMP_TASK_CAN_DO_INSERT))	\
+		RTMP_OS_Add_Timer(&_pTimer->TimerObj, OS_HZ);               					\
+}
+#else
+#define BUILD_TIMER_FUNCTION(_func)										\
+void rtmp_timer_##_func(unsigned long data)										\
+{																			\
+	PRALINK_TIMER_STRUCT	pTimer = (PRALINK_TIMER_STRUCT) data;				\
+																			\
+	_func(NULL, (PVOID) pTimer->cookie, NULL, pTimer); 							\
+	if (pTimer->Repeat)														\
+		RTMP_OS_Add_Timer(&pTimer->TimerObj, pTimer->TimerValue);			\
+}
+#endif // RTMP_TIMER_TASK_SUPPORT //
+
+
+DECLARE_TIMER_FUNCTION(MlmePeriodicExec);
+DECLARE_TIMER_FUNCTION(MlmeRssiReportExec);
+DECLARE_TIMER_FUNCTION(AsicRxAntEvalTimeout);
+DECLARE_TIMER_FUNCTION(APSDPeriodicExec);
+DECLARE_TIMER_FUNCTION(AsicRfTuningExec);
+
+#ifdef CONFIG_STA_SUPPORT
+DECLARE_TIMER_FUNCTION(BeaconTimeout);
+DECLARE_TIMER_FUNCTION(ScanTimeout);
+DECLARE_TIMER_FUNCTION(AuthTimeout);
+DECLARE_TIMER_FUNCTION(AssocTimeout);
+DECLARE_TIMER_FUNCTION(ReassocTimeout);
+DECLARE_TIMER_FUNCTION(DisassocTimeout);
+DECLARE_TIMER_FUNCTION(LinkDownExec);
+DECLARE_TIMER_FUNCTION(StaQuickResponeForRateUpExec);
+DECLARE_TIMER_FUNCTION(WpaDisassocApAndBlockAssoc);
+
+#ifdef RTMP_PCI_SUPPORT
+DECLARE_TIMER_FUNCTION(PsPollWakeExec);
+DECLARE_TIMER_FUNCTION(RadioOnExec);
+#endif // RTMP_PCI_SUPPORT //
+#ifdef QOS_DLS_SUPPORT
+DECLARE_TIMER_FUNCTION(DlsTimeoutAction);
+#endif // QOS_DLS_SUPPORT //
+
+
+
+
+#endif // CONFIG_STA_SUPPORT //
+
+
+
+
+#if defined(AP_LED) || defined(STA_LED)
+DECLARE_TIMER_FUNCTION(LedCtrlMain);
+#endif
+
+
+#endif // __RTMP_TIMER_H__ //
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rtmp_type.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rtmp_type.h
new file mode 100644
index 000000000..e31931b57
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/rtmp_type.h
@@ -0,0 +1,167 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+    Module Name:
+    rtmp_type.h
+
+    Abstract:
+
+    Revision History:
+    Who         When            What
+    --------    ----------      ----------------------------------------------
+    Name        Date            Modification logs
+    Paul Lin    1-2-2004
+*/
+
+#ifndef __RTMP_TYPE_H__
+#define __RTMP_TYPE_H__
+
+
+
+#ifndef GNU_PACKED 
+#define GNU_PACKED  __attribute__ ((packed))
+#endif // GNU_PACKED //
+
+#ifdef LINUX
+// Put platform dependent declaration here
+// For example, linux type definition
+typedef unsigned char			UINT8;
+typedef unsigned short			UINT16;
+typedef unsigned int			UINT32;
+typedef unsigned long long		UINT64;
+typedef int					INT32;
+typedef long long 				INT64;
+
+typedef unsigned char			UCHAR;
+typedef unsigned short			USHORT;
+typedef unsigned int			UINT;
+typedef unsigned long			ULONG;
+#endif // LINUX //
+
+typedef unsigned char *		PUINT8;
+typedef unsigned short *		PUINT16;
+typedef unsigned int *			PUINT32;
+typedef unsigned long long *	PUINT64;
+typedef int	*				PINT32;
+typedef long long * 			PINT64;
+
+// modified for fixing compile warning on Sigma 8634 platform
+typedef char 					STRING;
+
+typedef signed char			CHAR;	
+
+typedef signed short			SHORT;
+typedef signed int				INT;
+typedef signed long			LONG;
+typedef signed long long		LONGLONG;	
+
+typedef unsigned long long		ULONGLONG;
+ 
+typedef unsigned char			BOOLEAN;
+#ifdef LINUX
+typedef void					VOID;
+#endif // LINUX //
+
+typedef char *				PSTRING;
+typedef VOID *				PVOID;
+typedef CHAR *				PCHAR;
+typedef UCHAR * 				PUCHAR;
+typedef USHORT *			PUSHORT;
+typedef LONG *				PLONG;
+typedef ULONG *				PULONG;
+typedef UINT *				PUINT;
+
+typedef unsigned int			NDIS_MEDIA_STATE;
+
+typedef union _LARGE_INTEGER {
+    struct {
+#ifdef RT_BIG_ENDIAN
+        INT32 HighPart;
+        UINT LowPart;
+#else
+        UINT LowPart;
+        INT32 HighPart;
+#endif
+    } u;
+    INT64 QuadPart;
+} LARGE_INTEGER;
+
+
+//
+// Register set pair for initialzation register set definition
+//
+typedef struct  _RTMP_REG_PAIR
+{
+	ULONG   Register;
+	ULONG   Value;
+} RTMP_REG_PAIR, *PRTMP_REG_PAIR;
+
+typedef struct  _REG_PAIR
+{
+	UCHAR   Register;
+	UCHAR   Value;
+} REG_PAIR, *PREG_PAIR;
+
+//
+// Register set pair for initialzation register set definition
+//
+typedef struct  _RTMP_RF_REGS
+{
+	UCHAR   Channel;
+	ULONG   R1;
+	ULONG   R2;
+	ULONG   R3;
+	ULONG   R4;
+} RTMP_RF_REGS, *PRTMP_RF_REGS;
+
+typedef struct _FREQUENCY_ITEM {
+	UCHAR	Channel;
+	UCHAR	N;
+	UCHAR	R;
+	UCHAR	K;
+} FREQUENCY_ITEM, *PFREQUENCY_ITEM;
+
+
+typedef int				NTSTATUS;
+
+
+#define STATUS_SUCCESS				0x00
+#define STATUS_UNSUCCESSFUL 		0x01
+
+typedef struct  _QUEUE_ENTRY    {
+	struct _QUEUE_ENTRY     *Next;
+}   QUEUE_ENTRY, *PQUEUE_ENTRY;
+
+// Queue structure
+typedef struct  _QUEUE_HEADER   {
+	PQUEUE_ENTRY    Head;
+	PQUEUE_ENTRY    Tail;
+	ULONG           Number;
+}   QUEUE_HEADER, *PQUEUE_HEADER;
+
+
+#endif  // __RTMP_TYPE_H__ //
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/spectrum.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/spectrum.h
new file mode 100644
index 000000000..f140aae5c
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/spectrum.h
@@ -0,0 +1,239 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+ */
+
+#ifndef __SPECTRUM_H__
+#define __SPECTRUM_H__
+
+#include "rtmp_type.h"
+#include "spectrum_def.h"
+
+
+UINT8 GetRegulatoryMaxTxPwr(
+	IN PRTMP_ADAPTER pAd,
+	IN UINT8 channel);
+
+CHAR RTMP_GetTxPwr(
+	IN PRTMP_ADAPTER pAd,
+	IN HTTRANSMIT_SETTING HTTxMode);
+
+/*
+	==========================================================================
+	Description:
+		Prepare Measurement request action frame and enqueue it into
+		management queue waiting for transmition.
+		
+	Parametrs:
+		1. the destination mac address of the frame.
+	
+	Return	: None.
+	==========================================================================
+ */
+VOID MakeMeasurementReqFrame(
+	IN PRTMP_ADAPTER pAd,
+	OUT PUCHAR pOutBuffer,
+	OUT PULONG pFrameLen,
+	IN UINT8 TotalLen,
+	IN UINT8 Category,
+	IN UINT8 Action,
+	IN UINT8 MeasureToken, 
+	IN UINT8 MeasureReqMode,
+	IN UINT8 MeasureReqType,
+	IN UINT16 NumOfRepetitions);
+
+/*
+	==========================================================================
+	Description:
+		Prepare Measurement report action frame and enqueue it into
+		management queue waiting for transmition.
+		
+	Parametrs:
+		1. the destination mac address of the frame.
+	
+	Return	: None.
+	==========================================================================
+ */
+VOID EnqueueMeasurementRep(
+	IN PRTMP_ADAPTER pAd,
+	IN PUCHAR pDA,
+	IN UINT8 DialogToken,
+	IN UINT8 MeasureToken, 
+	IN UINT8 MeasureReqMode,
+	IN UINT8 MeasureReqType,
+	IN UINT8 ReportInfoLen,
+	IN PUINT8 pReportInfo);
+
+/*
+	==========================================================================
+	Description:
+		Prepare TPC Request action frame and enqueue it into
+		management queue waiting for transmition.
+		
+	Parametrs:
+		1. the destination mac address of the frame.
+	
+	Return	: None.
+	==========================================================================
+ */
+VOID EnqueueTPCReq(
+	IN PRTMP_ADAPTER pAd,
+	IN PUCHAR pDA,
+	IN UCHAR DialogToken);
+
+/*
+	==========================================================================
+	Description:
+		Prepare TPC Report action frame and enqueue it into
+		management queue waiting for transmition.
+		
+	Parametrs:
+		1. the destination mac address of the frame.
+	
+	Return	: None.
+	==========================================================================
+ */
+VOID EnqueueTPCRep(
+	IN PRTMP_ADAPTER pAd,
+	IN PUCHAR pDA,
+	IN UINT8 DialogToken,
+	IN UINT8 TxPwr,
+	IN UINT8 LinkMargin);
+
+/*
+	==========================================================================
+	Description:
+		Prepare Channel Switch Announcement action frame and enqueue it into
+		management queue waiting for transmition.
+		
+	Parametrs:
+		1. the destination mac address of the frame.
+		2. Channel switch announcement mode.
+		2. a New selected channel.
+	
+	Return	: None.
+	==========================================================================
+ */
+VOID EnqueueChSwAnn(
+	IN PRTMP_ADAPTER pAd,
+	IN PUCHAR pDA, 
+	IN UINT8 ChSwMode,
+	IN UINT8 NewCh);
+
+/*
+	==========================================================================
+	Description:
+		Spectrun action frames Handler such as channel switch annoucement,
+		measurement report, measurement request actions frames.
+		
+	Parametrs:
+		Elme - MLME message containing the received frame
+	
+	Return	: None.
+	==========================================================================
+ */
+VOID PeerSpectrumAction(
+    IN PRTMP_ADAPTER pAd, 
+    IN MLME_QUEUE_ELEM *Elem);
+
+/*
+	==========================================================================
+	Description:
+		
+	Parametrs:
+	
+	Return	: None.
+	==========================================================================
+ */
+INT Set_MeasureReq_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT Set_TpcReq_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+INT Set_PwrConstraint(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+
+NDIS_STATUS MeasureReqTabInit(
+	IN PRTMP_ADAPTER pAd);
+
+VOID MeasureReqTabExit(
+	IN PRTMP_ADAPTER pAd);
+
+PMEASURE_REQ_ENTRY MeasureReqLookUp(
+	IN PRTMP_ADAPTER	pAd,
+	IN UINT8			DialogToken);
+
+PMEASURE_REQ_ENTRY MeasureReqInsert(
+	IN PRTMP_ADAPTER	pAd,
+	IN UINT8			DialogToken);
+
+VOID MeasureReqDelete(
+	IN PRTMP_ADAPTER	pAd,
+	IN UINT8			DialogToken);
+
+VOID InsertChannelRepIE(
+	IN PRTMP_ADAPTER pAd,
+	OUT PUCHAR pFrameBuf,
+	OUT PULONG pFrameLen,
+	IN PSTRING pCountry,
+	IN UINT8 RegulatoryClass);
+
+VOID InsertTpcReportIE(
+	IN PRTMP_ADAPTER pAd,
+	OUT PUCHAR pFrameBuf,
+	OUT PULONG pFrameLen,
+	IN UINT8 TxPwr,
+	IN UINT8 LinkMargin);
+
+VOID InsertDialogToken(
+	IN PRTMP_ADAPTER pAd,
+	OUT PUCHAR pFrameBuf,
+	OUT PULONG pFrameLen,
+	IN UINT8 DialogToken);
+
+NDIS_STATUS TpcReqTabInit(
+	IN PRTMP_ADAPTER pAd);
+
+VOID TpcReqTabExit(
+	IN PRTMP_ADAPTER pAd);
+
+VOID NotifyChSwAnnToPeerAPs(
+	IN PRTMP_ADAPTER pAd,
+	IN PUCHAR pRA,
+	IN PUCHAR pTA,
+	IN UINT8 ChSwMode,
+	IN UINT8 Channel);
+
+VOID RguClass_BuildBcnChList(
+	IN PRTMP_ADAPTER pAd,
+	OUT PUCHAR pBuf,
+	OUT	PULONG pBufLen);
+#endif // __SPECTRUM_H__ //
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/spectrum_def.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/spectrum_def.h
new file mode 100644
index 000000000..59bae244d
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/spectrum_def.h
@@ -0,0 +1,260 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+    Module Name:
+	spectrum_def.h
+ 
+    Abstract:
+    Handle association related requests either from WSTA or from local MLME
+ 
+    Revision History:
+    Who          When          What
+    ---------    ----------    ----------------------------------------------
+	Fonchi Wu    2008	  	   created for 802.11h
+ */
+
+#ifndef __SPECTRUM_DEF_H__
+#define __SPECTRUM_DEF_H__
+
+
+#define MAX_MEASURE_REQ_TAB_SIZE		32
+/* Size of hash tab must be power of 2. */
+#define MAX_HASH_MEASURE_REQ_TAB_SIZE	MAX_MEASURE_REQ_TAB_SIZE
+
+#define MAX_TPC_REQ_TAB_SIZE			32
+/* Size of hash tab must be power of 2. */
+#define MAX_HASH_TPC_REQ_TAB_SIZE		MAX_TPC_REQ_TAB_SIZE
+
+#define MIN_RCV_PWR				100		/* Negative value ((dBm) */
+
+#define TPC_REQ_AGE_OUT			500		/* ms */
+#define MQ_REQ_AGE_OUT			500		/* ms */
+
+#define TPC_DIALOGTOKEN_HASH_INDEX(_DialogToken)	((_DialogToken) & (MAX_HASH_TPC_REQ_TAB_SIZE - 1))
+#define MQ_DIALOGTOKEN_HASH_INDEX(_DialogToken)		((_DialogToken) & (MAX_MEASURE_REQ_TAB_SIZE - 1))
+
+typedef struct _MEASURE_REQ_ENTRY
+{
+	struct _MEASURE_REQ_ENTRY *pNext;
+	ULONG lastTime;
+	BOOLEAN	Valid;
+	UINT8 DialogToken;
+	UINT8 MeasureDialogToken[3];	// 0:basic measure, 1: CCA measure, 2: RPI_Histogram measure.
+} MEASURE_REQ_ENTRY, *PMEASURE_REQ_ENTRY;
+
+typedef struct _MEASURE_REQ_TAB
+{
+	UCHAR Size;
+	PMEASURE_REQ_ENTRY Hash[MAX_HASH_MEASURE_REQ_TAB_SIZE];
+	MEASURE_REQ_ENTRY Content[MAX_MEASURE_REQ_TAB_SIZE];
+} MEASURE_REQ_TAB, *PMEASURE_REQ_TAB;
+
+typedef struct _TPC_REQ_ENTRY
+{
+	struct _TPC_REQ_ENTRY *pNext;
+	ULONG lastTime;
+	BOOLEAN Valid;
+	UINT8 DialogToken;
+} TPC_REQ_ENTRY, *PTPC_REQ_ENTRY;
+
+typedef struct _TPC_REQ_TAB
+{
+	UCHAR Size;
+	PTPC_REQ_ENTRY Hash[MAX_HASH_TPC_REQ_TAB_SIZE];
+	TPC_REQ_ENTRY Content[MAX_TPC_REQ_TAB_SIZE];
+} TPC_REQ_TAB, *PTPC_REQ_TAB;
+
+
+/* The regulatory information */
+typedef struct _DOT11_CHANNEL_SET
+{
+	UCHAR NumberOfChannels;
+	UINT8 MaxTxPwr;
+	UCHAR ChannelList[16];
+} DOT11_CHANNEL_SET, *PDOT11_CHANNEL_SET;
+
+typedef struct _DOT11_REGULATORY_INFORMATION
+{
+	UCHAR RegulatoryClass;
+	DOT11_CHANNEL_SET ChannelSet;
+} DOT11_REGULATORY_INFORMATION, *PDOT11_REGULATORY_INFORMATION;
+
+
+
+#define RM_TPC_REQ				0
+#define RM_MEASURE_REQ			1
+
+#define RM_BASIC				0
+#define RM_CCA					1
+#define RM_RPI_HISTOGRAM		2
+#define RM_CH_LOAD				3
+#define RM_NOISE_HISTOGRAM		4
+
+
+typedef struct GNU_PACKED _TPC_REPORT_INFO
+{
+	UINT8 TxPwr;
+	UINT8 LinkMargin;
+} TPC_REPORT_INFO, *PTPC_REPORT_INFO;
+
+typedef struct GNU_PACKED _CH_SW_ANN_INFO
+{
+	UINT8 ChSwMode;
+	UINT8 Channel;
+	UINT8 ChSwCnt;
+} CH_SW_ANN_INFO, *PCH_SW_ANN_INFO;
+
+typedef union GNU_PACKED _MEASURE_REQ_MODE
+{
+#ifdef RT_BIG_ENDIAN
+	struct GNU_PACKED
+	{
+
+		UINT8 :3;
+		UINT8 DurationMandatory:1;
+		UINT8 Report:1;
+		UINT8 Request:1;
+		UINT8 Enable:1;
+		UINT8 Parallel:1;
+	} field;
+#else
+	struct GNU_PACKED
+	{
+		UINT8 Parallel:1;
+		UINT8 Enable:1;
+		UINT8 Request:1;
+		UINT8 Report:1;
+		UINT8 DurationMandatory:1;
+		UINT8 :3;
+	} field;
+#endif // RT_BIG_ENDIAN //
+	UINT8 word;
+} MEASURE_REQ_MODE, *PMEASURE_REQ_MODE;
+
+typedef struct GNU_PACKED _MEASURE_REQ
+{
+	UINT8 ChNum;
+	UINT64 MeasureStartTime;
+	UINT16 MeasureDuration;
+} MEASURE_REQ, *PMEASURE_REQ;
+
+typedef struct GNU_PACKED _MEASURE_REQ_INFO
+{
+	UINT8 Token;
+	MEASURE_REQ_MODE ReqMode;
+	UINT8 ReqType;
+	UINT8 Oct[0];
+} MEASURE_REQ_INFO, *PMEASURE_REQ_INFO;
+
+typedef union GNU_PACKED _MEASURE_BASIC_REPORT_MAP
+{
+#ifdef RT_BIG_ENDIAN
+	struct GNU_PACKED
+	{
+		UINT8 Rev:3;
+
+		UINT8 Unmeasure:1;
+		UINT8 Radar:1;
+		UINT8 UnidentifiedSignal:1;
+		UINT8 OfdmPreamble:1;
+		UINT8 BSS:1;
+	} field;
+#else
+	struct GNU_PACKED
+	{
+		UINT8 BSS:1;
+
+		UINT8 OfdmPreamble:1;
+		UINT8 UnidentifiedSignal:1;
+		UINT8 Radar:1;
+		UINT8 Unmeasure:1;
+		UINT8 Rev:3;
+	} field;
+#endif // RT_BIG_ENDIAN //
+	UINT8 word;
+} MEASURE_BASIC_REPORT_MAP, *PMEASURE_BASIC_REPORT_MAP;
+
+typedef struct GNU_PACKED _MEASURE_BASIC_REPORT
+{
+	UINT8 ChNum;
+	UINT64 MeasureStartTime;
+	UINT16 MeasureDuration;
+	MEASURE_BASIC_REPORT_MAP Map;
+} MEASURE_BASIC_REPORT, *PMEASURE_BASIC_REPORT;
+
+typedef struct GNU_PACKED _MEASURE_CCA_REPORT
+{
+	UINT8 ChNum;
+	UINT64 MeasureStartTime;
+	UINT16 MeasureDuration;
+	UINT8 CCA_Busy_Fraction;
+} MEASURE_CCA_REPORT, *PMEASURE_CCA_REPORT;
+
+typedef struct GNU_PACKED _MEASURE_RPI_REPORT
+{
+	UINT8 ChNum;
+	UINT64 MeasureStartTime;
+	UINT16 MeasureDuration;
+	UINT8 RPI_Density[8];
+} MEASURE_RPI_REPORT, *PMEASURE_RPI_REPORT;
+
+typedef union GNU_PACKED _MEASURE_REPORT_MODE
+{
+	struct GNU_PACKED
+	{
+#ifdef RT_BIG_ENDIAN
+		UINT8 Rev:5;
+		UINT8 Refused:1;
+		UINT8 Incapable:1;
+		UINT8 Late:1;
+#else
+		UINT8 Late:1;
+		UINT8 Incapable:1;
+		UINT8 Refused:1;
+		UINT8 Rev:5;
+#endif // RT_BIG_ENDIAN //
+	} field;
+	UINT8 word;
+} MEASURE_REPORT_MODE, *PMEASURE_REPORT_MODE;
+
+typedef struct GNU_PACKED _MEASURE_REPORT_INFO
+{
+	UINT8 Token;
+	UINT8 ReportMode;
+	UINT8 ReportType;
+	UINT8 Octect[0];
+} MEASURE_REPORT_INFO, *PMEASURE_REPORT_INFO;
+
+typedef struct GNU_PACKED _QUIET_INFO
+{
+	UINT8 QuietCnt;
+	UINT8 QuietPeriod;
+	UINT16 QuietDuration;
+	UINT16 QuietOffset;
+} QUIET_INFO, *PQUIET_INFO;
+
+#endif // __SPECTRUM_DEF_H__ //
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/vr_ikans.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/vr_ikans.h
new file mode 100644
index 000000000..fa9351a30
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/vr_ikans.h
@@ -0,0 +1,72 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+ 
+    Module Name:
+    vr_ikans.h
+ 
+    Abstract:
+    Only for IKANOS Vx160 or Vx180 platform.
+ 
+    Revision History:
+    Who         When          What
+    --------    ----------    ----------------------------------------------
+    Sample Lin	01-28-2008    Created
+
+ */
+
+#ifndef __VR_IKANS_H__
+#define __VR_IKANS_H__
+
+#ifndef MODULE_IKANOS
+#define IKANOS_EXTERN	extern
+#else
+#define IKANOS_EXTERN
+#endif // MODULE_IKANOS //
+
+#ifdef IKANOS_VX_1X0
+	typedef void (*IkanosWlanTxCbFuncP)(void *, void *);
+
+	struct IKANOS_TX_INFO
+	{
+		struct net_device *netdev;
+		IkanosWlanTxCbFuncP *fp;
+	};
+#endif // IKANOS_VX_1X0 //
+
+
+IKANOS_EXTERN void VR_IKANOS_FP_Init(UINT8 BssNum, UINT8 *pApMac);
+
+IKANOS_EXTERN INT32 IKANOS_DataFramesTx(struct sk_buff *pSkb,
+										struct net_device *pNetDev);
+
+IKANOS_EXTERN void IKANOS_DataFrameRx(PRTMP_ADAPTER pAd,
+										void *pRxParam,
+										struct sk_buff *pSkb,
+										UINT32 Length);
+
+#endif // __VR_IKANS_H__ //
+
+/* End of vr_ikans.h */
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/wpa.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/wpa.h
new file mode 100644
index 000000000..ca7041539
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/wpa.h
@@ -0,0 +1,497 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+	Module Name:
+	wpa.h
+
+	Abstract:
+
+	Revision History:
+	Who			When			What
+	--------	----------		----------------------------------------------
+	Name		Date			Modification logs
+*/
+
+#ifndef	__WPA_H__
+#define	__WPA_H__
+
+#ifndef ROUND_UP
+#define ROUND_UP(__x, __y) \
+	(((ULONG)((__x)+((__y)-1))) & ((ULONG)~((__y)-1)))
+#endif
+
+#define	SET_UINT16_TO_ARRARY(_V, _LEN)		\
+{											\
+	_V[0] = ((UINT16)_LEN) >> 8;			\
+	_V[1] = ((UINT16)_LEN & 0xFF);					\
+}
+
+#define	INC_UINT16_TO_ARRARY(_V, _LEN)			\
+{												\
+	UINT16	var_len;							\
+												\
+	var_len = (_V[0]<<8) | (_V[1]);				\
+	var_len += _LEN;							\
+												\
+	_V[0] = (var_len & 0xFF00) >> 8;			\
+	_V[1] = (var_len & 0xFF);					\
+}
+
+#define	CONV_ARRARY_TO_UINT16(_V)	((_V[0]<<8) | (_V[1]))
+
+#define	ADD_ONE_To_64BIT_VAR(_V)		\
+{										\
+	UCHAR	cnt = LEN_KEY_DESC_REPLAY;	\
+	do									\
+	{									\
+		cnt--;							\
+		_V[cnt]++;						\
+		if (cnt == 0)					\
+			break;						\
+	}while (_V[cnt] == 0);				\
+}
+
+#define INC_TX_TSC(_tsc, _cnt)                          \
+{                                                       \
+    INT i=0;                                            \
+	while (++_tsc[i] == 0x0)                            \
+    {                                                   \
+        i++;                                            \
+		if (i == (_cnt))                                \
+			break;                                      \
+	}                                                   \
+}
+
+#define IS_WPA_CAPABILITY(a)       (((a) >= Ndis802_11AuthModeWPA) && ((a) <= Ndis802_11AuthModeWPA1PSKWPA2PSK))
+
+/* 	
+	WFA recommend to restrict the encryption type in 11n-HT mode.
+ 	So, the WEP and TKIP shall not be allowed to use HT rate. 
+ */
+#define IS_INVALID_HT_SECURITY(_mode)		\
+	(((_mode) == Ndis802_11Encryption1Enabled) || \
+	 ((_mode) == Ndis802_11Encryption2Enabled) || \
+	 ((_mode) == Ndis802_11Encryption4Enabled))
+
+#define MIX_CIPHER_WPA_TKIP_ON(x)       (((x) & 0x08) != 0)
+#define MIX_CIPHER_WPA_AES_ON(x)        (((x) & 0x04) != 0)
+#define MIX_CIPHER_WPA2_TKIP_ON(x)      (((x) & 0x02) != 0)
+#define MIX_CIPHER_WPA2_AES_ON(x)       (((x) & 0x01) != 0)
+
+/* Some definition are different between Keneral mode and Daemon mode */
+#ifdef WPA_DAEMON_MODE
+/* The definition for Daemon mode */
+#define WPA_GET_BSS_NUM(_pAd)		(_pAd)->mbss_num
+
+#define WPA_GET_PMK(_pAd, _pEntry, _pmk)					\
+{															\
+	_pmk = _pAd->MBSS[_pEntry->apidx].PMK;					\
+}
+
+#define WPA_GET_GTK(_pAd, _pEntry, _gtk)					\
+{															\
+	_gtk = _pAd->MBSS[_pEntry->apidx].GTK;					\
+}
+
+#define WPA_GET_GROUP_CIPHER(_pAd, _pEntry, _cipher)		\
+{															\
+	_cipher = (_pAd)->MBSS[_pEntry->apidx].GroupEncrypType;	\
+}
+
+#define WPA_GET_DEFAULT_KEY_ID(_pAd, _pEntry, _idx)			\
+{															\
+	_idx = (_pAd)->MBSS[_pEntry->apidx].DefaultKeyId;		\
+}
+
+#define WPA_GET_BMCST_TSC(_pAd, _pEntry, _tsc)				\
+{															\
+	_tsc = 1;												\
+}
+
+#define WPA_BSSID(_pAd, _apidx)		(_pAd)->MBSS[_apidx].wlan_addr
+
+#define WPA_OS_MALLOC(_p, _s)		\
+{									\
+	_p = os_malloc(_s);			\
+}
+
+#define WPA_OS_FREE(_p)		\
+{								\
+	os_free(_p);				\
+}
+
+#define WPA_GET_CURRENT_TIME(_time)		\
+{										\
+	struct timeval tv;					\
+	gettimeofday(&tv, NULL);			\
+	*(_time) = tv.tv_sec;					\
+}
+
+#else
+/* The definition for Driver mode */
+
+#if defined(CONFIG_AP_SUPPORT) && defined(CONFIG_STA_SUPPORT)
+#define WPA_GET_BSS_NUM(_pAd)		(((_pAd)->OpMode == OPMODE_AP) ? (_pAd)->ApCfg.BssidNum : 1)
+#define WPA_GET_GROUP_CIPHER(_pAd, _pEntry, _cipher)					\
+	{																	\
+	_cipher = Ndis802_11WEPDisabled;								\
+		if ((_pAd)->OpMode == OPMODE_AP)								\
+		{																\
+		if (IS_ENTRY_APCLI(_pEntry) && 								\
+			((_pEntry)->MatchAPCLITabIdx < MAX_APCLI_NUM))			\
+			_cipher = (_pAd)->ApCfg.ApCliTab[(_pEntry)->MatchAPCLITabIdx].GroupCipher;	\
+			else if ((_pEntry)->apidx < (_pAd)->ApCfg.BssidNum)			\
+				_cipher = (_pAd)->ApCfg.MBSSID[_pEntry->apidx].GroupKeyWepStatus;\
+		}																\
+		else															\
+			_cipher = (_pAd)->StaCfg.GroupCipher;						\
+	}
+
+#define WPA_BSSID(_pAd, _apidx) 	(((_pAd)->OpMode == OPMODE_AP) ?\
+									(_pAd)->ApCfg.MBSSID[_apidx].Bssid :\
+									(_pAd)->CommonCfg.Bssid)
+#elif defined(CONFIG_AP_SUPPORT)
+#define WPA_GET_BSS_NUM(_pAd)		(_pAd)->ApCfg.BssidNum
+#define WPA_GET_GROUP_CIPHER(_pAd, _pEntry, _cipher)				\
+	{																\
+	_cipher = Ndis802_11WEPDisabled;							\
+	if (IS_ENTRY_APCLI(_pEntry) && 								\
+		((_pEntry)->MatchAPCLITabIdx < MAX_APCLI_NUM))			\
+		_cipher = (_pAd)->ApCfg.ApCliTab[(_pEntry)->MatchAPCLITabIdx].GroupCipher;	\
+		else if ((_pEntry)->apidx < (_pAd)->ApCfg.BssidNum)			\
+			_cipher = (_pAd)->ApCfg.MBSSID[_pEntry->apidx].GroupKeyWepStatus;\
+	}
+
+#define WPA_BSSID(_pAd, _apidx) 	(_pAd)->ApCfg.MBSSID[_apidx].Bssid
+
+#elif defined(CONFIG_STA_SUPPORT)
+#define WPA_GET_BSS_NUM(_pAd)		1
+#define WPA_GET_GROUP_CIPHER(_pAd, _pEntry, _cipher)				\
+	{																\
+		_cipher = (_pAd)->StaCfg.GroupCipher;						\
+	}
+#define WPA_BSSID(_pAd, _apidx) 	(_pAd)->CommonCfg.Bssid
+#endif // defined(CONFIG_STA_SUPPORT) //
+
+
+#define WPA_OS_MALLOC(_p, _s)		\
+{									\
+	os_alloc_mem(NULL, (PUCHAR *)&_p, _s);		\
+}
+
+#define WPA_OS_FREE(_p)		\
+{							\
+	os_free_mem(NULL, _p);	\
+}
+
+#define WPA_GET_CURRENT_TIME(_time)		NdisGetSystemUpTime(_time);
+
+#endif // End of Driver Mode //
+
+
+/*========================================
+	The prototype is defined in cmm_wpa.c
+  ========================================*/
+void inc_iv_byte(
+	UCHAR *iv, 
+	UINT len, 
+	UINT cnt);
+
+BOOLEAN WpaMsgTypeSubst(
+	IN  UCHAR   EAPType,
+	OUT INT		*MsgType);
+
+VOID    PRF(
+	IN  UCHAR   *key,
+	IN  INT     key_len,
+	IN  UCHAR   *prefix,
+	IN  INT     prefix_len,
+	IN  UCHAR   *data,
+	IN  INT     data_len,
+	OUT UCHAR   *output,
+	IN  INT     len);
+
+int RtmpPasswordHash(
+	char *password, 
+	unsigned char *ssid, 
+	int ssidlength, 
+	unsigned char *output);
+
+VOID	KDF(
+	IN	PUINT8	key,
+	IN	INT		key_len,
+	IN	PUINT8	label,
+	IN	INT		label_len,
+	IN	PUINT8	data,
+	IN	INT		data_len,
+	OUT	PUINT8	output,
+	IN	USHORT	len);
+
+PUINT8	WPA_ExtractSuiteFromRSNIE(
+		IN 	PUINT8	rsnie,
+		IN 	UINT	rsnie_len,
+		IN	UINT8	type,
+		OUT	UINT8	*count);
+
+VOID WpaShowAllsuite(
+	IN 	PUINT8	rsnie,
+	IN 	UINT	rsnie_len);
+
+VOID RTMPInsertRSNIE(
+	IN PUCHAR pFrameBuf,
+	OUT PULONG pFrameLen,
+	IN PUINT8 rsnie_ptr,
+	IN UINT8  rsnie_len,
+	IN PUINT8 pmkid_ptr,
+	IN UINT8  pmkid_len);
+
+/* 
+ =====================================	
+ 	function prototype in cmm_wpa.c
+ =====================================	
+*/
+VOID	RTMPToWirelessSta(
+    IN  PRTMP_ADAPTER   	pAd,
+    IN  PMAC_TABLE_ENTRY 	pEntry,
+    IN  PUCHAR          	pHeader802_3,
+    IN  UINT            	HdrLen,
+    IN  PUCHAR          	pData,
+    IN  UINT            	DataLen,
+    IN	BOOLEAN				bClearFrame);
+
+VOID WpaDerivePTK(
+	IN  PRTMP_ADAPTER   pAd,
+	IN  UCHAR   *PMK,
+	IN  UCHAR   *ANonce,
+	IN  UCHAR   *AA,
+	IN  UCHAR   *SNonce,
+	IN  UCHAR   *SA,
+	OUT UCHAR   *output,
+	IN  UINT    len);
+
+VOID WpaDeriveGTK(
+	IN  UCHAR   *PMK,
+	IN  UCHAR   *GNonce,
+	IN  UCHAR   *AA,
+	OUT UCHAR   *output,
+	IN  UINT    len);
+
+VOID    GenRandom(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN	UCHAR			*macAddr,
+	OUT	UCHAR			*random);
+
+BOOLEAN RTMPCheckWPAframe(
+	IN PRTMP_ADAPTER pAd,
+	IN PMAC_TABLE_ENTRY	pEntry,
+	IN PUCHAR 			pData,
+	IN ULONG 			DataByteCount,	
+	IN UCHAR			FromWhichBSSID);
+
+BOOLEAN RTMPParseEapolKeyData(
+	IN  PRTMP_ADAPTER   pAd,
+	IN  PUCHAR          pKeyData,
+	IN  UCHAR           KeyDataLen,
+	IN	UCHAR			GroupKeyIndex,
+	IN	UCHAR			MsgType,
+	IN	BOOLEAN			bWPA2,
+	IN  MAC_TABLE_ENTRY *pEntry);
+
+VOID WPA_ConstructKdeHdr(
+	IN 	UINT8	data_type,	
+	IN 	UINT8 	data_len,
+	OUT PUCHAR 	pBuf);
+
+VOID	ConstructEapolMsg(
+	IN 	PMAC_TABLE_ENTRY	pEntry,
+    IN 	UCHAR				GroupKeyWepStatus,
+    IN 	UCHAR				MsgType,  
+    IN	UCHAR				DefaultKeyIdx,
+	IN 	UCHAR				*KeyNonce,
+	IN	UCHAR				*TxRSC,
+	IN	UCHAR				*GTK,
+	IN	UCHAR				*RSNIE,
+	IN	UCHAR				RSNIE_Len,
+    OUT PEAPOL_PACKET       pMsg);
+
+PCIPHER_KEY RTMPSwCipherKeySelection(
+	IN 	PRTMP_ADAPTER 		pAd,
+	IN	PUCHAR				pIV,
+	IN	RX_BLK				*pRxBlk,
+	IN	PMAC_TABLE_ENTRY 	pEntry);
+
+NDIS_STATUS	RTMPSoftDecryptionAction(
+	IN 		PRTMP_ADAPTER 	pAd,
+	IN 		PUCHAR			pHdr,
+	IN 		UCHAR    		UserPriority,
+	IN 		PCIPHER_KEY		pKey,
+	INOUT 	PUCHAR			pData,
+	INOUT 	UINT16			*DataByteCnt);
+
+VOID RTMPSoftConstructIVHdr(
+	IN	UCHAR			CipherAlg,
+	IN	UCHAR			key_id,
+	IN	PUCHAR			pTxIv,
+	OUT PUCHAR 			pHdrIv,
+	OUT	UINT8			*hdr_iv_len);
+
+VOID RTMPSoftEncryptionAction(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	UCHAR			CipherAlg,
+	IN	PUCHAR			pHdr,
+	IN	PUCHAR			pSrcBufData,
+	IN	UINT32			SrcBufLen,
+	IN	UCHAR			KeyIdx,
+	IN	PCIPHER_KEY		pKey,
+	OUT	UINT8			*ext_len);
+
+VOID RTMPMakeRSNIE(
+	IN  PRTMP_ADAPTER   pAd,
+	IN  UINT            AuthMode,
+	IN  UINT            WepStatus,
+	IN	UCHAR			apidx);
+
+VOID WPAInstallPairwiseKey(
+	PRTMP_ADAPTER		pAd,
+	UINT8				BssIdx,
+	PMAC_TABLE_ENTRY	pEntry,
+	BOOLEAN				bAE);
+
+VOID WPAInstallSharedKey(
+	PRTMP_ADAPTER		pAd,
+	UINT8				GroupCipher,
+	UINT8				BssIdx,
+	UINT8				KeyIdx,
+	UINT8				Wcid,
+	BOOLEAN				bAE,
+	PUINT8				pGtk);
+
+VOID RTMPSetWcidSecurityInfo(
+	PRTMP_ADAPTER		pAd,
+	UINT8				BssIdx,
+	UINT8				KeyIdx,
+	UINT8				CipherAlg,
+	UINT8				Wcid,
+	UINT8				KeyTabFlag);
+
+VOID	CalculateMIC(
+	IN	UCHAR			KeyDescVer,	
+	IN	UCHAR			*PTK,
+	OUT PEAPOL_PACKET   pMsg);
+
+PSTRING GetEapolMsgType(CHAR msg);
+/* 
+ =====================================	
+ 	function prototype in cmm_wep.c
+ =====================================	
+*/
+UINT RTMP_CALC_FCS32(
+	IN  UINT   Fcs,
+	IN  PUCHAR  Cp,
+	IN  INT     Len);
+
+VOID RTMPConstructWEPIVHdr(
+	IN	UINT8 			key_idx,
+	IN	UCHAR			*pn,	
+	OUT	UCHAR			*iv_hdr);
+
+BOOLEAN	RTMPSoftEncryptWEP(
+	IN 		PRTMP_ADAPTER 	pAd,
+	IN 		PUCHAR			pIvHdr,
+	IN 		PCIPHER_KEY		pKey,
+	INOUT 	PUCHAR			pData,
+	IN 		ULONG			DataByteCnt);
+
+BOOLEAN	RTMPSoftDecryptWEP(
+	IN 		PRTMP_ADAPTER 	pAd,
+	IN 		PCIPHER_KEY		pKey,
+	INOUT 	PUCHAR			pData,
+	INOUT 	UINT16			*DataByteCnt);
+
+/* 
+ =====================================	
+ 	function prototype in cmm_tkip.c
+ =====================================	
+*/
+BOOLEAN RTMPSoftDecryptTKIP(
+	IN 		PRTMP_ADAPTER 	pAd,
+	IN 		PUCHAR			pHdr,
+	IN 		UCHAR    		UserPriority,
+	IN 		PCIPHER_KEY		pKey,
+	INOUT 	PUCHAR			pData,
+	IN 		UINT16			*DataByteCnt);
+
+VOID TKIP_GTK_KEY_WRAP( 
+    IN UCHAR    *key,
+    IN UCHAR	*iv,
+    IN UCHAR    *input_text,
+    IN UINT32    input_len,
+    OUT UCHAR   *output_text);
+
+VOID TKIP_GTK_KEY_UNWRAP( 
+    IN UCHAR    *key,
+    IN UCHAR	*iv,
+    IN UCHAR    *input_text,
+    IN UINT32    input_len,
+    OUT UCHAR   *output_text);
+
+/* 
+ =====================================	
+ 	function prototype in cmm_aes.c
+ =====================================	
+*/
+BOOLEAN RTMPSoftDecryptAES(
+	IN PRTMP_ADAPTER pAd,
+	IN PUCHAR	pData,
+	IN ULONG	DataByteCnt, 
+	IN PCIPHER_KEY	pWpaKey);
+
+VOID RTMPConstructCCMPHdr(
+	IN	UINT8 			key_idx,
+	IN	UCHAR			*pn,		
+	OUT	UCHAR			*ccmp_hdr);
+
+BOOLEAN RTMPSoftEncryptCCMP(
+	IN  PRTMP_ADAPTER   pAd,
+	IN 	PUCHAR			pHdr,
+	IN	PUCHAR			pIV,
+	IN 	PUCHAR			pKey,
+	INOUT PUCHAR		pData,
+	IN 	UINT32			DataLen);
+
+BOOLEAN RTMPSoftDecryptCCMP(
+	IN 		PRTMP_ADAPTER 	pAd,
+	IN 		PUCHAR			pHdr,
+	IN 		PCIPHER_KEY		pKey,
+	INOUT 	PUCHAR			pData,
+	INOUT 	UINT16			*DataLen);
+
+VOID CCMP_test_vector(
+	IN 	PRTMP_ADAPTER 	pAd,
+	IN	INT 			input);
+
+#endif
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/wpa_cmm.h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/wpa_cmm.h
new file mode 100644
index 000000000..82ad78a1b
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/include/wpa_cmm.h
@@ -0,0 +1,244 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************/
+
+#ifndef WPA_CMM_H
+#define WPA_CMM_H
+
+#include "rtmp_type.h"
+#include "dot11i_wpa.h"
+
+#define CACHE_NOT_FOUND         -1
+
+#define TX_EAPOL_BUFFER			1500
+
+// Retry timer counter initial value
+#define PEER_MSG1_RETRY_TIMER_CTR           0
+#define PEER_MSG3_RETRY_TIMER_CTR           10
+#define GROUP_MSG1_RETRY_TIMER_CTR          20
+
+// WPA mechanism retry timer interval
+#define PEER_MSG1_RETRY_EXEC_INTV           1000        		// 1 sec
+#define PEER_MSG3_RETRY_EXEC_INTV           3000        		// 3 sec
+#define GROUP_KEY_UPDATE_EXEC_INTV          1000				// 1 sec
+#define PEER_GROUP_KEY_UPDATE_INIV			2000				// 2 sec
+
+#define	EAPOL_MSG_INVALID	0
+#define	EAPOL_PAIR_MSG_1	1
+#define	EAPOL_PAIR_MSG_2	2
+#define	EAPOL_PAIR_MSG_3	3
+#define	EAPOL_PAIR_MSG_4	4
+#define	EAPOL_GROUP_MSG_1	5
+#define	EAPOL_GROUP_MSG_2	6
+
+#define ENQUEUE_EAPOL_START_TIMER			200					// 200 ms
+
+// group rekey interval
+#define TIME_REKEY                          0
+#define PKT_REKEY                           1
+#define DISABLE_REKEY                       2
+#define MAX_REKEY                           2
+
+#define MAX_REKEY_INTER                     0x3ffffff
+
+#define EAPOL_START_DISABLE					0
+#define EAPOL_START_PSK						1
+#define EAPOL_START_1X						2
+
+//
+// Common WPA state machine: states, events, total function #
+//
+#define WPA_PTK                      0
+#define MAX_WPA_PTK_STATE            1
+
+#define WPA_MACHINE_BASE             0
+#define MT2_EAPPacket                0
+#define MT2_EAPOLStart               1
+#define MT2_EAPOLLogoff              2
+#define MT2_EAPOLKey                 3
+#define MT2_EAPOLASFAlert            4
+#define MAX_WPA_MSG                  5
+
+#define WPA_FUNC_SIZE                (MAX_WPA_PTK_STATE * MAX_WPA_MSG)
+
+typedef enum _WpaRole {
+    WPA_NONE,               // 0
+    WPA_Authenticator,      // 1
+    WPA_Supplicant,         // 2
+    WPA_BOTH,               // 3: Authenticator and Supplicant
+} WPA_ROLE;    
+
+//for-wpa value domain of pMacEntry->WpaState  802.1i D3   p.114
+typedef enum _ApWpaState {
+    AS_NOTUSE,              // 0
+    AS_DISCONNECT,          // 1
+    AS_DISCONNECTED,        // 2
+    AS_INITIALIZE,          // 3
+    AS_AUTHENTICATION,      // 4
+    AS_AUTHENTICATION2,     // 5
+    AS_INITPMK,             // 6
+    AS_INITPSK,             // 7
+    AS_PTKSTART,            // 8
+    AS_PTKINIT_NEGOTIATING, // 9
+    AS_PTKINITDONE,         // 10
+    AS_UPDATEKEYS,          // 11
+    AS_INTEGRITY_FAILURE,   // 12
+    AS_KEYUPDATE,           // 13
+} AP_WPA_STATE;
+
+// For supplicant state machine states. 802.11i Draft 4.1, p. 97
+// We simplified it
+typedef	enum	_WpaState
+{
+	SS_NOTUSE,				// 0
+	SS_START,				// 1
+	SS_WAIT_MSG_3,			// 2
+	SS_WAIT_GROUP,			// 3
+	SS_FINISH,  			// 4
+	SS_KEYUPDATE,			// 5
+}	WPA_STATE;
+
+// for-wpa value domain of pMacEntry->WpaState  802.1i D3   p.114
+typedef enum _GTKState {
+    REKEY_NEGOTIATING,
+    REKEY_ESTABLISHED,
+    KEYERROR,
+} GTK_STATE;
+
+//  for-wpa  value domain of pMacEntry->WpaState  802.1i D3   p.114
+typedef enum _WpaGTKState {
+    SETKEYS,
+    SETKEYS_DONE,
+} WPA_GTK_STATE;
+
+/* WPA internal command type */
+#define WPA_SM_4WAY_HS_START 	1
+#define WPA_SM_DISCONNECT		0xff
+
+/* WPA element IDs */
+typedef enum _WPA_VARIABLE_ELEMENT_ID
+{		
+   	WPA_ELEM_CMD = 1,
+   	WPA_ELEM_PEER_RSNIE,
+   	WPA_ELEM_LOCAL_RSNIE,
+   	WPA_ELEM_PMK,
+   	WPA_ELEM_RESV
+} WPA_VARIABLE_ELEMENT_ID;
+
+#define GROUP_SUITE					0
+#define PAIRWISE_SUITE				1
+#define AKM_SUITE					2
+#define RSN_CAP_INFO				3
+#define PMKID_LIST					4
+#define G_MGMT_SUITE				5
+
+// 
+//	The definition of the cipher combination
+//
+// 	 bit3	bit2  bit1   bit0
+//	+------------+------------+ 
+// 	|	  WPA	 |	   WPA2   |
+//	+------+-----+------+-----+
+//	| TKIP | AES | TKIP | AES |
+//	|	0  |  1  |   1  |  0  | -> 0x06
+//	|	0  |  1  |   1  |  1  | -> 0x07
+//	|	1  |  0  |   0  |  1  | -> 0x09
+//	|	1  |  0  |   1  |  1  | -> 0x0B
+//	|	1  |  1  |   0  |  1  | -> 0x0D
+//	|	1  |  1  |   1  |  0  | -> 0x0E									
+//	|	1  |  1  |   1  |  1  |	-> 0x0F																												
+//	+------+-----+------+-----+	
+//
+typedef	enum	_WpaMixPairCipher
+{
+	MIX_CIPHER_NOTUSE 			= 0x00,	
+	WPA_NONE_WPA2_TKIPAES		= 0x03,		// WPA2-TKIPAES
+	WPA_AES_WPA2_TKIP 			= 0x06,				
+	WPA_AES_WPA2_TKIPAES		= 0x07,			
+	WPA_TKIP_WPA2_AES			= 0x09,			
+	WPA_TKIP_WPA2_TKIPAES		= 0x0B,  	
+	WPA_TKIPAES_WPA2_NONE		= 0x0C,		// WPA-TKIPAES
+	WPA_TKIPAES_WPA2_AES		= 0x0D,
+	WPA_TKIPAES_WPA2_TKIP		= 0x0E,  			
+	WPA_TKIPAES_WPA2_TKIPAES	= 0x0F,	
+}	WPA_MIX_PAIR_CIPHER;
+
+/* The internal command list for ralink dot1x daemon using */
+typedef	enum	_Dot1xInternalCmd
+{
+	DOT1X_DISCONNECT_ENTRY, 			
+	DOT1X_RELOAD_CONFIG,
+}	DOT1X_INTERNAL_CMD;
+
+// 802.1x authentication format
+typedef	struct	_IEEE8021X_FRAME	{
+	UCHAR	Version;					// 1.0
+	UCHAR	Type;						// 0 = EAP Packet
+	USHORT	Length;
+}	IEEE8021X_FRAME, *PIEEE8021X_FRAME;
+
+typedef struct GNU_PACKED _RSN_IE_HEADER_STRUCT	{
+	UCHAR		Eid;
+	UCHAR		Length;
+	USHORT		Version;	// Little endian format
+}	RSN_IE_HEADER_STRUCT, *PRSN_IE_HEADER_STRUCT;
+
+// Cipher suite selector types
+typedef struct GNU_PACKED _CIPHER_SUITE_STRUCT	{
+	UCHAR		Oui[3];
+	UCHAR		Type;
+}	CIPHER_SUITE_STRUCT, *PCIPHER_SUITE_STRUCT;
+
+// Authentication and Key Management suite selector
+typedef struct GNU_PACKED _AKM_SUITE_STRUCT	{
+	UCHAR		Oui[3];
+	UCHAR		Type;
+}	AKM_SUITE_STRUCT, *PAKM_SUITE_STRUCT;
+
+// RSN capability
+typedef struct	GNU_PACKED _RSN_CAPABILITY	{
+	USHORT		Rsv:10;
+	USHORT		GTKSAReplayCnt:2;
+	USHORT		PTKSAReplayCnt:2;
+	USHORT		NoPairwise:1;
+	USHORT		PreAuth:1;
+}	RSN_CAPABILITY, *PRSN_CAPABILITY;
+
+typedef struct _CIPHER_KEY {
+	UCHAR   Key[16];            	// 128 bits max
+	UCHAR   TxMic[8];
+	UCHAR   RxMic[8];
+	UCHAR   TxTsc[16];           	// TSC value. Change it from 48bit to 128bit 
+	UCHAR   RxTsc[16];           	// TSC value. Change it from 48bit to 128bit
+	UCHAR   CipherAlg;           	// 0:none, 1:WEP64, 2:WEP128, 3:TKIP, 4:AES, 5:CKIP64, 6:CKIP128
+ 	UCHAR   KeyLen; 				// Key length for each key, 0: entry is invalid
+#ifdef CONFIG_STA_SUPPORT
+	UCHAR   BssId[6];
+#endif // CONFIG_STA_SUPPORT //
+	UCHAR   Type;               // Indicate Pairwise/Group when reporting MIC error
+} CIPHER_KEY, *PCIPHER_KEY;
+
+#endif // WPA_CMM_H //
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/iwpriv_usage.txt b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/iwpriv_usage.txt
new file mode 100644
index 000000000..158831c31
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/iwpriv_usage.txt
@@ -0,0 +1,303 @@
+iwpriv
+=================
+This is detailed explanation of each parameters for iwpriv.
+Before reading this document, make sure you already read README.
+
+-------------------------------------------------------------------------------------------------------
+USAGE:
+	iwpriv ra0 set [parameters]=[val]
+	
+NOTE:
+	Execute one iwpriv/set command simultaneously.
+	
+where		
+[parameters]        	[val] 
+						{range}
+-----------------   	-------------------------------------------------
+CountryRegion       	{0~7}
+						::Set country region                                   	
+						0: 1 ~ 11 ch
+						1: 1 ~ 13 ch
+						2: 10, 11 ch
+						3: 10 ~ 13 ch
+						4: 14 ch
+						5: 1 ~ 14 ch
+						6: 3 ~ 9 ch
+						7: 5 ~ 13 ch
+					   31: 1 ~ 14 ch (ch1-11:active scan, ch12-14 passive scan)
+											
+CountryRegionABand		{0~11}
+						::Set country region for A band  										                                       
+       					0: 36, 40, 44, 48, 52, 56, 60, 64, 149, 153, 157, 161, 165 ch
+						1: 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140 ch
+						2: 36, 40, 44, 48, 52, 56, 60, 64 ch
+						3: 52, 56, 60, 64, 149, 153, 157, 161 ch
+						4: 149, 153, 157, 161, 165 ch
+						5: 149, 153, 157, 161 ch
+						6: 36, 40, 44, 48 ch
+						7: 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 149, 153, 157, 161, 165 ch
+						8: 52, 56, 60, 64 ch
+						9: 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 132, 136, 140, 149, 153, 157, 161, 165 ch
+					   10: 36, 40, 44, 48, 149, 153, 157, 161, 165 ch
+					   11: 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 149, 153, 157, 161 ch
+                                                           
+SSID                	{0~z, 1~32 ascii characters} 			
+                    	::Set AP SSID
+                    	
+WirelessMode        	{0~10}
+						::Set Wireless Mode								 
+                    	0: legacy 11b/g mixed 
+						1: legacy 11B only 
+						2: legacy 11A only
+						3: legacy 11a/b/g mixed
+						4: legacy 11G only
+						5: 11ABGN mixed
+						6: 11N only
+						7: 11GN mixed
+						8: 11AN mixed
+						9: 11BGN mixed
+	   				   10: 11AGN mixed	
+                    	
+Channel             	depends on CountryRegion or CountryRegionForABand
+                        ::Set Channel
+                    	
+BGProtection        	{0~2}
+						::Set 11B/11G Protection                                   	
+                   		0:Auto, 
+                   		1:Always on, 
+                   		2:Always off
+                    	
+TxPreamble          	{0~2}
+						::Set TxPreamble
+                    	0:Preamble Long, 
+                    	1:Preamble Short, 
+                    	2:Auto
+                    	
+RTSThreshold        	{1~2347}                               	                                                           
+                    	::Set RTS Threshold
+                    	                                       
+FragThreshold       	{256~2346}
+						::Set Fragment Threshold                             	
+                    	
+TxBurst             	{0,1}
+						::Set TxBurst Enable or Disable                                  	
+                  		0:Disable, 
+                  		1:Enable
+
+NetworkType	    		{Infra,Adhoc}
+    					::Set Network type
+    					 									                                                                                                                                                        	                                                          
+AuthMode            	{OPEN,SHARED,WEPAUTO,WPAPSK,WPA2PSK,WPANONE}
+                        ::Set Authentication Mode 	
+
+EncrypType          	{NONE,WEP,TKIP,AES}          			
+						::Set Encryption Type
+						 
+DefaultKeyID        	{1~4}                              		
+						::Set Default Key ID
+						
+						
+Key1                 	{5 ascii characters or 10 hex number or 
+                     	13 ascii characters or 26 hex numbers}
+                     	::Set Key1 String                                                                                                                        
+
+Key2                 	{5 ascii characters or 10 hex number or 
+                     	13 ascii characters or 26 hex numbers}                                                                                                                        
+                      	::Set Key2 String
+                      	           	
+Key3                 	{5 ascii characters or 10 hex number or 
+                     	13 ascii characters or 26 hex numbers}                                                                                                                        
+						::Set Key3 String
+						 
+Key4                 	{5 ascii characters or 10 hex number or 
+                     	13 ascii characters or 26 hex numbers}                                                                                                                        
+                        ::Set Key4 String
+                                                        
+WPAPSK              	{8~63 ascii or 64 hex characters} 		 
+						::WPA Pre-Shared Key
+                    																		
+WmmCapable				{0,1}
+						::Set WMM Capable
+						0:Disable WMM, 
+						1:Enable WMM
+
+PSMode					{CAM, MAX_PSP, FAST_PSP}
+						::Set Power Saving Mode
+
+HtBw					{0,1}
+						::Set BandWidth
+						0: 20Hz
+						1: 40Hz
+
+HtMcs					{0 ~ 15, 33}
+						::Set MCS
+						33: Auto Rate
+
+HtGi					{0,1}
+						::Set Guard Interval(GI)
+						0: long GI
+						1: short GI
+
+HtOpMode				{0,1}
+						::Set HT Operation Mode
+						0: HT mixed format
+						1: HT greenfield format
+
+HtExtcha				{0,1}
+						::Set Extended Channel Switch Announcement
+						0: Below
+						1: Above
+
+HtMpduDensity			{0 ~ 7}
+						::Set The Minimum Time Between MPDUs within an AMPDU
+
+HtBaWinSize				{1 ~ 64}
+						::Set BA WinSize
+
+HtRdg					{0,1}
+						::Set RDG Capable
+						0: Disabled
+						1: Enabled
+
+HtAmsdu					{0,1}
+						::Set AMSDU Capable
+						0: Disabled
+						1: Enabled
+
+HtAutoBa				{0,1}
+						::Set Auto BA Capable
+						0: Disabled
+						1: Enabled
+
+HtBaDecline				{0,1}
+						::Reject BA request from AP
+						0: Disabled
+						1: Enabled
+
+HtProtect				{0,1}
+						::Set HT Protect Capable
+						0: Disabled
+						1: Enabled
+
+FixedTxMode				{CCK, OFDM}
+						:: Set Fixed Tx Mode for fixed rate setting
+						Mode = CCK
+						MCS = 0		=> 1Mbps
+							= 1		=> 2Mbps
+							= 2		=> 5.5 Mbps
+							= 3		=> 11 Mbps
+						Mode = OFDM
+						MCS = 0		=> 6Mbps
+						 	= 1		=> 9Mbps
+							= 2		=> 12Mbps
+							= 3		=> 18Mbps
+							= 4		=> 24Mbps
+							= 5		=> 36Mbps
+							= 6		=> 48Mbps
+							= 7		=> 54Mbps
+
+LongRetry				{0,255}
+						:: Set Tx Long Retry Limit
+
+ShortRetry				{0,255}
+						:: Set Tx Short Retry Limit
+
+Examples
+===================================================================
+-------------------------------------------------------------------------------------------------------
+a> Config STA to link with AP which is OPEN/NONE(Authentication/Encryption)
+	1. iwpriv ra0 set NetworkType=Infra
+	2. iwpriv ra0 set AuthMode=OPEN
+	3. iwpriv ra0 set EncrypType=NONE
+	4. iwpriv ra0 set SSID="AP's SSID"
+	
+b> Config STA to link with AP which is SHARED/WEP(Authentication/Encryption)
+	1. iwpriv ra0 set NetworkType=Infra
+	2. iwpriv ra0 set AuthMode=SHARED
+	3. iwpriv ra0 set EncrypType=WEP
+	4. iwpriv ra0 set DefaultKeyID=1
+	5. iwpriv ra0 set Key1="AP's wep key"
+	6. iwpriv ra0 set SSID="AP's SSID"
+	
+c> Config STA to link with AP which is WPAPSK/TKIP(Authentication/Encryption)
+	1. iwpriv ra0 set NetworkType=Infra
+	2. iwpriv ra0 set AuthMode=WPAPSK
+	3. iwpriv ra0 set EncrypType=TKIP
+	4. iwpriv ra0 set SSID="AP's SSID"
+	5. iwpriv ra0 set WPAPSK="AP's wpa-preshared key"
+	6. iwpriv ra0 set SSID="AP's SSID"
+	
+d> Config STA to link with AP which is WPAPSK/AES(Authentication/Encryption)
+	1. iwpriv ra0 set NetworkType=Infra
+	2. iwpriv ra0 set AuthMode=WPAPSK
+	3. iwpriv ra0 set EncrypType=AES
+	4. iwpriv ra0 set SSID="AP's SSID"
+	5. iwpriv ra0 set WPAPSK="AP's wpa-preshared key"
+	6. iwpriv ra0 set SSID="AP's SSID"
+
+e> Config STA to link with AP which is WPA2PSK/TKIP(Authentication/Encryption)
+	1. iwpriv ra0 set NetworkType=Infra
+	2. iwpriv ra0 set AuthMode=WPA2PSK
+	3. iwpriv ra0 set EncrypType=TKIP
+	4. iwpriv ra0 set SSID="AP's SSID"
+	5. iwpriv ra0 set WPAPSK=12345678
+	6. iwpriv ra0 set SSID="AP's SSID"
+	
+f> Config STA to create/link as adhoc mode, which is OPEN/NONE(Authentication/Encryption)
+	1. iwpriv ra0 set NetworkType=Adhoc
+	2. iwpriv ra0 set AuthMode=OPEN
+	3. iwpriv ra0 set EncrypType=NONE
+	4. iwpriv ra0 set SSID="Adhoc's SSID"
+
+g>  Config STA to create/link as adhoc mode, which is WPANONE/TKIP(Authentication/Encryption)
+    1. iwpriv ra0 set NetworkType=Adhoc
+	2. iwpriv ra0 set AuthMode=WPANONE
+	3. iwpriv ra0 set EncrypType=TKIP
+	4. iwpriv ra0 set SSID="AP's SSID"
+	5. iwpriv ra0 set WPAPSK=12345678
+	6. iwpriv ra0 set SSID="AP's SSID"
+  
+h> Get site survey 
+	usage: iwpriv ra0 get_site_survey
+		
+i> Get Statistics 
+	usage: iwpriv ra0 stat						; read statistic counter
+		   iwpriv ra0 set ResetCounter=0		; reset statistic counter
+
+j> Link with an AP which is the largest strength   ; set ANY SSID (ssidLen=0)
+   usage: iwconfig ra0 essid ""                 
+   or
+   usage: iwpriv ra0 set SSID=""
+
+===================================================================
+
+iwlist
+=================
+This is detailed explanation of each parameters for iwlist.
+
+-------------------------------------------------------------------------------------------------------
+iwlist ra0 scanning		; list the results after scanning(manual rescan)
+
+
+
+=======================================================================================================
+
+iwconfig
+=================
+The following are our support in standard configuration - iwconfig
+
+-------------------------------------------------------------------------------------------------------
+iwconfig ra0 essid {NN|on|off}			; set essid
+iwconfig ra0 mode {managed|ad-hoc|...}  ; set wireless mode
+>> rt2860sta driver support monitor mode with linux kernel > 2.4.20.
+iwconfig ra0 freq N.NNNN[k|M|G]]		; set frequency
+iwconfig ra0 channel N					; set channel
+iwconfig ra0 ap {N|off|auto}			; set AP address
+iwconfig ra0 nick N						; set nickname
+iwconfig ra0 rate {N|auto|fixed}     	; set rate (only support legacy rate setting)
+iwconfig ra0 rts {N|auto|fixed|off}		; set RTS threshold
+iwconfig ra0 frag {N|auto|fixed|off}	; set Fragment threshold
+iwconfig ra0 enc {NNNN-NNNN|off}		; set encryption type
+iwconfig ra0 power {period N|timeout N}	; set power management modes
+
+*** Wireless extension usage please refer to man page of 'iwconfig', 'iwlist' and 'iwpriv'. ***
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/.pci_main_dev.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/.pci_main_dev.o.cmd
new file mode 100644
index 000000000..2f2552d27
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/.pci_main_dev.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/pci_main_dev.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/.pci_main_dev.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(pci_main_dev)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/.tmp_pci_main_dev.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/pci_main_dev.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/pci_main_dev.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/pci_main_dev.c \
+    $(wildcard include/config/pm.h) \
+    $(wildcard include/config/sta/support.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/pci_main_dev.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/pci_main_dev.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/pci_main_dev.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/.rt3562sta.ko.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/.rt3562sta.ko.cmd
new file mode 100644
index 000000000..7ac33471b
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/.rt3562sta.ko.cmd
@@ -0,0 +1 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/rt3562sta.ko := ld -r -m elf_i386 -T /usr/src/linux-headers-2.6.32-29-generic-pae/scripts/module-common.lds --build-id -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/rt3562sta.ko /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/rt3562sta.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/rt3562sta.mod.o
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/.rt3562sta.mod.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/.rt3562sta.mod.o.cmd
new file mode 100644
index 000000000..fab5db874
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/.rt3562sta.mod.o.cmd
@@ -0,0 +1,442 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/rt3562sta.mod.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/.rt3562sta.mod.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(rt3562sta.mod)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -DMODULE -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/rt3562sta.mod.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/rt3562sta.mod.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/rt3562sta.mod.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/rt3562sta.mod.c \
+    $(wildcard include/config/module/unload.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/vermagic.h \
+  include/linux/utsrelease.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/rt3562sta.mod.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/rt3562sta.mod.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/rt3562sta.mod.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/.rt3562sta.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/.rt3562sta.o.cmd
new file mode 100644
index 000000000..ec69ae8ec
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/.rt3562sta.o.cmd
@@ -0,0 +1 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/rt3562sta.o := ld -m elf_i386   -r -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/rt3562sta.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/crypt_md5.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/crypt_sha2.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/crypt_hmac.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/crypt_aes.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/crypt_arc4.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/mlme.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_wep.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/action.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_data.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rtmp_init.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_tkip.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_aes.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_sync.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/eeprom.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_sanity.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_info.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_cfg.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_wpa.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/dfs.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/spectrum.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rtmp_timer.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rt_channel.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_profile.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_asic.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_cmd.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/assoc.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/auth.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/auth_rsp.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/sync.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/sanity.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/rtmp_data.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/connect.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/wpa.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/sta_cfg.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rtmp_init_inf.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/rt_profile.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/sta_ioctl.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/rt_linux.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/rt_main_dev.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/ba_action.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_mac_pci.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/cmm_data_pci.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rtmp_mcu.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/ee_prom.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/ee_efuse.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../common/rt_rf.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../chips/rt30xx.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../chips/rt35xx.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/rt_pci_rbus.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/rt_rbus_pci_util.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/pci_main_dev.o 
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/.rt_linux.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/.rt_linux.o.cmd
new file mode 100644
index 000000000..601898ccb
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/.rt_linux.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/rt_linux.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/.rt_linux.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(rt_linux)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/.tmp_rt_linux.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/rt_linux.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/rt_linux.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/rt_linux.c \
+    $(wildcard include/config/sta/support.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+    $(wildcard include/config/apsta/mixed/support.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/rt_linux.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/rt_linux.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/rt_linux.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/.rt_main_dev.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/.rt_main_dev.o.cmd
new file mode 100644
index 000000000..d45f03b16
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/.rt_main_dev.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/rt_main_dev.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/.rt_main_dev.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(rt_main_dev)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/.tmp_rt_main_dev.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/rt_main_dev.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/rt_main_dev.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/rt_main_dev.c \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/sta/support.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/rt_main_dev.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/rt_main_dev.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/rt_main_dev.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/.rt_pci_rbus.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/.rt_pci_rbus.o.cmd
new file mode 100644
index 000000000..672f49c12
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/.rt_pci_rbus.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/rt_pci_rbus.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/.rt_pci_rbus.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(rt_pci_rbus)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/.tmp_rt_pci_rbus.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/rt_pci_rbus.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/rt_pci_rbus.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/rt_pci_rbus.c \
+    $(wildcard include/config/sta/support.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/rt_pci_rbus.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/rt_pci_rbus.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/rt_pci_rbus.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/.rt_profile.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/.rt_profile.o.cmd
new file mode 100644
index 000000000..0e4102551
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/.rt_profile.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/rt_profile.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/.rt_profile.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(rt_profile)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/.tmp_rt_profile.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/rt_profile.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/rt_profile.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/rt_profile.c \
+    $(wildcard include/config/sta/support.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/rt_profile.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/rt_profile.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/rt_profile.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/.rt_rbus_pci_util.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/.rt_rbus_pci_util.o.cmd
new file mode 100644
index 000000000..a84cbdc84
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/.rt_rbus_pci_util.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/rt_rbus_pci_util.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/.rt_rbus_pci_util.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(rt_rbus_pci_util)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/.tmp_rt_rbus_pci_util.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/rt_rbus_pci_util.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/rt_rbus_pci_util.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/rt_rbus_pci_util.c \
+    $(wildcard include/config/5vt/enhance.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+    $(wildcard include/config/sta/support.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/rt_rbus_pci_util.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/rt_rbus_pci_util.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/rt_rbus_pci_util.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/.sta_ioctl.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/.sta_ioctl.o.cmd
new file mode 100644
index 000000000..44dc21a86
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/.sta_ioctl.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/sta_ioctl.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/.sta_ioctl.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(sta_ioctl)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/.tmp_sta_ioctl.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/sta_ioctl.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/sta_ioctl.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/sta_ioctl.c \
+    $(wildcard include/config/apsta/mixed/support.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+    $(wildcard include/config/sta/support.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/sta_ioctl.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/sta_ioctl.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../os/linux/sta_ioctl.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/Makefile.4 b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/Makefile.4
new file mode 100644
index 000000000..0edbc0b2f
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/Makefile.4
@@ -0,0 +1,171 @@
+include $(RT28xx_DIR)/os/linux/config.mk
+
+MOD_NAME = rt$(CHIPSET)sta
+DAT_PATH = /etc/Wireless/RT3060STA
+DAT_FILE_NAME = RT3060STA.dat
+
+OBJ := $(MOD_NAME).o
+
+
+#ifdef CONFIG_STA_SUPPORT
+RT28XX_STA_OBJ := \
+	$(RT28xx_DIR)/common/crypt_md5.o\
+	$(RT28xx_DIR)/common/crypt_sha2.o\
+	$(RT28xx_DIR)/common/crypt_hmac.o\
+	$(RT28xx_DIR)/common/crypt_aes.o\
+	$(RT28xx_DIR)/common/crypt_arc4.o\
+	$(RT28xx_DIR)/common/mlme.o\
+	$(RT28xx_DIR)/common/cmm_wep.o\
+	$(RT28xx_DIR)/common/action.o\
+	$(RT28xx_DIR)/common/cmm_data.o\
+	$(RT28xx_DIR)/common/rtmp_init.o\
+	$(RT28xx_DIR)/common/cmm_tkip.o\
+	$(RT28xx_DIR)/common/cmm_aes.o\
+	$(RT28xx_DIR)/common/cmm_sync.o\
+	$(RT28xx_DIR)/common/eeprom.o\
+	$(RT28xx_DIR)/common/cmm_sanity.o\
+	$(RT28xx_DIR)/common/cmm_info.o\
+	$(RT28xx_DIR)/common/cmm_cfg.o\
+	$(RT28xx_DIR)/common/cmm_wpa.o\
+	$(RT28xx_DIR)/common/dfs.o\
+	$(RT28xx_DIR)/common/spectrum.o\
+	$(RT28xx_DIR)/common/rtmp_timer.o\
+	$(RT28xx_DIR)/common/rt_channel.o\
+	$(RT28xx_DIR)/common/cmm_profile.o\
+	$(RT28xx_DIR)/common/cmm_asic.o\
+	$(RT28xx_DIR)/common/cmm_cmd.o\
+	$(RT28xx_DIR)/sta/assoc.o\
+	$(RT28xx_DIR)/sta/auth.o\
+	$(RT28xx_DIR)/sta/auth_rsp.o\
+	$(RT28xx_DIR)/sta/sync.o\
+	$(RT28xx_DIR)/sta/sanity.o\
+	$(RT28xx_DIR)/sta/rtmp_data.o\
+	$(RT28xx_DIR)/sta/connect.o\
+	$(RT28xx_DIR)/sta/wpa.o\
+	$(RT28xx_DIR)/sta/sta_cfg.o
+
+ifeq ($(OSABL),NO)
+RT28XX_STA_OBJ += \
+	$(RT28xx_DIR)/common/rtmp_init_inf.o\
+	$(RT28xx_DIR)/os/linux/rt_profile.o\
+	$(RT28xx_DIR)/os/linux/sta_ioctl.o\
+	$(RT28xx_DIR)/os/linux/rt_linux.o\
+	$(RT28xx_DIR)/os/linux/rt_main_dev.o
+endif
+
+#ifdef DOT11_N_SUPPORT
+ifeq ($(HAS_DOT11_N_SUPPORT),y)
+RT28XX_STA_OBJ += \
+	$(RT28xx_DIR)/common/ba_action.o
+endif
+#endif // DOT11_N_SUPPORT //
+
+ifeq ($(HAS_BLOCK_NET_IF),y)
+RT28XX_STA_OBJ += $(RT28xx_DIR)/common/netif_block.o
+endif
+
+ifeq ($(HAS_QOS_DLS_SUPPORT),y)
+RT28XX_STA_OBJ += $(RT28xx_DIR)/sta/dls.o
+endif
+
+
+#ifdef RT2860
+ifeq ($(CHIPSET),2860)
+RT28XX_STA_OBJ += \
+	$(RT28xx_DIR)/common/cmm_mac_pci.o\
+	$(RT28xx_DIR)/common/cmm_data_pci.o\
+	$(RT28xx_DIR)/common/ee_prom.o\
+	$(RT28xx_DIR)/common/rtmp_mcu.o
+
+ifeq ($(OSABL),NO)
+RT28XX_STA_OBJ += \
+	$(RT28xx_DIR)/os/linux/rt_pci_rbus.o\
+	$(RT28xx_DIR)/os/linux/rt_rbus_pci_util.o\
+	$(RT28xx_DIR)/os/linux/pci_main_dev.o
+endif
+endif
+#endif // RT2860 //
+
+
+
+
+
+#ifdef RT35xx
+ifeq ($(CHIPSET),3062)
+RT28XX_STA_OBJ += \
+	$(RT28xx_DIR)/common/cmm_mac_pci.o\
+	$(RT28xx_DIR)/common/cmm_data_pci.o\
+	$(RT28xx_DIR)/common/rtmp_mcu.o\
+	$(RT28xx_DIR)/common/ee_prom.o\
+	$(RT28xx_DIR)/common/ee_efuse.o\
+	$(RT28xx_DIR)/common/rt_rf.o\
+	$(RT28xx_DIR)/chips/rt30xx.o\
+	$(RT28xx_DIR)/chips/rt35xx.o
+
+ifeq ($(OSABL),NO)
+RT28XX_STA_OBJ += \
+	$(RT28xx_DIR)/os/linux/rt_pci_rbus.o\
+	$(RT28xx_DIR)/os/linux/rt_rbus_pci_util.o\
+	$(RT28xx_DIR)/os/linux/pci_main_dev.o
+endif
+endif
+
+ifeq ($(CHIPSET),3562)
+RT28XX_STA_OBJ += \
+	$(RT28xx_DIR)/common/cmm_mac_pci.o\
+	$(RT28xx_DIR)/common/cmm_data_pci.o\
+	$(RT28xx_DIR)/common/rtmp_mcu.o\
+	$(RT28xx_DIR)/common/ee_prom.o\
+	$(RT28xx_DIR)/common/ee_efuse.o\
+	$(RT28xx_DIR)/common/rt_rf.o\
+	$(RT28xx_DIR)/chips/rt30xx.o\
+	$(RT28xx_DIR)/chips/rt35xx.o
+
+ifeq ($(OSABL),NO)
+RT28XX_STA_OBJ += \
+	$(RT28xx_DIR)/os/linux/rt_pci_rbus.o\
+	$(RT28xx_DIR)/os/linux/rt_rbus_pci_util.o\
+	$(RT28xx_DIR)/os/linux/pci_main_dev.o
+endif
+endif
+#endif // RT35xx //
+
+
+
+ifeq ($(HAS_ATE),y)
+RT28XX_STA_OBJ += $(RT28xx_DIR)/os/linux/rt_ate.o
+endif
+
+#endif // CONFIG_STA_SUPPORT //
+
+all:$(OBJ)
+
+rt$(CHIPSET)sta.o: $(RT28XX_STA_OBJ)
+	$(LD) -r $^ -o $@
+
+clean:
+	rm -f $(RT28xx_DIR)/common/*.o
+	rm -f $(RT28xx_DIR)/common/.*.{cmd,flags,d}
+	rm -f $(RT28xx_DIR)/os/linux/*.{o,ko,mod.{o,c}}
+	rm -f $(RT28xx_DIR)/os/linux/.*.{cmd,flags,d}
+	rm -fr $(RT28xx_DIR)/os/linux/.tmp_versions
+	rm -f $(RT28xx_DIR)/chips/*.o
+	rm -f $(RT28xx_DIR)/chips/.*.{cmd,flags,d}
+	rm -f $(RT28xx_DIR)/sta/*.o
+	rm -f $(RT28xx_DIR)/sta/.*.{cmd,flags,d}
+
+install:
+	rm -rf $(DAT_PATH)
+	#$(shell [ ! -f /etc/Wireless ] && mkdir /etc/Wireless)
+	#mkdir $(DAT_PATH)
+	$(shell [ ! -f /etc/Wireless ] && mkdir -p /etc/Wireless)
+	mkdir -p $(DAT_PATH)
+	cp $(RT28xx_DIR)/$(DAT_FILE_NAME) $(DAT_PATH)/.
+	install -d $(LINUX_SRC_MODULE)
+	install -m 644 -c $(addsuffix .o,$(MOD_NAME)) $(LINUX_SRC_MODULE)
+	/sbin/depmod -a ${shell uname -r}
+
+uninstall:
+#	rm -rf $(DAT_PATH)
+	rm -rf $(addprefix $(LINUX_SRC_MODULE),$(addsuffix .o,$(MOD_NAME)))
+	/sbin/depmod -a ${shell uname -r}
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/Makefile.6 b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/Makefile.6
new file mode 100644
index 000000000..fd9e32268
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/Makefile.6
@@ -0,0 +1,206 @@
+include $(RT28xx_DIR)/os/linux/config.mk
+
+MOD_NAME = rt$(CHIPSET)sta
+DAT_PATH = /etc/Wireless/RT3060STA
+DAT_FILE_NAME = RT3060STA.dat
+
+obj-m := $(MOD_NAME).o
+
+#ifdef CONFIG_STA_SUPPORT
+rt$(CHIPSET)sta-objs := \
+	../../common/crypt_md5.o\
+	../../common/crypt_sha2.o\
+	../../common/crypt_hmac.o\
+	../../common/crypt_aes.o\
+	../../common/crypt_arc4.o\
+	../../common/mlme.o\
+	../../common/cmm_wep.o\
+	../../common/action.o\
+	../../common/cmm_data.o\
+	../../common/rtmp_init.o\
+	../../common/cmm_tkip.o\
+	../../common/cmm_aes.o\
+	../../common/cmm_sync.o\
+	../../common/eeprom.o\
+	../../common/cmm_sanity.o\
+	../../common/cmm_info.o\
+	../../common/cmm_cfg.o\
+	../../common/cmm_wpa.o\
+	../../common/dfs.o\
+	../../common/spectrum.o\
+	../../common/rtmp_timer.o\
+	../../common/rt_channel.o\
+	../../common/cmm_profile.o\
+	../../common/cmm_asic.o\
+	../../common/cmm_cmd.o\
+	../../sta/assoc.o\
+	../../sta/auth.o\
+	../../sta/auth_rsp.o\
+	../../sta/sync.o\
+	../../sta/sanity.o\
+	../../sta/rtmp_data.o\
+	../../sta/connect.o\
+	../../sta/wpa.o\
+	../../sta/sta_cfg.o
+
+ifeq ($(OSABL),NO)
+rt$(CHIPSET)sta-objs += \
+	../../common/rtmp_init_inf.o\
+	../../os/linux/rt_profile.o\
+	../../os/linux/sta_ioctl.o\
+	../../os/linux/rt_linux.o\
+	../../os/linux/rt_main_dev.o
+endif
+
+#ifdef DOT11_N_SUPPORT
+ifeq ($(HAS_DOT11_N_SUPPORT),y)
+rt$(CHIPSET)sta-objs += \
+	../../common/ba_action.o
+endif
+#endif // DOT11_N_SUPPORT //
+
+ifeq ($(HAS_BLOCK_NET_IF),y)
+rt$(CHIPSET)sta-objs += ../../common/netif_block.o
+endif
+
+ifeq ($(HAS_QOS_DLS_SUPPORT),y)
+rt$(CHIPSET)sta-objs += ../../sta/dls.o
+endif
+
+
+#ifdef RT2860
+ifeq ($(CHIPSET),2860)
+rt$(CHIPSET)sta-objs += \
+	../../common/cmm_mac_pci.o\
+	../../common/cmm_data_pci.o\
+	../../common/ee_prom.o\
+	../../common/rtmp_mcu.o
+
+ifeq ($(OSABL),NO)
+rt$(CHIPSET)sta-objs += \
+	../../os/linux/rt_pci_rbus.o\
+	../../os/linux/rt_rbus_pci_util.o\
+	../../os/linux/pci_main_dev.o
+endif
+endif
+#endif // RT2860 //
+
+
+
+
+
+#ifdef RT35xx
+ifeq ($(CHIPSET),3572)
+rt$(CHIPSET)sta-objs += \
+	../../common/cmm_mac_usb.o\
+	../../common/rtusb_io.o\
+	../../common/rtusb_bulk.o\
+	../../common/rtusb_data.o\
+	../../common/cmm_data_usb.o\
+	../../common/ee_prom.o\
+	../../common/ee_efuse.o\
+	../../common/rtmp_mcu.o\
+	../../chips/rt30xx.o\
+	../../common/rt_rf.o\
+	../../chips/rt35xx.o
+
+ifeq ($(OSABL),NO)
+rt$(CHIPSET)sta-objs += \
+	../../common/rtusb_dev_id.o\
+	../../os/linux/rt_usb.o\
+	../../os/linux/rt_usb_util.o\
+	../../os/linux/usb_main_dev.o
+endif
+endif
+
+ifeq ($(CHIPSET),3062)
+rt$(CHIPSET)sta-objs += \
+	../../common/cmm_mac_pci.o\
+	../../common/cmm_data_pci.o\
+	../../common/rtmp_mcu.o\
+	../../common/ee_prom.o\
+	../../common/ee_efuse.o\
+	../../common/rt_rf.o\
+	../../chips/rt30xx.o\
+	../../chips/rt35xx.o
+
+ifeq ($(OSABL),NO)
+rt$(CHIPSET)sta-objs += \
+	../../os/linux/rt_pci_rbus.o\
+	../../os/linux/rt_rbus_pci_util.o\
+	../../os/linux/pci_main_dev.o
+endif
+endif
+
+ifeq ($(CHIPSET),3562)
+rt$(CHIPSET)sta-objs += \
+	../../common/cmm_mac_pci.o\
+	../../common/cmm_data_pci.o\
+	../../common/rtmp_mcu.o\
+	../../common/ee_prom.o\
+	../../common/ee_efuse.o\
+	../../common/rt_rf.o\
+	../../chips/rt30xx.o\
+	../../chips/rt35xx.o
+
+ifeq ($(OSABL),NO)
+rt$(CHIPSET)sta-objs += \
+	../../os/linux/rt_pci_rbus.o\
+	../../os/linux/rt_rbus_pci_util.o\
+	../../os/linux/pci_main_dev.o
+endif
+endif
+#endif // RT35xx //
+
+
+
+ifeq ($(HAS_ATE),y)
+rt$(CHIPSET)sta-objs += ../../os/linux/rt_ate.o
+endif
+
+
+
+
+
+
+#ifdef CRDA_SUPPORT
+ifeq ($(OSABL),NO)
+ifeq ($(HAS_CFG80211_SUPPORT),y)
+rt$(CHIPSET)sta-objs += \
+	../../os/linux/cfg80211.o
+endif
+endif
+#endif // CRDA_SUPPORT //
+
+#endif // CONFIG_STA_SUPPORT //
+
+
+clean:
+	rm -f ../../common/*.o
+	rm -f ../../common/.*.{cmd,flags,d}
+	rm -f ../../os/linux/*.{o,ko,mod.{o,c}}
+	rm -f ../../os/linux/.*.{cmd,flags,d}
+	rm -fr ../../os/linux/.tmp_versions
+	rm -f ../../os/linux/Module.symvers
+	rm -f ../../os/linux/Module.markers
+	rm -f ../../os/linux/modules.order
+	rm -f ../../chips/*.o
+	rm -f ../../chips/.*.{cmd,flags,d}
+	rm -f ../../sta/*.o
+	rm -f ../../sta/.*.{cmd,flags,d}
+
+install:
+	rm -rf $(DAT_PATH)
+	#$(shell [ ! -f /etc/Wireless ] && mkdir /etc/Wireless)
+	#mkdir $(DAT_PATH)
+	$(shell [ ! -f /etc/Wireless ] && mkdir -p /etc/Wireless)
+	mkdir -p $(DAT_PATH)
+	cp $(RT28xx_DIR)/$(DAT_FILE_NAME) $(DAT_PATH)/.
+	install -d $(LINUX_SRC_MODULE)
+	install -m 644 -c $(addsuffix .ko,$(MOD_NAME)) $(LINUX_SRC_MODULE)
+	/sbin/depmod -a ${shell uname -r}
+
+uninstall:
+#	rm -rf $(DAT_PATH)
+	rm -rf $(addprefix $(LINUX_SRC_MODULE),$(addsuffix .ko,$(MOD_NAME)))
+	/sbin/depmod -a ${shell uname -r}
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/cfg80211.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/cfg80211.c
new file mode 100644
index 000000000..afceeb00e
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/cfg80211.c
@@ -0,0 +1,2814 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************/
+
+/****************************************************************************
+
+	Abstract:
+
+	All related CRDA (Central Regulatory Domain Agent) function body.
+
+	History:
+		1. 2009/09/17	Sample Lin
+			(1) Init version.
+		2. 2009/10/27	Sample Lin
+			(1) Do not use ieee80211_register_hw() to create virtual interface.
+				Use wiphy_register() to register nl80211 command handlers.
+			(2) Support iw utility.
+		3. 2009/11/03	Sample Lin
+			(1) Change name MAC80211 to CFG80211.
+			(2) Modify CFG80211_OpsSetChannel().
+			(3) Move CFG80211_Register()/CFG80211_UnRegister() to open/close.
+		4. 2009/12/16	Sample Lin
+			(1) Patch for Linux 2.6.32.
+			(2) Add more supported functions in CFG80211_Ops.
+
+	Note:
+		The feature is supported only in "LINUX" 2.6.28 ~ 2.6.32.
+
+***************************************************************************/
+
+#include "rt_config.h"
+
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,28))
+#ifdef RT_CFG80211_SUPPORT
+
+#define RT_CFG80211_DEBUG /* debug use */
+#define CFG80211CB			((CFG80211_CB *)(pAd->pCfg80211_CB))
+
+
+#ifdef RT_CFG80211_DEBUG
+#define CFG80211DBG(__Flg, __pMsg)		DBGPRINT(__Flg, __pMsg)
+#else
+#define CFG80211DBG(__Flg, __pMsg)
+#endif // RT_CFG80211_DEBUG //
+
+/* 1 ~ 14 */
+#define CFG80211_NUM_OF_CHAN_2GHZ			14
+
+/* 36 ~ 64, 100 ~ 136, 140 ~ 161 */
+#define CFG80211_NUM_OF_CHAN_5GHZ			\
+							(sizeof(Cfg80211_Chan)-CFG80211_NUM_OF_CHAN_2GHZ)
+
+/*
+	Array of bitrates the hardware can operate with
+	in this band. Must be sorted to give a valid "supported
+	rates" IE, i.e. CCK rates first, then OFDM.
+
+	For HT, assign MCS in another structure, ieee80211_sta_ht_cap.
+*/
+const struct ieee80211_rate Cfg80211_SupRate[12] = {
+	{
+		.flags = IEEE80211_RATE_SHORT_PREAMBLE,
+		.bitrate = 10,
+		.hw_value = 0,
+		.hw_value_short = 0,
+	},
+	{
+		.flags = IEEE80211_RATE_SHORT_PREAMBLE,
+		.bitrate = 20,
+		.hw_value = 1,
+		.hw_value_short = 1,
+	},
+	{
+		.flags = IEEE80211_RATE_SHORT_PREAMBLE,
+		.bitrate = 55,
+		.hw_value = 2,
+		.hw_value_short = 2,
+	},
+	{
+		.flags = IEEE80211_RATE_SHORT_PREAMBLE,
+		.bitrate = 110,
+		.hw_value = 3,
+		.hw_value_short = 3,
+	},
+	{
+		.flags = 0,
+		.bitrate = 60,
+		.hw_value = 4,
+		.hw_value_short = 4,
+	},
+	{
+		.flags = 0,
+		.bitrate = 90,
+		.hw_value = 5,
+		.hw_value_short = 5,
+	},
+	{
+		.flags = 0,
+		.bitrate = 120,
+		.hw_value = 6,
+		.hw_value_short = 6,
+	},
+	{
+		.flags = 0,
+		.bitrate = 180,
+		.hw_value = 7,
+		.hw_value_short = 7,
+	},
+	{
+		.flags = 0,
+		.bitrate = 240,
+		.hw_value = 8,
+		.hw_value_short = 8,
+	},
+	{
+		.flags = 0,
+		.bitrate = 360,
+		.hw_value = 9,
+		.hw_value_short = 9,
+	},
+	{
+		.flags = 0,
+		.bitrate = 480,
+		.hw_value = 10,
+		.hw_value_short = 10,
+	},
+	{
+		.flags = 0,
+		.bitrate = 540,
+		.hw_value = 11,
+		.hw_value_short = 11,
+	},
+};
+
+/* all available channels */
+static const UCHAR Cfg80211_Chan[] = {
+	1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+
+	/* 802.11 UNI / HyperLan 2 */
+	36, 38, 40, 44, 46, 48, 52, 54, 56, 60, 62, 64,
+
+	/* 802.11 HyperLan 2 */
+	100, 104, 108, 112, 116, 118, 120, 124, 126, 128, 132, 134, 136,
+
+	/* 802.11 UNII */
+	140, 149, 151, 153, 157, 159, 161, 165, 167, 169, 171, 173,
+
+	/* Japan */
+	184, 188, 192, 196, 208, 212, 216,
+};
+
+
+static const UINT32 CipherSuites[] = {
+	WLAN_CIPHER_SUITE_WEP40,
+	WLAN_CIPHER_SUITE_WEP104,
+	WLAN_CIPHER_SUITE_TKIP,
+	WLAN_CIPHER_SUITE_CCMP,
+};
+
+
+typedef struct __CFG80211_CB
+{
+	/* we can change channel/rate information on the fly so we backup them */
+	struct ieee80211_supported_band Cfg80211_bands[IEEE80211_NUM_BANDS];
+	struct ieee80211_channel *pCfg80211_Channels;
+	struct ieee80211_rate *pCfg80211_Rates;
+
+	/* used in wiphy_unregister */
+	struct wireless_dev *pCfg80211_Wdev;
+
+	/* used in scan end */
+	struct cfg80211_scan_request *pCfg80211_ScanReq;
+
+	/* monitor filter */
+	UINT32 MonFilterFlag;
+} CFG80211_CB;
+
+/*
+	The driver's regulatory notification callback.
+*/
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30))
+static INT32 CFG80211_RegNotifier(
+	IN struct wiphy					*pWiphy,
+	IN struct regulatory_request	*pRequest);
+#else
+static INT32 CFG80211_RegNotifier(
+	IN struct wiphy					*pWiphy,
+	IN enum reg_set_by				Request);
+#endif // LINUX_VERSION_CODE //
+
+/*
+	Initialize wireless channel in 2.4GHZ and 5GHZ.
+*/
+static BOOLEAN CFG80211_SupBandInit(
+	IN PRTMP_ADAPTER 				pAd,
+	IN struct wiphy					*pWiphy,
+	IN struct ieee80211_channel		*pChannels,
+	IN struct ieee80211_rate		*pRates);
+
+
+
+
+/* =========================== Private Function ============================== */
+
+/* get RALINK pAd control block in 80211 Ops */
+#define MAC80211_PAD_GET(__pAd, __pWiphy)							\
+	{																\
+		ULONG *__pPriv;												\
+		__pPriv = (ULONG *)(wiphy_priv(__pWiphy));					\
+		__pAd = (PRTMP_ADAPTER)(*__pPriv);							\
+		if (__pAd == NULL)											\
+		{															\
+			DBGPRINT(RT_DEBUG_ERROR,								\
+					("80211> %s but pAd = NULL!", __FUNCTION__));	\
+			return -EINVAL;											\
+		}															\
+	}
+
+/*
+========================================================================
+Routine Description:
+	Set channel.
+
+Arguments:
+	pWiphy			- Wireless hardware description
+	pChan			- Channel information
+	ChannelType		- Channel type
+
+Return Value:
+	0				- success
+	-x				- fail
+
+Note:
+	For iw utility: set channel, set freq
+
+	enum nl80211_channel_type {
+		NL80211_CHAN_NO_HT,
+		NL80211_CHAN_HT20,
+		NL80211_CHAN_HT40MINUS,
+		NL80211_CHAN_HT40PLUS
+	};
+========================================================================
+*/
+static int CFG80211_OpsSetChannel(
+	IN struct wiphy					*pWiphy,
+	IN struct ieee80211_channel		*pChan,
+	IN enum nl80211_channel_type	ChannelType)
+{
+	PRTMP_ADAPTER pAd;
+	UINT32 ChanId;
+	STRING ChStr[5] = { 0 };
+#ifdef DOT11_N_SUPPORT
+	UCHAR BW_Old;
+	BOOLEAN FlgIsChanged;
+#endif // DOT11_N_SUPPORT //
+
+
+	CFG80211DBG(RT_DEBUG_ERROR, ("80211> CFG80211_OpsSetChannel ==>\n"));
+	MAC80211_PAD_GET(pAd, pWiphy);
+
+	/* get channel number */
+	ChanId = ieee80211_frequency_to_channel(pChan->center_freq);
+	CFG80211DBG(RT_DEBUG_ERROR, ("80211> Channel = %d\n", ChanId));
+	CFG80211DBG(RT_DEBUG_ERROR, ("80211> ChannelType = %d\n", ChannelType));
+
+#ifdef DOT11_N_SUPPORT
+	if (CFG80211CB->pCfg80211_Wdev->iftype != NL80211_IFTYPE_MONITOR)
+	{
+		/* get channel BW */
+		FlgIsChanged = FALSE;
+		BW_Old = pAd->CommonCfg.RegTransmitSetting.field.BW;
+	
+		/* set to new channel BW */
+		if (ChannelType == NL80211_CHAN_HT20)
+		{
+			pAd->CommonCfg.RegTransmitSetting.field.BW = BW_20;
+			FlgIsChanged = TRUE;
+		}
+		else if ((ChannelType == NL80211_CHAN_HT40MINUS) ||
+				(ChannelType == NL80211_CHAN_HT40PLUS))
+		{
+			/* not support NL80211_CHAN_HT40MINUS or NL80211_CHAN_HT40PLUS */
+			/* i.e. primary channel = 36, secondary channel must be 40 */
+			pAd->CommonCfg.RegTransmitSetting.field.BW = BW_40;
+			FlgIsChanged = TRUE;
+		} /* End of if */
+	
+		CFG80211DBG(RT_DEBUG_ERROR, ("80211> New BW = %d\n",
+					pAd->CommonCfg.RegTransmitSetting.field.BW));
+	
+		/* change HT/non-HT mode (do NOT change wireless mode here) */
+		if (((ChannelType == NL80211_CHAN_NO_HT) &&
+			(pAd->CommonCfg.HT_Disable == 0)) ||
+			((ChannelType != NL80211_CHAN_NO_HT) &&
+			(pAd->CommonCfg.HT_Disable == 1)))
+		{
+			if (ChannelType == NL80211_CHAN_NO_HT)
+				pAd->CommonCfg.HT_Disable = 1;
+			else
+				pAd->CommonCfg.HT_Disable = 0;
+			/* End of if */
+	
+			FlgIsChanged = TRUE;
+			CFG80211DBG(RT_DEBUG_ERROR, ("80211> HT Disable = %d\n",
+						pAd->CommonCfg.HT_Disable));
+		} /* End of if */
+	}
+	else
+	{
+		/* for monitor mode */
+		FlgIsChanged = TRUE;
+		pAd->CommonCfg.HT_Disable = 0;
+		pAd->CommonCfg.RegTransmitSetting.field.BW = BW_40;
+	} /* End of if */
+
+	if (FlgIsChanged == TRUE)
+		SetCommonHT(pAd);
+	/* End of if */
+#endif // DOT11_N_SUPPORT //
+
+	/* switch to the channel */
+	sprintf(ChStr, "%d", ChanId);
+	if (Set_Channel_Proc(pAd, ChStr) == FALSE)
+	{
+		CFG80211DBG(RT_DEBUG_ERROR, ("80211> Change channel fail!\n"));
+	} /* End of if */
+
+#ifdef CONFIG_STA_SUPPORT
+#ifdef DOT11_N_SUPPORT
+	if ((CFG80211CB->pCfg80211_Wdev->iftype == NL80211_IFTYPE_STATION) &&
+		(FlgIsChanged == TRUE))
+	{
+		/*
+			1. Station mode;
+			2. New BW settings is 20MHz but current BW is not 20MHz;
+			3. New BW settings is 40MHz but current BW is 20MHz;
+
+			Re-connect to the AP due to BW 20/40 or HT/non-HT change.
+		*/
+		Set_SSID_Proc(pAd, (PSTRING)pAd->CommonCfg.Ssid);
+	} /* End of if */
+#endif // DOT11_N_SUPPORT //
+
+	if (CFG80211CB->pCfg80211_Wdev->iftype == NL80211_IFTYPE_ADHOC)
+	{
+		/* update IBSS beacon */
+		MlmeUpdateTxRates(pAd, FALSE, 0);
+		MakeIbssBeacon(pAd);
+		AsicEnableIbssSync(pAd);
+
+		Set_SSID_Proc(pAd, (PSTRING)pAd->CommonCfg.Ssid);
+	} /* End of if */
+
+	if (CFG80211CB->pCfg80211_Wdev->iftype == NL80211_IFTYPE_MONITOR)
+	{
+		/* reset monitor mode in the new channel */
+		Set_NetworkType_Proc(pAd, "Monitor");
+		RTMP_IO_WRITE32(pAd, RX_FILTR_CFG, CFG80211CB->MonFilterFlag);
+	} /* End of if */
+#endif // CONFIG_STA_SUPPORT //
+
+	return 0;
+} /* End of CFG80211_OpsSetChannel */
+
+
+/*
+========================================================================
+Routine Description:
+	Change type/configuration of virtual interface.
+
+Arguments:
+	pWiphy			- Wireless hardware description
+	IfIndex			- Interface index
+	Type			- Interface type, managed/adhoc/ap/station, etc.
+	pFlags			- Monitor flags
+	pParams			- Mesh parameters
+
+Return Value:
+	0				- success
+	-x				- fail
+
+Note:
+	For iw utility: set type, set monitor
+========================================================================
+*/
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32))
+static int CFG80211_OpsChgVirtualInf(
+	IN struct wiphy					*pWiphy,
+	IN struct net_device			*pNetDevIn,
+	IN enum nl80211_iftype			Type,
+	IN u32							*pFlags,
+	struct vif_params				*pParams)
+#else
+static int CFG80211_OpsChgVirtualInf(
+	IN struct wiphy					*pWiphy,
+	IN int							IfIndex,
+	IN enum nl80211_iftype			Type,
+	IN u32							*pFlags,
+	struct vif_params				*pParams)
+#endif // LINUX_VERSION_CODE //
+{
+	PRTMP_ADAPTER pAd;
+	struct net_device *pNetDev;
+
+
+	CFG80211DBG(RT_DEBUG_ERROR, ("80211> CFG80211_OpsChgVirtualInf ==>\n"));
+	MAC80211_PAD_GET(pAd, pWiphy);
+
+	CFG80211DBG(RT_DEBUG_ERROR, ("80211> Type = %d\n", Type));
+
+	/* sanity check */
+#ifdef CONFIG_STA_SUPPORT
+	if ((Type != NL80211_IFTYPE_ADHOC) &&
+		(Type != NL80211_IFTYPE_STATION) &&
+		(Type != NL80211_IFTYPE_MONITOR))
+#endif // CONFIG_STA_SUPPORT //
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("80211> Wrong interface type %d!\n", Type));
+		return -EINVAL;
+	} /* End of if */
+
+	/* update interface type */
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32))
+	pNetDev = pNetDevIn;
+#else
+	pNetDev = __dev_get_by_index(&init_net, IfIndex);
+#endif // LINUX_VERSION_CODE //
+
+	if (pNetDev == NULL)
+		return -ENODEV;
+	/* End of if */
+
+	pNetDev->ieee80211_ptr->iftype = Type;
+
+	/* change type */
+#ifdef CONFIG_STA_SUPPORT
+	if (Type == NL80211_IFTYPE_ADHOC)
+		Set_NetworkType_Proc(pAd, "Adhoc");
+	else if (Type == NL80211_IFTYPE_STATION)
+		Set_NetworkType_Proc(pAd, "Infra");
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,4,20))
+	else if (Type == NL80211_IFTYPE_MONITOR)
+	{
+		/* set packet filter */
+		Set_NetworkType_Proc(pAd, "Monitor");
+
+		if (pFlags != NULL)
+		{
+			UINT32 Filter;
+
+
+			RTMP_IO_READ32(pAd, RX_FILTR_CFG, &Filter);
+
+			if (((*pFlags) & NL80211_MNTR_FLAG_FCSFAIL) == NL80211_MNTR_FLAG_FCSFAIL)
+				Filter = Filter & (~0x01);
+			else
+				Filter = Filter | 0x01;
+			/* End of if */
+	
+			if (((*pFlags) & NL80211_MNTR_FLAG_FCSFAIL) == NL80211_MNTR_FLAG_PLCPFAIL)
+				Filter = Filter & (~0x02);
+			else
+				Filter = Filter | 0x02;
+			/* End of if */
+	
+			if (((*pFlags) & NL80211_MNTR_FLAG_CONTROL) == NL80211_MNTR_FLAG_CONTROL)
+				Filter = Filter & (~0xFF00);
+			else
+				Filter = Filter | 0xFF00;
+			/* End of if */
+	
+			if (((*pFlags) & NL80211_MNTR_FLAG_CONTROL) == NL80211_MNTR_FLAG_OTHER_BSS)
+				Filter = Filter & (~0x08);
+			else
+				Filter = Filter | 0x08;
+			/* End of if */
+
+			RTMP_IO_WRITE32(pAd, RX_FILTR_CFG, Filter);
+			CFG80211CB->MonFilterFlag = Filter;
+		} /* End of if */
+
+		return 0; /* not need to set SSID */
+	} /* End of if */
+#endif // LINUX_VERSION_CODE //
+
+	pAd->StaCfg.bAutoReconnect = TRUE;
+
+	CFG80211DBG(RT_DEBUG_ERROR, ("80211> SSID = %s\n", pAd->CommonCfg.Ssid));
+	Set_SSID_Proc(pAd, (PSTRING)pAd->CommonCfg.Ssid);
+#endif // CONFIG_STA_SUPPORT //
+
+	return 0;
+} /* End of CFG80211_OpsChgVirtualInf */
+
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30))
+#ifdef CONFIG_STA_SUPPORT
+/*
+========================================================================
+Routine Description:
+	Request to do a scan. If returning zero, the scan request is given
+	the driver, and will be valid until passed to cfg80211_scan_done().
+	For scan results, call cfg80211_inform_bss(); you can call this outside
+	the scan/scan_done bracket too.
+
+Arguments:
+	pWiphy			- Wireless hardware description
+	pNdev			- Network device interface
+	pRequest		- Scan request
+
+Return Value:
+	0				- success
+	-x				- fail
+
+Note:
+	For iw utility: scan
+
+	struct cfg80211_scan_request {
+		struct cfg80211_ssid *ssids;
+		int n_ssids;
+		struct ieee80211_channel **channels;
+		u32 n_channels;
+		const u8 *ie;
+		size_t ie_len;
+
+	 * @ssids: SSIDs to scan for (active scan only)
+	 * @n_ssids: number of SSIDs
+	 * @channels: channels to scan on.
+	 * @n_channels: number of channels for each band
+	 * @ie: optional information element(s) to add into Probe Request or %NULL
+	 * @ie_len: length of ie in octets
+========================================================================
+*/
+static int CFG80211_OpsScan(
+	IN struct wiphy					*pWiphy,
+	IN struct net_device			*pNdev,
+	IN struct cfg80211_scan_request *pRequest)
+{
+	PRTMP_ADAPTER pAd;
+
+
+	CFG80211DBG(RT_DEBUG_ERROR, ("80211> CFG80211_OpsScan ==>\n"));
+	MAC80211_PAD_GET(pAd, pWiphy);
+
+	/* sanity check */
+	if (!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_IN_USE))
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("80211> Network is down!\n"));
+		return -ENETDOWN;
+	} /* End of if */
+
+	if ((pNdev->ieee80211_ptr->iftype != NL80211_IFTYPE_STATION) &&
+		(pNdev->ieee80211_ptr->iftype != NL80211_IFTYPE_ADHOC))
+	{
+		return -EOPNOTSUPP;
+	} /* End of if */
+
+	if (pAd->FlgCfg80211Scanning == TRUE)
+		return -EBUSY; /* scanning */
+	/* End of if */
+
+	/* do scan */
+	pAd->FlgCfg80211Scanning = TRUE;
+	CFG80211CB->pCfg80211_ScanReq = pRequest; /* used in scan end */
+
+	rt_ioctl_siwscan(pNdev, NULL, NULL, NULL);
+	return 0;
+} /* End of CFG80211_OpsScan */
+#endif // CONFIG_STA_SUPPORT //
+#endif // LINUX_VERSION_CODE //
+
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,31))
+#ifdef CONFIG_STA_SUPPORT
+/*
+========================================================================
+Routine Description:
+	Join the specified IBSS (or create if necessary). Once done, call
+	cfg80211_ibss_joined(), also call that function when changing BSSID due
+	to a merge.
+
+Arguments:
+	pWiphy			- Wireless hardware description
+	pNdev			- Network device interface
+	pParams			- IBSS parameters
+
+Return Value:
+	0				- success
+	-x				- fail
+
+Note:
+	For iw utility: ibss join
+
+	No fixed-freq and fixed-bssid support.
+========================================================================
+*/
+static int CFG80211_OpsJoinIbss(
+	IN struct wiphy					*pWiphy,
+	IN struct net_device			*pNdev,
+	IN struct cfg80211_ibss_params	*pParams)
+{
+	PRTMP_ADAPTER pAd;
+
+	CFG80211DBG(RT_DEBUG_ERROR, ("80211> CFG80211_OpsJoinIbss ==>\n"));
+	MAC80211_PAD_GET(pAd, pWiphy);
+
+	CFG80211DBG(RT_DEBUG_ERROR, ("80211> SSID = %s\n",
+				pParams->ssid));
+	CFG80211DBG(RT_DEBUG_ERROR, ("80211> Beacon Interval = %d\n",
+				pParams->beacon_interval));
+
+	pAd->StaCfg.bAutoReconnect = TRUE;
+
+	pAd->CommonCfg.BeaconPeriod = pParams->beacon_interval;
+	Set_SSID_Proc(pAd, (PSTRING)pParams->ssid);
+
+	return 0;
+} /* End of CFG80211_OpsJoinIbss */
+
+
+/*
+========================================================================
+Routine Description:
+	Leave the IBSS.
+
+Arguments:
+	pWiphy			- Wireless hardware description
+	pNdev			- Network device interface
+
+Return Value:
+	0				- success
+	-x				- fail
+
+Note:
+	For iw utility: ibss leave
+========================================================================
+*/
+static int CFG80211_OpsLeaveIbss(
+	IN struct wiphy					*pWiphy,
+	IN struct net_device			*pNdev)
+{
+	PRTMP_ADAPTER pAd;
+
+	CFG80211DBG(RT_DEBUG_ERROR, ("80211> CFG80211_OpsLeaveIbss ==>\n"));
+	MAC80211_PAD_GET(pAd, pWiphy);
+
+	pAd->StaCfg.bAutoReconnect = FALSE;
+	LinkDown(pAd, FALSE);
+
+	return 0;
+} /* End of CFG80211_OpsLeaveIbss */
+#endif // CONFIG_STA_SUPPORT //
+#endif // LINUX_VERSION_CODE //
+
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32))
+/*
+========================================================================
+Routine Description:
+	Set the transmit power according to the parameters.
+
+Arguments:
+	pWiphy			- Wireless hardware description
+	Type			- 
+	dBm				- dBm
+
+Return Value:
+	0				- success
+	-x				- fail
+
+Note:
+	Type -
+	TX_POWER_AUTOMATIC: the dbm parameter is ignored
+	TX_POWER_LIMITED: limit TX power by the dbm parameter
+	TX_POWER_FIXED: fix TX power to the dbm parameter
+========================================================================
+*/
+static int CFG80211_TxPwrSet(
+	IN struct wiphy						*pWiphy,
+	IN enum tx_power_setting			Type,
+	IN int								dBm)
+{
+	return -EOPNOTSUPP;
+} /* End of CFG80211_TxPwrSet */
+
+
+/*
+========================================================================
+Routine Description:
+	Store the current TX power into the dbm variable.
+
+Arguments:
+	pWiphy			- Wireless hardware description
+	pdBm			- dBm
+
+Return Value:
+	0				- success
+	-x				- fail
+
+Note:
+========================================================================
+*/
+static int CFG80211_TxPwrGet(
+	IN struct wiphy						*pWiphy,
+	IN int								*pdBm)
+{
+	return -EOPNOTSUPP;
+} /* End of CFG80211_TxPwrGet */
+
+
+/*
+========================================================================
+Routine Description:
+	Power management.
+
+Arguments:
+	pWiphy			- Wireless hardware description
+	pNdev			- 
+	FlgIsEnabled	-
+	Timeout			-
+
+Return Value:
+	0				- success
+	-x				- fail
+
+Note:
+========================================================================
+*/
+static int CFG80211_PwrMgmt(
+	IN struct wiphy						*pWiphy,
+	IN struct net_device				*pNdev,
+	IN bool								FlgIsEnabled,
+	IN int								Timeout)
+{
+	return -EOPNOTSUPP;
+} /* End of CFG80211_PwrMgmt */
+
+
+/*
+========================================================================
+Routine Description:
+	Get information for a specific station.
+
+Arguments:
+	pWiphy			- Wireless hardware description
+	pNdev			-
+	pMac			- STA MAC
+	pSinfo			- STA INFO
+
+Return Value:
+	0				- success
+	-x				- fail
+
+Note:
+========================================================================
+*/
+static int CFG80211_StaGet(
+	IN struct wiphy						*pWiphy,
+	IN struct net_device				*pNdev,
+	IN UINT8							*pMac,
+	IN struct station_info				*pSinfo)
+{
+	PRTMP_ADAPTER pAd;
+
+
+	CFG80211DBG(RT_DEBUG_ERROR, ("80211> CFG80211_StaGet ==>\n"));
+	MAC80211_PAD_GET(pAd, pWiphy);
+
+	memset(pSinfo, 0, sizeof(*pSinfo));
+
+
+#ifdef CONFIG_STA_SUPPORT
+{
+	HTTRANSMIT_SETTING PhyInfo;
+	ULONG DataRate = 0;
+	UINT32 RSSI;
+
+
+	/* fill tx rate */
+    if ((pAd->CommonCfg.PhyMode <= PHY_11G) ||
+		(pAd->MacTab.Content[BSSID_WCID].HTPhyMode.field.MODE <= MODE_OFDM))
+	{
+		PhyInfo.word = pAd->StaCfg.HTPhyMode.word;
+	}
+    else
+		PhyInfo.word = pAd->MacTab.Content[BSSID_WCID].HTPhyMode.word;
+	/* End of if */
+
+	getRate(PhyInfo, &DataRate);
+
+	if ((PhyInfo.field.MODE == MODE_HTMIX) ||
+		(PhyInfo.field.MODE == MODE_HTGREENFIELD))
+	{
+		pSinfo->txrate.flags = RATE_INFO_FLAGS_MCS;
+		if (PhyInfo.field.BW)
+			pSinfo->txrate.flags |= RATE_INFO_FLAGS_40_MHZ_WIDTH;
+		/* End of if */
+		if (PhyInfo.field.ShortGI)
+			pSinfo->txrate.flags |= RATE_INFO_FLAGS_SHORT_GI;
+		/* End of if */
+
+		pSinfo->txrate.mcs = PhyInfo.field.MCS;
+	}
+	else
+	{
+		pSinfo->txrate.legacy = DataRate*10; /* unit: 100kbps */
+	} /* End of if */
+
+	pSinfo->filled |= STATION_INFO_TX_BITRATE;
+
+	/* fill signal */
+	RSSI = (pAd->StaCfg.RssiSample.AvgRssi0 +
+			pAd->StaCfg.RssiSample.AvgRssi1 +
+			pAd->StaCfg.RssiSample.AvgRssi2) / 3;
+	pSinfo->signal = le32_to_cpu(RSSI);
+	pSinfo->filled |= STATION_INFO_SIGNAL;
+}
+#endif // CONFIG_STA_SUPPORT //
+
+	return 0;
+} /* End of CFG80211_StaGet */
+
+
+/*
+========================================================================
+Routine Description:
+	List all stations known, e.g. the AP on managed interfaces.
+
+Arguments:
+	pWiphy			- Wireless hardware description
+	pNdev			-
+	Idx				- 
+	pMac			-
+	pSinfo			-
+
+Return Value:
+	0				- success
+	-x				- fail
+
+Note:
+========================================================================
+*/
+static int CFG80211_StaDump(
+	IN struct wiphy						*pWiphy,
+	IN struct net_device				*pNdev,
+	IN int								Idx,
+	IN UINT8							*pMac,
+	IN struct station_info				*pSinfo)
+{
+	PRTMP_ADAPTER pAd;
+
+
+	if (Idx != 0)
+		return -ENOENT;
+	/* End of if */
+
+	CFG80211DBG(RT_DEBUG_ERROR, ("80211> CFG80211_StaDump ==>\n"));
+	MAC80211_PAD_GET(pAd, pWiphy);
+
+#ifdef CONFIG_STA_SUPPORT
+	if (pAd->StaCfg.PortSecured == WPA_802_1X_PORT_NOT_SECURED)
+	{
+		memcpy(pMac, pAd->MlmeAux.Bssid, 6);
+		return CFG80211_StaGet(pWiphy, pNdev, pMac, pSinfo);
+	}
+	else
+		return -EBUSY;
+	/* End of if */
+#endif // CONFIG_STA_SUPPORT //
+
+	return -EOPNOTSUPP;
+} /* End of CFG80211_StaDump */
+
+
+/*
+========================================================================
+Routine Description:
+	Notify that wiphy parameters have changed.
+
+Arguments:
+	pWiphy			- Wireless hardware description
+	Changed			-
+
+Return Value:
+	0				- success
+	-x				- fail
+
+Note:
+========================================================================
+*/
+static int CFG80211_WiphyParamsSet(
+	IN struct wiphy						*pWiphy,
+	IN UINT32							Changed)
+{
+	return -EOPNOTSUPP;
+} /* End of CFG80211_WiphyParamsSet */
+
+
+/*
+========================================================================
+Routine Description:
+	Add a key with the given parameters.
+
+Arguments:
+	pWiphy			- Wireless hardware description
+	pNdev			-
+	KeyIdx			-
+	pMacAddr		-
+	pParams			-
+
+Return Value:
+	0				- success
+	-x				- fail
+
+Note:
+	pMacAddr will be NULL when adding a group key.
+========================================================================
+*/
+static int CFG80211_KeyAdd(
+	IN struct wiphy						*pWiphy,
+	IN struct net_device				*pNdev,
+	IN UINT8							KeyIdx,
+	IN const UINT8						*pMacAddr,
+	IN struct key_params				*pParams)
+{
+	PRTMP_ADAPTER pAd;
+	UCHAR KeyBuf[50];
+
+
+	CFG80211DBG(RT_DEBUG_ERROR, ("80211> CFG80211_KeyAdd ==>\n"));
+	MAC80211_PAD_GET(pAd, pWiphy);
+
+#ifdef RT_CFG80211_DEBUG
+	hex_dump("KeyBuf=", (UINT8 *)pParams->key, pParams->key_len);
+#endif // RT_CFG80211_DEBUG //
+
+	CFG80211DBG(RT_DEBUG_ERROR, ("80211> KeyIdx = %d\n", KeyIdx));
+
+	if (pParams->key_len >= sizeof(KeyBuf))
+		return -EINVAL;
+	/* End of if */
+
+	memcpy(KeyBuf, pParams->key, pParams->key_len);
+	KeyBuf[pParams->key_len] = 0x00;
+
+#ifdef CONFIG_STA_SUPPORT
+	switch(pParams->cipher)
+	{
+		case WLAN_CIPHER_SUITE_WEP40:
+		case WLAN_CIPHER_SUITE_WEP104:
+			switch(KeyIdx+1)
+			{
+				case 1:
+				default:
+					Set_Key1_Proc(pAd, (PSTRING)KeyBuf);
+					break;
+	
+				case 2:
+					Set_Key2_Proc(pAd, (PSTRING)KeyBuf);
+					break;
+	
+				case 3:
+					Set_Key3_Proc(pAd, (PSTRING)KeyBuf);
+					break;
+	
+				case 4:
+					Set_Key4_Proc(pAd, (PSTRING)KeyBuf);
+					break;
+			} /* End of switch */
+			break;
+
+		case WLAN_CIPHER_SUITE_TKIP:
+		case WLAN_CIPHER_SUITE_CCMP:
+			Set_WPAPSK_Proc(pAd, (PSTRING)KeyBuf);
+			break;
+
+		default:
+			return -ENOTSUPP;
+	} /* End of switch */
+
+	return 0;
+#endif // CONFIG_STA_SUPPORT //
+
+} /* End of CFG80211_KeyAdd */
+
+
+/*
+========================================================================
+Routine Description:
+	Get information about the key with the given parameters.
+
+Arguments:
+	pWiphy			- Wireless hardware description
+	pNdev			-
+	KeyIdx			-
+	pMacAddr		-
+	pCookie			-
+	pCallback		-
+
+Return Value:
+	0				- success
+	-x				- fail
+
+Note:
+	pMacAddr will be NULL when requesting information for a group key.
+
+	All pointers given to the pCallback function need not be valid after
+	it returns.
+
+	This function should return an error if it is not possible to
+	retrieve the key, -ENOENT if it doesn't exist.
+========================================================================
+*/
+static int CFG80211_KeyGet(
+	IN struct wiphy						*pWiphy,
+	IN struct net_device				*pNdev,
+	IN UINT8							KeyIdx,
+	IN const UINT8						*pMacAddr,
+	IN void								*pCookie,
+	IN void								(*pCallback)(void *cookie,
+												 struct key_params *))
+{
+
+	return -ENOTSUPP;
+} /* End of CFG80211_KeyGet */
+
+
+/*
+========================================================================
+Routine Description:
+	Remove a key given the pMacAddr (NULL for a group key) and KeyIdx.
+
+Arguments:
+	pWiphy			- Wireless hardware description
+	pNdev			-
+	KeyIdx			-
+	pMacAddr		-
+
+Return Value:
+	0				- success
+	-x				- fail
+
+Note:
+	return -ENOENT if the key doesn't exist.
+========================================================================
+*/
+static int CFG80211_KeyDel(
+	IN struct wiphy						*pWiphy,
+	IN struct net_device				*pNdev,
+	IN UINT8							KeyIdx,
+	IN const UINT8						*pMacAddr)
+{
+	CFG80211DBG(RT_DEBUG_ERROR, ("80211> CFG80211_KeyDel ==>\n"));
+	return -ENOTSUPP;
+} /* End of CFG80211_KeyDel */
+
+
+/*
+========================================================================
+Routine Description:
+	Set the default key on an interface.
+
+Arguments:
+	pWiphy			- Wireless hardware description
+	pNdev			-
+	KeyIdx			-
+
+Return Value:
+	0				- success
+	-x				- fail
+
+Note:
+========================================================================
+*/
+static int CFG80211_KeyDefaultSet(
+	IN struct wiphy						*pWiphy,
+	IN struct net_device				*pNdev,
+	IN UINT8							KeyIdx)
+{
+	PRTMP_ADAPTER pAd;
+
+
+	CFG80211DBG(RT_DEBUG_ERROR, ("80211> CFG80211_KeyDefaultSet ==>\n"));
+	MAC80211_PAD_GET(pAd, pWiphy);
+
+	CFG80211DBG(RT_DEBUG_ERROR, ("80211> KeyIdx = %d\n", KeyIdx));
+
+#ifdef CONFIG_STA_SUPPORT
+	pAd->StaCfg.DefaultKeyId = KeyIdx; /* base 0 */
+#endif // CONFIG_STA_SUPPORT //
+	return 0;
+} /* End of CFG80211_KeyDefaultSet */
+
+
+#ifdef CONFIG_STA_SUPPORT
+/*
+========================================================================
+Routine Description:
+	Connect to the ESS with the specified parameters. When connected,
+	call cfg80211_connect_result() with status code %WLAN_STATUS_SUCCESS.
+	If the connection fails for some reason, call cfg80211_connect_result()
+	with the status from the AP.
+
+Arguments:
+	pWiphy			- Wireless hardware description
+	pNdev			- Network device interface
+	pSme			- 
+
+Return Value:
+	0				- success
+	-x				- fail
+
+Note:
+	For iw utility: connect
+
+	You must use "iw ra0 connect xxx", then "iw ra0 disconnect";
+	You can not use "iw ra0 connect xxx" twice without disconnect;
+	Or you will suffer "command failed: Operation already in progress (-114)".
+
+	You must support add_key and set_default_key function;
+	Or kernel will crash without any error message in linux 2.6.32.
+========================================================================
+*/
+static int CFG80211_Connect(
+	IN struct wiphy						*pWiphy,
+	IN struct net_device				*pNdev,
+	IN struct cfg80211_connect_params	*pSme)
+{
+	PRTMP_ADAPTER pAd;
+	struct ieee80211_channel *pChannel = pSme->channel;
+	UCHAR SSID[NDIS_802_11_LENGTH_SSID];
+	INT32 Pairwise = 0;
+	INT32 Groupwise = 0;
+	INT32 Keymgmt = 0;
+	INT32 WpaVersion = NL80211_WPA_VERSION_2;
+	INT32 Chan = -1, Idx, SSIDLen;
+
+
+	CFG80211DBG(RT_DEBUG_ERROR, ("80211> CFG80211_Connect ==>\n"));
+
+	/* init */
+	MAC80211_PAD_GET(pAd, pWiphy);
+
+	if (pChannel != NULL)
+		Chan = ieee80211_frequency_to_channel(pChannel->center_freq);
+
+	Groupwise = pSme->crypto.cipher_group;
+	for(Idx=0; Idx<pSme->crypto.n_ciphers_pairwise; Idx++)
+		Pairwise |= pSme->crypto.ciphers_pairwise[Idx];
+	/* End of for */
+
+	for(Idx=0; Idx<pSme->crypto.n_akm_suites; Idx++)
+		Keymgmt |= pSme->crypto.akm_suites[Idx];
+	/* End of for */
+
+	WpaVersion = pSme->crypto.wpa_versions;
+
+	/* change to infrastructure mode if we are in ADHOC mode */
+	Set_NetworkType_Proc(pAd, "Infra");
+
+	/* set authentication mode */
+	if (WpaVersion & NL80211_WPA_VERSION_2)
+	{
+		if (Keymgmt & WLAN_AKM_SUITE_8021X)
+			Set_AuthMode_Proc(pAd, "WPA2");
+		else
+			Set_AuthMode_Proc(pAd, "WPA2PSK");
+		/* End of if */
+	}
+	else if (WpaVersion & NL80211_WPA_VERSION_1)
+	{
+		if (Keymgmt & WLAN_AKM_SUITE_8021X)
+			Set_AuthMode_Proc(pAd, "WPA");
+		else
+			Set_AuthMode_Proc(pAd, "WPAPSK");
+		/* End of if */
+	}
+	else if (pSme->auth_type == NL80211_AUTHTYPE_SHARED_KEY)
+		Set_AuthMode_Proc(pAd, "SHARED");
+	else if (pSme->auth_type == NL80211_AUTHTYPE_OPEN_SYSTEM)
+		Set_AuthMode_Proc(pAd, "OPEN");
+	else
+		Set_AuthMode_Proc(pAd, "OPEN");
+	/* End of if */
+
+	CFG80211DBG(RT_DEBUG_ERROR,
+				("80211> SME %x, AuthMode = %d\n",
+				pSme->auth_type, pAd->StaCfg.AuthMode));
+
+	/* set encryption mode */
+	if (Pairwise & WLAN_CIPHER_SUITE_CCMP)
+		Set_EncrypType_Proc(pAd, "AES");
+	else if (Pairwise & WLAN_CIPHER_SUITE_TKIP)
+		Set_EncrypType_Proc(pAd, "TKIP");
+	else if ((Pairwise & WLAN_CIPHER_SUITE_WEP40) ||
+			(Pairwise & WLAN_CIPHER_SUITE_WEP104))
+	{
+		Set_EncrypType_Proc(pAd, "WEP");
+	}
+	else if (Groupwise & WLAN_CIPHER_SUITE_CCMP)
+		Set_EncrypType_Proc(pAd, "AES");
+	else if (Groupwise & WLAN_CIPHER_SUITE_TKIP)
+		Set_EncrypType_Proc(pAd, "TKIP");
+	else
+		Set_EncrypType_Proc(pAd, "NONE");
+	/* End of if */
+
+	CFG80211DBG(RT_DEBUG_ERROR,
+				("80211> EncrypType = %d\n", pAd->StaCfg.WepStatus));
+
+	/* set channel: STATION will auto-scan */
+
+	/* set WEP key */
+	if (pSme->key && (((Groupwise | Pairwise) & WLAN_CIPHER_SUITE_WEP40) ||
+		((Groupwise | Pairwise) & WLAN_CIPHER_SUITE_WEP104)))
+	{
+		UCHAR KeyBuf[50];
+
+		/* reset AuthMode and EncrypType */
+		Set_AuthMode_Proc(pAd, "SHARED");
+		Set_EncrypType_Proc(pAd, "WEP");
+
+		/* reset key */
+#ifdef RT_CFG80211_DEBUG
+		hex_dump("KeyBuf=", (UINT8 *)pSme->key, pSme->key_len);
+#endif // RT_CFG80211_DEBUG //
+
+		pAd->StaCfg.DefaultKeyId = pSme->key_idx; /* base 0 */
+		if (pSme->key_len >= sizeof(KeyBuf))
+			return -EINVAL;
+		/* End of if */
+		memcpy(KeyBuf, pSme->key, pSme->key_len);
+		KeyBuf[pSme->key_len] = 0x00;
+
+		CFG80211DBG(RT_DEBUG_ERROR,
+					("80211> pAd->StaCfg.DefaultKeyId = %d\n",
+					pAd->StaCfg.DefaultKeyId));
+
+		switch(pSme->key_idx)
+		{
+			case 1:
+			default:
+				Set_Key1_Proc(pAd, (PSTRING)KeyBuf);
+				break;
+
+			case 2:
+				Set_Key2_Proc(pAd, (PSTRING)KeyBuf);
+				break;
+
+			case 3:
+				Set_Key3_Proc(pAd, (PSTRING)KeyBuf);
+				break;
+
+			case 4:
+				Set_Key4_Proc(pAd, (PSTRING)KeyBuf);
+				break;
+		} /* End of switch */
+	} /* End of if */
+
+	/* TODO: We need to provide a command to set BSSID to associate a AP */
+
+	/* re-set SSID */
+	pAd->StaCfg.bAutoReconnect = TRUE;
+	pAd->FlgCfg80211Connecting = TRUE;
+
+	SSIDLen = pSme->ssid_len;
+	if (SSIDLen > NDIS_802_11_LENGTH_SSID)
+		SSIDLen = NDIS_802_11_LENGTH_SSID;
+	/* End of if */
+
+	memset(&SSID, 0, sizeof(SSID));
+	memcpy(SSID, pSme->ssid, SSIDLen);
+	Set_SSID_Proc(pAd, (PSTRING)SSID);
+
+	CFG80211DBG(RT_DEBUG_ERROR, ("80211> SSID = %s\n", SSID));
+	return 0;
+} /* End of CFG80211_Connect */
+
+
+/*
+========================================================================
+Routine Description:
+	Disconnect from the BSS/ESS.
+
+Arguments:
+	pWiphy			- Wireless hardware description
+	pNdev			- Network device interface
+	ReasonCode		- 
+
+Return Value:
+	0				- success
+	-x				- fail
+
+Note:
+	For iw utility: connect
+========================================================================
+*/
+static int CFG80211_Disconnect(
+	IN struct wiphy						*pWiphy,
+	IN struct net_device				*pNdev,
+	IN u16								ReasonCode)
+{
+	PRTMP_ADAPTER pAd;
+
+
+	CFG80211DBG(RT_DEBUG_ERROR, ("80211> CFG80211_Disconnect ==>\n"));
+	CFG80211DBG(RT_DEBUG_ERROR, ("80211> ReasonCode = %d\n", ReasonCode));
+
+	MAC80211_PAD_GET(pAd, pWiphy);
+
+	pAd->StaCfg.bAutoReconnect = FALSE;
+	pAd->FlgCfg80211Connecting = FALSE;
+	LinkDown(pAd, FALSE);
+	return 0;
+} /* End of CFG80211_Disconnect */
+#endif // CONFIG_STA_SUPPORT //
+#endif // LINUX_VERSION_CODE //
+
+
+static struct cfg80211_ops CFG80211_Ops = {
+	.set_channel			= CFG80211_OpsSetChannel,
+	.change_virtual_intf	= CFG80211_OpsChgVirtualInf,
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30))
+#ifdef CONFIG_STA_SUPPORT
+	.scan					= CFG80211_OpsScan,
+#endif // CONFIG_STA_SUPPORT //
+#endif // LINUX_VERSION_CODE //
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,31))
+#ifdef CONFIG_STA_SUPPORT
+	.join_ibss				= CFG80211_OpsJoinIbss,
+	.leave_ibss				= CFG80211_OpsLeaveIbss,
+#endif // CONFIG_STA_SUPPORT //
+#endif // LINUX_VERSION_CODE //
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32))
+	.set_tx_power			= CFG80211_TxPwrSet,
+	.get_tx_power			= CFG80211_TxPwrGet,
+	.set_power_mgmt			= CFG80211_PwrMgmt,
+	.get_station			= CFG80211_StaGet,
+	.dump_station			= CFG80211_StaDump,
+	.set_wiphy_params		= CFG80211_WiphyParamsSet,
+	.add_key				= CFG80211_KeyAdd,
+	.get_key				= CFG80211_KeyGet,
+	.del_key				= CFG80211_KeyDel,
+	.set_default_key		= CFG80211_KeyDefaultSet,
+#ifdef CONFIG_STA_SUPPORT
+	.connect				= CFG80211_Connect,
+	.disconnect				= CFG80211_Disconnect,
+#endif // CONFIG_STA_SUPPORT //
+#endif // LINUX_VERSION_CODE //
+};
+
+
+/*
+========================================================================
+Routine Description:
+	Allocate a wireless device.
+
+Arguments:
+	pAd				- WLAN control block pointer
+	pDev			- Generic device interface
+
+Return Value:
+	wireless device
+
+Note:
+========================================================================
+*/
+static struct wireless_dev *CFG80211_WdevAlloc(
+	IN PRTMP_ADAPTER 				pAd,
+	struct device					*pDev)
+{
+	struct wireless_dev *pWdev;
+	ULONG *pPriv;
+
+
+	/*
+	 * We're trying to have the following memory layout:
+	 *
+	 * +------------------------+
+	 * | struct wiphy			|
+	 * +------------------------+
+	 * | pAd pointer			|
+	 * +------------------------+
+	 */
+
+	pWdev = kzalloc(sizeof(struct wireless_dev), GFP_KERNEL);
+	if (pWdev == NULL)
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("80211> Wireless device allocation fail!\n"));
+		return NULL;
+	} /* End of if */
+
+	pWdev->wiphy = wiphy_new(&CFG80211_Ops, sizeof(ULONG *));
+	if (pWdev->wiphy == NULL)
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("80211> Wiphy device allocation fail!\n"));
+		goto LabelErrWiphyNew;
+	} /* End of if */
+
+	/* keep pAd pointer */
+	pPriv = (ULONG *)(wiphy_priv(pWdev->wiphy));
+	*pPriv = (ULONG)pAd;
+
+	set_wiphy_dev(pWdev->wiphy, pDev);
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30))
+	pWdev->wiphy->max_scan_ssids = MAX_LEN_OF_BSS_TABLE;
+#endif // KERNEL_VERSION //
+
+
+#ifdef CONFIG_STA_SUPPORT
+	pWdev->wiphy->interface_modes = BIT(NL80211_IFTYPE_STATION) |
+							       BIT(NL80211_IFTYPE_ADHOC) |
+							       BIT(NL80211_IFTYPE_MONITOR);
+#endif // CONFIG_STA_SUPPORT //
+	pWdev->wiphy->reg_notifier = CFG80211_RegNotifier;
+
+	/* init channel information */
+	CFG80211_SupBandInit(pAd, pWdev->wiphy, NULL, NULL);
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30))
+	/* CFG80211_SIGNAL_TYPE_MBM: signal strength in mBm (100*dBm) */
+	pWdev->wiphy->signal_type = CFG80211_SIGNAL_TYPE_MBM;
+#endif // KERNEL_VERSION //
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32))
+	pWdev->wiphy->cipher_suites = CipherSuites;
+	pWdev->wiphy->n_cipher_suites = ARRAY_SIZE(CipherSuites);
+#endif // LINUX_VERSION_CODE //
+
+	if (wiphy_register(pWdev->wiphy) < 0)
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("80211> Register wiphy device fail!\n"));
+		goto LabelErrReg;
+	} /* End of if */
+
+	return pWdev;
+
+ LabelErrReg:
+	wiphy_free(pWdev->wiphy);
+
+ LabelErrWiphyNew:
+	os_free_mem(NULL, pWdev);
+
+	return NULL;
+} /* End of CFG80211_WdevAlloc */
+
+
+
+
+/* =========================== Global Function ============================== */
+
+/*
+========================================================================
+Routine Description:
+	Register MAC80211 Module.
+
+Arguments:
+	pAdCB			- WLAN control block pointer
+	pDev			- Generic device interface
+	pNetDev			- Network device
+
+Return Value:
+	NONE
+
+Note:
+	pDev != pNetDev
+	#define SET_NETDEV_DEV(net, pdev)	((net)->dev.parent = (pdev))
+
+	Can not use pNetDev to replace pDev; Or kernel panic.
+========================================================================
+*/
+VOID CFG80211_Register(
+	IN VOID 				*pAdCB,
+	IN struct device		*pDev,
+	IN struct net_device	*pNetDev)
+{
+	PRTMP_ADAPTER pAd = (PRTMP_ADAPTER)pAdCB;
+
+
+	/* allocate MAC80211 structure */
+	if (pAd->pCfg80211_CB != NULL)
+		return;
+	/* End of if */
+
+	os_alloc_mem(pAd, (UCHAR **)&pAd->pCfg80211_CB, sizeof(CFG80211_CB));
+	if (pAd->pCfg80211_CB == NULL)
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("80211> Allocate MAC80211 CB fail!\n"));
+		return;
+	} /* End of if */
+
+	/* allocate wireless device */
+	CFG80211CB->pCfg80211_Wdev = CFG80211_WdevAlloc(pAd, pDev);
+	if (CFG80211CB->pCfg80211_Wdev == NULL)
+	{
+		os_free_mem(NULL, pAd->pCfg80211_CB);
+		pAd->pCfg80211_CB = NULL;
+		return;
+	} /* End of if */
+
+	/* bind wireless device with net device */
+
+#ifdef CONFIG_STA_SUPPORT
+	/* default we are station mode */
+	CFG80211CB->pCfg80211_Wdev->iftype = NL80211_IFTYPE_STATION;
+#endif // CONFIG_STA_SUPPORT //
+
+	pNetDev->ieee80211_ptr = CFG80211CB->pCfg80211_Wdev;
+	SET_NETDEV_DEV(pNetDev, wiphy_dev(CFG80211CB->pCfg80211_Wdev->wiphy));
+	CFG80211CB->pCfg80211_Wdev->netdev = pNetDev;
+
+	/* init API function pointers */
+	RT_CFG80211_API_INIT(pAd);
+
+	CFG80211DBG(RT_DEBUG_ERROR, ("80211> CFG80211_Register\n"));
+} /* End of CFG80211_Register */
+
+
+/*
+========================================================================
+Routine Description:
+	UnRegister MAC80211 Module.
+
+Arguments:
+	pAd				- WLAN control block pointer
+	pNetDev			- Network device
+
+Return Value:
+	NONE
+
+Note:
+========================================================================
+*/
+VOID CFG80211_UnRegister(
+	IN PRTMP_ADAPTER 		pAd,
+	IN struct net_device	*pNetDev)
+{
+#ifdef CONFIG_STA_SUPPORT
+	UINT32 BssId;
+
+	/* free channel information for scan table */
+	for(BssId=0; BssId<MAX_LEN_OF_BSS_TABLE; BssId++)
+	{
+		if (pAd->ScanTab.BssEntry[BssId].pCfg80211_Chan != NULL)
+			os_free_mem(NULL, pAd->ScanTab.BssEntry[BssId].pCfg80211_Chan);
+		/* End of if */
+
+		pAd->ScanTab.BssEntry[BssId].pCfg80211_Chan = NULL;
+	} /* End of for */
+#endif // CONFIG_STA_SUPPORT //
+
+	/* sanity check */
+	if (pAd->pCfg80211_CB == NULL)
+		return;
+	/* End of if */
+
+	/* unregister */
+	if (CFG80211CB->pCfg80211_Wdev != NULL)
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("80211> unregister/free wireless device\n"));
+
+		/*
+			Must unregister, or you will suffer problem when you change
+			regulatory domain by using iw.
+		*/
+		wiphy_unregister(CFG80211CB->pCfg80211_Wdev->wiphy);
+		wiphy_free(CFG80211CB->pCfg80211_Wdev->wiphy);
+		os_free_mem(NULL, CFG80211CB->pCfg80211_Wdev);
+
+		if (CFG80211CB->pCfg80211_Channels != NULL)
+			os_free_mem(NULL, CFG80211CB->pCfg80211_Channels);
+		/* End of if */
+
+		if (CFG80211CB->pCfg80211_Rates != NULL)
+			os_free_mem(NULL, CFG80211CB->pCfg80211_Rates);
+		/* End of if */
+
+		CFG80211CB->pCfg80211_Wdev = NULL;
+		CFG80211CB->pCfg80211_Channels = NULL;
+		CFG80211CB->pCfg80211_Rates = NULL;
+
+		/* must reset to NULL; or kernel will panic in unregister_netdev */
+		pNetDev->ieee80211_ptr = NULL;
+		SET_NETDEV_DEV(pNetDev, NULL);
+	} /* End of if */
+
+	os_free_mem(NULL, pAd->pCfg80211_CB);
+	pAd->pCfg80211_CB = NULL;
+	pAd->CommonCfg.HT_Disable = 0;
+} /* End of CFG80211_UnRegister */
+
+
+/*
+========================================================================
+Routine Description:
+	Parse and handle country region in beacon from associated AP.
+
+Arguments:
+	pAdCB			- WLAN control block pointer
+	pVIE			- Beacon elements
+	LenVIE			- Total length of Beacon elements
+
+Return Value:
+	NONE
+
+Note:
+========================================================================
+*/
+VOID CFG80211_BeaconCountryRegionParse(
+	IN VOID						*pAdCB,
+	IN NDIS_802_11_VARIABLE_IEs	*pVIE,
+	IN UINT16					LenVIE)
+{
+	PRTMP_ADAPTER pAd = (PRTMP_ADAPTER)pAdCB;
+	UCHAR *pElement = (UCHAR *)pVIE;
+	UINT32 LenEmt;
+
+
+	while(LenVIE > 0)
+	{
+		pVIE = (NDIS_802_11_VARIABLE_IEs *)pElement;
+
+		if (pVIE->ElementID == IE_COUNTRY)
+		{
+			/* send command to do regulation hint only when associated */
+			RTEnqueueInternalCmd(pAd, CMDTHREAD_REG_HINT_11D,
+								pVIE->data, pVIE->Length);
+			break;
+		} /* End of if */
+
+		LenEmt = pVIE->Length + 2;
+
+		if (LenVIE <= LenEmt)
+			break; /* length is not enough */
+		/* End of if */
+
+		pElement += LenEmt;
+		LenVIE -= LenEmt;
+	} /* End of while */
+} /* End of CFG80211_BeaconCountryRegionParse */
+
+
+/*
+========================================================================
+Routine Description:
+	Hint to the wireless core a regulatory domain from driver.
+
+Arguments:
+	pAd				- WLAN control block pointer
+	pCountryIe		- pointer to the country IE
+	CountryIeLen	- length of the country IE
+
+Return Value:
+	NONE
+
+Note:
+	Must call the function in kernel thread.
+========================================================================
+*/
+VOID CFG80211_RegHint(
+	IN VOID						*pAdCB,
+	IN UCHAR					*pCountryIe,
+	IN ULONG					CountryIeLen)
+{
+	PRTMP_ADAPTER pAd = (PRTMP_ADAPTER)pAdCB;
+
+
+	CFG80211DBG(RT_DEBUG_ERROR,
+			("crda> regulatory domain hint: %c%c\n",
+			pCountryIe[0], pCountryIe[1]));
+
+	if ((CFG80211CB->pCfg80211_Wdev == NULL) || (pCountryIe == NULL))
+	{
+		CFG80211DBG(RT_DEBUG_ERROR, ("crda> regulatory domain hint not support!\n"));
+		return;
+	} /* End of if */
+
+	/* hints a country IE as a regulatory domain "without" channel/power info. */
+//	regulatory_hint(CFG80211CB->pMac80211_Hw->wiphy, pCountryIe);
+	regulatory_hint(CFG80211CB->pCfg80211_Wdev->wiphy, (const char *)pCountryIe);
+} /* End of CFG80211_RegHint */
+
+
+/*
+========================================================================
+Routine Description:
+	Hint to the wireless core a regulatory domain from country element.
+
+Arguments:
+	pAdCB			- WLAN control block pointer
+	pCountryIe		- pointer to the country IE
+	CountryIeLen	- length of the country IE
+
+Return Value:
+	NONE
+
+Note:
+	Must call the function in kernel thread.
+========================================================================
+*/
+VOID CFG80211_RegHint11D(
+	IN VOID						*pAdCB,
+	IN UCHAR					*pCountryIe,
+	IN ULONG					CountryIeLen)
+{
+	/* no regulatory_hint_11d() in 2.6.32 */
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,32))
+	PRTMP_ADAPTER pAd = (PRTMP_ADAPTER)pAdCB;
+
+
+	if ((CFG80211CB->pCfg80211_Wdev == NULL) || (pCountryIe == NULL))
+	{
+		CFG80211DBG(RT_DEBUG_ERROR, ("crda> regulatory domain hint not support!\n"));
+		return;
+	} /* End of if */
+
+	CFG80211DBG(RT_DEBUG_ERROR,
+				("crda> regulatory domain hint: %c%c\n",
+				pCountryIe[0], pCountryIe[1]));
+
+	/*
+		hints a country IE as a regulatory domain "with" channel/power info.
+		but if you use regulatory_hint(), it only hint "regulatory domain".
+	*/
+//	regulatory_hint_11d(CFG80211CB->pMac80211_Hw->wiphy, pCountryIe, CountryIeLen);
+	regulatory_hint_11d(CFG80211CB->pCfg80211_Wdev->wiphy, pCountryIe, CountryIeLen);
+#endif // LINUX_VERSION_CODE //
+} /* End of CFG80211_RegHint11D */
+
+
+/*
+========================================================================
+Routine Description:
+	Apply new regulatory rule.
+
+Arguments:
+	pAdCB			- WLAN control block pointer
+	pWiphy			- Wireless hardware description
+	pAlpha2			- Regulation domain (2B)
+
+Return Value:
+	NONE
+
+Note:
+	Can only be called when interface is up.
+
+	For general mac80211 device, it will be set to new power by Ops->config()
+	In rt2x00/, the settings is done in rt2x00lib_config().
+========================================================================
+*/
+VOID CFG80211_RegRuleApply(
+	IN VOID							*pAdCB,
+	IN struct wiphy					*pWiphy,
+	IN UCHAR						*pAlpha2)
+{
+	PRTMP_ADAPTER pAd = (PRTMP_ADAPTER)pAdCB;
+	enum ieee80211_band IdBand;
+	struct ieee80211_supported_band *pSband;
+	struct ieee80211_channel *pChan;
+	RADAR_DETECT_STRUCT	*pRadarDetect;
+	UINT32 IdChan, IdPwr;
+	UINT32 ChanId, RecId, DfsType;
+	ULONG IrqFlags;
+
+
+	CFG80211DBG(RT_DEBUG_ERROR, ("crda> CFG80211_RegRuleApply ==>\n"));
+
+	/* sanity check */
+	if (pWiphy == NULL)
+	{
+		if ((CFG80211CB != NULL) && (CFG80211CB->pCfg80211_Wdev != NULL))
+			pWiphy = CFG80211CB->pCfg80211_Wdev->wiphy;
+		/* End of if */
+	} /* End of if */
+
+	if ((pWiphy == NULL) || (pAlpha2 == NULL))
+		return;
+
+	RTMP_IRQ_LOCK(&pAd->irq_lock, IrqFlags);
+
+	/* zero first */
+	NdisZeroMemory(pAd->ChannelList,
+					MAX_NUM_OF_CHANNELS * sizeof(CHANNEL_TX_POWER));
+
+	/* 2.4GHZ & 5GHz */
+	RecId = 0;
+	pRadarDetect = &pAd->CommonCfg.RadarDetect;
+
+	/* find the DfsType */
+	DfsType = CE;
+
+#ifdef AUTO_CH_SELECT_ENHANCE
+#ifdef EXT_BUILD_CHANNEL_LIST
+	if ((pAlpha2[0] != '0') && (pAlpha2[1] != '0'))
+	{
+		UINT32 IdReg;
+
+		if (pWiphy->bands[IEEE80211_BAND_5GHZ] != NULL)
+		{
+			for(IdReg=0; ; IdReg++)
+			{
+				if (ChRegion[IdReg].CountReg[0] == 0x00)
+					break;
+				/* End of if */
+	
+				if ((pAlpha2[0] == ChRegion[IdReg].CountReg[0]) &&
+					(pAlpha2[1] == ChRegion[IdReg].CountReg[1]))
+				{
+					DfsType = ChRegion[IdReg].DfsType;
+	
+					CFG80211DBG(RT_DEBUG_ERROR,
+								("crda> find region %c%c, DFS Type %d\n",
+								pAlpha2[0], pAlpha2[1], DfsType));
+					break;
+				} /* End of if */
+			} /* End of for */
+		} /* End of if */
+	} /* End of if */
+#endif // EXT_BUILD_CHANNEL_LIST //
+#endif // AUTO_CH_SELECT_ENHANCE //
+
+	for(IdBand=0; IdBand<IEEE80211_NUM_BANDS; IdBand++)
+	{
+		if (!pWiphy->bands[IdBand])
+			continue;
+		/* End of if */
+
+		if (IdBand == IEEE80211_BAND_2GHZ)
+		{
+			CFG80211DBG(RT_DEBUG_ERROR, ("crda> reset chan/power for 2.4GHz\n"));
+		}
+		else
+		{
+			CFG80211DBG(RT_DEBUG_ERROR, ("crda> reset chan/power for 5GHz\n"));
+		} /* End of if */
+
+		pSband = pWiphy->bands[IdBand];
+
+		for(IdChan=0; IdChan<pSband->n_channels; IdChan++)
+		{
+			pChan = &pSband->channels[IdChan];
+			ChanId = ieee80211_frequency_to_channel(pChan->center_freq);
+
+			if ((pAd->CommonCfg.PhyMode == PHY_11A) ||
+				(pAd->CommonCfg.PhyMode == PHY_11AN_MIXED))
+			{
+				/* 5G-only mode */
+				if (ChanId <= CFG80211_NUM_OF_CHAN_2GHZ)
+					continue; /* check next */
+				/* End of if */
+			} /* End of if */
+
+			if ((pAd->CommonCfg.PhyMode != PHY_11A) &&
+				(pAd->CommonCfg.PhyMode != PHY_11ABG_MIXED) &&
+				(pAd->CommonCfg.PhyMode != PHY_11AN_MIXED) &&
+				(pAd->CommonCfg.PhyMode != PHY_11ABGN_MIXED) &&
+				(pAd->CommonCfg.PhyMode != PHY_11AGN_MIXED))
+			{
+				/* 2.5G-only mode */
+				if (ChanId > CFG80211_NUM_OF_CHAN_2GHZ)
+					continue; /* check next */
+				/* End of if */
+			} /* End of if */
+
+			if (pChan->flags & IEEE80211_CHAN_DISABLED)
+			{
+				/* the channel is not allowed in the regulatory domain */
+				CFG80211DBG(RT_DEBUG_ERROR,
+							("Chan %03d (frq %d):\tnot allowed!\n",
+							ChanId, pChan->center_freq));
+
+				/* get next channel information */
+				continue;
+			} /* End of if */
+
+			for(IdPwr=0; IdPwr<MAX_NUM_OF_CHANNELS; IdPwr++)
+			{
+				if (ChanId == pAd->TxPower[IdPwr].Channel)
+				{
+					/* init the channel info. */
+					NdisMoveMemory(&pAd->ChannelList[RecId],
+									&pAd->TxPower[IdPwr],
+									sizeof(CHANNEL_TX_POWER));
+
+					/* keep channel number */
+					pAd->ChannelList[RecId].Channel = ChanId;
+
+					/* keep maximum tranmission power */
+					pAd->ChannelList[RecId].MaxTxPwr = pChan->max_power;
+
+					/* keep DFS flag */
+					if (pChan->flags & IEEE80211_CHAN_RADAR)
+						pAd->ChannelList[RecId].DfsReq = TRUE;
+					else
+						pAd->ChannelList[RecId].DfsReq = FALSE;
+					/* End of if */
+
+					/* keep DFS type */
+					pAd->ChannelList[RecId].RegulatoryDomain = DfsType;
+
+					/* re-set DFS info. */
+					pRadarDetect->RDDurRegion = DfsType;
+
+					if (DfsType == JAP_W53)
+						pRadarDetect->DfsSessionTime = 15;
+					else if (DfsType == JAP_W56)
+						pRadarDetect->DfsSessionTime = 13;
+					else if (DfsType == JAP)
+						pRadarDetect->DfsSessionTime = 5;
+					else if (DfsType == FCC)
+					{
+						pRadarDetect->DfsSessionTime = 5;
+					}
+					else if (DfsType == CE)
+						pRadarDetect->DfsSessionTime = 13;
+					else
+						pRadarDetect->DfsSessionTime = 13;
+					/* End of if */
+
+					CFG80211DBG(RT_DEBUG_ERROR,
+								("Chan %03d (frq %d):\tpower %d dBm, "
+								"DFS %d, DFS Type %d\n",
+								ChanId, pChan->center_freq, pChan->max_power,
+								((pChan->flags & IEEE80211_CHAN_RADAR)?1:0),
+								DfsType));
+
+					/* change to record next channel info. */
+					RecId ++;
+					break;
+				} /* End of if */
+			} /* End of for */
+		} /* End of for */
+	} /* End of for */
+
+	pAd->ChannelListNum = RecId;
+	RTMP_IRQ_UNLOCK(&pAd->irq_lock, IrqFlags);
+
+	CFG80211DBG(RT_DEBUG_ERROR, ("crda> Number of channels = %d\n", RecId));
+} /* End of CFG80211_RegRuleApply */
+
+
+/*
+========================================================================
+Routine Description:
+	Inform us that a scan is got.
+
+Arguments:
+	pAdCB				- WLAN control block pointer
+
+Return Value:
+	NONE
+
+Note:
+	Call RT_CFG80211_SCANNING_INFORM, not CFG80211_Scaning
+========================================================================
+*/
+VOID CFG80211_Scaning(
+	IN VOID							*pAdCB,
+	IN UINT32						BssIdx,
+	IN UINT32						ChanId,
+	IN UCHAR						*pFrame,
+	IN UINT32						FrameLen,
+	IN INT32						RSSI,
+	IN INT32						MemFlag)
+{
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30))
+#ifdef CONFIG_STA_SUPPORT
+	PRTMP_ADAPTER pAd = (PRTMP_ADAPTER)pAdCB;
+	struct ieee80211_channel *pChan;
+
+
+	CFG80211DBG(RT_DEBUG_ERROR, ("80211> CFG80211_Scaning ==>\n"));
+
+	if (!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_IN_USE))
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("80211> Network is down!\n"));
+		return;
+	} /* End of if */
+
+	/*
+		In connect function, we also need to report BSS information to cfg80211;
+		Not only scan function.
+	*/
+	if ((pAd->FlgCfg80211Scanning == FALSE) &&
+		(pAd->FlgCfg80211Connecting == FALSE))
+	{
+		return; /* no scan is running */
+	} /* End of if */
+
+	/* init */
+	/* Note: Can not use local variable to do pChan */
+	if (pAd->ScanTab.BssEntry[BssIdx].pCfg80211_Chan == NULL)
+	{
+		os_alloc_mem(pAd,
+					(UCHAR **)&pAd->ScanTab.BssEntry[BssIdx].pCfg80211_Chan,
+					sizeof(struct ieee80211_channel));
+		if (pAd->ScanTab.BssEntry[BssIdx].pCfg80211_Chan == NULL)
+		{
+			DBGPRINT(RT_DEBUG_ERROR, ("80211> Allocate chan fail!\n"));
+			return;
+		} /* End of if */
+	} /* End of if */
+
+	pChan = pAd->ScanTab.BssEntry[BssIdx].pCfg80211_Chan;
+	memset(pChan, 0, sizeof(*pChan));
+
+	if (ChanId > 14)
+		pChan->band = IEEE80211_BAND_5GHZ;
+	else
+		pChan->band = IEEE80211_BAND_2GHZ;
+	/* End of if */
+
+	pChan->center_freq = ieee80211_channel_to_frequency(ChanId);
+
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,32))
+	if (pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED)
+	{
+		if (pAd->CommonCfg.RegTransmitSetting.field.BW == BW_20)
+			pChan->max_bandwidth = 20; /* 20MHz */
+		else
+			pChan->max_bandwidth = 40; /* 40MHz */
+		/* End of if */
+	}
+	else
+		pChan->max_bandwidth = 5; /* 5MHz for non-HT device */
+	/* End of if */
+#endif // LINUX_VERSION_CODE //
+
+	/* no use currently in 2.6.30 */
+//	if (ieee80211_is_beacon(((struct ieee80211_mgmt *)pFrame)->frame_control))
+//		pChan->beacon_found = 1;
+	/* End of if */
+
+	/* inform 80211 a scan is got */
+	/* we can use cfg80211_inform_bss in 2.6.31, it is easy more than the one */
+	/* in cfg80211_inform_bss_frame(), it will memcpy pFrame but pChan */
+	cfg80211_inform_bss_frame(CFG80211CB->pCfg80211_Wdev->wiphy,
+								pAd->ScanTab.BssEntry[BssIdx].pCfg80211_Chan,
+								(struct ieee80211_mgmt *)pFrame,
+								FrameLen,
+								RSSI,
+								MemFlag);
+
+	CFG80211DBG(RT_DEBUG_ERROR, ("80211> cfg80211_inform_bss_frame\n"));
+#endif // CONFIG_STA_SUPPORT //
+#endif // LINUX_VERSION_CODE //
+} /* End of CFG80211_Scaning */
+
+
+/*
+========================================================================
+Routine Description:
+	Inform us that scan ends.
+
+Arguments:
+	pAdCB			- WLAN control block pointer
+	FlgIsAborted	- 1: scan is aborted
+
+Return Value:
+	NONE
+
+Note:
+========================================================================
+*/
+VOID CFG80211_ScanEnd(
+	IN VOID							*pAdCB,
+	IN BOOLEAN						FlgIsAborted)
+{
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30))
+#ifdef CONFIG_STA_SUPPORT
+	PRTMP_ADAPTER pAd = (PRTMP_ADAPTER)pAdCB;
+
+
+	if (!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_IN_USE))
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("80211> Network is down!\n"));
+		return;
+	} /* End of if */
+
+	if (pAd->FlgCfg80211Scanning == FALSE)
+		return; /* no scan is running */
+	/* End of if */
+
+	if (FlgIsAborted == TRUE)
+		FlgIsAborted = 1;
+	else
+		FlgIsAborted = 0;
+	/* End of if */
+
+	cfg80211_scan_done(CFG80211CB->pCfg80211_ScanReq, FlgIsAborted);
+
+	pAd->FlgCfg80211Scanning = FALSE;
+#endif // CONFIG_STA_SUPPORT //
+#endif // LINUX_VERSION_CODE //
+} /* End of CFG80211_ScanEnd */
+
+
+/*
+========================================================================
+Routine Description:
+	Re-Initialize wireless channel/PHY in 2.4GHZ and 5GHZ.
+
+Arguments:
+	pAdCB			- WLAN control block pointer
+
+Return Value:
+	TRUE			- re-init successfully
+	FALSE			- re-init fail
+
+Note:
+	CFG80211_SupBandInit() is called in xx_probe().
+	But we do not have complete chip information in xx_probe() so we
+	need to re-init bands in xx_open().
+========================================================================
+*/
+BOOLEAN CFG80211_SupBandReInit(
+	IN VOID							*pAdCB)
+{
+	PRTMP_ADAPTER pAd = (PRTMP_ADAPTER)pAdCB;
+	struct wiphy *pWiphy;
+
+
+	/* sanity check */
+	if (CFG80211CB->pCfg80211_Wdev == NULL)
+		return FALSE;
+	/* End of if */
+
+	pWiphy = CFG80211CB->pCfg80211_Wdev->wiphy;
+
+	if (pWiphy != NULL)
+	{
+		CFG80211DBG(RT_DEBUG_ERROR, ("80211> re-init bands...\n"));
+
+		/* re-init bands */
+		CFG80211_SupBandInit(pAd, pWiphy,
+							CFG80211CB->pCfg80211_Channels,
+							CFG80211CB->pCfg80211_Rates);
+
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32))
+		{
+			UINT32 Value = 0;
+
+			/* re-init PHY */
+			pWiphy->rts_threshold = pAd->CommonCfg.RtsThreshold;
+			pWiphy->frag_threshold = pAd->CommonCfg.FragmentThreshold;
+	
+			RTMP_IO_READ32(pAd, TX_RTY_CFG, &Value);
+			pWiphy->retry_short = Value & 0xff;
+			pWiphy->retry_long = (Value & 0xff00)>>8;
+		}
+#endif // LINUX_VERSION_CODE //
+
+		return TRUE;
+	} /* End of if */
+
+	return FALSE;
+} /* End of CFG80211_SupBandReInit */
+
+
+/*
+========================================================================
+Routine Description:
+	Inform CFG80211 about association status.
+
+Arguments:
+	pAdCB			- WLAN control block pointer
+	pBSSID			- the BSSID of the AP
+	pReqIe			- the element list in the association request frame
+	ReqIeLen		- the request element length
+	pRspIe			- the element list in the association response frame
+	RspIeLen		- the response element length
+	FlgIsSuccess	- 1: success; otherwise: fail
+
+Return Value:
+	None
+
+Note:
+========================================================================
+*/
+void CFG80211_ConnectResultInform(
+	IN VOID							*pAdCB,
+	IN UCHAR						*pBSSID,
+	IN UCHAR						*pReqIe,
+	IN UINT32						ReqIeLen,
+	IN UCHAR						*pRspIe,
+	IN UINT32						RspIeLen,
+	IN UCHAR						FlgIsSuccess)
+{
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32))
+	PRTMP_ADAPTER pAd = (PRTMP_ADAPTER)pAdCB;
+
+
+	CFG80211DBG(RT_DEBUG_ERROR, ("80211> CFG80211_ConnectResultInform ==>\n"));
+
+	if ((CFG80211CB->pCfg80211_Wdev->netdev == NULL) || (pBSSID == NULL))
+		return;
+	/* End of if */
+
+	if (FlgIsSuccess)
+	{
+		cfg80211_connect_result(CFG80211CB->pCfg80211_Wdev->netdev,
+								pBSSID,
+								pReqIe,
+								ReqIeLen,
+								pRspIe,
+								RspIeLen,
+								WLAN_STATUS_SUCCESS,
+								GFP_KERNEL);
+	}
+	else
+	{
+		cfg80211_connect_result(CFG80211CB->pCfg80211_Wdev->netdev,
+								pBSSID,
+								NULL, 0, NULL, 0,
+								WLAN_STATUS_UNSPECIFIED_FAILURE,
+								GFP_KERNEL);
+	} /* End of if */
+
+	pAd->FlgCfg80211Connecting = FALSE;
+#endif // LINUX_VERSION_CODE //
+} /* End of CFG80211_ConnectResultInform */
+
+
+
+
+/* =========================== Local Function =============================== */
+
+/*
+========================================================================
+Routine Description:
+	The driver's regulatory notification callback.
+
+Arguments:
+	pWiphy			- Wireless hardware description
+	pRequest		- Regulatory request
+
+Return Value:
+	0
+
+Note:
+========================================================================
+*/
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,30))
+static INT32 CFG80211_RegNotifier(
+	IN struct wiphy					*pWiphy,
+	IN struct regulatory_request	*pRequest)
+{
+	PRTMP_ADAPTER pAd;
+	ULONG *pPriv;
+
+
+	/* sanity check */
+	pPriv = (ULONG *)(wiphy_priv(pWiphy));
+	pAd = (PRTMP_ADAPTER)(*pPriv);
+
+	if (pAd == NULL)
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("crda> reg notify but pAd = NULL!"));
+		return 0;
+	} /* End of if */
+
+	/*
+		Change the band settings (PASS scan, IBSS allow, or DFS) in mac80211
+		based on EEPROM.
+
+		IEEE80211_CHAN_DISABLED: This channel is disabled.
+		IEEE80211_CHAN_PASSIVE_SCAN: Only passive scanning is permitted
+					on this channel.
+		IEEE80211_CHAN_NO_IBSS: IBSS is not allowed on this channel.
+		IEEE80211_CHAN_RADAR: Radar detection is required on this channel.
+		IEEE80211_CHAN_NO_FAT_ABOVE: extension channel above this channel
+					is not permitted.
+		IEEE80211_CHAN_NO_FAT_BELOW: extension channel below this channel
+					is not permitted.
+	*/
+#ifdef RELEASE_EXCLUDE
+	if (pWiphy->bands[IEEE80211_BAND_5GHZ])
+	{
+		struct ieee80211_supported_band *pBand;
+		struct ieee80211_channel *pChannel;
+		UINT32 IdChan;
+
+
+		/* RALINK follows DFS rule from upper layer */
+
+		/*
+			Atheros Communications Inc. driver/net/wireless/ath9k/regd.c
+
+			Always apply Radar/DFS rules on freq range 5260 MHz - 5700 MHz
+
+			We always enable radar detection/DFS on this frequency range.
+			Additionally we also apply on this frequency range:
+
+			- If STA mode does not yet have DFS supports disable active scanning
+			- If adhoc mode does not support DFS yet then disable adhoc in the
+				frequency.
+			- If AP mode does not yet support radar detection/DFS do not allow
+				AP mode.
+
+			Step1: Loop all channels of 5GHZ and check if the channel needs DFS
+					based on settings in EEPROM.
+			Step2: If yes and the channel is not disabled,
+					pChannel->flags |=	IEEE80211_CHAN_RADAR |
+										IEEE80211_CHAN_NO_IBSS |
+										IEEE80211_CHAN_PASSIVE_SCAN;
+		 */
+		pBand = pWiphy->bands[IEEE80211_BAND_5GHZ];
+	
+		for(IdChan=0; IdChan<pBand->n_channels; IdChan++)
+		{
+			pChannel = &pBand->channels[IdChan];
+
+			// TODO: add DFS
+		}
+	} /* End of if */
+#endif // RELEASE_EXCLUDE //
+
+	/*
+		Change regulatory rule here.
+
+		struct ieee80211_channel {
+			enum ieee80211_band band;
+			u16 center_freq;
+			u8 max_bandwidth;
+			u16 hw_value;
+			u32 flags;
+			int max_antenna_gain;
+			int max_power;
+			bool beacon_found;
+			u32 orig_flags;
+			int orig_mag, orig_mpwr;
+		};
+
+		In mac80211 layer, it will change flags, max_antenna_gain,
+		max_bandwidth, max_power.
+	*/
+
+	switch(pRequest->initiator)
+	{
+		case NL80211_REGDOM_SET_BY_CORE:
+			/*
+				Core queried CRDA for a dynamic world regulatory domain.
+			*/
+			CFG80211DBG(RT_DEBUG_ERROR, ("crda> requlation requestion by core: "));
+			break;
+
+		case NL80211_REGDOM_SET_BY_USER:
+			/*
+				User asked the wireless core to set the regulatory domain.
+				(when iw, network manager, wpa supplicant, etc.)
+			*/
+			CFG80211DBG(RT_DEBUG_ERROR, ("crda> requlation requestion by user: "));
+			break;
+
+		case NL80211_REGDOM_SET_BY_DRIVER:
+			/*
+				A wireless drivers has hinted to the wireless core it thinks
+				its knows the regulatory domain we should be in.
+				(when driver initialization, calling regulatory_hint)
+			*/
+			CFG80211DBG(RT_DEBUG_ERROR, ("crda> requlation requestion by driver: "));
+			break;
+
+		case NL80211_REGDOM_SET_BY_COUNTRY_IE:
+			/*
+				The wireless core has received an 802.11 country information
+				element with regulatory information it thinks we should consider.
+				(when beacon receive, calling regulatory_hint_11d)
+			*/
+			CFG80211DBG(RT_DEBUG_ERROR, ("crda> requlation requestion by country IE: "));
+			break;
+	} /* End of switch */
+
+	CFG80211DBG(RT_DEBUG_ERROR,
+				("%c%c\n", pRequest->alpha2[0], pRequest->alpha2[1]));
+
+	/* only follow rules from user */
+	if (pRequest->initiator == NL80211_REGDOM_SET_BY_USER)
+	{
+		/* keep Alpha2 and we can re-call the function when interface is up */
+		pAd->Cfg80211_Alpha2[0] = pRequest->alpha2[0];
+		pAd->Cfg80211_Alpha2[1] = pRequest->alpha2[1];
+
+		/* apply the new regulatory rule */
+		if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_START_UP))
+		{
+			/* interface is up */
+			CFG80211_RegRuleApply(pAd, pWiphy, (UCHAR *)pRequest->alpha2);
+		}
+		else
+		{
+			CFG80211DBG(RT_DEBUG_ERROR, ("crda> interface is down!\n"));
+		} /* End of if */
+	} /* End of if */
+
+	return 0;
+} /* End of CFG80211_RegNotifier */
+#else
+
+static INT32 CFG80211_RegNotifier(
+	IN struct wiphy					*pWiphy,
+	IN enum reg_set_by				Request)
+{
+	struct device *pDev = pWiphy->dev.parent;
+	struct net_device *pNetDev = dev_get_drvdata(pDev);
+	PRTMP_ADAPTER pAd = (PRTMP_ADAPTER)RTMP_OS_NETDEV_GET_PRIV(pNetDev);
+	UINT32 ReqType = Request;
+
+
+	/* sanity check */
+	if (pAd == NULL)
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("crda> reg notify but pAd = NULL!"));
+		return 0;
+	} /* End of if */
+
+	/*
+		Change the band settings (PASS scan, IBSS allow, or DFS) in mac80211
+		based on EEPROM.
+
+		IEEE80211_CHAN_DISABLED: This channel is disabled.
+		IEEE80211_CHAN_PASSIVE_SCAN: Only passive scanning is permitted
+					on this channel.
+		IEEE80211_CHAN_NO_IBSS: IBSS is not allowed on this channel.
+		IEEE80211_CHAN_RADAR: Radar detection is required on this channel.
+		IEEE80211_CHAN_NO_FAT_ABOVE: extension channel above this channel
+					is not permitted.
+		IEEE80211_CHAN_NO_FAT_BELOW: extension channel below this channel
+					is not permitted.
+	*/
+#ifdef RELEASE_EXCLUDE
+	if (pWiphy->bands[IEEE80211_BAND_5GHZ])
+	{
+		struct ieee80211_supported_band *pBand;
+		struct ieee80211_channel *pChannel;
+		UINT32 IdChan;
+
+
+		/* RALINK follows DFS rule from upper layer */
+
+		/*
+			Atheros Communications Inc. driver/net/wireless/ath9k/regd.c
+
+			Always apply Radar/DFS rules on freq range 5260 MHz - 5700 MHz
+
+			We always enable radar detection/DFS on this frequency range.
+			Additionally we also apply on this frequency range:
+
+			- If STA mode does not yet have DFS supports disable active scanning
+			- If adhoc mode does not support DFS yet then disable adhoc in the
+				frequency.
+			- If AP mode does not yet support radar detection/DFS do not allow
+				AP mode.
+
+			Step1: Loop all channels of 5GHZ and check if the channel needs DFS
+					based on settings in EEPROM.
+			Step2: If yes and the channel is not disabled,
+					pChannel->flags |=	IEEE80211_CHAN_RADAR |
+										IEEE80211_CHAN_NO_IBSS |
+										IEEE80211_CHAN_PASSIVE_SCAN;
+		 */
+		pBand = pWiphy->bands[IEEE80211_BAND_5GHZ];
+	
+		for(IdChan=0; IdChan<pBand->n_channels; IdChan++)
+		{
+			pChannel = &pBand->channels[IdChan];
+
+			// TODO: add DFS
+		}
+	} /* End of if */
+#endif // RELEASE_EXCLUDE //
+
+	/*
+		Change regulatory rule here.
+
+		struct ieee80211_channel {
+			enum ieee80211_band band;
+			u16 center_freq;
+			u8 max_bandwidth;
+			u16 hw_value;
+			u32 flags;
+			int max_antenna_gain;
+			int max_power;
+			bool beacon_found;
+			u32 orig_flags;
+			int orig_mag, orig_mpwr;
+		};
+
+		In mac80211 layer, it will change flags, max_antenna_gain,
+		max_bandwidth, max_power.
+	*/
+
+	switch(ReqType)
+	{
+		case REGDOM_SET_BY_CORE:
+			/*
+				Core queried CRDA for a dynamic world regulatory domain.
+			*/
+			CFG80211DBG(RT_DEBUG_ERROR, ("crda> requlation requestion by core: "));
+			break;
+
+		case REGDOM_SET_BY_USER:
+			/*
+				User asked the wireless core to set the regulatory domain.
+				(when iw, network manager, wpa supplicant, etc.)
+			*/
+			CFG80211DBG(RT_DEBUG_ERROR, ("crda> requlation requestion by user: "));
+			break;
+
+		case REGDOM_SET_BY_DRIVER:
+			/*
+				A wireless drivers has hinted to the wireless core it thinks
+				its knows the regulatory domain we should be in.
+				(when driver initialization, calling regulatory_hint)
+			*/
+			CFG80211DBG(RT_DEBUG_ERROR, ("crda> requlation requestion by driver: "));
+			break;
+
+		case REGDOM_SET_BY_COUNTRY_IE:
+			/*
+				The wireless core has received an 802.11 country information
+				element with regulatory information it thinks we should consider.
+				(when beacon receive, calling regulatory_hint_11d)
+			*/
+			CFG80211DBG(RT_DEBUG_ERROR, ("crda> requlation requestion by country IE: "));
+			break;
+	} /* End of switch */
+
+	DBGPRINT(RT_DEBUG_ERROR, ("00\n"));
+
+	/* only follow rules from user */
+	if (ReqType == REGDOM_SET_BY_USER)
+	{
+		/* keep Alpha2 and we can re-call the function when interface is up */
+		pAd->Cfg80211_Alpha2[0] = '0';
+		pAd->Cfg80211_Alpha2[1] = '0';
+
+		/* apply the new regulatory rule */
+		if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_START_UP))
+		{
+			/* interface is up */
+			CFG80211_RegRuleApply(pAd, pWiphy, pAd->Cfg80211_Alpha2);
+		}
+		else
+		{
+			CFG80211DBG(RT_DEBUG_ERROR, ("crda> interface is down!\n"));
+		} /* End of if */
+	} /* End of if */
+
+	return 0;
+} /* End of CFG80211_RegNotifier */
+#endif // LINUX_VERSION_CODE //
+
+
+/*
+========================================================================
+Routine Description:
+	Initialize wireless channel in 2.4GHZ and 5GHZ.
+
+Arguments:
+	pAd				- WLAN control block pointer
+	pWiphy			- WLAN PHY interface
+	pChannels		- Current channel info
+	pRates			- Current rate info
+
+Return Value:
+	TRUE			- init successfully
+	FALSE			- init fail
+
+Note:
+	TX Power related:
+
+	1. Suppose we can send power to 15dBm in the board.
+	2. A value 0x0 ~ 0x1F for a channel. We will adjust it based on 15dBm/
+		54Mbps. So if value == 0x07, the TX power of 54Mbps is 15dBm and
+		the value is 0x07 in the EEPROM.
+	3. Based on TX power value of 54Mbps/channel, adjust another value
+		0x0 ~ 0xF for other data rate. (-6dBm ~ +6dBm)
+
+	Other related factors:
+	1. TX power percentage from UI/users;
+	2. Maximum TX power limitation in the regulatory domain.
+========================================================================
+*/
+static BOOLEAN CFG80211_SupBandInit(
+	IN PRTMP_ADAPTER 				pAd,
+	IN struct wiphy					*pWiphy,
+	IN struct ieee80211_channel		*pChannels,
+	IN struct ieee80211_rate		*pRates)
+{
+	struct ieee80211_supported_band *pBand;
+	UINT32 NumOfChan, NumOfRate;
+	UINT32 IdLoop;
+	UINT32 CurTxPower;
+
+
+	/* sanity check */
+	if (pAd->RFICType == 0)
+		pAd->RFICType = RFIC_24GHZ | RFIC_5GHZ;
+	/* End of if */
+
+	CFG80211DBG(RT_DEBUG_ERROR, ("80211> RFICType = %d\n", pAd->RFICType));
+
+	/* init */
+	if (pAd->RFICType & RFIC_5GHZ)
+		NumOfChan = CFG80211_NUM_OF_CHAN_2GHZ + CFG80211_NUM_OF_CHAN_5GHZ;
+	else
+		NumOfChan = CFG80211_NUM_OF_CHAN_2GHZ;
+	/* End of if */
+
+	if (pAd->CommonCfg.PhyMode == PHY_11B)
+		NumOfRate = 4;
+	else
+		NumOfRate = 4 + 8;
+	/* End of if */
+
+	if (pChannels == NULL)
+	{
+		pChannels = kzalloc(sizeof(*pChannels) * NumOfChan, GFP_KERNEL);
+		if (!pChannels)
+		{
+			DBGPRINT(RT_DEBUG_ERROR, ("80211> ieee80211_channel allocation fail!\n"));
+			return FALSE;
+		} /* End of if */
+	} /* End of if */
+
+	CFG80211DBG(RT_DEBUG_ERROR, ("80211> Number of channel = %d\n",
+				CFG80211_NUM_OF_CHAN_5GHZ));
+
+	if (pRates == NULL)
+	{
+		pRates = kzalloc(sizeof(*pRates) * NumOfRate, GFP_KERNEL);
+		if (!pRates)
+		{
+			os_free_mem(NULL, pChannels);
+			DBGPRINT(RT_DEBUG_ERROR, ("80211> ieee80211_rate allocation fail!\n"));
+			return FALSE;
+		} /* End of if */
+	} /* End of if */
+
+	CFG80211DBG(RT_DEBUG_ERROR, ("80211> Number of rate = %d\n", NumOfRate));
+
+	/* get TX power */
+#ifdef SINGLE_SKU
+	CurTxPower = pAd->CommonCfg.DefineMaxTxPwr; /* dBm */
+#else
+	CurTxPower = 0; /* unknown */
+#endif // SINGLE_SKU //
+
+	CFG80211DBG(RT_DEBUG_ERROR, ("80211> CurTxPower = %d dBm\n", CurTxPower));
+
+	/* init channel */
+	for(IdLoop=0; IdLoop<NumOfChan; IdLoop++)
+	{
+		pChannels[IdLoop].center_freq = \
+					ieee80211_channel_to_frequency(Cfg80211_Chan[IdLoop]);
+		pChannels[IdLoop].hw_value = IdLoop;
+
+		if (IdLoop < CFG80211_NUM_OF_CHAN_2GHZ)
+			pChannels[IdLoop].max_power = CurTxPower;
+		else
+			pChannels[IdLoop].max_power = CurTxPower;
+		/* End of if */
+
+		pChannels[IdLoop].max_antenna_gain = 0xff;
+	} /* End of if */
+
+	/* init rate */
+	for(IdLoop=0; IdLoop<NumOfRate; IdLoop++)
+		memcpy(&pRates[IdLoop], &Cfg80211_SupRate[IdLoop], sizeof(*pRates));
+	/* End of for */
+
+	pBand = &CFG80211CB->Cfg80211_bands[IEEE80211_BAND_2GHZ];
+	if (pAd->RFICType & RFIC_24GHZ)
+	{
+		pBand->n_channels = CFG80211_NUM_OF_CHAN_2GHZ;
+		pBand->n_bitrates = NumOfRate;
+		pBand->channels = pChannels;
+		pBand->bitrates = pRates;
+
+#ifdef DOT11_N_SUPPORT
+		/* for HT, assign pBand->ht_cap */
+		pBand->ht_cap.ht_supported = true;
+		pBand->ht_cap.cap = IEEE80211_HT_CAP_SUP_WIDTH_20_40 |
+					       IEEE80211_HT_CAP_SM_PS |
+					       IEEE80211_HT_CAP_SGI_40 |
+					       IEEE80211_HT_CAP_DSSSCCK40;
+		pBand->ht_cap.ampdu_factor = 3; /* 2 ^ 16 */
+		pBand->ht_cap.ampdu_density = \
+						pAd->CommonCfg.BACapability.field.MpduDensity;
+
+		memset(&pBand->ht_cap.mcs, 0, sizeof(pBand->ht_cap.mcs));
+		CFG80211DBG(RT_DEBUG_ERROR,
+					("80211> TxStream = %d\n", pAd->CommonCfg.TxStream));
+
+		switch(pAd->CommonCfg.TxStream)
+		{
+			case 1:
+			default:
+				pBand->ht_cap.mcs.rx_mask[0] = 0xff;
+				break;
+
+			case 2:
+				pBand->ht_cap.mcs.rx_mask[0] = 0xff;
+				pBand->ht_cap.mcs.rx_mask[1] = 0xff;
+				break;
+
+			case 3:
+				pBand->ht_cap.mcs.rx_mask[0] = 0xff;
+				pBand->ht_cap.mcs.rx_mask[1] = 0xff;
+				pBand->ht_cap.mcs.rx_mask[2] = 0xff;
+				break;
+		} /* End of switch */
+
+		pBand->ht_cap.mcs.tx_params = IEEE80211_HT_MCS_TX_DEFINED;
+#endif // DOT11_N_SUPPORT //
+
+		pWiphy->bands[IEEE80211_BAND_2GHZ] = pBand;
+	}
+	else
+	{
+		pBand->channels = NULL;
+		pBand->bitrates = NULL;
+	} /* End of if */
+
+	pBand = &CFG80211CB->Cfg80211_bands[IEEE80211_BAND_5GHZ];
+	if (pAd->RFICType & RFIC_5GHZ)
+	{
+		pBand->n_channels = CFG80211_NUM_OF_CHAN_5GHZ;
+		pBand->n_bitrates = NumOfRate - 4;
+		pBand->channels = &pChannels[CFG80211_NUM_OF_CHAN_2GHZ];
+		pBand->bitrates = &pRates[4];
+
+		/* for HT, assign pBand->ht_cap */
+#ifdef DOT11_N_SUPPORT
+		/* for HT, assign pBand->ht_cap */
+		pBand->ht_cap.ht_supported = true;
+		pBand->ht_cap.cap = IEEE80211_HT_CAP_SUP_WIDTH_20_40 |
+					       IEEE80211_HT_CAP_SM_PS |
+					       IEEE80211_HT_CAP_SGI_40 |
+					       IEEE80211_HT_CAP_DSSSCCK40;
+		pBand->ht_cap.ampdu_factor = 3; /* 2 ^ 16 */
+		pBand->ht_cap.ampdu_density = \
+						pAd->CommonCfg.BACapability.field.MpduDensity;
+
+		memset(&pBand->ht_cap.mcs, 0, sizeof(pBand->ht_cap.mcs));
+		switch(pAd->CommonCfg.RxStream)
+		{
+			case 1:
+			default:
+				pBand->ht_cap.mcs.rx_mask[0] = 0xff;
+				break;
+
+			case 2:
+				pBand->ht_cap.mcs.rx_mask[0] = 0xff;
+				pBand->ht_cap.mcs.rx_mask[1] = 0xff;
+				break;
+
+			case 3:
+				pBand->ht_cap.mcs.rx_mask[0] = 0xff;
+				pBand->ht_cap.mcs.rx_mask[1] = 0xff;
+				pBand->ht_cap.mcs.rx_mask[2] = 0xff;
+				break;
+		} /* End of switch */
+
+		pBand->ht_cap.mcs.tx_params = IEEE80211_HT_MCS_TX_DEFINED;
+#endif // DOT11_N_SUPPORT //
+
+		pWiphy->bands[IEEE80211_BAND_5GHZ] = pBand;
+	}
+	else
+	{
+		pBand->channels = NULL;
+		pBand->bitrates = NULL;
+	} /* End of if */
+
+	CFG80211CB->pCfg80211_Channels = pChannels;
+	CFG80211CB->pCfg80211_Rates = pRates;
+
+	return TRUE;
+} /* End of CFG80211_SupBandInit */
+
+
+#endif // RT_CFG80211_SUPPORT //
+#endif // LINUX_VERSION_CODE //
+
+/* End of crda.c */
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/config.mk b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/config.mk
new file mode 100644
index 000000000..f11b58352
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/config.mk
@@ -0,0 +1,386 @@
+# Support ATE function
+HAS_ATE=n
+
+# Support QA ATE function
+HAS_QA_SUPPORT=n
+
+# Support XLINK mode
+HAS_XLINK=n
+
+# Support Wpa_Supplicant
+HAS_WPA_SUPPLICANT=y
+
+# Support Native WpaSupplicant for Network Maganger
+HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y
+
+#Support Net interface block while Tx-Sw queue full
+HAS_BLOCK_NET_IF=n
+
+#Support DFS function
+HAS_DFS_SUPPORT=n
+
+#Support Carrier-Sense function
+HAS_CS_SUPPORT=n
+
+# Support for Multiple Cards
+HAS_MC_SUPPORT=n
+
+#Support for PCI-MSI
+HAS_MSI_SUPPORT=n
+
+#Support for IEEE802.11e DLS
+HAS_QOS_DLS_SUPPORT=n
+
+#Support for EXT_CHANNEL
+HAS_EXT_BUILD_CHANNEL_LIST=n
+
+#Support for Net-SNMP
+HAS_SNMP_SUPPORT=n
+
+#Support features of 802.11n Draft3
+HAS_DOT11N_DRAFT3_SUPPORT=y
+
+#Support features of Single SKU. 
+HAS_SINGLE_SKU_SUPPORT=n
+
+#Support features of 802.11n
+HAS_DOT11_N_SUPPORT=y
+
+ifeq ($(TARGET), LINUX)
+ifneq (,$(findstring 2.4,$(LINUX_SRC)))
+HAS_KTHREAD_SUPPORT=n
+else
+HAS_KTHREAD_SUPPORT=y
+endif
+endif
+
+#Support statistics count
+HAS_STATS_COUNT=y
+
+#Client support WDS function
+HAS_CLIENT_WDS_SUPPORT=n
+
+#Support for Bridge Fast Path & Bridge Fast Path function open to other module
+HAS_BGFP_SUPPORT=n
+HAS_BGFP_OPEN_SUPPORT=n
+
+#Support MAC80211 LINUX-only function
+HAS_CFG80211_SUPPORT=n
+
+#################################################
+
+CC := $(CROSS_COMPILE)gcc
+LD := $(CROSS_COMPILE)ld
+
+WFLAGS := -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT  -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs 
+WFLAGS += -DSYSTEM_LOG_SUPPORT
+
+
+
+
+ifeq ($(HAS_KTHREAD_SUPPORT),y)
+WFLAGS += -DKTHREAD_SUPPORT
+endif
+
+
+#################################################
+
+# config for STA mode
+
+ifeq ($(RT28xx_MODE),STA)
+WFLAGS += -DCONFIG_STA_SUPPORT -DDBG
+
+ifeq ($(HAS_XLINK),y)
+WFLAGS += -DXLINK_SUPPORT
+endif
+
+ifeq ($(HAS_WPA_SUPPLICANT),y)
+WFLAGS += -DWPA_SUPPLICANT_SUPPORT
+ifeq ($(HAS_NATIVE_WPA_SUPPLICANT_SUPPORT),y)
+WFLAGS += -DNATIVE_WPA_SUPPLICANT_SUPPORT
+endif
+endif
+
+ifeq ($(HAS_ATE),y)
+WFLAGS += -DRALINK_ATE
+ifeq ($(HAS_QA_SUPPORT),y)
+WFLAGS += -DRALINK_28xx_QA
+endif
+endif
+
+
+ifeq ($(HAS_SNMP_SUPPORT),y)
+WFLAGS += -DSNMP_SUPPORT
+endif
+
+ifeq ($(HAS_QOS_DLS_SUPPORT),y)
+WFLAGS += -DQOS_DLS_SUPPORT
+endif
+
+ifeq ($(HAS_DOT11_N_SUPPORT),y)
+WFLAGS += -DDOT11_N_SUPPORT
+ifeq ($(HAS_DOT11N_DRAFT3_SUPPORT),y)
+WFLAGS += -DDOT11N_DRAFT3
+endif
+endif
+
+
+ifeq ($(HAS_CS_SUPPORT),y)
+WFLAGS += -DCARRIER_DETECTION_SUPPORT
+endif
+
+ifeq ($(HAS_STATS_COUNT),y)
+WFLAGS += -DSTATS_COUNT_SUPPORT
+endif
+
+ifeq ($(HAS_CFG80211_SUPPORT),y)
+WFLAGS += -DRT_CFG80211_SUPPORT
+endif
+
+ifeq ($(OSABL),YES)
+WFLAGS += -DOS_ABL_SUPPORT
+endif
+
+
+endif
+# endif of ifeq ($(RT28xx_MODE),STA)
+
+#################################################
+
+#################################################
+
+#
+# Common compiler flag
+#
+
+
+
+
+
+
+ifeq ($(HAS_EXT_BUILD_CHANNEL_LIST),y)
+WFLAGS += -DEXT_BUILD_CHANNEL_LIST
+endif
+
+
+ifeq ($(OSABL),YES)
+WFLAGS += -DEXPORT_SYMTAB
+endif
+
+ifeq ($(HAS_CLIENT_WDS_SUPPORT),y)
+WFLAGS += -DCLIENT_WDS
+endif
+
+ifeq ($(HAS_BGFP_SUPPORT),y)
+WFLAGS += -DBG_FT_SUPPORT
+endif
+
+ifeq ($(HAS_BGFP_OPEN_SUPPORT),y)
+WFLAGS += -DBG_FT_OPEN_SUPPORT
+endif
+
+
+#################################################
+# ChipSet specific definitions.
+#
+ifeq ($(CHIPSET),2860)
+WFLAGS +=-DRTMP_MAC_PCI -DRTMP_PCI_SUPPORT -DRT2860 -DRT28xx
+endif
+
+ifeq ($(CHIPSET),3062)
+WFLAGS +=-DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT
+endif
+
+ifeq ($(CHIPSET),3562)
+WFLAGS +=-DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT
+endif
+#################################################
+
+
+ifeq ($(PLATFORM),5VT)
+#WFLAGS += -DCONFIG_5VT_ENHANCE
+endif
+
+ifeq ($(HAS_BLOCK_NET_IF),y)
+WFLAGS += -DBLOCK_NET_IF
+endif
+
+ifeq ($(HAS_DFS_SUPPORT),y)
+WFLAGS += -DDFS_SUPPORT
+endif
+
+ifeq ($(HAS_MC_SUPPORT),y)
+WFLAGS += -DMULTIPLE_CARD_SUPPORT
+endif
+
+ifeq ($(PLATFORM),IXP)
+WFLAGS += -DRT_BIG_ENDIAN
+endif
+
+ifeq ($(PLATFORM),IKANOS_V160)
+WFLAGS += -DRT_BIG_ENDIAN -DIKANOS_VX_1X0
+endif
+
+ifeq ($(PLATFORM),IKANOS_V180)
+WFLAGS += -DRT_BIG_ENDIAN -DIKANOS_VX_1X0
+endif
+
+ifeq ($(PLATFORM),INF_TWINPASS)
+WFLAGS += -DRT_BIG_ENDIAN -DINF_TWINPASS
+endif
+
+ifeq ($(PLATFORM),INF_DANUBE)
+ifneq (,$(findstring 2.4,$(LINUX_SRC)))
+# Linux 2.4
+WFLAGS += -DINF_DANUBE -DRT_BIG_ENDIAN
+else
+# Linux 2.6
+WFLAGS += -DRT_BIG_ENDIAN
+endif
+endif
+
+ifeq ($(PLATFORM),INF_AR9)
+WFLAGS += -DRT_BIG_ENDIAN -DINF_AR9
+# support MAPI function for AR9.
+#WFLAGS += -DAR9_MAPI_SUPPORT
+endif
+
+ifeq ($(PLATFORM),CAVM_OCTEON)
+WFLAGS += -DRT_BIG_ENDIAN
+endif
+
+ifeq ($(PLATFORM),BRCM_6358)
+WFLAGS += -DRT_BIG_ENDIAN
+endif
+
+ifeq ($(PLATFORM),INF_AMAZON_SE)
+WFLAGS += -DRT_BIG_ENDIAN -DINF_AMAZON_SE
+endif
+
+ifeq ($(PLATFORM),RALINK_3052)
+WFLAGS += -DINF_AMAZON_SE -DPLATFORM_RALINK_3052
+endif
+
+ifeq ($(PLATFORM),FREESCALE8377)
+#EXTRA_CFLAGS := -v -I$(RT28xx_DIR)/include -I$(LINUX_SRC)/include $(WFLAGS)-O2 -Wall -Wstrict-prototypes -Wno-trigraphs 
+#export EXTRA_CFLAGS
+WFLAGS += -DRT_BIG_ENDIAN
+EXTRA_CFLAGS := $(WFLAGS) -I$(RT28xx_DIR)/include
+endif
+
+ifeq ($(PLATFORM),ST)
+#WFLAGS += -DST
+WFLAGS += -DST
+endif
+
+#kernel build options for 2.4
+# move to Makefile outside LINUX_SRC := /opt/star/kernel/linux-2.4.27-star
+
+ifeq ($(PLATFORM),RALINK_3052)
+CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include/asm-mips/mach-generic -I$(LINUX_SRC)/include -I$(RT28xx_DIR)/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -fomit-frame-pointer -G 0 -mno-abicalls -fno-pic -pipe  -finline-limit=100000 -march=mips2 -mabi=32 -Wa,--trap -DLINUX -nostdinc -iwithprefix include $(WFLAGS)
+export CFLAGS
+endif
+
+ifeq ($(PLATFORM), RALINK_2880)
+CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include -I$(RT28xx_DIR)/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -fomit-frame-pointer -G 0 -mno-abicalls -fno-pic -pipe  -finline-limit=100000 -march=mips2 -mabi=32 -Wa,--trap -DLINUX -nostdinc -iwithprefix include $(WFLAGS)
+export CFLAGS
+endif
+
+ifeq ($(PLATFORM),STAR)
+CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include -I$(RT28xx_DIR)/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -Uarm -fno-common -pipe -mapcs-32 -D__LINUX_ARM_ARCH__=4 -march=armv4  -mshort-load-bytes -msoft-float -Uarm -DMODULE -DMODVERSIONS -include $(LINUX_SRC)/include/linux/modversions.h $(WFLAGS)
+
+export CFLAGS
+endif
+
+ifeq ($(PLATFORM),SIGMA)
+CFLAGS := -D__KERNEL__ -I$(RT28xx_DIR)/include -I$(LINUX_SRC)/include -I$(LINUX_SRC)/include/asm/gcc -I$(LINUX_SRC)/include/asm-mips/mach-tango2 -I$(LINUX_SRC)/include/asm-mips/mach-tango2 -DEM86XX_CHIP=EM86XX_CHIPID_TANGO2 -DEM86XX_REVISION=6 -I$(LINUX_SRC)/include/asm-mips/mach-generic -I$(RT2860_DIR)/include -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -ffreestanding -O2     -fomit-frame-pointer -G 0 -mno-abicalls -fno-pic -pipe  -mabi=32 -march=mips32r2 -Wa,-32 -Wa,-march=mips32r2 -Wa,-mips32r2 -Wa,--trap -DMODULE $(WFLAGS) -DSIGMA863X_PLATFORM
+
+export CFLAGS
+endif
+
+ifeq ($(PLATFORM),SIGMA_8622)
+CFLAGS := -D__KERNEL__ -I$(CROSS_COMPILE_INCLUDE)/include -I$(LINUX_SRC)/include -I$(RT28xx_DIR)/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -fno-common -pipe -fno-builtin -D__linux__ -DNO_MM -mapcs-32 -march=armv4 -mtune=arm7tdmi -msoft-float -DMODULE -mshort-load-bytes -nostdinc -iwithprefix -DMODULE $(WFLAGS)
+export CFLAGS
+endif
+
+ifeq ($(PLATFORM),5VT)
+CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include -I$(RT28xx_DIR)/include -mlittle-endian -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -O3 -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-omit-frame-pointer -mapcs -mno-sched-prolog -mabi=apcs-gnu -mno-thumb-interwork -D__LINUX_ARM_ARCH__=5 -march=armv5te -mtune=arm926ej-s --param max-inline-insns-single=40000  -Uarm -Wdeclaration-after-statement -Wno-pointer-sign -DMODULE $(WFLAGS) 
+
+export CFLAGS
+endif
+
+ifeq ($(PLATFORM),IKANOS_V160)
+CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include -I$(LINUX_SRC)/include/asm/gcc -I$(LINUX_SRC)/include/asm-mips/mach-tango2 -I$(LINUX_SRC)/include/asm-mips/mach-tango2 -I$(LINUX_SRC)/include/asm-mips/mach-generic -I$(RT28xx_DIR)/include -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -ffreestanding -O2 -fomit-frame-pointer -G 0 -mno-abicalls -fno-pic -pipe -march=lx4189 -Wa, -DMODULE $(WFLAGS)
+export CFLAGS
+endif
+
+ifeq ($(PLATFORM),IKANOS_V180)
+CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include -I$(LINUX_SRC)/include/asm/gcc -I$(LINUX_SRC)/include/asm-mips/mach-tango2 -I$(LINUX_SRC)/include/asm-mips/mach-tango2 -I$(LINUX_SRC)/include/asm-mips/mach-generic -I$(RT28xx_DIR)/include -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -ffreestanding -O2 -fomit-frame-pointer -G 0 -mno-abicalls -fno-pic -pipe -mips32r2 -Wa, -DMODULE $(WFLAGS)
+export CFLAGS
+endif
+
+ifeq ($(PLATFORM),INF_TWINPASS)
+CFLAGS := -D__KERNEL__ -DMODULE -I$(LINUX_SRC)/include -I$(RT28xx_DIR)/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -G 0 -mno-abicalls -fno-pic -march=4kc -mips32 -Wa,--trap -pipe -mlong-calls $(WFLAGS)
+export CFLAGS
+endif
+
+ifeq ($(PLATFORM),INF_DANUBE)
+	ifneq (,$(findstring 2.4,$(LINUX_SRC)))
+	CFLAGS := -I$(RT28xx_DIR)/include $(WFLAGS) -Wundef -fno-strict-aliasing -fno-common -ffreestanding -Os -fomit-frame-pointer -G 0 -mno-abicalls -fno-pic -pipe -msoft-float  -mabi=32 -march=mips32 -Wa,-32 -Wa,-march=mips32 -Wa,-mips32 -Wa,--trap -I$(LINUX_SRC)/include/asm-mips/mach-generic
+	else
+	CFLAGS := -I$(RT28xx_DIR)/include $(WFLAGS) -Wundef -fno-strict-aliasing -fno-common -ffreestanding -Os -fomit-frame-pointer -G 0 -mno-abicalls -fno-pic -pipe -msoft-float  -mabi=32 -march=mips32r2 -Wa,-32 -Wa,-march=mips32r2 -Wa,-mips32r2 -Wa,--trap -I$(LINUX_SRC)/include/asm-mips/mach-generic
+	endif
+export CFLAGS
+endif
+
+ifeq ($(PLATFORM),INF_AR9)
+CFLAGS := -I$(RT28xx_DIR)/include $(WFLAGS) -Wundef -fno-strict-aliasing -fno-common -fno-pic -ffreestanding -Os -fomit-frame-pointer -G 0 -mno-abicalls -fno-pic -pipe -msoft-float  -mabi=32 -mlong-calls -march=mips32r2 -mtune=34kc -march=mips32r2 -Wa,-32 -Wa,-march=mips32r2 -Wa,-mips32r2 -Wa,--trap -I$(LINUX_SRC)/include/asm-mips/mach-generic
+export CFLAGS
+endif
+
+ifeq ($(PLATFORM),BRCM_6358)
+CFLAGS := $(WFLAGS) -I$(RT28xx_DIR)/include -nostdinc -iwithprefix include -D__KERNEL__ -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -I $(LINUX_SRC)/include/asm/gcc -G 0 -mno-abicalls -fno-pic -pipe  -finline-limit=100000 -mabi=32 -march=mips32 -Wa,-32 -Wa,-march=mips32 -Wa,-mips32 -Wa,--trap -I$(LINUX_SRC)/include/asm-mips/mach-bcm963xx -I$(LINUX_SRC)/include/asm-mips/mach-generic  -Os -fomit-frame-pointer -Wdeclaration-after-statement  -DMODULE -mlong-calls
+export CFLAGS
+endif
+
+ifeq ($(PLATFORM),INF_AMAZON_SE)
+CFLAGS := -D__KERNEL__ -DMODULE=1 -I$(LINUX_SRC)/include -I$(RT28xx_DIR)/include -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -DCONFIG_IFX_ALG_QOS -DCONFIG_WAN_VLAN_SUPPORT -fomit-frame-pointer -DIFX_PPPOE_FRAME -G 0 -fno-pic -mno-abicalls -mlong-calls -pipe -finline-limit=100000 -mabi=32 -march=mips32 -Wa,-32 -Wa,-march=mips32 -Wa,-mips32 -Wa,--trap -nostdinc -iwithprefix include $(WFLAGS)
+export CFLAGS
+endif
+
+ifeq ($(PLATFORM),ST)
+CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include -I$(RT28xx_DIR)/include -Wall -O2 -Wundef -Wstrict-prototypes -Wno-trigraphs -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-aliasing -fno-common -fomit-frame-pointer -ffreestanding -o $(WFLAGS) 
+export CFLAGS
+endif
+
+ifeq ($(PLATFORM),PC)
+    ifneq (,$(findstring 2.4,$(LINUX_SRC)))
+	# Linux 2.4
+	CFLAGS := -D__KERNEL__ -I$(LINUX_SRC)/include -I$(RT28xx_DIR)/include -O2 -fomit-frame-pointer -fno-strict-aliasing -fno-common -pipe -mpreferred-stack-boundary=2 -march=i686 -DMODULE -DMODVERSIONS -include $(LINUX_SRC)/include/linux/modversions.h $(WFLAGS)
+	export CFLAGS
+    else
+	# Linux 2.6
+	EXTRA_CFLAGS := $(WFLAGS) -DMODVERSIONS -I$(RT28xx_DIR)/include
+    endif
+endif
+
+ifeq ($(PLATFORM),IXP)
+	CFLAGS := -v -D__KERNEL__ -DMODULE -I$(LINUX_SRC)/include -I$(RT28xx_DIR)/include -mbig-endian -Wall -Wstrict-prototypes -Wno-trigraphs -O2 -fno-strict-aliasing -fno-common -Uarm -fno-common -pipe -mapcs-32 -D__LINUX_ARM_ARCH__=5 -mcpu=xscale -mtune=xscale -malignment-traps -msoft-float $(WFLAGS)
+        EXTRA_CFLAGS := -v $(WFLAGS) -I$(RT28xx_DIR)/include -mbig-endian
+	export CFLAGS        
+endif
+
+ifeq ($(PLATFORM),SMDK)
+        EXTRA_CFLAGS := $(WFLAGS) -I$(RT28xx_DIR)/include
+endif
+
+ifeq ($(PLATFORM),CAVM_OCTEON)
+	EXTRA_CFLAGS := $(WFLAGS) -I$(RT28xx_DIR)/include \
+				    -mabi=64 $(WFLAGS)
+export CFLAGS
+endif
+
+ifeq ($(PLATFORM),DM6446)
+	CFLAGS := -nostdinc -iwithprefix include -D__KERNEL__ -I$(RT28xx_DIR)/include -I$(LINUX_SRC)/include  -Wall -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Os -fno-omit-frame-pointer -fno-omit-frame-pointer -mapcs -mno-sched-prolog -mlittle-endian -mabi=apcs-gnu -D__LINUX_ARM_ARCH__=5 -march=armv5te -mtune=arm9tdmi -msoft-float -Uarm -Wdeclaration-after-statement -c -o $(WFLAGS)
+export CFLAGS
+endif
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/pci_main_dev.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/pci_main_dev.c
new file mode 100644
index 000000000..ba58dfd7d
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/pci_main_dev.c
@@ -0,0 +1,1212 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+    Module Name:
+    pci_main_dev.c
+
+    Abstract:
+    Create and register network interface for PCI based chipsets in Linux platform.
+
+    Revision History:
+    Who         When            What
+    --------    ----------      ----------------------------------------------
+*/
+
+#include "rt_config.h"
+#include <linux/pci.h>
+
+//
+// Function declarations
+//
+extern int rt28xx_close(IN struct net_device *net_dev);
+extern int rt28xx_open(struct net_device *net_dev);
+
+static VOID __devexit rt2860_remove_one(struct pci_dev *pci_dev);
+static INT __devinit rt2860_probe(struct pci_dev *pci_dev, const struct pci_device_id  *ent);
+static void __exit rt2860_cleanup_module(void);
+static int __init rt2860_init_module(void);
+
+ static VOID RTMPInitPCIeDevice(
+    IN  struct pci_dev   *pci_dev,
+    IN PRTMP_ADAPTER     pAd);
+
+#ifdef CONFIG_PM
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,10)
+#define pm_message_t u32
+#endif
+
+static int rt2860_suspend(struct pci_dev *pci_dev, pm_message_t state);
+static int rt2860_resume(struct pci_dev *pci_dev);
+#endif
+#endif // CONFIG_PM //
+
+//
+// Ralink PCI device table, include all supported chipsets
+//
+static struct pci_device_id rt2860_pci_tbl[] __devinitdata =
+{
+#ifdef RT2860
+	{PCI_DEVICE(NIC_PCI_VENDOR_ID, NIC2860_PCI_DEVICE_ID)},		//RT28602.4G
+	{PCI_DEVICE(NIC_PCI_VENDOR_ID, NIC2860_PCIe_DEVICE_ID)},
+	{PCI_DEVICE(NIC_PCI_VENDOR_ID, NIC2760_PCI_DEVICE_ID)},
+	{PCI_DEVICE(NIC_PCI_VENDOR_ID, NIC2790_PCIe_DEVICE_ID)},
+/*	{PCI_DEVICE(VEN_AWT_PCI_VENDOR_ID, VEN_AWT_PCIe_DEVICE_ID)}, */
+/*	{PCI_DEVICE(EDIMAX_PCI_VENDOR_ID, 0x7708)},*/
+/*	{PCI_DEVICE(EDIMAX_PCI_VENDOR_ID, 0x7728)},*/
+	/*{PCI_DEVICE(EDIMAX_PCI_VENDOR_ID, 0x7758)},*/
+	/*{PCI_DEVICE(EDIMAX_PCI_VENDOR_ID, 0x7727)},*/
+	/*{PCI_DEVICE(EDIMAX_PCI_VENDOR_ID, 0x7738)},*/
+	/*{PCI_DEVICE(EDIMAX_PCI_VENDOR_ID, 0x7748)},*/
+	/*{PCI_DEVICE(EDIMAX_PCI_VENDOR_ID, 0x7768)},*/
+#endif // RT2860 //
+#ifdef RT35xx
+	{PCI_DEVICE(NIC_PCI_VENDOR_ID, NIC3062_PCI_DEVICE_ID)},
+	{PCI_DEVICE(NIC_PCI_VENDOR_ID, NIC3562_PCI_DEVICE_ID)},
+	{PCI_DEVICE(NIC_PCI_VENDOR_ID, NIC3060_PCI_DEVICE_ID)},
+#endif // RT35xx //
+    {0,}		// terminate list
+};
+
+MODULE_DEVICE_TABLE(pci, rt2860_pci_tbl);
+#ifdef CONFIG_STA_SUPPORT
+MODULE_LICENSE("GPL");
+#ifdef MODULE_VERSION
+MODULE_VERSION(STA_DRIVER_VERSION);
+#endif
+#endif // CONFIG_STA_SUPPORT //
+
+
+//
+// Our PCI driver structure
+//
+static struct pci_driver rt2860_driver =
+{
+    name:       "rt3060",
+    id_table:   rt2860_pci_tbl,
+    probe:      rt2860_probe,
+#if LINUX_VERSION_CODE >= 0x20412
+    remove:     __devexit_p(rt2860_remove_one),
+#else
+    remove:     __devexit(rt2860_remove_one),
+#endif
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
+#ifdef CONFIG_PM
+	suspend:	rt2860_suspend,
+	resume:		rt2860_resume,
+#endif
+#endif
+};
+
+
+/***************************************************************************
+ *
+ *	PCI device initialization related procedures.
+ *
+ ***************************************************************************/
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
+#ifdef CONFIG_PM
+
+VOID RT2860RejectPendingPackets(
+	IN	PRTMP_ADAPTER	pAd)
+{
+	// clear PS packets
+	// clear TxSw packets
+}
+
+static int rt2860_suspend(
+	struct pci_dev *pci_dev,
+	pm_message_t state)
+{
+	struct net_device *net_dev = pci_get_drvdata(pci_dev);
+	PRTMP_ADAPTER pAd = (PRTMP_ADAPTER)NULL;
+	INT32 retval = 0;
+
+
+	DBGPRINT(RT_DEBUG_TRACE, ("===> rt2860_suspend()\n"));
+
+	if (net_dev == NULL)
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("net_dev == NULL!\n"));
+	}
+	else
+	{
+		GET_PAD_FROM_NET_DEV(pAd, net_dev);
+
+		/* we can not use IFF_UP because ra0 down but ra1 up */
+		/* and 1 suspend/resume function for 1 module, not for each interface */
+		/* so Linux will call suspend/resume function once */
+		if (VIRTUAL_IF_NUM(pAd) > 0)
+		{
+			// avoid users do suspend after interface is down
+
+			// stop interface
+			netif_carrier_off(net_dev);
+			netif_stop_queue(net_dev);
+
+			// mark device as removed from system and therefore no longer available
+			netif_device_detach(net_dev);
+
+			// mark halt flag
+			RTMP_SET_FLAG(pAd, fRTMP_ADAPTER_HALT_IN_PROGRESS);
+			RTMP_SET_FLAG(pAd, fRTMP_ADAPTER_RADIO_OFF);
+
+			// take down the device
+			rt28xx_close((PNET_DEV)net_dev);
+
+			RT_MOD_DEC_USE_COUNT();
+		}
+	}
+
+#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,10)
+	// reference to http://vovo2000.com/type-lab/linux/kernel-api/linux-kernel-api.html
+	// enable device to generate PME# when suspended
+	// pci_choose_state(): Choose the power state of a PCI device to be suspended
+	retval = pci_enable_wake(pci_dev, pci_choose_state(pci_dev, state), 1);
+	// save the PCI configuration space of a device before suspending
+	pci_save_state(pci_dev);
+	// disable PCI device after use 
+	pci_disable_device(pci_dev);
+
+	retval = pci_set_power_state(pci_dev, pci_choose_state(pci_dev, state));
+#endif
+
+	DBGPRINT(RT_DEBUG_TRACE, ("<=== rt2860_suspend()\n"));
+	return retval;
+}
+
+static int rt2860_resume(
+	struct pci_dev *pci_dev)
+{
+	struct net_device *net_dev = pci_get_drvdata(pci_dev);
+	PRTMP_ADAPTER pAd = (PRTMP_ADAPTER)NULL;
+
+#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,10)
+	INT32 retval;
+
+
+	// set the power state of a PCI device
+	// PCI has 4 power states, DO (normal) ~ D3(less power)
+	// in include/linux/pci.h, you can find that
+	// #define PCI_D0          ((pci_power_t __force) 0)
+	// #define PCI_D1          ((pci_power_t __force) 1)
+	// #define PCI_D2          ((pci_power_t __force) 2)
+	// #define PCI_D3hot       ((pci_power_t __force) 3)
+	// #define PCI_D3cold      ((pci_power_t __force) 4)
+	// #define PCI_UNKNOWN     ((pci_power_t __force) 5)
+	// #define PCI_POWER_ERROR ((pci_power_t __force) -1)
+	retval = pci_set_power_state(pci_dev, PCI_D0);
+
+	// restore the saved state of a PCI device
+	pci_restore_state(pci_dev);
+
+	// initialize device before it's used by a driver
+	if (pci_enable_device(pci_dev))
+	{
+		printk("pci enable fail!\n");
+		return 0;
+	}
+#endif
+
+	DBGPRINT(RT_DEBUG_TRACE, ("===> rt2860_resume()\n"));
+
+	if (net_dev == NULL)
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("net_dev == NULL!\n"));
+	}
+	else
+		GET_PAD_FROM_NET_DEV(pAd, net_dev);
+
+	if (pAd != NULL)
+	{
+		/* we can not use IFF_UP because ra0 down but ra1 up */
+		/* and 1 suspend/resume function for 1 module, not for each interface */
+		/* so Linux will call suspend/resume function once */
+		if (VIRTUAL_IF_NUM(pAd) > 0)
+		{
+			// mark device as attached from system and restart if needed
+			netif_device_attach(net_dev);
+
+			if (rt28xx_open((PNET_DEV)net_dev) != 0)
+			{
+				// open fail
+				DBGPRINT(RT_DEBUG_TRACE, ("<=== rt2860_resume()\n"));
+				return 0;
+			}
+
+			// increase MODULE use count
+			RT_MOD_INC_USE_COUNT();
+
+			RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_HALT_IN_PROGRESS);
+			RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_RADIO_OFF);
+
+			netif_start_queue(net_dev);
+			netif_carrier_on(net_dev);
+			netif_wake_queue(net_dev);
+		}
+	}
+
+	DBGPRINT(RT_DEBUG_TRACE, ("<=== rt2860_resume()\n"));
+	return 0;
+}
+#endif // CONFIG_PM //
+#endif
+
+
+static INT __init rt2860_init_module(VOID)
+{
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
+	return pci_register_driver(&rt2860_driver);
+#else
+    return pci_module_init(&rt2860_driver);
+#endif
+}
+
+
+//
+// Driver module unload function
+//
+static VOID __exit rt2860_cleanup_module(VOID)
+{
+    pci_unregister_driver(&rt2860_driver);
+}
+
+module_init(rt2860_init_module);
+module_exit(rt2860_cleanup_module);
+
+
+//
+// PCI device probe & initialization function
+//
+static INT __devinit   rt2860_probe(
+    IN  struct pci_dev              *pci_dev, 
+    IN  const struct pci_device_id  *pci_id)
+{
+	PRTMP_ADAPTER 		pAd = (PRTMP_ADAPTER)NULL;
+	struct  net_device		*net_dev;
+	PVOID				handle;
+	PSTRING				print_name;
+	ULONG				csr_addr;
+	INT rv = 0;
+	RTMP_OS_NETDEV_OP_HOOK	netDevHook;
+
+	DBGPRINT(RT_DEBUG_TRACE, ("===> rt2860_probe\n"));
+
+//PCIDevInit==============================================
+	// wake up and enable device
+	if ((rv = pci_enable_device(pci_dev))!= 0)
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("Enable PCI device failed, errno=%d!\n", rv));
+		return rv;
+	}
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
+	print_name = pci_dev ? pci_name(pci_dev) : "rt3060";
+#else
+	print_name = pci_dev ? pci_dev->slot_name : "rt3060";
+#endif // LINUX_VERSION_CODE //
+
+	if ((rv = pci_request_regions(pci_dev, print_name)) != 0)
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("Request PCI resource failed, errno=%d!\n", rv));
+		goto err_out;
+	}
+	
+	// map physical address to virtual address for accessing register
+	csr_addr = (unsigned long) ioremap(pci_resource_start(pci_dev, 0), pci_resource_len(pci_dev, 0));
+	if (!csr_addr)
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("ioremap failed for device %s, region 0x%lX @ 0x%lX\n",
+					print_name, (ULONG)pci_resource_len(pci_dev, 0), (ULONG)pci_resource_start(pci_dev, 0)));
+		goto err_out_free_res;
+	}
+	else
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("%s: at 0x%lx, VA 0x%lx, IRQ %d. \n",  print_name, 
+					(ULONG)pci_resource_start(pci_dev, 0), (ULONG)csr_addr, pci_dev->irq));
+	}
+
+	// Set DMA master
+	pci_set_master(pci_dev);
+
+
+//RtmpDevInit==============================================
+	// Allocate RTMP_ADAPTER adapter structure
+	handle = kmalloc(sizeof(struct os_cookie), GFP_KERNEL);
+	if (handle == NULL)
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("%s(): Allocate memory for os handle failed!\n", __FUNCTION__));
+		goto err_out_iounmap;
+	}
+
+	((POS_COOKIE)handle)->pci_dev = pci_dev;
+	
+	rv = RTMPAllocAdapterBlock(handle, &pAd);	//shiang: we may need the pci_dev for allocate structure of "RTMP_ADAPTER"
+	if (rv != NDIS_STATUS_SUCCESS) 
+		goto err_out_iounmap;
+	// Here are the RTMP_ADAPTER structure with pci-bus specific parameters.
+	pAd->CSRBaseAddress = (PUCHAR)csr_addr;
+	DBGPRINT(RT_DEBUG_ERROR, ("pAd->CSRBaseAddress =0x%lx, csr_addr=0x%lx!\n", (ULONG)pAd->CSRBaseAddress, csr_addr));
+		
+	RTMPInitPCIeDevice(pci_dev, pAd);
+	
+//NetDevInit==============================================
+	net_dev = RtmpPhyNetDevInit(pAd, &netDevHook);
+	if (net_dev == NULL)
+		goto err_out_free_radev;
+	
+	// Here are the net_device structure with pci-bus specific parameters.
+	net_dev->irq = pci_dev->irq;		// Interrupt IRQ number
+	net_dev->base_addr = csr_addr;		// Save CSR virtual address and irq to device structure
+	pci_set_drvdata(pci_dev, net_dev);	// Set driver data
+	
+#ifdef NATIVE_WPA_SUPPLICANT_SUPPORT
+/* for supporting Network Manager */
+	/* Set the sysfs physical device reference for the network logical device
+	  * if set prior to registration will cause a symlink during initialization.
+	 */
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0))
+	SET_NETDEV_DEV(net_dev, &(pci_dev->dev));
+#endif
+#endif // NATIVE_WPA_SUPPLICANT_SUPPORT //
+
+
+//All done, it's time to register the net device to linux kernel.
+	// Register this device
+#ifdef RT_CFG80211_SUPPORT
+	pAd->pCfgDev = &(pci_dev->dev);
+	pAd->CFG80211_Register = CFG80211_Register;
+#endif // RT_CFG80211_SUPPORT //
+
+	rv = RtmpOSNetDevAttach(net_dev, &netDevHook);
+	if (rv)
+		goto err_out_free_netdev;
+
+#ifdef CONFIG_STA_SUPPORT
+	pAd->StaCfg.OriDevType = net_dev->type;
+#endif // CONFIG_STA_SUPPORT //
+
+#ifdef KTHREAD_SUPPORT
+	init_waitqueue_head(&pAd->cmdQTask.kthread_q);
+#endif // KTHREAD_SUPPORT //
+
+	DBGPRINT(RT_DEBUG_TRACE, ("<=== rt2860_probe\n"));
+
+	return 0; // probe ok
+
+
+	/* --------------------------- ERROR HANDLE --------------------------- */
+err_out_free_netdev:
+	RtmpOSNetDevFree(net_dev);
+	
+err_out_free_radev:
+	/* free RTMP_ADAPTER strcuture and os_cookie*/
+	RTMPFreeAdapter(pAd);
+
+err_out_iounmap:
+	iounmap((void *)(csr_addr));
+	release_mem_region(pci_resource_start(pci_dev, 0), pci_resource_len(pci_dev, 0)); 
+	
+err_out_free_res:
+	pci_release_regions(pci_dev);
+	
+err_out:
+	pci_disable_device(pci_dev);
+
+	DBGPRINT(RT_DEBUG_ERROR, ("<=== rt2860_probe failed with rv = %d!\n", rv));
+
+	return -ENODEV; /* probe fail */
+}
+
+
+static VOID __devexit rt2860_remove_one(
+    IN  struct pci_dev  *pci_dev)
+{
+	PNET_DEV	net_dev = pci_get_drvdata(pci_dev);
+	RTMP_ADAPTER	*pAd = NULL;
+	ULONG			csr_addr = net_dev->base_addr; // pAd->CSRBaseAddress;
+	
+	GET_PAD_FROM_NET_DEV(pAd, net_dev);
+	
+    DBGPRINT(RT_DEBUG_TRACE, ("===> rt2860_remove_one\n"));
+
+	if (pAd != NULL)
+	{
+		// Unregister/Free all allocated net_device.
+		RtmpPhyNetDevExit(pAd, net_dev);
+
+		// Unmap CSR base address
+		iounmap((char *)(csr_addr));
+		
+		// release memory region
+		release_mem_region(pci_resource_start(pci_dev, 0), pci_resource_len(pci_dev, 0));
+
+#ifdef RT_CFG80211_SUPPORT
+		CFG80211_UnRegister(pAd, net_dev);
+#endif // RT_CFG80211_SUPPORT //
+
+		// Free RTMP_ADAPTER related structures.
+		RtmpRaDevCtrlExit(pAd);
+		
+	}
+	else
+	{
+		// Unregister network device
+		RtmpOSNetDevDetach(net_dev);
+
+		// Unmap CSR base address
+		iounmap((char *)(net_dev->base_addr));
+
+		// release memory region
+		release_mem_region(pci_resource_start(pci_dev, 0), pci_resource_len(pci_dev, 0));
+	}
+
+	// Free the root net_device
+	RtmpOSNetDevFree(net_dev);
+	
+}
+ 
+
+/*
+========================================================================
+Routine Description:
+    Check the chipset vendor/product ID.
+
+Arguments:
+    _dev_p				Point to the PCI or USB device
+
+Return Value:
+    TRUE				Check ok
+	FALSE				Check fail
+
+Note:
+========================================================================
+*/
+BOOLEAN RT28XXChipsetCheck(
+	IN void *_dev_p)
+{
+	/* always TRUE */
+	return TRUE;
+}
+
+
+
+/***************************************************************************
+ *
+ *	PCIe device initialization related procedures.
+ *
+ ***************************************************************************/
+ static VOID RTMPInitPCIeDevice(
+    IN  struct pci_dev   *pci_dev,
+    IN PRTMP_ADAPTER     pAd)
+{
+	USHORT  device_id;
+	POS_COOKIE pObj;
+
+	pObj = (POS_COOKIE) pAd->OS_Cookie;
+	pci_read_config_word(pci_dev, PCI_DEVICE_ID, &device_id);
+	device_id = le2cpu16(device_id);
+	pObj->DeviceID = device_id;
+	OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_ADVANCE_POWER_SAVE_PCIE_DEVICE);
+	if (
+#ifdef RT2860
+		(device_id == NIC2860_PCIe_DEVICE_ID) || 
+		(device_id == NIC2790_PCIe_DEVICE_ID) ||
+		(device_id == VEN_AWT_PCIe_DEVICE_ID) ||
+#endif // RT2860 //
+
+		 0)
+	{
+		UINT32 MacCsr0 = 0, Index= 0;
+		do 
+		{
+			RTMP_IO_READ32(pAd, MAC_CSR0, &MacCsr0);
+
+			if ((MacCsr0 != 0x00) && (MacCsr0 != 0xFFFFFFFF))
+				break;
+
+			RTMPusecDelay(10);
+		} while (Index++ < 100);
+
+		// Support advanced power save after 2892/2790.
+		// MAC version at offset 0x1000 is 0x2872XXXX/0x2870XXXX(PCIe, USB, SDIO).
+		if ((MacCsr0&0xffff0000) != 0x28600000)
+		{
+#ifdef PCIE_PS_SUPPORT			
+			OPSTATUS_SET_FLAG(pAd, fOP_STATUS_ADVANCE_POWER_SAVE_PCIE_DEVICE);
+#endif // PCIE_PS_SUPPORT //
+			RtmpRaDevCtrlInit(pAd, RTMP_DEV_INF_PCIE);
+			return;
+		}
+		
+
+	}
+	RtmpRaDevCtrlInit(pAd, RTMP_DEV_INF_PCI);
+
+}
+
+#ifdef CONFIG_STA_SUPPORT
+#ifdef PCIE_PS_SUPPORT
+VOID RTMPInitPCIeLinkCtrlValue(
+	IN	PRTMP_ADAPTER	pAd)
+{
+    INT     pos;
+    USHORT	reg16, data2, PCIePowerSaveLevel, Configuration;
+	UINT32 MacValue;
+    BOOLEAN	bFindIntel = FALSE;
+	POS_COOKIE pObj;
+
+	pObj = (POS_COOKIE) pAd->OS_Cookie;
+
+	if (!OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_ADVANCE_POWER_SAVE_PCIE_DEVICE))
+		return;   
+
+    DBGPRINT(RT_DEBUG_TRACE, ("%s.===>\n", __FUNCTION__));
+	// Init EEPROM, and save settings
+	if (!(IS_RT3090(pAd) || IS_RT3572(pAd) || IS_RT3390(pAd)))
+	{
+		RT28xx_EEPROM_READ16(pAd, 0x22, PCIePowerSaveLevel);
+		pAd->PCIePowerSaveLevel = PCIePowerSaveLevel & 0xff;
+		pAd->LnkCtrlBitMask = 0;
+		if ((PCIePowerSaveLevel&0xff) == 0xff)
+		{
+			OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_ADVANCE_POWER_SAVE_PCIE_DEVICE);
+			DBGPRINT(RT_DEBUG_TRACE, ("====> PCIePowerSaveLevel = 0x%x.\n", PCIePowerSaveLevel));
+			return;
+		}
+	else
+	{
+		PCIePowerSaveLevel &= 0x3;
+		RT28xx_EEPROM_READ16(pAd, 0x24, data2);
+
+		if( !(((data2&0xff00) == 0x9200) && ((data2&0x80) !=0)) )
+		{
+			if (PCIePowerSaveLevel > 1 ) 
+				PCIePowerSaveLevel = 1;
+		}
+
+		DBGPRINT(RT_DEBUG_TRACE, ("====> Write 0x83 = 0x%x.\n", PCIePowerSaveLevel));
+		AsicSendCommandToMcu(pAd, 0x83, 0xff, (UCHAR)PCIePowerSaveLevel, 0x00);
+		RT28xx_EEPROM_READ16(pAd, 0x22, PCIePowerSaveLevel);
+		PCIePowerSaveLevel &= 0xff;
+		PCIePowerSaveLevel = PCIePowerSaveLevel >> 6;
+		switch(PCIePowerSaveLevel)
+		{
+				case 0:	// Only support L0
+					pAd->LnkCtrlBitMask = 0;
+				break;
+				case 1:	// Only enable L0s
+					pAd->LnkCtrlBitMask = 1;
+				break;
+				case 2:	// enable L1, L0s
+					pAd->LnkCtrlBitMask = 3;
+				break;
+				case 3:	// sync with host clk and enable L1, L0s
+				pAd->LnkCtrlBitMask = 0x103;
+				break;
+		}
+				RT28xx_EEPROM_READ16(pAd, 0x24, data2);
+				if ((PCIePowerSaveLevel&0xff) != 0xff)
+				{
+					PCIePowerSaveLevel &= 0x3;
+
+					if( !(((data2&0xff00) == 0x9200) && ((data2&0x80) !=0)) )
+					{
+						if (PCIePowerSaveLevel > 1 ) 
+							PCIePowerSaveLevel = 1;
+					}
+
+					DBGPRINT(RT_DEBUG_TRACE, ("====> rt28xx Write 0x83 Command = 0x%x.\n", PCIePowerSaveLevel));
+						       printk("\n\n\n%s:%d\n",__FUNCTION__,__LINE__);
+
+					AsicSendCommandToMcu(pAd, 0x83, 0xff, (UCHAR)PCIePowerSaveLevel, 0x00);
+				}
+		DBGPRINT(RT_DEBUG_TRACE, ("====> LnkCtrlBitMask = 0x%x.\n", pAd->LnkCtrlBitMask));
+	}   
+	}
+	else if (IS_RT3090(pAd) || IS_RT3572(pAd) || IS_RT3390(pAd))
+	{
+		UCHAR	LinkCtrlSetting = 0;
+
+		// Check 3090E special setting chip.
+			RT28xx_EEPROM_READ16(pAd, 0x24, data2);
+		if ((data2 == 0x9280) && ((pAd->MACVersion&0xffff) == 0x0211))
+		{
+			pAd->b3090ESpecialChip = TRUE;
+			DBGPRINT_RAW(RT_DEBUG_ERROR,("Special 3090E chip \n"));
+		}
+		
+		RTMP_IO_READ32(pAd, AUX_CTRL, &MacValue);
+		//enable WAKE_PCIE function, which forces to enable PCIE clock when mpu interrupt asserting.
+		//Force PCIE 125MHz CLK to toggle
+		MacValue |= 0x402;
+		RTMP_IO_WRITE32(pAd, AUX_CTRL, MacValue);
+		DBGPRINT_RAW(RT_DEBUG_ERROR,(" AUX_CTRL = 0x%32x\n", MacValue));
+
+		
+
+		// for RT30xx F and after, PCIe infterface, and for power solution 3
+		if ((IS_VERSION_AFTER_F(pAd)) 
+			&& (pAd->StaCfg.PSControl.field.rt30xxPowerMode >= 2)
+			&& (pAd->StaCfg.PSControl.field.rt30xxPowerMode <= 3))
+		{
+			RTMP_IO_READ32(pAd, AUX_CTRL, &MacValue);
+			DBGPRINT_RAW(RT_DEBUG_ERROR,(" Read AUX_CTRL = 0x%x\n", MacValue));
+			// turn on bit 12.
+			//enable 32KHz clock mode for power saving
+			MacValue |= 0x1000;
+			if (MacValue != 0xffffffff)
+			{
+				RTMP_IO_WRITE32(pAd, AUX_CTRL, MacValue);
+				DBGPRINT_RAW(RT_DEBUG_ERROR,(" Write AUX_CTRL = 0x%x\n", MacValue));
+				// 1. if use PCIePowerSetting is 2 or 3, need to program OSC_CTRL to 0x3ff11.
+				MacValue = 0x3ff11;
+				RTMP_IO_WRITE32(pAd, OSC_CTRL, MacValue);
+				DBGPRINT_RAW(RT_DEBUG_ERROR,(" OSC_CTRL = 0x%x\n", MacValue));
+				// 2. Write PCI register Clk ref bit
+				RTMPrt3xSetPCIePowerLinkCtrl(pAd);
+			}
+			else
+	{
+				// Error read Aux_Ctrl value.  Force to use solution 1
+				DBGPRINT(RT_DEBUG_ERROR,(" Error Value in AUX_CTRL = 0x%x\n", MacValue));
+				pAd->StaCfg.PSControl.field.rt30xxPowerMode = 1;
+				DBGPRINT(RT_DEBUG_ERROR,(" Force to use power solution1 \n"));
+			}
+		}
+		// 1. read setting from inf file.
+		
+		PCIePowerSaveLevel = (USHORT)pAd->StaCfg.PSControl.field.rt30xxPowerMode;
+		DBGPRINT(RT_DEBUG_ERROR, ("====> rt30xx Read PowerLevelMode =  0x%x.\n", PCIePowerSaveLevel));
+		// 2. Check EnableNewPS. 
+		if (pAd->StaCfg.PSControl.field.EnableNewPS == FALSE)
+			PCIePowerSaveLevel = 1;
+
+		if (IS_VERSION_BEFORE_F(pAd) && (pAd->b3090ESpecialChip == FALSE))
+		{
+			// Chip Version E only allow 1, So force set 1.
+			PCIePowerSaveLevel &= 0x1;
+			pAd->PCIePowerSaveLevel = (USHORT)PCIePowerSaveLevel;
+			DBGPRINT(RT_DEBUG_TRACE, ("====> rt30xx E Write 0x83 Command = 0x%x.\n", PCIePowerSaveLevel));
+
+			AsicSendCommandToMcu(pAd, 0x83, 0xff, (UCHAR)PCIePowerSaveLevel, 0x00);
+		}
+		else
+		{
+			// Chip Version F and after only allow 1 or 2 or 3. This might be modified after new chip version come out.
+			if (!((PCIePowerSaveLevel == 1) || (PCIePowerSaveLevel == 3)))
+				PCIePowerSaveLevel = 1;
+			DBGPRINT(RT_DEBUG_ERROR, ("====> rt30xx F Write 0x83 Command = 0x%x.\n", PCIePowerSaveLevel));
+			pAd->PCIePowerSaveLevel = (USHORT)PCIePowerSaveLevel;
+			// for 3090F , we need to add high-byte arg for 0x83 command to indicate the link control setting in 
+			// PCI Configuration Space. Because firmware can't read PCI Configuration Space
+			if ((pAd->Rt3xxRalinkLinkCtrl & 0x2) && (pAd->Rt3xxHostLinkCtrl & 0x2))
+			{
+				LinkCtrlSetting = 1;
+			}
+			DBGPRINT(RT_DEBUG_TRACE, ("====> rt30xxF LinkCtrlSetting = 0x%x.\n", LinkCtrlSetting));
+			AsicSendCommandToMcu(pAd, 0x83, 0xff, (UCHAR)PCIePowerSaveLevel, LinkCtrlSetting);
+		}
+  
+	}
+    
+    // Find Ralink PCIe Device's Express Capability Offset
+	pos = pci_find_capability(pObj->pci_dev, PCI_CAP_ID_EXP);
+
+    if (pos != 0)
+    {
+        // Ralink PCIe Device's Link Control Register Offset
+        pAd->RLnkCtrlOffset = pos + PCI_EXP_LNKCTL;
+    	pci_read_config_word(pObj->pci_dev, pAd->RLnkCtrlOffset, &reg16);
+        Configuration = le2cpu16(reg16);
+        DBGPRINT(RT_DEBUG_TRACE, ("Read (Ralink PCIe Link Control Register) offset 0x%x = 0x%x\n", 
+                                    pAd->RLnkCtrlOffset, Configuration));
+        pAd->RLnkCtrlConfiguration = (Configuration & 0x103);
+        Configuration &= 0xfefc;
+        Configuration |= (0x0);
+#ifdef RT2860
+		if ((pObj->DeviceID == NIC2860_PCIe_DEVICE_ID) 
+			||(pObj->DeviceID == NIC2790_PCIe_DEVICE_ID))
+		{
+			reg16 = cpu2le16(Configuration);
+			pci_write_config_word(pObj->pci_dev, pAd->RLnkCtrlOffset, reg16);
+			DBGPRINT(RT_DEBUG_TRACE, ("Write (Ralink PCIe Link Control Register)  offset 0x%x = 0x%x\n", 
+                                    pos + PCI_EXP_LNKCTL, Configuration));
+		}
+#endif // RT2860 //
+
+        RTMPFindHostPCIDev(pAd);
+        if (pObj->parent_pci_dev)
+        {
+		USHORT  vendor_id;
+
+		pci_read_config_word(pObj->parent_pci_dev, PCI_VENDOR_ID, &vendor_id);
+		vendor_id = le2cpu16(vendor_id);
+		if (vendor_id == PCIBUS_INTEL_VENDOR)
+                 {
+			bFindIntel = TRUE;
+                        RTMP_SET_PSFLAG(pAd, fRTMP_PS_TOGGLE_L1);
+                 }
+		/*
+		else if ((vendor_id == PCIBUS_AMD_VENDOR1)
+					&& (DeviceID == 0x96000000))
+				{
+					//Verified 2792 Aspire 8530 AMD NB (S3/S4/CBoot/WBoot/Chariot) by customer and ourselves.
+					// So use L1 Toggle method in this NB.
+			bFindIntel = TRUE;
+					RTMP_SET_PSFLAG(pAd, fRTMP_PS_TOGGLE_L1);
+					DBGPRINT(RT_DEBUG_TRACE, ("PSM : Aspire 8530 AMD NB. Use L1 Toggle. \n"));
+				}
+		*/
+		// Find PCI-to-PCI Bridge Express Capability Offset
+		pos = pci_find_capability(pObj->parent_pci_dev, PCI_CAP_ID_EXP);
+
+		if (pos != 0)
+		{
+			BOOLEAN		bChange = FALSE;
+			// PCI-to-PCI Bridge Link Control Register Offset
+			pAd->HostLnkCtrlOffset = pos + PCI_EXP_LNKCTL;
+			pci_read_config_word(pObj->parent_pci_dev, pAd->HostLnkCtrlOffset, &reg16);    
+			Configuration = le2cpu16(reg16);
+			DBGPRINT(RT_DEBUG_TRACE, ("Read (Host PCI-to-PCI Bridge Link Control Register) offset 0x%x = 0x%x\n", 
+			                            pAd->HostLnkCtrlOffset, Configuration));    
+			pAd->HostLnkCtrlConfiguration = (Configuration & 0x103);
+			Configuration &= 0xfefc;
+			Configuration |= (0x0);
+			
+			switch (pObj->DeviceID)
+			{
+#ifdef RT2860
+				case NIC2860_PCIe_DEVICE_ID:
+				case NIC2790_PCIe_DEVICE_ID:
+					bChange = TRUE;
+					break;
+#endif // RT2860 //
+				default:
+					break;
+			}
+				
+			if (bChange)
+			{
+				reg16 = cpu2le16(Configuration);
+				pci_write_config_word(pObj->parent_pci_dev, pAd->HostLnkCtrlOffset, reg16);
+				DBGPRINT(RT_DEBUG_TRACE, ("Write (Host PCI-to-PCI Bridge Link Control Register) offset 0x%x = 0x%x\n", 
+						pAd->HostLnkCtrlOffset, Configuration));
+			}
+		}
+		else
+		{
+			pAd->HostLnkCtrlOffset = 0;
+			DBGPRINT(RT_DEBUG_ERROR, ("%s: cannot find PCI-to-PCI Bridge PCI Express Capability!\n", __FUNCTION__));
+		}
+        }
+    }
+    else
+    {
+        pAd->RLnkCtrlOffset = 0;
+        pAd->HostLnkCtrlOffset = 0;
+        DBGPRINT(RT_DEBUG_ERROR, ("%s: cannot find Ralink PCIe Device's PCI Express Capability!\n", __FUNCTION__));
+    }
+
+    if (bFindIntel == FALSE)
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("Doesn't find Intel PCI host controller. \n"));
+		// Doesn't switch L0, L1, So set PCIePowerSaveLevel to 0xff
+		pAd->PCIePowerSaveLevel = 0xff;
+		if ((pAd->RLnkCtrlOffset != 0) 
+		)
+		{
+			pci_read_config_word(pObj->pci_dev, pAd->RLnkCtrlOffset, &reg16);
+			Configuration = le2cpu16(reg16);
+			DBGPRINT(RT_DEBUG_TRACE, ("Read (Ralink 30xx PCIe Link Control Register) offset 0x%x = 0x%x\n", 
+			                        pAd->RLnkCtrlOffset, Configuration));
+			pAd->RLnkCtrlConfiguration = (Configuration & 0x103);
+			Configuration &= 0xfefc;
+			Configuration |= (0x0);
+			reg16 = cpu2le16(Configuration);
+			pci_write_config_word(pObj->pci_dev, pAd->RLnkCtrlOffset, reg16);
+			DBGPRINT(RT_DEBUG_TRACE, ("Write (Ralink PCIe Link Control Register)  offset 0x%x = 0x%x\n", 
+			                        pos + PCI_EXP_LNKCTL, Configuration));
+		}
+	}
+}
+
+VOID RTMPFindHostPCIDev(
+    IN	PRTMP_ADAPTER	pAd)
+{
+    USHORT  reg16;
+    UCHAR   reg8;
+	UINT	DevFn;
+    PPCI_DEV    pPci_dev;
+	POS_COOKIE 	pObj;
+
+	pObj = (POS_COOKIE) pAd->OS_Cookie;
+
+	if (!OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_ADVANCE_POWER_SAVE_PCIE_DEVICE))
+		return;
+    
+    DBGPRINT(RT_DEBUG_TRACE, ("%s.===>\n", __FUNCTION__));
+
+    pObj->parent_pci_dev = NULL;
+    if (pObj->pci_dev->bus->parent)
+    {
+        for (DevFn = 0; DevFn < 255; DevFn++)
+        {
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
+            pPci_dev = pci_get_slot(pObj->pci_dev->bus->parent, DevFn);
+#else
+            pPci_dev = pci_find_slot(pObj->pci_dev->bus->parent->number, DevFn);
+#endif
+            if (pPci_dev)
+            {                
+                pci_read_config_word(pPci_dev, PCI_CLASS_DEVICE, &reg16);
+                reg16 = le2cpu16(reg16);
+                pci_read_config_byte(pPci_dev, PCI_CB_CARD_BUS, &reg8);
+                if ((reg16 == PCI_CLASS_BRIDGE_PCI) && 
+                    (reg8 == pObj->pci_dev->bus->number))
+                {
+                    pObj->parent_pci_dev = pPci_dev;
+                }
+            }
+        }
+    }
+}
+
+/*
+	========================================================================
+	
+	Routine Description:
+
+	Arguments:
+		Level = RESTORE_HALT : Restore PCI host and Ralink PCIe Link Control field to its default value.
+		Level = Other Value : Restore from dot11 power save or radio off status. And force PCI host Link Control fields to 0x1
+
+	========================================================================
+*/
+VOID RTMPPCIeLinkCtrlValueRestore(
+	IN	PRTMP_ADAPTER	pAd,
+	IN   UCHAR		Level)
+{
+	USHORT  PCIePowerSaveLevel, reg16;
+	USHORT	Configuration;
+	POS_COOKIE 	pObj;
+
+	pObj = (POS_COOKIE) pAd->OS_Cookie;
+
+	if (!OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_ADVANCE_POWER_SAVE_PCIE_DEVICE))
+		return;
+
+	// Check PSControl Configuration
+	if (pAd->StaCfg.PSControl.field.EnableNewPS == FALSE)
+		return TRUE;
+
+	//3090 will not execute the following codes.
+    	// Check interface : If not PCIe interface, return. 
+#ifdef RT2860
+	if (!((pObj->DeviceID == NIC2860_PCIe_DEVICE_ID) 
+		||(pObj->DeviceID == NIC2790_PCIe_DEVICE_ID)))
+		return;
+#endif // RT2860 //
+
+
+
+#ifdef RT3590
+	if ((pObj->DeviceID == NIC3590_PCIe_DEVICE_ID) 
+		||(pObj->DeviceID == NIC3591_PCIe_DEVICE_ID)
+		||(pObj->DeviceID == NIC3592_PCIe_DEVICE_ID))
+		return;
+#endif // RT3390 //
+
+	DBGPRINT(RT_DEBUG_TRACE, ("%s.===>\n", __FUNCTION__));
+	PCIePowerSaveLevel = pAd->PCIePowerSaveLevel;
+	if ((PCIePowerSaveLevel&0xff) == 0xff)
+	{
+		DBGPRINT(RT_DEBUG_TRACE,("return  \n"));
+		return;
+	}
+
+	if (pObj->parent_pci_dev && (pAd->HostLnkCtrlOffset != 0))
+    {
+        PCI_REG_READ_WORD(pObj->parent_pci_dev, pAd->HostLnkCtrlOffset, Configuration);
+        if ((Configuration != 0) &&
+            (Configuration != 0xFFFF))
+        {
+    		Configuration &= 0xfefc;
+    		// If call from interface down, restore to orginial setting.
+    		if (Level == RESTORE_CLOSE)
+    		{
+    			Configuration |= pAd->HostLnkCtrlConfiguration;
+    		}
+    		else
+    			Configuration |= 0x0;
+            PCI_REG_WIRTE_WORD(pObj->parent_pci_dev, pAd->HostLnkCtrlOffset, Configuration);
+    		DBGPRINT(RT_DEBUG_TRACE, ("Restore PCI host : offset 0x%x = 0x%x\n", pAd->HostLnkCtrlOffset, Configuration));
+        }
+        else
+            DBGPRINT(RT_DEBUG_ERROR, ("Restore PCI host : PCI_REG_READ_WORD failed (Configuration = 0x%x)\n", Configuration));
+    }
+	
+    if (pObj->pci_dev && (pAd->RLnkCtrlOffset != 0))
+    {           
+        PCI_REG_READ_WORD(pObj->pci_dev, pAd->RLnkCtrlOffset, Configuration);
+        if ((Configuration != 0) &&
+            (Configuration != 0xFFFF))
+        {
+    		Configuration &= 0xfefc;
+			// If call from interface down, restore to orginial setting.
+			if (Level == RESTORE_CLOSE)
+            	Configuration |= pAd->RLnkCtrlConfiguration;
+			else
+				Configuration |= 0x0;
+            PCI_REG_WIRTE_WORD(pObj->pci_dev, pAd->RLnkCtrlOffset, Configuration);
+    		DBGPRINT(RT_DEBUG_TRACE, ("Restore Ralink : offset 0x%x = 0x%x\n", pAd->RLnkCtrlOffset, Configuration));
+        }
+        else
+            DBGPRINT(RT_DEBUG_ERROR, ("Restore Ralink : PCI_REG_READ_WORD failed (Configuration = 0x%x)\n", Configuration));
+	}
+    
+	DBGPRINT(RT_DEBUG_TRACE,("%s <===\n", __FUNCTION__));
+}
+
+/*
+	========================================================================
+	
+	Routine Description:
+
+	Arguments:
+		Max : limit Host PCI and Ralink PCIe device's LINK CONTROL field's value. 
+		Because now frequently set our device to mode 1 or mode 3 will cause problem.
+		
+	========================================================================
+*/
+VOID RTMPPCIeLinkCtrlSetting(
+	IN	PRTMP_ADAPTER	pAd,
+	IN 	USHORT		Max)
+{
+	USHORT  PCIePowerSaveLevel, reg16;
+	USHORT	Configuration;
+	POS_COOKIE 	pObj;
+
+	pObj = (POS_COOKIE) pAd->OS_Cookie;
+
+	if (!OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_ADVANCE_POWER_SAVE_PCIE_DEVICE))
+		return;
+
+	// Check PSControl Configuration
+	if (pAd->StaCfg.PSControl.field.EnableNewPS == FALSE)
+		return TRUE;
+
+	// Check interface : If not PCIe interface, return.
+	//Block 3090 to enter the following function
+	
+#ifdef RT2860
+	if (!((pObj->DeviceID == NIC2860_PCIe_DEVICE_ID) 
+		||(pObj->DeviceID == NIC2790_PCIe_DEVICE_ID)))
+		return;
+#endif // RT2860 //
+
+	if (!RTMP_TEST_PSFLAG(pAd, fRTMP_PS_CAN_GO_SLEEP))
+	{
+		DBGPRINT(RT_DEBUG_INFO, ("RTMPPCIePowerLinkCtrl return on fRTMP_PS_CAN_GO_SLEEP flag\n"));			
+		return;
+	}
+	DBGPRINT(RT_DEBUG_TRACE,("%s===>\n", __FUNCTION__));
+	PCIePowerSaveLevel = pAd->PCIePowerSaveLevel;
+	if ((PCIePowerSaveLevel&0xff) == 0xff)
+	{
+		DBGPRINT(RT_DEBUG_TRACE,("return  \n"));
+		return;
+	}
+	PCIePowerSaveLevel = PCIePowerSaveLevel>>6;	    
+
+    // Skip non-exist deice right away
+	if (pObj->parent_pci_dev && (pAd->HostLnkCtrlOffset != 0))
+	{
+        PCI_REG_READ_WORD(pObj->parent_pci_dev, pAd->HostLnkCtrlOffset, Configuration);
+		switch (PCIePowerSaveLevel)
+		{
+			case 0:
+				// Set b0 and b1 of LinkControl (both 2892 and PCIe bridge) to 00 
+				Configuration &= 0xfefc;
+				break;
+			case 1:
+				// Set b0 and b1 of LinkControl (both 2892 and PCIe bridge) to 01 
+				Configuration &= 0xfefc;
+				Configuration |= 0x1;
+				break;
+			case 2:
+				//  Set b0 and b1 of LinkControl (both 2892 and PCIe bridge) to 11 
+				Configuration &= 0xfefc;
+				Configuration |= 0x3;
+				break;
+			case 3:
+				// Set b0 and b1 of LinkControl (both 2892 and PCIe bridge) to 11 and bit 8 of LinkControl of 2892 to 1
+				Configuration &= 0xfefc;
+				Configuration |= 0x103;				
+				break;
+		}
+        PCI_REG_WIRTE_WORD(pObj->parent_pci_dev, pAd->HostLnkCtrlOffset, Configuration);
+		DBGPRINT(RT_DEBUG_TRACE, ("Write PCI host offset 0x%x = 0x%x\n", pAd->HostLnkCtrlOffset, Configuration));
+	}
+
+	if (pObj->pci_dev && (pAd->RLnkCtrlOffset != 0))
+	{
+		// first 2892 chip not allow to frequently set mode 3. will cause hang problem.
+		if (PCIePowerSaveLevel > Max)
+			PCIePowerSaveLevel = Max;        
+
+        PCI_REG_READ_WORD(pObj->pci_dev, pAd->RLnkCtrlOffset, Configuration);
+		Configuration |= 0x100;
+        PCI_REG_WIRTE_WORD(pObj->pci_dev, pAd->RLnkCtrlOffset, Configuration);
+		DBGPRINT(RT_DEBUG_TRACE, ("Write Ralink device : offset 0x%x = 0x%x\n", pAd->RLnkCtrlOffset, Configuration));
+	}
+
+	DBGPRINT(RT_DEBUG_TRACE,("RTMPPCIePowerLinkCtrl <==============\n"));
+}
+/*
+	========================================================================
+	
+	Routine Description:
+		1. Write a PCI register for rt30xx power solution 3
+
+	========================================================================
+*/
+VOID RTMPrt3xSetPCIePowerLinkCtrl(
+	IN	PRTMP_ADAPTER	pAd)
+{
+	
+	ULONG	HostConfiguration;
+	ULONG	Configuration;
+	ULONG	Vendor;
+	ULONG	offset;
+	POS_COOKIE 	pObj;
+	INT     pos;
+    	USHORT	reg16;
+
+	pObj = (POS_COOKIE) pAd->OS_Cookie;
+
+	DBGPRINT(RT_DEBUG_INFO, ("RTMPrt3xSetPCIePowerLinkCtrl.===> %x\n", pAd->StaCfg.PSControl.word));
+	
+	// Check PSControl Configuration
+	if (pAd->StaCfg.PSControl.field.EnableNewPS == FALSE)
+		return;
+	RTMPFindHostPCIDev(pAd);
+        if (pObj->parent_pci_dev)
+        {
+		USHORT  vendor_id;
+		// Find PCI-to-PCI Bridge Express Capability Offset
+		pos = pci_find_capability(pObj->parent_pci_dev, PCI_CAP_ID_EXP);
+
+		if (pos != 0)
+		{
+			pAd->HostLnkCtrlOffset = pos + PCI_EXP_LNKCTL;
+		}
+	// If configurared to turn on L1. 
+	HostConfiguration = 0;
+		if (pAd->StaCfg.PSControl.field.rt30xxForceASPMTest == 1)
+		{
+						DBGPRINT(RT_DEBUG_TRACE, ("Enter,PSM : Force ASPM \n"));
+	
+			// Skip non-exist deice right away
+			if ((pAd->HostLnkCtrlOffset != 0))
+			{
+	       		 PCI_REG_READ_WORD(pObj->parent_pci_dev, pAd->HostLnkCtrlOffset, HostConfiguration);
+				// Prepare Configuration to write to Host
+#ifdef RELEASE_EXCLUDE
+/*
+	The 9th bit of Host Control is read-only bit and we skit it.
+	Therefore, the original methods of rt2790 will not casue any effect.
+*/
+#endif // RELEASE_EXCLUDE //
+				HostConfiguration |= 0x3;
+	        		PCI_REG_WIRTE_WORD(pObj->parent_pci_dev, pAd->HostLnkCtrlOffset, HostConfiguration);
+				pAd->Rt3xxHostLinkCtrl = HostConfiguration;
+				// Because in rt30xxForceASPMTest Mode, Force turn on L0s, L1.
+				// Fix HostConfiguration bit0:1 = 0x3 for later use.
+				HostConfiguration = 0x3;
+				DBGPRINT(RT_DEBUG_TRACE, ("PSM : Force ASPM : Host device L1/L0s Value =  0x%x\n", HostConfiguration));
+			}
+		}
+		else if (pAd->StaCfg.PSControl.field.rt30xxFollowHostASPM == 1)
+		{
+
+			// Skip non-exist deice right away
+			if ((pAd->HostLnkCtrlOffset != 0))
+			{
+	       		 PCI_REG_READ_WORD(pObj->parent_pci_dev, pAd->HostLnkCtrlOffset, HostConfiguration);
+				pAd->Rt3xxHostLinkCtrl = HostConfiguration;
+				HostConfiguration &= 0x3;
+				DBGPRINT(RT_DEBUG_TRACE, ("PSM : Follow Host ASPM : Host device L1/L0s Value =  0x%x\n", HostConfiguration));
+			}
+		}
+        }
+	// Prepare to write Ralink setting.
+	// Find Ralink PCIe Device's Express Capability Offset
+	pos = pci_find_capability(pObj->pci_dev, PCI_CAP_ID_EXP);
+
+    if (pos != 0)
+    {
+        // Ralink PCIe Device's Link Control Register Offset
+       pAd->RLnkCtrlOffset = pos + PCI_EXP_LNKCTL;
+    	pci_read_config_word(pObj->pci_dev, pAd->RLnkCtrlOffset, &reg16);
+        Configuration = le2cpu16(reg16);
+	DBGPRINT(RT_DEBUG_TRACE, ("Read (Ralink PCIe Link Control Register) offset 0x%x = 0x%x\n", 
+			                                    pAd->RLnkCtrlOffset, Configuration));
+		Configuration |= 0x100;
+		if ((pAd->StaCfg.PSControl.field.rt30xxFollowHostASPM == 1) 
+			|| (pAd->StaCfg.PSControl.field.rt30xxForceASPMTest == 1))
+		{
+			switch(HostConfiguration)
+			{
+				case 0:
+					Configuration &= 0xffffffc;
+					break;
+				case 1:
+					Configuration &= 0xffffffc;
+					Configuration |= 0x1;
+					break;
+				case 2:
+					Configuration &= 0xffffffc;
+					Configuration |= 0x2;
+					break;
+				case 3:
+					Configuration |= 0x3;
+					break;
+			}
+		}
+		reg16 = cpu2le16(Configuration);
+		pci_write_config_word(pObj->pci_dev, pAd->RLnkCtrlOffset, reg16);
+		pAd->Rt3xxRalinkLinkCtrl = Configuration;
+		DBGPRINT(RT_DEBUG_TRACE, ("PSM :Write Ralink device L1/L0s Value =  0x%x\n", Configuration));
+	}
+	DBGPRINT(RT_DEBUG_INFO,("PSM :RTMPrt3xSetPCIePowerLinkCtrl <==============\n"));
+	
+}
+#endif // PCIE_PS_SUPPORT //
+#endif // CONFIG_STA_SUPPORT //
+
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/pci_main_dev.o b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/pci_main_dev.o
new file mode 100644
index 0000000000000000000000000000000000000000..22f4f689114c74078b6fca6a92a38756fd808ca1
GIT binary patch
literal 8392
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

literal 0
HcmV?d00001

diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt3562sta.ko b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt3562sta.ko
new file mode 100644
index 0000000000000000000000000000000000000000..bcd2b9fac0d987fe0a0be263fe00568b963acc22
GIT binary patch
literal 1008207
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%0Ax3vU*
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
YFo1^3Ky#DOg*TuB%;4EO9lH1)0B1<X1^@s6

literal 0
HcmV?d00001

diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt3562sta.mod.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt3562sta.mod.c
new file mode 100644
index 000000000..e785d92dc
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt3562sta.mod.c
@@ -0,0 +1,149 @@
+#include <linux/module.h>
+#include <linux/vermagic.h>
+#include <linux/compiler.h>
+
+MODULE_INFO(vermagic, VERMAGIC_STRING);
+
+struct module __this_module
+__attribute__((section(".gnu.linkonce.this_module"))) = {
+ .name = KBUILD_MODNAME,
+ .init = init_module,
+#ifdef CONFIG_MODULE_UNLOAD
+ .exit = cleanup_module,
+#endif
+ .arch = MODULE_ARCH_INIT,
+};
+
+static const struct modversion_info ____versions[]
+__used
+__attribute__((section("__versions"))) = {
+	{ 0x24853d63, "module_layout" },
+	{ 0xfba2b770, "register_netdevice" },
+	{ 0x9a1dfd65, "strpbrk" },
+	{ 0x84b8edbb, "per_cpu__current_task" },
+	{ 0x9b4cebe0, "kmalloc_caches" },
+	{ 0x12da5bb2, "__kmalloc" },
+	{ 0xe640527d, "mem_map" },
+	{ 0xd6ee688f, "vmalloc" },
+	{ 0x349cba85, "strchr" },
+	{ 0x69a358a6, "iomem_resource" },
+	{ 0xd0d8621b, "strlen" },
+	{ 0xc7ec6c27, "strspn" },
+	{ 0x606bae0b, "dev_set_drvdata" },
+	{ 0xc8b57c27, "autoremove_wake_function" },
+	{ 0x7f9d99a2, "pci_disable_device" },
+	{ 0x267fc65b, "__tasklet_hi_schedule" },
+	{ 0xa03497ef, "netif_carrier_on" },
+	{ 0x5203432e, "skb_clone" },
+	{ 0xb98e4e4f, "dev_get_by_name" },
+	{ 0x105e2727, "__tracepoint_kmalloc" },
+	{ 0x7f84ea44, "netif_carrier_off" },
+	{ 0xb0a43979, "filp_close" },
+	{ 0x93bb0e20, "x86_dma_fallback_dev" },
+	{ 0xeae3dfd6, "__const_udelay" },
+	{ 0x83c2f3, "pci_release_regions" },
+	{ 0x6a9f26c9, "init_timer_key" },
+	{ 0x85df9b6c, "strsep" },
+	{ 0xd4d4f05e, "pci_enable_wake" },
+	{ 0x999e8297, "vfree" },
+	{ 0x712aa29b, "_spin_lock_irqsave" },
+	{ 0x3c2c5af5, "sprintf" },
+	{ 0x7d11c268, "jiffies" },
+	{ 0xacf48c14, "skb_trim" },
+	{ 0xe2d5255a, "strcmp" },
+	{ 0xf6e5f8d6, "netif_rx" },
+	{ 0xffc7c184, "__init_waitqueue_head" },
+	{ 0x9629486a, "per_cpu__cpu_number" },
+	{ 0x41344088, "param_get_charp" },
+	{ 0xc6b9275b, "pci_set_master" },
+	{ 0xe83fea1, "del_timer_sync" },
+	{ 0x16bfa528, "alloc_etherdev_mq" },
+	{ 0x1e7e5e85, "dev_alloc_skb" },
+	{ 0xb2c33749, "pci_restore_state" },
+	{ 0x8d3894f2, "_ctype" },
+	{ 0xb72397d5, "printk" },
+	{ 0x42224298, "sscanf" },
+	{ 0x212009a9, "kthread_stop" },
+	{ 0xacdeb154, "__tracepoint_module_get" },
+	{ 0xc5df3675, "free_netdev" },
+	{ 0x2f287f0d, "copy_to_user" },
+	{ 0xb6ed1e53, "strncpy" },
+	{ 0x1ee14c4d, "register_netdev" },
+	{ 0xb4390f9a, "mcount" },
+	{ 0x8724a99b, "wireless_send_event" },
+	{ 0x6c2e3320, "strncmp" },
+	{ 0xeb2642ef, "skb_push" },
+	{ 0x5c013870, "dev_close" },
+	{ 0x4b07e779, "_spin_unlock_irqrestore" },
+	{ 0xa5808bbf, "tasklet_init" },
+	{ 0x45450063, "mod_timer" },
+	{ 0x46085e4f, "add_timer" },
+	{ 0x55b3133e, "dma_release_from_coherent" },
+	{ 0xfda85a7d, "request_threaded_irq" },
+	{ 0x29f4f787, "skb_pull" },
+	{ 0xb1c547d1, "dev_kfree_skb_any" },
+	{ 0xe84c74a3, "dma_alloc_from_coherent" },
+	{ 0xe523ad75, "synchronize_irq" },
+	{ 0x61651be, "strcat" },
+	{ 0x79ad224b, "tasklet_kill" },
+	{ 0x80421f3d, "module_put" },
+	{ 0x4be972ca, "skb_copy_expand" },
+	{ 0xdb39cf3b, "netif_device_attach" },
+	{ 0xe5662700, "kmem_cache_alloc" },
+	{ 0xc37a7cb0, "netif_device_detach" },
+	{ 0x94ea6ee9, "__alloc_skb" },
+	{ 0x42c8de35, "ioremap_nocache" },
+	{ 0x566ef017, "pci_bus_read_config_word" },
+	{ 0xf0fdf6cb, "__stack_chk_fail" },
+	{ 0xd62c833f, "schedule_timeout" },
+	{ 0x4292364c, "schedule" },
+	{ 0x88c00f42, "eth_type_trans" },
+	{ 0xd7e2b6f6, "wake_up_process" },
+	{ 0xf413d6d4, "pskb_expand_head" },
+	{ 0x7c61340c, "__release_region" },
+	{ 0x6e6194e1, "pci_unregister_driver" },
+	{ 0x7ecb001b, "__per_cpu_offset" },
+	{ 0x6ad065f4, "param_set_charp" },
+	{ 0x642e54ac, "__wake_up" },
+	{ 0x16de041, "pci_set_power_state" },
+	{ 0xd2965f6f, "kthread_should_stop" },
+	{ 0x3aa1dbcf, "_spin_unlock_bh" },
+	{ 0x37a0cba, "kfree" },
+	{ 0xa130898e, "kthread_create" },
+	{ 0x82b1281f, "pci_request_regions" },
+	{ 0x33d92f9a, "prepare_to_wait" },
+	{ 0xedc03953, "iounmap" },
+	{ 0x3fc7e898, "__pci_register_driver" },
+	{ 0x9ccb2622, "finish_wait" },
+	{ 0x1a30b93a, "unregister_netdev" },
+	{ 0xb742fd7, "simple_strtol" },
+	{ 0xc8f471fe, "pci_choose_state" },
+	{ 0xce83c28a, "__netif_schedule" },
+	{ 0x8235805b, "memmove" },
+	{ 0x93cbd1ec, "_spin_lock_bh" },
+	{ 0x28aa89e3, "skb_put" },
+	{ 0xe971befc, "pci_enable_device" },
+	{ 0xd6c963c, "copy_from_user" },
+	{ 0x5967ba4a, "dev_get_drvdata" },
+	{ 0x9e7d6bd0, "__udelay" },
+	{ 0x3ace37c9, "dma_ops" },
+	{ 0xf20dabd8, "free_irq" },
+	{ 0x320bf8eb, "pci_save_state" },
+	{ 0xe914e41e, "strcpy" },
+	{ 0x99ad0582, "filp_open" },
+};
+
+static const char __module_depends[]
+__used
+__attribute__((section(".modinfo"))) =
+"depends=";
+
+MODULE_ALIAS("pci:v00001814d00000601sv*sd*bc*sc*i*");
+MODULE_ALIAS("pci:v00001814d00000681sv*sd*bc*sc*i*");
+MODULE_ALIAS("pci:v00001814d00000701sv*sd*bc*sc*i*");
+MODULE_ALIAS("pci:v00001814d00000781sv*sd*bc*sc*i*");
+MODULE_ALIAS("pci:v00001814d00003062sv*sd*bc*sc*i*");
+MODULE_ALIAS("pci:v00001814d00003562sv*sd*bc*sc*i*");
+MODULE_ALIAS("pci:v00001814d00003060sv*sd*bc*sc*i*");
+
+MODULE_INFO(srcversion, "1B235C939C281EE842C6509");
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt3562sta.mod.o b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt3562sta.mod.o
new file mode 100644
index 0000000000000000000000000000000000000000..cdc0e6b3dea873c4b0de1e7aa5af876caed89731
GIT binary patch
literal 9660
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

literal 0
HcmV?d00001

diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt3562sta.o b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt3562sta.o
new file mode 100644
index 0000000000000000000000000000000000000000..74daaf854227910795fb4804767e91fcaa8f1ba1
GIT binary patch
literal 999220
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

literal 0
HcmV?d00001

diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt_ate.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt_ate.c
new file mode 100644
index 000000000..c0b54cca8
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt_ate.c
@@ -0,0 +1,6992 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+ */
+
+#include "rt_config.h"
+
+#ifdef RALINK_ATE
+
+#if defined(RT30xx) || defined(RT2883)
+#define ATE_BBP_REG_NUM	168
+UCHAR restore_BBP[ATE_BBP_REG_NUM]={0};
+#endif // RT30xx //
+
+// 802.11 MAC Header, Type:Data, Length:24bytes
+UCHAR TemplateFrame[24] = {0x08,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+		0x00,0xAA,0xBB,0x12,0x34,0x56,0x00,0x11,0x22,0xAA,0xBB,0xCC,0x00,0x00};	
+ 
+extern RTMP_RF_REGS RF2850RegTable[];
+extern UCHAR NUM_OF_2850_CHNL;
+
+extern FREQUENCY_ITEM FreqItems3020[];
+extern UCHAR NUM_OF_3020_CHNL;
+
+#ifdef RT35xx
+extern FREQUENCY_ITEM FreqItems3572[];
+extern UCHAR NUM_OF_3572_CHNL;
+#endif // RT35xx //
+
+
+
+static CHAR CCKRateTable[] = {0, 1, 2, 3, 8, 9, 10, 11, -1}; /* CCK Mode. */
+static CHAR OFDMRateTable[] = {0, 1, 2, 3, 4, 5, 6, 7, -1}; /* OFDM Mode. */
+static CHAR HTMIXRateTable[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, -1}; /* HT Mix Mode. */
+
+
+static INT TxDmaBusy(
+	IN PRTMP_ADAPTER pAd);
+
+static INT RxDmaBusy(
+	IN PRTMP_ADAPTER pAd);
+
+static VOID RtmpDmaEnable(
+	IN PRTMP_ADAPTER pAd,
+	IN INT Enable);
+
+static VOID BbpSoftReset(
+	IN PRTMP_ADAPTER pAd);
+
+static VOID RtmpRfIoWrite(
+	IN PRTMP_ADAPTER pAd);
+
+static INT ATESetUpFrame(
+	IN PRTMP_ADAPTER pAd,
+	IN UINT32 TxIdx);
+
+static INT ATETxPwrHandler(
+	IN PRTMP_ADAPTER pAd,
+	IN char index);
+
+static NDIS_STATUS ATESTART(
+	IN PRTMP_ADAPTER pAd);
+
+static NDIS_STATUS ATESTOP(
+	IN PRTMP_ADAPTER pAd);
+
+static NDIS_STATUS TXCARR(
+	IN PRTMP_ADAPTER pAd);
+
+static NDIS_STATUS TXCONT(
+	IN PRTMP_ADAPTER pAd);
+
+static NDIS_STATUS TXFRAME(
+	IN PRTMP_ADAPTER pAd);
+
+static NDIS_STATUS RXFRAME(
+	IN PRTMP_ADAPTER pAd);
+
+#ifdef RALINK_28xx_QA
+static NDIS_STATUS TXSTOP(
+	IN PRTMP_ADAPTER pAd);
+
+static NDIS_STATUS RXSTOP(
+	IN PRTMP_ADAPTER pAd);
+#endif // RALINK_28xx_QA //
+
+static NDIS_STATUS ATECmdHandler(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg);
+
+#ifndef RT30xx
+static int CheckMCSValid(
+	IN UCHAR Mode,
+	IN UCHAR Mcs);
+#endif // RT30xx //
+
+#ifdef RT30xx
+static int CheckMCSValid(
+	IN UCHAR Mode,
+	IN UCHAR Mcs,
+	IN BOOLEAN bRT2070);
+#endif // RT30xx //
+
+#ifdef RTMP_MAC_PCI
+static VOID ATEWriteTxWI(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PTXWI_STRUC 	pOutTxWI,	
+	IN	BOOLEAN			FRAG,	
+	IN	BOOLEAN			CFACK,
+	IN	BOOLEAN			InsTimestamp,
+	IN	BOOLEAN 		AMPDU,
+	IN	BOOLEAN 		Ack,
+	IN	BOOLEAN 		NSeq,		// HW new a sequence.
+	IN	UCHAR			BASize,
+	IN	UCHAR			WCID,
+	IN	ULONG			Length,
+	IN	UCHAR 			PID,
+	IN	UCHAR			TID,
+	IN	UCHAR			TxRate,
+	IN	UCHAR			Txopmode,	
+	IN	BOOLEAN			CfAck,	
+	IN	HTTRANSMIT_SETTING	*pTransmit);
+#endif // RTMP_MAC_PCI //
+
+
+static VOID SetJapanFilter(
+	IN	PRTMP_ADAPTER	pAd);
+
+
+#ifdef RALINK_28xx_QA
+/* command id with Cmd Type == 0x0008(for 28xx)/0x0005(for iNIC) */
+#define RACFG_CMD_RF_WRITE_ALL		0x0000
+#define RACFG_CMD_E2PROM_READ16		0x0001
+#define RACFG_CMD_E2PROM_WRITE16		0x0002
+#define RACFG_CMD_E2PROM_READ_ALL	0x0003
+#define RACFG_CMD_E2PROM_WRITE_ALL	0x0004
+#define RACFG_CMD_IO_READ			0x0005
+#define RACFG_CMD_IO_WRITE			0x0006
+#define RACFG_CMD_IO_READ_BULK		0x0007
+#define RACFG_CMD_BBP_READ8			0x0008
+#define RACFG_CMD_BBP_WRITE8		0x0009
+#define RACFG_CMD_BBP_READ_ALL		0x000a
+#define RACFG_CMD_GET_COUNTER		0x000b
+#define RACFG_CMD_CLEAR_COUNTER		0x000c
+
+#define RACFG_CMD_RSV1				0x000d
+#define RACFG_CMD_RSV2				0x000e
+#define RACFG_CMD_RSV3				0x000f
+
+#define RACFG_CMD_TX_START			0x0010
+#define RACFG_CMD_GET_TX_STATUS		0x0011
+#define RACFG_CMD_TX_STOP			0x0012
+#define RACFG_CMD_RX_START			0x0013
+#define RACFG_CMD_RX_STOP			0x0014
+#define RACFG_CMD_GET_NOISE_LEVEL	0x0015
+
+#define RACFG_CMD_ATE_START			0x0080
+#define RACFG_CMD_ATE_STOP			0x0081
+
+#define RACFG_CMD_ATE_START_TX_CARRIER		0x0100
+#define RACFG_CMD_ATE_START_TX_CONT			0x0101
+#define RACFG_CMD_ATE_START_TX_FRAME		0x0102
+#define RACFG_CMD_ATE_SET_BW	            0x0103
+#define RACFG_CMD_ATE_SET_TX_POWER0	        0x0104
+#define RACFG_CMD_ATE_SET_TX_POWER1			0x0105
+#define RACFG_CMD_ATE_SET_FREQ_OFFSET		0x0106
+#define RACFG_CMD_ATE_GET_STATISTICS		0x0107
+#define RACFG_CMD_ATE_RESET_COUNTER			0x0108
+#define RACFG_CMD_ATE_SEL_TX_ANTENNA		0x0109
+#define RACFG_CMD_ATE_SEL_RX_ANTENNA		0x010a
+#define RACFG_CMD_ATE_SET_PREAMBLE			0x010b
+#define RACFG_CMD_ATE_SET_CHANNEL			0x010c
+#define RACFG_CMD_ATE_SET_ADDR1				0x010d
+#define RACFG_CMD_ATE_SET_ADDR2				0x010e
+#define RACFG_CMD_ATE_SET_ADDR3				0x010f
+#define RACFG_CMD_ATE_SET_RATE				0x0110
+#define RACFG_CMD_ATE_SET_TX_FRAME_LEN		0x0111
+#define RACFG_CMD_ATE_SET_TX_FRAME_COUNT	0x0112
+#define RACFG_CMD_ATE_START_RX_FRAME		0x0113
+#define RACFG_CMD_ATE_E2PROM_READ_BULK	0x0114
+#define RACFG_CMD_ATE_E2PROM_WRITE_BULK	0x0115
+#define RACFG_CMD_ATE_IO_WRITE_BULK		0x0116
+#define RACFG_CMD_ATE_BBP_READ_BULK		0x0117
+#define RACFG_CMD_ATE_BBP_WRITE_BULK	0x0118
+#define RACFG_CMD_ATE_RF_READ_BULK		0x0119
+#define RACFG_CMD_ATE_RF_WRITE_BULK		0x011a
+
+static VOID memcpy_exl(PRTMP_ADAPTER pAd, UCHAR *dst, UCHAR *src, ULONG len);
+static VOID memcpy_exs(PRTMP_ADAPTER pAd, UCHAR *dst, UCHAR *src, ULONG len);
+static VOID RTMP_IO_READ_BULK(PRTMP_ADAPTER pAd, UCHAR *dst, UCHAR *src, UINT32 len);
+
+#define	LEN_OF_ARG 16
+
+static inline INT ResponseToGUI(
+	IN  struct ate_racfghdr *pRaCfg,
+	IN	struct iwreq	*pwrq,
+	IN  INT Length,
+	IN  INT Status)
+{
+	(pRaCfg)->length = htons((Length));														
+	(pRaCfg)->status = htons((Status));														
+	(pwrq)->u.data.length = sizeof((pRaCfg)->magic_no) + sizeof((pRaCfg)->command_type)	
+							+ sizeof((pRaCfg)->command_id) + sizeof((pRaCfg)->length)		
+							+ sizeof((pRaCfg)->sequence) + ntohs((pRaCfg)->length);			
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("wrq->u.data.length = %d\n", (pwrq)->u.data.length));		
+	if (copy_to_user((pwrq)->u.data.pointer, (UCHAR *)(pRaCfg), (pwrq)->u.data.length))	
+	{																							
+		ATEDBGPRINT(RT_DEBUG_ERROR, ("copy_to_user() fail in %s\n", __FUNCTION__));				
+		return (-EFAULT);																		
+
+	}																							
+	else																						
+	{																							
+		ATEDBGPRINT(RT_DEBUG_TRACE, ("%s is done !\n", __FUNCTION__));							
+	}
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_ATE_START(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	ATEDBGPRINT(RT_DEBUG_TRACE,("RACFG_CMD_ATE_START\n"));
+	
+	/* Prepare feedback as soon as we can to avoid QA timeout. */
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status), NDIS_STATUS_SUCCESS);
+	Set_ATE_Proc(pAdapter, "ATESTART");
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_ATE_STOP(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	INT32 ret;
+
+	ATEDBGPRINT(RT_DEBUG_TRACE,("RACFG_CMD_ATE_STOP\n"));
+
+	/*
+		Distinguish this command came from QA(via ate agent)
+		or ate agent according to the existence of pid in payload.
+
+		No need to prepare feedback if this cmd came directly from ate agent,
+		not from QA.
+	*/
+	pRaCfg->length = ntohs(pRaCfg->length);
+
+	if (pRaCfg->length == sizeof(pAdapter->ate.AtePid))
+	{
+		/*
+			This command came from QA.
+			Get the pid of ATE agent.
+		*/
+		memcpy((UCHAR *)&pAdapter->ate.AtePid,
+						(&pRaCfg->data[0]) - 2/* == sizeof(pRaCfg->status) */,
+						sizeof(pAdapter->ate.AtePid));					
+
+		/* Prepare feedback as soon as we can to avoid QA timeout. */
+		ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status), NDIS_STATUS_SUCCESS);
+
+		/*
+			Kill ATE agent when leaving ATE mode.
+
+			We must kill ATE agent first before setting ATESTOP,
+			or Microsoft will report sth. wrong. 
+		*/
+#ifdef LINUX
+		ret = KILL_THREAD_PID(pAdapter->ate.AtePid, SIGTERM, 1);
+
+		if (ret)
+		{
+			ATEDBGPRINT(RT_DEBUG_ERROR, ("%s: unable to kill ate thread\n", pAdapter->net_dev->name));
+		}
+#endif // LINUX //
+	}
+
+
+	/* AP/STA might have in ATE_STOP mode due to cmd from QA. */
+	if (ATE_ON(pAdapter))
+	{
+		/* Someone has killed ate agent while QA GUI is still open. */
+		Set_ATE_Proc(pAdapter, "ATESTOP");
+		ATEDBGPRINT(RT_DEBUG_TRACE, ("RACFG_CMD_AP_START is done !\n"));
+	}
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_RF_WRITE_ALL(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	UINT32 R1, R2, R3, R4;
+	USHORT channel;
+	
+	memcpy(&R1, pRaCfg->data-2, 4);
+	memcpy(&R2, pRaCfg->data+2, 4);
+	memcpy(&R3, pRaCfg->data+6, 4);
+	memcpy(&R4, pRaCfg->data+10, 4);
+	memcpy(&channel, pRaCfg->data+14, 2);		
+	
+	pAdapter->LatchRfRegs.R1 = ntohl(R1);
+	pAdapter->LatchRfRegs.R2 = ntohl(R2);
+	pAdapter->LatchRfRegs.R3 = ntohl(R3);
+	pAdapter->LatchRfRegs.R4 = ntohl(R4);
+	pAdapter->LatchRfRegs.Channel = ntohs(channel);
+
+	RTMP_RF_IO_WRITE32(pAdapter, pAdapter->LatchRfRegs.R1);
+	RTMP_RF_IO_WRITE32(pAdapter, pAdapter->LatchRfRegs.R2);
+	RTMP_RF_IO_WRITE32(pAdapter, pAdapter->LatchRfRegs.R3);
+	RTMP_RF_IO_WRITE32(pAdapter, pAdapter->LatchRfRegs.R4);
+
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status), NDIS_STATUS_SUCCESS);
+
+	return  NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_E2PROM_READ16(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	UINT16	offset=0, value=0;
+	USHORT  tmp=0;				
+
+	offset = ntohs(pRaCfg->status);
+
+	/* "tmp" is especially for some compilers... */
+	RT28xx_EEPROM_READ16(pAdapter, offset, tmp);
+	value = tmp;
+	value = htons(value);
+	
+	ATEDBGPRINT(RT_DEBUG_TRACE,("EEPROM Read offset = 0x%04x, value = 0x%04x\n", offset, value));
+	memcpy(pRaCfg->data, &value, 2);
+
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status)+2, NDIS_STATUS_SUCCESS);
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_E2PROM_WRITE16(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	USHORT	offset, value;
+	
+	offset = ntohs(pRaCfg->status);
+	memcpy(&value, pRaCfg->data, 2);
+	value = ntohs(value);
+	RT28xx_EEPROM_WRITE16(pAdapter, offset, value);
+
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status), NDIS_STATUS_SUCCESS);
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_E2PROM_READ_ALL(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	USHORT buffer[EEPROM_SIZE/2];
+
+	rt_ee_read_all(pAdapter,(USHORT *)buffer);
+	memcpy_exs(pAdapter, pRaCfg->data, (UCHAR *)buffer, EEPROM_SIZE);
+
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status)+EEPROM_SIZE, NDIS_STATUS_SUCCESS);
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_E2PROM_WRITE_ALL(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	USHORT buffer[EEPROM_SIZE/2];
+
+	NdisZeroMemory((UCHAR *)buffer, EEPROM_SIZE);
+	memcpy_exs(pAdapter, (UCHAR *)buffer, (UCHAR *)&pRaCfg->status, EEPROM_SIZE);
+	rt_ee_write_all(pAdapter,(USHORT *)buffer);
+
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status), NDIS_STATUS_SUCCESS);
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_IO_READ(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	UINT32	offset;
+	UINT32	value;
+	
+	memcpy(&offset, &pRaCfg->status, 4);
+	offset = ntohl(offset);
+
+	/*
+		We do not need the base address.
+		So just extract the offset out.
+	*/
+	offset &= 0x0000FFFF;
+	RTMP_IO_READ32(pAdapter, offset, &value);
+	value = htonl(value);
+	memcpy(pRaCfg->data, &value, 4);
+
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status)+4, NDIS_STATUS_SUCCESS);
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_IO_WRITE(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	UINT32	offset, value;
+					
+	memcpy(&offset, pRaCfg->data-2, 4);
+	memcpy(&value, pRaCfg->data+2, 4);
+
+	offset = ntohl(offset);
+
+	/*
+		We do not need the base address.
+		So just extract the offset out.
+	*/
+	offset &= 0x0000FFFF;
+	value = ntohl(value);
+	ATEDBGPRINT(RT_DEBUG_TRACE,("RACFG_CMD_IO_WRITE: offset = %x, value = %x\n", offset, value));
+	RTMP_IO_WRITE32(pAdapter, offset, value);
+	
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status), NDIS_STATUS_SUCCESS);
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_IO_READ_BULK(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	UINT32	offset;
+	USHORT	len;
+	
+	memcpy(&offset, &pRaCfg->status, 4);
+	offset = ntohl(offset);
+
+	/*
+		We do not need the base address.
+		So just extract the offset out.
+	*/
+	offset &= 0x0000FFFF;
+	memcpy(&len, pRaCfg->data+2, 2);
+	len = ntohs(len);
+
+	if (len > 371)
+	{
+		ATEDBGPRINT(RT_DEBUG_TRACE,("length requested is too large, make it smaller\n"));
+		pRaCfg->length = htons(2);
+		pRaCfg->status = htons(1);
+		return -EFAULT;
+	}
+
+	RTMP_IO_READ_BULK(pAdapter, pRaCfg->data, (UCHAR *)offset, len*4);// unit in four bytes
+
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status)+(len*4), NDIS_STATUS_SUCCESS);
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_BBP_READ8(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	USHORT	offset;
+	UCHAR	value;
+	
+	value = 0;
+	offset = ntohs(pRaCfg->status);
+
+	if (ATE_ON(pAdapter))
+	{
+		ATE_BBP_IO_READ8_BY_REG_ID(pAdapter, offset, &value);
+	}
+	else
+	{
+		RTMP_BBP_IO_READ8_BY_REG_ID(pAdapter, offset, &value);	
+	}
+
+	pRaCfg->data[0] = value;
+	
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status)+1, NDIS_STATUS_SUCCESS);
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_BBP_WRITE8(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	USHORT	offset;
+	UCHAR	value;
+	
+	offset = ntohs(pRaCfg->status);
+	memcpy(&value, pRaCfg->data, 1);
+
+	if (ATE_ON(pAdapter))
+	{
+		ATE_BBP_IO_WRITE8_BY_REG_ID(pAdapter, offset, value);
+	}
+	else
+	{
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAdapter, offset, value);
+	}
+
+	if ((offset == BBP_R1) || (offset == BBP_R3))
+	{
+		SyncTxRxConfig(pAdapter, offset, value);
+	}
+	
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status), NDIS_STATUS_SUCCESS);
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_BBP_READ_ALL(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	USHORT bbp_reg_index;
+	
+	for (bbp_reg_index = 0; bbp_reg_index < MAX_BBP_ID+1; bbp_reg_index++)
+	{
+		pRaCfg->data[bbp_reg_index] = 0;
+		
+		if (ATE_ON(pAdapter))
+		{
+			ATE_BBP_IO_READ8_BY_REG_ID(pAdapter, bbp_reg_index, &pRaCfg->data[bbp_reg_index]);
+		}
+		else
+		{
+			RTMP_BBP_IO_READ8_BY_REG_ID(pAdapter, bbp_reg_index, &pRaCfg->data[bbp_reg_index]);
+		}
+	}
+	
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status)+MAX_BBP_ID+1, NDIS_STATUS_SUCCESS);
+	
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_GET_NOISE_LEVEL(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	UCHAR	channel;
+	INT32   buffer[3][10];/* 3 : RxPath ; 10 : no. of per rssi samples */
+
+	channel = (ntohs(pRaCfg->status) & 0x00FF);
+	CalNoiseLevel(pAdapter, channel, buffer);
+	memcpy_exl(pAdapter, (UCHAR *)pRaCfg->data, (UCHAR *)&(buffer[0][0]), (sizeof(INT32)*3*10));
+
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status)+(sizeof(INT32)*3*10), NDIS_STATUS_SUCCESS);
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_GET_COUNTER(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	memcpy_exl(pAdapter, &pRaCfg->data[0], (UCHAR *)&pAdapter->ate.U2M, 4);
+	memcpy_exl(pAdapter, &pRaCfg->data[4], (UCHAR *)&pAdapter->ate.OtherData, 4);
+	memcpy_exl(pAdapter, &pRaCfg->data[8], (UCHAR *)&pAdapter->ate.Beacon, 4);
+	memcpy_exl(pAdapter, &pRaCfg->data[12], (UCHAR *)&pAdapter->ate.OtherCount, 4);
+	memcpy_exl(pAdapter, &pRaCfg->data[16], (UCHAR *)&pAdapter->ate.TxAc0, 4);
+	memcpy_exl(pAdapter, &pRaCfg->data[20], (UCHAR *)&pAdapter->ate.TxAc1, 4);
+	memcpy_exl(pAdapter, &pRaCfg->data[24], (UCHAR *)&pAdapter->ate.TxAc2, 4);
+	memcpy_exl(pAdapter, &pRaCfg->data[28], (UCHAR *)&pAdapter->ate.TxAc3, 4);
+	memcpy_exl(pAdapter, &pRaCfg->data[32], (UCHAR *)&pAdapter->ate.TxHCCA, 4);
+	memcpy_exl(pAdapter, &pRaCfg->data[36], (UCHAR *)&pAdapter->ate.TxMgmt, 4);
+	memcpy_exl(pAdapter, &pRaCfg->data[40], (UCHAR *)&pAdapter->ate.RSSI0, 4);
+	memcpy_exl(pAdapter, &pRaCfg->data[44], (UCHAR *)&pAdapter->ate.RSSI1, 4);
+	memcpy_exl(pAdapter, &pRaCfg->data[48], (UCHAR *)&pAdapter->ate.RSSI2, 4);
+	memcpy_exl(pAdapter, &pRaCfg->data[52], (UCHAR *)&pAdapter->ate.SNR0, 4);
+	memcpy_exl(pAdapter, &pRaCfg->data[56], (UCHAR *)&pAdapter->ate.SNR1, 4);
+	
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status)+60, NDIS_STATUS_SUCCESS);
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_CLEAR_COUNTER(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	pAdapter->ate.U2M = 0;
+	pAdapter->ate.OtherData = 0;
+	pAdapter->ate.Beacon = 0;
+	pAdapter->ate.OtherCount = 0;
+	pAdapter->ate.TxAc0 = 0;
+	pAdapter->ate.TxAc1 = 0;
+	pAdapter->ate.TxAc2 = 0;
+	pAdapter->ate.TxAc3 = 0;
+	pAdapter->ate.TxHCCA = 0;
+	pAdapter->ate.TxMgmt = 0;
+	pAdapter->ate.TxDoneCount = 0;
+	
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status), NDIS_STATUS_SUCCESS);
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_TX_START(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	USHORT *p;
+	USHORT	err = 1;
+	UCHAR   Bbp22Value = 0, Bbp24Value = 0;
+
+	if ((pAdapter->ate.TxStatus != 0) && (pAdapter->ate.Mode & ATE_TXFRAME))
+	{
+		ATEDBGPRINT(RT_DEBUG_TRACE,("Ate Tx is already running, to run next Tx, you must stop it first\n"));
+		err = 2; 
+		goto TX_START_ERROR;
+	}
+	else if ((pAdapter->ate.TxStatus != 0) && !(pAdapter->ate.Mode & ATE_TXFRAME))
+	{
+		int i = 0;
+
+		while ((i++ < 10) && (pAdapter->ate.TxStatus != 0))
+		{
+			RTMPusecDelay(5000);
+		}
+
+		/* force it to stop */
+		pAdapter->ate.TxStatus = 0;
+		pAdapter->ate.TxDoneCount = 0;
+		pAdapter->ate.bQATxStart = FALSE;
+	}
+
+	/*
+		If pRaCfg->length == 0, this "RACFG_CMD_TX_START"
+		is for Carrier test or Carrier Suppression.
+	*/
+	if (ntohs(pRaCfg->length) != 0)
+	{
+		/* get frame info */
+
+		NdisMoveMemory(&pAdapter->ate.TxWI, pRaCfg->data + 2, 16);						
+#ifdef RT_BIG_ENDIAN
+		RTMPWIEndianChange((PUCHAR)&pAdapter->ate.TxWI, TYPE_TXWI);
+#endif // RT_BIG_ENDIAN //
+
+		NdisMoveMemory(&pAdapter->ate.TxCount, pRaCfg->data + 18, 4);
+		pAdapter->ate.TxCount = ntohl(pAdapter->ate.TxCount);
+
+		p = (USHORT *)(&pRaCfg->data[22]);
+
+		/* always use QID_AC_BE */
+		pAdapter->ate.QID = 0;
+
+		p = (USHORT *)(&pRaCfg->data[24]);
+		pAdapter->ate.HLen = ntohs(*p);
+
+		if (pAdapter->ate.HLen > 32)
+		{
+			ATEDBGPRINT(RT_DEBUG_ERROR,("pAdapter->ate.HLen > 32\n"));
+			err = 3;
+			goto TX_START_ERROR;
+		}
+
+		NdisMoveMemory(&pAdapter->ate.Header, pRaCfg->data + 26, pAdapter->ate.HLen);
+
+		pAdapter->ate.PLen = ntohs(pRaCfg->length) - (pAdapter->ate.HLen + 28);
+
+		if (pAdapter->ate.PLen > 32)
+		{
+			ATEDBGPRINT(RT_DEBUG_ERROR,("pAdapter->ate.PLen > 32\n"));
+			err = 4;
+			goto TX_START_ERROR;
+		}
+
+		NdisMoveMemory(&pAdapter->ate.Pattern, pRaCfg->data + 26 + pAdapter->ate.HLen, pAdapter->ate.PLen);
+		pAdapter->ate.DLen = pAdapter->ate.TxWI.MPDUtotalByteCount - pAdapter->ate.HLen;
+
+
+	}
+
+	ATE_BBP_IO_READ8_BY_REG_ID(pAdapter, BBP_R22, &Bbp22Value);
+
+	switch (Bbp22Value)
+	{
+		case BBP22_TXFRAME:
+			{
+				if (pAdapter->ate.TxCount == 0)
+				{
+#ifdef RTMP_MAC_PCI
+					pAdapter->ate.TxCount = 0xFFFFFFFF;
+#endif // RTMP_MAC_PCI //
+				}
+				ATEDBGPRINT(RT_DEBUG_TRACE,("START TXFRAME\n"));
+				pAdapter->ate.bQATxStart = TRUE;
+				Set_ATE_Proc(pAdapter, "TXFRAME");
+			}
+			break;
+
+		case BBP22_TXCONT_OR_CARRSUPP:
+			{
+				ATEDBGPRINT(RT_DEBUG_TRACE,("BBP22_TXCONT_OR_CARRSUPP\n"));
+				ATE_BBP_IO_READ8_BY_REG_ID(pAdapter, BBP_R24, &Bbp24Value);
+
+				switch (Bbp24Value)
+				{
+					case BBP24_TXCONT:
+						{
+							ATEDBGPRINT(RT_DEBUG_TRACE,("START TXCONT\n"));
+							pAdapter->ate.bQATxStart = TRUE;
+							Set_ATE_Proc(pAdapter, "TXCONT");
+						}
+						break;
+
+					case BBP24_CARRSUPP:
+						{
+							ATEDBGPRINT(RT_DEBUG_TRACE,("START TXCARRSUPP\n"));
+							pAdapter->ate.bQATxStart = TRUE;
+							pAdapter->ate.Mode |= ATE_TXCARRSUPP;
+						}
+						break;
+
+					default:
+						{
+							ATEDBGPRINT(RT_DEBUG_ERROR,("Unknown TX subtype !"));
+						}
+						break;
+				}
+			}
+			break;	
+
+		case BBP22_TXCARR:
+			{
+				ATEDBGPRINT(RT_DEBUG_TRACE,("START TXCARR\n"));
+				pAdapter->ate.bQATxStart = TRUE;
+				Set_ATE_Proc(pAdapter, "TXCARR");
+			}
+			break;							
+
+		default:
+			{
+				ATEDBGPRINT(RT_DEBUG_ERROR,("Unknown Start TX subtype !"));
+			}
+			break;
+	}
+
+	if (pAdapter->ate.bQATxStart == TRUE)
+	{
+		ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status), NDIS_STATUS_SUCCESS);
+		return NDIS_STATUS_SUCCESS;
+	}
+
+TX_START_ERROR:
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status), err);
+
+	return err;
+}
+
+
+static inline INT DO_RACFG_CMD_GET_TX_STATUS(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	UINT32 count=0;
+	
+	count = htonl(pAdapter->ate.TxDoneCount);
+	NdisMoveMemory(pRaCfg->data, &count, 4);
+
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status)+4, NDIS_STATUS_SUCCESS);
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_TX_STOP(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	ATEDBGPRINT(RT_DEBUG_TRACE,("RACFG_CMD_TX_STOP\n"));
+
+	Set_ATE_Proc(pAdapter, "TXSTOP");
+
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status), NDIS_STATUS_SUCCESS);
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_RX_START(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	ATEDBGPRINT(RT_DEBUG_TRACE,("RACFG_CMD_RX_START\n"));
+
+	pAdapter->ate.bQARxStart = TRUE;
+	Set_ATE_Proc(pAdapter, "RXFRAME");
+
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status), NDIS_STATUS_SUCCESS);
+
+	return NDIS_STATUS_SUCCESS;
+}	
+
+
+static inline INT DO_RACFG_CMD_RX_STOP(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	ATEDBGPRINT(RT_DEBUG_TRACE,("RACFG_CMD_RX_STOP\n"));
+
+	Set_ATE_Proc(pAdapter, "RXSTOP");
+
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status), NDIS_STATUS_SUCCESS);
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_ATE_START_TX_CARRIER(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	ATEDBGPRINT(RT_DEBUG_TRACE,("RACFG_CMD_ATE_START_TX_CARRIER\n"));
+
+	Set_ATE_Proc(pAdapter, "TXCARR");
+
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status), NDIS_STATUS_SUCCESS);
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_ATE_START_TX_CONT(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	ATEDBGPRINT(RT_DEBUG_TRACE,("RACFG_CMD_ATE_START_TX_CONT\n"));
+
+	Set_ATE_Proc(pAdapter, "TXCONT");
+
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status), NDIS_STATUS_SUCCESS);
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_ATE_START_TX_FRAME(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	ATEDBGPRINT(RT_DEBUG_TRACE,("RACFG_CMD_ATE_START_TX_FRAME\n"));
+
+	Set_ATE_Proc(pAdapter, "TXFRAME");
+
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status), NDIS_STATUS_SUCCESS);
+
+	return NDIS_STATUS_SUCCESS;
+}	
+
+
+static inline INT DO_RACFG_CMD_ATE_SET_BW(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	SHORT    value = 0;
+	STRING    str[LEN_OF_ARG];
+
+	NdisZeroMemory(str, LEN_OF_ARG);
+	
+	ATEDBGPRINT(RT_DEBUG_TRACE,("RACFG_CMD_ATE_SET_BW\n"));				
+
+	memcpy((PUCHAR)&value, (PUCHAR)&(pRaCfg->status), 2);
+	value = ntohs(value);
+	sprintf((char *)str, "%d", value);
+
+	Set_ATE_TX_BW_Proc(pAdapter, str);
+	
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status), NDIS_STATUS_SUCCESS);
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_ATE_SET_TX_POWER0(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	SHORT    value = 0;
+	STRING    str[LEN_OF_ARG];
+
+	NdisZeroMemory(str, LEN_OF_ARG);
+
+	ATEDBGPRINT(RT_DEBUG_TRACE,("RACFG_CMD_ATE_SET_TX_POWER0\n"));				
+
+	memcpy((PUCHAR)&value, (PUCHAR)&(pRaCfg->status), 2);
+	value = ntohs(value);
+	sprintf((char *)str, "%d", value);
+	Set_ATE_TX_POWER0_Proc(pAdapter, str);
+
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status), NDIS_STATUS_SUCCESS);
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_ATE_SET_TX_POWER1(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	SHORT    value = 0;
+	STRING    str[LEN_OF_ARG];
+
+	NdisZeroMemory(str, LEN_OF_ARG);
+	
+	ATEDBGPRINT(RT_DEBUG_TRACE,("RACFG_CMD_ATE_SET_TX_POWER1\n"));				
+
+	memcpy((PUCHAR)&value, (PUCHAR)&(pRaCfg->status), 2);
+	value = ntohs(value);
+	sprintf((char *)str, "%d", value);
+	Set_ATE_TX_POWER1_Proc(pAdapter, str);
+
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status), NDIS_STATUS_SUCCESS);
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_ATE_SET_FREQ_OFFSET(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	SHORT    value = 0;
+	STRING    str[LEN_OF_ARG];
+
+	NdisZeroMemory(str, LEN_OF_ARG);
+
+	ATEDBGPRINT(RT_DEBUG_TRACE,("RACFG_CMD_ATE_SET_FREQ_OFFSET\n"));				
+
+	memcpy((PUCHAR)&value, (PUCHAR)&(pRaCfg->status), 2);
+	value = ntohs(value);
+	sprintf((char *)str, "%d", value);
+	Set_ATE_TX_FREQOFFSET_Proc(pAdapter, str);
+
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status), NDIS_STATUS_SUCCESS);
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_ATE_GET_STATISTICS(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	ATEDBGPRINT(RT_DEBUG_TRACE,("RACFG_CMD_ATE_GET_STATISTICS\n"));
+
+	memcpy_exl(pAdapter, &pRaCfg->data[0], (UCHAR *)&pAdapter->ate.TxDoneCount, 4);
+	memcpy_exl(pAdapter, &pRaCfg->data[4], (UCHAR *)&pAdapter->WlanCounters.RetryCount.u.LowPart, 4);
+	memcpy_exl(pAdapter, &pRaCfg->data[8], (UCHAR *)&pAdapter->WlanCounters.FailedCount.u.LowPart, 4);
+	memcpy_exl(pAdapter, &pRaCfg->data[12], (UCHAR *)&pAdapter->WlanCounters.RTSSuccessCount.u.LowPart, 4);
+	memcpy_exl(pAdapter, &pRaCfg->data[16], (UCHAR *)&pAdapter->WlanCounters.RTSFailureCount.u.LowPart, 4);
+	memcpy_exl(pAdapter, &pRaCfg->data[20], (UCHAR *)&pAdapter->WlanCounters.ReceivedFragmentCount.QuadPart, 4);
+	memcpy_exl(pAdapter, &pRaCfg->data[24], (UCHAR *)&pAdapter->WlanCounters.FCSErrorCount.u.LowPart, 4);
+	memcpy_exl(pAdapter, &pRaCfg->data[28], (UCHAR *)&pAdapter->Counters8023.RxNoBuffer, 4);
+	memcpy_exl(pAdapter, &pRaCfg->data[32], (UCHAR *)&pAdapter->WlanCounters.FrameDuplicateCount.u.LowPart, 4);
+	memcpy_exl(pAdapter, &pRaCfg->data[36], (UCHAR *)&pAdapter->RalinkCounters.OneSecFalseCCACnt, 4);
+	
+	if (pAdapter->ate.RxAntennaSel == 0)
+	{
+		INT32 RSSI0 = 0;
+		INT32 RSSI1 = 0;
+		INT32 RSSI2 = 0;
+
+		RSSI0 = (INT32)(pAdapter->ate.LastRssi0 - pAdapter->BbpRssiToDbmDelta);
+		RSSI1 = (INT32)(pAdapter->ate.LastRssi1 - pAdapter->BbpRssiToDbmDelta);
+		RSSI2 = (INT32)(pAdapter->ate.LastRssi2 - pAdapter->BbpRssiToDbmDelta);
+		memcpy_exl(pAdapter, &pRaCfg->data[40], (UCHAR *)&RSSI0, 4);
+		memcpy_exl(pAdapter, &pRaCfg->data[44], (UCHAR *)&RSSI1, 4);
+		memcpy_exl(pAdapter, &pRaCfg->data[48], (UCHAR *)&RSSI2, 4);
+		ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status)+52, NDIS_STATUS_SUCCESS);
+	}
+	else
+	{
+		INT32 RSSI0 = 0;
+	
+		RSSI0 = (INT32)(pAdapter->ate.LastRssi0 - pAdapter->BbpRssiToDbmDelta);
+		memcpy_exl(pAdapter, &pRaCfg->data[40], (UCHAR *)&RSSI0, 4);
+		ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status)+44, NDIS_STATUS_SUCCESS);
+	}
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_ATE_RESET_COUNTER(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	SHORT    value = 1;
+	STRING    str[LEN_OF_ARG];
+
+	NdisZeroMemory(str, LEN_OF_ARG);
+
+	ATEDBGPRINT(RT_DEBUG_TRACE,("RACFG_CMD_ATE_RESET_COUNTER\n"));				
+
+	sprintf((char *)str, "%d", value);
+	Set_ResetStatCounter_Proc(pAdapter, str);
+
+	pAdapter->ate.TxDoneCount = 0;
+
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status), NDIS_STATUS_SUCCESS);
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_ATE_SEL_TX_ANTENNA(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)	
+{
+	SHORT    value = 0;
+	STRING    str[LEN_OF_ARG];
+
+	NdisZeroMemory(str, LEN_OF_ARG);
+	
+	ATEDBGPRINT(RT_DEBUG_TRACE,("RACFG_CMD_ATE_SEL_TX_ANTENNA\n"));				
+
+	memcpy((PUCHAR)&value, (PUCHAR)&(pRaCfg->status), 2);
+	value = ntohs(value);
+	sprintf((char *)str, "%d", value);
+	Set_ATE_TX_Antenna_Proc(pAdapter, str);
+
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status), NDIS_STATUS_SUCCESS);
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_ATE_SEL_RX_ANTENNA(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	SHORT    value = 0;
+	STRING    str[LEN_OF_ARG];
+
+	NdisZeroMemory(str, LEN_OF_ARG);
+	
+	ATEDBGPRINT(RT_DEBUG_TRACE,("RACFG_CMD_ATE_SEL_RX_ANTENNA\n"));				
+
+	memcpy((PUCHAR)&value, (PUCHAR)&(pRaCfg->status), 2);
+	value = ntohs(value);
+	sprintf((char *)str, "%d", value);
+	Set_ATE_RX_Antenna_Proc(pAdapter, str);
+
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status), NDIS_STATUS_SUCCESS);
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_ATE_SET_PREAMBLE(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	SHORT    value = 0;
+	STRING    str[LEN_OF_ARG];
+
+	NdisZeroMemory(str, LEN_OF_ARG);
+	
+	ATEDBGPRINT(RT_DEBUG_TRACE,("RACFG_CMD_ATE_SET_PREAMBLE\n"));				
+
+	memcpy((PUCHAR)&value, (PUCHAR)&(pRaCfg->status), 2);
+	value = ntohs(value);
+	sprintf((char *)str, "%d", value);
+	Set_ATE_TX_MODE_Proc(pAdapter, str);
+
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status), NDIS_STATUS_SUCCESS);
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_ATE_SET_CHANNEL(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	SHORT    value = 0;
+	STRING    str[LEN_OF_ARG];
+
+	NdisZeroMemory(str, LEN_OF_ARG);
+	
+	ATEDBGPRINT(RT_DEBUG_TRACE,("RACFG_CMD_ATE_SET_CHANNEL\n"));				
+
+	memcpy((PUCHAR)&value, (PUCHAR)&(pRaCfg->status), 2);
+	value = ntohs(value);
+	sprintf((char *)str, "%d", value);
+	Set_ATE_CHANNEL_Proc(pAdapter, str);
+
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status), NDIS_STATUS_SUCCESS);
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_ATE_SET_ADDR1(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	ATEDBGPRINT(RT_DEBUG_TRACE,("RACFG_CMD_ATE_SET_ADDR1\n"));
+
+	/*
+		Addr is an array of UCHAR,
+		so no need to perform endian swap.
+	*/
+	memcpy(pAdapter->ate.Addr1, (PUCHAR)(pRaCfg->data - 2), MAC_ADDR_LEN);
+
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status), NDIS_STATUS_SUCCESS);
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_ATE_SET_ADDR2(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	ATEDBGPRINT(RT_DEBUG_TRACE,("RACFG_CMD_ATE_SET_ADDR2\n"));
+
+	/*
+		Addr is an array of UCHAR,
+		so no need to perform endian swap.
+	*/
+	memcpy(pAdapter->ate.Addr2, (PUCHAR)(pRaCfg->data - 2), MAC_ADDR_LEN);
+
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status), NDIS_STATUS_SUCCESS);
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_ATE_SET_ADDR3(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	ATEDBGPRINT(RT_DEBUG_TRACE,("RACFG_CMD_ATE_SET_ADDR3\n"));
+
+	/*
+		Addr is an array of UCHAR,
+		so no need to perform endian swap.
+	*/
+	memcpy(pAdapter->ate.Addr3, (PUCHAR)(pRaCfg->data - 2), MAC_ADDR_LEN);
+
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status), NDIS_STATUS_SUCCESS);
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_ATE_SET_RATE(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	SHORT    value = 0;
+	STRING    str[LEN_OF_ARG];
+
+	NdisZeroMemory(str, LEN_OF_ARG);
+	
+	ATEDBGPRINT(RT_DEBUG_TRACE,("RACFG_CMD_ATE_SET_RATE\n"));				
+
+	memcpy((PUCHAR)&value, (PUCHAR)&(pRaCfg->status), 2);
+	value = ntohs(value);
+	sprintf((char *)str, "%d", value);
+	Set_ATE_TX_MCS_Proc(pAdapter, str);
+
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status), NDIS_STATUS_SUCCESS);
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_ATE_SET_TX_FRAME_LEN(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	SHORT    value = 0;
+	STRING    str[LEN_OF_ARG];
+
+	NdisZeroMemory(str, LEN_OF_ARG);
+	
+	ATEDBGPRINT(RT_DEBUG_TRACE,("RACFG_CMD_ATE_SET_TX_FRAME_LEN\n"));				
+
+	memcpy((PUCHAR)&value, (PUCHAR)&(pRaCfg->status), 2);
+	value = ntohs(value);
+	sprintf((char *)str, "%d", value);
+	Set_ATE_TX_LENGTH_Proc(pAdapter, str);
+
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status), NDIS_STATUS_SUCCESS);
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_ATE_SET_TX_FRAME_COUNT(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	USHORT    value = 0;
+	STRING    str[LEN_OF_ARG];
+
+	NdisZeroMemory(str, LEN_OF_ARG);
+	
+	ATEDBGPRINT(RT_DEBUG_TRACE,("RACFG_CMD_ATE_SET_TX_FRAME_COUNT\n"));				
+
+	memcpy((PUCHAR)&value, (PUCHAR)&(pRaCfg->status), 2);
+	value = ntohs(value);
+
+#ifdef RTMP_MAC_PCI
+	/* TX_FRAME_COUNT == 0 means tx infinitely */
+	if (value == 0)
+	{
+		/* Use TxCount = 0xFFFFFFFF to approximate the infinity. */
+		pAdapter->ate.TxCount = 0xFFFFFFFF;
+		ATEDBGPRINT(RT_DEBUG_TRACE, ("Set_ATE_TX_COUNT_Proc (TxCount = %d)\n", pAdapter->ate.TxCount));
+		ATEDBGPRINT(RT_DEBUG_TRACE, ("Ralink: Set_ATE_TX_COUNT_Proc Success\n"));
+
+
+	}
+	else
+#endif // RTMP_MAC_PCI //
+	{
+		sprintf((char *)str, "%d", value);
+		Set_ATE_TX_COUNT_Proc(pAdapter, str);
+	}
+
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status), NDIS_STATUS_SUCCESS);
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_ATE_START_RX_FRAME(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	ATEDBGPRINT(RT_DEBUG_TRACE,("RACFG_CMD_RX_START\n"));
+
+	Set_ATE_Proc(pAdapter, "RXFRAME");
+
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status), NDIS_STATUS_SUCCESS);
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_ATE_E2PROM_READ_BULK(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	USHORT offset;
+	USHORT len;
+	USHORT buffer[EEPROM_SIZE/2];
+	
+	offset = ntohs(pRaCfg->status);
+	memcpy(&len, pRaCfg->data, 2);
+	len = ntohs(len);
+	
+	rt_ee_read_all(pAdapter, (USHORT *)buffer);
+
+	if (offset + len <= EEPROM_SIZE)
+		memcpy_exs(pAdapter, pRaCfg->data, (UCHAR *)buffer+offset, len);
+	else
+		ATEDBGPRINT(RT_DEBUG_ERROR, ("exceed EEPROM size\n"));
+
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status)+len, NDIS_STATUS_SUCCESS);
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_ATE_E2PROM_WRITE_BULK(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	USHORT offset;
+	USHORT len;
+	USHORT buffer[EEPROM_SIZE/2];
+	
+	offset = ntohs(pRaCfg->status);
+	memcpy(&len, pRaCfg->data, 2);
+	len = ntohs(len);
+
+	rt_ee_read_all(pAdapter,(USHORT *)buffer);
+	memcpy_exs(pAdapter, (UCHAR *)buffer + offset, (UCHAR *)pRaCfg->data + 2, len);
+	rt_ee_write_all(pAdapter,(USHORT *)buffer);
+
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status), NDIS_STATUS_SUCCESS);
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_ATE_IO_WRITE_BULK(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	UINT32 offset, i, value;
+	USHORT len;
+	
+	memcpy(&offset, &pRaCfg->status, 4);
+	offset = ntohl(offset);
+	memcpy(&len, pRaCfg->data+2, 2);
+	len = ntohs(len);
+	
+	for (i = 0; i < len; i += 4)
+	{
+		memcpy_exl(pAdapter, (UCHAR *)&value, pRaCfg->data+4+i, 4);
+		ATEDBGPRINT(RT_DEBUG_TRACE,("Write %x %x\n", offset + i, value));
+		RTMP_IO_WRITE32(pAdapter, ((offset+i) & (0xffff)), value);
+	}
+
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status), NDIS_STATUS_SUCCESS);
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_ATE_BBP_READ_BULK(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	USHORT offset;
+	USHORT len;
+	USHORT j;
+	
+	offset = ntohs(pRaCfg->status);
+	memcpy(&len, pRaCfg->data, 2);
+	len = ntohs(len);
+	
+	for (j = offset; j < (offset+len); j++)
+	{
+		pRaCfg->data[j - offset] = 0;
+		
+		if (pAdapter->ate.Mode == ATE_STOP)
+		{
+			RTMP_BBP_IO_READ8_BY_REG_ID(pAdapter, j, &pRaCfg->data[j - offset]);
+		}
+		else
+		{
+			ATE_BBP_IO_READ8_BY_REG_ID(pAdapter, j, &pRaCfg->data[j - offset]);
+		}
+	}
+
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status)+len, NDIS_STATUS_SUCCESS);
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_ATE_BBP_WRITE_BULK(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	USHORT offset;
+	USHORT len;
+	USHORT j;
+	UCHAR *value;
+	
+	offset = ntohs(pRaCfg->status);
+	memcpy(&len, pRaCfg->data, 2);
+	len = ntohs(len);
+					
+	for (j = offset; j < (offset+len); j++)
+	{
+		value = pRaCfg->data + 2 + (j - offset);
+		if (pAdapter->ate.Mode == ATE_STOP)
+		{
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAdapter, j,  *value);
+		}
+		else
+		{
+			ATE_BBP_IO_WRITE8_BY_REG_ID(pAdapter, j,  *value);
+		}
+	}
+
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status), NDIS_STATUS_SUCCESS);
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+#ifdef RTMP_RF_RW_SUPPORT
+static inline INT DO_RACFG_CMD_ATE_RF_READ_BULK(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	USHORT offset;
+	USHORT len;
+	USHORT j;
+	
+	offset = ntohs(pRaCfg->status);
+	memcpy(&len, pRaCfg->data, 2);
+	len = ntohs(len);
+
+	for (j = offset; j < (offset+len); j++)
+	{
+		pRaCfg->data[j - offset] = 0;
+		ATE_RF_IO_READ8_BY_REG_ID(pAdapter, j,  &pRaCfg->data[j - offset]);
+	}
+
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status)+len, NDIS_STATUS_SUCCESS);
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+static inline INT DO_RACFG_CMD_ATE_RF_WRITE_BULK(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq,
+	IN  struct ate_racfghdr *pRaCfg)
+{
+	USHORT offset;
+	USHORT len;
+	USHORT j;
+	UCHAR *value;
+	
+	offset = ntohs(pRaCfg->status);
+	memcpy(&len, pRaCfg->data, 2);
+	len = ntohs(len);
+
+	for (j = offset; j < (offset+len); j++)
+	{
+		value = pRaCfg->data + 2 + (j - offset);
+		ATE_RF_IO_WRITE8_BY_REG_ID(pAdapter, j,  *value);
+	}
+
+	ResponseToGUI(pRaCfg, wrq, sizeof(pRaCfg->status), NDIS_STATUS_SUCCESS);
+
+	return NDIS_STATUS_SUCCESS;
+}
+#endif // RTMP_RF_RW_SUPPORT //
+#endif // RALINK_28xx_QA //
+
+
+#ifdef RTMP_MAC_PCI
+static INT TxDmaBusy(
+	IN PRTMP_ADAPTER pAd)
+{
+	INT result;
+	WPDMA_GLO_CFG_STRUC GloCfg;
+
+	RTMP_IO_READ32(pAd, WPDMA_GLO_CFG, &GloCfg.word);	// disable DMA
+	if (GloCfg.field.TxDMABusy)
+		result = 1;
+	else
+		result = 0;
+
+	return result;
+}
+
+
+static INT RxDmaBusy(
+	IN PRTMP_ADAPTER pAd)
+{
+	INT result;
+	WPDMA_GLO_CFG_STRUC GloCfg;
+
+	RTMP_IO_READ32(pAd, WPDMA_GLO_CFG, &GloCfg.word);	// disable DMA
+	if (GloCfg.field.RxDMABusy)
+		result = 1;
+	else
+		result = 0;
+
+	return result;
+}
+
+
+static VOID RtmpDmaEnable(
+	IN PRTMP_ADAPTER pAd,
+	IN INT Enable)
+{
+	BOOLEAN value;
+	ULONG WaitCnt;
+	WPDMA_GLO_CFG_STRUC GloCfg;
+	
+	value = Enable > 0 ? 1 : 0;
+
+	// check DMA is in busy mode.
+	WaitCnt = 0;
+
+	while (TxDmaBusy(pAd) || RxDmaBusy(pAd))
+	{
+		RTMPusecDelay(10);
+		if (WaitCnt++ > 100)
+			break;
+	}
+	
+	RTMP_IO_READ32(pAd, WPDMA_GLO_CFG, &GloCfg.word);	// disable DMA
+	GloCfg.field.EnableTxDMA = value;
+	GloCfg.field.EnableRxDMA = value;
+	RTMP_IO_WRITE32(pAd, WPDMA_GLO_CFG, GloCfg.word);	// abort all TX rings
+	RTMPusecDelay(5000);
+
+	return;
+}
+#endif // RTMP_MAC_PCI //
+
+
+
+
+static VOID BbpSoftReset(
+	IN PRTMP_ADAPTER pAd)
+{
+	UCHAR BbpData = 0;
+
+	// Soft reset, set BBP R21 bit0=1->0
+	ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R21, &BbpData);
+	BbpData |= 0x00000001; //set bit0=1
+	ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R21, BbpData);
+
+	ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R21, &BbpData);
+	BbpData &= ~(0x00000001); //set bit0=0
+	ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R21, BbpData);
+
+	return;
+}
+
+
+static VOID RtmpRfIoWrite(
+	IN PRTMP_ADAPTER pAd)
+{
+	// Set RF value 1's set R3[bit2] = [0]
+	RTMP_RF_IO_WRITE32(pAd, pAd->LatchRfRegs.R1);
+	RTMP_RF_IO_WRITE32(pAd, pAd->LatchRfRegs.R2);
+	RTMP_RF_IO_WRITE32(pAd, (pAd->LatchRfRegs.R3 & (~0x04)));
+	RTMP_RF_IO_WRITE32(pAd, pAd->LatchRfRegs.R4);
+
+	RTMPusecDelay(200);
+
+	// Set RF value 2's set R3[bit2] = [1]
+	RTMP_RF_IO_WRITE32(pAd, pAd->LatchRfRegs.R1);
+	RTMP_RF_IO_WRITE32(pAd, pAd->LatchRfRegs.R2);
+	RTMP_RF_IO_WRITE32(pAd, (pAd->LatchRfRegs.R3 | 0x04));
+	RTMP_RF_IO_WRITE32(pAd, pAd->LatchRfRegs.R4);
+
+	RTMPusecDelay(200);
+
+	// Set RF value 3's set R3[bit2] = [0]
+	RTMP_RF_IO_WRITE32(pAd, pAd->LatchRfRegs.R1);
+	RTMP_RF_IO_WRITE32(pAd, pAd->LatchRfRegs.R2);
+	RTMP_RF_IO_WRITE32(pAd, (pAd->LatchRfRegs.R3 & (~0x04)));
+	RTMP_RF_IO_WRITE32(pAd, pAd->LatchRfRegs.R4);
+
+	return;
+}
+
+
+#ifdef RT30xx
+static int CheckMCSValid(
+	UCHAR Mode,
+	UCHAR Mcs,
+	BOOLEAN bRT2070)
+#endif // RT30xx //
+#ifndef RT30xx
+static int CheckMCSValid(
+	IN UCHAR Mode,
+	IN UCHAR Mcs)
+#endif // RT30xx //
+{
+	int i;
+	PCHAR pRateTab;
+
+	switch (Mode)
+	{
+		case 0:
+			pRateTab = CCKRateTable;
+			break;
+		case 1:
+			pRateTab = OFDMRateTable;
+			break;
+		case 2:
+		case 3:
+#ifdef RT30xx
+			if (bRT2070)
+				pRateTab = OFDMRateTable;
+			else
+#endif // RT30xx //
+			pRateTab = HTMIXRateTable;
+			break;
+		default: 
+			ATEDBGPRINT(RT_DEBUG_ERROR, ("unrecognizable Tx Mode %d\n", Mode));
+			return -1;
+			break;
+	}
+
+	i = 0;
+	while (pRateTab[i] != -1)
+	{
+		if (pRateTab[i] == Mcs)
+			return 0;
+		i++;
+	}
+
+	return -1;
+}
+
+
+static INT ATETxPwrHandler(
+	IN PRTMP_ADAPTER pAd,
+	IN char index)
+{
+	ULONG R;
+	CHAR TxPower = 0;
+	UCHAR Bbp94 = 0;
+	BOOLEAN bPowerReduce = FALSE;
+#ifdef RTMP_RF_RW_SUPPORT
+	UCHAR RFValue = 0;
+#endif // RTMP_RF_RW_SUPPORT //
+
+#ifdef RALINK_28xx_QA
+	if ((pAd->ate.bQATxStart == TRUE) || (pAd->ate.bQARxStart == TRUE))
+	{
+		/* 
+			When QA is used for Tx, pAd->ate.TxPower0/1 and real tx power
+			are not synchronized.
+		*/
+		return 0;
+	}
+	else
+#endif // RALINK_28xx_QA //
+
+	if (index == 0)
+	{
+		TxPower = pAd->ate.TxPower0;
+	}
+	else if (index == 1)
+	{
+		TxPower = pAd->ate.TxPower1;
+	}
+	else
+	{
+		ATEDBGPRINT(RT_DEBUG_ERROR, ("Only TxPower0 and TxPower1 are adjustable !\n"));
+		ATEDBGPRINT(RT_DEBUG_ERROR, ("TxPower%d is out of range !\n", index));
+	}
+
+#ifdef RTMP_RF_RW_SUPPORT
+		if (IS_RT30xx(pAd))
+		{
+			// Set Tx Power
+			ATE_RF_IO_READ8_BY_REG_ID(pAd, RF_R12, (PUCHAR)&RFValue);
+			RFValue = (RFValue & 0xE0) | TxPower;
+			ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R12, (UCHAR)RFValue);
+			ATEDBGPRINT(RT_DEBUG_TRACE, ("3070 or 2070:%s (TxPower=%d, RFValue=%x)\n", __FUNCTION__, TxPower, RFValue));
+		}
+		else
+#ifdef RT35xx
+		if (IS_RT3572(pAd))
+		{
+			if (index == 0)
+			{
+				// Set Tx0 Power
+				ATE_RF_IO_READ8_BY_REG_ID(pAd, RF_R12, (PUCHAR)&RFValue);
+
+				if (pAd->ate.Channel <= 14)
+					RFValue = 0x60 | TxPower;
+				else
+					RFValue = 0xE0 | (TxPower & 0x3) | ((TxPower & 0xC) << 1);
+
+				ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R12, (UCHAR)RFValue);
+			}
+			else if (index == 1)
+			{
+				// Set Tx1 Power
+				ATE_RF_IO_READ8_BY_REG_ID(pAd, RF_R13, (PUCHAR)&RFValue);
+
+				if (pAd->ate.Channel <= 14)
+					RFValue = 0x60 | TxPower;
+				else
+					RFValue = 0xE0 | (TxPower & 0x3) | ((TxPower & 0xC) << 1);
+
+
+				ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R13, (UCHAR)RFValue);
+			}
+			else
+			{
+				ATEDBGPRINT(RT_DEBUG_ERROR, ("Only TxPower0 and TxPower1 are adjustable !\n"));
+				ATEDBGPRINT(RT_DEBUG_ERROR, ("TxPower%d is out of range !\n", index));
+			}
+		}
+		else
+#endif // RT35xx //
+#endif // RTMP_RF_RW_SUPPORT //
+	{
+		if (pAd->ate.Channel <= 14)
+		{
+			if (TxPower > 31)
+			{
+				// R3, R4 can't large than 31 (0x24), 31 ~ 36 used by BBP 94
+				R = 31;
+				if (TxPower <= 36)
+					Bbp94 = BBPR94_DEFAULT + (UCHAR)(TxPower - 31);		
+			}
+			else if (TxPower < 0)
+			{
+				// R3, R4 can't less than 0, -1 ~ -6 used by BBP 94
+				R = 0;
+				if (TxPower >= -6)
+					Bbp94 = BBPR94_DEFAULT + TxPower;
+			}
+			else
+			{  
+				// 0 ~ 31
+				R = (ULONG) TxPower;
+				Bbp94 = BBPR94_DEFAULT;
+			}
+
+			ATEDBGPRINT(RT_DEBUG_TRACE, ("%s (TxPower=%d, R=%ld, BBP_R94=%d)\n", __FUNCTION__, TxPower, R, Bbp94));
+		}
+		else /* 5.5 GHz */
+		{
+			if (TxPower > 15)
+			{
+				// R3, R4 can't large than 15 (0x0F)
+				R = 15;
+			}
+			else if (TxPower < 0)
+			{
+				// R3, R4 can't less than 0
+				// -1 ~ -7
+				ASSERT((TxPower >= -7));
+				R = (ULONG)(TxPower + 7);
+				bPowerReduce = TRUE;
+			}
+			else
+			{  
+				// 0 ~ 15
+				R = (ULONG) TxPower;
+			}
+
+			ATEDBGPRINT(RT_DEBUG_TRACE, ("%s (TxPower=%d, R=%lu)\n", __FUNCTION__, TxPower, R));
+		}
+
+		if (pAd->ate.Channel <= 14)
+		{
+			if (index == 0)
+			{
+				// shift TX power control to correct RF(R3) register bit position
+				R = R << 9;		
+				R |= (pAd->LatchRfRegs.R3 & 0xffffc1ff);
+				pAd->LatchRfRegs.R3 = R;
+			}
+			else
+			{
+				// shift TX power control to correct RF(R4) register bit position
+				R = R << 6;		
+				R |= (pAd->LatchRfRegs.R4 & 0xfffff83f);
+				pAd->LatchRfRegs.R4 = R;
+			}
+		}
+		else /* 5.5GHz */
+		{
+			if (bPowerReduce == FALSE)
+			{
+				if (index == 0)
+				{
+					// shift TX power control to correct RF(R3) register bit position
+					R = (R << 10) | (1 << 9);		
+					R |= (pAd->LatchRfRegs.R3 & 0xffffc1ff);
+					pAd->LatchRfRegs.R3 = R;
+				}
+				else
+				{
+					// shift TX power control to correct RF(R4) register bit position
+					R = (R << 7) | (1 << 6);		
+					R |= (pAd->LatchRfRegs.R4 & 0xfffff83f);
+					pAd->LatchRfRegs.R4 = R;
+				}
+			}
+			else
+			{
+				if (index == 0)
+				{
+					// shift TX power control to correct RF(R3) register bit position
+					R = (R << 10);		
+					R |= (pAd->LatchRfRegs.R3 & 0xffffc1ff);
+
+					/* Clear bit 9 of R3 to reduce 7dB. */ 
+					pAd->LatchRfRegs.R3 = (R & (~(1 << 9)));
+				}
+				else
+				{
+					// shift TX power control to correct RF(R4) register bit position
+					R = (R << 7);		
+					R |= (pAd->LatchRfRegs.R4 & 0xfffff83f);
+
+					/* Clear bit 6 of R4 to reduce 7dB. */ 
+					pAd->LatchRfRegs.R4 = (R & (~(1 << 6)));
+				}
+			}
+		}
+		RtmpRfIoWrite(pAd);
+	}
+
+	return 0;
+}
+
+
+static NDIS_STATUS ATESTART(
+	IN PRTMP_ADAPTER pAd)
+{
+	UINT32			MacData=0, atemode=0, temp=0;
+	NDIS_STATUS		Status = NDIS_STATUS_SUCCESS;
+#ifdef RTMP_MAC_PCI
+	UINT32			ring_index=0;
+	PTXD_STRUC		pTxD = NULL;
+#ifdef RT_BIG_ENDIAN
+    PTXD_STRUC      pDestTxD = NULL;
+    TXD_STRUC       TxD;
+#endif // RT_BIG_ENDIAN //
+#endif // RTMP_MAC_PCI //
+#if defined(RT30xx) || defined(RT2883)
+	UINT32			bbp_index=0;
+	UCHAR			RestoreRfICType=pAd->RfIcType;
+#endif // RT30xx || RT2883 //
+	UCHAR			BbpData = 0;
+
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("ATE : ===> %s\n", __FUNCTION__));
+
+#if defined(LINUX) || defined(VXWORKS)
+#ifdef RTMP_MAC_PCI
+	/* check if we have removed the firmware */
+	if (!(ATE_ON(pAd)))
+	{
+		NICEraseFirmware(pAd);
+	}
+#endif // RTMP_MAC_PCI //
+#endif // defined(LINUX) || defined(VXWORKS) //
+
+	atemode = pAd->ate.Mode;
+	pAd->ate.Mode = ATE_START;
+
+	/* Disable Rx */
+	RTMP_IO_READ32(pAd, MAC_SYS_CTRL, &MacData);
+	MacData &= ~(1 << 3);
+	RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, MacData);
+	
+	/* Disable auto responder */
+	RTMP_IO_READ32(pAd, AUTO_RSP_CFG, &temp);
+	temp = temp & 0xFFFFFFFE;
+	RTMP_IO_WRITE32(pAd, AUTO_RSP_CFG, temp);
+
+	/* clean bit4 to stop continuous Tx production test */
+	/* Disable or cancel pending irp first ??? */
+	RTMP_IO_READ32(pAd, MAC_SYS_CTRL, &MacData);
+	MacData &= 0xFFFFFFEF; 
+	RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, MacData);
+
+	if (atemode == ATE_TXCARR)
+	{
+		/* RT35xx ATE will reuse this code segment. */
+#ifdef RT30xx
+		/* Hardware Reset BBP */
+		RTMP_IO_READ32(pAd, MAC_SYS_CTRL, &temp);
+		temp = temp | 0x00000002;
+		RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, temp);
+		RTMP_IO_READ32(pAd, MAC_SYS_CTRL, &temp);
+		temp = temp & ~(0x00000002);
+		RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, temp);
+
+		/* Restore All BBP Value */
+		for (bbp_index=0;bbp_index<ATE_BBP_REG_NUM;bbp_index++)
+			ATE_BBP_IO_WRITE8_BY_REG_ID(pAd,bbp_index,restore_BBP[bbp_index]);
+#ifdef RT35xx
+		if (IS_RT3572(pAd))
+			ASSERT(RestoreRfICType != 0);
+#endif // RT35xx //
+
+		/*
+			The RfIcType will be reset to zero after the hardware reset bbp command.
+			Therefore, we must restore the original RfIcType.
+		*/
+		pAd->RfIcType=RestoreRfICType;
+#endif // RT30xx //
+
+		/* No Carrier Test set BBP R22 bit7=0, bit6=0, bit[5~0]=0x0 */
+		ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R22, &BbpData);
+		BbpData &= 0xFFFFFF00; // clear bit7, bit6, bit[5~0]	
+	    ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R22, BbpData);
+	}
+	else if (atemode == ATE_TXCARRSUPP)
+	{
+		/* RT35xx ATE will reuse this code segment. */
+#ifdef RT30xx
+		/* Hardware Reset BBP */
+		RTMP_IO_READ32(pAd, MAC_SYS_CTRL, &temp);
+		temp = temp | 0x00000002;
+		RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, temp);
+		RTMP_IO_READ32(pAd, MAC_SYS_CTRL, &temp);
+		temp = temp & ~(0x00000002);
+		RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, temp);
+
+		/* Restore All BBP Value */
+		for (bbp_index=0;bbp_index<ATE_BBP_REG_NUM;bbp_index++)
+			ATE_BBP_IO_WRITE8_BY_REG_ID(pAd,bbp_index,restore_BBP[bbp_index]);
+
+#ifdef RT35xx
+		if (IS_RT3572(pAd))
+			ASSERT(RestoreRfICType != 0);
+#endif // RT35xx //
+
+		/*
+			The RfIcType will be reset to zero after the hardware reset bbp command.
+			Therefore, we must restore the original RfIcType.
+		*/
+		pAd->RfIcType=RestoreRfICType;			
+#endif // RT30xx //
+
+		/* No Cont. TX set BBP R22 bit7=0 */
+		ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R22, &BbpData);
+		BbpData &= ~(1 << 7); // set bit7=0
+		ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R22, BbpData);
+
+		/* No Carrier Suppression set BBP R24 bit0=0 */
+		ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R24, &BbpData);
+		BbpData &= 0xFFFFFFFE; // clear bit0	
+	    ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R24, BbpData);
+	}		
+
+	/*
+		We should free some resource which was allocated
+		when ATE_TXFRAME , ATE_STOP, and ATE_TXCONT.
+	*/
+	else if ((atemode & ATE_TXFRAME) || (atemode == ATE_STOP))
+	{
+#ifdef RTMP_MAC_PCI
+		PRTMP_TX_RING pTxRing = &pAd->TxRing[QID_AC_BE];
+#endif // RTMP_MAC_PCI //
+		if ((atemode == ATE_TXCONT) || (atemode == ATE_TXFRAME))
+		{
+#if defined(RT30xx) || defined(RT2883)
+
+			/* Hardware Reset BBP */
+			RTMP_IO_READ32(pAd, MAC_SYS_CTRL, &temp);
+			temp = temp | 0x00000002;
+			RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, temp);
+			RTMP_IO_READ32(pAd, MAC_SYS_CTRL, &temp);
+			temp = temp & ~(0x00000002);
+			RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, temp);
+
+			/* Restore All BBP Value */
+			for (bbp_index=0;bbp_index<ATE_BBP_REG_NUM;bbp_index++)
+				ATE_BBP_IO_WRITE8_BY_REG_ID(pAd,bbp_index,restore_BBP[bbp_index]);
+#ifdef RT35xx
+		if (IS_RT3572(pAd))
+			ASSERT(RestoreRfICType != 0);
+#endif // RT35xx //
+
+		/*
+			The RfIcType will be reset to zero after the hardware reset bbp command.
+			Therefore, we must restore the original RfIcType.
+		*/
+		pAd->RfIcType=RestoreRfICType;			
+#endif // RT30xx || RT2883 //
+
+			/* Not Cont. TX anymore, so set BBP R22 bit7=0 */
+			ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R22, &BbpData);
+			BbpData &= ~(1 << 7); // set bit7=0
+			ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R22, BbpData);
+		}
+
+		/* Abort Tx, Rx DMA. */
+		RtmpDmaEnable(pAd, 0);
+#ifdef RTMP_MAC_PCI
+		for (ring_index=0; ring_index<TX_RING_SIZE; ring_index++)
+		{
+			PNDIS_PACKET  pPacket;
+
+#ifndef RT_BIG_ENDIAN
+		    pTxD = (PTXD_STRUC)pAd->TxRing[QID_AC_BE].Cell[ring_index].AllocVa;
+#else
+    		pDestTxD = (PTXD_STRUC)pAd->TxRing[QID_AC_BE].Cell[ring_index].AllocVa;
+    		TxD = *pDestTxD;
+    		pTxD = &TxD;
+    		RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD);
+#endif // !RT_BIG_ENDIAN //
+			pTxD->DMADONE = 0;
+			pPacket = pTxRing->Cell[ring_index].pNdisPacket;
+
+			if (pPacket)
+			{
+				PCI_UNMAP_SINGLE(pAd, pTxD->SDPtr0, pTxD->SDLen0, PCI_DMA_TODEVICE);
+				RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_SUCCESS);
+			}
+
+			/* Always assign pNdisPacket as NULL after clear */
+			pTxRing->Cell[ring_index].pNdisPacket = NULL;
+
+			pPacket = pTxRing->Cell[ring_index].pNextNdisPacket;
+
+			if (pPacket)
+			{
+				PCI_UNMAP_SINGLE(pAd, pTxD->SDPtr1, pTxD->SDLen1, PCI_DMA_TODEVICE);
+				RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_SUCCESS);
+			}
+
+			/* Always assign pNextNdisPacket as NULL after clear */
+			pTxRing->Cell[ring_index].pNextNdisPacket = NULL;
+#ifdef RT_BIG_ENDIAN
+			RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD);
+			WriteBackToDescriptor((PUCHAR)pDestTxD, (PUCHAR)pTxD, FALSE, TYPE_TXD);
+#endif // RT_BIG_ENDIAN //
+		}
+#endif // RTMP_MAC_PCI //
+
+		/* Start Tx, RX DMA */
+		RtmpDmaEnable(pAd, 1);
+	}
+
+
+	/* reset Rx statistics. */
+	pAd->ate.LastSNR0 = 0;
+	pAd->ate.LastSNR1 = 0;
+	pAd->ate.LastRssi0 = 0;
+	pAd->ate.LastRssi1 = 0;
+	pAd->ate.LastRssi2 = 0;
+	pAd->ate.AvgRssi0 = 0;
+	pAd->ate.AvgRssi1 = 0;
+	pAd->ate.AvgRssi2 = 0;
+	pAd->ate.AvgRssi0X8 = 0;
+	pAd->ate.AvgRssi1X8 = 0;
+	pAd->ate.AvgRssi2X8 = 0;
+	pAd->ate.NumOfAvgRssiSample = 0;
+
+#ifdef RALINK_28xx_QA
+	/* Tx frame */
+	pAd->ate.bQATxStart = FALSE;
+	pAd->ate.bQARxStart = FALSE;
+	pAd->ate.seq = 0; 
+
+	/* counters */
+	pAd->ate.U2M = 0;
+	pAd->ate.OtherData = 0;
+	pAd->ate.Beacon = 0;
+	pAd->ate.OtherCount = 0;
+	pAd->ate.TxAc0 = 0;
+	pAd->ate.TxAc1 = 0;
+	pAd->ate.TxAc2 = 0;
+	pAd->ate.TxAc3 = 0;
+	pAd->ate.TxHCCA = 0;
+	pAd->ate.TxMgmt = 0;
+	pAd->ate.RSSI0 = 0;
+	pAd->ate.RSSI1 = 0;
+	pAd->ate.RSSI2 = 0;
+	pAd->ate.SNR0 = 0;
+	pAd->ate.SNR1 = 0;
+
+	/* control */
+	pAd->ate.TxDoneCount = 0;
+	// TxStatus : 0 --> task is idle, 1 --> task is running
+	pAd->ate.TxStatus = 0;
+#endif // RALINK_28xx_QA //
+
+	// Soft reset BBP.
+	BbpSoftReset(pAd);
+
+
+#ifdef CONFIG_STA_SUPPORT 
+	/* LinkDown() has "AsicDisableSync();" and "RTMP_BBP_IO_R/W8_BY_REG_ID();" inside. */
+//	LinkDown(pAd, FALSE);
+//	AsicEnableBssSync(pAd);
+	AsicDisableSync(pAd);
+#ifdef RTMP_MAC_PCI
+#if defined(LINUX) || defined(VXWORKS)
+	RTMP_OS_NETDEV_STOP_QUEUE(pAd->net_dev);
+#endif // defined(LINUX) || defined(VXWORKS) //
+#endif // RTMP_MAC_PCI //
+	/* 
+		If we skip "LinkDown()", we should disable protection
+		to prevent from sending out RTS or CTS-to-self.
+	*/
+	ATEDisableAsicProtect(pAd);
+	RTMPStationStop(pAd);
+#endif // CONFIG_STA_SUPPORT //
+
+#ifdef RTMP_MAC_PCI
+	/* Disable Tx */
+	RTMP_IO_READ32(pAd, MAC_SYS_CTRL, &MacData);
+	MacData &= ~(1 << 2);
+	RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, MacData);
+
+	/* Disable Rx */
+	RTMP_IO_READ32(pAd, MAC_SYS_CTRL, &MacData);
+	MacData &= ~(1 << 3);
+	RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, MacData);
+
+#endif // RTMP_MAC_PCI //
+
+
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("ATE : <=== %s\n", __FUNCTION__));
+	return Status;
+}
+
+
+static NDIS_STATUS ATESTOP(
+	IN PRTMP_ADAPTER pAd)
+{
+	UINT32			MacData=0, ring_index=0;
+	NDIS_STATUS		Status = NDIS_STATUS_SUCCESS;
+#ifdef RTMP_MAC_PCI
+	PRXD_STRUC		pRxD = NULL;
+#endif // RTMP_MAC_PCI //
+#ifdef RT35xx
+	UINT32			bbp_index=0;
+	UCHAR			RestoreRfICType=pAd->RfIcType;
+#endif // RT35xx // 
+	UCHAR			BbpData = 0;
+
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("ATE : ===> %s\n", __FUNCTION__));
+
+#ifdef RT35xx// todo
+	/* hardware reset BBP */
+	RTMP_IO_READ32(pAd, MAC_SYS_CTRL, &MacData);
+	MacData = MacData | 0x00000002;
+	RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, MacData);
+
+	RTMPusecDelay(10000);
+
+	RTMP_IO_READ32(pAd, MAC_SYS_CTRL, &MacData);
+	MacData = MacData & ~(0x00000002);
+	RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, MacData);
+
+	/* Supposed that we have had a record in restore_BBP[] */
+	/* restore all BBP value */
+	for (bbp_index=0;bbp_index<ATE_BBP_REG_NUM;bbp_index++)
+		ATE_BBP_IO_WRITE8_BY_REG_ID(pAd,bbp_index,restore_BBP[bbp_index]);
+
+	/*
+		The RfIcType will be reset to zero after the hardware reset bbp command.
+		Therefore, we must restore the original RfIcType.
+	*/
+	ASSERT(RestoreRfICType != 0);
+	pAd->RfIcType=RestoreRfICType;
+#endif // RT35xx // 
+	/*
+		Abort Tx, RX DMA.
+		Q   : How to do the following I/O if Tx, Rx DMA is aborted ?
+		Ans : Bulk endpoints are aborted, while the control endpoint is not.
+	*/
+
+	/* Default value in BBP R22 is 0x0. */
+	BbpData = 0;
+	ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R22, BbpData);
+
+	/* Clean bit4 to stop continuous Tx production test. */
+	RTMP_IO_READ32(pAd, MAC_SYS_CTRL, &MacData);
+	MacData &= 0xFFFFFFEF;
+	RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, MacData); 
+	
+	/* Disable Rx */
+	RTMP_IO_READ32(pAd, MAC_SYS_CTRL, &MacData);
+	MacData &= ~(1 << 3);
+	RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, MacData);
+	
+	/* Abort Tx, RX DMA */
+	RtmpDmaEnable(pAd, 0);
+
+	/* Disable Tx */
+	RTMP_IO_READ32(pAd, MAC_SYS_CTRL, &MacData);
+	MacData &= ~(1 << 2);
+	RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, MacData);
+
+#ifdef RTMP_MAC_PCI
+#if defined(LINUX) || defined(VXWORKS)
+	pAd->ate.bFWLoading = TRUE;
+
+	Status = NICLoadFirmware(pAd);
+
+	if (Status != NDIS_STATUS_SUCCESS)
+	{
+		ATEDBGPRINT(RT_DEBUG_ERROR, ("NICLoadFirmware failed, Status[=0x%08x]\n", Status));
+		return Status;
+	}
+#endif // defined(LINUX) || defined(VXWORKS) //
+	pAd->ate.Mode = ATE_STOP;
+
+	/*
+		Even the firmware has been loaded, 
+		we still could use ATE_BBP_IO_READ8_BY_REG_ID(). 
+		But this is not suggested.
+	*/
+	BbpSoftReset(pAd);
+
+	RTMP_ASIC_INTERRUPT_DISABLE(pAd);
+	
+	NICInitializeAdapter(pAd, TRUE);
+	
+	/*
+		Reinitialize Rx Ring before Rx DMA is enabled.
+		>>>RxCoherent<<< was gone !
+	*/
+	for (ring_index = 0; ring_index < RX_RING_SIZE; ring_index++)
+	{
+		pRxD = (PRXD_STRUC) pAd->RxRing.Cell[ring_index].AllocVa;
+		pRxD->DDONE = 0;
+	}
+
+	/* We should read EEPROM for all cases. */  
+	NICReadEEPROMParameters(pAd, NULL);
+	NICInitAsicFromEEPROM(pAd); 
+
+	AsicSwitchChannel(pAd, pAd->CommonCfg.Channel, FALSE);
+
+	/* empty function */
+	AsicLockChannel(pAd, pAd->CommonCfg.Channel);		
+
+	/* clear garbage interrupts */
+	RTMP_IO_WRITE32(pAd, INT_SOURCE_CSR, 0xffffffff);
+	/* Enable Interrupt */
+	RTMP_ASIC_INTERRUPT_ENABLE(pAd);
+#endif // RTMP_MAC_PCI //
+
+
+	/* restore RX_FILTR_CFG */
+
+#ifdef CONFIG_STA_SUPPORT 
+	/* restore RX_FILTR_CFG due to that QA maybe set it to 0x3 */
+	RTMP_IO_WRITE32(pAd, RX_FILTR_CFG, STANORMAL);
+#endif // CONFIG_STA_SUPPORT //
+
+	/* Enable Tx */
+	RTMP_IO_READ32(pAd, MAC_SYS_CTRL, &MacData);
+	MacData |= (1 << 2);
+	RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, MacData);
+
+	/* move to above */
+
+	/* Enable Tx, Rx DMA. */
+	RtmpDmaEnable(pAd, 1);
+
+	/* Enable Rx */
+	RTMP_IO_READ32(pAd, MAC_SYS_CTRL, &MacData);
+	MacData |= (1 << 3);
+	RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, MacData);
+
+#ifdef RTMP_MAC_PCI
+
+#ifdef CONFIG_STA_SUPPORT 
+	RTMPStationStart(pAd);
+#endif // CONFIG_STA_SUPPORT //
+#endif // RTMP_MAC_PCI
+
+
+#if defined(LINUX) || defined(VXWORKS)
+	RTMP_OS_NETDEV_START_QUEUE(pAd->net_dev);
+#endif // defined(LINUX) || defined(VXWORKS) //
+
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("ATE : <=== %s\n", __FUNCTION__));
+	return Status;
+}
+
+
+static NDIS_STATUS TXCARR(
+	IN PRTMP_ADAPTER pAd)
+{
+	UINT32			MacData=0;
+	NDIS_STATUS		Status = NDIS_STATUS_SUCCESS;
+#ifdef RT30xx
+	UINT32			bbp_index=0;	 
+#endif // RT30xx //
+	UCHAR			BbpData = 0;
+
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("ATE : ===> %s\n", __FUNCTION__));
+
+	pAd->ate.Mode = ATE_TXCARR;
+
+	/* RT35xx ATE will reuse this code segment. */
+#ifdef RT30xx
+	for (bbp_index=0;bbp_index<ATE_BBP_REG_NUM;bbp_index++)
+		restore_BBP[bbp_index]=0;
+	/* Record All BBP Value */
+	for (bbp_index=0;bbp_index<ATE_BBP_REG_NUM;bbp_index++)
+		ATE_BBP_IO_READ8_BY_REG_ID(pAd,bbp_index,&restore_BBP[bbp_index]);
+#endif // RT30xx //
+
+
+	/* QA has done the following steps if it is used. */
+	if (pAd->ate.bQATxStart == FALSE) 
+	{
+		/* Soft reset BBP. */
+		BbpSoftReset(pAd);
+
+		/* Carrier Test set BBP R22 bit7=1, bit6=1, bit[5~0]=0x01 */
+		ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R22, &BbpData);
+		BbpData &= 0xFFFFFF00; // clear bit7, bit6, bit[5~0]
+		BbpData |= 0x000000C1; // set bit7=1, bit6=1, bit[5~0]=0x01
+		ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R22, BbpData);
+
+		/* set MAC_SYS_CTRL(0x1004) Continuous Tx Production Test (bit4) = 1 */
+		RTMP_IO_READ32(pAd, MAC_SYS_CTRL, &MacData);
+		MacData = MacData | 0x00000010;
+		RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, MacData);
+	}
+
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("ATE : <=== %s\n", __FUNCTION__));
+	return Status;
+}
+
+
+static NDIS_STATUS TXCONT(
+	IN PRTMP_ADAPTER pAd)
+{
+	UINT32			MacData=0;
+	NDIS_STATUS		Status = NDIS_STATUS_SUCCESS;
+#ifdef RTMP_MAC_PCI
+	UINT32			ring_index=0;
+	PTXD_STRUC		pTxD = NULL;
+	PRTMP_TX_RING 	pTxRing = &pAd->TxRing[QID_AC_BE];
+#ifdef RT_BIG_ENDIAN
+    PTXD_STRUC      pDestTxD = NULL;
+    TXD_STRUC       TxD;
+#endif // RT_BIG_ENDIAN //
+#endif // RTMP_MAC_PCI //
+#ifdef RT30xx
+	UINT32			bbp_index=0;
+#endif // RT30xx //
+	UCHAR			BbpData = 0;
+
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("ATE : ===> %s\n", __FUNCTION__));
+
+	if (pAd->ate.bQATxStart == TRUE)
+	{
+		/*
+			set MAC_SYS_CTRL(0x1004) bit4(Continuous Tx Production Test)
+			and bit2(MAC TX enable) back to zero.
+		*/ 
+		RTMP_IO_READ32(pAd, MAC_SYS_CTRL, &MacData);
+		MacData &= 0xFFFFFFEB;
+		RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, MacData);
+
+		/* set BBP R22 bit7=0 */
+		ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R22, &BbpData);
+		BbpData &= 0xFFFFFF7F; // set bit7=0
+		ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R22, BbpData);
+	}
+
+	/* RT35xx ATE will reuse this code segment. */
+#ifdef RT30xx
+	for(bbp_index=0;bbp_index<ATE_BBP_REG_NUM;bbp_index++)
+		restore_BBP[bbp_index]=0;
+	/* Record All BBP Value */
+	for(bbp_index=0;bbp_index<ATE_BBP_REG_NUM;bbp_index++)
+		ATE_BBP_IO_READ8_BY_REG_ID(pAd,bbp_index,&restore_BBP[bbp_index]);
+#endif // RT30xx //
+
+
+	/* 
+		for TxCont mode.
+		Step 1: Send 50 packets first then wait for a moment.
+		Step 2: Send more 50 packet then start continue mode.
+	*/
+
+
+	/* Step 1: send 50 packets first. */
+	pAd->ate.Mode = ATE_TXCONT;
+	pAd->ate.TxCount = 50;
+
+
+	/* Soft reset BBP. */
+	BbpSoftReset(pAd);
+
+	/* Abort Tx, RX DMA. */
+	RtmpDmaEnable(pAd, 0);
+
+#ifdef RTMP_MAC_PCI
+	/* Fix can't smooth kick */
+	{
+		RTMP_IO_READ32(pAd, TX_DTX_IDX0 + QID_AC_BE * 0x10,  &pTxRing->TxDmaIdx);
+		pTxRing->TxSwFreeIdx = pTxRing->TxDmaIdx;
+		pTxRing->TxCpuIdx = pTxRing->TxDmaIdx;
+		RTMP_IO_WRITE32(pAd, TX_CTX_IDX0 + QID_AC_BE * 0x10, pTxRing->TxCpuIdx);
+	}
+#endif // RTMP_MAC_PCI //
+
+	/* Do it after Tx/Rx DMA is aborted. */
+	pAd->ate.TxDoneCount = 0;
+	
+	/* Only needed if we have to send some normal frames. */
+	SetJapanFilter(pAd);
+
+#ifdef RTMP_MAC_PCI
+	for (ring_index = 0; (ring_index < TX_RING_SIZE-1) && (ring_index < pAd->ate.TxCount); ring_index++)
+	{
+		PNDIS_PACKET pPacket;
+		UINT32 TxIdx = pTxRing->TxCpuIdx;
+
+#ifndef RT_BIG_ENDIAN
+		pTxD = (PTXD_STRUC)pTxRing->Cell[TxIdx].AllocVa;
+#else
+		pDestTxD = (PTXD_STRUC)pTxRing->Cell[TxIdx].AllocVa;
+		TxD = *pDestTxD;
+		pTxD = &TxD;
+		RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD);
+#endif // !RT_BIG_ENDIAN //
+
+		/* Clean current cell. */
+		pPacket = pTxRing->Cell[TxIdx].pNdisPacket;
+
+		if (pPacket)
+		{
+			PCI_UNMAP_SINGLE(pAd, pTxD->SDPtr0, pTxD->SDLen0, PCI_DMA_TODEVICE);
+			RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_SUCCESS);
+		}
+
+		/* Always assign pNdisPacket as NULL after clear */
+		pTxRing->Cell[TxIdx].pNdisPacket = NULL;
+
+		pPacket = pTxRing->Cell[TxIdx].pNextNdisPacket;
+
+		if (pPacket)
+		{
+			PCI_UNMAP_SINGLE(pAd, pTxD->SDPtr1, pTxD->SDLen1, PCI_DMA_TODEVICE);
+			RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_SUCCESS);
+		}
+
+		/* Always assign pNextNdisPacket as NULL after clear */
+		pTxRing->Cell[TxIdx].pNextNdisPacket = NULL;
+
+#ifdef RT_BIG_ENDIAN
+		RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD);
+		WriteBackToDescriptor((PUCHAR)pDestTxD, (PUCHAR)pTxD, FALSE, TYPE_TXD);
+#endif // RT_BIG_ENDIAN //
+
+		if (ATESetUpFrame(pAd, TxIdx) != 0)
+			return NDIS_STATUS_FAILURE;
+
+		INC_RING_INDEX(pTxRing->TxCpuIdx, TX_RING_SIZE);
+	}
+
+	ATESetUpFrame(pAd, pTxRing->TxCpuIdx);
+#endif // RTMP_MAC_PCI //
+
+
+	/* Enable Tx */
+	RTMP_IO_READ32(pAd, MAC_SYS_CTRL, &MacData);
+	MacData |= (1 << 2);
+	RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, MacData);
+
+	/* Disable Rx */
+	RTMP_IO_READ32(pAd, MAC_SYS_CTRL, &MacData);
+	MacData &= ~(1 << 3);
+	RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, MacData);
+
+	/* Start Tx, RX DMA. */
+	RtmpDmaEnable(pAd, 1);
+
+
+#ifdef RALINK_28xx_QA
+	if (pAd->ate.bQATxStart == TRUE)
+	{
+		pAd->ate.TxStatus = 1;
+	}
+#endif // RALINK_28xx_QA //
+
+#ifdef RTMP_MAC_PCI
+	/* kick Tx Ring */
+	RTMP_IO_WRITE32(pAd, TX_CTX_IDX0 + QID_AC_BE * RINGREG_DIFF, pAd->TxRing[QID_AC_BE].TxCpuIdx);
+
+	RTMPusecDelay(5000);
+#endif // RTMP_MAC_PCI //
+
+
+	/* Step 2: send more 50 packets then start continue mode. */
+	/* Abort Tx, RX DMA. */
+	RtmpDmaEnable(pAd, 0);
+
+	/* Cont. TX set BBP R22 bit7=1 */
+	ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R22, &BbpData);
+	BbpData |= 0x00000080; // set bit7=1
+	ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R22, BbpData);
+
+	pAd->ate.TxCount = 50;
+#ifdef RTMP_MAC_PCI
+	/* Fix can't smooth kick */
+	{
+		RTMP_IO_READ32(pAd, TX_DTX_IDX0 + QID_AC_BE * 0x10,  &pTxRing->TxDmaIdx);
+		pTxRing->TxSwFreeIdx = pTxRing->TxDmaIdx;
+		pTxRing->TxCpuIdx = pTxRing->TxDmaIdx;
+		RTMP_IO_WRITE32(pAd, TX_CTX_IDX0 + QID_AC_BE * 0x10, pTxRing->TxCpuIdx);					
+	}
+#endif // RTMP_MAC_PCI //
+
+	pAd->ate.TxDoneCount = 0;
+	SetJapanFilter(pAd);
+
+#ifdef RTMP_MAC_PCI
+	for (ring_index = 0; (ring_index < TX_RING_SIZE-1) && (ring_index < pAd->ate.TxCount); ring_index++)
+	{
+		PNDIS_PACKET pPacket;
+		UINT32 TxIdx = pTxRing->TxCpuIdx;
+
+#ifndef RT_BIG_ENDIAN
+		pTxD = (PTXD_STRUC)pTxRing->Cell[TxIdx].AllocVa;
+#else
+		pDestTxD = (PTXD_STRUC)pTxRing->Cell[TxIdx].AllocVa;
+		TxD = *pDestTxD;
+		pTxD = &TxD;
+		RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD);
+#endif // !RT_BIG_ENDIAN //
+		/* clean current cell */
+		pPacket = pTxRing->Cell[TxIdx].pNdisPacket;
+
+		if (pPacket)
+		{
+			PCI_UNMAP_SINGLE(pAd, pTxD->SDPtr0, pTxD->SDLen0, PCI_DMA_TODEVICE);
+			RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_SUCCESS);
+		}
+
+		/* Always assign pNdisPacket as NULL after clear. */
+		pTxRing->Cell[TxIdx].pNdisPacket = NULL;
+
+		pPacket = pTxRing->Cell[TxIdx].pNextNdisPacket;
+
+		if (pPacket)
+		{
+			PCI_UNMAP_SINGLE(pAd, pTxD->SDPtr1, pTxD->SDLen1, PCI_DMA_TODEVICE);
+			RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_SUCCESS);
+		}
+
+		/* Always assign pNextNdisPacket as NULL after clear. */
+		pTxRing->Cell[TxIdx].pNextNdisPacket = NULL;
+
+#ifdef RT_BIG_ENDIAN
+		RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD);
+		WriteBackToDescriptor((PUCHAR)pDestTxD, (PUCHAR)pTxD, FALSE, TYPE_TXD);
+#endif // RT_BIG_ENDIAN //
+
+		if (ATESetUpFrame(pAd, TxIdx) != 0)
+			return NDIS_STATUS_FAILURE;
+
+		INC_RING_INDEX(pTxRing->TxCpuIdx, TX_RING_SIZE);
+	}
+
+	ATESetUpFrame(pAd, pTxRing->TxCpuIdx);
+#endif // RTMP_MAC_PCI //
+
+
+	/* Enable Tx */
+	RTMP_IO_READ32(pAd, MAC_SYS_CTRL, &MacData);
+	MacData |= (1 << 2);
+	RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, MacData);
+
+	/* Disable Rx */
+	RTMP_IO_READ32(pAd, MAC_SYS_CTRL, &MacData);
+	MacData &= ~(1 << 3);
+	RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, MacData);
+
+	/* Start Tx, Rx DMA. */
+	RtmpDmaEnable(pAd, 1);
+
+#ifdef RALINK_28xx_QA
+	if (pAd->ate.bQATxStart == TRUE)
+	{
+		pAd->ate.TxStatus = 1;
+	}
+#endif // RALINK_28xx_QA //
+
+#ifdef RTMP_MAC_PCI
+	/* kick Tx Ring */
+	RTMP_IO_WRITE32(pAd, TX_CTX_IDX0 + QID_AC_BE * RINGREG_DIFF, pAd->TxRing[QID_AC_BE].TxCpuIdx);
+#endif // RTMP_MAC_PCI //
+
+	RTMPusecDelay(500);
+
+	/* enable continuous tx production test */
+	RTMP_IO_READ32(pAd, MAC_SYS_CTRL, &MacData);
+	MacData |= 0x00000010;
+	RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, MacData);							
+
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("ATE : <=== %s\n", __FUNCTION__));
+	return Status;
+}
+
+
+static NDIS_STATUS TXFRAME(
+	IN PRTMP_ADAPTER pAd)
+{
+	UINT32			MacData=0;
+	NDIS_STATUS		Status = NDIS_STATUS_SUCCESS;
+#ifdef RTMP_MAC_PCI
+	UINT32			ring_index=0;
+	PRTMP_TX_RING 	pTxRing = &pAd->TxRing[QID_AC_BE];
+	PTXD_STRUC		pTxD = NULL;
+#ifdef RT_BIG_ENDIAN
+    PTXD_STRUC      pDestTxD = NULL;
+    TXD_STRUC       TxD;
+#endif // RT_BIG_ENDIAN //
+#endif // RTMP_MAC_PCI //
+	UCHAR			BbpData = 0;
+
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("ATE : ===> %s(Count=%d)\n", __FUNCTION__, pAd->ate.TxCount));
+	pAd->ate.Mode |= ATE_TXFRAME;
+
+#ifdef RTMP_MAC_PCI
+	/* Default value in BBP R22 is 0x0. */
+	BbpData = 0;
+	ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R22, BbpData);
+
+	/* Soft reset BBP. */
+	BbpSoftReset(pAd);
+
+	/* clean bit4 to stop continuous Tx production test */
+	RTMP_IO_READ32(pAd, MAC_SYS_CTRL, &MacData);
+	MacData &= 0xFFFFFFEF; 
+	RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, MacData);
+
+	/* Abort Tx, RX DMA. */
+	RtmpDmaEnable(pAd, 0);
+
+	/* Fix can't smooth kick */
+	{
+		RTMP_IO_READ32(pAd, TX_DTX_IDX0 + QID_AC_BE * RINGREG_DIFF,  &pTxRing->TxDmaIdx);
+		pTxRing->TxSwFreeIdx = pTxRing->TxDmaIdx;
+		pTxRing->TxCpuIdx = pTxRing->TxDmaIdx;
+		RTMP_IO_WRITE32(pAd, TX_CTX_IDX0 + QID_AC_BE * RINGREG_DIFF, pTxRing->TxCpuIdx);					
+	}
+
+	pAd->ate.TxDoneCount = 0;
+
+	SetJapanFilter(pAd);
+	
+	for (ring_index = 0; (ring_index < TX_RING_SIZE-1) && (ring_index < pAd->ate.TxCount); ring_index++)
+	{
+		PNDIS_PACKET pPacket;
+		UINT32 TxIdx = pTxRing->TxCpuIdx;
+
+#ifndef RT_BIG_ENDIAN
+		pTxD = (PTXD_STRUC)pTxRing->Cell[TxIdx].AllocVa;
+#else
+		pDestTxD = (PTXD_STRUC)pTxRing->Cell[TxIdx].AllocVa;
+		TxD = *pDestTxD;
+		pTxD = &TxD;
+		RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD);
+#endif // !RT_BIG_ENDIAN //
+		/* Clean current cell. */
+		pPacket = pTxRing->Cell[TxIdx].pNdisPacket;
+
+		if (pPacket)
+		{
+			PCI_UNMAP_SINGLE(pAd, pTxD->SDPtr0, pTxD->SDLen0, PCI_DMA_TODEVICE);
+			RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_SUCCESS);
+		}
+
+		/* Always assign pNdisPacket as NULL after clear */
+		pTxRing->Cell[TxIdx].pNdisPacket = NULL;
+
+		pPacket = pTxRing->Cell[TxIdx].pNextNdisPacket;
+
+		if (pPacket)
+		{
+			PCI_UNMAP_SINGLE(pAd, pTxD->SDPtr1, pTxD->SDLen1, PCI_DMA_TODEVICE);
+			RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_SUCCESS);
+		}
+
+		/* Always assign pNextNdisPacket as NULL after clear */
+		pTxRing->Cell[TxIdx].pNextNdisPacket = NULL;
+
+#ifdef RT_BIG_ENDIAN
+		RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD);
+		WriteBackToDescriptor((PUCHAR)pDestTxD, (PUCHAR)pTxD, FALSE, TYPE_TXD);
+#endif // RT_BIG_ENDIAN //
+
+		if (ATESetUpFrame(pAd, TxIdx) != 0)
+			return NDIS_STATUS_FAILURE;
+
+		INC_RING_INDEX(pTxRing->TxCpuIdx, TX_RING_SIZE);
+
+	}
+
+	ATESetUpFrame(pAd, pTxRing->TxCpuIdx);
+
+	/* Start Tx, Rx DMA. */
+	RtmpDmaEnable(pAd, 1);
+
+	/* Enable Tx */
+	RTMP_IO_READ32(pAd, MAC_SYS_CTRL, &MacData);
+	MacData |= (1 << 2);
+	RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, MacData);
+#endif // RTMP_MAC_PCI //
+
+
+#ifdef RALINK_28xx_QA
+	/* add this for LoopBack mode */
+	if (pAd->ate.bQARxStart == FALSE)  
+	{
+		/* Disable Rx */
+		RTMP_IO_READ32(pAd, MAC_SYS_CTRL, &MacData);
+		MacData &= ~(1 << 3);
+		RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, MacData);
+	}
+
+	if (pAd->ate.bQATxStart == TRUE)  
+	{
+		pAd->ate.TxStatus = 1;
+	}
+#else
+	/* Disable Rx */
+	RTMP_IO_READ32(pAd, MAC_SYS_CTRL, &MacData);
+	MacData &= ~(1 << 3);
+	RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, MacData);
+#endif // RALINK_28xx_QA //
+
+#ifdef RTMP_MAC_PCI
+	RTMP_IO_READ32(pAd, TX_DTX_IDX0 + QID_AC_BE * RINGREG_DIFF, &pAd->TxRing[QID_AC_BE].TxDmaIdx);
+	/* kick Tx Ring */
+	RTMP_IO_WRITE32(pAd, TX_CTX_IDX0 + QID_AC_BE * RINGREG_DIFF, pAd->TxRing[QID_AC_BE].TxCpuIdx);
+
+	pAd->RalinkCounters.KickTxCount++;
+#endif // RTMP_MAC_PCI //
+
+
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("ATE : <=== %s\n", __FUNCTION__));
+	return Status;
+}
+
+
+static NDIS_STATUS RXFRAME(
+	IN PRTMP_ADAPTER pAd)
+{
+	UINT32			MacData=0;
+	NDIS_STATUS		Status = NDIS_STATUS_SUCCESS;
+	UCHAR			BbpData = 0;
+
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("ATE : ===> %s\n", __FUNCTION__));
+
+	/* Disable Rx of MAC block */
+	RTMP_IO_READ32(pAd, MAC_SYS_CTRL, &MacData);
+	MacData &= ~(1 << 3);
+	RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, MacData);
+
+	/* Default value in BBP R22 is 0x0. */
+	BbpData = 0;
+	ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R22, BbpData);
+
+	/* Clean bit4 to stop continuous Tx production test. */
+	RTMP_IO_READ32(pAd, MAC_SYS_CTRL, &MacData);
+	MacData &= 0xFFFFFFEF;
+	RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, MacData);
+
+	pAd->ate.Mode |= ATE_RXFRAME;
+
+
+	/* Disable Tx of MAC block. */
+	RTMP_IO_READ32(pAd, MAC_SYS_CTRL, &MacData);
+	MacData &= ~(1 << 2);
+	RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, MacData);
+
+
+	/* Enable Rx of MAC block. */
+	RTMP_IO_READ32(pAd, MAC_SYS_CTRL, &MacData);
+	MacData |= (1 << 3);
+	RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, MacData);
+
+
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("ATE : <=== %s\n", __FUNCTION__));
+	return Status;
+}
+
+
+#ifdef RALINK_28xx_QA
+static NDIS_STATUS TXSTOP(
+	IN PRTMP_ADAPTER pAd)
+{
+	UINT32			MacData=0, atemode=0;
+	NDIS_STATUS		Status = NDIS_STATUS_SUCCESS;
+#ifdef RTMP_MAC_PCI
+	UINT32			ring_index=0;
+	PTXD_STRUC		pTxD = NULL;
+#ifdef RT_BIG_ENDIAN
+    PTXD_STRUC      pDestTxD = NULL;
+    TXD_STRUC       TxD;
+#endif // RT_BIG_ENDIAN //
+#endif // RTMP_MAC_PCI //
+	UCHAR			BbpData = 0;
+
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("ATE : ===> %s\n", __FUNCTION__));
+	
+	atemode = pAd->ate.Mode;
+	pAd->ate.Mode &= ATE_TXSTOP;
+	pAd->ate.bQATxStart = FALSE;
+
+	if (atemode == ATE_TXCARR)
+	{
+		/* No Carrier Test set BBP R22 bit7=0, bit6=0, bit[5~0]=0x0 */
+		ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R22, &BbpData);
+		BbpData &= 0xFFFFFF00; // clear bit7, bit6, bit[5~0]	
+	    ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R22, BbpData);
+	}
+	else if (atemode == ATE_TXCARRSUPP)
+	{
+		/* No Cont. TX set BBP R22 bit7=0 */
+		ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R22, &BbpData);
+		BbpData &= ~(1 << 7); // set bit7=0
+		ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R22, BbpData);
+
+		/* No Carrier Suppression set BBP R24 bit0=0 */
+		ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R24, &BbpData);
+		BbpData &= 0xFFFFFFFE; // clear bit0	
+	    ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R24, BbpData);
+	}		
+
+	/*
+		We should free some resource which was allocated
+		when ATE_TXFRAME, ATE_STOP, and ATE_TXCONT.
+	*/
+	else if ((atemode & ATE_TXFRAME) || (atemode == ATE_STOP))
+#ifdef RTMP_MAC_PCI
+	{
+		PRTMP_TX_RING pTxRing = &pAd->TxRing[QID_AC_BE];
+
+		if (atemode == ATE_TXCONT)
+		{
+			// No Cont. TX set BBP R22 bit7=0
+			ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R22, &BbpData);
+			BbpData &= ~(1 << 7); //set bit7=0
+			ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R22, BbpData);
+		}
+
+		/* Abort Tx, Rx DMA. */
+		RtmpDmaEnable(pAd, 0);
+
+		for (ring_index=0; ring_index<TX_RING_SIZE; ring_index++)
+		{
+			PNDIS_PACKET  pPacket;
+
+#ifndef RT_BIG_ENDIAN
+		    pTxD = (PTXD_STRUC)pAd->TxRing[QID_AC_BE].Cell[ring_index].AllocVa;
+#else
+    		pDestTxD = (PTXD_STRUC)pAd->TxRing[QID_AC_BE].Cell[ring_index].AllocVa;
+    		TxD = *pDestTxD;
+    		pTxD = &TxD;
+    		RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD);
+#endif // !RT_BIG_ENDIAN //
+			pTxD->DMADONE = 0;
+			pPacket = pTxRing->Cell[ring_index].pNdisPacket;
+
+			if (pPacket)
+			{
+				PCI_UNMAP_SINGLE(pAd, pTxD->SDPtr0, pTxD->SDLen0, PCI_DMA_TODEVICE);
+				RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_SUCCESS);
+			}
+
+			/* Always assign pNdisPacket as NULL after clear */
+			pTxRing->Cell[ring_index].pNdisPacket = NULL;
+
+			pPacket = pTxRing->Cell[ring_index].pNextNdisPacket;
+
+			if (pPacket)
+			{
+				PCI_UNMAP_SINGLE(pAd, pTxD->SDPtr1, pTxD->SDLen1, PCI_DMA_TODEVICE);
+				RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_SUCCESS);
+			}
+
+			/* Always assign pNextNdisPacket as NULL after clear */
+			pTxRing->Cell[ring_index].pNextNdisPacket = NULL;
+#ifdef RT_BIG_ENDIAN
+			RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD);
+			WriteBackToDescriptor((PUCHAR)pDestTxD, (PUCHAR)pTxD, FALSE, TYPE_TXD);
+#endif // RT_BIG_ENDIAN //
+		}
+		/* Enable Tx, Rx DMA */
+		RtmpDmaEnable(pAd, 1);
+	}
+#endif // RTMP_MAC_PCI //
+
+
+	/* task Tx status : 0 --> task is idle, 1 --> task is running */
+	pAd->ate.TxStatus = 0;
+
+	/* Soft reset BBP. */
+	BbpSoftReset(pAd);
+
+	/* Disable Tx */
+	RTMP_IO_READ32(pAd, MAC_SYS_CTRL, &MacData);
+	MacData &= ~(1 << 2);
+	RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, MacData);
+
+
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("ATE : <=== %s\n", __FUNCTION__));
+	return Status;
+}
+
+
+static NDIS_STATUS RXSTOP(
+	IN PRTMP_ADAPTER pAd)
+{
+	UINT32			MacData=0;
+	NDIS_STATUS		Status = NDIS_STATUS_SUCCESS;
+
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("ATE : ===> %s\n", __FUNCTION__));
+
+	/* Disable Rx */
+	RTMP_IO_READ32(pAd, MAC_SYS_CTRL, &MacData);
+	MacData &= ~(1 << 3);
+	RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, MacData);
+
+	pAd->ate.Mode &= ATE_RXSTOP;
+	pAd->ate.bQARxStart = FALSE;
+//	pAd->ate.TxDoneCount = pAd->ate.TxCount;
+
+
+	/* Soft reset BBP. */
+	BbpSoftReset(pAd);
+
+	/* move to above */
+
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("ATE : <=== %s\n", __FUNCTION__));
+	return Status;
+}
+#endif // RALINK_28xx_QA //
+
+
+
+/*
+==========================================================================
+    Description:
+        Set ATE operation mode to
+        0. ATESTART  = Start ATE Mode
+        1. ATESTOP   = Stop ATE Mode
+        2. TXCARR    = Transmit Carrier
+        3. TXCONT    = Continuous Transmit
+        4. TXFRAME   = Transmit Frames
+        5. RXFRAME   = Receive Frames
+#ifdef RALINK_28xx_QA
+        6. TXSTOP    = Stop Any Type of Transmition
+        7. RXSTOP    = Stop Receiving Frames        
+#endif // RALINK_28xx_QA //
+
+    Return:
+        NDIS_STATUS_SUCCESS if all parameters are OK.
+==========================================================================
+*/
+static NDIS_STATUS	ATECmdHandler(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	NDIS_STATUS		Status = NDIS_STATUS_SUCCESS;
+
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("===> %s\n", __FUNCTION__));
+
+	ATEAsicSwitchChannel(pAd);
+
+	/* AsicLockChannel() is empty function so far in fact */
+	AsicLockChannel(pAd, pAd->ate.Channel);
+
+	RTMPusecDelay(5000);
+
+	if (!strcmp(arg, "ATESTART")) 		
+	{
+		Status = ATESTART(pAd);
+	}
+	else if (!strcmp(arg, "ATESTOP")) 
+	{
+		Status = ATESTOP(pAd);
+	}
+	else if (!strcmp(arg, "TXCARR"))	
+	{
+		Status = TXCARR(pAd);
+	}
+	else if (!strcmp(arg, "TXCONT"))	
+	{
+		Status = TXCONT(pAd);
+	}
+	else if (!strcmp(arg, "TXFRAME")) 
+	{
+		Status = TXFRAME(pAd);
+	}
+	else if (!strcmp(arg, "RXFRAME")) 
+	{
+		Status = RXFRAME(pAd);
+	}
+#ifdef RALINK_28xx_QA
+	/* Enter ATE mode and set Tx/Rx Idle */
+	else if (!strcmp(arg, "TXSTOP"))
+	{
+		Status = TXSTOP(pAd);
+	}
+	else if (!strcmp(arg, "RXSTOP"))
+	{
+		Status = RXSTOP(pAd);
+	}
+#endif // RALINK_28xx_QA //
+	else
+	{	
+		ATEDBGPRINT(RT_DEBUG_TRACE, ("ATE : Invalid arg !\n"));
+		Status = NDIS_STATUS_INVALID_DATA;
+	}
+	RTMPusecDelay(5000);
+
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("<=== %s\n", __FUNCTION__));
+
+	return Status;
+}
+
+
+INT	Set_ATE_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+
+	if (ATECmdHandler(pAd, arg) == NDIS_STATUS_SUCCESS)
+	{
+		ATEDBGPRINT(RT_DEBUG_TRACE, ("Ralink: Set_ATE_Proc Success\n"));
+
+
+		return TRUE;
+	}
+	else
+	{
+		ATEDBGPRINT(RT_DEBUG_TRACE, ("Ralink: Set_ATE_Proc Failed\n"));
+		return FALSE;
+	}
+}
+
+
+/* 
+==========================================================================
+    Description:
+        Set ATE ADDR1=DA for TxFrame(AP  : To DS = 0 ; From DS = 1)
+        or
+        Set ATE ADDR3=DA for TxFrame(STA : To DS = 1 ; From DS = 0)        
+        
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+==========================================================================
+*/
+INT	Set_ATE_DA_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	PSTRING				value;
+	INT					i;
+
+	// Mac address acceptable format 01:02:03:04:05:06 length 17	
+	if (strlen(arg) != 17)  
+		return FALSE;
+
+    for (i = 0, value = rstrtok(arg, ":"); value; value = rstrtok(NULL, ":")) 
+	{
+		/* sanity check */
+		if ((strlen(value) != 2) || (!isxdigit(*value)) || (!isxdigit(*(value+1))))
+		{
+			return FALSE;  
+		}
+
+#ifdef CONFIG_STA_SUPPORT
+		AtoH(value, &pAd->ate.Addr3[i++], 1);
+#endif // CONFIG_STA_SUPPORT //
+	}
+
+	/* sanity check */
+	if (i != 6)
+	{
+		return FALSE;  
+	}
+
+#ifdef CONFIG_STA_SUPPORT
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("Set_ATE_DA_Proc (DA = %2X:%2X:%2X:%2X:%2X:%2X)\n", pAd->ate.Addr3[0],
+		pAd->ate.Addr3[1], pAd->ate.Addr3[2], pAd->ate.Addr3[3], pAd->ate.Addr3[4], pAd->ate.Addr3[5]));
+#endif // CONFIG_STA_SUPPORT //
+
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("Ralink: Set_ATE_DA_Proc Success\n"));
+	
+	return TRUE;
+}
+
+
+/* 
+==========================================================================
+    Description:
+        Set ATE ADDR3=SA for TxFrame(AP  : To DS = 0 ; From DS = 1)
+        or
+        Set ATE ADDR2=SA for TxFrame(STA : To DS = 1 ; From DS = 0)
+        
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+==========================================================================
+*/
+INT	Set_ATE_SA_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	PSTRING				value;
+	INT					i;
+
+	// Mac address acceptable format 01:02:03:04:05:06 length 17	
+	if (strlen(arg) != 17)  
+		return FALSE;
+
+    for (i=0, value = rstrtok(arg, ":"); value; value = rstrtok(NULL, ":")) 
+	{
+		/* sanity check */
+		if ((strlen(value) != 2) || (!isxdigit(*value)) || (!isxdigit(*(value+1))))
+		{
+			return FALSE;  
+		}
+
+#ifdef CONFIG_STA_SUPPORT
+		AtoH(value, &pAd->ate.Addr2[i++], 1);
+#endif // CONFIG_STA_SUPPORT //
+	}
+
+	/* sanity check */
+	if (i != 6)
+	{
+		return FALSE;
+	}
+
+#ifdef CONFIG_STA_SUPPORT
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("Set_ATE_SA_Proc (SA = %2X:%2X:%2X:%2X:%2X:%2X)\n", pAd->ate.Addr2[0],
+		pAd->ate.Addr2[1], pAd->ate.Addr2[2], pAd->ate.Addr2[3], pAd->ate.Addr2[4], pAd->ate.Addr2[5]));
+#endif // CONFIG_STA_SUPPORT //
+
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("Ralink: Set_ATE_SA_Proc Success\n"));
+
+	return TRUE;
+}
+
+
+/* 
+==========================================================================
+    Description:
+        Set ATE ADDR2=BSSID for TxFrame(AP  : To DS = 0 ; From DS = 1)
+        or
+        Set ATE ADDR1=BSSID for TxFrame(STA : To DS = 1 ; From DS = 0)
+
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+==========================================================================
+*/
+INT	Set_ATE_BSSID_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	PSTRING				value;
+	INT					i;
+
+	// Mac address acceptable format 01:02:03:04:05:06 length 17	
+	if (strlen(arg) != 17)  
+		return FALSE;
+
+    for (i=0, value = rstrtok(arg, ":"); value; value = rstrtok(NULL, ":")) 
+	{
+		/* sanity check */
+		if ((strlen(value) != 2) || (!isxdigit(*value)) || (!isxdigit(*(value+1))))
+		{
+			return FALSE;  
+		}
+
+#ifdef CONFIG_STA_SUPPORT
+		AtoH(value, &pAd->ate.Addr1[i++], 1);
+#endif // CONFIG_STA_SUPPORT //
+	}
+
+	/* sanity check */
+	if(i != 6)
+	{
+		return FALSE;
+	}
+
+#ifdef CONFIG_STA_SUPPORT
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("Set_ATE_BSSID_Proc (BSSID = %2X:%2X:%2X:%2X:%2X:%2X)\n",	pAd->ate.Addr1[0],
+		pAd->ate.Addr1[1], pAd->ate.Addr1[2], pAd->ate.Addr1[3], pAd->ate.Addr1[4], pAd->ate.Addr1[5]));
+#endif // CONFIG_STA_SUPPORT //
+
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("Ralink: Set_ATE_BSSID_Proc Success\n"));
+
+	return TRUE;
+}
+
+
+/* 
+==========================================================================
+    Description:
+        Set ATE Tx Channel
+
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+==========================================================================
+*/
+INT	Set_ATE_CHANNEL_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	UCHAR channel;
+
+	channel = simple_strtol(arg, 0, 10);
+
+	// to allow A band channel : ((channel < 1) || (channel > 14))
+	if ((channel < 1) || (channel > 216))
+	{
+		ATEDBGPRINT(RT_DEBUG_ERROR, ("Set_ATE_CHANNEL_Proc::Out of range, it should be in range of 1~14.\n"));
+		return FALSE;
+	}
+
+	/* This is supposed just for rt3062 now. */
+	/* todo : for 5G band(i.e., rt3562) */
+	/* read tx power from e2p corresponding to ate channel */
+#ifdef RT35xx
+#ifdef RTMP_MAC_PCI
+	if (channel != pAd->ate.Channel)
+	{
+		EEPROM_TX_PWR_STRUC	    Power;
+		EEPROM_TX_PWR_STRUC	    Power2;
+		UCHAR channel_power_index = ((channel-1)/2);
+		UCHAR channel_is_odd = (channel%2);
+		
+	pAd->ate.Channel = channel;
+
+		// Read Tx power value for all channels
+		// Value from 1 - 0x7f. Default value is 24.
+		// Power value : 2.4G 0x00 (0) ~ 0x1F (31)
+		//             : 5.5G 0xF9 (-7) ~ 0x0F (15)
+		// 0. 11b/g, ch1 - ch 14
+
+		if (channel_power_index < 7)
+		{
+			RT28xx_EEPROM_READ16(pAd, EEPROM_G_TX_PWR_OFFSET + channel_power_index * 2, Power.word);
+			RT28xx_EEPROM_READ16(pAd, EEPROM_G_TX2_PWR_OFFSET + channel_power_index * 2, Power2.word);
+
+			if (channel_is_odd)
+			{
+				if ((Power.field.Byte1 > 31) || (Power.field.Byte1 < 0))
+					pAd->ate.TxPower0 = DEFAULT_RF_TX_POWER;
+				else
+					pAd->ate.TxPower0 = Power.field.Byte1;
+
+				if ((Power2.field.Byte1 > 31) || (Power2.field.Byte1 < 0))
+					pAd->ate.TxPower1 = DEFAULT_RF_TX_POWER;
+				else
+					pAd->ate.TxPower1 = Power2.field.Byte1;				
+			}
+			else
+			{
+				if ((Power.field.Byte0 > 31) || (Power.field.Byte0 < 0))
+					pAd->ate.TxPower0 = DEFAULT_RF_TX_POWER;
+				else
+					pAd->ate.TxPower0 = Power.field.Byte0;
+
+				if ((Power2.field.Byte0 > 31) || (Power2.field.Byte0 < 0))
+					pAd->ate.TxPower1 = DEFAULT_RF_TX_POWER;
+				else
+					pAd->ate.TxPower1 = Power2.field.Byte0;				
+			}
+
+			/* update tx power */
+			ATETxPwrHandler(pAd, 0);
+			ATETxPwrHandler(pAd, 1);
+		}
+	}
+#endif // RTMP_MAC_PCI //
+#endif // RT35xx //
+
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("Set_ATE_CHANNEL_Proc (ATE Channel = %d)\n", pAd->ate.Channel));
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("Ralink: Set_ATE_CHANNEL_Proc Success\n"));
+
+	
+	return TRUE;
+}
+
+
+/* 
+==========================================================================
+    Description:
+        Set ATE Tx Power0
+        
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+==========================================================================
+*/
+INT	Set_ATE_TX_POWER0_Proc(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PSTRING			arg)
+{
+	CHAR TxPower;
+	
+	TxPower = simple_strtol(arg, 0, 10);
+
+	if (pAd->ate.Channel <= 14)
+	{
+		if ((TxPower > 31) || (TxPower < 0))
+		{
+			ATEDBGPRINT(RT_DEBUG_ERROR, ("Set_ATE_TX_POWER0_Proc::Out of range (Value=%d)\n", TxPower));
+			return FALSE;
+		}
+	}
+	else/* 5.5 GHz */
+	{
+		if ((TxPower > 15) || (TxPower < -7))
+		{
+			ATEDBGPRINT(RT_DEBUG_ERROR, ("Set_ATE_TX_POWER0_Proc::Out of range (Value=%d)\n", TxPower));
+			return FALSE;
+		}
+	}
+
+	pAd->ate.TxPower0 = TxPower;
+	ATETxPwrHandler(pAd, 0);
+
+
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("Ralink: Set_ATE_TX_POWER0_Proc Success\n"));
+
+	
+	return TRUE;
+}
+
+
+/* 
+==========================================================================
+    Description:
+        Set ATE Tx Power1
+        
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+==========================================================================
+*/
+INT	Set_ATE_TX_POWER1_Proc(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PSTRING			arg)
+{
+	CHAR TxPower;
+	
+	TxPower = simple_strtol(arg, 0, 10);
+
+	if (pAd->ate.Channel <= 14)
+	{
+		if ((TxPower > 31) || (TxPower < 0))
+		{
+			ATEDBGPRINT(RT_DEBUG_ERROR, ("Set_ATE_TX_POWER1_Proc::Out of range (Value=%d)\n", TxPower));
+			return FALSE;
+		}
+	}
+	else
+	{
+		if ((TxPower > 15) || (TxPower < -7))
+		{
+			ATEDBGPRINT(RT_DEBUG_ERROR, ("Set_ATE_TX_POWER1_Proc::Out of range (Value=%d)\n", TxPower));
+			return FALSE;
+		}
+	}
+
+	pAd->ate.TxPower1 = TxPower;
+	ATETxPwrHandler(pAd, 1);
+
+
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("Ralink: Set_ATE_TX_POWER1_Proc Success\n"));
+
+	
+	return TRUE;
+}
+
+
+
+
+/* 
+==========================================================================
+    Description:
+        Set ATE Tx Antenna
+        
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+==========================================================================
+*/
+INT	Set_ATE_TX_Antenna_Proc(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PSTRING			arg)
+{
+	CHAR value;
+	
+	value = simple_strtol(arg, 0, 10);
+
+	if ((value > 2) || (value < 0))
+	{
+		ATEDBGPRINT(RT_DEBUG_ERROR, ("Set_ATE_TX_Antenna_Proc::Out of range (Value=%d)\n", value));
+		return FALSE;
+	}
+
+	pAd->ate.TxAntennaSel = value;
+
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("Set_ATE_TX_Antenna_Proc (Antenna = %d)\n", pAd->ate.TxAntennaSel));
+	ATEDBGPRINT(RT_DEBUG_TRACE,("Ralink: Set_ATE_TX_Antenna_Proc Success\n"));
+
+	/* calibration power unbalance issues */
+	ATEAsicSwitchChannel(pAd);
+
+	
+	return TRUE;
+}
+
+
+/* 
+==========================================================================
+    Description:
+        Set ATE Rx Antenna
+        
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+==========================================================================
+*/
+INT	Set_ATE_RX_Antenna_Proc(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PSTRING			arg)
+{
+	CHAR value;
+	
+	value = simple_strtol(arg, 0, 10);
+
+	if ((value > 3) || (value < 0))
+	{
+		ATEDBGPRINT(RT_DEBUG_ERROR, ("Set_ATE_RX_Antenna_Proc::Out of range (Value=%d)\n", value));
+		return FALSE;
+	}
+
+	pAd->ate.RxAntennaSel = value;
+
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("Set_ATE_RX_Antenna_Proc (Antenna = %d)\n", pAd->ate.RxAntennaSel));
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("Ralink: Set_ATE_RX_Antenna_Proc Success\n"));
+
+	/* calibration power unbalance issues */
+	ATEAsicSwitchChannel(pAd);
+
+	
+	return TRUE;
+}
+
+
+/* 
+==========================================================================
+    Description:
+        Set ATE RF frequence offset
+        
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+==========================================================================
+*/
+INT	Set_ATE_TX_FREQOFFSET_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	UCHAR RFFreqOffset = 0;
+	ULONG R4 = 0;
+#ifdef RTMP_RF_RW_SUPPORT
+	UCHAR RFValue = 0;
+#endif // RTMP_RF_RW_SUPPORT //
+	
+	RFFreqOffset = simple_strtol(arg, 0, 10);
+
+	/* RT35xx ATE will reuse this code segment. */
+#ifdef RTMP_RF_RW_SUPPORT
+//2008/08/06: KH modified the limit of offset value from 64 to 96(0x5F + 0x01)
+	if (RFFreqOffset >= 96)
+#else
+	if (RFFreqOffset >= 64)
+#endif // RTMP_RF_RW_SUPPORT //
+	{
+		ATEDBGPRINT(RT_DEBUG_ERROR, ("Set_ATE_TX_FREQOFFSET_Proc::Out of range.\n"));
+		return FALSE;
+	}
+
+	pAd->ate.RFFreqOffset = RFFreqOffset;
+
+#ifdef RTMP_RF_RW_SUPPORT
+	if (IS_RT30xx(pAd) || IS_RT3572(pAd))
+	{
+		ATE_RF_IO_READ8_BY_REG_ID(pAd, RF_R23, (PUCHAR)&RFValue);
+//2008/08/06: KH modified "pAd->RFFreqOffset" to "pAd->ate.RFFreqOffset"
+		RFValue = ((RFValue & 0x80) | pAd->ate.RFFreqOffset);
+		ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R23, (UCHAR)RFValue);
+	}
+	else
+#endif // RTMP_RF_RW_SUPPORT //
+	{
+		// RT28xx
+		// shift TX power control to correct RF register bit position
+		R4 = pAd->ate.RFFreqOffset << 15;		
+		R4 |= (pAd->LatchRfRegs.R4 & ((~0x001f8000)));
+		pAd->LatchRfRegs.R4 = R4;
+		
+		RtmpRfIoWrite(pAd);
+	}
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("Set_ATE_TX_FREQOFFSET_Proc (RFFreqOffset = %d)\n", pAd->ate.RFFreqOffset));
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("Ralink: Set_ATE_TX_FREQOFFSET_Proc Success\n"));
+
+	
+	return TRUE;
+}
+
+
+/* 
+==========================================================================
+    Description:
+        Set ATE RF BW
+        
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+==========================================================================
+*/
+INT	Set_ATE_TX_BW_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	INT i;
+	UCHAR value = 0;
+	UCHAR BBPCurrentBW;
+	
+	BBPCurrentBW = simple_strtol(arg, 0, 10);
+
+	if ((BBPCurrentBW == 0)
+#ifdef RT30xx
+		|| IS_RT2070(pAd)
+#endif // RT30xx //
+		)
+	{
+		pAd->ate.TxWI.BW = BW_20;
+	}
+	else
+	{
+		pAd->ate.TxWI.BW = BW_40;
+ 	}
+
+	/* RT35xx ATE will reuse this code segment. */
+	// Fix the error spectrum of CCK-40MHZ.
+	// Turn on BBP 20MHz mode by request here.
+	if ((pAd->ate.TxWI.PHYMODE == MODE_CCK) && (pAd->ate.TxWI.BW == BW_40))
+	{
+		ATEDBGPRINT(RT_DEBUG_ERROR, ("Set_ATE_TX_BW_Proc!! Warning!! CCK only supports 20MHZ!!\nBandwidth switch to 20\n"));
+		pAd->ate.TxWI.BW = BW_20;
+	}
+
+	if (pAd->ate.TxWI.BW == BW_20)
+	{
+		if (pAd->ate.Channel <= 14)
+		{
+ 			for (i=0; i<5; i++)
+ 			{
+				if (pAd->Tx20MPwrCfgGBand[i] != 0xffffffff)
+				{
+					RTMP_IO_WRITE32(pAd, TX_PWR_CFG_0 + i*4, pAd->Tx20MPwrCfgGBand[i]);	
+					RTMPusecDelay(5000);				
+				}
+			}
+		}
+		else
+		{
+ 			for (i=0; i<5; i++)
+ 			{
+				if (pAd->Tx20MPwrCfgABand[i] != 0xffffffff)
+ 				{
+					RTMP_IO_WRITE32(pAd, TX_PWR_CFG_0 + i*4, pAd->Tx20MPwrCfgABand[i]);	
+ 					RTMPusecDelay(5000);				
+ 				}
+ 			}
+		}
+ 
+		// Set BBP R4 bit[4:3]=0:0
+ 		ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R4, &value);
+ 		value &= (~0x18);
+ 		ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R4, value);
+
+#ifdef RT35xx
+		if (IS_RT3572(pAd))
+		{
+			if (pAd->ate.Channel > 14)
+			{
+				value = 0x22 + (GET_LNA_GAIN(pAd)*5)/3;
+			}
+			else
+			{
+				value = 0x1C + 2*GET_LNA_GAIN(pAd);
+			}				
+
+			ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R66, value);		
+		}
+#endif // RT35xx //
+
+#ifndef RT35xx
+		// Set BBP R66=0x3C
+		value = 0x3C;
+		ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R66, value);
+#endif // !RT35xx // 
+
+		// Set BBP R68=0x0B
+		// to improve Rx sensitivity.
+		value = 0x0B;
+		ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R68, value);
+		// Set BBP R69=0x16
+		value = 0x16;
+ 		ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R69, value);
+		// Set BBP R70=0x08
+		value = 0x08;
+ 		ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R70, value);
+		// Set BBP R73=0x11
+		value = 0x11;
+ 		ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R73, value);
+
+	    /*
+			If Channel=14, Bandwidth=20M and Mode=CCK, Set BBP R4 bit5=1
+			(to set Japan filter coefficients).
+			This segment of code will only works when ATETXMODE and ATECHANNEL
+			were set to MODE_CCK and 14 respectively before ATETXBW is set to 0.
+	    */
+		if (pAd->ate.Channel == 14)
+		{
+			INT TxMode = pAd->ate.TxWI.PHYMODE;
+
+			if (TxMode == MODE_CCK)
+			{
+				// when Channel==14 && Mode==CCK && BandWidth==20M, BBP R4 bit5=1
+ 				ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R4, &value);
+				value |= 0x20; //set bit5=1
+ 				ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R4, value);				
+			}
+		}
+
+#ifdef RT30xx
+		// set BW = 20 MHz
+		if (IS_RT30xx(pAd))
+			ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R24, (UCHAR) pAd->Mlme.CaliBW20RfR24);
+		else
+#endif // RT30xx //
+#ifdef RT35xx
+		// set BW = 20 MHz
+		if (IS_RT3572(pAd))
+		{
+			// R24, R31, one is for tx, the other is for rx
+			if (pAd->ate.TxWI.PHYMODE == MODE_CCK)// CCK 
+			{
+				ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R24, 0x1f);// todo
+			}
+			else
+			{
+				ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R24, 0x08);// todo
+			}
+//			ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R24, (UCHAR)pAd->Mlme.CaliBW20RfR24);// todo
+			ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R31, 0x0f);
+		}
+		else
+#endif // RT35xx //
+		// set BW = 20 MHz
+		{
+			pAd->LatchRfRegs.R4 &= ~0x00200000;
+			RtmpRfIoWrite(pAd);
+		}
+	}
+	// If bandwidth = 40M, set RF Reg4 bit 21 = 0.
+	else if (pAd->ate.TxWI.BW == BW_40)
+	{
+		if (pAd->ate.Channel <= 14)
+		{
+			for (i=0; i<5; i++)
+			{
+				if (pAd->Tx40MPwrCfgGBand[i] != 0xffffffff)
+				{
+					RTMP_IO_WRITE32(pAd, TX_PWR_CFG_0 + i*4, pAd->Tx40MPwrCfgGBand[i]);	
+					RTMPusecDelay(5000);				
+				}
+			}
+		}
+		else
+		{
+			for (i=0; i<5; i++)
+			{
+				if (pAd->Tx40MPwrCfgABand[i] != 0xffffffff)
+				{
+					RTMP_IO_WRITE32(pAd, TX_PWR_CFG_0 + i*4, pAd->Tx40MPwrCfgABand[i]);	
+					RTMPusecDelay(5000);				
+				}
+			}		
+
+			if ((pAd->ate.TxWI.PHYMODE >= 2/* MODE_HTMIX */) && (pAd->ate.TxWI.MCS == 7))
+			{
+    			value = 0x28;
+    			ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R67, value);
+			}
+		}
+
+		// Set BBP R4 bit[4:3]=1:0
+		ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R4, &value);
+		value &= (~0x18);
+		value |= 0x10;
+		ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R4, value);
+
+#ifdef RT35xx
+		if (IS_RT3572(pAd))
+		{
+			if (pAd->ate.Channel > 14)
+			{
+				value = 0x22 + (GET_LNA_GAIN(pAd)*5)/3;
+			}
+			else
+			{
+				value = 0x1C + 2*GET_LNA_GAIN(pAd);
+			}				
+
+			ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R66, value);		
+		}
+#endif // RT35xx //
+
+#ifndef RT35xx
+		// Set BBP R66=0x3C
+		value = 0x3C;
+		ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R66, value);
+#endif // !RT35xx //
+
+		// Set BBP R68=0x0C
+		// to improve Rx sensitivity
+		value = 0x0C;
+		ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R68, value);
+		// Set BBP R69=0x1A
+		value = 0x1A;
+		ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R69, value);
+		// Set BBP R70=0x0A
+		value = 0x0A;
+		ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R70, value);
+		// Set BBP R73=0x16
+		value = 0x16;
+		ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R73, value);
+
+		// If bandwidth = 40M, set RF Reg4 bit 21 = 1.
+#ifdef RT30xx
+		// set BW = 40 MHz
+		if(IS_RT30xx(pAd))
+			ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R24, (UCHAR) pAd->Mlme.CaliBW40RfR24);
+		else
+#endif // RT30xx //
+#ifdef RT35xx
+		// set BW = 40 MHz
+		if (IS_RT3572(pAd))
+		{
+			// R24, R31, one is for tx, the other is for rx
+			ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R24, 0x28);
+//			ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R31, (UCHAR)pAd->Mlme.CaliBW40RfR24);
+			ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R31, 0x2f);
+		}
+		else
+#endif // RT35xx //
+		// set BW = 40 MHz
+		{
+		pAd->LatchRfRegs.R4 |= 0x00200000;
+		RtmpRfIoWrite(pAd);
+		}
+	}
+
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("Set_ATE_TX_BW_Proc (BBPCurrentBW = %d)\n", pAd->ate.TxWI.BW));
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("Ralink: Set_ATE_TX_BW_Proc Success\n"));
+
+	
+	return TRUE;
+}
+
+
+/* 
+==========================================================================
+    Description:
+        Set ATE Tx frame length
+        
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+==========================================================================
+*/
+INT	Set_ATE_TX_LENGTH_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	pAd->ate.TxLength = simple_strtol(arg, 0, 10);
+
+	if ((pAd->ate.TxLength < 24) || (pAd->ate.TxLength > (MAX_FRAME_SIZE - 34/* == 2312 */)))
+	{
+		pAd->ate.TxLength = (MAX_FRAME_SIZE - 34/* == 2312 */);
+		ATEDBGPRINT(RT_DEBUG_ERROR, ("Set_ATE_TX_LENGTH_Proc::Out of range, it should be in range of 24~%d.\n", (MAX_FRAME_SIZE - 34/* == 2312 */)));
+		return FALSE;
+	}
+
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("Set_ATE_TX_LENGTH_Proc (TxLength = %d)\n", pAd->ate.TxLength));
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("Ralink: Set_ATE_TX_LENGTH_Proc Success\n"));
+
+	
+	return TRUE;
+}
+
+
+/* 
+==========================================================================
+    Description:
+        Set ATE Tx frame count
+        
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+==========================================================================
+*/
+INT	Set_ATE_TX_COUNT_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	pAd->ate.TxCount = simple_strtol(arg, 0, 10);
+
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("Set_ATE_TX_COUNT_Proc (TxCount = %d)\n", pAd->ate.TxCount));
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("Ralink: Set_ATE_TX_COUNT_Proc Success\n"));
+
+	
+	return TRUE;
+}
+
+
+/* 
+==========================================================================
+    Description:
+        Set ATE Tx frame MCS
+        
+        Return:
+        	TRUE if all parameters are OK, FALSE otherwise
+==========================================================================
+*/
+INT	Set_ATE_TX_MCS_Proc(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PSTRING			arg)
+{
+	UCHAR MCS;
+	INT result;
+
+	MCS = simple_strtol(arg, 0, 10);
+#ifndef RT30xx
+	result = CheckMCSValid(pAd->ate.TxWI.PHYMODE, MCS);
+#endif // RT30xx //
+
+	/* RT35xx ATE will reuse this code segment. */
+#ifdef RT30xx
+	result = CheckMCSValid(pAd->ate.TxWI.PHYMODE, MCS, IS_RT2070(pAd));
+#endif // RT30xx //
+		
+
+	if (result != -1)
+	{
+		pAd->ate.TxWI.MCS = (UCHAR)MCS;
+	}
+	else
+	{
+		ATEDBGPRINT(RT_DEBUG_ERROR, ("Set_ATE_TX_MCS_Proc::Out of range, refer to rate table.\n"));
+		return FALSE;
+	}
+
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("Set_ATE_TX_MCS_Proc (MCS = %d)\n", pAd->ate.TxWI.MCS));
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("Ralink: Set_ATE_TX_MCS_Proc Success\n"));
+
+	
+	return TRUE;
+}
+
+
+/* 
+==========================================================================
+    Description:
+        Set ATE Tx frame Mode
+        0: MODE_CCK
+        1: MODE_OFDM
+        2: MODE_HTMIX
+        3: MODE_HTGREENFIELD
+        
+        Return:
+        	TRUE if all parameters are OK, FALSE otherwise
+==========================================================================
+*/
+INT	Set_ATE_TX_MODE_Proc(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PSTRING			arg)
+{
+	UCHAR BbpData = 0;
+
+	pAd->ate.TxWI.PHYMODE = simple_strtol(arg, 0, 10);
+
+	if (pAd->ate.TxWI.PHYMODE > 3)
+	{
+		pAd->ate.TxWI.PHYMODE = 0;
+		ATEDBGPRINT(RT_DEBUG_ERROR, ("Set_ATE_TX_MODE_Proc::Out of range.\nIt should be in range of 0~3\n"));
+		ATEDBGPRINT(RT_DEBUG_ERROR, ("0: CCK, 1: OFDM, 2: HT_MIX, 3: HT_GREEN_FIELD.\n"));
+		return FALSE;
+	}
+
+	// Turn on BBP 20MHz mode by request here.
+	if (pAd->ate.TxWI.PHYMODE == MODE_CCK)
+	{
+		ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R4, &BbpData);
+		BbpData &= (~0x18);
+		ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R4, BbpData);
+		pAd->ate.TxWI.BW = BW_20;
+		ATEDBGPRINT(RT_DEBUG_ERROR, ("Set_ATE_TX_MODE_Proc::CCK Only support 20MHZ. Switch to 20MHZ.\n"));
+	}
+
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("Set_ATE_TX_MODE_Proc (TxMode = %d)\n", pAd->ate.TxWI.PHYMODE));
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("Ralink: Set_ATE_TX_MODE_Proc Success\n"));
+
+	
+	return TRUE;
+}
+
+
+/* 
+==========================================================================
+    Description:
+        Set ATE Tx frame GI
+        
+        Return:
+        	TRUE if all parameters are OK, FALSE otherwise
+==========================================================================
+*/
+INT	Set_ATE_TX_GI_Proc(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PSTRING			arg)
+{
+	pAd->ate.TxWI.ShortGI = simple_strtol(arg, 0, 10);
+
+	if (pAd->ate.TxWI.ShortGI > 1)
+	{
+		pAd->ate.TxWI.ShortGI = 0;
+		ATEDBGPRINT(RT_DEBUG_ERROR, ("Set_ATE_TX_GI_Proc::Out of range\n"));
+		return FALSE;
+	}
+
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("Set_ATE_TX_GI_Proc (GI = %d)\n", pAd->ate.TxWI.ShortGI));
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("Ralink: Set_ATE_TX_GI_Proc Success\n"));
+
+	
+	return TRUE;
+}
+
+
+INT	Set_ATE_RX_FER_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	pAd->ate.bRxFER = simple_strtol(arg, 0, 10);
+
+	if (pAd->ate.bRxFER == 1)
+	{
+		pAd->ate.RxCntPerSec = 0;
+		pAd->ate.RxTotalCnt = 0;
+	}
+
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("Set_ATE_RX_FER_Proc (bRxFER = %d)\n", pAd->ate.bRxFER));
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("Ralink: Set_ATE_RX_FER_Proc Success\n"));
+
+	
+	return TRUE;
+}
+
+
+INT Set_ATE_Read_RF_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+#ifdef RTMP_RF_RW_SUPPORT
+	/* modify by WY for Read RF Reg. error */
+	UCHAR RFValue;
+	INT index=0;
+
+//2008/07/10:KH add to support RT30xx ATE<--
+	if (IS_RT30xx(pAd) || IS_RT3572(pAd))
+	{
+		for (index = 0; index < 32; index++)
+		{
+			ATE_RF_IO_READ8_BY_REG_ID(pAd, index, (PUCHAR)&RFValue);
+			ate_print("R%d=%d\n",index,RFValue);
+		}		
+	}
+	else
+//2008/07/10:KH add to support RT30xx ATE-->
+#endif // RTMP_RF_RW_SUPPORT //
+	{
+		ate_print(KERN_EMERG "R1 = %lx\n", pAd->LatchRfRegs.R1);
+		ate_print(KERN_EMERG "R2 = %lx\n", pAd->LatchRfRegs.R2);
+		ate_print(KERN_EMERG "R3 = %lx\n", pAd->LatchRfRegs.R3);
+		ate_print(KERN_EMERG "R4 = %lx\n", pAd->LatchRfRegs.R4);
+	}
+	return TRUE;
+}
+
+#ifndef RTMP_RF_RW_SUPPORT
+INT Set_ATE_Write_RF1_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	UINT32 value = (UINT32) simple_strtol(arg, 0, 16);	
+
+		pAd->LatchRfRegs.R1 = value;
+		RtmpRfIoWrite(pAd);
+
+	return TRUE;
+}
+
+
+INT Set_ATE_Write_RF2_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	UINT32 value = (UINT32) simple_strtol(arg, 0, 16);
+
+		pAd->LatchRfRegs.R2 = value;
+		RtmpRfIoWrite(pAd);
+
+	return TRUE;
+}
+
+
+INT Set_ATE_Write_RF3_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	UINT32 value = (UINT32) simple_strtol(arg, 0, 16);
+
+		pAd->LatchRfRegs.R3 = value;
+		RtmpRfIoWrite(pAd);
+
+	return TRUE;
+}
+
+
+INT Set_ATE_Write_RF4_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	UINT32 value = (UINT32) simple_strtol(arg, 0, 16);
+
+		pAd->LatchRfRegs.R4 = value;
+		RtmpRfIoWrite(pAd);
+
+	return TRUE;
+}
+#endif // RTMP_RF_RW_SUPPORT //
+
+/* 
+==========================================================================
+    Description:
+        Load and Write EEPROM from a binary file prepared in advance.
+        
+        Return:
+        	TRUE if all parameters are OK, FALSE otherwise
+==========================================================================
+*/
+#if defined(LINUX) || defined(VXWORKS)
+INT Set_ATE_Load_E2P_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	BOOLEAN		    	ret = FALSE;
+	PSTRING			src = EEPROM_BIN_FILE_NAME;
+	RTMP_OS_FD		srcf;
+	INT32 			retval;
+	USHORT 			WriteEEPROM[(EEPROM_SIZE/2)];
+	INT				FileLength = 0;
+	UINT32 			value = (UINT32) simple_strtol(arg, 0, 10);
+	RTMP_OS_FS_INFO	osFSInfo;
+
+	ATEDBGPRINT(RT_DEBUG_ERROR, ("===> %s (value=%d)\n\n", __FUNCTION__, value));
+
+	if (value > 0)
+	{
+		/* zero the e2p buffer */
+		NdisZeroMemory((PUCHAR)WriteEEPROM, EEPROM_SIZE);
+
+		RtmpOSFSInfoChange(&osFSInfo, TRUE);
+
+		do
+		{
+			/* open the bin file */
+			srcf = RtmpOSFileOpen(src, O_RDONLY, 0);
+
+			if (IS_FILE_OPEN_ERR(srcf)) 
+			{
+				ate_print("%s - Error opening file %s\n", __FUNCTION__, src);
+				break;
+			}
+
+			/* read the firmware from the file *.bin */
+			FileLength = RtmpOSFileRead(srcf, (PSTRING)WriteEEPROM, EEPROM_SIZE);
+
+			if (FileLength != EEPROM_SIZE)
+			{
+				ate_print("%s: error file length (=%d) in e2p.bin\n",
+					   __FUNCTION__, FileLength);
+				break;
+			}
+			else
+			{
+				/* write the content of .bin file to EEPROM */
+#if defined(RTMP_MAC_PCI) && defined(RTMP_PCI_SUPPORT)
+                {
+                    USHORT index=0;
+                    USHORT value=0;
+
+                    INT32 e2p_size=512;/* == 0x200 for PCI interface */
+                    USHORT tempData=0;
+                    for (index = 0 ; index < (e2p_size / 2); )
+                    {
+                        /* "value" is especially for some compilers... */
+                        tempData = le2cpu16(WriteEEPROM[index]);
+                        value = tempData;
+                        RT28xx_EEPROM_WRITE16(pAd, index*2, value);
+                        index ++;
+                    }
+                }
+#else
+				rt_ee_write_all(pAd, WriteEEPROM);
+#endif /* defined(RTMP_MAC_PCI) && defined(RTMP_PCI_SUPPORT) */
+				ret = TRUE;
+			}
+			break;
+		} while(TRUE);
+
+		/* close firmware file */
+		if (IS_FILE_OPEN_ERR(srcf))
+		{
+				;
+		}
+		else
+		{
+			retval = RtmpOSFileClose(srcf);			
+
+			if (retval)
+			{
+				ATEDBGPRINT(RT_DEBUG_ERROR, ("--> Error %d closing %s\n", -retval, src));
+				
+			} 
+		}
+
+		/* restore */
+		RtmpOSFSInfoChange(&osFSInfo, FALSE);		
+	}
+
+    ATEDBGPRINT(RT_DEBUG_ERROR, ("<=== %s (ret=%d)\n", __FUNCTION__, ret));
+
+    return ret;
+	
+}
+#endif // defined(LINUX) || defined(VXWORKS) //
+
+
+
+
+INT Set_ATE_Read_E2P_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	USHORT buffer[EEPROM_SIZE/2];
+	USHORT *p;
+	int i;
+	
+	rt_ee_read_all(pAd, (USHORT *)buffer);
+	p = buffer;
+	for (i = 0; i < (EEPROM_SIZE/2); i++)
+	{
+		ate_print("%4.4x ", *p);
+		if (((i+1) % 16) == 0)
+			ate_print("\n");
+		p++;
+	}
+	return TRUE;
+}
+
+
+#ifdef RT35xx
+/*
+	========================================================================
+	
+	Routine Description:
+		Set LED Signal Stregth, dedicated for ATE.
+ 
+
+	Arguments:
+		pAd						Pointer to our adapter
+		Dbm						Signal Stregth
+
+	Return Value:
+		None
+
+	IRQL = PASSIVE_LEVEL
+	
+	Note:
+		Can be run on any IRQL level. 
+
+		According to Microsoft Zero Config Wireless Signal Stregth definition as belows.
+        <= 0   No Signal
+		<= 1   Very Low
+		<= 3   Low
+		<= 7   Good
+		<= 15  Very Good
+		 > 15  Excellent		
+	========================================================================
+*/
+
+INT Set_ATE_LED_Proc(
+	IN PRTMP_ADAPTER 	pAd, 
+	IN PSTRING			arg)
+{
+	UCHAR nLed = simple_strtol(arg, 0, 10);
+
+	if (nLed <= 0)
+		nLed = 0;
+	else if (nLed <= 1 )
+		nLed = 1;
+	else if (nLed <= 3)
+		nLed = 3;
+	else if (nLed <= 7)
+		nLed = 7;
+	else if (nLed <= 15)
+		nLed = 15;
+	else 
+		nLed = 31;
+
+	/* always update signal strength to firmware */
+	if (pAd->LedCntl.field.LedMode == LED_MODE_SIGNAL_STREGTH)
+	{
+		AsicSendCommandToMcu(pAd, 0x51, 0xff, nLed, pAd->LedCntl.field.Polarity);
+		pAd->ate.LedIndicatorStrength = nLed;
+	}
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("Set_ATE_LED_Proc :: %d\n", pAd->ate.LedIndicatorStrength));
+
+	return TRUE;
+}
+
+
+INT Set_ATE_HW_LED_Proc(
+	IN PRTMP_ADAPTER 	pAd, 
+	IN PSTRING			arg)
+{
+	if (IS_RT3572(pAd))
+	{
+		RTMPSetLED(pAd, LED_HW_CONTROL);
+	}
+	else
+	{
+		return FALSE;
+	}
+
+	return TRUE;
+}
+#endif // RT35xx //
+
+
+INT	Set_ATE_Show_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	ate_print("Mode=%d\n", pAd->ate.Mode);
+	ate_print("TxPower0=%d\n", pAd->ate.TxPower0);
+	ate_print("TxPower1=%d\n", pAd->ate.TxPower1);
+	ate_print("TxAntennaSel=%d\n", pAd->ate.TxAntennaSel);
+	ate_print("RxAntennaSel=%d\n", pAd->ate.RxAntennaSel);
+	ate_print("BBPCurrentBW=%d\n", pAd->ate.TxWI.BW);
+	ate_print("GI=%d\n", pAd->ate.TxWI.ShortGI);
+	ate_print("MCS=%d\n", pAd->ate.TxWI.MCS);
+	ate_print("TxMode=%d\n", pAd->ate.TxWI.PHYMODE);
+	ate_print("Addr1=%02x:%02x:%02x:%02x:%02x:%02x\n",
+		pAd->ate.Addr1[0], pAd->ate.Addr1[1], pAd->ate.Addr1[2], pAd->ate.Addr1[3], pAd->ate.Addr1[4], pAd->ate.Addr1[5]);
+	ate_print("Addr2=%02x:%02x:%02x:%02x:%02x:%02x\n",
+		pAd->ate.Addr2[0], pAd->ate.Addr2[1], pAd->ate.Addr2[2], pAd->ate.Addr2[3], pAd->ate.Addr2[4], pAd->ate.Addr2[5]);
+	ate_print("Addr3=%02x:%02x:%02x:%02x:%02x:%02x\n",
+		pAd->ate.Addr3[0], pAd->ate.Addr3[1], pAd->ate.Addr3[2], pAd->ate.Addr3[3], pAd->ate.Addr3[4], pAd->ate.Addr3[5]);
+	ate_print("Channel=%d\n", pAd->ate.Channel);
+	ate_print("TxLength=%d\n", pAd->ate.TxLength);
+	ate_print("TxCount=%u\n", pAd->ate.TxCount);
+	ate_print("RFFreqOffset=%d\n", pAd->ate.RFFreqOffset);
+#ifdef RT35xx
+	ate_print("LedIndicatorStregth=%d\n", pAd->ate.LedIndicatorStrength);
+#endif // RT35xx //
+	ate_print(KERN_EMERG "Set_ATE_Show_Proc Success\n");
+	return TRUE;
+}
+
+
+INT	Set_ATE_Help_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	ate_print("ATE=ATESTART, ATESTOP, TXCONT, TXCARR, TXFRAME, RXFRAME\n");
+	ate_print("ATEDA\n");
+	ate_print("ATESA\n");
+	ate_print("ATEBSSID\n");
+	ate_print("ATECHANNEL, range:0~14(unless A band !)\n");
+	ate_print("ATETXPOW0, set power level of antenna 1.\n");
+	ate_print("ATETXPOW1, set power level of antenna 2.\n");
+	ate_print("ATETXANT, set TX antenna. 0:all, 1:antenna one, 2:antenna two.\n");
+	ate_print("ATERXANT, set RX antenna.0:all, 1:antenna one, 2:antenna two, 3:antenna three.\n");
+#ifdef RTMP_RF_RW_SUPPORT
+	ate_print("ATETXFREQOFFSET, set frequency offset, range 0~95\n");
+#else
+	ate_print("ATETXFREQOFFSET, set frequency offset, range 0~63\n");
+#endif // RTMP_RF_RW_SUPPORT //
+	ate_print("ATETXBW, set BandWidth, 0:20MHz, 1:40MHz.\n");
+	ate_print("ATETXLEN, set Frame length, range 24~%d\n", (MAX_FRAME_SIZE - 34/* == 2312 */));
+	ate_print("ATETXCNT, set how many frame going to transmit.\n");
+	ate_print("ATETXMCS, set MCS, reference to rate table.\n");
+	ate_print("ATETXMODE, set Mode 0:CCK, 1:OFDM, 2:HT-Mix, 3:GreenField, reference to rate table.\n");
+	ate_print("ATETXGI, set GI interval, 0:Long, 1:Short\n");
+	ate_print("ATERXFER, 0:disable Rx Frame error rate. 1:enable Rx Frame error rate.\n");
+	ate_print("ATERRF, show all RF registers.\n");
+	ate_print("ATEWRF1, set RF1 register.\n");
+	ate_print("ATEWRF2, set RF2 register.\n");
+	ate_print("ATEWRF3, set RF3 register.\n");
+	ate_print("ATEWRF4, set RF4 register.\n");
+	ate_print("ATELDE2P, load EEPROM from .bin file.\n");
+	ate_print("ATERE2P, display all EEPROM content.\n");
+#ifdef RT35xx
+	ate_print("ATELED, test signal LED, range 0~31.\n");
+	ate_print("ATEHWLED, control LED by hardware.\n");
+#endif // RT35xx //
+	ate_print("ATESHOW, display all parameters of ATE.\n");
+	ate_print("ATEHELP, online help.\n");
+
+	return TRUE;
+}
+
+
+#ifdef RT35xx
+VOID ATEAsicSetTxRxPath(
+    IN PRTMP_ADAPTER pAd)
+{
+	UCHAR	RFValue = 0, BbpValue = 0;
+
+	// set TX path, pAd->ate.TxAntennaSel : 0 -> All, 1 -> TX0, 2 -> TX1
+	switch (pAd->Antenna.field.TxPath)
+	{
+		case 2:
+			switch (pAd->ate.TxAntennaSel)
+			{
+				case 1:
+					// set BBP R1, bit 4:3 = 00
+					ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R1, &BbpValue);
+					BbpValue &= 0xE7;		// 11100111B
+					ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R1, BbpValue);
+
+					// set RF R1, bit 7:5:3 = 110
+					ATE_RF_IO_READ8_BY_REG_ID(pAd, RF_R01, (PUCHAR)&RFValue);
+					RFValue = RFValue & 0x57;
+					RFValue = RFValue | 0xA0;
+					ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R01, (UCHAR)RFValue);
+					break;
+				case 2:	
+					// set BBP R1, bit 4:3 = 01
+					ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R1, &BbpValue);
+					BbpValue &= 0xE7;	
+					BbpValue |= 0x08;
+					ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R1, BbpValue);
+
+					// set RF R1, bit 7:5:3 = 101
+					ATE_RF_IO_READ8_BY_REG_ID(pAd, RF_R01, (PUCHAR)&RFValue);
+					RFValue = RFValue & 0x57;
+					RFValue = RFValue | 0x88;
+					ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R01, (UCHAR)RFValue);
+					break;
+				default:		
+					// set BBP R1, bit 4:3 = 10
+					ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R1, &BbpValue);
+					BbpValue &= 0xE7;
+					BbpValue |= 0x10;
+					ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R1, BbpValue);
+					break;
+			}
+			break;
+
+		default:
+			break;
+	}
+
+
+	// set RX path, pAd->ate.RxAntennaSel : 0 -> All, 1 -> RX0, 2 -> RX1, 3 -> RX2
+	switch (pAd->Antenna.field.RxPath)
+	{
+		case 3:
+			switch (pAd->ate.RxAntennaSel)
+			{
+				case 1:
+					// set BBP R3, bit 4:3:1:0 = 0000							
+					ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R3, &BbpValue);
+					BbpValue &= 0xE4;
+					BbpValue |= 0x00;
+					ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R3, BbpValue);
+
+					// set RF R1, bit 6:4:2 = 110
+					ATE_RF_IO_READ8_BY_REG_ID(pAd, RF_R01, (PUCHAR)&RFValue);
+					RFValue = RFValue & 0xAB;
+					RFValue = RFValue | 0x50;
+					ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R01, (UCHAR)RFValue);
+					break;
+				case 2:
+					// set BBP R3, bit 4:3:1:0 = 0001								
+					ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R3, &BbpValue);
+					BbpValue &= 0xE4;
+					BbpValue |= 0x01;
+					ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R3, BbpValue);									
+
+					// set RF R1, bit 6:4:2 = 101
+					ATE_RF_IO_READ8_BY_REG_ID(pAd, RF_R01, (PUCHAR)&RFValue);
+					RFValue = RFValue & 0xAB;
+					RFValue = RFValue | 0x44;
+					ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R01, (UCHAR)RFValue);
+					break;
+				case 3:	
+					// set BBP R3, bit 4:3:1:0 = 0002								
+					ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R3, &BbpValue);
+					BbpValue &= 0xE4;
+					BbpValue |= 0x02;
+					ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R3, BbpValue);
+
+					// set RF R1, bit 6:4:2 = 011
+					ATE_RF_IO_READ8_BY_REG_ID(pAd, RF_R01, (PUCHAR)&RFValue);
+					RFValue = RFValue & 0xAB;
+					RFValue = RFValue | 0x14;
+					ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R01, (UCHAR)RFValue);
+					break;								
+				default:	
+					// set BBP R3, bit 4:3:1:0 = 1000
+					ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R3, &BbpValue);
+					BbpValue &= 0xE4;
+					BbpValue |= 0x10;
+					ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R3, BbpValue);								
+
+					// set RF R1, bit 6:4:2 = 000
+//					ATE_RF_IO_READ8_BY_REG_ID(pAd, RF_R01, (PUCHAR)&RFValue);
+//					RFValue = RFValue & 0xAB;
+//					ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R01, (UCHAR)RFValue);
+					break;
+			}
+			break;
+
+		case 2:						
+			switch (pAd->ate.RxAntennaSel)
+			{
+				case 1:	
+					// set BBP R3, bit 4:3:1:0 = 0000		
+					ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R3, &BbpValue);
+					BbpValue &= 0xE4;
+					BbpValue |= 0x00;
+					ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R3, BbpValue);								
+
+					// set RF R1, bit 6:4:2 = 110
+					ATE_RF_IO_READ8_BY_REG_ID(pAd, RF_R01, (PUCHAR)&RFValue);
+					RFValue = RFValue & 0xAB;
+					RFValue = RFValue | 0x50;
+					ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R01, (UCHAR)RFValue);
+					break;
+				case 2:								
+					// set BBP R3, bit 4:3:1:0 = 0001
+					ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R3, &BbpValue);
+					BbpValue &= 0xE4;
+					BbpValue |= 0x01;
+					ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R3, BbpValue);
+
+					// set RF R1, bit 6:4:2 = 101
+					ATE_RF_IO_READ8_BY_REG_ID(pAd, RF_R01, (PUCHAR)&RFValue);
+					RFValue = RFValue & 0xAB;
+					RFValue = RFValue | 0x44;
+					ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R01, (UCHAR)RFValue);
+					break;							
+				default:	
+					// set BBP R3, bit 4:3:1:0 = 0100		
+					ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R3, &BbpValue);
+					BbpValue &= 0xE4;
+					BbpValue |= 0x08;
+					ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R3, BbpValue);								
+
+					// set RF R1, bit 6:4:2 = 000
+//					ATE_RF_IO_READ8_BY_REG_ID(pAd, RF_R01, (PUCHAR)&RFValue);
+//					RFValue = RFValue & 0xAB;
+//					ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R01, (UCHAR)RFValue);
+					break;						
+			}
+			break;
+
+		default:
+			switch (pAd->ate.RxAntennaSel)
+			{
+				default:
+					// set RF R1, bit 6:4:2 = 000
+//					ATE_RF_IO_READ8_BY_REG_ID(pAd, RF_R01, (PUCHAR)&RFValue);
+//					RFValue = RFValue & 0xAB;
+//					ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R01, (UCHAR)RFValue);
+					break;
+			}
+			break;		
+	}
+}
+#endif // RT35xx //
+
+
+/*
+==========================================================================
+    Description:
+
+	AsicSwitchChannel() dedicated for ATE.
+    
+==========================================================================
+*/
+VOID ATEAsicSwitchChannel(
+    IN PRTMP_ADAPTER pAd) 
+{
+	UINT32 R2 = 0, R3 = DEFAULT_RF_TX_POWER, R4 = 0, Value = 0;
+	RTMP_RF_REGS *RFRegTable = NULL;
+	UCHAR index = 0, BbpValue = 0, R66 = 0x30, Channel = 0;
+	CHAR TxPwer = 0, TxPwer2 = 0;
+
+
+#ifdef RTMP_RF_RW_SUPPORT
+	/* added to prevent RF register reading error */
+	UCHAR RFValue = 0;
+#endif // RTMP_RF_RW_SUPPORT //
+
+#ifdef RALINK_28xx_QA
+	// for QA mode, TX power values are passed from UI
+	if ((pAd->ate.bQATxStart == TRUE) || (pAd->ate.bQARxStart == TRUE))
+	{
+		if (pAd->ate.Channel != pAd->LatchRfRegs.Channel)			
+		{
+			pAd->ate.Channel = pAd->LatchRfRegs.Channel;
+		}
+		return;
+	}
+	else
+#endif // RALINK_28xx_QA //
+	Channel = pAd->ate.Channel;
+
+	// fill Tx power value
+	TxPwer = pAd->ate.TxPower0;
+	TxPwer2 = pAd->ate.TxPower1;
+
+#ifdef RT30xx
+//2008/07/10:KH add to support 3070 ATE<--
+
+	/*
+		The RF programming sequence is difference between 3xxx and 2xxx.
+		The 3070 is 1T1R. Therefore, we don't need to set the number of Tx/Rx path
+		and the only job is to set the parameters of channels.
+	*/
+	if (IS_RT30xx(pAd) && ((pAd->RfIcType == RFIC_3020) ||
+			(pAd->RfIcType == RFIC_3021) || (pAd->RfIcType == RFIC_3022) ||
+			(pAd->RfIcType == RFIC_2020)))
+	{
+		/* modify by WY for Read RF Reg. error */
+
+		for (index = 0; index < NUM_OF_3020_CHNL; index++)
+		{
+			if (Channel == FreqItems3020[index].Channel)
+			{
+				// Programming channel parameters.
+				ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R02, FreqItems3020[index].N);
+				ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R03, FreqItems3020[index].K);
+
+				ATE_RF_IO_READ8_BY_REG_ID(pAd, RF_R06, (PUCHAR)&RFValue);
+				RFValue = (RFValue & 0xFC) | FreqItems3020[index].R;
+				ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R06, (UCHAR)RFValue);
+
+				// Set Tx Power.
+				ATE_RF_IO_READ8_BY_REG_ID(pAd, RF_R12, (PUCHAR)&RFValue);
+				RFValue = (RFValue & 0xE0) | TxPwer;
+				ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R12, (UCHAR)RFValue);
+
+				// Set RF offset.
+				ATE_RF_IO_READ8_BY_REG_ID(pAd, RF_R23, (PUCHAR)&RFValue);
+				//2008/08/06: KH modified "pAd->RFFreqOffset" to "pAd->ate.RFFreqOffset"
+				RFValue = (RFValue & 0x80) | pAd->ate.RFFreqOffset;
+				ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R23, (UCHAR)RFValue);
+
+				// Set BW.
+				if (pAd->ate.TxWI.BW == BW_40)
+				{
+					RFValue = pAd->Mlme.CaliBW40RfR24;
+//					DISABLE_11N_CHECK(pAd);
+				}
+				else
+				{
+					RFValue = pAd->Mlme.CaliBW20RfR24;
+				}
+				ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R24, (UCHAR)RFValue);
+
+				// Enable RF tuning
+				ATE_RF_IO_READ8_BY_REG_ID(pAd, RF_R07, (PUCHAR)&RFValue);
+				RFValue = RFValue | 0x1;
+				ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R07, (UCHAR)RFValue);
+
+				// latch channel for future usage
+				pAd->LatchRfRegs.Channel = Channel;
+
+				break;				
+			}
+		}
+
+		ATEDBGPRINT(RT_DEBUG_TRACE, ("SwitchChannel#%d(RF=%d, Pwr0=%d, Pwr1=%d, %dT), N=0x%02X, K=0x%02X, R=0x%02X\n",
+			Channel, 
+			pAd->RfIcType, 
+			TxPwer,
+			TxPwer2,
+			pAd->Antenna.field.TxPath,
+			FreqItems3020[index].N, 
+			FreqItems3020[index].K, 
+			FreqItems3020[index].R));
+	}
+	else
+//2008/07/10:KH add to support 3070 ATE-->
+#endif // RT30xx //
+#ifdef RT35xx
+	if (IS_RT3572(pAd))
+	{
+		for (index = 0; index < NUM_OF_3572_CHNL; index++)
+		{
+			if (Channel == FreqItems3572[index].Channel)
+			{
+				// for 2.4G, restore BBP25, BBP26
+				if (Channel <= 14)
+				{
+					ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R25, pAd->Bbp25);
+					ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R26, pAd->Bbp26);
+				}
+				// hard code for 5GHz, Gary 2008-12-10
+				else
+				{
+					// enable IQ Phase Correction
+					ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R25, 0x09);
+					// IQ phase correction value
+					ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R26, 0xFF);
+				}
+
+				// programming channel parameters
+				ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R02, FreqItems3572[index].N);
+				ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R03, FreqItems3572[index].K);
+
+				ATE_RF_IO_READ8_BY_REG_ID(pAd, RF_R06, (PUCHAR)&RFValue);
+				if (Channel <= 14)
+					RFValue = (RFValue & 0xF0) | FreqItems3572[index].R | 0x8;
+				else
+					RFValue = (RFValue & 0xF0) | FreqItems3572[index].R | 0x4;
+				ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R06, (UCHAR)RFValue);
+
+				// PLL mode for 2.4G or 5G
+				ATE_RF_IO_READ8_BY_REG_ID(pAd, RF_R05, (PUCHAR)&RFValue);
+				if (Channel <= 14)
+					RFValue = (RFValue & 0xF3) | 0x4;
+				else
+					RFValue = (RFValue & 0xF3) | 0x8;
+				ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R05, (UCHAR)RFValue);
+
+				// set Tx0 Power
+				ATE_RF_IO_READ8_BY_REG_ID(pAd, RF_R12, (PUCHAR)&RFValue);
+				if (Channel <= 14)
+					RFValue = 0x60 | TxPwer;
+				else
+					RFValue = 0xE0 | (TxPwer & 0x3) | ((TxPwer & 0xC) << 1);
+				ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R12, (UCHAR)RFValue);
+
+				// set Tx1 Power
+				ATE_RF_IO_READ8_BY_REG_ID(pAd, RF_R13, (PUCHAR)&RFValue);
+				if (Channel <= 14)
+					RFValue = 0x60 | TxPwer2;
+				else
+					RFValue = 0xE0 | (TxPwer2 & 0x3) | ((TxPwer2 & 0xC) << 1);
+				ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R13, (UCHAR)RFValue);
+
+				// Tx/Rx stream setting
+				ATE_RF_IO_READ8_BY_REG_ID(pAd, RF_R01, (PUCHAR)&RFValue);
+				RFValue &= 0x03;	// clear bit[7~2]
+				if (pAd->Antenna.field.TxPath == 1)
+					RFValue |= 0xA0;
+				else if (pAd->Antenna.field.TxPath == 2)
+					RFValue |= 0x80;
+				if (pAd->Antenna.field.RxPath == 1)
+					RFValue |= 0x50;
+				else if (pAd->Antenna.field.RxPath == 2)
+					RFValue |= 0x40;
+				ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R01, (UCHAR)RFValue);
+
+				ATEAsicSetTxRxPath(pAd);
+
+				// set RF offset
+				ATE_RF_IO_READ8_BY_REG_ID(pAd, RF_R23, (PUCHAR)&RFValue);
+				RFValue = (RFValue & 0x80) | pAd->ate.RFFreqOffset;
+				ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R23, (UCHAR)RFValue);
+
+				// copy to Set_ATE_TX_BW_Proc() as RT30xx ATE driver.
+				// set BW
+				if (/*!bScan &&*/(pAd->ate.TxWI.BW == BW_40))
+				{
+					RFValue = pAd->Mlme.CaliBW40RfR24;
+#ifdef HUAWEI_ATE
+					/* This is supposed just for rt3062 now. */
+					if (pAd->ate.TxWI.PHYMODE == MODE_HTMIX)
+						ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R24, 0x24);
+					else
+#endif // HUAWEI_ATE //
+					ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R24, 0x28);
+
+					/* no such function in linux driver */
+//					DISABLE_11N_CHECK(pAd);
+				}
+				else
+				{
+					RFValue = pAd->Mlme.CaliBW20RfR24;
+
+					if (pAd->ate.TxWI.PHYMODE == MODE_CCK)
+						ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R24, 0x1f);
+					else
+						ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R24, 0x08);
+				}
+
+				// R24, R31, one is for tx, the other is for rx
+//				ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R24, (UCHAR)RFValue);// todo
+				ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R31, (UCHAR)RFValue);
+
+				// enable RF tuning
+				ATE_RF_IO_READ8_BY_REG_ID(pAd, RF_R07, (PUCHAR)&RFValue);
+				if (Channel <= 14)
+//					RFValue = (RFValue & 0x37) | 0xCC;
+					RFValue = 0xd8;	//?? to check 3572?? hardcode
+				else
+					RFValue = (RFValue & 0x37) | 0x14;
+				ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R07, (UCHAR)RFValue);
+
+				// TSSI input band select
+				ATE_RF_IO_READ8_BY_REG_ID(pAd, RF_R09, (PUCHAR)&RFValue);
+				if (Channel <= 14)
+				{
+//					RFValue = (RFValue & 0xBF) | 0x40;
+					RFValue = 0xC3;
+				}
+				else
+				{
+//					RFValue = (RFValue & 0xBF) | 0x40;
+					RFValue = 0xC0;
+				}
+				ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R09, (UCHAR)RFValue);
+
+				// loop filter 1
+				ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R10, (UCHAR)0xF1);
+
+				// loop filter 2
+				if (Channel <= 14)
+					ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R11, (UCHAR)0xB9);
+				else
+					ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R11, (UCHAR)0x00);
+
+				// tx_mx2_ic
+				ATE_RF_IO_READ8_BY_REG_ID(pAd, RF_R15, (PUCHAR)&RFValue);
+				if (Channel <= 14)
+					RFValue = (RFValue & 0x8F) | 0x50;
+				else
+					RFValue = (RFValue & 0x8F) | 0x50;
+				ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R15, (UCHAR)RFValue);
+
+#ifdef HUAWEI_ATE
+				/* This is supposed just for rt3062 now. */
+				if ((Channel == 1) && (pAd->ate.TxWI.PHYMODE == MODE_CCK))
+				{
+					RFValue = 0x68;
+					ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R12, RFValue);
+				}
+#endif // HUAWEI_ATE //
+
+				// tx_mx1_ic
+//				ATE_RF_IO_READ8_BY_REG_ID(pAd, RF_R16, (PUCHAR)&RFValue);
+				if (Channel <= 14)
+				{
+					RFValue = 0x4c;
+					// clear bit [2:0]
+					RFValue &= (~0x7);  
+					RFValue |= pAd->TxMixerGain24G;
+				}
+				else 
+				{
+					RFValue = 0x7a;
+					// clear bit [2:0]
+					RFValue &= (~0x7);  
+					RFValue |= pAd->TxMixerGain5G;
+				}
+
+				ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R16, (UCHAR)RFValue);
+
+				// tx_lo1
+//				if (Channel <= 14)
+//					ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R17, (UCHAR)0xB3);
+//				else
+					ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R17, (UCHAR)0x23);
+
+				// tx_lo2
+				RFValue = ((Channel <= 14) ? (0x93) : ((Channel <= 64) ? (0xb7) : ((Channel <= 128) ? (0x74) : (0x72))));
+				ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R19, (UCHAR)RFValue);
+
+				// rx_l01
+				RFValue = ((Channel <= 14) ? (0xB3) : ((Channel <= 64) ? (0xF6) : ((Channel <= 128) ? (0xF4) : (0xF3))));
+				ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R20, (UCHAR)RFValue);
+
+				// pfd_delay
+				RFValue = ((Channel <= 14) ? (0x15) : ((Channel <= 64) ? (0x3d) : ((Channel <= 128) ? (0x01) : (0x01))));
+				ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R25, (UCHAR)RFValue);
+
+				// rx_lo2
+				if (Channel <= 14)
+					ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R26, (UCHAR)0x85);
+				else
+					ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R26, (UCHAR)0x87);
+
+				// drv_cc
+				if (Channel <= 14)
+					ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R29, (UCHAR)0x9B);
+				else
+					ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R29, (UCHAR)0x9F);
+
+				// GPIO 7 for RT3572/3562/3062
+				RTMP_IO_READ32(pAd, GPIO_CTRL_CFG, &Value);
+
+				if (Channel <= 14)
+					Value = ((Value & 0xFFFF7FFF) | 0x00000080);
+				else
+					Value = (Value & 0xFFFF7F7F);
+
+				RTMP_IO_WRITE32(pAd, GPIO_CTRL_CFG, Value);
+
+				// enable RF tuning, this must be in the last
+				ATE_RF_IO_READ8_BY_REG_ID(pAd, RF_R07, (PUCHAR)&RFValue);
+				RFValue = RFValue | 0x1;
+				ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R07, (UCHAR)RFValue);
+
+				RTMPusecDelay(2000);
+				ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R08, (UCHAR)0x80);
+
+				// latch channel for future usage
+				pAd->LatchRfRegs.Channel = Channel;
+				
+				ATEDBGPRINT(RT_DEBUG_TRACE, ("RT35xx: SwitchChannel#%d(Pwr0=%d, Pwr1=%d, %dT), N=0x%02X, K=0x%02X, R=0x%02X\n",
+					Channel, 
+					TxPwer,
+					TxPwer2,
+					pAd->Antenna.field.TxPath,
+					FreqItems3572[index].N, 
+					FreqItems3572[index].K, 
+					FreqItems3572[index].R));
+				break;
+			}
+		}
+	}
+	else
+#endif // RT35xx //
+	{
+		/* RT28xx */
+		RFRegTable = RF2850RegTable;
+
+		switch (pAd->RfIcType)
+		{
+			/* But only 2850 and 2750 support 5.5GHz band... */
+			case RFIC_2820:
+			case RFIC_2850:
+			case RFIC_2720:
+			case RFIC_2750:
+				for (index = 0; index < NUM_OF_2850_CHNL; index++)
+				{
+					if (Channel == RFRegTable[index].Channel)
+					{
+						R2 = RFRegTable[index].R2;
+
+						// If TX path is 1, bit 14 = 1;
+						if (pAd->Antenna.field.TxPath == 1)
+						{
+							R2 |= 0x4000;	
+						}
+						if (pAd->Antenna.field.TxPath == 2)
+						{
+							if (pAd->ate.TxAntennaSel == 1)
+							{
+								// If TX Antenna select is 1 , bit 14 = 1; Disable Ant 2
+								R2 |= 0x4000;	
+								ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R1, &BbpValue);
+								BbpValue &= 0xE7;		// 11100111B
+								ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R1, BbpValue);
+							}
+							else if (pAd->ate.TxAntennaSel == 2)
+							{
+								// If TX Antenna select is 2 , bit 15 = 1; Disable Ant 1
+								R2 |= 0x8000;	
+								ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R1, &BbpValue);
+								BbpValue &= 0xE7;	
+								BbpValue |= 0x08;
+								ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R1, BbpValue);
+							}
+							else
+							{
+								ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R1, &BbpValue);
+								BbpValue &= 0xE7;
+								BbpValue |= 0x10;
+								ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R1, BbpValue);
+							}
+						}
+
+						if (pAd->Antenna.field.RxPath == 2)
+						{
+							switch (pAd->ate.RxAntennaSel)
+							{
+								case 1:
+									R2 |= 0x20040;
+									ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R3, &BbpValue);
+									BbpValue &= 0xE4;
+									BbpValue |= 0x00;
+									ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R3, BbpValue);								
+									break;
+								case 2:
+									R2 |= 0x10040;
+									ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R3, &BbpValue);
+									BbpValue &= 0xE4;
+									BbpValue |= 0x01;
+									ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R3, BbpValue);									
+									break;
+								default:	
+									R2 |= 0x40;
+									ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R3, &BbpValue);
+									BbpValue &= 0xE4;
+									/* Only enable two Antenna to receive. */
+									BbpValue |= 0x08;
+									ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R3, BbpValue);								
+									break;
+							}
+						}
+						else if (pAd->Antenna.field.RxPath == 1)
+						{
+							// write 1 to off RxPath
+							R2 |= 0x20040;	
+						}
+
+						if (pAd->Antenna.field.RxPath == 3)
+						{
+							switch (pAd->ate.RxAntennaSel)
+							{
+								case 1:
+									R2 |= 0x20040;
+									ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R3, &BbpValue);
+									BbpValue &= 0xE4;
+									BbpValue |= 0x00;
+									ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R3, BbpValue);								
+									break;
+								case 2:
+									R2 |= 0x10040;
+									ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R3, &BbpValue);
+									BbpValue &= 0xE4;
+									BbpValue |= 0x01;
+									ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R3, BbpValue);									
+									break;
+								case 3:	
+									R2 |= 0x30000;
+									ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R3, &BbpValue);
+									BbpValue &= 0xE4;
+									BbpValue |= 0x02;
+									ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R3, BbpValue);
+									break;								
+								default:	
+									ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R3, &BbpValue);
+									BbpValue &= 0xE4;
+									BbpValue |= 0x10;
+									ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R3, BbpValue);								
+									break;
+							}
+						}
+						
+						if (Channel > 14)
+						{
+							// initialize R3, R4
+							R3 = (RFRegTable[index].R3 & 0xffffc1ff);
+							R4 = (RFRegTable[index].R4 & (~0x001f87c0)) | (pAd->ate.RFFreqOffset << 15);
+
+		                    /*
+			                    According the Rory's suggestion to solve the middle range issue.
+
+								5.5G band power range : 0xF9~0X0F, TX0 Reg3 bit9/TX1 Reg4 bit6="0"
+														means the TX power reduce 7dB.
+							*/
+							// R3
+							if ((TxPwer >= -7) && (TxPwer < 0))
+							{
+								TxPwer = (7+TxPwer);
+								TxPwer = (TxPwer > 0xF) ? (0xF) : (TxPwer);
+								R3 |= (TxPwer << 10);
+								ATEDBGPRINT(RT_DEBUG_TRACE, ("ATEAsicSwitchChannel: TxPwer=%d \n", TxPwer));
+							}
+							else
+							{
+								TxPwer = (TxPwer > 0xF) ? (0xF) : (TxPwer);
+								R3 |= (TxPwer << 10) | (1 << 9);
+							}
+
+							// R4
+							if ((TxPwer2 >= -7) && (TxPwer2 < 0))
+							{
+								TxPwer2 = (7+TxPwer2);
+								TxPwer2 = (TxPwer2 > 0xF) ? (0xF) : (TxPwer2);
+								R4 |= (TxPwer2 << 7);
+								ATEDBGPRINT(RT_DEBUG_TRACE, ("ATEAsicSwitchChannel: TxPwer2=%d \n", TxPwer2));
+							}
+							else
+							{
+								TxPwer2 = (TxPwer2 > 0xF) ? (0xF) : (TxPwer2);
+								R4 |= (TxPwer2 << 7) | (1 << 6);
+							}
+						}
+						else
+						{
+							// Set TX power0.
+							R3 = (RFRegTable[index].R3 & 0xffffc1ff) | (TxPwer << 9);
+							// Set frequency offset and TX power1.
+							R4 = (RFRegTable[index].R4 & (~0x001f87c0)) | (pAd->ate.RFFreqOffset << 15) | (TxPwer2 <<6);
+
+						}
+
+						// based on BBP current mode before changing RF channel
+						if (pAd->ate.TxWI.BW == BW_40)
+						{
+							R4 |=0x200000;
+						}
+						
+						// Update variables.
+						pAd->LatchRfRegs.Channel = Channel;
+	
+
+						pAd->LatchRfRegs.R1 = RFRegTable[index].R1;
+						pAd->LatchRfRegs.R2 = R2;
+						pAd->LatchRfRegs.R3 = R3;
+						pAd->LatchRfRegs.R4 = R4;
+
+						RtmpRfIoWrite(pAd);
+						
+						break;
+					}
+				}
+				break;
+
+			default:
+				break;
+		}
+	}
+
+	// Change BBP setting during switch from a->g, g->a
+	if (Channel <= 14)
+	{
+	    UINT32 TxPinCfg = 0x00050F0A;// 2007.10.09 by Brian : 0x0005050A ==> 0x00050F0A
+		ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R62, (0x37 - GET_LNA_GAIN(pAd)));
+		ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R63, (0x37 - GET_LNA_GAIN(pAd)));
+		ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R64, (0x37 - GET_LNA_GAIN(pAd)));
+
+		/* For 1T/2R chip only... */
+	    if (pAd->NicConfig2.field.ExternalLNAForG)
+	    {
+	        ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R82, 0x62);
+#ifdef RT35xx
+			if (IS_RT3572(pAd))
+				ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R75, 0x46);
+#endif // RT35xx //				
+	    }
+	    else
+	    {
+	        ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R82, 0x84);
+#ifdef RT35xx
+			if (IS_RT3572(pAd))
+				ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R75, 0x50);
+#endif // RT35xx //
+	    }
+#ifndef CONFIG_RT2883_FPGA /* to be removed */
+        // According the Rory's suggestion to solve the middle range issue.
+		ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R86, &BbpValue);
+
+		ASSERT((BbpValue == 0x00));
+		if ((BbpValue != 0x00))
+		{
+			ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R86, 0x00);
+		}
+#endif // CONFIG_RT2883_FPGA //
+
+		// 5.5 GHz band selection PIN, bit1 and bit2 are complement
+		RTMP_IO_READ32(pAd, TX_BAND_CFG, &Value);
+		Value &= (~0x6);
+		Value |= (0x04);
+		RTMP_IO_WRITE32(pAd, TX_BAND_CFG, Value);
+
+        // Turn off unused PA or LNA when only 1T or 1R.
+		if (pAd->Antenna.field.TxPath == 1)
+		{
+			TxPinCfg &= 0xFFFFFFF3;
+		}
+		if (pAd->Antenna.field.RxPath == 1)
+		{
+			TxPinCfg &= 0xFFFFF3FF;
+		}
+
+		/* calibration power unbalance issues */
+		if (pAd->Antenna.field.TxPath == 2)
+		{
+			if (pAd->ate.TxAntennaSel == 1)
+			{
+				TxPinCfg &= 0xFFFFFFF7;
+			}
+			else if (pAd->ate.TxAntennaSel == 2)
+			{
+				TxPinCfg &= 0xFFFFFFFD;
+			}
+		}
+
+		RTMP_IO_WRITE32(pAd, TX_PIN_CFG, TxPinCfg);
+	}
+	else
+	{
+	    UINT32	TxPinCfg = 0x00050F05;// 2007.10.09 by Brian : 0x00050505 ==> 0x00050F05
+		
+		ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R62, (0x37 - GET_LNA_GAIN(pAd)));
+		ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R63, (0x37 - GET_LNA_GAIN(pAd)));
+		ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R64, (0x37 - GET_LNA_GAIN(pAd)));
+#ifdef RT35xx
+		if (IS_RT3572(pAd))
+		{
+			// Rx High power VGA offset for LNA select
+			if (pAd->NicConfig2.field.ExternalLNAForA)
+			{
+				ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R82, 0x94);
+				ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R75, 0x46);
+			}
+			else
+			{
+				ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R82, 0x94);
+				ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R75, 0x50);
+			}	
+		}
+		else
+#endif // RT35xx //
+		{
+
+			ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R82, 0xF2);
+		}
+        // According the Rory's suggestion to solve the middle range issue.
+		ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R86, &BbpValue);
+
+		ASSERT((BbpValue == 0x00));
+		if ((BbpValue != 0x00))
+		{
+			ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R86, 0x00);
+		}
+
+		ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R91, &BbpValue);
+		ASSERT((BbpValue == 0x04));
+
+		ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R92, &BbpValue);
+		ASSERT((BbpValue == 0x00));
+		
+		// 5.5 GHz band selection PIN, bit1 and bit2 are complement
+		RTMP_IO_READ32(pAd, TX_BAND_CFG, &Value);
+		Value &= (~0x6);
+		Value |= (0x02);
+		RTMP_IO_WRITE32(pAd, TX_BAND_CFG, Value);
+
+		// Turn off unused PA or LNA when only 1T or 1R.
+		if (pAd->Antenna.field.TxPath == 1)
+		{
+			TxPinCfg &= 0xFFFFFFF3;
+		}
+		if (pAd->Antenna.field.RxPath == 1)
+		{
+			TxPinCfg &= 0xFFFFF3FF;
+		}
+
+		RTMP_IO_WRITE32(pAd, TX_PIN_CFG, TxPinCfg);
+	}
+
+#ifdef RT35xx
+	if (IS_RT3572(pAd))
+	{
+		if (Channel > 14)
+		{
+			R66 = 0x22 + (GET_LNA_GAIN(pAd)*5)/3;
+		}
+		else
+		{
+			R66 = 0x1C + 2*GET_LNA_GAIN(pAd);
+		}				
+
+		ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R66, R66);		
+
+		if (pAd->ate.TxWI.BW == BW_20)
+		{
+			ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R31, 0x0f);
+		}
+		else
+		{
+			ATE_RF_IO_WRITE8_BY_REG_ID(pAd, RF_R31, 0x2f);
+		}
+	}
+#endif // RT35xx //
+
+#ifndef RT35xx
+    // R66 should be set according to Channel and use 20MHz when scanning
+	if (Channel <= 14)
+	{	
+		// BG band
+		R66 = 0x2E + GET_LNA_GAIN(pAd);
+		ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R66, R66);
+	}
+	else
+	{	
+		// 5.5 GHz band
+		if (pAd->ate.TxWI.BW == BW_20)
+		{
+			R66 = (UCHAR)(0x32 + (GET_LNA_GAIN(pAd)*5)/3);
+    		ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R66, R66);
+		}
+		else
+		{
+			R66 = (UCHAR)(0x3A + (GET_LNA_GAIN(pAd)*5)/3);
+			ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R66, R66);
+		}
+	}
+#endif // !RT35xx //
+
+	/*
+		On 11A, We should delay and wait RF/BBP to be stable
+		and the appropriate time should be 1000 micro seconds. 
+
+		2005/06/05 - On 11G, We also need this delay time. Otherwise it's difficult to pass the WHQL.
+	*/
+	RTMPusecDelay(1000);  
+
+#ifdef RTMP_RF_RW_SUPPORT
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("SwitchChannel#%d(RF=%d, Pwr0=%d, Pwr1=%d, %dT), N=0x%02X, K=0x%02X, R=0x%02X\n",
+		Channel, 
+		pAd->RfIcType, 
+		TxPwer,
+		TxPwer2,
+		pAd->Antenna.field.TxPath,
+		FreqItems3020[index].N, 
+		FreqItems3020[index].K, 
+		FreqItems3020[index].R));
+#endif // RTMP_RF_RW_SUPPORT //
+#ifndef RTMP_RF_RW_SUPPORT
+	if (Channel > 14)
+	{
+		// When 5.5GHz band the LSB of TxPwr will be used to reduced 7dB or not.
+		ATEDBGPRINT(RT_DEBUG_TRACE, ("SwitchChannel#%d(RF=%d, %dT) to , R1=0x%08lx, R2=0x%08lx, R3=0x%08lx, R4=0x%08lx\n",
+								  Channel, 
+								  pAd->RfIcType, 
+								  pAd->Antenna.field.TxPath,
+								  pAd->LatchRfRegs.R1, 
+								  pAd->LatchRfRegs.R2, 
+								  pAd->LatchRfRegs.R3, 
+								  pAd->LatchRfRegs.R4));
+	}
+	else
+	{
+		ATEDBGPRINT(RT_DEBUG_TRACE, ("SwitchChannel#%d(RF=%d, Pwr0=%u, Pwr1=%u, %dT) to , R1=0x%08lx, R2=0x%08lx, R3=0x%08lx, R4=0x%08lx\n",
+								  Channel, 
+								  pAd->RfIcType, 
+								  (R3 & 0x00003e00) >> 9,
+								  (R4 & 0x000007c0) >> 6,
+								  pAd->Antenna.field.TxPath,
+								  pAd->LatchRfRegs.R1, 
+								  pAd->LatchRfRegs.R2, 
+								  pAd->LatchRfRegs.R3, 
+								  pAd->LatchRfRegs.R4));
+    }
+#endif // RTMP_RF_RW_SUPPORT //
+}
+
+
+
+/* In fact, no one will call this routine so far ! */
+
+/*
+==========================================================================
+	Description:
+		Gives CCK TX rate 2 more dB TX power.
+		This routine works only in ATE mode.
+
+		calculate desired Tx power in RF R3.Tx0~5,	should consider -
+		0. if current radio is a noisy environment (pAd->DrsCounters.fNoisyEnvironment)
+		1. TxPowerPercentage
+		2. auto calibration based on TSSI feedback
+		3. extra 2 db for CCK
+		4. -10 db upon very-short distance (AvgRSSI >= -40db) to AP
+
+	NOTE: Since this routine requires the value of (pAd->DrsCounters.fNoisyEnvironment),
+		it should be called AFTER MlmeDynamicTxRateSwitching()
+==========================================================================
+*/
+VOID ATEAsicAdjustTxPower(
+	IN PRTMP_ADAPTER pAd) 
+{
+	INT			i, j;
+	CHAR		DeltaPwr = 0;
+	BOOLEAN		bAutoTxAgc = FALSE;
+	UCHAR		TssiRef, *pTssiMinusBoundary, *pTssiPlusBoundary, TxAgcStep;
+	UCHAR		BbpR49 = 0, idx;
+	PCHAR		pTxAgcCompensate;
+	ULONG		TxPwr[5];
+	CHAR		Value;
+
+	/* no one calls this procedure so far */
+	if (pAd->ate.TxWI.BW == BW_40)
+	{
+		if (pAd->ate.Channel > 14)
+		{
+			TxPwr[0] = pAd->Tx40MPwrCfgABand[0];
+			TxPwr[1] = pAd->Tx40MPwrCfgABand[1];
+			TxPwr[2] = pAd->Tx40MPwrCfgABand[2];
+			TxPwr[3] = pAd->Tx40MPwrCfgABand[3];
+			TxPwr[4] = pAd->Tx40MPwrCfgABand[4];
+		}
+		else
+		{
+			TxPwr[0] = pAd->Tx40MPwrCfgGBand[0];
+			TxPwr[1] = pAd->Tx40MPwrCfgGBand[1];
+			TxPwr[2] = pAd->Tx40MPwrCfgGBand[2];
+			TxPwr[3] = pAd->Tx40MPwrCfgGBand[3];
+			TxPwr[4] = pAd->Tx40MPwrCfgGBand[4];
+		}
+	}
+	else
+	{
+		if (pAd->ate.Channel > 14)
+		{
+			TxPwr[0] = pAd->Tx20MPwrCfgABand[0];
+			TxPwr[1] = pAd->Tx20MPwrCfgABand[1];
+			TxPwr[2] = pAd->Tx20MPwrCfgABand[2];
+			TxPwr[3] = pAd->Tx20MPwrCfgABand[3];
+			TxPwr[4] = pAd->Tx20MPwrCfgABand[4];
+		}
+		else
+		{
+			TxPwr[0] = pAd->Tx20MPwrCfgGBand[0];
+			TxPwr[1] = pAd->Tx20MPwrCfgGBand[1];
+			TxPwr[2] = pAd->Tx20MPwrCfgGBand[2];
+			TxPwr[3] = pAd->Tx20MPwrCfgGBand[3];
+			TxPwr[4] = pAd->Tx20MPwrCfgGBand[4];
+		}
+	}
+
+	// TX power compensation for temperature variation based on TSSI.
+	// Do it per 4 seconds.
+	if (pAd->Mlme.OneSecPeriodicRound % 4 == 0)
+	{
+		if (pAd->ate.Channel <= 14)
+		{
+			/* bg channel */
+			bAutoTxAgc         = pAd->bAutoTxAgcG;
+			TssiRef            = pAd->TssiRefG;
+			pTssiMinusBoundary = &pAd->TssiMinusBoundaryG[0];
+			pTssiPlusBoundary  = &pAd->TssiPlusBoundaryG[0];
+			TxAgcStep          = pAd->TxAgcStepG;
+			pTxAgcCompensate   = &pAd->TxAgcCompensateG;
+		}
+		else
+		{
+			/* a channel */
+			bAutoTxAgc         = pAd->bAutoTxAgcA;
+			TssiRef            = pAd->TssiRefA;
+			pTssiMinusBoundary = &pAd->TssiMinusBoundaryA[0];
+			pTssiPlusBoundary  = &pAd->TssiPlusBoundaryA[0];
+			TxAgcStep          = pAd->TxAgcStepA;
+			pTxAgcCompensate   = &pAd->TxAgcCompensateA;
+		}
+
+		if (bAutoTxAgc)
+		{
+			/* BbpR49 is unsigned char. */
+			ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R49, &BbpR49);
+
+			/* (p) TssiPlusBoundaryG[0] = 0 = (m) TssiMinusBoundaryG[0] */
+			/* compensate: +4     +3   +2   +1    0   -1   -2   -3   -4 * steps */
+			/* step value is defined in pAd->TxAgcStepG for tx power value */
+
+			/* [4]+1+[4]   p4     p3   p2   p1   o1   m1   m2   m3   m4 */
+			/* ex:         0x00 0x15 0x25 0x45 0x88 0xA0 0xB5 0xD0 0xF0
+			   above value are examined in mass factory production */
+			/*             [4]    [3]  [2]  [1]  [0]  [1]  [2]  [3]  [4] */
+
+			/* plus is 0x10 ~ 0x40, minus is 0x60 ~ 0x90 */
+			/* if value is between p1 ~ o1 or o1 ~ s1, no need to adjust tx power */
+			/* if value is 0x65, tx power will be -= TxAgcStep*(2-1) */
+
+			if (BbpR49 > pTssiMinusBoundary[1])
+			{
+				// Reading is larger than the reference value.
+				// Check for how large we need to decrease the Tx power.
+				for (idx = 1; idx < 5; idx++)
+				{
+					// Found the range.
+					if (BbpR49 <= pTssiMinusBoundary[idx])  
+						break;
+				}
+
+				// The index is the step we should decrease, idx = 0 means there is nothing to compensate.
+//				if (R3 > (ULONG) (TxAgcStep * (idx-1)))
+					*pTxAgcCompensate = -(TxAgcStep * (idx-1));
+//				else
+//					*pTxAgcCompensate = -((UCHAR)R3);
+				
+				DeltaPwr += (*pTxAgcCompensate);
+				ATEDBGPRINT(RT_DEBUG_TRACE, ("-- Tx Power, BBP R1=%x, TssiRef=%x, TxAgcStep=%x, step = -%d\n",
+					BbpR49, TssiRef, TxAgcStep, idx-1));                    
+			}
+			else if (BbpR49 < pTssiPlusBoundary[1])
+			{
+				// Reading is smaller than the reference value.
+				// Check for how large we need to increase the Tx power.
+				for (idx = 1; idx < 5; idx++)
+				{
+					// Found the range.
+					if (BbpR49 >= pTssiPlusBoundary[idx])   
+						break;
+				}
+
+				// The index is the step we should increase, idx = 0 means there is nothing to compensate.
+				*pTxAgcCompensate = TxAgcStep * (idx-1);
+				DeltaPwr += (*pTxAgcCompensate);
+				ATEDBGPRINT(RT_DEBUG_TRACE, ("++ Tx Power, BBP R1=%x, TssiRef=%x, TxAgcStep=%x, step = +%d\n",
+					BbpR49, TssiRef, TxAgcStep, idx-1));
+			}
+			else
+			{
+				*pTxAgcCompensate = 0;
+				ATEDBGPRINT(RT_DEBUG_TRACE, ("   Tx Power, BBP R1=%x, TssiRef=%x, TxAgcStep=%x, step = +%d\n",
+					BbpR49, TssiRef, TxAgcStep, 0));
+			}
+		}
+	}
+	else
+	{
+		if (pAd->ate.Channel <= 14)
+		{
+			bAutoTxAgc         = pAd->bAutoTxAgcG;
+			pTxAgcCompensate   = &pAd->TxAgcCompensateG;
+		}
+		else
+		{
+			bAutoTxAgc         = pAd->bAutoTxAgcA;
+			pTxAgcCompensate   = &pAd->TxAgcCompensateA;
+		}
+
+		if (bAutoTxAgc)
+			DeltaPwr += (*pTxAgcCompensate);
+	}
+
+	/* Calculate delta power based on the percentage specified from UI. */
+	// E2PROM setting is calibrated for maximum TX power (i.e. 100%)
+	// We lower TX power here according to the percentage specified from UI.
+	if (pAd->CommonCfg.TxPowerPercentage == 0xffffffff)       // AUTO TX POWER control
+		;
+	else if (pAd->CommonCfg.TxPowerPercentage > 90)  // 91 ~ 100% & AUTO, treat as 100% in terms of mW
+		;
+	else if (pAd->CommonCfg.TxPowerPercentage > 60)  // 61 ~ 90%, treat as 75% in terms of mW
+	{
+		DeltaPwr -= 1;
+	}
+	else if (pAd->CommonCfg.TxPowerPercentage > 30)  // 31 ~ 60%, treat as 50% in terms of mW
+	{
+		DeltaPwr -= 3;
+	}
+	else if (pAd->CommonCfg.TxPowerPercentage > 15)  // 16 ~ 30%, treat as 25% in terms of mW
+	{
+		DeltaPwr -= 6;
+	}
+	else if (pAd->CommonCfg.TxPowerPercentage > 9)   // 10 ~ 15%, treat as 12.5% in terms of mW
+	{
+		DeltaPwr -= 9;
+	}
+	else                                           // 0 ~ 9 %, treat as MIN(~3%) in terms of mW
+	{
+		DeltaPwr -= 12;
+	}
+
+	/* Reset different new tx power for different TX rate. */
+	for (i=0; i<5; i++)
+	{
+		if (TxPwr[i] != 0xffffffff)
+		{
+			for (j=0; j<8; j++)
+			{
+				Value = (CHAR)((TxPwr[i] >> j*4) & 0x0F); /* 0 ~ 15 */
+
+				if ((Value + DeltaPwr) < 0)
+				{
+					Value = 0; /* min */
+				}
+				else if ((Value + DeltaPwr) > 0xF)
+				{
+					Value = 0xF; /* max */
+				}
+				else
+				{
+					Value += DeltaPwr; /* temperature compensation */
+				}
+
+				/* fill new value to CSR offset */
+				TxPwr[i] = (TxPwr[i] & ~(0x0000000F << j*4)) | (Value << j*4);
+			}
+
+			/* write tx power value to CSR */
+			/* TX_PWR_CFG_0 (8 tx rate) for	TX power for OFDM 12M/18M
+											TX power for OFDM 6M/9M
+											TX power for CCK5.5M/11M
+											TX power for CCK1M/2M */
+			/* TX_PWR_CFG_1 ~ TX_PWR_CFG_4 */
+			RTMP_IO_WRITE32(pAd, TX_PWR_CFG_0 + i*4, TxPwr[i]);
+
+			
+		}
+	}
+
+}
+
+
+/*
+========================================================================
+	Routine Description:
+		Write TxWI for ATE mode.
+		
+	Return Value:
+		None
+========================================================================
+*/
+#ifdef RTMP_MAC_PCI
+static VOID ATEWriteTxWI(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PTXWI_STRUC 	pOutTxWI,	
+	IN	BOOLEAN			FRAG,	
+	IN	BOOLEAN			CFACK,
+	IN	BOOLEAN			InsTimestamp,
+	IN	BOOLEAN 		AMPDU,
+	IN	BOOLEAN 		Ack,
+	IN	BOOLEAN 		NSeq,		// HW new a sequence.
+	IN	UCHAR			BASize,
+	IN	UCHAR			WCID,
+	IN	ULONG			Length,
+	IN	UCHAR 			PID,
+	IN	UCHAR			TID,
+	IN	UCHAR			TxRate,
+	IN	UCHAR			Txopmode,	
+	IN	BOOLEAN			CfAck,	
+	IN	HTTRANSMIT_SETTING	*pTransmit)
+{
+	TXWI_STRUC 		TxWI;
+	PTXWI_STRUC 	pTxWI;
+
+	//
+	// Always use Long preamble before verifiation short preamble functionality works well.
+	// Todo: remove the following line if short preamble functionality works
+	//
+	OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_SHORT_PREAMBLE_INUSED);
+	NdisZeroMemory(&TxWI, TXWI_SIZE);
+	pTxWI = &TxWI;
+
+	pTxWI->FRAG= FRAG;
+
+	pTxWI->CFACK = CFACK;
+	pTxWI->TS= InsTimestamp;
+	pTxWI->AMPDU = AMPDU;
+	pTxWI->ACK = Ack;
+	pTxWI->txop= Txopmode;
+	
+	pTxWI->NSEQ = NSeq;
+
+	// John tune the performace with Intel Client in 20 MHz performance
+	if ( BASize >7 )
+		BASize =7;
+		
+	pTxWI->BAWinSize = BASize;	
+	pTxWI->WirelessCliID = WCID;
+	pTxWI->MPDUtotalByteCount = Length; 
+	pTxWI->PacketId = PID; 
+	
+	// If CCK or OFDM, BW must be 20
+	pTxWI->BW = (pTransmit->field.MODE <= MODE_OFDM) ? (BW_20) : (pTransmit->field.BW);
+	pTxWI->ShortGI = pTransmit->field.ShortGI;
+	pTxWI->STBC = pTransmit->field.STBC;
+	
+	pTxWI->MCS = pTransmit->field.MCS;
+	pTxWI->PHYMODE = pTransmit->field.MODE;
+	pTxWI->CFACK = CfAck;
+	pTxWI->MIMOps = 0;
+	pTxWI->MpduDensity = 0;
+
+	pTxWI->PacketId = pTxWI->MCS;
+	NdisMoveMemory(pOutTxWI, &TxWI, sizeof(TXWI_STRUC));
+
+    return;
+}
+#endif // RTMP_MAC_PCI //
+
+
+
+
+/*
+========================================================================
+
+	Routine Description:
+		Disable protection for ATE.
+========================================================================
+*/
+VOID ATEDisableAsicProtect(
+	IN		PRTMP_ADAPTER	pAd)
+{
+	PROT_CFG_STRUC	ProtCfg, ProtCfg4;
+	UINT32 Protect[6];
+	USHORT			offset;
+	UCHAR			i;
+	UINT32 MacReg = 0;
+
+	// Config ASIC RTS threshold register
+	RTMP_IO_READ32(pAd, TX_RTS_CFG, &MacReg);
+	MacReg &= 0xFF0000FF;
+	MacReg |= (0xFFF << 8);
+	RTMP_IO_WRITE32(pAd, TX_RTS_CFG, MacReg);
+
+	// Initial common protection settings
+	RTMPZeroMemory(Protect, sizeof(Protect));
+	ProtCfg4.word = 0;
+	ProtCfg.word = 0;
+	ProtCfg.field.TxopAllowGF40 = 1;
+	ProtCfg.field.TxopAllowGF20 = 1;
+	ProtCfg.field.TxopAllowMM40 = 1;
+	ProtCfg.field.TxopAllowMM20 = 1;
+	ProtCfg.field.TxopAllowOfdm = 1;
+	ProtCfg.field.TxopAllowCck = 1;
+	ProtCfg.field.RTSThEn = 1;
+	ProtCfg.field.ProtectNav = ASIC_SHORTNAV;
+
+	// Handle legacy(B/G) protection
+	ProtCfg.field.ProtectRate = pAd->CommonCfg.RtsRate;
+	ProtCfg.field.ProtectCtrl = 0;
+	Protect[0] = ProtCfg.word;
+	Protect[1] = ProtCfg.word;
+	/* CTS-self is not used */
+	pAd->FlgCtsEnabled = 0; 
+
+	// NO PROTECT 
+	// 1.All STAs in the BSS are 20/40 MHz HT
+	// 2. in ai 20/40MHz BSS
+	// 3. all STAs are 20MHz in a 20MHz BSS
+	// Pure HT. no protection.
+
+	// MM20_PROT_CFG
+	//	Reserved (31:27)
+	// 	PROT_TXOP(25:20) -- 010111
+	//	PROT_NAV(19:18)  -- 01 (Short NAV protection)
+	//  PROT_CTRL(17:16) -- 00 (None)
+	// 	PROT_RATE(15:0)  -- 0x4004 (OFDM 24M)
+	Protect[2] = 0x01744004;	
+
+	// MM40_PROT_CFG
+	//	Reserved (31:27)
+	// 	PROT_TXOP(25:20) -- 111111
+	//	PROT_NAV(19:18)  -- 01 (Short NAV protection)
+	//  PROT_CTRL(17:16) -- 00 (None) 
+	// 	PROT_RATE(15:0)  -- 0x4084 (duplicate OFDM 24M)
+	Protect[3] = 0x03f44084;
+
+	// CF20_PROT_CFG
+	//	Reserved (31:27)
+	// 	PROT_TXOP(25:20) -- 010111
+	//	PROT_NAV(19:18)  -- 01 (Short NAV protection)
+	//  PROT_CTRL(17:16) -- 00 (None)
+	// 	PROT_RATE(15:0)  -- 0x4004 (OFDM 24M)
+	Protect[4] = 0x01744004;
+
+	// CF40_PROT_CFG
+	//	Reserved (31:27)
+	// 	PROT_TXOP(25:20) -- 111111
+	//	PROT_NAV(19:18)  -- 01 (Short NAV protection)
+	//  PROT_CTRL(17:16) -- 00 (None)
+	// 	PROT_RATE(15:0)  -- 0x4084 (duplicate OFDM 24M)
+	Protect[5] = 0x03f44084;
+
+	pAd->CommonCfg.IOTestParm.bRTSLongProtOn = FALSE;
+	
+	offset = CCK_PROT_CFG;
+	for (i = 0;i < 6;i++)
+		RTMP_IO_WRITE32(pAd, offset + i*4, Protect[i]);
+
+}
+
+
+
+
+/* There are two ways to convert Rssi */
+/* the way used with GET_LNA_GAIN() */
+CHAR ATEConvertToRssi(
+	IN PRTMP_ADAPTER pAd,
+	IN	CHAR	Rssi,
+	IN  UCHAR   RssiNumber)
+{
+	UCHAR	RssiOffset, LNAGain;
+
+	// Rssi equals to zero should be an invalid value
+	if (Rssi == 0)
+		return -99;
+	
+	LNAGain = GET_LNA_GAIN(pAd);
+	if (pAd->LatchRfRegs.Channel > 14)
+	{
+		if (RssiNumber == 0)
+			RssiOffset = pAd->ARssiOffset0;
+		else if (RssiNumber == 1)
+			RssiOffset = pAd->ARssiOffset1;
+		else
+			RssiOffset = pAd->ARssiOffset2;
+	}
+	else
+	{
+		if (RssiNumber == 0)
+			RssiOffset = pAd->BGRssiOffset0;
+		else if (RssiNumber == 1)
+			RssiOffset = pAd->BGRssiOffset1;
+		else
+			RssiOffset = pAd->BGRssiOffset2;
+	}
+
+	return (-12 - RssiOffset - LNAGain - Rssi);
+}
+
+
+/*
+========================================================================
+
+	Routine Description:
+		Set Japan filter coefficients if needed.
+	Note:
+		This routine should only be called when
+		entering TXFRAME mode or TXCONT mode.
+				
+========================================================================
+*/
+static VOID SetJapanFilter(
+	IN		PRTMP_ADAPTER	pAd)
+{
+	UCHAR			BbpData = 0;
+	
+	//
+	// If Channel=14 and Bandwidth=20M and Mode=CCK, set BBP R4 bit5=1
+	// (Japan Tx filter coefficients)when (TXFRAME or TXCONT).
+	//
+	ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R4, &BbpData);
+
+    if ((pAd->ate.TxWI.PHYMODE == MODE_CCK) && (pAd->ate.Channel == 14) && (pAd->ate.TxWI.BW == BW_20))
+    {
+        BbpData |= 0x20;    // turn on
+        ATEDBGPRINT(RT_DEBUG_TRACE, ("SetJapanFilter!!!\n"));
+    }
+    else
+    {
+		BbpData &= 0xdf;    // turn off
+		ATEDBGPRINT(RT_DEBUG_TRACE, ("ClearJapanFilter!!!\n"));
+    }
+
+	ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R4, BbpData);
+}
+
+
+VOID ATESampleRssi(
+	IN PRTMP_ADAPTER	pAd,
+	IN PRXWI_STRUC		pRxWI)
+{
+	/* There are two ways to collect RSSI. */
+//	pAd->LastRxRate = (USHORT)((pRxWI->MCS) + (pRxWI->BW <<7) + (pRxWI->ShortGI <<8)+ (pRxWI->PHYMODE <<14)) ;
+	if (pRxWI->RSSI0 != 0)
+	{
+		pAd->ate.LastRssi0	= ATEConvertToRssi(pAd, (CHAR) pRxWI->RSSI0, RSSI_0);
+		pAd->ate.AvgRssi0X8	= (pAd->ate.AvgRssi0X8 - pAd->ate.AvgRssi0) + pAd->ate.LastRssi0;
+		pAd->ate.AvgRssi0  	= pAd->ate.AvgRssi0X8 >> 3;
+	}
+	if (pRxWI->RSSI1 != 0)
+	{
+		pAd->ate.LastRssi1	= ATEConvertToRssi(pAd, (CHAR) pRxWI->RSSI1, RSSI_1);
+		pAd->ate.AvgRssi1X8	= (pAd->ate.AvgRssi1X8 - pAd->ate.AvgRssi1) + pAd->ate.LastRssi1;
+		pAd->ate.AvgRssi1	= pAd->ate.AvgRssi1X8 >> 3;
+	}
+	if (pRxWI->RSSI2 != 0)
+	{
+		pAd->ate.LastRssi2	= ATEConvertToRssi(pAd, (CHAR) pRxWI->RSSI2, RSSI_2);
+		pAd->ate.AvgRssi2X8	= (pAd->ate.AvgRssi2X8 - pAd->ate.AvgRssi2) + pAd->ate.LastRssi2;
+		pAd->ate.AvgRssi2	= pAd->ate.AvgRssi2X8 >> 3;
+	}
+
+	pAd->ate.LastSNR0 = (CHAR)(pRxWI->SNR0);// CHAR ==> UCHAR ?
+	pAd->ate.LastSNR1 = (CHAR)(pRxWI->SNR1);// CHAR ==> UCHAR ?
+
+	pAd->ate.NumOfAvgRssiSample ++;
+}
+
+
+#ifdef CONFIG_STA_SUPPORT
+VOID RTMPStationStop(
+    IN  PRTMP_ADAPTER   pAd)
+{
+//	BOOLEAN       Cancelled;
+	
+    ATEDBGPRINT(RT_DEBUG_TRACE, ("==> RTMPStationStop\n"));
+
+	// For rx statistics, we need to keep this timer running.
+//	RTMPCancelTimer(&pAd->Mlme.PeriodicTimer,      &Cancelled);
+
+    ATEDBGPRINT(RT_DEBUG_TRACE, ("<== RTMPStationStop\n"));
+}
+
+
+VOID RTMPStationStart(
+    IN  PRTMP_ADAPTER   pAd)
+{
+    ATEDBGPRINT(RT_DEBUG_TRACE, ("==> RTMPStationStart\n"));
+
+#ifdef RTMP_MAC_PCI
+	pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE;
+
+	/* We did not cancel this timer when entering ATE mode. */
+//	RTMPSetTimer(&pAd->Mlme.PeriodicTimer, MLME_TASK_EXEC_INTV);
+#endif // RTMP_MAC_PCI //
+
+	ATEDBGPRINT(RT_DEBUG_TRACE, ("<== RTMPStationStart\n"));
+}
+#endif // CONFIG_STA_SUPPORT //
+
+
+/* 
+==========================================================================
+	Description:
+		Setup Frame format.
+	NOTE:
+		This routine should only be used in ATE mode.
+==========================================================================
+*/
+#ifdef RTMP_MAC_PCI
+static INT ATESetUpFrame(
+	IN PRTMP_ADAPTER pAd,
+	IN UINT32 TxIdx)
+{
+	UINT j;
+	PTXD_STRUC pTxD;
+#ifdef RT_BIG_ENDIAN
+    PTXD_STRUC      pDestTxD;
+    TXD_STRUC       TxD;
+#endif
+	PNDIS_PACKET pPacket;
+	PUCHAR pDest;
+	PVOID AllocVa;
+	NDIS_PHYSICAL_ADDRESS AllocPa;
+	HTTRANSMIT_SETTING	TxHTPhyMode;
+
+	PRTMP_TX_RING pTxRing = &pAd->TxRing[QID_AC_BE];
+	PTXWI_STRUC pTxWI = (PTXWI_STRUC) pTxRing->Cell[TxIdx].DmaBuf.AllocVa;
+	PUCHAR pDMAHeaderBufVA = (PUCHAR) pTxRing->Cell[TxIdx].DmaBuf.AllocVa;
+
+#ifdef RALINK_28xx_QA
+	PHEADER_802_11	pHeader80211;
+#endif // RALINK_28xx_QA //
+
+	if (pAd->ate.bQATxStart == TRUE) 
+	{
+		// always use QID_AC_BE and FIFO_EDCA
+
+		// fill TxWI
+		TxHTPhyMode.field.BW = pAd->ate.TxWI.BW;
+		TxHTPhyMode.field.ShortGI = pAd->ate.TxWI.ShortGI;
+		TxHTPhyMode.field.STBC = 0;
+		TxHTPhyMode.field.MCS = pAd->ate.TxWI.MCS;
+		TxHTPhyMode.field.MODE = pAd->ate.TxWI.PHYMODE;
+
+		ATEWriteTxWI(pAd, pTxWI, pAd->ate.TxWI.FRAG, pAd->ate.TxWI.CFACK,
+			pAd->ate.TxWI.TS,  pAd->ate.TxWI.AMPDU, pAd->ate.TxWI.ACK, pAd->ate.TxWI.NSEQ, 
+			pAd->ate.TxWI.BAWinSize, 0, pAd->ate.TxWI.MPDUtotalByteCount, pAd->ate.TxWI.PacketId, 0, 0,
+			pAd->ate.TxWI.txop/*IFS_HTTXOP*/, pAd->ate.TxWI.CFACK/*FALSE*/, &TxHTPhyMode);
+
+		/* It will affect transmit data rate ??? But QA is tested... */		
+	}
+	else
+	{
+		TxHTPhyMode.field.BW = pAd->ate.TxWI.BW;
+		TxHTPhyMode.field.ShortGI = pAd->ate.TxWI.ShortGI;
+		TxHTPhyMode.field.STBC = 0;
+		TxHTPhyMode.field.MCS = pAd->ate.TxWI.MCS;
+		TxHTPhyMode.field.MODE = pAd->ate.TxWI.PHYMODE;
+		ATEWriteTxWI(pAd, pTxWI, FALSE, FALSE, FALSE,  FALSE, FALSE, FALSE, 
+			4, 0, pAd->ate.TxLength, 0, 0, 0, IFS_HTTXOP, FALSE, &TxHTPhyMode);
+	}
+	
+	// fill 802.11 header
+#ifdef RALINK_28xx_QA
+	if (pAd->ate.bQATxStart == TRUE) 
+	{
+		NdisMoveMemory(pDMAHeaderBufVA+TXWI_SIZE, pAd->ate.Header, pAd->ate.HLen);
+	}
+	else
+#endif // RALINK_28xx_QA //
+	{
+		NdisMoveMemory(pDMAHeaderBufVA+TXWI_SIZE, TemplateFrame, LENGTH_802_11);
+		NdisMoveMemory(pDMAHeaderBufVA+TXWI_SIZE+4, pAd->ate.Addr1, ETH_LENGTH_OF_ADDRESS);
+		NdisMoveMemory(pDMAHeaderBufVA+TXWI_SIZE+10, pAd->ate.Addr2, ETH_LENGTH_OF_ADDRESS);
+		NdisMoveMemory(pDMAHeaderBufVA+TXWI_SIZE+16, pAd->ate.Addr3, ETH_LENGTH_OF_ADDRESS);
+	}
+
+#ifdef RT_BIG_ENDIAN
+	RTMPFrameEndianChange(pAd, (((PUCHAR)pDMAHeaderBufVA)+TXWI_SIZE), DIR_READ, FALSE);
+#endif // RT_BIG_ENDIAN //
+
+	/* alloc buffer for payload */
+#ifdef RALINK_28xx_QA
+	if (pAd->ate.bQATxStart == TRUE) 
+	{
+		pPacket = RTMP_AllocateRxPacketBuffer(pAd, pAd->ate.DLen + 0x100, FALSE, &AllocVa, &AllocPa);
+	}
+	else
+#endif // RALINK_28xx_QA //
+	{
+		pPacket = RTMP_AllocateRxPacketBuffer(pAd, pAd->ate.TxLength, FALSE, &AllocVa, &AllocPa);
+	}
+
+	if (pPacket == NULL)
+	{
+		pAd->ate.TxCount = 0;
+		ATEDBGPRINT(RT_DEBUG_TRACE, ("%s fail to alloc packet space.\n", __FUNCTION__));
+		return -1;
+	}
+	pTxRing->Cell[TxIdx].pNextNdisPacket = pPacket;
+
+	pDest = (PUCHAR) AllocVa;
+
+#ifdef RALINK_28xx_QA
+	if (pAd->ate.bQATxStart == TRUE) 
+	{
+		GET_OS_PKT_LEN(pPacket) = pAd->ate.DLen;
+	}
+	else
+#endif // RALINK_28xx_QA //
+	{
+		GET_OS_PKT_LEN(pPacket) = pAd->ate.TxLength - LENGTH_802_11;
+	}
+
+	// prepare frame payload
+#ifdef RALINK_28xx_QA
+	if (pAd->ate.bQATxStart == TRUE) 
+	{
+		// copy pattern
+		if ((pAd->ate.PLen != 0))
+		{
+			int j;
+			
+			for (j = 0; j < pAd->ate.DLen; j+=pAd->ate.PLen)
+			{
+				memcpy(GET_OS_PKT_DATAPTR(pPacket) + j, pAd->ate.Pattern, pAd->ate.PLen);
+			}
+		}
+	}
+	else
+#endif // RALINK_28xx_QA //
+	{
+		for(j = 0; j < GET_OS_PKT_LEN(pPacket); j++)
+			pDest[j] = 0xA5;
+	}
+
+	/* build Tx Descriptor */
+#ifndef RT_BIG_ENDIAN
+	pTxD = (PTXD_STRUC) pTxRing->Cell[TxIdx].AllocVa;
+#else
+    pDestTxD  = (PTXD_STRUC)pTxRing->Cell[TxIdx].AllocVa;
+    TxD = *pDestTxD;
+    pTxD = &TxD;
+#endif // !RT_BIG_ENDIAN //
+
+#ifdef RALINK_28xx_QA
+	if (pAd->ate.bQATxStart == TRUE)
+	{
+		// prepare TxD
+		NdisZeroMemory(pTxD, TXD_SIZE);
+		RTMPWriteTxDescriptor(pAd, pTxD, FALSE, FIFO_EDCA);
+		// build TX DESC
+		pTxD->SDPtr0 = RTMP_GetPhysicalAddressLow(pTxRing->Cell[TxIdx].DmaBuf.AllocPa);
+		pTxD->SDLen0 = TXWI_SIZE + pAd->ate.HLen;
+		pTxD->LastSec0 = 0;
+		pTxD->SDPtr1 = AllocPa;
+		pTxD->SDLen1 = GET_OS_PKT_LEN(pPacket);
+		pTxD->LastSec1 = 1;
+
+		pDest = (PUCHAR)pTxWI;
+		pDest += TXWI_SIZE;
+		pHeader80211 = (PHEADER_802_11)pDest;
+		
+		// modify sequence number...
+		if (pAd->ate.TxDoneCount == 0)
+		{
+			pAd->ate.seq = pHeader80211->Sequence;
+		}
+		else
+			pHeader80211->Sequence = ++pAd->ate.seq;
+	}
+	else
+#endif // RALINK_28xx_QA //
+	{
+		NdisZeroMemory(pTxD, TXD_SIZE);
+		RTMPWriteTxDescriptor(pAd, pTxD, FALSE, FIFO_EDCA);
+		// build TX DESC
+		pTxD->SDPtr0 = RTMP_GetPhysicalAddressLow (pTxRing->Cell[TxIdx].DmaBuf.AllocPa);
+		pTxD->SDLen0 = TXWI_SIZE + LENGTH_802_11;
+		pTxD->LastSec0 = 0;
+		pTxD->SDPtr1 = AllocPa;
+		pTxD->SDLen1 = GET_OS_PKT_LEN(pPacket);
+		pTxD->LastSec1 = 1;
+	}
+
+#ifdef RT_BIG_ENDIAN
+	RTMPWIEndianChange((PUCHAR)pTxWI, TYPE_TXWI);
+	RTMPFrameEndianChange(pAd, (((PUCHAR)pDMAHeaderBufVA)+TXWI_SIZE), DIR_WRITE, FALSE);
+    RTMPDescriptorEndianChange((PUCHAR)pTxD, TYPE_TXD);
+    WriteBackToDescriptor((PUCHAR)pDestTxD, (PUCHAR)pTxD, FALSE, TYPE_TXD);
+#endif // RT_BIG_ENDIAN //
+
+	return 0;
+}
+
+#ifdef RT35xx
+/*
+========================================================================
+	
+	Routine Description: 3062/3562 R66 writing must select BBP_R27
+
+	Arguments:
+
+	Return Value:
+	
+	Note:
+	
+========================================================================
+*/
+NTSTATUS	ATE_RT3562WriteBBPR66(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	UCHAR			Value)
+{
+	NTSTATUS NStatus = STATUS_UNSUCCESSFUL;
+	UCHAR BBPData = 0;
+
+	if (!IS_RT3572(pAd))
+		return NStatus;
+
+	ATEPCIReadBBPRegister(pAd, BBP_R27, &BBPData);
+
+	// R66 controls the gain of Rx0
+	BBPData &= ~(0x60);// clear bit 5,6
+	ATEPCIWriteBBPRegister(pAd, BBP_R27, BBPData);
+	ATEPCIWriteBBPRegister(pAd, BBP_R66, Value);
+
+	// R66 controls the gain of Rx1
+	BBPData |= 0x20;// set bit 5
+	ATEPCIWriteBBPRegister(pAd, BBP_R27, BBPData);
+	ATEPCIWriteBBPRegister(pAd, BBP_R66, Value);
+	NStatus = STATUS_SUCCESS;
+
+	return NStatus;
+}
+#endif // RT35xx //
+/*=======================End of RTMP_MAC_PCI =======================*/
+#endif // RTMP_MAC_PCI //
+
+
+
+
+VOID rt_ee_read_all(PRTMP_ADAPTER pAd, USHORT *Data)
+{
+	USHORT i;
+	USHORT value;
+
+
+	for (i = 0 ; i < EEPROM_SIZE/2 ; )
+	{
+		/* "value" is especially for some compilers... */
+		RT28xx_EEPROM_READ16(pAd, i*2, value);
+		Data[i] = value;
+		i++;
+	}
+}
+
+
+VOID rt_ee_write_all(PRTMP_ADAPTER pAd, USHORT *Data)
+{
+	USHORT i;
+	USHORT value;
+
+
+	for (i = 0 ; i < EEPROM_SIZE/2 ; )
+	{
+		/* "value" is especially for some compilers... */
+		value = Data[i];
+		RT28xx_EEPROM_WRITE16(pAd, i*2, value);
+		i++;
+	}
+}
+
+
+#ifdef RALINK_28xx_QA
+VOID ATE_QA_Statistics(
+	IN PRTMP_ADAPTER			pAd,
+	IN PRXWI_STRUC				pRxWI,
+	IN PRT28XX_RXD_STRUC		pRxD,
+	IN PHEADER_802_11			pHeader)
+{
+	// update counter first
+	if (pHeader != NULL)
+	{
+		if (pHeader->FC.Type == BTYPE_DATA)
+		{
+			if (pRxD->U2M)
+				pAd->ate.U2M++;
+			else
+				pAd->ate.OtherData++;
+		}
+		else if (pHeader->FC.Type == BTYPE_MGMT)
+		{
+			if (pHeader->FC.SubType == SUBTYPE_BEACON)
+				pAd->ate.Beacon++;
+			else
+				pAd->ate.OtherCount++;
+		}
+		else if (pHeader->FC.Type == BTYPE_CNTL)
+		{
+			pAd->ate.OtherCount++;
+		}
+	}
+	pAd->ate.RSSI0 = pRxWI->RSSI0; 
+	pAd->ate.RSSI1 = pRxWI->RSSI1; 
+	pAd->ate.RSSI2 = pRxWI->RSSI2; 
+	pAd->ate.SNR0 = pRxWI->SNR0;
+	pAd->ate.SNR1 = pRxWI->SNR1;
+}
+
+
+
+VOID RtmpDoAte(
+	IN	PRTMP_ADAPTER	pAdapter, 
+	IN	struct iwreq	*wrq)
+{
+	USHORT Command_Id;
+	INT	Status = NDIS_STATUS_SUCCESS;
+	struct ate_racfghdr *pRaCfg;
+	
+
+	if ((pRaCfg = kmalloc(sizeof(struct ate_racfghdr), GFP_KERNEL)) == NULL)
+	{
+		Status = -EINVAL;
+		return;
+	}
+				
+	NdisZeroMemory(pRaCfg, sizeof(struct ate_racfghdr));
+
+    if (copy_from_user((PUCHAR)pRaCfg, wrq->u.data.pointer, wrq->u.data.length))
+	{
+		Status = -EFAULT;
+
+		kfree(pRaCfg);
+		return;
+	}
+    
+	Command_Id = ntohs(pRaCfg->command_id);
+	
+	ATEDBGPRINT(RT_DEBUG_TRACE,("\n%s: Command_Id = 0x%04x !\n", __FUNCTION__, Command_Id));
+	
+	switch (Command_Id) 
+	{
+ 		/* We will get this command when QA starts. */
+		case RACFG_CMD_ATE_START:
+			Status=DO_RACFG_CMD_ATE_START(pAdapter,wrq,pRaCfg);
+			break;
+
+ 		/* We will get this command either QA is closed or ated is killed by user. */
+		case RACFG_CMD_ATE_STOP:
+			Status=DO_RACFG_CMD_ATE_STOP(pAdapter,wrq,pRaCfg);
+			break;
+
+		case RACFG_CMD_RF_WRITE_ALL:
+			Status=DO_RACFG_CMD_RF_WRITE_ALL(pAdapter,wrq,pRaCfg);
+			break;				
+			
+		case RACFG_CMD_E2PROM_READ16:
+			Status=DO_RACFG_CMD_E2PROM_READ16(pAdapter,wrq,pRaCfg);
+			break;
+
+		case RACFG_CMD_E2PROM_WRITE16:
+			Status=DO_RACFG_CMD_E2PROM_WRITE16(pAdapter,wrq,pRaCfg);
+			break;
+
+		case RACFG_CMD_E2PROM_READ_ALL:
+			Status=DO_RACFG_CMD_E2PROM_READ_ALL(pAdapter,wrq,pRaCfg);
+			break;
+
+		case RACFG_CMD_E2PROM_WRITE_ALL:
+			Status=DO_RACFG_CMD_E2PROM_WRITE_ALL(pAdapter,wrq,pRaCfg);
+			break;
+
+		case RACFG_CMD_IO_READ:
+			Status=DO_RACFG_CMD_IO_READ(pAdapter,wrq,pRaCfg);
+			break;
+
+		case RACFG_CMD_IO_WRITE:
+			Status=DO_RACFG_CMD_IO_WRITE(pAdapter,wrq,pRaCfg);
+			break;
+			
+		case RACFG_CMD_IO_READ_BULK:
+			Status=DO_RACFG_CMD_IO_READ_BULK(pAdapter,wrq,pRaCfg);
+			break;
+
+		case RACFG_CMD_BBP_READ8:
+			Status=DO_RACFG_CMD_BBP_READ8(pAdapter,wrq,pRaCfg);
+			break;
+		case RACFG_CMD_BBP_WRITE8:
+			Status=DO_RACFG_CMD_BBP_WRITE8(pAdapter,wrq,pRaCfg);
+			break;
+
+		case RACFG_CMD_BBP_READ_ALL:
+			Status=DO_RACFG_CMD_BBP_READ_ALL(pAdapter,wrq,pRaCfg);
+			break;
+
+		case RACFG_CMD_ATE_E2PROM_READ_BULK:
+			Status=DO_RACFG_CMD_ATE_E2PROM_READ_BULK(pAdapter,wrq,pRaCfg);
+			break;
+
+		case RACFG_CMD_ATE_E2PROM_WRITE_BULK:
+			Status=DO_RACFG_CMD_ATE_E2PROM_WRITE_BULK(pAdapter,wrq,pRaCfg);
+			break;
+
+		case RACFG_CMD_ATE_IO_WRITE_BULK:
+			Status=DO_RACFG_CMD_ATE_IO_WRITE_BULK(pAdapter,wrq,pRaCfg);
+			break;
+
+		case RACFG_CMD_ATE_BBP_READ_BULK:
+			Status=DO_RACFG_CMD_ATE_BBP_READ_BULK(pAdapter,wrq,pRaCfg);
+			break;
+
+		case RACFG_CMD_ATE_BBP_WRITE_BULK:
+			Status=DO_RACFG_CMD_ATE_BBP_WRITE_BULK(pAdapter,wrq,pRaCfg);
+			break;
+
+#ifdef RTMP_RF_RW_SUPPORT
+		case RACFG_CMD_ATE_RF_READ_BULK:
+			Status=DO_RACFG_CMD_ATE_RF_READ_BULK(pAdapter,wrq,pRaCfg);
+			break;
+
+		case RACFG_CMD_ATE_RF_WRITE_BULK:
+			Status=DO_RACFG_CMD_ATE_RF_WRITE_BULK(pAdapter,wrq,pRaCfg);
+			break;
+#endif // RTMP_RF_RW_SUPPORT //
+
+		case RACFG_CMD_GET_NOISE_LEVEL:
+			Status=DO_RACFG_CMD_GET_NOISE_LEVEL(pAdapter,wrq,pRaCfg);
+			break;
+
+
+		case RACFG_CMD_GET_COUNTER:
+			Status=DO_RACFG_CMD_GET_COUNTER(pAdapter,wrq,pRaCfg);
+			break;
+
+		case RACFG_CMD_CLEAR_COUNTER:
+			Status=DO_RACFG_CMD_CLEAR_COUNTER(pAdapter,wrq,pRaCfg);
+			break;
+
+		case RACFG_CMD_TX_START:
+			Status=DO_RACFG_CMD_TX_START(pAdapter,wrq,pRaCfg);
+			break;
+
+		case RACFG_CMD_GET_TX_STATUS:
+			Status=DO_RACFG_CMD_GET_TX_STATUS(pAdapter,wrq,pRaCfg);
+			break;
+
+		case RACFG_CMD_TX_STOP:
+			Status=DO_RACFG_CMD_TX_STOP(pAdapter,wrq,pRaCfg);
+			break;
+
+		case RACFG_CMD_RX_START:
+			Status=DO_RACFG_CMD_RX_START(pAdapter,wrq,pRaCfg);
+			break;
+
+		case RACFG_CMD_RX_STOP:
+			Status=DO_RACFG_CMD_RX_STOP(pAdapter,wrq,pRaCfg);
+			break;
+
+		/* The following cases are for new ATE GUI(not QA). */
+		/*==================================================*/
+		case RACFG_CMD_ATE_START_TX_CARRIER:
+			Status=DO_RACFG_CMD_ATE_START_TX_CARRIER(pAdapter,wrq,pRaCfg);
+			break;
+
+		case RACFG_CMD_ATE_START_TX_CONT:
+			Status=DO_RACFG_CMD_ATE_START_TX_CONT(pAdapter,wrq,pRaCfg);
+			break;
+
+		case RACFG_CMD_ATE_START_TX_FRAME:
+			Status=DO_RACFG_CMD_ATE_START_TX_FRAME(pAdapter,wrq,pRaCfg);
+			break;	
+
+		case RACFG_CMD_ATE_SET_BW:
+			Status=DO_RACFG_CMD_ATE_SET_BW(pAdapter,wrq,pRaCfg);
+			break;
+
+		case RACFG_CMD_ATE_SET_TX_POWER0:
+			Status=DO_RACFG_CMD_ATE_SET_TX_POWER0(pAdapter,wrq,pRaCfg);
+			break;
+
+		case RACFG_CMD_ATE_SET_TX_POWER1:
+			Status=DO_RACFG_CMD_ATE_SET_TX_POWER1(pAdapter,wrq,pRaCfg);
+			break;
+
+		case RACFG_CMD_ATE_SET_FREQ_OFFSET:
+			Status=DO_RACFG_CMD_ATE_SET_TX_POWER1(pAdapter,wrq,pRaCfg);
+			break;
+
+		case RACFG_CMD_ATE_GET_STATISTICS:
+			Status=DO_RACFG_CMD_ATE_GET_STATISTICS(pAdapter,wrq,pRaCfg);	
+			break;
+
+		case RACFG_CMD_ATE_RESET_COUNTER:
+			Status=DO_RACFG_CMD_ATE_RESET_COUNTER(pAdapter,wrq,pRaCfg);	
+			break;
+
+		case RACFG_CMD_ATE_SEL_TX_ANTENNA:
+			Status=DO_RACFG_CMD_ATE_SEL_TX_ANTENNA(pAdapter,wrq,pRaCfg);		
+			break;
+			
+		case RACFG_CMD_ATE_SEL_RX_ANTENNA:
+			Status=DO_RACFG_CMD_ATE_SEL_TX_ANTENNA(pAdapter,wrq,pRaCfg);
+			break;
+
+		case RACFG_CMD_ATE_SET_PREAMBLE:
+			Status=DO_RACFG_CMD_ATE_SET_PREAMBLE(pAdapter,wrq,pRaCfg);
+			break;
+
+		case RACFG_CMD_ATE_SET_CHANNEL:
+			Status=DO_RACFG_CMD_ATE_SET_CHANNEL(pAdapter,wrq,pRaCfg);
+			break;
+
+		case RACFG_CMD_ATE_SET_ADDR1:
+			Status=DO_RACFG_CMD_ATE_SET_ADDR1(pAdapter,wrq,pRaCfg);
+			break;
+
+		case RACFG_CMD_ATE_SET_ADDR2:
+			Status=DO_RACFG_CMD_ATE_SET_ADDR2(pAdapter,wrq,pRaCfg);
+			break;
+
+		case RACFG_CMD_ATE_SET_ADDR3:
+			Status=DO_RACFG_CMD_ATE_SET_ADDR3(pAdapter,wrq,pRaCfg);
+			break;
+
+		case RACFG_CMD_ATE_SET_RATE:
+			Status=DO_RACFG_CMD_ATE_SET_RATE(pAdapter,wrq,pRaCfg);
+			break;
+
+		case RACFG_CMD_ATE_SET_TX_FRAME_LEN:
+			Status=DO_RACFG_CMD_ATE_SET_TX_FRAME_LEN(pAdapter,wrq,pRaCfg);
+			break;
+
+		case RACFG_CMD_ATE_SET_TX_FRAME_COUNT:
+			Status=DO_RACFG_CMD_ATE_SET_TX_FRAME_COUNT(pAdapter,wrq,pRaCfg);
+			break;
+
+		case RACFG_CMD_ATE_START_RX_FRAME:
+			Status=DO_RACFG_CMD_ATE_START_RX_FRAME(pAdapter,wrq,pRaCfg);
+			break;
+		default:
+			break;		
+	}
+
+    ASSERT(pRaCfg != NULL);
+
+    if (pRaCfg != NULL)
+	    kfree(pRaCfg);
+
+	return;
+}
+
+
+VOID BubbleSort(INT32 n, INT32 a[])
+{ 
+	INT32 k, j, temp;
+
+	for (k = n-1;  k>0;  k--)
+	{
+		for (j = 0; j<k; j++)
+		{
+			if (a[j] > a[j+1])
+			{
+				temp = a[j]; 
+				a[j]=a[j+1]; 
+				a[j+1]=temp;
+			}
+		}
+	}
+} 
+
+
+VOID CalNoiseLevel(PRTMP_ADAPTER pAd, UCHAR channel, INT32 RSSI[3][10])
+{
+	INT32		RSSI0, RSSI1, RSSI2;
+ 	CHAR		Rssi0Offset, Rssi1Offset, Rssi2Offset;
+	UCHAR		BbpR50Rssi0 = 0, BbpR51Rssi1 = 0, BbpR52Rssi2 = 0;
+	UCHAR		Org_BBP66value = 0, Org_BBP69value = 0, Org_BBP70value = 0, data = 0;
+	USHORT		LNA_Gain = 0;
+	INT32       j = 0;
+	UCHAR		Org_Channel = pAd->ate.Channel;
+	USHORT	    GainValue = 0, OffsetValue = 0;
+
+	ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R66, &Org_BBP66value);
+	ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R69, &Org_BBP69value);	
+	ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R70, &Org_BBP70value);
+
+	//**********************************************************************
+	// Read the value of LNA gain and Rssi offset 
+	//**********************************************************************
+	RT28xx_EEPROM_READ16(pAd, EEPROM_LNA_OFFSET, GainValue);
+
+	// for Noise Level
+	if (channel <= 14)
+	{
+		LNA_Gain = GainValue & 0x00FF;		 
+
+		RT28xx_EEPROM_READ16(pAd, EEPROM_RSSI_BG_OFFSET, OffsetValue);
+		Rssi0Offset = OffsetValue & 0x00FF;
+		Rssi1Offset = (OffsetValue & 0xFF00) >> 8;
+		RT28xx_EEPROM_READ16(pAd, (EEPROM_RSSI_BG_OFFSET + 2)/* 0x48 */, OffsetValue);
+		Rssi2Offset = OffsetValue & 0x00FF;
+	}
+	else
+	{
+		LNA_Gain = (GainValue & 0xFF00) >> 8;
+
+		RT28xx_EEPROM_READ16(pAd, EEPROM_RSSI_A_OFFSET, OffsetValue);
+		Rssi0Offset = OffsetValue & 0x00FF;
+		Rssi1Offset = (OffsetValue & 0xFF00) >> 8;
+		RT28xx_EEPROM_READ16(pAd, (EEPROM_RSSI_A_OFFSET + 2)/* 0x4C */, OffsetValue);
+		Rssi2Offset = OffsetValue & 0x00FF;
+	}
+	//**********************************************************************	
+	{
+		pAd->ate.Channel = channel;
+		ATEAsicSwitchChannel(pAd);
+		mdelay(5);
+
+		data = 0x10;
+		ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R66, data);	
+		data = 0x40;
+		ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R69, data);
+		data = 0x40;
+		ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R70, data);
+		mdelay(5);
+
+		// start Rx
+		pAd->ate.bQARxStart = TRUE;
+		Set_ATE_Proc(pAd, "RXFRAME");
+
+		mdelay(5);
+
+		for (j = 0; j < 10; j++)
+		{
+			ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R50, &BbpR50Rssi0);
+			ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R51, &BbpR51Rssi1);	
+			ATE_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R52, &BbpR52Rssi2);
+
+			mdelay(10);
+
+			// calculate RSSI 0
+			if (BbpR50Rssi0 == 0)
+			{
+				RSSI0 = -100;
+			}
+			else
+			{
+				RSSI0 = (INT32)(-12 - BbpR50Rssi0 - LNA_Gain - Rssi0Offset);
+			}
+			RSSI[0][j] = RSSI0;
+
+			if ( pAd->Antenna.field.RxPath >= 2 ) // 2R
+			{
+				// calculate RSSI 1
+				if (BbpR51Rssi1 == 0)
+				{
+					RSSI1 = -100;
+				}
+				else
+				{
+					RSSI1 = (INT32)(-12 - BbpR51Rssi1 - LNA_Gain - Rssi1Offset);
+				}
+				RSSI[1][j] = RSSI1;
+			}
+
+			if ( pAd->Antenna.field.RxPath >= 3 ) // 3R
+			{
+				// calculate RSSI 2
+				if (BbpR52Rssi2 == 0)
+					RSSI2 = -100;
+				else
+					RSSI2 = (INT32)(-12 - BbpR52Rssi2 - LNA_Gain - Rssi2Offset);
+
+				RSSI[2][j] = RSSI2;
+			}
+		}
+
+		// stop Rx
+		Set_ATE_Proc(pAd, "RXSTOP");
+
+		mdelay(5);
+
+		BubbleSort(10, RSSI[0]);	// 1R		
+
+		if ( pAd->Antenna.field.RxPath >= 2 ) // 2R
+		{
+			BubbleSort(10, RSSI[1]);
+		}
+
+		if ( pAd->Antenna.field.RxPath >= 3 ) // 3R
+		{
+			BubbleSort(10, RSSI[2]);
+		}	
+	}
+
+	pAd->ate.Channel = Org_Channel;
+	ATEAsicSwitchChannel(pAd);
+	
+	// restore original value
+    ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R66, Org_BBP66value);
+    ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R69, Org_BBP69value);
+    ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R70, Org_BBP70value);
+
+	return;
+}
+
+
+BOOLEAN SyncTxRxConfig(PRTMP_ADAPTER pAd, USHORT offset, UCHAR value)
+{ 
+	UCHAR tmp = 0, bbp_data = 0;
+
+	if (ATE_ON(pAd))
+	{
+		ATE_BBP_IO_READ8_BY_REG_ID(pAd, offset, &bbp_data);
+	}
+	else
+	{
+		RTMP_BBP_IO_READ8_BY_REG_ID(pAd, offset, &bbp_data);
+	}
+
+	/* confirm again */
+	ASSERT(bbp_data == value);
+
+	switch (offset)
+	{
+		case BBP_R1:
+			/* Need to synchronize tx configuration with legacy ATE. */
+			tmp = (bbp_data & ((1 << 4) | (1 << 3))/* 0x18 */) >> 3;
+		    switch (tmp)
+		    {
+				/* The BBP R1 bit[4:3] = 2 :: Both DACs will be used by QA. */
+		        case 2:
+					/* All */
+					pAd->ate.TxAntennaSel = 0;
+		            break;
+				/* The BBP R1 bit[4:3] = 0 :: DAC 0 will be used by QA. */
+		        case 0:
+					/* Antenna one */
+					pAd->ate.TxAntennaSel = 1;
+		            break;
+				/* The BBP R1 bit[4:3] = 1 :: DAC 1 will be used by QA. */
+		        case 1:
+					/* Antenna two */
+					pAd->ate.TxAntennaSel = 2;
+		            break;
+		        default:
+		            DBGPRINT(RT_DEBUG_TRACE, ("%s -- Sth. wrong!  : return FALSE; \n", __FUNCTION__));    
+		            return FALSE;
+		    }
+			break;/* case BBP_R1 */
+
+		case BBP_R3:
+			/* Need to synchronize rx configuration with legacy ATE. */
+			tmp = (bbp_data & ((1 << 1) | (1 << 0))/* 0x03 */);
+		    switch(tmp)
+		    {
+				/* The BBP R3 bit[1:0] = 3 :: All ADCs will be used by QA. */
+		        case 3:
+					/* All */
+					pAd->ate.RxAntennaSel = 0;
+		            break;
+				/*
+					The BBP R3 bit[1:0] = 0 :: ADC 0 will be used by QA,
+					unless the BBP R3 bit[4:3] = 2
+				*/
+		        case 0:
+					/* Antenna one */
+					pAd->ate.RxAntennaSel = 1;
+					tmp = ((bbp_data & ((1 << 4) | (1 << 3))/* 0x03 */) >> 3);
+					if (tmp == 2)// 3R
+					{
+						/* Default : All ADCs will be used by QA */
+						pAd->ate.RxAntennaSel = 0;
+					}
+		            break;
+				/* The BBP R3 bit[1:0] = 1 :: ADC 1 will be used by QA. */
+		        case 1:
+					/* Antenna two */
+					pAd->ate.RxAntennaSel = 2;
+		            break;
+				/* The BBP R3 bit[1:0] = 2 :: ADC 2 will be used by QA. */
+		        case 2:
+					/* Antenna three */
+					pAd->ate.RxAntennaSel = 3;
+		            break;
+		        default:
+		            DBGPRINT(RT_DEBUG_ERROR, ("%s -- Impossible!  : return FALSE; \n", __FUNCTION__));    
+		            return FALSE;
+		    }
+			break;/* case BBP_R3 */
+
+        default:
+            DBGPRINT(RT_DEBUG_ERROR, ("%s -- Sth. wrong!  : return FALSE; \n", __FUNCTION__));    
+            return FALSE;
+		
+	}
+	return TRUE;
+} 
+
+
+static VOID memcpy_exl(PRTMP_ADAPTER pAd, UCHAR *dst, UCHAR *src, ULONG len)
+{
+	ULONG i, Value = 0;
+	ULONG *pDst, *pSrc;
+	UCHAR *p8;
+	
+	p8 = src;
+	pDst = (ULONG *) dst;
+	pSrc = (ULONG *) src;
+	
+	for (i = 0 ; i < (len/4); i++)
+	{
+		/* For alignment issue, we need a variable "Value". */
+		memmove(&Value, pSrc, 4);
+		Value = htonl(Value); 
+		memmove(pDst, &Value, 4);		
+		pDst++;
+		pSrc++;
+	}
+	if ((len % 4) != 0)
+	{
+		/* wish that it will never reach here */
+		memmove(&Value, pSrc, (len % 4));
+		Value = htonl(Value); 
+		memmove(pDst, &Value, (len % 4));
+	}
+}
+
+
+static VOID memcpy_exs(PRTMP_ADAPTER pAd, UCHAR *dst, UCHAR *src, ULONG len)
+{
+	ULONG i;
+	USHORT *pDst, *pSrc;
+	
+	pDst = (USHORT *) dst;
+	pSrc = (USHORT *) src;
+
+	for (i =0; i < (len/2); i++)
+	{
+		*pDst = ntohs(*pSrc);
+		pDst++;
+		pSrc++;
+	}
+	
+	if ((len % 2) != 0)
+	{
+		memcpy(pDst, pSrc, (len % 2));
+		*pDst = ntohs(*pDst);
+	}
+}
+
+
+static VOID RTMP_IO_READ_BULK(PRTMP_ADAPTER pAd, UCHAR *dst, UCHAR *src, UINT32 len)
+{
+	UINT32 i, Value;
+	UINT32 *pDst, *pSrc;
+	
+	pDst = (UINT32 *) dst;
+	pSrc = (UINT32 *) src;
+
+	for (i = 0 ; i < (len/4); i++)
+	{
+		RTMP_IO_READ32(pAd, (ULONG)pSrc, &Value);
+		Value = htonl(Value);
+		memmove(pDst, &Value, 4);
+		pDst++;
+		pSrc++;
+	}
+	return;	
+}
+
+
+INT Set_TxStop_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	ATEDBGPRINT(RT_DEBUG_TRACE,("Set_TxStop_Proc\n"));
+
+	if (Set_ATE_Proc(pAd, "TXSTOP"))
+	{
+		return TRUE;
+	}
+	else
+	{
+		return FALSE;
+	}
+}
+
+
+INT Set_RxStop_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	ATEDBGPRINT(RT_DEBUG_TRACE,("Set_RxStop_Proc\n"));
+
+	if (Set_ATE_Proc(pAd, "RXSTOP"))
+	{
+		return TRUE;
+	}
+	else
+	{
+		return FALSE;
+	}
+}
+
+
+#ifdef DBG
+INT Set_EERead_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	USHORT buffer[EEPROM_SIZE/2];
+	USHORT *p;
+	INT i;
+	
+	rt_ee_read_all(pAd, (USHORT *)buffer);
+	p = buffer;
+
+	for (i = 0; i < (EEPROM_SIZE/2); i++)
+	{
+		ate_print(KERN_EMERG "%4.4x ", *p);
+		if (((i+1) % 16) == 0)
+			ate_print(KERN_EMERG "\n");
+		p++;
+	}
+
+	return TRUE;
+}
+
+
+INT Set_EEWrite_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	USHORT offset = 0, value;
+	PSTRING p2 = arg;
+	
+	while ((*p2 != ':') && (*p2 != '\0'))
+	{
+		p2++;
+	}
+	
+	if (*p2 == ':')
+	{
+		A2Hex(offset, arg);
+		A2Hex(value, p2 + 1);
+	}
+	else
+	{
+		A2Hex(value, arg);
+	}
+	
+	if (offset >= EEPROM_SIZE)
+	{
+		ate_print(KERN_EMERG "Offset can not exceed EEPROM_SIZE( == 0x%04x)\n", EEPROM_SIZE);	
+		return FALSE;
+	}
+	
+	RT28xx_EEPROM_WRITE16(pAd, offset, value);
+
+	return TRUE;
+}
+
+
+INT Set_BBPRead_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	UCHAR value = 0, offset;
+
+	A2Hex(offset, arg);	
+			
+	if (ATE_ON(pAd))
+	{
+		ATE_BBP_IO_READ8_BY_REG_ID(pAd, offset,  &value);
+	}
+	else
+	{
+		RTMP_BBP_IO_READ8_BY_REG_ID(pAd, offset,  &value);
+	}
+
+	ate_print(KERN_EMERG "%x\n", value);
+		
+	return TRUE;
+}
+
+
+INT Set_BBPWrite_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	USHORT offset = 0;
+	PSTRING p2 = arg;
+	UCHAR value;
+	
+	while ((*p2 != ':') && (*p2 != '\0'))
+	{
+		p2++;
+	}
+	
+	if (*p2 == ':')
+	{
+		A2Hex(offset, arg);	
+		A2Hex(value, p2 + 1);	
+	}
+	else
+	{
+		A2Hex(value, arg);	
+	}
+
+	if (ATE_ON(pAd))
+	{
+		ATE_BBP_IO_WRITE8_BY_REG_ID(pAd, offset,  value);
+	}
+	else
+	{
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, offset,  value);
+	}
+
+	return TRUE;
+}
+
+
+INT Set_RFWrite_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	PSTRING p2, p3, p4;
+	UINT32 R1, R2, R3, R4;
+	
+	p2 = arg;
+
+	while ((*p2 != ':') && (*p2 != '\0'))
+	{
+		p2++;
+	}
+	
+	if (*p2 != ':')
+		return FALSE;
+	
+	p3 = p2 + 1;
+
+	while((*p3 != ':') && (*p3 != '\0'))
+	{
+		p3++;
+	}
+
+	if (*p3 != ':')
+		return FALSE;
+	
+	p4 = p3 + 1;
+
+	while ((*p4 != ':') && (*p4 != '\0'))
+	{
+		p4++;
+	}
+
+	if (*p4 != ':')
+		return FALSE;
+
+		
+	A2Hex(R1, arg);	
+	A2Hex(R2, p2 + 1);	
+	A2Hex(R3, p3 + 1);	
+	A2Hex(R4, p4 + 1);	
+	
+	RTMP_RF_IO_WRITE32(pAd, R1);
+	RTMP_RF_IO_WRITE32(pAd, R2);
+	RTMP_RF_IO_WRITE32(pAd, R3);
+	RTMP_RF_IO_WRITE32(pAd, R4);
+	
+	return TRUE;
+}
+#endif // DBG //
+#endif // RALINK_28xx_QA //
+
+
+#endif	// RALINK_ATE //
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt_linux.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt_linux.c
new file mode 100644
index 000000000..fd283085a
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt_linux.c
@@ -0,0 +1,1941 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+ */
+
+#include "rt_config.h"
+
+ULONG	RTDebugLevel = RT_DEBUG_ERROR;
+
+
+UCHAR   RALINK_OUI[]  = {0x00, 0x0c, 0x43};
+
+#ifdef SYSTEM_LOG_SUPPORT
+// for wireless system event message
+char const *pWirelessSysEventText[IW_SYS_EVENT_TYPE_NUM] = {    
+	// system status event     
+    "had associated successfully",							/* IW_ASSOC_EVENT_FLAG */
+    "had disassociated",									/* IW_DISASSOC_EVENT_FLAG */
+    "had deauthenticated",									/* IW_DEAUTH_EVENT_FLAG */
+    "had been aged-out and disassociated",					/* IW_AGEOUT_EVENT_FLAG */
+    "occurred CounterMeasures attack",						/* IW_COUNTER_MEASURES_EVENT_FLAG */	
+    "occurred replay counter different in Key Handshaking",	/* IW_REPLAY_COUNTER_DIFF_EVENT_FLAG */
+    "occurred RSNIE different in Key Handshaking",			/* IW_RSNIE_DIFF_EVENT_FLAG */
+    "occurred MIC different in Key Handshaking",			/* IW_MIC_DIFF_EVENT_FLAG */
+    "occurred ICV error in RX",								/* IW_ICV_ERROR_EVENT_FLAG */
+    "occurred MIC error in RX",								/* IW_MIC_ERROR_EVENT_FLAG */
+	"Group Key Handshaking timeout",						/* IW_GROUP_HS_TIMEOUT_EVENT_FLAG */ 
+	"Pairwise Key Handshaking timeout",						/* IW_PAIRWISE_HS_TIMEOUT_EVENT_FLAG */ 
+	"RSN IE sanity check failure",							/* IW_RSNIE_SANITY_FAIL_EVENT_FLAG */ 
+	"set key done in WPA/WPAPSK",							/* IW_SET_KEY_DONE_WPA1_EVENT_FLAG */ 
+	"set key done in WPA2/WPA2PSK",                         /* IW_SET_KEY_DONE_WPA2_EVENT_FLAG */ 
+	"connects with our wireless client",                    /* IW_STA_LINKUP_EVENT_FLAG */ 
+	"disconnects with our wireless client",                 /* IW_STA_LINKDOWN_EVENT_FLAG */
+	"scan completed",										/* IW_SCAN_COMPLETED_EVENT_FLAG */
+	"scan terminate!! Busy!! Enqueue fail!!",				/* IW_SCAN_ENQUEUE_FAIL_EVENT_FLAG */
+	"channel switch to ",									/* IW_CHANNEL_CHANGE_EVENT_FLAG */
+	"wireless mode is not support",							/* IW_STA_MODE_EVENT_FLAG */
+	"blacklisted in MAC filter list",						/* IW_MAC_FILTER_LIST_EVENT_FLAG */
+	"Authentication rejected because of challenge failure",	/* IW_AUTH_REJECT_CHALLENGE_FAILURE */
+	"Scanning",												/* IW_SCANNING_EVENT_FLAG */
+	"Start a new IBSS",										/* IW_START_IBSS_FLAG */
+	"Join the IBSS",										/* IW_JOIN_IBSS_FLAG */
+	};
+
+#ifdef IDS_SUPPORT
+// for wireless IDS_spoof_attack event message
+char const *pWirelessSpoofEventText[IW_SPOOF_EVENT_TYPE_NUM] = {   	
+    "detected conflict SSID",								/* IW_CONFLICT_SSID_EVENT_FLAG */
+    "detected spoofed association response",				/* IW_SPOOF_ASSOC_RESP_EVENT_FLAG */
+    "detected spoofed reassociation responses",				/* IW_SPOOF_REASSOC_RESP_EVENT_FLAG */
+    "detected spoofed probe response",						/* IW_SPOOF_PROBE_RESP_EVENT_FLAG */
+    "detected spoofed beacon",								/* IW_SPOOF_BEACON_EVENT_FLAG */
+    "detected spoofed disassociation",						/* IW_SPOOF_DISASSOC_EVENT_FLAG */
+    "detected spoofed authentication",						/* IW_SPOOF_AUTH_EVENT_FLAG */
+    "detected spoofed deauthentication",					/* IW_SPOOF_DEAUTH_EVENT_FLAG */
+    "detected spoofed unknown management frame",			/* IW_SPOOF_UNKNOWN_MGMT_EVENT_FLAG */
+	"detected replay attack"								/* IW_REPLAY_ATTACK_EVENT_FLAG */	
+	};
+
+// for wireless IDS_flooding_attack event message
+char const *pWirelessFloodEventText[IW_FLOOD_EVENT_TYPE_NUM] = {   	
+	"detected authentication flooding",						/* IW_FLOOD_AUTH_EVENT_FLAG */
+    "detected association request flooding",				/* IW_FLOOD_ASSOC_REQ_EVENT_FLAG */
+    "detected reassociation request flooding",				/* IW_FLOOD_REASSOC_REQ_EVENT_FLAG */
+    "detected probe request flooding",						/* IW_FLOOD_PROBE_REQ_EVENT_FLAG */
+    "detected disassociation flooding",						/* IW_FLOOD_DISASSOC_EVENT_FLAG */
+    "detected deauthentication flooding",					/* IW_FLOOD_DEAUTH_EVENT_FLAG */
+    "detected 802.1x eap-request flooding"					/* IW_FLOOD_EAP_REQ_EVENT_FLAG */	
+	};
+#endif // IDS_SUPPORT //
+
+#endif // SYSTEM_LOG_SUPPORT //
+
+/* timeout -- ms */
+VOID RTMP_SetPeriodicTimer(
+	IN	NDIS_MINIPORT_TIMER *pTimer, 
+	IN	unsigned long timeout)
+{
+	timeout = ((timeout*OS_HZ) / 1000);
+	pTimer->expires = jiffies + timeout;
+	add_timer(pTimer);
+}
+
+/* convert NdisMInitializeTimer --> RTMP_OS_Init_Timer */
+VOID RTMP_OS_Init_Timer(
+	IN	PRTMP_ADAPTER pAd,
+	IN	NDIS_MINIPORT_TIMER *pTimer, 
+	IN	TIMER_FUNCTION function,
+	IN	PVOID data)
+{
+	if (!timer_pending(pTimer))
+	{
+		init_timer(pTimer);
+		pTimer->data = (unsigned long)data;
+		pTimer->function = function;		
+	}
+}
+
+
+VOID RTMP_OS_Add_Timer(
+	IN	NDIS_MINIPORT_TIMER		*pTimer,
+	IN	unsigned long timeout)
+{
+	if (timer_pending(pTimer))
+		return;
+
+	timeout = ((timeout*OS_HZ) / 1000);
+	pTimer->expires = jiffies + timeout;
+	add_timer(pTimer);
+}
+
+VOID RTMP_OS_Mod_Timer(
+	IN	NDIS_MINIPORT_TIMER		*pTimer,
+	IN	unsigned long timeout)
+{
+	timeout = ((timeout*OS_HZ) / 1000);
+	mod_timer(pTimer, jiffies + timeout);
+}
+
+VOID RTMP_OS_Del_Timer(
+	IN	NDIS_MINIPORT_TIMER		*pTimer,
+	OUT	BOOLEAN					*pCancelled)
+{
+	if (timer_pending(pTimer))
+	{	
+		*pCancelled = del_timer_sync(pTimer);	
+	}
+	else
+	{
+		*pCancelled = TRUE;
+	}
+	
+}
+
+
+// Unify all delay routine by using udelay
+VOID RTMPusecDelay(
+	IN	ULONG	usec)
+{
+	ULONG	i;
+
+	for (i = 0; i < (usec / 50); i++)
+		udelay(50);
+
+	if (usec % 50)
+		udelay(usec % 50);
+}
+
+void RTMP_GetCurrentSystemTime(LARGE_INTEGER *time)
+{
+	time->u.LowPart = jiffies;
+}
+
+// pAd MUST allow to be NULL
+NDIS_STATUS os_alloc_mem(
+	IN	RTMP_ADAPTER *pAd,
+	OUT	UCHAR **mem,
+	IN	ULONG  size)
+{	
+	*mem = (PUCHAR) kmalloc(size, GFP_ATOMIC);
+	if (*mem)
+		return (NDIS_STATUS_SUCCESS);
+	else
+		return (NDIS_STATUS_FAILURE);
+}
+
+// pAd MUST allow to be NULL
+NDIS_STATUS os_free_mem(
+	IN	PRTMP_ADAPTER pAd,
+	IN	PVOID mem)
+{
+	
+	ASSERT(mem);
+	kfree(mem);
+	return (NDIS_STATUS_SUCCESS);
+}
+
+
+
+
+PNDIS_PACKET RtmpOSNetPktAlloc(
+	IN RTMP_ADAPTER *pAd, 
+	IN int size)
+{
+	struct sk_buff *skb;
+	/* Add 2 more bytes for ip header alignment*/
+	skb = dev_alloc_skb(size+2);
+	if (skb != NULL)
+	{
+		MEM_DBG_PKT_ALLOC_INC(pAd);
+	}
+	
+	return ((PNDIS_PACKET)skb);
+}
+
+
+PNDIS_PACKET RTMP_AllocateFragPacketBuffer(
+	IN	PRTMP_ADAPTER pAd,
+	IN	ULONG	Length)
+{
+	struct sk_buff *pkt;
+
+	pkt = dev_alloc_skb(Length);
+
+	if (pkt == NULL)
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("can't allocate frag rx %ld size packet\n",Length));
+	}
+
+	if (pkt)
+	{
+		MEM_DBG_PKT_ALLOC_INC(pAd);
+		RTMP_SET_PACKET_SOURCE(OSPKT_TO_RTPKT(pkt), PKTSRC_NDIS);
+	}
+
+	return (PNDIS_PACKET) pkt;
+}
+
+
+PNDIS_PACKET RTMP_AllocateTxPacketBuffer(
+	IN	PRTMP_ADAPTER pAd,
+	IN	ULONG	Length,
+	IN	BOOLEAN	Cached,
+	OUT	PVOID	*VirtualAddress)
+{
+	struct sk_buff *pkt;
+
+	pkt = dev_alloc_skb(Length);
+
+	if (pkt == NULL)
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("can't allocate tx %ld size packet\n",Length));
+	}
+
+	if (pkt)
+	{
+		MEM_DBG_PKT_ALLOC_INC(pAd);
+		RTMP_SET_PACKET_SOURCE(OSPKT_TO_RTPKT(pkt), PKTSRC_NDIS);
+		*VirtualAddress = (PVOID) pkt->data;	
+	}
+	else
+	{
+		*VirtualAddress = (PVOID) NULL;
+	}	
+
+	return (PNDIS_PACKET) pkt;	
+}
+
+
+VOID build_tx_packet(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PNDIS_PACKET	pPacket,
+	IN	PUCHAR	pFrame,
+	IN	ULONG	FrameLen)
+{
+
+	struct sk_buff	*pTxPkt;
+
+	ASSERT(pPacket);
+	pTxPkt = RTPKT_TO_OSPKT(pPacket);
+
+	NdisMoveMemory(skb_put(pTxPkt, FrameLen), pFrame, FrameLen);	
+}
+
+VOID	RTMPFreeAdapter(
+	IN	PRTMP_ADAPTER	pAd)
+{
+	POS_COOKIE os_cookie;
+	int index;	
+
+	os_cookie=(POS_COOKIE)pAd->OS_Cookie;
+
+	if (pAd->BeaconBuf)
+		kfree(pAd->BeaconBuf);
+
+
+	NdisFreeSpinLock(&pAd->MgmtRingLock);
+	
+#ifdef RTMP_MAC_PCI 
+	NdisFreeSpinLock(&pAd->RxRingLock);
+#endif // RTMP_MAC_PCI //
+
+	for (index =0 ; index < NUM_OF_TX_RING; index++)
+	{
+		NdisFreeSpinLock(&pAd->TxSwQueueLock[index]);
+		NdisFreeSpinLock(&pAd->DeQueueLock[index]);
+		pAd->DeQueueRunning[index] = FALSE;
+	}
+	
+	NdisFreeSpinLock(&pAd->irq_lock);
+
+
+	vfree(pAd); // pci_free_consistent(os_cookie->pci_dev,sizeof(RTMP_ADAPTER),pAd,os_cookie->pAd_pa);
+	if (os_cookie)
+		kfree(os_cookie);
+}
+
+BOOLEAN OS_Need_Clone_Packet(void)
+{
+	return (FALSE);	
+}
+
+
+
+/*
+	========================================================================
+
+	Routine Description:
+		clone an input NDIS PACKET to another one. The new internally created NDIS PACKET
+		must have only one NDIS BUFFER
+		return - byte copied. 0 means can't create NDIS PACKET
+		NOTE: internally created NDIS_PACKET should be destroyed by RTMPFreeNdisPacket
+		
+	Arguments:
+		pAd 	Pointer to our adapter
+		pInsAMSDUHdr	EWC A-MSDU format has extra 14-bytes header. if TRUE, insert this 14-byte hdr in front of MSDU.
+		*pSrcTotalLen			return total packet length. This lenght is calculated with 802.3 format packet.
+		
+	Return Value:
+		NDIS_STATUS_SUCCESS 	
+		NDIS_STATUS_FAILURE 	
+		
+	Note:
+	
+	========================================================================
+*/
+NDIS_STATUS RTMPCloneNdisPacket(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	BOOLEAN			pInsAMSDUHdr,
+	IN	PNDIS_PACKET	pInPacket,
+	OUT PNDIS_PACKET   *ppOutPacket)
+{
+
+	struct sk_buff *pkt;
+
+	ASSERT(pInPacket);
+	ASSERT(ppOutPacket);
+
+	// 1. Allocate a packet 
+	pkt = dev_alloc_skb(2048);
+	
+	if (pkt == NULL)
+	{
+		return NDIS_STATUS_FAILURE;
+	}
+
+	MEM_DBG_PKT_ALLOC_INC(pAd);
+ 	skb_put(pkt, GET_OS_PKT_LEN(pInPacket));
+	NdisMoveMemory(pkt->data, GET_OS_PKT_DATAPTR(pInPacket), GET_OS_PKT_LEN(pInPacket));  
+	*ppOutPacket = OSPKT_TO_RTPKT(pkt);
+
+
+	RTMP_SET_PACKET_SOURCE(OSPKT_TO_RTPKT(pkt), PKTSRC_NDIS);
+
+	printk("###Clone###\n");
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+// the allocated NDIS PACKET must be freed via RTMPFreeNdisPacket()
+NDIS_STATUS RTMPAllocateNdisPacket(
+	IN	PRTMP_ADAPTER	pAd,
+	OUT PNDIS_PACKET   *ppPacket,
+	IN	PUCHAR			pHeader,
+	IN	UINT			HeaderLen,
+	IN	PUCHAR			pData,
+	IN	UINT			DataLen)
+{
+	PNDIS_PACKET	pPacket;
+	ASSERT(pData);
+	ASSERT(DataLen);
+
+	// 1. Allocate a packet 
+	pPacket = (PNDIS_PACKET *) dev_alloc_skb(HeaderLen + DataLen + RTMP_PKT_TAIL_PADDING);
+
+	if (pPacket == NULL)
+ 	{
+		*ppPacket = NULL;
+#ifdef DEBUG
+		printk("RTMPAllocateNdisPacket Fail\n\n");
+#endif
+		return NDIS_STATUS_FAILURE;
+	}
+	MEM_DBG_PKT_ALLOC_INC(pAd);
+
+	// 2. clone the frame content
+	if (HeaderLen > 0)
+		NdisMoveMemory(GET_OS_PKT_DATAPTR(pPacket), pHeader, HeaderLen);
+	if (DataLen > 0)
+		NdisMoveMemory(GET_OS_PKT_DATAPTR(pPacket) + HeaderLen, pData, DataLen);
+
+	// 3. update length of packet
+ 	skb_put(GET_OS_PKT_TYPE(pPacket), HeaderLen+DataLen);
+
+	RTMP_SET_PACKET_SOURCE(pPacket, PKTSRC_NDIS);
+//	printk("%s : pPacket = %p, len = %d\n", __FUNCTION__, pPacket, GET_OS_PKT_LEN(pPacket));
+	*ppPacket = pPacket;
+	return NDIS_STATUS_SUCCESS;
+}
+
+/*
+  ========================================================================
+  Description:
+	This routine frees a miniport internally allocated NDIS_PACKET and its
+	corresponding NDIS_BUFFER and allocated memory.
+  ========================================================================
+*/
+VOID RTMPFreeNdisPacket(
+	IN PRTMP_ADAPTER pAd,
+	IN PNDIS_PACKET  pPacket)
+{
+	dev_kfree_skb_any(RTPKT_TO_OSPKT(pPacket));
+	MEM_DBG_PKT_FREE_INC(pAd);
+}
+
+
+// IRQL = DISPATCH_LEVEL
+// NOTE: we do have an assumption here, that Byte0 and Byte1 always reasid at the same 
+//			 scatter gather buffer
+NDIS_STATUS Sniff2BytesFromNdisBuffer(
+	IN	PNDIS_BUFFER	pFirstBuffer,
+	IN	UCHAR			DesiredOffset,
+	OUT PUCHAR			pByte0,
+	OUT PUCHAR			pByte1)
+{
+    *pByte0 = *(PUCHAR)(pFirstBuffer + DesiredOffset);
+    *pByte1 = *(PUCHAR)(pFirstBuffer + DesiredOffset + 1);
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+void RTMP_QueryPacketInfo(
+	IN  PNDIS_PACKET pPacket,
+	OUT PACKET_INFO  *pPacketInfo,
+	OUT PUCHAR		 *pSrcBufVA,
+	OUT	UINT		 *pSrcBufLen)
+{
+	pPacketInfo->BufferCount = 1;
+	pPacketInfo->pFirstBuffer = (PNDIS_BUFFER)GET_OS_PKT_DATAPTR(pPacket);
+	pPacketInfo->PhysicalBufferCount = 1;
+	pPacketInfo->TotalPacketLength = GET_OS_PKT_LEN(pPacket);
+
+	*pSrcBufVA = GET_OS_PKT_DATAPTR(pPacket);
+	*pSrcBufLen = GET_OS_PKT_LEN(pPacket); 	
+}
+
+void RTMP_QueryNextPacketInfo(
+	IN  PNDIS_PACKET *ppPacket,
+	OUT PACKET_INFO  *pPacketInfo,
+	OUT PUCHAR		 *pSrcBufVA,
+	OUT	UINT		 *pSrcBufLen)
+{
+	PNDIS_PACKET pPacket = NULL;
+
+	if (*ppPacket)
+		pPacket = GET_OS_PKT_NEXT(*ppPacket);
+
+	if (pPacket)
+	{
+		pPacketInfo->BufferCount = 1;
+		pPacketInfo->pFirstBuffer = (PNDIS_BUFFER)GET_OS_PKT_DATAPTR(pPacket);
+		pPacketInfo->PhysicalBufferCount = 1;
+		pPacketInfo->TotalPacketLength = GET_OS_PKT_LEN(pPacket);
+
+		*pSrcBufVA = GET_OS_PKT_DATAPTR(pPacket);
+		*pSrcBufLen = GET_OS_PKT_LEN(pPacket); 	
+		*ppPacket = GET_OS_PKT_NEXT(pPacket);		
+	}
+	else
+	{
+		pPacketInfo->BufferCount = 0;
+		pPacketInfo->pFirstBuffer = NULL;
+		pPacketInfo->PhysicalBufferCount = 0;
+		pPacketInfo->TotalPacketLength = 0;
+
+		*pSrcBufVA = NULL;
+		*pSrcBufLen = 0; 	
+		*ppPacket = NULL;
+	}
+}
+
+	
+PNDIS_PACKET DuplicatePacket(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PNDIS_PACKET	pPacket,
+	IN	UCHAR			FromWhichBSSID)
+{
+	struct sk_buff	*skb;
+	PNDIS_PACKET	pRetPacket = NULL;
+	USHORT			DataSize;
+	UCHAR			*pData;
+
+	DataSize = (USHORT) GET_OS_PKT_LEN(pPacket);
+	pData = (PUCHAR) GET_OS_PKT_DATAPTR(pPacket);	
+
+
+	skb = skb_clone(RTPKT_TO_OSPKT(pPacket), MEM_ALLOC_FLAG);
+	if (skb)
+	{
+		MEM_DBG_PKT_ALLOC_INC(pAd);
+		skb->dev = get_netdev_from_bssid(pAd, FromWhichBSSID);
+		pRetPacket = OSPKT_TO_RTPKT(skb);
+	}
+
+
+	return pRetPacket;
+
+}
+
+PNDIS_PACKET duplicate_pkt(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PUCHAR			pHeader802_3,
+    IN  UINT            HdrLen,
+	IN	PUCHAR			pData,
+	IN	ULONG			DataSize,
+	IN	UCHAR			FromWhichBSSID)
+{
+	struct sk_buff	*skb;
+	PNDIS_PACKET	pPacket = NULL;
+
+	if ((skb = __dev_alloc_skb(HdrLen + DataSize + 2, MEM_ALLOC_FLAG)) != NULL)
+	{
+		MEM_DBG_PKT_ALLOC_INC(pAd);
+
+		skb_reserve(skb, 2);				
+		NdisMoveMemory(skb->tail, pHeader802_3, HdrLen);
+		skb_put(skb, HdrLen);
+		NdisMoveMemory(skb->tail, pData, DataSize);
+		skb_put(skb, DataSize);
+		skb->dev = get_netdev_from_bssid(pAd, FromWhichBSSID);
+		pPacket = OSPKT_TO_RTPKT(skb);
+	}
+
+	return pPacket;
+}
+
+
+#define TKIP_TX_MIC_SIZE		8
+PNDIS_PACKET duplicate_pkt_with_TKIP_MIC(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PNDIS_PACKET	pPacket)
+{
+	struct sk_buff	*skb, *newskb;
+	
+
+	skb = RTPKT_TO_OSPKT(pPacket);
+	if (skb_tailroom(skb) < TKIP_TX_MIC_SIZE)
+	{
+		// alloc a new skb and copy the packet
+		newskb = skb_copy_expand(skb, skb_headroom(skb), TKIP_TX_MIC_SIZE, GFP_ATOMIC);
+		MEM_DBG_PKT_ALLOC_INC(pAd);
+
+		dev_kfree_skb_any(skb);
+		MEM_DBG_PKT_FREE_INC(pAd);
+
+		if (newskb == NULL)
+		{
+			DBGPRINT(RT_DEBUG_ERROR, ("Extend Tx.MIC for packet failed!, dropping packet!\n"));
+			return NULL;
+		}
+		skb = newskb;
+	}
+
+	return OSPKT_TO_RTPKT(skb);
+
+
+}
+
+
+
+
+PNDIS_PACKET ExpandPacket(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PNDIS_PACKET	pPacket,
+	IN	UINT32			ext_head_len,
+	IN	UINT32			ext_tail_len)
+{
+	struct sk_buff	*skb, *newskb;
+	
+
+	skb = RTPKT_TO_OSPKT(pPacket);
+	//printk("original skb_headroom(%d)/skb_tailroom(%d)\n", skb_headroom(skb), skb_tailroom(skb));
+	if (skb_cloned(skb) || (skb_headroom(skb) < ext_head_len) || (skb_tailroom(skb) < ext_tail_len))
+	{
+		UINT32 head_len = (skb_headroom(skb) < ext_head_len) ? ext_head_len : skb_headroom(skb);
+		UINT32 tail_len = (skb_tailroom(skb) < ext_tail_len) ? ext_tail_len : skb_tailroom(skb);
+	
+		// alloc a new skb and copy the packet
+		newskb = skb_copy_expand(skb, head_len, tail_len, GFP_ATOMIC);
+		MEM_DBG_PKT_ALLOC_INC(pAd);
+
+		dev_kfree_skb_any(skb);
+		MEM_DBG_PKT_FREE_INC(pAd);
+
+		if (newskb == NULL)
+		{
+			DBGPRINT(RT_DEBUG_ERROR, ("Extend Tx buffer for WPI failed!, dropping packet!\n"));
+			return NULL;
+		}
+		skb = newskb;
+		//printk("new skb_headroom(%d)/skb_tailroom(%d)\n", skb_headroom(skb), skb_tailroom(skb));
+	}
+
+	return OSPKT_TO_RTPKT(skb);
+	
+}
+
+PNDIS_PACKET ClonePacket(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PNDIS_PACKET	pPacket,	
+	IN	PUCHAR			pData,
+	IN	ULONG			DataSize)
+{
+	struct sk_buff	*pRxPkt;
+	struct sk_buff	*pClonedPkt;
+
+	ASSERT(pPacket);
+	pRxPkt = RTPKT_TO_OSPKT(pPacket);
+
+	// clone the packet 
+	pClonedPkt = skb_clone(pRxPkt, MEM_ALLOC_FLAG);
+
+	if (pClonedPkt)
+	{
+    	// set the correct dataptr and data len
+		MEM_DBG_PKT_ALLOC_INC(pAd);
+    	pClonedPkt->dev = pRxPkt->dev;
+    	pClonedPkt->data = pData;
+    	pClonedPkt->len = DataSize;
+    	pClonedPkt->tail = pClonedPkt->data + pClonedPkt->len;
+		ASSERT(DataSize < 1530);
+	}
+	return pClonedPkt;
+}
+
+// 
+// change OS packet DataPtr and DataLen
+// 
+void  update_os_packet_info(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	RX_BLK			*pRxBlk,
+	IN  UCHAR			FromWhichBSSID)
+{
+	struct sk_buff	*pOSPkt;
+
+	ASSERT(pRxBlk->pRxPacket);
+	pOSPkt = RTPKT_TO_OSPKT(pRxBlk->pRxPacket);
+
+	pOSPkt->dev = get_netdev_from_bssid(pAd, FromWhichBSSID); 
+	pOSPkt->data = pRxBlk->pData;
+	pOSPkt->len = pRxBlk->DataSize;
+	pOSPkt->tail = pOSPkt->data + pOSPkt->len;
+}
+
+
+void wlan_802_11_to_802_3_packet(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	RX_BLK			*pRxBlk,
+	IN	PUCHAR			pHeader802_3,
+	IN  UCHAR			FromWhichBSSID,
+	IN	UCHAR			*TPID)
+{
+	struct sk_buff	*pOSPkt;
+
+	ASSERT(pRxBlk->pRxPacket);
+	ASSERT(pHeader802_3);
+
+	pOSPkt = RTPKT_TO_OSPKT(pRxBlk->pRxPacket);
+
+	pOSPkt->dev = get_netdev_from_bssid(pAd, FromWhichBSSID); 
+	pOSPkt->data = pRxBlk->pData;
+	pOSPkt->len = pRxBlk->DataSize;
+	pOSPkt->tail = pOSPkt->data + pOSPkt->len;
+
+	//
+	// copy 802.3 header
+	// 
+	// 
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		NdisMoveMemory(skb_push(pOSPkt, LENGTH_802_3), pHeader802_3, LENGTH_802_3);
+#endif // CONFIG_STA_SUPPORT //
+	}
+
+
+
+void announce_802_3_packet(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PNDIS_PACKET	pPacket)
+{
+
+	struct sk_buff	*pRxPkt;
+#ifdef INF_AMAZON_PPA
+        int             ret = 0;
+        unsigned int ppa_flags = 0; /* reserved for now */
+#endif // INF_AMAZON_PPA //
+
+
+	ASSERT(pPacket);
+
+	MEM_DBG_PKT_FREE_INC(pAd);
+
+	pRxPkt = RTPKT_TO_OSPKT(pPacket);
+
+#ifdef CONFIG_STA_SUPPORT
+#endif // CONFIG_STA_SUPPORT //
+
+    /* Push up the protocol stack */
+#ifdef IKANOS_VX_1X0
+	IKANOS_DataFrameRx(pAd, pRxPkt->dev, pRxPkt, pRxPkt->len);
+#else
+
+// mark for bridge fast path, 2009/06/22
+//	pRxPkt->protocol = eth_type_trans(pRxPkt, pRxPkt->dev);
+
+#ifdef INF_AMAZON_PPA
+	if (ppa_hook_directpath_send_fn && pAd->PPAEnable==TRUE ) 
+	{
+		pRxPkt->protocol = eth_type_trans(pRxPkt, pRxPkt->dev);
+
+		memset(pRxPkt->head,0,pRxPkt->data-pRxPkt->head-14);
+		DBGPRINT(RT_DEBUG_TRACE, ("ppa_hook_directpath_send_fn rx :ret:%d headroom:%d dev:%s pktlen:%d<===\n",ret,skb_headroom(pRxPkt)
+			,pRxPkt->dev->name,pRxPkt->len));
+		hex_dump("rx packet", pRxPkt->data, 32);
+		ret = ppa_hook_directpath_send_fn(pAd->g_if_id, pRxPkt, pRxPkt->len, ppa_flags);
+		pRxPkt=NULL;
+		return;
+
+	}	  	
+#endif // INF_AMAZON_PPA //
+
+//#ifdef CONFIG_5VT_ENHANCE
+//	*(int*)(pRxPkt->cb) = BRIDGE_TAG; 
+//#endif
+
+	{
+
+		pRxPkt->protocol = eth_type_trans(pRxPkt, pRxPkt->dev);
+		netif_rx(pRxPkt);
+	}
+
+#endif // IKANOS_VX_1X0 //
+}
+
+
+PRTMP_SCATTER_GATHER_LIST
+rt_get_sg_list_from_packet(PNDIS_PACKET pPacket, RTMP_SCATTER_GATHER_LIST *sg)
+{
+	sg->NumberOfElements = 1;
+	sg->Elements[0].Address =  GET_OS_PKT_DATAPTR(pPacket);	
+	sg->Elements[0].Length = GET_OS_PKT_LEN(pPacket);	
+	return (sg);
+}
+
+void hex_dump(char *str, unsigned char *pSrcBufVA, unsigned int SrcBufLen)
+{
+#ifdef DBG
+	unsigned char *pt;
+	int x;
+
+	if (RTDebugLevel < RT_DEBUG_TRACE)
+		return;
+	
+	pt = pSrcBufVA;
+	printk("%s: %p, len = %d\n",str,  pSrcBufVA, SrcBufLen);
+	for (x=0; x<SrcBufLen; x++)
+	{
+		if (x % 16 == 0) 
+			printk("0x%04x : ", x);
+		printk("%02x ", ((unsigned char)pt[x]));
+		if (x%16 == 15) printk("\n");
+	}
+	printk("\n");
+#endif // DBG //
+}
+
+#ifdef SYSTEM_LOG_SUPPORT
+/*
+	========================================================================
+	
+	Routine Description:
+		Send log message through wireless event
+
+		Support standard iw_event with IWEVCUSTOM. It is used below.
+
+		iwreq_data.data.flags is used to store event_flag that is defined by user. 
+		iwreq_data.data.length is the length of the event log.
+
+		The format of the event log is composed of the entry's MAC address and
+		the desired log message (refer to pWirelessEventText).
+
+			ex: 11:22:33:44:55:66 has associated successfully
+
+		p.s. The requirement of Wireless Extension is v15 or newer. 
+
+	========================================================================
+*/
+VOID RTMPSendWirelessEvent(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	USHORT			Event_flag,
+	IN	PUCHAR 			pAddr,
+	IN	UCHAR			BssIdx,
+	IN	CHAR			Rssi)
+{
+	PSTRING	pBuf = NULL, pBufPtr = NULL;
+	USHORT	event, type, BufLen;	
+	UCHAR	event_table_len = 0;
+
+	if (pAd->CommonCfg.bWirelessEvent == FALSE)
+		return;
+
+#if WIRELESS_EXT >= 15
+
+	type = Event_flag & 0xFF00;	
+	event = Event_flag & 0x00FF;
+
+	switch (type)
+	{
+		case IW_SYS_EVENT_FLAG_START:
+			event_table_len = IW_SYS_EVENT_TYPE_NUM;
+			break;
+#ifdef IDS_SUPPORT
+		case IW_SPOOF_EVENT_FLAG_START:
+			event_table_len = IW_SPOOF_EVENT_TYPE_NUM;
+			break;
+
+		case IW_FLOOD_EVENT_FLAG_START:
+			event_table_len = IW_FLOOD_EVENT_TYPE_NUM;
+			break;
+#endif // IDS_SUPPORT // 			
+	}
+	
+	if (event_table_len == 0)
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("%s : The type(%0x02x) is not valid.\n", __FUNCTION__, type));			       		       		
+		return;
+	}
+	
+	if (event >= event_table_len)
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("%s : The event(%0x02x) is not valid.\n", __FUNCTION__, event));			       		       		
+		return;
+	}	
+ 
+	//Allocate memory and copy the msg.
+	if((pBuf = kmalloc(IW_CUSTOM_MAX_LEN, GFP_ATOMIC)) != NULL)
+	{
+		//Prepare the payload 
+		memset(pBuf, 0, IW_CUSTOM_MAX_LEN);
+
+		pBufPtr = pBuf;		
+
+		if (pAddr)
+			pBufPtr += sprintf(pBufPtr, "(RT2860) STA(%02x:%02x:%02x:%02x:%02x:%02x) ", PRINT_MAC(pAddr));				
+		else if (BssIdx < MAX_MBSSID_NUM)
+			pBufPtr += sprintf(pBufPtr, "(RT2860) BSS(ra%d) ", BssIdx);
+		else
+			pBufPtr += sprintf(pBufPtr, "(RT2860) ");
+
+		if (type == IW_SYS_EVENT_FLAG_START)
+        {
+			pBufPtr += sprintf(pBufPtr, "%s", pWirelessSysEventText[event]);
+		    
+            if (Event_flag == IW_CHANNEL_CHANGE_EVENT_FLAG)
+		  	{
+			 	pBufPtr += sprintf(pBufPtr, "%3d", Rssi);
+			}			
+		}
+#ifdef IDS_SUPPORT		
+		else if (type == IW_SPOOF_EVENT_FLAG_START)
+			pBufPtr += sprintf(pBufPtr, "%s (RSSI=%d)", pWirelessSpoofEventText[event], Rssi);
+		else if (type == IW_FLOOD_EVENT_FLAG_START)
+			pBufPtr += sprintf(pBufPtr, "%s", pWirelessFloodEventText[event]);
+#endif // IDS_SUPPORT //		
+		else
+			pBufPtr += sprintf(pBufPtr, "%s", "unknown event");
+		
+		pBufPtr[pBufPtr - pBuf] = '\0';
+		BufLen = pBufPtr - pBuf;
+		
+		RtmpOSWrielessEventSend(pAd, IWEVCUSTOM, Event_flag, NULL, (PUCHAR)pBuf, BufLen);
+		//DBGPRINT(RT_DEBUG_TRACE, ("%s : %s\n", __FUNCTION__, pBuf));	
+	
+		kfree(pBuf);
+	}
+	else
+		DBGPRINT(RT_DEBUG_ERROR, ("%s : Can't allocate memory for wireless event.\n", __FUNCTION__));			       		       				
+#else
+	DBGPRINT(RT_DEBUG_ERROR, ("%s : The Wireless Extension MUST be v15 or newer.\n", __FUNCTION__));	
+#endif  /* WIRELESS_EXT >= 15 */  
+}
+#endif // SYSTEM_LOG_SUPPORT //
+
+
+
+#ifdef CONFIG_STA_SUPPORT
+void send_monitor_packets(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	RX_BLK			*pRxBlk,
+	IN  CHAR			(*RTMPMaxRssi)(
+			IN PRTMP_ADAPTER	pAd,
+			IN CHAR				Rssi0,
+			IN CHAR				Rssi1,
+			IN CHAR				Rssi2),
+	IN  CHAR			(*ConvertToRssi)(
+			IN PRTMP_ADAPTER	pAd,
+			IN CHAR				Rssi,
+			IN UCHAR			RssiNumber))
+{   	
+    struct sk_buff	*pOSPkt;
+    wlan_ng_prism2_header *ph;
+    int rate_index = 0;
+    USHORT header_len = 0;
+    UCHAR temp_header[40] = {0};
+
+    u_int32_t ralinkrate[256] = {2,4,11,22, 12,18,24,36,48,72,96,  108,   109, 110, 111, 112, 13, 26, 39, 52,78,104, 117, 130, 26, 52, 78,104, 156, 208, 234, 260, 27, 54,81,108,162, 216, 243, 270, // Last 38
+	54, 108, 162, 216, 324, 432, 486, 540,  14, 29, 43, 57, 87, 115, 130, 144, 29, 59,87,115, 173, 230,260, 288, 30, 60,90,120,180,240,270,300,60,120,180,240,360,480,540,600, 0,1,2,3,4,5,6,7,8,9,10,
+	11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80};
+
+    
+	MEM_DBG_PKT_FREE_INC(pAd);
+
+    ASSERT(pRxBlk->pRxPacket);
+    if (pRxBlk->DataSize < 10)
+    {
+        DBGPRINT(RT_DEBUG_ERROR, ("%s : Size is too small! (%d)\n", __FUNCTION__, pRxBlk->DataSize));
+		goto err_free_sk_buff;
+    }
+
+    if (pRxBlk->DataSize + sizeof(wlan_ng_prism2_header) > RX_BUFFER_AGGRESIZE)
+    {
+        DBGPRINT(RT_DEBUG_ERROR, ("%s : Size is too large! (%d)\n", __FUNCTION__, pRxBlk->DataSize + sizeof(wlan_ng_prism2_header)));
+		goto err_free_sk_buff;
+    }
+        
+    pOSPkt = RTPKT_TO_OSPKT(pRxBlk->pRxPacket);
+	pOSPkt->dev = get_netdev_from_bssid(pAd, BSS0); 
+    if (pRxBlk->pHeader->FC.Type == BTYPE_DATA)
+    {
+        pRxBlk->DataSize -= LENGTH_802_11;
+        if ((pRxBlk->pHeader->FC.ToDs == 1) &&
+            (pRxBlk->pHeader->FC.FrDs == 1))
+            header_len = LENGTH_802_11_WITH_ADDR4;
+        else
+            header_len = LENGTH_802_11;
+
+        // QOS
+    	if (pRxBlk->pHeader->FC.SubType & 0x08)
+    	{
+    	    header_len += 2;
+    		// Data skip QOS contorl field
+    		pRxBlk->DataSize -=2;
+    	}
+
+    	// Order bit: A-Ralink or HTC+
+    	if (pRxBlk->pHeader->FC.Order)
+    	{
+    	    header_len += 4;
+			// Data skip HTC contorl field
+			pRxBlk->DataSize -= 4;
+    	}
+
+        // Copy Header
+        if (header_len <= 40)
+            NdisMoveMemory(temp_header, pRxBlk->pData, header_len);
+
+        // skip HW padding 
+    	if (pRxBlk->RxD.L2PAD)
+    	    pRxBlk->pData += (header_len + 2);
+        else
+            pRxBlk->pData += header_len;
+    } //end if
+
+                
+	if (pRxBlk->DataSize < pOSPkt->len) {
+        skb_trim(pOSPkt,pRxBlk->DataSize);
+    } else {
+        skb_put(pOSPkt,(pRxBlk->DataSize - pOSPkt->len));
+    } //end if
+
+    if ((pRxBlk->pData - pOSPkt->data) > 0) {
+	    skb_put(pOSPkt,(pRxBlk->pData - pOSPkt->data));
+	    skb_pull(pOSPkt,(pRxBlk->pData - pOSPkt->data));
+    } //end if
+
+    if (skb_headroom(pOSPkt) < (sizeof(wlan_ng_prism2_header)+ header_len)) {
+        if (pskb_expand_head(pOSPkt, (sizeof(wlan_ng_prism2_header) + header_len), 0, GFP_ATOMIC)) {
+	        DBGPRINT(RT_DEBUG_ERROR, ("%s : Reallocate header size of sk_buff fail!\n", __FUNCTION__));
+			goto err_free_sk_buff;
+	    } //end if
+    } //end if
+
+    if (header_len > 0)
+        NdisMoveMemory(skb_push(pOSPkt, header_len), temp_header, header_len);
+
+    ph = (wlan_ng_prism2_header *) skb_push(pOSPkt, sizeof(wlan_ng_prism2_header));
+	NdisZeroMemory(ph, sizeof(wlan_ng_prism2_header));
+    
+    ph->msgcode		    = DIDmsg_lnxind_wlansniffrm;
+	ph->msglen		    = sizeof(wlan_ng_prism2_header);
+	strcpy((PSTRING) ph->devname, (PSTRING) pAd->net_dev->name);
+
+    ph->hosttime.did = DIDmsg_lnxind_wlansniffrm_hosttime;
+	ph->hosttime.status = 0;
+	ph->hosttime.len = 4;
+	ph->hosttime.data = jiffies;
+
+	ph->mactime.did = DIDmsg_lnxind_wlansniffrm_mactime;
+	ph->mactime.status = 0;
+	ph->mactime.len = 0;
+	ph->mactime.data = 0;
+
+    ph->istx.did = DIDmsg_lnxind_wlansniffrm_istx;
+	ph->istx.status = 0;
+	ph->istx.len = 0;
+	ph->istx.data = 0;
+ 
+    ph->channel.did = DIDmsg_lnxind_wlansniffrm_channel;
+	ph->channel.status = 0;
+	ph->channel.len = 4;
+
+    ph->channel.data = (u_int32_t)pAd->CommonCfg.Channel;
+
+    ph->rssi.did = DIDmsg_lnxind_wlansniffrm_rssi;
+	ph->rssi.status = 0;
+	ph->rssi.len = 4;
+    ph->rssi.data = (u_int32_t)RTMPMaxRssi(pAd, ConvertToRssi(pAd, pRxBlk->pRxWI->RSSI0, RSSI_0), ConvertToRssi(pAd, pRxBlk->pRxWI->RSSI1, RSSI_1), ConvertToRssi(pAd, pRxBlk->pRxWI->RSSI2, RSSI_2));;
+            
+	ph->signal.did = DIDmsg_lnxind_wlansniffrm_signal;
+	ph->signal.status = 0;
+	ph->signal.len = 4;
+	ph->signal.data = 0; //rssi + noise;
+            
+	ph->noise.did = DIDmsg_lnxind_wlansniffrm_noise;
+	ph->noise.status = 0;
+	ph->noise.len = 4;
+	ph->noise.data = 0;
+
+#ifdef DOT11_N_SUPPORT
+    if (pRxBlk->pRxWI->PHYMODE >= MODE_HTMIX)
+    {
+    	rate_index = 16 + ((UCHAR)pRxBlk->pRxWI->BW *16) + ((UCHAR)pRxBlk->pRxWI->ShortGI *32) + ((UCHAR)pRxBlk->pRxWI->MCS);
+    }
+    else
+#endif // DOT11_N_SUPPORT //
+	if (pRxBlk->pRxWI->PHYMODE == MODE_OFDM)
+    	rate_index = (UCHAR)(pRxBlk->pRxWI->MCS) + 4;
+    else 
+    	rate_index = (UCHAR)(pRxBlk->pRxWI->MCS);
+    if (rate_index < 0)
+        rate_index = 0;
+    if (rate_index > 255)
+        rate_index = 255;
+    
+	ph->rate.did = DIDmsg_lnxind_wlansniffrm_rate;
+	ph->rate.status = 0;
+	ph->rate.len = 4;
+    ph->rate.data = ralinkrate[rate_index];
+
+	ph->frmlen.did = DIDmsg_lnxind_wlansniffrm_frmlen;
+    ph->frmlen.status = 0;
+	ph->frmlen.len = 4;
+	ph->frmlen.data	= (u_int32_t)pRxBlk->DataSize;
+    
+    
+    pOSPkt->pkt_type = PACKET_OTHERHOST;
+    pOSPkt->protocol = eth_type_trans(pOSPkt, pOSPkt->dev);
+    pOSPkt->ip_summed = CHECKSUM_NONE;
+    netif_rx(pOSPkt);
+    
+    return;
+
+err_free_sk_buff:
+	RELEASE_NDIS_PACKET(pAd, pRxBlk->pRxPacket, NDIS_STATUS_FAILURE);	
+	return;
+	
+}
+#endif // CONFIG_STA_SUPPORT //
+
+
+
+
+/*******************************************************************************
+
+	File open/close related functions.
+	
+ *******************************************************************************/
+RTMP_OS_FD RtmpOSFileOpen(char *pPath,  int flag, int mode)
+{
+	struct file	*filePtr;
+		
+	filePtr = filp_open(pPath, flag, 0);
+	if (IS_ERR(filePtr))
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("%s(): Error %ld opening %s\n", __FUNCTION__, -PTR_ERR(filePtr), pPath));
+	}
+
+	return (RTMP_OS_FD)filePtr;
+}
+
+int RtmpOSFileClose(RTMP_OS_FD osfd)
+{
+	filp_close(osfd, NULL);
+	return 0;
+}
+
+
+void RtmpOSFileSeek(RTMP_OS_FD osfd, int offset)
+{
+	osfd->f_pos = offset;
+}
+
+
+int RtmpOSFileRead(RTMP_OS_FD osfd, char *pDataPtr, int readLen)
+{
+	// The object must have a read method
+	if (osfd->f_op && osfd->f_op->read)
+	{
+		return osfd->f_op->read(osfd,  pDataPtr, readLen, &osfd->f_pos);
+	}
+	else
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("no file read method\n"));
+		return -1;
+	}
+}
+
+
+int RtmpOSFileWrite(RTMP_OS_FD osfd, char *pDataPtr, int writeLen)
+{
+	return osfd->f_op->write(osfd, pDataPtr, (size_t)writeLen, &osfd->f_pos);
+}
+
+
+void RtmpOSFSInfoChange(RTMP_OS_FS_INFO *pOSFSInfo, BOOLEAN bSet)
+{
+	if (bSet)
+	{
+		// Save uid and gid used for filesystem access.
+		// Set user and group to 0 (root)	
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29)
+		pOSFSInfo->fsuid= current->fsuid;
+		pOSFSInfo->fsgid = current->fsgid;
+		current->fsuid = current->fsgid = 0;
+#else
+		pOSFSInfo->fsuid = current_fsuid();
+		pOSFSInfo->fsgid = current_fsgid();		
+#endif
+		pOSFSInfo->fs = get_fs();
+		set_fs(KERNEL_DS);
+	}
+	else
+	{
+		set_fs(pOSFSInfo->fs);
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29)
+		current->fsuid = pOSFSInfo->fsuid;
+		current->fsgid = pOSFSInfo->fsgid;
+#endif
+	}
+}
+
+
+
+/*******************************************************************************
+
+	Task create/management/kill related functions.
+	
+ *******************************************************************************/
+NDIS_STATUS RtmpOSTaskKill(
+	IN RTMP_OS_TASK *pTask)
+{
+	RTMP_ADAPTER *pAd;
+	int ret = NDIS_STATUS_FAILURE;
+
+	pAd = (RTMP_ADAPTER *)pTask->priv;
+
+#ifdef KTHREAD_SUPPORT
+	if (pTask->kthread_task)
+	{
+		kthread_stop(pTask->kthread_task);
+		ret = NDIS_STATUS_SUCCESS;
+	}
+#else
+	CHECK_PID_LEGALITY(pTask->taskPID)
+	{
+		DBGPRINT(RT_DEBUG_TRACE,
+				("Terminate the task(%s) with pid(%d)!\n", pTask->taskName, GET_PID_NUMBER(pTask->taskPID)));
+		mb();
+		pTask->task_killed = 1;
+		mb();
+		ret = KILL_THREAD_PID(pTask->taskPID, SIGTERM, 1);
+		if (ret)
+		{
+			printk(KERN_WARNING "kill task(%s) with pid(%d) failed(retVal=%d)!\n", 
+				pTask->taskName, GET_PID_NUMBER(pTask->taskPID), ret);
+		}
+		else 
+		{
+			wait_for_completion(&pTask->taskComplete);
+			pTask->taskPID = THREAD_PID_INIT_VALUE;
+			pTask->task_killed = 0;
+			RTMP_SEM_EVENT_DESTORY(&pTask->taskSema);
+			ret = NDIS_STATUS_SUCCESS;
+		}
+	}
+#endif
+
+	return ret;
+	
+}
+
+
+INT RtmpOSTaskNotifyToExit(
+	IN RTMP_OS_TASK *pTask)
+{
+
+#ifndef KTHREAD_SUPPORT
+	complete_and_exit(&pTask->taskComplete, 0);
+#endif
+	
+	return 0;
+}
+
+
+void RtmpOSTaskCustomize(
+	IN RTMP_OS_TASK *pTask)
+{
+
+#ifndef KTHREAD_SUPPORT
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
+	daemonize((PSTRING)&pTask->taskName[0]/*"%s",pAd->net_dev->name*/);
+
+	allow_signal(SIGTERM);
+	allow_signal(SIGKILL);
+	current->flags |= PF_NOFREEZE;
+#else
+	unsigned long flags;
+
+	daemonize();
+	reparent_to_init();
+	strcpy(current->comm, &pTask->taskName[0]);
+
+	siginitsetinv(&current->blocked, sigmask(SIGTERM) | sigmask(SIGKILL));	
+	
+	/* Allow interception of SIGKILL only
+	 * Don't allow other signals to interrupt the transmission */
+#if LINUX_VERSION_CODE > KERNEL_VERSION(2,4,22)
+	spin_lock_irqsave(&current->sigmask_lock, flags);
+	flush_signals(current);
+	recalc_sigpending(current);
+	spin_unlock_irqrestore(&current->sigmask_lock, flags);
+#endif
+#endif
+	
+	RTMP_GET_OS_PID(pTask->taskPID, current->pid);
+
+    /* signal that we've started the thread */
+	complete(&pTask->taskComplete);
+
+#endif
+}
+
+
+NDIS_STATUS RtmpOSTaskAttach(
+	IN RTMP_OS_TASK *pTask,
+	IN RTMP_OS_TASK_CALLBACK fn, 
+	IN ULONG arg)
+{	
+	NDIS_STATUS status = NDIS_STATUS_SUCCESS;
+#ifndef KTHREAD_SUPPORT
+	pid_t pid_number = -1;
+#endif // KTHREAD_SUPPORT //
+	
+#ifdef KTHREAD_SUPPORT
+	pTask->task_killed = 0;
+	pTask->kthread_task = NULL;
+	pTask->kthread_task = kthread_run(fn, (void *)arg, pTask->taskName);
+	if (IS_ERR(pTask->kthread_task))
+		status = NDIS_STATUS_FAILURE;
+#else
+	pid_number = kernel_thread(fn, (void *)arg, RTMP_OS_MGMT_TASK_FLAGS);
+	if (pid_number < 0) 
+	{
+		DBGPRINT (RT_DEBUG_ERROR, ("Attach task(%s) failed!\n", pTask->taskName));
+		status = NDIS_STATUS_FAILURE;
+	}
+	else
+	{
+		// Wait for the thread to start
+		wait_for_completion(&pTask->taskComplete);
+		status = NDIS_STATUS_SUCCESS;
+	}
+#endif
+	return status;
+}
+
+
+NDIS_STATUS RtmpOSTaskInit(
+	IN RTMP_OS_TASK *pTask,
+	IN PSTRING		pTaskName,
+	IN VOID			*pPriv)
+{
+	int len;
+
+	ASSERT(pTask);
+
+#ifndef KTHREAD_SUPPORT
+	NdisZeroMemory((PUCHAR)(pTask), sizeof(RTMP_OS_TASK));
+#endif
+
+	len = strlen(pTaskName);
+	len = len > (RTMP_OS_TASK_NAME_LEN -1) ? (RTMP_OS_TASK_NAME_LEN-1) : len;
+	NdisMoveMemory(&pTask->taskName[0], pTaskName, len);
+	pTask->priv = pPriv;
+
+#ifndef KTHREAD_SUPPORT
+	RTMP_SEM_EVENT_INIT_LOCKED(&(pTask->taskSema));
+	pTask->taskPID = THREAD_PID_INIT_VALUE;
+	
+	init_completion (&pTask->taskComplete);
+#endif
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+void RTMP_IndicateMediaState(
+	IN	PRTMP_ADAPTER	pAd)
+{	
+		if (pAd->IndicateMediaState == NdisMediaStateConnected)
+		{
+			RTMPSendWirelessEvent(pAd, IW_STA_LINKUP_EVENT_FLAG, pAd->MacTab.Content[BSSID_WCID].Addr, BSS0, 0);
+		}
+		else
+		{							
+			RTMPSendWirelessEvent(pAd, IW_STA_LINKDOWN_EVENT_FLAG, pAd->MacTab.Content[BSSID_WCID].Addr, BSS0, 0); 		
+		}	
+}
+
+
+#if LINUX_VERSION_CODE <= 0x20402	// Red Hat 7.1
+//static struct net_device *alloc_netdev(int sizeof_priv, const char *mask, void (*setup)(struct net_device *)) //sample
+struct net_device *alloc_netdev(
+	int sizeof_priv,
+	const char *mask,
+	void (*setup)(struct net_device *))
+{
+    struct net_device	*dev;
+    INT					alloc_size;
+
+
+    /* ensure 32-byte alignment of the private area */
+    alloc_size = sizeof (*dev) + sizeof_priv + 31;
+
+    dev = (struct net_device *) kmalloc(alloc_size, GFP_KERNEL);
+    if (dev == NULL)
+    {
+        DBGPRINT(RT_DEBUG_ERROR,
+				("alloc_netdev: Unable to allocate device memory.\n"));
+        return NULL;
+    }
+
+    memset(dev, 0, alloc_size);
+
+    if (sizeof_priv)
+        dev->priv = (void *) (((long)(dev + 1) + 31) & ~31);
+
+    setup(dev);
+    strcpy(dev->name, mask);
+
+    return dev;
+}
+#endif // LINUX_VERSION_CODE //
+
+
+int RtmpOSWrielessEventSend(
+	IN RTMP_ADAPTER *pAd,
+	IN UINT32		eventType,
+	IN INT			flags,
+	IN PUCHAR		pSrcMac,
+	IN PUCHAR		pData,
+	IN UINT32		dataLen)
+{
+	union iwreq_data    wrqu;
+	
+       memset(&wrqu, 0, sizeof(wrqu));
+	   
+	if (flags > -1)
+	       wrqu.data.flags = flags;
+
+	if (pSrcMac)
+		memcpy(wrqu.ap_addr.sa_data, pSrcMac, MAC_ADDR_LEN);
+	
+	if ((pData!= NULL) && (dataLen > 0))
+		wrqu.data.length = dataLen;
+	
+       wireless_send_event(pAd->net_dev, eventType, &wrqu, (char *)pData);
+	return 0;
+}
+
+
+int RtmpOSNetDevAddrSet(
+	IN PNET_DEV pNetDev,
+	IN PUCHAR	pMacAddr)
+{
+	struct net_device *net_dev;
+	RTMP_ADAPTER *pAd;
+		
+	net_dev = pNetDev;
+	GET_PAD_FROM_NET_DEV(pAd, net_dev);	
+	
+#ifdef CONFIG_STA_SUPPORT
+	// work-around for the SuSE due to it has it's own interface name management system.
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+		NdisZeroMemory(pAd->StaCfg.dev_name, 16);
+		NdisMoveMemory(pAd->StaCfg.dev_name, net_dev->name, strlen(net_dev->name));
+	}
+#endif // CONFIG_STA_SUPPORT //
+
+	NdisMoveMemory(net_dev->dev_addr, pMacAddr, 6);
+
+	return 0;
+}
+
+
+
+/*
+  *	Assign the network dev name for created Ralink WiFi interface.
+  */
+static int RtmpOSNetDevRequestName(
+	IN RTMP_ADAPTER *pAd, 
+	IN PNET_DEV dev, 
+	IN PSTRING pPrefixStr, 
+	IN INT	devIdx)
+{
+	PNET_DEV		existNetDev;
+	STRING		suffixName[IFNAMSIZ];
+	STRING		desiredName[IFNAMSIZ];
+	int	ifNameIdx, prefixLen, slotNameLen;
+	int Status;
+	
+
+	prefixLen = strlen(pPrefixStr);
+	ASSERT((prefixLen < IFNAMSIZ));
+	
+	for (ifNameIdx = devIdx; ifNameIdx < 32; ifNameIdx++)
+	{
+		memset(suffixName, 0, IFNAMSIZ);
+		memset(desiredName, 0, IFNAMSIZ);
+		strncpy(&desiredName[0], pPrefixStr, prefixLen);
+		
+#ifdef MULTIPLE_CARD_SUPPORT
+		if (pAd->MC_RowID >= 0)
+			sprintf(suffixName, "%02d_%d", pAd->MC_RowID, ifNameIdx);
+		else
+#endif // MULTIPLE_CARD_SUPPORT //
+		sprintf(suffixName, "%d", ifNameIdx);
+
+		slotNameLen = strlen(suffixName);
+		ASSERT(((slotNameLen + prefixLen) < IFNAMSIZ));
+		strcat(desiredName, suffixName);
+		
+		existNetDev = RtmpOSNetDevGetByName(dev, &desiredName[0]);
+		if (existNetDev == NULL) 
+			break;
+		else
+			RtmpOSNetDeviceRefPut(existNetDev);
+	}
+	
+	if(ifNameIdx < 32)
+	{
+#ifdef HOSTAPD_SUPPORT
+		pAd->IoctlIF=ifNameIdx;
+#endif//HOSTAPD_SUPPORT//
+		strcpy(&dev->name[0], &desiredName[0]);
+		Status = NDIS_STATUS_SUCCESS;
+	} 
+	else 
+	{
+		DBGPRINT(RT_DEBUG_ERROR, 
+					("Cannot request DevName with preifx(%s) and in range(0~32) as suffix from OS!\n", pPrefixStr));
+		Status = NDIS_STATUS_FAILURE;
+	}
+
+	return Status;
+}
+
+
+void RtmpOSNetDevClose(
+	IN PNET_DEV pNetDev)
+{
+	dev_close(pNetDev);
+}
+
+
+void RtmpOSNetDevFree(PNET_DEV pNetDev)
+{
+	ASSERT(pNetDev);
+	
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
+	free_netdev(pNetDev);
+#else
+	kfree(pNetDev);
+#endif
+}
+
+
+INT RtmpOSNetDevAlloc(
+	IN PNET_DEV *new_dev_p,
+	IN UINT32	privDataSize)
+{
+	// assign it as null first.
+	*new_dev_p = NULL;
+
+	DBGPRINT(RT_DEBUG_TRACE, ("Allocate a net device with private data size=%d!\n", privDataSize));
+#if LINUX_VERSION_CODE <= 0x20402 // Red Hat 7.1
+	*new_dev_p = alloc_netdev(privDataSize, "eth%d", ether_setup);
+#else
+	*new_dev_p = alloc_etherdev(privDataSize);
+#endif // LINUX_VERSION_CODE //
+
+	if (*new_dev_p)
+		return NDIS_STATUS_SUCCESS;
+	else
+		return NDIS_STATUS_FAILURE;
+}
+
+
+PNET_DEV RtmpOSNetDevGetByName(PNET_DEV pNetDev, PSTRING pDevName)
+{
+	PNET_DEV	pTargetNetDev = NULL;
+
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,26)
+	pTargetNetDev = dev_get_by_name(dev_net(pNetDev), pDevName);
+#else
+	ASSERT(pNetDev);
+	pTargetNetDev = dev_get_by_name(pNetDev->nd_net, pDevName);
+#endif
+#else
+	pTargetNetDev = dev_get_by_name(pDevName);
+#endif // KERNEL_VERSION(2,6,24) //
+
+#else
+	int	devNameLen;
+
+	devNameLen = strlen(pDevName);
+	ASSERT((devNameLen <= IFNAMSIZ));
+	
+	for(pTargetNetDev=dev_base; pTargetNetDev!=NULL; pTargetNetDev=pTargetNetDev->next)
+	{
+		if (strncmp(pTargetNetDev->name, pDevName, devNameLen) == 0)
+			break;
+	}
+#endif // KERNEL_VERSION(2,5,0) //
+
+	return pTargetNetDev;
+}
+
+
+void RtmpOSNetDeviceRefPut(PNET_DEV pNetDev)
+{
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
+	/* 
+		every time dev_get_by_name is called, and it has returned a valid struct 
+		net_device*, dev_put should be called afterwards, because otherwise the 
+		machine hangs when the device is unregistered (since dev->refcnt > 1).
+	*/
+	if(pNetDev)
+		dev_put(pNetDev);
+#endif // LINUX_VERSION_CODE //
+}
+
+
+INT RtmpOSNetDevDestory(
+	IN RTMP_ADAPTER *pAd,
+	IN PNET_DEV		pNetDev)
+{
+
+	// TODO: Need to fix this
+	printk("WARNING: This function(%s) not implement yet!!!\n", __FUNCTION__);
+	return 0;
+}
+
+
+void RtmpOSNetDevDetach(PNET_DEV pNetDev)
+{
+	unregister_netdev(pNetDev);
+}
+
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18)
+static void RALINK_ET_DrvInfoGet(
+	IN struct net_device *pDev,
+	IN struct ethtool_drvinfo *pInfo)
+{
+	strcpy(pInfo->driver, "RALINK WLAN");
+
+#ifdef CONFIG_STA_SUPPORT
+	strcpy(pInfo->version, STA_DRIVER_VERSION);
+#endif // CONFIG_STA_SUPPORT //
+
+	sprintf(pInfo->bus_info, "CSR 0x%lx", pDev->base_addr);
+}
+
+static struct ethtool_ops RALINK_Ethtool_Ops = {
+	.get_drvinfo		= RALINK_ET_DrvInfoGet,
+};
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,31)
+static struct net_device_ops RALINK_Netdev_Ops = {
+         .ndo_open               = NULL,
+         .ndo_stop               = NULL,
+         .ndo_start_xmit         = NULL,
+         .ndo_get_stats          = NULL,
+         .ndo_set_multicast_list = NULL,
+         .ndo_do_ioctl           = NULL,
+         .ndo_tx_timeout         = NULL,
+         .ndo_change_mtu         = NULL,
+         .ndo_set_mac_address    = NULL,
+         .ndo_validate_addr      = NULL,
+ };
+#endif
+#endif
+
+int RtmpOSNetDevAttach(
+	IN PNET_DEV pNetDev, 
+	IN RTMP_OS_NETDEV_OP_HOOK *pDevOpHook)
+{	
+	int ret, rtnl_locked = FALSE;
+
+	DBGPRINT(RT_DEBUG_TRACE, ("RtmpOSNetDevAttach()--->\n"));
+	// If we need hook some callback function to the net device structrue, now do it.
+	if (pDevOpHook)
+	{
+		PRTMP_ADAPTER pAd = NULL;
+	
+		GET_PAD_FROM_NET_DEV(pAd, pNetDev);	
+		
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,31)
+		RALINK_Netdev_Ops.ndo_open			= pDevOpHook->open;
+		RALINK_Netdev_Ops.ndo_stop			= pDevOpHook->stop;
+		RALINK_Netdev_Ops.ndo_start_xmit	= (HARD_START_XMIT_FUNC)(pDevOpHook->xmit);
+		RALINK_Netdev_Ops.ndo_do_ioctl		= pDevOpHook->ioctl;
+#else
+		pNetDev->open			= pDevOpHook->open;
+		pNetDev->stop			= pDevOpHook->stop;
+		pNetDev->hard_start_xmit	= (HARD_START_XMIT_FUNC)(pDevOpHook->xmit);
+		pNetDev->do_ioctl		= pDevOpHook->ioctl;
+#endif
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,18)
+		pNetDev->ethtool_ops = &RALINK_Ethtool_Ops;
+#endif
+		
+		/* if you don't implement get_stats, just leave the callback function as NULL, a dummy 
+		     function will make kernel panic.
+		*/
+		if (pDevOpHook->get_stats)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,31)
+			RALINK_Netdev_Ops.ndo_get_stats = pDevOpHook->get_stats;
+#else
+			pNetDev->get_stats = pDevOpHook->get_stats;
+#endif
+
+		/* OS specific flags, here we used to indicate if we are virtual interface */
+		pNetDev->priv_flags = pDevOpHook->priv_flags; 
+
+#if (WIRELESS_EXT < 21) && (WIRELESS_EXT >= 12)
+//		pNetDev->get_wireless_stats = rt28xx_get_wireless_stats;
+		pNetDev->get_wireless_stats = pDevOpHook->get_wstats;
+#endif
+
+#ifdef CONFIG_STA_SUPPORT
+#if WIRELESS_EXT >= 12
+		if (pAd->OpMode == OPMODE_STA)
+		{
+//			pNetDev->wireless_handlers = &rt28xx_iw_handler_def;
+			pNetDev->wireless_handlers = pDevOpHook->iw_handler;
+		}
+#endif //WIRELESS_EXT >= 12
+#endif // CONFIG_STA_SUPPORT //
+
+#ifdef CONFIG_APSTA_MIXED_SUPPORT
+#if WIRELESS_EXT >= 12
+		if (pAd->OpMode == OPMODE_AP)
+		{
+//			pNetDev->wireless_handlers = &rt28xx_ap_iw_handler_def;
+			pNetDev->wireless_handlers = pDevOpHook->iw_handler;
+		}
+#endif //WIRELESS_EXT >= 12
+#endif // CONFIG_APSTA_MIXED_SUPPORT //
+
+		// copy the net device mac address to the net_device structure.
+		NdisMoveMemory(pNetDev->dev_addr, &pDevOpHook->devAddr[0], MAC_ADDR_LEN);
+
+		rtnl_locked = pDevOpHook->needProtcted;
+
+#ifdef RT_CFG80211_SUPPORT
+		/*
+			In 2.6.32, cfg80211 register must be "before" register_netdevice();
+			We can not put the register in rt28xx_open();
+			Or you will suffer NULL pointer in list_add of
+			cfg80211_netdev_notifier_call().
+		*/
+		RT_CFG80211_REGISTER(pAd, pAd->pCfgDev, pNetDev);
+#endif // RT_CFG80211_SUPPORT //
+	}
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24)
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,31)
+	RALINK_Netdev_Ops.ndo_validate_addr = NULL;
+	pNetDev->netdev_ops = &RALINK_Netdev_Ops;
+#else
+	pNetDev->validate_addr = NULL;
+#endif
+#endif
+
+	if (rtnl_locked)
+		ret = register_netdevice(pNetDev);
+	else
+		ret = register_netdev(pNetDev);
+
+	DBGPRINT(RT_DEBUG_TRACE, ("<---RtmpOSNetDevAttach(), ret=%d\n", ret));
+	if (ret == 0)
+		return NDIS_STATUS_SUCCESS;
+	else
+		return NDIS_STATUS_FAILURE;
+}
+
+
+PNET_DEV RtmpOSNetDevCreate(
+	IN RTMP_ADAPTER *pAd,
+	IN INT 			devType, 
+	IN INT			devNum,
+	IN INT			privMemSize,
+	IN PSTRING		pNamePrefix)
+{
+	struct net_device *pNetDev = NULL;
+	int status;
+
+
+	/* allocate a new network device */
+	status = RtmpOSNetDevAlloc(&pNetDev, 0 /*privMemSize*/);
+	if (status != NDIS_STATUS_SUCCESS)
+	{
+		/* allocation fail, exit */
+		DBGPRINT(RT_DEBUG_ERROR, ("Allocate network device fail (%s)...\n", pNamePrefix));
+		return NULL;
+	}
+
+	
+	/* find a available interface name, max 32 interfaces */
+	status = RtmpOSNetDevRequestName(pAd, pNetDev, pNamePrefix, devNum);
+	if (status != NDIS_STATUS_SUCCESS)
+	{
+		/* error! no any available ra name can be used! */
+		DBGPRINT(RT_DEBUG_ERROR, ("Assign interface name (%s with suffix 0~32) failed...\n", pNamePrefix));
+		RtmpOSNetDevFree(pNetDev);
+		
+		return NULL;
+	}
+	else
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("The name of the new %s interface is %s...\n", pNamePrefix, pNetDev->name));
+	}
+
+	return pNetDev;
+}
+
+
+// OS_ABL_SUPPORT
+// not yet support MBSS
+PNET_DEV get_netdev_from_bssid(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	UCHAR			FromWhichBSSID)
+{
+	PNET_DEV dev_p = NULL;
+
+	
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+		dev_p = pAd->net_dev;
+	}
+#endif // CONFIG_STA_SUPPORT //
+
+	ASSERT(dev_p);
+	return dev_p; /* return one of MBSS */
+}
+
+
+
+/*
+========================================================================
+Routine Description:
+    Allocate memory for adapter control block.
+
+Arguments:
+    pAd					Pointer to our adapter
+
+Return Value:
+	NDIS_STATUS_SUCCESS
+	NDIS_STATUS_FAILURE
+	NDIS_STATUS_RESOURCES
+
+Note:
+========================================================================
+*/
+NDIS_STATUS AdapterBlockAllocateMemory(
+	IN PVOID	handle,
+	OUT	PVOID	*ppAd)
+{
+
+	*ppAd = (PVOID)vmalloc(sizeof(RTMP_ADAPTER)); //pci_alloc_consistent(pci_dev, sizeof(RTMP_ADAPTER), phy_addr);
+    
+	if (*ppAd) 
+	{
+		NdisZeroMemory(*ppAd, sizeof(RTMP_ADAPTER));
+		((PRTMP_ADAPTER)*ppAd)->OS_Cookie = handle;
+		return (NDIS_STATUS_SUCCESS);
+	} else {
+		return (NDIS_STATUS_FAILURE);
+	}
+}
+
+
+/* export utility function symbol list */
+#ifdef OS_ABL_SUPPORT
+
+EXPORT_SYMBOL(RTDebugLevel);
+EXPORT_SYMBOL(RALINK_OUI);
+
+
+EXPORT_SYMBOL(RtmpOSTaskNotifyToExit);
+
+EXPORT_SYMBOL(RTMPFreeNdisPacket);
+EXPORT_SYMBOL(AdapterBlockAllocateMemory);
+EXPORT_SYMBOL(RTMP_IndicateMediaState);
+
+EXPORT_SYMBOL(RTMP_SetPeriodicTimer);
+EXPORT_SYMBOL(RTMP_OS_Add_Timer);
+EXPORT_SYMBOL(RTMP_OS_Mod_Timer);
+EXPORT_SYMBOL(RTMP_OS_Del_Timer);
+EXPORT_SYMBOL(RTMP_OS_Init_Timer);
+
+EXPORT_SYMBOL(os_alloc_mem);
+EXPORT_SYMBOL(os_free_mem);
+
+EXPORT_SYMBOL(ExpandPacket);
+EXPORT_SYMBOL(ClonePacket);
+EXPORT_SYMBOL(RTMP_AllocateFragPacketBuffer);
+EXPORT_SYMBOL(announce_802_3_packet);
+EXPORT_SYMBOL(Sniff2BytesFromNdisBuffer);
+EXPORT_SYMBOL(RtmpOSNetPktAlloc);
+EXPORT_SYMBOL(duplicate_pkt);
+EXPORT_SYMBOL(duplicate_pkt_with_TKIP_MIC);
+EXPORT_SYMBOL(DuplicatePacket);
+EXPORT_SYMBOL(wlan_802_11_to_802_3_packet);
+EXPORT_SYMBOL(RTMPAllocateNdisPacket);
+EXPORT_SYMBOL(update_os_packet_info);
+EXPORT_SYMBOL(RTMP_QueryPacketInfo);
+
+EXPORT_SYMBOL(RtmpOSNetDevCreate);
+EXPORT_SYMBOL(RtmpOSNetDevAddrSet);
+EXPORT_SYMBOL(RtmpOSNetDevClose);
+EXPORT_SYMBOL(RtmpOSNetDevAttach);
+EXPORT_SYMBOL(RtmpOSNetDevDetach);
+EXPORT_SYMBOL(RtmpOSNetDevFree);
+
+EXPORT_SYMBOL(RtmpOSFileOpen);
+EXPORT_SYMBOL(RtmpOSFSInfoChange);
+EXPORT_SYMBOL(RtmpOSFileWrite);
+EXPORT_SYMBOL(RtmpOSFileRead);
+EXPORT_SYMBOL(RtmpOSFileClose);
+EXPORT_SYMBOL(RtmpOSFileSeek);
+
+EXPORT_SYMBOL(RtmpOSTaskInit);
+EXPORT_SYMBOL(RtmpOSTaskAttach);
+EXPORT_SYMBOL(RtmpOSTaskCustomize);
+EXPORT_SYMBOL(RtmpOSTaskKill);
+
+EXPORT_SYMBOL(get_netdev_from_bssid);
+EXPORT_SYMBOL(hex_dump);
+EXPORT_SYMBOL(RTMPFreeAdapter);
+EXPORT_SYMBOL(RTMP_GetCurrentSystemTime);
+EXPORT_SYMBOL(RTMPSendWirelessEvent);
+EXPORT_SYMBOL(RTMPusecDelay);
+EXPORT_SYMBOL(RtmpOSWrielessEventSend);
+
+
+#ifdef CONFIG_STA_SUPPORT
+EXPORT_SYMBOL(send_monitor_packets);
+#endif // CONFIG_STA_SUPPORT //
+
+#ifdef RTMP_MAC_PCI
+EXPORT_SYMBOL(RTMP_AllocateMgmtDescMemory);
+EXPORT_SYMBOL(RTMP_AllocateRxPacketBuffer);
+EXPORT_SYMBOL(RTMP_FreeDescMemory);
+EXPORT_SYMBOL(RTMP_AllocateTxDescMemory);
+EXPORT_SYMBOL(linux_pci_unmap_single);
+EXPORT_SYMBOL(RTMP_AllocateFirstTxBuffer);
+EXPORT_SYMBOL(linux_pci_map_single);
+EXPORT_SYMBOL(RTMP_AllocateRxDescMemory);
+EXPORT_SYMBOL(RTMP_FreeFirstTxBuffer);
+#endif // RTMP_MAC_PCI //
+
+
+
+#endif // OS_ABL_SUPPORT //
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt_linux.o b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt_linux.o
new file mode 100644
index 0000000000000000000000000000000000000000..fc883197432d64df016f0aee386bbbc033a50c43
GIT binary patch
literal 21561
zcmb<-^>JflWMqH=Mh0dE1doBC!W1H70;V(=gc$h2EEo~m`Sit~|NsAYi-JUAI|UB+
zZczg<d-te=D44wAf!M>nC29<zolk?o8u+(e;@>7C&>_jcEkuB^+m)k3!0<qH?BUnE
z6OaL1{c$H2kh{8PtYKhaIL-uOcSiAaM+9_6adb}r33dv02LyDxa&!tr#~z*lbw+6C
z)8;okoiZw&B`PePH7Xon%ey7IOF3F^mw0wdx85#shMBz^WDL~oDxU7@fX*t8?#Up*
zPQmWrfKIV);ZA{W8I|r56_)NA6^_m~u`ur*cVYo~_qY=em|_BxP8?tg<W`2`Y+yEs
zV0gW|^BY?D#6qm??f~27#nJ5$(CNg}c>zm!fPE0#dGX*+`OW~9P7e)mz#_~8`8W1Q
zXXziX!tMxx-U5|Q6P5qLJl(NBx=a6nT#aFW%cWA0ZU>IeM~#md9{m5`=_CP(uM|kc
zc6WVXVqoa@l<DN?o&;tFDRc&~z?64;NpyN}9CwoV|NsAgh(?5az|KI5e=tAxaPKxy
zSisUp>wyyX5C1z9m>3w)^@IF_7Jr?`cI2#QXXv~PHmmb^>;F#X9iU(?;oo`tH6w$;
zfzPYEnL7;(51_@?1W<ZvegjPf5iG5@OE@}jG#}xJjy-(bMTJG0oq^#viwekPV546@
z!c31a?I86ag~wS`N*EXz!0HVToP>G|;eU|(QR1WZc8NlFG${Q^LZjv~B4(iJb|J{*
z)&r&NJ3vAD`aX)IUiX$UAe*ny8T+NP^hakcB+8p@L7JI5FPHOn$A0N9{n1?uiF6+o
z9>Z_@1sE6@I(<KMhNy6Kx~Q-mXHfy=U9j`JeLq-!EayAUqGAs7(d#|mkAbp$sTfF4
z30OTSXT#L<Z(}j;^!;$0Ma2+gu8Rr_Sf=w+=ZAy8<hy-8eE;A4i@%f~+01U=56#CI
zUr*^R1C<BOZzNFN-(4ipdA##->$ehP{%sdKe?Sa$6X_0?>6`}2AN<>$6*}DldRdq{
z+ZHe|FrfId!}kLyX67-0V{!$|AKk?g{M&p#yj}|pVC3)<=|sd&=dsSqy-qB<EMXdZ
zomF<ZGB7YSA5H-~q}xpeRGhe|aDc3dhABgeL2$xGHeUeMe>*`%MQ7-T?hPJH3=Exz
z4G%OP%PC}F==}b9b>|JRC7riA4|aY4GrOBT7#SFLf{KssP^eJs7sCUHc!lJo-u<9h
z2bXsusP?rU=setct@C_|9@NO@AN+N!J3z78d9d>n)XMJCABG1ys|7%T2}v&?{~5D_
zgHeMKn!sQ0!3e*wU|5cTCA?#um-*YDGcYi;-sW#v1d1T$?r9*uE(R5d-OenFL8WB3
zGsj|3TI_b_S*!yp)Z2D2Fff4Q(^;VPKnd$&2ar~0g|yDLV+;%o4Z8%27#J8zO1j%X
zA<`SH0uB^#An|W=wmQzL0SW=INn4<-mIEc0P)~OrhB~j@&hS9%ZT_hTK-oSHR8^Fy
zF<{dS*ZBJAgl=b<&Nfimd)?R>1I`3<;6bwCIEzXuEFHY$`2YVuO8x{p5KP1#29-Zx
zW_N=N6EsLM%R2$2^mrWX6Ho-goUhRNVHc>ZgP2qLr}aQ5GyjwW-LXITw;cc%?jc|Y
z9)LUW9EyA3(FIBuCA`q+2L%SC4Ezd-@-J}hcR>|*FT6ev2SvCG#CBJn)NWA`P{t4a
zV0fw1^+2!dnNHsm$6e2WoDEjfdVs(68z>?}&vd&U=nUNh7H$5)-|2dUzn_DVfuXtf
zgnWH{Z|sBK(hHEhao_O3=hYDA_s^@leUEg0=ng#q*4Q0-0+cT6L3V;lFc}rFFw_^!
zu1A`G@bmXi21(z7Mqqd7p6(`4aCd$Jt8G0{;sLE|nq5yYf~>D=htzYem-t&jMMk&l
z8L(2r1JLB&9r_{F80^#1;N~MP(Q)yRXzO;}12q*IJ^bz96zqED^%+pGb@PG(qV;5{
zwc&x+yFe~K4+&loW@z-k4Eg{6KiD#m?0$&s1X$vDdH>)4|J|+!j<cv_fC>v(`D%FJ
zWhSWE1(sRC%)kID%E6{U+`+)#VgZs51?l_&k`IBF%r6x{;;v_ov#1!bfc0^J;ss{#
zOGiTKxA~0$YWdRXdZXKwr?>P$XXusA)7_yQ(3tCVy_32SoH$%RfFiW@b_GjXXY8}q
zOC`MBOr5Te__sT;q;<MJ>#h}O{a?c09eW2<AM<Yy6-et0ebOCzqw{086H9mKolX&z
z?$9e>?-?FIiVD>F4J?nXzD6$Jk2y#%bRItLAOnh*P8Su9P9GJPP7z2dvSs-2|9|JP
zauKjmh6g%}Wf0|hr?U*Wjq&;oC}I)$0j#z=03z9Xsf4rh0$2#t<bmgR!%J{6XmJhC
zPvH6w-d;02*?AbO6y_G5&JPGTKqI&0_4gZ{F)BPD_k&UmD3Fh{s5HR}q1UHT+P`S^
zL3b@j>!r@io##sAJAXklPUlZ(G6og@@D>BeY)M9N4G_ZuO|P#{Lp^|~Z)DKY!{yH7
z{M$k~I(<KMdrP#QED7s&{m^=#B!_?7rOqGS#S&oubz-g1ckzL8F1S{Q=iU!HL4sgS
zD6Z=WeFJjfMzorqe_QCA*S%25O%TZoFxP`5UzUK9IHa3`+#Uo4N{MuLun06v(mI{f
zpiD&Rcm-l0A~?=Ng99l(dBARMy;Q;tPYNdwcZU7}x%M!qeqvGaV1))}cj%wjH&M!G
zaC$&)&mrQ=VV43Zcpz<r)&re~O60qpMLIWuDkjE%jsJhLGB9*j1$1r#l|h|OBIT;x
zv0pkbAessw7c`>#U{z-*xXIKHk=TK7+K1QsvE?U>{#57j&I=HyodbIv)TU{@T_V`|
zfq&ZtSOd;kr1J(^b36@{Kbqg5rO$6pDNNn99G#a-D!ZGOfT|9LwB{d-CE49YA>ETe
ze$}1~Dx?h$w0<k)>23xo(QXEL+46X~kl}x@=x(s+Zm{U7Vy4bhoj*Ho9A{Ah1t7$Y
z$DncB`mH1rl*hgxf+=kRq}vCv$MRwsM|W|^>;B#{hVJ5!<E|e-Wk>6`5+Uo_51lv4
zj=U@aB`9#S58|3m*ALxb2Wh%~=)7TF`=M;XOTYjB|EEppmIdp*UCLs3;C1(L78MgV
zXhJYN@Ur6n|Nq#-8__=Pb_(gd+<KtI4&uU{pcYl<4TwW=c~2kYJy_Qdl3XDHtK9?&
zpXMLzbsIY`AWE5TaHqfZ8`zOAKvfUIk*{w+3_vUYpa~sY|2;e`xbaN@ECY779{3Ha
z(KvczPjvR~`2GKX=lz{rpj3Sgr76+6=lB2rpjxB5PNMZce~TqI0|WndH-)t3ADrce
zuwdkGoy*C<(Cr2(Qo4OVq#E;r3Pb)@7H$TH#v>qW!F4tN_5-XF7#J9ALE{%?ny_lQ
z<Or+?RfgotJ@6uQ)dWy6-|Z)1c&Qug=FZ+Dzo9jC_f!zG(@CT|OoV?MQ}Y8J8xH=K
z4o(J!<E<Nh|NjrN$?*U2)-AvP{|Ci)H&`qG_ArHR#{kPi{LNQ67#KQFfYTwwtnMaI
zy6z5>(LB_8sZO`M6=VTK9;~-JOh$VmNC`GwU=`Yppgds-wx7R!4F>~5TI+xQ*2$po
z0h_i9<SMX{J3$@X&cmI@LE(Fx*#+cvXBLn&#HZZ>EWOT<KJre`NXBtz2^R)NhP30(
zG7KP6j)ei-KRxcO;=;fL643yQYcVi%Ix8G^2DRoHjyqSlFmQq-Yrv9q3=GGc8$h7}
zw$8wXff*!e0+uvmVd$O;N*Mgxnr0L+FdTQbabaKq$vc4Momdz;oh`cE1o-y_a6ugT
ze<~=2>;$!hJHP=Ak>x~|H9XmQ93sqtEZq5vf8QzoeHZxmfi-rrsK8`F>G8O8hzkQ7
z$nFTR-BBzI$DLz94nOXk;KIPpz`yT6r?X4iapx4Ud>TkT10)Z!YMTdp=cxm)*!Z_y
zYW~H@-)GIiz`(yPfUWr<W9NnDNA(9@u=8&_(CgyCc<=#BuZV!*ft{cMx8A)ce*gb}
z+&RaEfdgc90odpw7KYEOkGF!P!12&}=J)^qpx)#0)(gM?|K|pUWb2jR|No1DSvP+F
z{}1X}9dEt!`~QC-u-Jp&|Nl#XSx<id{|}1z<E<}#|Nn0Q7JKvi|9=lK>%;H={}aHh
zFTel)&jGW3{Qmzx7tH$e`~UwuFpJ^O|Nr@57R#Ui{|mq@jz9nZgW9>rTY3Kc|1Sj=
z6ZrH0KWLobc&o^t|NlY5hsRqb{`~*%2bPuj^Z!36$d0!v{Q3XC6fCCl=l_3D3+8yM
z2HX@KxLyOeUK6-pi$DMW&jIVT`Sbt(1u)Cu&;S3gz$}+P|Nn!=43D>Z{Q3W18Z74X
z=l_2*Fe~8C|NnttR>&Wie<S|<{}1Y}9&e5L^Z)-1ux!Gg|NlROSt)=1|K|fWhFUY=
zrsTl&7QpqE!1Y%A`TySqtfS`7|Nk4ntcE}T|33q>TK@e1F9WJ_TRT7|gYD?~^Z!4n
zhB)3j;m`m7+F-FMfBydmjYb@Ao$=@Y|8TI_oIn5n7lT;~;GwqU52WBZ-ns&A%9=m_
z|67CAZGh|D0@u6a&;S2x!LoZmt^%_Tz(eiGpa1_Az%D)U=l_2>u<V&X|Nq;7Sr`8N
z{~rZrUHS9>e+8Iz<In&9pq}^f);oXx{|D8Q$6FtO{027V$)ErKb-*l8Ap|ky4P5UB
zxZW>ty+1%P4c77J&;S1qz$}Kpuux<9`~QCgIQ)42{{Igu2adN2{QdtQl2b(f{{PPm
zc9q0mSe}vj`~N>HSWMyX|No#7mE)}{fB*ky2a9R^{r?|Sn;vh~`TPGrCs@qj@Bjax
z%ISEk$zNE0v-k_kWj23d>E7Y*|No#y>hV^WzyJS(Mplludi?$WA2hykyw&IL|Nnwu
z^8)_D@@2^1|Nn)-ViAA;{|D7s$6I6m{{Igei#y($@E4Y+Q~v({FAi3h@fVhpbN>GS
zF9{Ya_zTN#C4XUQyaE(LVA-0#u+-G>7Z!spfB*lN2g`Q+{r?}-8am$E^Y{OMMX=a}
zzyJR$fmu`j{{IiI6I*Beg_Rp~{{H{33YJ~)_y2#;F#qw^C4XW0e8u1Y|3M=#$6MF@
z{r_JRtZu{K|NphXtSx_G>3PTB|NlWX#PQZWfB*m21<M}z`~SZln04gu|Nr`6)``Ec
zQtHg#|NlXwi^p3p{Qdvm2rPT$@BjbCVAhSlu=3^3-~azXO_$@X5B|dP`IEo@|APiI
zkGH<~`~SZMSjU^cupIT_@BjZ+V6iWMVL9c;UsxLd^Y{OM&{*p6R)&B7|J#ApvHbi0
z-yY23`1k)mXoTu`E6>0G{~f_%0{{O1cLK9S{{8>&3}#9E`~M$Y#kR`)`~M#_lz6;V
z;otxNZeUrJfB*lxgIOB?U}dq+zyJR|!D0sg{{Qy^vrPW||L+ZES^WF|-v`XH`S<_7
zFPP=<4_30e{QLjkA1vna@BjY*Q0uv6DyRZE-rT~#z~I8b#gKNqxdT*Pff!v33=E*U
zwFK0*>TK=-sRuVF__sNxb_a?yKlssng1N&n6{X$Lkd*Q{t<xzD+Uk4R{O$jLNV8D$
z5K`0SrNa0B|M|Bc=!6cIg3}X=$~;&b>!mYXU-wi{yUFk*L^pCnw)Fsii_v%33{&eR
z{ubVE|NnzJGEn2@z#6A7zkL1wA39#czuiw^KQpLVd7}A+L|SJrs414#>88NH&52R*
zc<0ZCpUnJI4tAbTYkdBnq4_;y^YdTL$K}2;HI#_*ZwISxKF-wqQYx*}53Hx<KqW_7
zbDjcA^Kq8$Fd6>s$2%d7hl9{=#5Xryhmwr$sUVBG!BUNfKuxOV15BM@&oR2my!`z2
z|9?ok5~>cVnFrF?c?(oF{(tH94XUpB;em#q4kcRPCd8xq2`|rl2M;fHgPq9eC)0Qk
zWJzZ)DEMAZ`TGAqRAuuamX`~@L))vM(AvTb?#F`~i4Z&1efj?%)c*pH=Lvwtx@&nl
zT|e+|a~0@3*BSZ-+@(9tq5_(N=x}}A>td;7coM7-Jaib{-2m!7bbf4Z2DMC;nhz*-
zHiJaEL*IZ^A;y+NIXZtrdPEQj*suftw$Rtzu8>jfPEZH2`G^3xy>58m^%qe48$6zk
zHonkZDgYWi59R6febai0zXjA5ZT-gI0%}}#yK?l}utB?=U{}U=yK=N1C{=6yR%#9(
z?l|VGTi@;ap;N-}0LqZUgl@1`x_voderWwxauPJD_^~^bhZ!sh_QC5dko4Z|`T;UR
z3mF>P1PbXcP({U};=m5=*}Y8v4@t0{5Q#JJ1nUOsH$ny?5dA5P{xGQjf3ovjiCXLb
zlB^vJ98hCHzAM!L+l%4{kQ34%Hf@19;q{U3umG^byZr*X!ILNupMu3Y<w4<boJHjp
zEN2=Xc)c2APCCRK9hjZ38?g0H(faS8zWasFYha^6jx13+=Ac{O-2h4?o$Q@AK>h64
zFVIOTXnuut$VxemgKA@j*Ec{Dw#QjimcXrk22T&j<KvwuHVJ@i0@?7VJN5@?EF6?J
z7+MdMyoMTg0&d(*a6W|1KlVB?f!zzA&_#|94$y>833U9l+o1Dscf*uq29U9=U`@xG
zUx2Ej&Kt*?UxFCNnqNVv*AVIrhytr@{Z_&b8`px&BZC|X@)*Lt@G!^>`F{D<*MXgf
zzd!H1e(*g@>;DoF!*3II+;d}QXg<aWHqG*1(fiIDyFlu`KRWn|CHs<*=H(K0Xn_RI
zN1*X7u-eYc-2$zbO8CK?4rcHad5IdsF=oc-*u!Y!PbmJ~ciA^d0Mg&iyz~oHq8{wL
z@cmimiG#1$7$L<KbW{iA6}Wxf5}gNIZ<nxxOfOMm$UFqnx(i{}_eWq8dS#?KBOzVQ
z=-9()pz^5s4bk=^=|*w`BxfSchoP9)%>)|yY&}rIgQR6b=MBS?&@oz2ZZGEPbcW6J
zgS>@2U*7!20d2hVF#k4Jj?QxpyKj~=FfgQbhJNaB{m8$~m8Zk?Ly1J^1%m@=whT-q
z(y&C%-x|q?Hfzbh?ND0t52>_H*H=Z_u(^nmJN(;SUxD%=xZT2{BEbn6um?xt>wUdt
z4B#SqhXQ=a&Q=991nBx^A*h!KntJH~+2s4C^(23b1!x`-)OP8veFN(Gr>$NEDmFhd
zfO@EIteq|@GW^@zSUO!)B>1<vF?YJCi12T7W9oEK5#ZnE#@Oki!o$Cf4dfgLs5`n{
z-*mD-hR(Z7-!L8nIk(e91*C)(WG_oAsGR|-{=qJ0JeJm2`$?Fo#If_kE~Xv^25r|j
z$5_}Hx?SI-X_vm?-|qVfI?v6&{TpaPqZ3pLKvGAyE2K_&dGsG>9F2dU>j$V!peZCI
zD_$=~YH>ir?E@^=zij{a|34_ZHPn7&C=Kd%1&tts8vP6)H-n}uQT+2#`#-cEhD8Z~
zi|ao~VGcFAfD>9AzXY|~CO}MN`3=e^$RYFc;lKa?7lOJ2tp_??pYXS2faY}=I$a-h
zhrZd-pvb_m6Eso;as{YO-f5%qKlDMf>l2o4*C*W!AUzLCuf8+}xgN8=fP_%<4v``T
z2F4PV-i|erYz(^uKz$<@6;MJzS<`S5oZTU6_;IU&SOd?`otHaLfD;=yCZThV{M$fF
zc7jTB3;cuqQcGM?%Un{6OY(~<86aYAnK`Nc1*v%q#i@BI@wxeVnI-u}@db&=*{LPP
z3_&5j0l}$xDdCw#sX3{|#ja(kd7zaPK1>V@J2)5^Y)tI*i}LeJ^o<M*4dM+9<Bcrh
zgF=if%nagvGV@9+;)6pR<I9ZnjP(rk4B{Pg3NjMo%Z&8%i}iCr()xOOAOz<YmBfR^
z^^&brQxp=5i&KkA6jD;l;tSFeGjmc?K>a+1aK|7&Pd|4ng^-NQVuiHQyyTM1{5%cS
zVoim-{1S!C+=86c+|;}hh04?tMMXuh9(uU5AgIDACtKI9AgCe$9DGP_ri=X{iN)E-
zcIxWtLgE+_?~WxUiOCrnnmP(asU^0m;J|du$;nSnEJ;;JRLDyO2X$t0szP~YNrpl}
zQDzxPCMB^XQK2}qD%Dms1ss@k@e9PsaNoe)nU`8po?ny=N)#ZMf)pr#qFzr=4;0b#
zaGOR!QEFOdg->dpf{lWwo1dd^uxFGe$R&^jN*6b16zAlZ_$B71f}EkP0C$omb~iaE
z=7I7?QEFjnYH^8zOKKTNFD#-{Gt(+SfvAv}m!goFr%;rbm!7I&P-kqUsgPK#P+Xdp
zmRX^YR+OKs;2#W51CGVTndx~7nRz9tMQMr2sS0_Cxv8LtfEWqY0Wkp*GLQ%g$$%=&
zPg5uXu~W+xREv?!$t+e-ErzJ2M>rOs<y5-Z>5-b4l3HY8U=(i*2^%iDl%u(+xiIVK
zVxLQ5Nn&tjRjPuGf}yFg0o-oaijvg46orrqg{0E7wA3PnwEQB4@BmK*hzdm=g_NTF
zf`ZJvbOlH?q{zhp*Q4j_=?vBYk;11(wOGMQAt*HwR>Wn1gB@IyDdeXq6lceS><60w
zPSbRWdr+W2{0S<q=oSw?sd;c)>Ech%JhYrepSD6lfq!WUn$5|HdFmw!@MKU@p`e<R
z0!aptM8w6wfTkv`C^2232#Z2+ngSJKC6xuK8ma~r21XT{3Yo>=mPc7)PG$<Y8e)K}
zO9eHUa4Xb+G?p|Kf<qiNR1J(OtZ)&Upf)GOTxV1d<)-H57gd5YMLD#YrU159kBcEA
zF-0LMH8oEmF+DX!H@~z5T*Rkj7AF=L=O<?-mZYXI<R>SW78RwYC^+Yrg35E>)WqV_
zqSRuAL{Nhv8zEnmT9A`isgMj&rjU{e%Dte5R%V`pcWR}AM`B(|aYkZxW?nj|PXRYK
zDA>=_6~A)0T2S^TU~oWUW>I-&aVol<3MHAjsrjX#<|#vReqLT`a!E0yI?69CQh*0d
za!w|s4V#i#OpG#y;^f3Ug_6{w+|0bhl2k=S1*g*DN<~El*Sx~g)Y4Q)0iwvjkd%{{
zoSl<dT#^c|M138d71A<uN>YmyK!OYmj-@3Tsd*)t$%&x$szOm}R%$XxZBlA-Vrg+I
zs7y-ENX*Ge%}a+ET3VFKke3fKBvqj(H8DjYH?<@qKZT1ywb)8QwLnK9CpAyORsqzK
zGpJBCFsV?mQeXh39|Z<3h9E~DPd{&ka34oM259?RHxbnS2DQ`;42>)poP&cD3@TJ}
zDxf_9NRtcJO4QZWwc}z?O<_<i*3h(4a4jmzF9K(r{DRaxP}!_n404Eql>)eo&n#9b
z$<J3P&P~k8QB=@SP0_?6o0C|So(hvyR#tY-$<IqwR#xU>fae3J;9!lSMAZ~c1%w!b
zYB7VVaSAvwBhsxxacOdLYH@K|X--ZhSPnH=XC$U5q@*Sy0v$Q2dpd_Hq=LPanWqpG
zfk@+^^oK0rUX)*2fHS291^X#@x+)YW=4F;tDkNv5CTD|_11RQ-Q%e-GQ!5ox^7B$b
zjjHefNB!^s$ADmO1}suWAUPwjBq+Hh=Yx7Npxl|9k(ig4nxjx$o>`Kdp-_^qzyMFm
zx%nxnu)?Rfw4flrsDvRnIWZ3uKMcVoiA5#gc73^mr&Dk+gI9iL9=Op3=7HuE7#Kj4
z&7kR+R0alyO`y34Mh1owMh1qtj0_A%7#SE;m>3vLm>3v9OEZf=eLf}zhVM)a47$t=
z3=^0c7(k0R&ayBt7_c%hEMR3|;ACT9P+@0aFkxq4h-GJB*ul=g@Qa;+;R$H2j*Ed|
zEf)g=XxWDfHv@w&Hv_{4ZUzPc9tMUJJPZutybKHpybKIXd<+Z$d<+b^{0s~%0t^hg
z0t^hNq!}0rWEdC{WEmI)<QN!g<ro-_$T2XylVe~AmuFyDD$l@hPo9B6RDppZPJw}8
z9jLTaWMF7lW?*;<nuGuqNH{QPT9SbWG!cYd0S_Ys188xz6(a+~0!{{oBb*Tb$Z#<*
zcyKW=_%SjtfCgb3Kw-zlz%Y-IfdRDo_bMX;!wfD4hCN&i44)Vo7@lx3FfcMPFo-ZQ
zFz|3QFz9eIFc>m1Fjz4$FnEJzM6p{B7d-$TCV+E?4#VBq*-AkpG^sSNq*TE~&qU8y
z*Q6B8Gu4Ff85s16D|1T{lNj`hONt<L28>mdnxj{eT2aEFSCkLxj56qfM2d3@;&bwo
zvx{NEAf1MKCa7FPu;TdmTyUiY(f}6FgP4<4T+E=CmtT^q=k6D(TU?TuoXwz@oSzFC
zJs>`K<rx@2%R?AIlhq(ypb1CF{uB_8fdMq41Y&`fH-NGMhz-IX77Pq4I3e<&Gzf}b
z&^Q-p`WD28B?%W51_scQ43HiW2FZbF&~z(^4O2Hog#k420FnY@ka-{mX!;h}-Vcrt
zJ3;OOsR3b-y`brSka?iVTadmvDhv#Xp!F*t4tNd{;!n^NC$hS~`V0(_Fh@Yc0wf;?
zWy7Q*j2IZ+K+OVCAbUYHXo&){`xu-U7;Z2^+z4_PNF9g<EolLn3z{+n=}RzXV2A+;
zfH({c44^CzVrDZiFd&<E!<m5rv`_@(Ur?hPW*%rs3&>oUc?V1w7*aq6Krzg`DyTm|
z`an`3bs!psVNL+e(}LKbWji1_kUCKL3SxsWNDhQS%M4(4g2bPgFff1?!-Lo$3{nH5
zVPOa2Z*XB?5a3{70O<!UO8~hC<R_3{k<B~c!@y7po}mHhg2Wk!1yaxC&%gi*1I9#1
z*$?7_%6||IsslhYs2%{(pk*;28dM*EXi%L1qCxcnh<?n-z`$4!sUtvqP(1;nL3IU)
z2GtiJx`By-fvJLlVF!rzXJEL-#K6GF!oYAF#1DbgCm?m8RUx4Ak&PK5&&|xhz!U<h
zYe4dmAaQjDhHMbc%D_+nl?T;BAo*z^adifUqad1<f#DQX{sxqP7s~$%<^O{6xmg$(
z7+Dz@L|7p9=|K60P(G-R1DT%+;`=Z#EC9)~Ffc3y@k1CGK=mI;{w7GAm4V?NNL+-0
z;Te?w4$5a>h1kQ&%D}*s1gSGY`hr3HG6se?5G}*NPza?#^(jbxBZyzdz;Fyi%P=rJ
z2bsgd!0-md4}sLVAa(p~3=E9w3=H}pnuCGC97@|mX?G|c2%<stGl=G3U}$DzU|^DA
zVCaSNXG7^_An^tUhIJsmIs?Ng5Y55Ba05!;2gwI8F#H1XSr`~Vt93x}#la5oCoelB
zJVEUNkoz=2d<96`0K~Tk@e3gB1Q0(Lq)(lJp#~%##lSEd#Ajh(SODUOK-v-@bw@$`
zAO?n8Q2F~Heh8$U0g{*FU|?VhV_+}=(Paz_xga`_fuVu};;t4DKZ${%8$_2eFf0Jk
z_6!UgKy(2E!)cH@bq0ppAbuVL0~;p;1Cs~?0}m%8e3hWIC5UEWV6X$phcGaBfM_!Y
zhH$8O42U1Xz>p2)mq7WgP<|hjKLx~BXJA+gqFERi)<MPhLiuN*d{7$-<iD37K4`@W
z7Xt%`p9`Y>7#Mm%v>Bw01rk36;%hQ6+yK#rkaibHT%4PMfhm}Q0n`Qq@wGwxY)E?y
z#18}Ug&7zMxgq{-1JO(j480(lm4RUrNInG8b_1zD0^&<CFq{R^G7JnaLF!l-7~X;S
zA&~YRNSzrE0|S!}14A5$_GVzn2GKGM3|%~s{N4}ZhcGZKhw|4z`JlETNdFBG--v<X
zF^G<3VE6%5_ZP$ufwUh%>XbljNG%2i3tou1wjh28v~B6nz)%k2=QA+ug39j)@k1CG
zE<^b@pnOm}6l9(d9|HqZJ_Caqi1vZBO+n(@Kzv&UhW#Mgk%7U89}-@UAex1N!Hpl1
z{z2_nkou`0zAXd8JP_^3z;GR;PMv|_8Hi?KV0aA@4}r9KLF%~$7#NrwA?;rfzfu5V
zekW9XCzO8@L^ClkTmaFm3=CI6@*xZipFp$^1B0C)0|Qe614A5$mSSKi0nyG33>!hT
zHv_{R5G}&M@Kcb10aP!%kz`<CGGbt0lwx3Die+Gs1kq9q47yT~_NxhqW@TWo1c`?*
zFvNjq0|tg1kT@v+f@mfNhGr1W!obi0k`G~EV3UTFGp-=on}Hz+M9VNRECSJH3=A8k
zA@Q{h#1DbA`9c2v4B}fcFi6Tk^ecgADFy~35G}*NU=5<B7#Q3^v=5}80Ma)T#1Cg+
z*bJhj7#Qw?Xc-2EFHl-q7Gj@*EF_*xpnOXxAJo?XnNtqphchtDgUT-k@k1CG)`Dm$
z28M$mT84q)97vv(f#EWUAHu-!48#Y;E0hoFw}8x(kz-(B3TI&Ol7qx&B8X;TU`PXr
zhd}x^Aa!jZemDceLXf;V1H%Ro&BDO26(k-4>HmP#odNN~A$=hbpHZHHfk}&jK^sJ;
zGBB8dXe~%T2_#<$;%722Ob5{tkiHX0d=rQt4e3XL_%G!l>48y!fq}^#(zgPMn<_xW
z-9h56kp31(JQFJ33Ka+S!9e2YL443kVns-KrLPF_cQ}+z2hmIn40#}$g@K_Qq%MSk
zp$){ZV_@h8@og9wCPMi$L3Azy!#5Dk!oa|)1gTFYl_2H20*EeWV9<n$r-Eo@28LV^
zt;N9543cMMVCVtylNcE0gZNAg49h??3j@Pyka!3K!&wj?l%GKSBnF08Aig>S!!HmG
zYQrc)(hr+5B>jkk_^b>J@*sW^1A`ujpUc4D2BH}ueNj+&tOv<wF)&<)(xCn+Nc=O1
zUkhrfF))CRdjPf9Kr~2%F&WZd2hpH5D~JXyBL~r-HXw)wEl>r~przy>8nk^5M1$I~
zAR5#b1<{}dpdeZY)UHitU;wpOL442xa1afeH3!k){y;JV1E@a(;)51Qf@siUbPx?%
z;0U5Y3m8Fk2-Lg?C=FVV4-yA0SqIUewl#<bB?S--TEGsXK?~GDG-%)sM1vM8gXkKl
zIiNLTAU<eqB!~trj0Dl3g^(Z`w73pLPl2kR0i{99&Ozd!<!&GvwA%<ogO=BUXwX_G
z5WNAa9<(eP#0PD02GO8>CLsC%RQ?E*J^`gc`)5J&phfK<`U+GW)Yky<??Cwvp!5?c
z{Q^pZ<AoK{4hOYA!STY%zyOXH(3lEH9SZ{kI9^y77{Kwu!oUEI7Zzx|u!7c$Lef1r
zURW6z!12PuzyOXHRt5%eys$Dbfa8UgfdL#ZEDQ|bcwvF`c|i7q<AsHR0UR%&_BF_U
zRt5%eys$7Zfa8UQfdL#ZtPBj`cwuE=0LKd}0|Pi*VVxIHqQ!!l!98V!1TzD2&xL`3
znE{mQk>z2%YKRy!15(F^0i+(38z6EZk{R5)0kI&MnE{kbAZ!rH%mCU10b)TgGXo!r
zi&z*wg12XYWWo7~ftdl+ZwHON1T!!&FflNK^9x8GoSqqYK;2dFmUwV_Vc=p2Wnf?c
z=>;t@2c6XdQU@A>0xcT{@j;scKyeA$5CY<ZHdKJj17T2J2Bm8d8-zi8P~Xsjk%0lU
z{9A~DkzpN3LJks7ApR*(-xoBd#K6D+;y(n*LorA{Xsg8pRtAP7sQgc;9EbwRgUc8J
zNWT)KUj!)*LGm(;3=9cO3=E(p%OH7kMh1okWd?>wsCoX33=9DZkaP%=Pes#T&d9*<
zft`T?w50+h4_bS9K$?L8ls`fI86bI12Jn6*5FfM&<AE|HUx4^~LE~=RkaP^<p9R^+
z%fK)ZYX42BeV~*h$iM}*X8{)jI37UizeD9={$)ezRD=A-!^FUFfQNwrGy(`xuf)W_
z06ISf6lWm5855+8goS?qh|kWz0E$nLd>Ru2gMb1918DI%h+lzbekU4#CK`VQ69Yqm
z90LPrTm_{67!#zd2jvWqe=agHFa*dV!sjWP{%;`n%Yot^gc%t)m>C!x_!t-j86kX8
zW(I}}@{sZZWWGAcU{GK%Fo4IVjF}l21b7)3K$~tr^7d%*0ciXLW(I}?e#n>wNPP{O
zd^0lx18B7yDBXkPr=!WQ1o7Dz7{s9N+XLbwxd+sL|G*0w^8)F=iY9-bnStQ}Cj)4g
zAUM5$M3eu`%)ns41R3W5>E{RaA>|nuK${^zd__<~L9$O9jc>xjz_5XdfdMqW22$_E
z!obkL%)qc0n%;uZ)Tg8I^U(NpX#6%b{v<U1d^G+tP+89nDZfGP*$OJ#*%=tZpzb-2
zrv54m1H%J31_sc04oLk|kpCGN7^Xwj|3gzR0NQVZ6dv-d3=9Vt5&6dmP2L*B=V4&j
z2{kXAm4QJ)fPrB?Hzd8~faH<PD@EhiqVZdye9&e%kbCEY%wu2xm)s!!7N|VPNKk&=
z#mc~tAj81$2x|XDRt5$KCPaP&jgNrTf-p$^H#GgMYzzz^6c`wqm>}+zMyg^!>ebj7
z7!=qM>B|yL-j9ueVFNn@18Cd~<i2<``Ajr^B^v|70tE&J&=wMq`W`k0h5&g;{S4yI
zVq;)%U}0bYoty&VZvg4%W?%q~D}(s^LGEEj#P>OnJjip<{CgE7&%nR{s=q<y#cMSA
z&mehj1_scWA;>&tc1Yb1s)Im$33djC35*O3psj!)z6Lu3LjfZqJk61+Tu}HpqVWUJ
z_-SZ-2E?j9hWL2UdcF8~Jrgq{OJfGeBxSs7NW4o?nP*;FzI$p3Owcd21hn$czn~Z<
z;#!hXlAoUw4-!H$$iU1H$y`%QBO_$4g^@W!T4qi`JZRpMp}3?dxu6o{qV&{~_~P_<
z(9~=^Xk`<0$s>5hV?1oRSqO9`pA&eY3Ur<nw9L*gza%rQG9=%%BC~`cKE5<1H760a
zq7o$UnU`6@P@J6<Ur<^CHqxyqHPtUAvly~Afgv|FH#fg5mBBG3v7jWi$O$x)0khN>
zJf9EN74Mms0-7&Q^-WF5ObjkbEJ=lk2d9<<q!wl7r(`CFWag$8F_h*NrKW@Co{Qr1
zzySw!EM!vGxhNH+HKnv52W(t?L3RmLL3mLnVr3_2sV75zaXfgjM0{>)E<;jjW==|c
zNd+u;z*DwRPXvXyq$ZW7`=pko=0HsY`5iKY%#dA@0h+XqPlni?omP~Z$^cr1R+^Wb
z8V_Fm1Tz$Ql_G3)YH(g=TAGnlWl3tWTTy;4DC|&T0pc<D)Dovk&{8%?u=oeZJEo+>
zLxQ9L6#l6d1&Mhn@u0Oo4CRU0sqv)+@dZWspowFK)RK&N&^nIzlA^>s$XZu;%)1pO
zrbE05vlTp_9`7IO3APFx4j@NC6fwldgQt(;lQXj8K`U*b;o+BB5|CX2j#&m*uv4Jw
zK?`f+{e$Cu^I^`7hlYA_b`mHGK*0r$f$ZGW-1y|g<cw5^0&ucQ&M&Bphxm;FC064>
zYd7OVygdWreLbDQ={*q^)sP@_Oi3vUPAy>oWiD`}#Dl^qF%On}p{hV@KQh2}6_n=W
zFu1^y4%GdLDJk)w^%g}4kGiCmIp^dTr!wT`qsoC2g>z|fNq%l-6*T?&2gkdl=0GC~
z<dS5tPLN9qN{cfXK)Dl=jv<*dskk^Zg&`xgB0i-ww*Wo^9uHo$3|{QQ0GZ-rK+gun
zB}I9lEDsJ(h>`H5SzMA|z)(<>nOBkx^#*)3G;)%JL?6hNkbD7(AyE8*@-#F9gVRKO
zU}<VmrC(|VbOjQqKx2StNiE4pEdrU4TgZ@-nga>C_~OdEWSGUlAl1$ppp};ld8s9t
zY4JrB4COhAdEl&KXc%9T4`vy|G7Z@4=<BsX0a#L$nahxsnU<EBTFg)k_FfvqeeS6x
z&Y-0}c_qP>#U-h^pnSsM9~|$Onwk<1PSNqu=q&>U7g!V6^NA(Mg%@(zWG1HurKSax
zmM~=IWtKqwm7QA25FekMpI2N0FB-8fBnKDFkf=vC)Fl<PQkfwhlrfW23-UAbO5(FY
zD@*cW!39aApa=jb(PYp<5^#zJC7h(nc+hfGu=7EA3{)6HlNu=6N{dsIUBKmaX+cV2
zNost4F*Ho$GxO5&p%DT~wBDIHu!0SgFoIGOQ$RT?CpC|u0Jb7NxDv7`J_IyFU54UF
zkRC{m09gx39gy$^#WmC(kfQLSOi;lNUZW4<2dAcHGsMHa4D~vs5GZCSNG*y_E+~zU
V2QS;oD~T^jEY3zx_nFD53;+T92NnPT

literal 0
HcmV?d00001

diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt_main_dev.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt_main_dev.c
new file mode 100644
index 000000000..5e3058179
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt_main_dev.c
@@ -0,0 +1,1004 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+    Module Name:
+    rt_main_dev.c
+
+    Abstract:
+    Create and register network interface.
+
+    Revision History:
+    Who         When            What
+    --------    ----------      ----------------------------------------------
+*/
+
+#include "rt_config.h"
+
+
+#ifdef CONFIG_APSTA_MIXED_SUPPORT
+UINT32 CW_MAX_IN_BITS;
+#endif // CONFIG_APSTA_MIXED_SUPPORT //
+
+/*---------------------------------------------------------------------*/
+/* Private Variables Used                                              */
+/*---------------------------------------------------------------------*/
+
+PSTRING mac = "";		   // default 00:00:00:00:00:00
+PSTRING hostname = "";		   // default CMPC
+#if LINUX_VERSION_CODE <= KERNEL_VERSION(2,6,12)
+MODULE_PARM (mac, "s");
+#else
+module_param (mac, charp, 0);
+#endif
+MODULE_PARM_DESC (mac, "rt28xx: wireless mac addr");
+
+#ifdef OS_ABL_SUPPORT
+UCHAR ZERO_MAC_ADDR[MAC_ADDR_LEN]  = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
+#endif // OS_ABL_SUPPORT //
+
+
+/*---------------------------------------------------------------------*/
+/* Prototypes of Functions Used                                        */
+/*---------------------------------------------------------------------*/
+
+// public function prototype
+int rt28xx_close(IN struct net_device *net_dev);
+int rt28xx_open(struct net_device *net_dev);
+
+// private function prototype
+static INT rt28xx_send_packets(IN struct sk_buff *skb_p, IN struct net_device *net_dev);
+
+
+static struct net_device_stats *RT28xx_get_ether_stats(
+    IN  struct net_device *net_dev);
+
+/*
+========================================================================
+Routine Description:
+    Close raxx interface.
+
+Arguments:
+	*net_dev			the raxx interface pointer
+
+Return Value:
+    0					Open OK
+	otherwise			Open Fail
+
+Note:
+	1. if open fail, kernel will not call the close function.
+	2. Free memory for
+		(1) Mlme Memory Handler:		MlmeHalt()
+		(2) TX & RX:					RTMPFreeTxRxRingMemory()
+		(3) BA Reordering: 				ba_reordering_resource_release()
+========================================================================
+*/
+int MainVirtualIF_close(IN struct net_device *net_dev)
+{
+    RTMP_ADAPTER *pAd = NULL;
+
+	GET_PAD_FROM_NET_DEV(pAd, net_dev);	
+
+	// Sanity check for pAd
+	if (pAd == NULL)
+		return 0; // close ok
+
+	netif_carrier_off(pAd->net_dev);
+	netif_stop_queue(pAd->net_dev);
+
+
+
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+		BOOLEAN 		Cancelled;
+#ifdef QOS_DLS_SUPPORT
+		// send DLS-TEAR_DOWN message, 
+		if (pAd->CommonCfg.bDLSCapable)
+		{
+			UCHAR i;
+
+			// tear down local dls table entry
+			for (i=0; i<MAX_NUM_OF_INIT_DLS_ENTRY; i++)
+			{
+				if (pAd->StaCfg.DLSEntry[i].Valid && (pAd->StaCfg.DLSEntry[i].Status == DLS_FINISH))
+				{
+					RTMPSendDLSTearDownFrame(pAd, pAd->StaCfg.DLSEntry[i].MacAddr);
+					pAd->StaCfg.DLSEntry[i].Status	= DLS_NONE;
+					pAd->StaCfg.DLSEntry[i].Valid	= FALSE;
+				}
+			}
+
+			// tear down peer dls table entry
+			for (i=MAX_NUM_OF_INIT_DLS_ENTRY; i<MAX_NUM_OF_DLS_ENTRY; i++)
+			{
+				if (pAd->StaCfg.DLSEntry[i].Valid && (pAd->StaCfg.DLSEntry[i].Status == DLS_FINISH))
+				{
+					RTMPSendDLSTearDownFrame(pAd, pAd->StaCfg.DLSEntry[i].MacAddr);
+					pAd->StaCfg.DLSEntry[i].Status = DLS_NONE;
+					pAd->StaCfg.DLSEntry[i].Valid	= FALSE;
+				}
+			}
+			RTMP_MLME_HANDLER(pAd);
+		}
+#endif // QOS_DLS_SUPPORT //
+
+		if (INFRA_ON(pAd) &&
+			(!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_NIC_NOT_EXIST)))
+		{
+			MLME_DISASSOC_REQ_STRUCT	DisReq;
+			MLME_QUEUE_ELEM *MsgElem = (MLME_QUEUE_ELEM *) kmalloc(sizeof(MLME_QUEUE_ELEM), MEM_ALLOC_FLAG);
+    
+			if (MsgElem)
+			{
+			COPY_MAC_ADDR(DisReq.Addr, pAd->CommonCfg.Bssid);
+			DisReq.Reason =  REASON_DEAUTH_STA_LEAVING;
+
+			MsgElem->Machine = ASSOC_STATE_MACHINE;
+			MsgElem->MsgType = MT2_MLME_DISASSOC_REQ;
+			MsgElem->MsgLen = sizeof(MLME_DISASSOC_REQ_STRUCT);
+			NdisMoveMemory(MsgElem->Msg, &DisReq, sizeof(MLME_DISASSOC_REQ_STRUCT));
+
+			// Prevent to connect AP again in STAMlmePeriodicExec
+			pAd->MlmeAux.AutoReconnectSsidLen= 32;
+			NdisZeroMemory(pAd->MlmeAux.AutoReconnectSsid, pAd->MlmeAux.AutoReconnectSsidLen);
+
+			pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_OID_DISASSOC;
+			MlmeDisassocReqAction(pAd, MsgElem);
+			kfree(MsgElem);
+			}
+			
+			RTMPusecDelay(1000);
+		}
+
+		RTMPCancelTimer(&pAd->StaCfg.StaQuickResponeForRateUpTimer, &Cancelled);
+		RTMPCancelTimer(&pAd->StaCfg.WpaDisassocAndBlockAssocTimer, &Cancelled);
+
+#ifdef WPA_SUPPLICANT_SUPPORT
+#ifndef NATIVE_WPA_SUPPLICANT_SUPPORT
+		// send wireless event to wpa_supplicant for infroming interface down.
+		RtmpOSWrielessEventSend(pAd, IWEVCUSTOM, RT_INTERFACE_DOWN, NULL, NULL, 0);
+#endif // NATIVE_WPA_SUPPLICANT_SUPPORT //
+
+		if (pAd->StaCfg.pWpsProbeReqIe)
+		{
+			kfree(pAd->StaCfg.pWpsProbeReqIe);
+			pAd->StaCfg.pWpsProbeReqIe = NULL;
+			pAd->StaCfg.WpsProbeReqIeLen = 0;
+		}
+
+		if (pAd->StaCfg.pWpaAssocIe)
+		{
+			kfree(pAd->StaCfg.pWpaAssocIe);
+			pAd->StaCfg.pWpaAssocIe = NULL;
+			pAd->StaCfg.WpaAssocIeLen = 0;
+		}
+#endif // WPA_SUPPLICANT_SUPPORT //
+
+
+	}
+#endif // CONFIG_STA_SUPPORT //
+
+	VIRTUAL_IF_DOWN(pAd);
+
+	RT_MOD_DEC_USE_COUNT();
+
+	return 0; // close ok
+}
+
+/*
+========================================================================
+Routine Description:
+    Open raxx interface.
+
+Arguments:
+	*net_dev			the raxx interface pointer
+
+Return Value:
+    0					Open OK
+	otherwise			Open Fail
+
+Note:
+	1. if open fail, kernel will not call the close function.
+	2. Free memory for
+		(1) Mlme Memory Handler:		MlmeHalt()
+		(2) TX & RX:					RTMPFreeTxRxRingMemory()
+		(3) BA Reordering: 				ba_reordering_resource_release()
+========================================================================
+*/
+int MainVirtualIF_open(IN struct net_device *net_dev)
+{
+    RTMP_ADAPTER *pAd = NULL;
+
+	GET_PAD_FROM_NET_DEV(pAd, net_dev);	
+
+	// Sanity check for pAd
+	if (pAd == NULL)
+		return 0; // close ok
+
+	if (VIRTUAL_IF_UP(pAd) != 0)
+		return -1;
+
+	// increase MODULE use count
+	RT_MOD_INC_USE_COUNT();
+
+	netif_start_queue(net_dev);
+	netif_carrier_on(net_dev);
+	netif_wake_queue(net_dev);
+
+	return 0;
+}
+
+/*
+========================================================================
+Routine Description:
+    Close raxx interface.
+
+Arguments:
+	*net_dev			the raxx interface pointer
+
+Return Value:
+    0					Open OK
+	otherwise			Open Fail
+
+Note:
+	1. if open fail, kernel will not call the close function.
+	2. Free memory for
+		(1) Mlme Memory Handler:		MlmeHalt()
+		(2) TX & RX:					RTMPFreeTxRxRingMemory()
+		(3) BA Reordering: 				ba_reordering_resource_release()
+========================================================================
+*/
+int rt28xx_close(IN PNET_DEV dev)
+{
+	struct net_device * net_dev = (struct net_device *)dev;
+    RTMP_ADAPTER	*pAd = NULL;
+	BOOLEAN 		Cancelled;
+	UINT32			i = 0;
+
+	GET_PAD_FROM_NET_DEV(pAd, net_dev);	
+
+	DBGPRINT(RT_DEBUG_TRACE, ("===> rt28xx_close\n"));
+
+	Cancelled = FALSE;
+	// Sanity check for pAd
+	if (pAd == NULL)
+		return 0; // close ok
+
+
+
+#ifdef WDS_SUPPORT
+	WdsDown(pAd);
+#endif // WDS_SUPPORT //
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+#ifdef PCIE_PS_SUPPORT
+		RTMPPCIeLinkCtrlValueRestore(pAd, RESTORE_CLOSE);
+#endif // PCIE_PS_SUPPORT //
+
+		// If dirver doesn't wake up firmware here,
+		// NICLoadFirmware will hang forever when interface is up again.
+		if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_DOZE))
+        {      
+		    AsicForceWakeup(pAd, TRUE);
+        }
+
+
+		MlmeRadioOff(pAd);
+#ifdef RTMP_MAC_PCI
+		pAd->bPCIclkOff = FALSE;    
+#endif // RTMP_MAC_PCI //
+	}
+#endif // CONFIG_STA_SUPPORT //
+
+	RTMP_SET_FLAG(pAd, fRTMP_ADAPTER_HALT_IN_PROGRESS);
+
+	for (i = 0 ; i < NUM_OF_TX_RING; i++)
+	{
+		while (pAd->DeQueueRunning[i] == TRUE)
+		{
+			DBGPRINT(RT_DEBUG_TRACE, ("Waiting for TxQueue[%d] done..........\n", i));
+			RTMPusecDelay(1000);
+		}
+	}
+	
+
+
+	// Stop Mlme state machine
+	MlmeHalt(pAd);
+	
+	// Close net tasklets
+	RtmpNetTaskExit(pAd);
+
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+		MacTableReset(pAd);
+	}
+#endif // CONFIG_STA_SUPPORT //
+
+
+	MeasureReqTabExit(pAd);
+	TpcReqTabExit(pAd);
+
+
+	// Close kernel threads
+	RtmpMgmtTaskExit(pAd);
+
+#ifdef RTMP_MAC_PCI
+	{
+			BOOLEAN brc;
+			//	ULONG			Value;
+
+			if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_ACTIVE))
+			{
+				RTMP_ASIC_INTERRUPT_DISABLE(pAd);
+			}
+
+			// Receive packets to clear DMA index after disable interrupt. 
+			//RTMPHandleRxDoneInterrupt(pAd);
+			// put to radio off to save power when driver unload.  After radiooff, can't write /read register.  So need to finish all 
+			// register access before Radio off.
+
+
+			brc=RT28xxPciAsicRadioOff(pAd, RTMP_HALT, 0);
+
+//In  solution 3 of 3090F, the bPCIclkOff will be set to TRUE after calling RT28xxPciAsicRadioOff
+#ifdef PCIE_PS_SUPPORT
+			pAd->bPCIclkOff = FALSE;    
+#endif // PCIE_PS_SUPPORT //
+
+			if (brc==FALSE)
+			{
+				DBGPRINT(RT_DEBUG_ERROR,("%s call RT28xxPciAsicRadioOff fail !!\n", __FUNCTION__)); 
+			}
+	}
+	
+
+/*
+	if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_ACTIVE))
+	{
+		RTMP_ASIC_INTERRUPT_DISABLE(pAd);
+	}
+
+	// Disable Rx, register value supposed will remain after reset
+	NICIssueReset(pAd);
+*/
+#endif // RTMP_MAC_PCI //
+
+	// Free IRQ
+	if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_IN_USE))
+	{
+#ifdef RTMP_MAC_PCI
+		// Deregister interrupt function
+		RtmpOSIRQRelease(net_dev);
+#endif // RTMP_MAC_PCI //
+		RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_IN_USE);
+	}
+
+	// Free Ring or USB buffers
+	RTMPFreeTxRxRingMemory(pAd);
+
+	RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_HALT_IN_PROGRESS);
+
+#ifdef DOT11_N_SUPPORT
+	// Free BA reorder resource
+	ba_reordering_resource_release(pAd);
+#endif // DOT11_N_SUPPORT //
+	
+#ifdef CONFIG_STA_SUPPORT
+#endif // CONFIG_STA_SUPPORT //
+
+	RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_START_UP);
+
+/*+++Modify by woody to solve the bulk fail+++*/
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+#ifdef RT35xx
+		if (IS_RT3572(pAd))
+		{
+			RT30xxWriteRFRegister(pAd, RF_R08, 0x00);
+			AsicSendCommandToMcu(pAd, 0x30, 0xff, 0xff, 0x02);
+		}
+#endif // RT35xx //
+	}
+#endif // CONFIG_STA_SUPPORT //
+
+#ifdef VENDOR_FEATURE2_SUPPORT
+	printk("Number of Packet Allocated = %d\n", pAd->NumOfPktAlloc);
+	printk("Number of Packet Freed = %d\n", pAd->NumOfPktFree);
+#endif // VENDOR_FEATURE2_SUPPORT //
+
+	DBGPRINT(RT_DEBUG_TRACE, ("<=== rt28xx_close\n"));
+	return 0; // close ok
+} /* End of rt28xx_close */
+
+
+/*
+========================================================================
+Routine Description:
+    Open raxx interface.
+
+Arguments:
+	*net_dev			the raxx interface pointer
+
+Return Value:
+    0					Open OK
+	otherwise			Open Fail
+
+Note:
+========================================================================
+*/
+int rt28xx_open(IN PNET_DEV dev)
+{				 
+	struct net_device * net_dev = (struct net_device *)dev;
+	PRTMP_ADAPTER pAd = NULL;
+	int retval = 0;
+ 	//POS_COOKIE pObj;
+
+	GET_PAD_FROM_NET_DEV(pAd, net_dev);	
+
+	// Sanity check for pAd
+	if (pAd == NULL)
+	{
+		/* if 1st open fail, pAd will be free;
+		   So the net_dev->priv will be NULL in 2rd open */
+		return -1;
+	}
+
+#ifdef CONFIG_APSTA_MIXED_SUPPORT
+	if (pAd->OpMode == OPMODE_AP)
+	{
+		CW_MAX_IN_BITS = 6;
+	}
+	else if (pAd->OpMode == OPMODE_STA)
+	{
+		CW_MAX_IN_BITS = 10;
+	}
+#endif // CONFIG_APSTA_MIXED_SUPPORT //
+
+#if WIRELESS_EXT >= 12
+	if (net_dev->priv_flags == INT_MAIN) 
+	{
+#ifdef CONFIG_APSTA_MIXED_SUPPORT
+		if (pAd->OpMode == OPMODE_AP)
+			net_dev->wireless_handlers = (struct iw_handler_def *) &rt28xx_ap_iw_handler_def;
+#endif // CONFIG_APSTA_MIXED_SUPPORT //
+#ifdef CONFIG_STA_SUPPORT
+		if (pAd->OpMode == OPMODE_STA)
+			net_dev->wireless_handlers = (struct iw_handler_def *) &rt28xx_iw_handler_def;
+#endif // CONFIG_STA_SUPPORT //
+	}
+#endif // WIRELESS_EXT >= 12 //
+
+	// Request interrupt service routine for PCI device
+	// register the interrupt routine with the os
+	RtmpOSIRQRequest(net_dev);
+
+
+	// Init IRQ parameters stored in pAd
+	RTMP_IRQ_INIT(pAd);
+	
+	// Chip & other init
+	if (rt28xx_init(pAd, mac, hostname) == FALSE)
+		goto err;
+
+#ifdef RT_CFG80211_SUPPORT
+	RT_CFG80211_REINIT(pAd);
+	RT_CFG80211_CRDA_REG_RULE_APPLY(pAd);
+#endif // RT_CFG80211_SUPPORT //
+
+#ifdef CONFIG_STA_SUPPORT
+#endif // CONFIG_STA_SUPPORT //
+
+	// Enable Interrupt
+	RTMP_IRQ_ENABLE(pAd);
+
+	// Now Enable RxTx
+	RTMPEnableRxTx(pAd);
+	RTMP_SET_FLAG(pAd, fRTMP_ADAPTER_START_UP);
+
+	{
+	UINT32 reg = 0;
+	RTMP_IO_READ32(pAd, 0x1300, &reg);  // clear garbage interrupts
+	printk("0x1300 = %08x\n", reg);
+	}
+
+	{
+//	u32 reg;
+//	UINT8  byte;
+//	u16 tmp;
+
+//	RTMP_IO_READ32(pAd, XIFS_TIME_CFG, &reg);
+
+//	tmp = 0x0805;
+//	reg  = (reg & 0xffff0000) | tmp;
+//	RTMP_IO_WRITE32(pAd, XIFS_TIME_CFG, reg);
+
+	}
+
+
+#ifdef CONFIG_STA_SUPPORT
+#ifdef PCIE_PS_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+        RTMPInitPCIeLinkCtrlValue(pAd);
+#endif // PCIE_PS_SUPPORT //
+
+
+#endif // CONFIG_STA_SUPPORT //
+
+
+#ifdef VENDOR_FEATURE2_SUPPORT
+	printk("Number of Packet Allocated in open = %d\n", pAd->NumOfPktAlloc);
+	printk("Number of Packet Freed in open = %d\n", pAd->NumOfPktFree);
+#endif // VENDOR_FEATURE2_SUPPORT //
+
+	return (retval);
+
+err:
+//+++Add by shiang, move from rt28xx_init() to here.
+	RtmpOSIRQRelease(net_dev);
+//---Add by shiang, move from rt28xx_init() to here.
+	return (-1);
+} /* End of rt28xx_open */
+
+
+PNET_DEV RtmpPhyNetDevInit(
+	IN RTMP_ADAPTER *pAd,
+	IN RTMP_OS_NETDEV_OP_HOOK *pNetDevHook)
+{
+	struct net_device	*net_dev = NULL;
+//	NDIS_STATUS		Status;
+	
+	net_dev = RtmpOSNetDevCreate(pAd, INT_MAIN, 0, sizeof(PRTMP_ADAPTER), INF_MAIN_DEV_NAME);
+	if (net_dev == NULL)
+	{
+		printk("RtmpPhyNetDevInit(): creation failed for main physical net device!\n");
+		return NULL;
+	}
+
+	NdisZeroMemory((unsigned char *)pNetDevHook, sizeof(RTMP_OS_NETDEV_OP_HOOK));
+	pNetDevHook->open = MainVirtualIF_open;
+	pNetDevHook->stop = MainVirtualIF_close;
+	pNetDevHook->xmit = rt28xx_send_packets;
+#ifdef IKANOS_VX_1X0
+	pNetDevHook->xmit = IKANOS_DataFramesTx;
+#endif // IKANOS_VX_1X0 //
+	pNetDevHook->ioctl = rt28xx_ioctl;
+	pNetDevHook->priv_flags = INT_MAIN;
+	pNetDevHook->get_stats = RT28xx_get_ether_stats;
+
+	pNetDevHook->needProtcted = FALSE;
+
+#if (WIRELESS_EXT < 21) && (WIRELESS_EXT >= 12)
+	pNetDevHook->get_wstats = rt28xx_get_wireless_stats;
+#endif
+
+#ifdef CONFIG_STA_SUPPORT
+#if WIRELESS_EXT >= 12
+	if (pAd->OpMode == OPMODE_STA)
+	{
+		pNetDevHook->iw_handler = (void *)&rt28xx_iw_handler_def;
+	}
+#endif //WIRELESS_EXT >= 12
+#endif // CONFIG_STA_SUPPORT //
+
+#ifdef CONFIG_APSTA_MIXED_SUPPORT
+#if WIRELESS_EXT >= 12
+	if (pAd->OpMode == OPMODE_AP)
+	{
+		pNetDevHook->iw_handler = &rt28xx_ap_iw_handler_def;
+	}
+#endif //WIRELESS_EXT >= 12
+#endif // CONFIG_APSTA_MIXED_SUPPORT //
+
+	RTMP_OS_NETDEV_SET_PRIV(net_dev, pAd);
+	pAd->net_dev = net_dev;
+	
+
+
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)
+	SET_MODULE_OWNER(net_dev);
+#endif 
+
+	netif_stop_queue(net_dev);
+
+	return net_dev;
+	
+}
+
+
+/*
+========================================================================
+Routine Description:
+    The entry point for Linux kernel sent packet to our driver.
+
+Arguments:
+    sk_buff *skb		the pointer refer to a sk_buffer.
+
+Return Value:
+    0					
+
+Note:
+	This function is the entry point of Tx Path for Os delivery packet to 
+	our driver. You only can put OS-depened & STA/AP common handle procedures 
+	in here.
+========================================================================
+*/
+int rt28xx_packet_xmit(struct sk_buff *skb)
+{
+	struct net_device *net_dev = skb->dev;
+	PRTMP_ADAPTER pAd = NULL;
+	int status = 0;
+	PNDIS_PACKET pPacket = (PNDIS_PACKET) skb;
+
+	GET_PAD_FROM_NET_DEV(pAd, net_dev);	
+
+	/* RT2870STA does this in RTMPSendPackets() */
+#ifdef RALINK_ATE
+	if (ATE_ON(pAd))
+	{
+		RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_RESOURCES);
+		return 0;
+	}
+#endif // RALINK_ATE //
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+		// Drop send request since we are in monitor mode
+		if (MONITOR_ON(pAd))
+		{
+			RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_FAILURE);
+			goto done;
+		}
+	}
+#endif // CONFIG_STA_SUPPORT //
+
+        // EapolStart size is 18
+	if (skb->len < 14)
+	{
+		//printk("bad packet size: %d\n", pkt->len);
+		hex_dump("bad packet", skb->data, skb->len);
+		RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_FAILURE);
+		goto done;
+	}
+
+
+
+	RTMP_SET_PACKET_5VT(pPacket, 0);
+//	MiniportMMRequest(pAd, pkt->data, pkt->len);
+#ifdef CONFIG_5VT_ENHANCE
+    if (*(int*)(skb->cb) == BRIDGE_TAG) {
+		RTMP_SET_PACKET_5VT(pPacket, 1);
+    }
+#endif
+
+
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+
+		STASendPackets((NDIS_HANDLE)pAd, (PPNDIS_PACKET) &pPacket, 1);
+	}
+
+#endif // CONFIG_STA_SUPPORT //
+
+	status = 0;
+done:
+			   
+	return status;
+}
+
+
+/*
+========================================================================
+Routine Description:
+    Send a packet to WLAN.
+
+Arguments:
+    skb_p           points to our adapter
+    dev_p           which WLAN network interface
+
+Return Value:
+    0: transmit successfully
+    otherwise: transmit fail
+
+Note:
+========================================================================
+*/
+static int rt28xx_send_packets(
+	IN struct sk_buff 		*skb_p, 
+	IN struct net_device 	*net_dev)
+{
+	RTMP_ADAPTER *pAd = NULL;
+
+	GET_PAD_FROM_NET_DEV(pAd, net_dev);	
+
+	if (!(RTMP_OS_NETDEV_STATE_RUNNING(net_dev)))
+	{
+		RELEASE_NDIS_PACKET(pAd, (PNDIS_PACKET)skb_p, NDIS_STATUS_FAILURE);
+		return 0;
+	}
+
+	NdisZeroMemory((PUCHAR)&skb_p->cb[CB_OFF], 15);
+	RTMP_SET_PACKET_NET_DEVICE_MBSSID(skb_p, MAIN_MBSSID);
+
+	MEM_DBG_PKT_ALLOC_INC(pAd);
+
+	return rt28xx_packet_xmit(skb_p);
+}
+
+
+#if WIRELESS_EXT >= 12
+// This function will be called when query /proc
+struct iw_statistics *rt28xx_get_wireless_stats(
+    IN struct net_device *net_dev)
+{
+	PRTMP_ADAPTER pAd = NULL;
+
+	GET_PAD_FROM_NET_DEV(pAd, net_dev);	
+
+
+	DBGPRINT(RT_DEBUG_TRACE, ("rt28xx_get_wireless_stats --->\n"));
+
+	//check if the interface is down
+	if(!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_IN_USE))
+		return NULL;	
+	
+	pAd->iw_stats.status = 0; // Status - device dependent for now
+
+	// link quality
+#ifdef CONFIG_STA_SUPPORT
+	if (pAd->OpMode == OPMODE_STA)
+		pAd->iw_stats.qual.qual = ((pAd->Mlme.ChannelQuality * 12)/10 + 10);
+#endif // CONFIG_STA_SUPPORT //
+
+	if(pAd->iw_stats.qual.qual > 100)
+		pAd->iw_stats.qual.qual = 100;
+
+#ifdef CONFIG_STA_SUPPORT
+	if (pAd->OpMode == OPMODE_STA)
+	{
+		pAd->iw_stats.qual.level =
+			RTMPMaxRssi(pAd, pAd->StaCfg.RssiSample.LastRssi0,
+							pAd->StaCfg.RssiSample.LastRssi1,
+							pAd->StaCfg.RssiSample.LastRssi2);
+	}
+#endif // CONFIG_STA_SUPPORT //
+
+	pAd->iw_stats.qual.noise = pAd->BbpWriteLatch[66]; // noise level (dBm)
+	
+	pAd->iw_stats.qual.noise += 256 - 143;
+	pAd->iw_stats.qual.updated = 1;     // Flags to know if updated
+#ifdef IW_QUAL_DBM
+	pAd->iw_stats.qual.updated |= IW_QUAL_DBM;	// Level + Noise are dBm
+#endif // IW_QUAL_DBM //
+
+	pAd->iw_stats.discard.nwid = 0;     // Rx : Wrong nwid/essid
+	pAd->iw_stats.miss.beacon = 0;      // Missed beacons/superframe
+	
+	DBGPRINT(RT_DEBUG_TRACE, ("<--- rt28xx_get_wireless_stats\n"));
+	return &pAd->iw_stats;
+}
+#endif // WIRELESS_EXT //
+
+
+void tbtt_tasklet(unsigned long data)
+{
+//#define MAX_TX_IN_TBTT		(16)
+
+}
+
+INT rt28xx_ioctl(
+	IN	PNET_DEV	net_dev, 
+	IN	OUT	struct ifreq	*rq, 
+	IN	INT					cmd)
+{
+	RTMP_ADAPTER	*pAd = NULL;
+	INT				ret = 0;
+
+	GET_PAD_FROM_NET_DEV(pAd, net_dev);	
+
+	if (pAd == NULL)
+	{
+		/* if 1st open fail, pAd will be free;
+		   So the net_dev->priv will be NULL in 2rd open */
+		return -ENETDOWN;
+	}
+
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+		ret = rt28xx_sta_ioctl(net_dev, rq, cmd);
+	}
+#endif // CONFIG_STA_SUPPORT //
+
+	return ret;
+}
+
+
+/*
+    ========================================================================
+
+    Routine Description:
+        return ethernet statistics counter
+
+    Arguments:
+        net_dev                     Pointer to net_device
+
+    Return Value:
+        net_device_stats*
+
+    Note:
+
+    ========================================================================
+*/
+static struct net_device_stats *RT28xx_get_ether_stats(
+    IN  struct net_device *net_dev)
+{
+    RTMP_ADAPTER *pAd = NULL;
+
+	if (net_dev)
+		GET_PAD_FROM_NET_DEV(pAd, net_dev);	
+
+	if (pAd)
+	{
+
+		pAd->stats.rx_packets = pAd->WlanCounters.ReceivedFragmentCount.QuadPart;
+		pAd->stats.tx_packets = pAd->WlanCounters.TransmittedFragmentCount.QuadPart;
+
+		pAd->stats.rx_bytes = pAd->RalinkCounters.ReceivedByteCount;
+		pAd->stats.tx_bytes = pAd->RalinkCounters.TransmittedByteCount;
+
+		pAd->stats.rx_errors = pAd->Counters8023.RxErrors;
+		pAd->stats.tx_errors = pAd->Counters8023.TxErrors;
+
+		pAd->stats.rx_dropped = 0;
+		pAd->stats.tx_dropped = 0;
+
+	    pAd->stats.multicast = pAd->WlanCounters.MulticastReceivedFrameCount.QuadPart;   // multicast packets received
+	    pAd->stats.collisions = pAd->Counters8023.OneCollision + pAd->Counters8023.MoreCollisions;  // Collision packets
+
+	    pAd->stats.rx_length_errors = 0;
+	    pAd->stats.rx_over_errors = pAd->Counters8023.RxNoBuffer;                   // receiver ring buff overflow
+	    pAd->stats.rx_crc_errors = 0;//pAd->WlanCounters.FCSErrorCount;     // recved pkt with crc error
+	    pAd->stats.rx_frame_errors = pAd->Counters8023.RcvAlignmentErrors;          // recv'd frame alignment error
+	    pAd->stats.rx_fifo_errors = pAd->Counters8023.RxNoBuffer;                   // recv'r fifo overrun
+	    pAd->stats.rx_missed_errors = 0;                                            // receiver missed packet
+
+	    // detailed tx_errors
+	    pAd->stats.tx_aborted_errors = 0;
+	    pAd->stats.tx_carrier_errors = 0;
+	    pAd->stats.tx_fifo_errors = 0;
+	    pAd->stats.tx_heartbeat_errors = 0;
+	    pAd->stats.tx_window_errors = 0;
+
+	    // for cslip etc
+	    pAd->stats.rx_compressed = 0;
+	    pAd->stats.tx_compressed = 0;
+		
+		return &pAd->stats;
+	}
+	else
+    	return NULL;
+}
+
+
+BOOLEAN RtmpPhyNetDevExit(
+	IN RTMP_ADAPTER *pAd, 
+	IN PNET_DEV net_dev)
+{
+
+
+
+#ifdef INF_AMAZON_PPA
+	if (ppa_hook_directpath_register_dev_fn && pAd->PPAEnable==TRUE) 
+	{
+		UINT status;
+		status=ppa_hook_directpath_register_dev_fn(&pAd->g_if_id, pAd->net_dev, NULL, PPA_F_DIRECTPATH_DEREGISTER);
+		printk("unregister PPA:g_if_id=%d status=%d\n",pAd->g_if_id,status);
+	}
+	kfree(pAd->pDirectpathCb); 
+#endif // INF_AMAZON_PPA //
+
+	// Unregister network device
+	if (net_dev != NULL)
+	{
+		printk("RtmpOSNetDevDetach(): RtmpOSNetDeviceDetach(), dev->name=%s!\n", net_dev->name);
+		RtmpOSNetDevDetach(net_dev);
+	}
+
+	return TRUE;
+	
+}
+
+
+/*******************************************************************************
+
+	Device IRQ related functions.
+	
+ *******************************************************************************/
+int RtmpOSIRQRequest(IN PNET_DEV pNetDev)
+{
+	struct net_device *net_dev = NULL;
+	PRTMP_ADAPTER pAd = NULL;
+	int retval = 0;
+
+	net_dev = pNetDev;
+		
+	GET_PAD_FROM_NET_DEV(pAd, pNetDev);	
+	
+	ASSERT(pAd);
+	
+#ifdef RTMP_PCI_SUPPORT
+	if (pAd->infType == RTMP_DEV_INF_PCI || pAd->infType == RTMP_DEV_INF_PCIE)
+	{
+		POS_COOKIE _pObj = (POS_COOKIE)(pAd->OS_Cookie);
+		RTMP_MSI_ENABLE(pAd);	
+		retval = request_irq(_pObj->pci_dev->irq,  rt2860_interrupt, SA_SHIRQ, (net_dev)->name, (net_dev));
+		if (retval != 0) 
+			printk("RT2860: request_irq  ERROR(%d)\n", retval);
+	}
+#endif // RTMP_PCI_SUPPORT //
+
+
+	return retval; 
+	
+}
+
+
+int RtmpOSIRQRelease(IN PNET_DEV pNetDev)
+{
+	struct net_device *net_dev = pNetDev;
+	PRTMP_ADAPTER pAd = NULL;
+
+	GET_PAD_FROM_NET_DEV(pAd, net_dev);	
+	
+	ASSERT(pAd);
+	
+#ifdef RTMP_PCI_SUPPORT
+	if (pAd->infType == RTMP_DEV_INF_PCI || pAd->infType == RTMP_DEV_INF_PCIE)
+	{ 
+		POS_COOKIE pObj = (POS_COOKIE)(pAd->OS_Cookie);
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
+		synchronize_irq(pObj->pci_dev->irq);
+#endif
+		free_irq(pObj->pci_dev->irq, (net_dev));
+		RTMP_MSI_DISABLE(pAd);
+	}
+#endif // RTMP_PCI_SUPPORT //
+
+
+	return 0;
+}
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt_main_dev.o b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt_main_dev.o
new file mode 100644
index 0000000000000000000000000000000000000000..a91f05d1c544a94980f14513ce7e016f6529182d
GIT binary patch
literal 8520
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

literal 0
HcmV?d00001

diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt_pci_rbus.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt_pci_rbus.c
new file mode 100644
index 000000000..466966e3a
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt_pci_rbus.c
@@ -0,0 +1,928 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+    Module Name:
+    rt_pci_rbus.c
+
+    Abstract:
+    Create and register network interface.
+
+    Revision History:
+    Who         When            What
+    --------    ----------      ----------------------------------------------
+*/
+
+#include <rt_config.h>
+#include <linux/pci.h>
+
+
+IRQ_HANDLE_TYPE
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19))
+rt2860_interrupt(int irq, void *dev_instance);
+#else
+rt2860_interrupt(int irq, void *dev_instance, struct pt_regs *regs);
+#endif
+
+
+static void rx_done_tasklet(unsigned long data);
+static void mgmt_dma_done_tasklet(unsigned long data);
+static void ac0_dma_done_tasklet(unsigned long data);
+static void ac1_dma_done_tasklet(unsigned long data);
+static void ac2_dma_done_tasklet(unsigned long data);
+static void ac3_dma_done_tasklet(unsigned long data);
+static void hcca_dma_done_tasklet(unsigned long data);
+static void fifo_statistic_full_tasklet(unsigned long data);
+
+
+
+/*---------------------------------------------------------------------*/
+/* Symbol & Macro Definitions                                          */
+/*---------------------------------------------------------------------*/
+#define RT2860_INT_RX_DLY				(1<<0)		// bit 0	
+#define RT2860_INT_TX_DLY				(1<<1)		// bit 1
+#define RT2860_INT_RX_DONE				(1<<2)		// bit 2
+#define RT2860_INT_AC0_DMA_DONE			(1<<3)		// bit 3
+#define RT2860_INT_AC1_DMA_DONE			(1<<4)		// bit 4
+#define RT2860_INT_AC2_DMA_DONE			(1<<5)		// bit 5
+#define RT2860_INT_AC3_DMA_DONE			(1<<6)		// bit 6
+#define RT2860_INT_HCCA_DMA_DONE		(1<<7)		// bit 7
+#define RT2860_INT_MGMT_DONE			(1<<8)		// bit 8
+#ifdef TONE_RADAR_DETECT_SUPPORT
+#define RT2860_INT_TONE_RADAR			(1<<20)		// bit 20
+#endif // TONE_RADAR_DETECT_SUPPORT //
+
+#define INT_RX			RT2860_INT_RX_DONE
+
+#define INT_AC0_DLY		(RT2860_INT_AC0_DMA_DONE) //| RT2860_INT_TX_DLY)
+#define INT_AC1_DLY		(RT2860_INT_AC1_DMA_DONE) //| RT2860_INT_TX_DLY)
+#define INT_AC2_DLY		(RT2860_INT_AC2_DMA_DONE) //| RT2860_INT_TX_DLY)
+#define INT_AC3_DLY		(RT2860_INT_AC3_DMA_DONE) //| RT2860_INT_TX_DLY)
+#define INT_HCCA_DLY 	(RT2860_INT_HCCA_DMA_DONE) //| RT2860_INT_TX_DLY)
+#define INT_MGMT_DLY	RT2860_INT_MGMT_DONE
+#ifdef TONE_RADAR_DETECT_SUPPORT
+#define INT_TONE_RADAR	(RT2860_INT_TONE_RADAR)
+#endif // TONE_RADAR_DETECT_SUPPORT //
+
+
+/***************************************************************************
+  *
+  *	Interface-depended memory allocation/Free related procedures.
+  *		Mainly for Hardware TxDesc/RxDesc/MgmtDesc, DMA Memory for TxData/RxData, etc.,
+  *
+  **************************************************************************/
+
+
+
+VOID Invalid_Remaining_Packet(
+	IN	PRTMP_ADAPTER pAd,
+	IN	 ULONG VirtualAddress)
+{
+	NDIS_PHYSICAL_ADDRESS PhysicalAddress;
+
+	PhysicalAddress = PCI_MAP_SINGLE(pAd, (void *)(VirtualAddress+1600), RX_BUFFER_NORMSIZE-1600, -1, PCI_DMA_FROMDEVICE);
+}
+
+
+NDIS_STATUS RtmpNetTaskInit(IN RTMP_ADAPTER *pAd)
+{
+	POS_COOKIE pObj;
+
+	pObj = (POS_COOKIE) pAd->OS_Cookie;
+	
+	tasklet_init(&pObj->rx_done_task, rx_done_tasklet, (unsigned long)pAd);
+	tasklet_init(&pObj->mgmt_dma_done_task, mgmt_dma_done_tasklet, (unsigned long)pAd);
+	tasklet_init(&pObj->ac0_dma_done_task, ac0_dma_done_tasklet, (unsigned long)pAd);
+	tasklet_init(&pObj->ac1_dma_done_task, ac1_dma_done_tasklet, (unsigned long)pAd);
+	tasklet_init(&pObj->ac2_dma_done_task, ac2_dma_done_tasklet, (unsigned long)pAd);
+	tasklet_init(&pObj->ac3_dma_done_task, ac3_dma_done_tasklet, (unsigned long)pAd);
+	tasklet_init(&pObj->hcca_dma_done_task, hcca_dma_done_tasklet, (unsigned long)pAd);
+	tasklet_init(&pObj->tbtt_task, tbtt_tasklet, (unsigned long)pAd);
+	tasklet_init(&pObj->fifo_statistic_full_task, fifo_statistic_full_tasklet, (unsigned long)pAd);
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+void RtmpNetTaskExit(IN RTMP_ADAPTER *pAd)
+{
+	POS_COOKIE pObj;
+
+	pObj = (POS_COOKIE) pAd->OS_Cookie;
+
+	tasklet_kill(&pObj->rx_done_task);
+	tasklet_kill(&pObj->mgmt_dma_done_task);
+	tasklet_kill(&pObj->ac0_dma_done_task);
+	tasklet_kill(&pObj->ac1_dma_done_task);
+	tasklet_kill(&pObj->ac2_dma_done_task);
+	tasklet_kill(&pObj->ac3_dma_done_task);
+	tasklet_kill(&pObj->hcca_dma_done_task);
+	tasklet_kill(&pObj->tbtt_task);
+	tasklet_kill(&pObj->fifo_statistic_full_task);
+}
+
+
+NDIS_STATUS RtmpMgmtTaskInit(IN RTMP_ADAPTER *pAd)
+{
+	RTMP_OS_TASK *pTask;
+	NDIS_STATUS status;
+
+
+	/* Creat Command Thread */
+	pTask = &pAd->cmdQTask;
+	RtmpOSTaskInit(pTask, "RtmpCmdQTask", pAd);
+	status = RtmpOSTaskAttach(pTask, RTPCICmdThread, (ULONG)pTask);
+	if (status == NDIS_STATUS_FAILURE) 
+	{
+		printk (KERN_WARNING "%s: unable to start RTPCICmdThread\n", RTMP_OS_NETDEV_GET_DEVNAME(pAd->net_dev));
+		return NDIS_STATUS_FAILURE;
+	}
+
+
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+/*
+========================================================================
+Routine Description:
+    Close kernel threads.
+
+Arguments:
+	*pAd				the raxx interface data pointer
+
+Return Value:
+    NONE
+
+Note:
+========================================================================
+*/
+VOID RtmpMgmtTaskExit(
+	IN RTMP_ADAPTER *pAd)
+{
+	INT			ret;
+	RTMP_OS_TASK	*pTask;
+
+	/* Terminate cmdQ thread */
+	pTask = &pAd->cmdQTask;
+#ifdef KTHREAD_SUPPORT
+	if (pTask->kthread_task)
+#else
+	CHECK_PID_LEGALITY(pTask->taskPID)
+#endif
+	{
+		NdisAcquireSpinLock(&pAd->CmdQLock);
+		pAd->CmdQ.CmdQState = RTMP_TASK_STAT_STOPED;
+		NdisReleaseSpinLock(&pAd->CmdQLock);
+		
+		//RTUSBCMDUp(pAd);
+		ret = RtmpOSTaskKill(pTask);
+		if (ret == NDIS_STATUS_FAILURE)
+		{
+			DBGPRINT(RT_DEBUG_ERROR, ("%s: kill task(%s) failed!\n", 
+					RTMP_OS_NETDEV_GET_DEVNAME(pAd->net_dev), pTask->taskName));
+		}
+		pAd->CmdQ.CmdQState = RTMP_TASK_STAT_UNKNOWN;
+	}
+
+
+	return;
+}
+
+
+static inline void rt2860_int_enable(PRTMP_ADAPTER pAd, unsigned int mode)
+{
+	u32 regValue;
+
+	pAd->int_disable_mask &= ~(mode);
+	regValue = pAd->int_enable_reg & ~(pAd->int_disable_mask);		
+	//if (!OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_DOZE))
+	{
+		RTMP_IO_WRITE32(pAd, INT_MASK_CSR, regValue);     // 1:enable
+	}
+	//else
+	//	DBGPRINT(RT_DEBUG_TRACE, ("fOP_STATUS_DOZE !\n"));
+
+	if (regValue != 0)
+		RTMP_SET_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_ACTIVE);
+}
+
+
+static inline void rt2860_int_disable(PRTMP_ADAPTER pAd, unsigned int mode)
+{
+	u32 regValue;
+
+	pAd->int_disable_mask |= mode;
+	regValue = 	pAd->int_enable_reg & ~(pAd->int_disable_mask);
+	RTMP_IO_WRITE32(pAd, INT_MASK_CSR, regValue);     // 0: disable 
+	
+	if (regValue == 0)
+	{
+		RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_ACTIVE);		
+	}
+}
+
+
+/***************************************************************************
+  *
+  *	tasklet related procedures.
+  *
+  **************************************************************************/
+static void mgmt_dma_done_tasklet(unsigned long data)
+{
+	unsigned long flags;
+	PRTMP_ADAPTER pAd = (PRTMP_ADAPTER) data;
+    INT_SOURCE_CSR_STRUC	IntSource;
+	POS_COOKIE pObj;
+	
+	// Do nothing if the driver is starting halt state.
+	// This might happen when timer already been fired before cancel timer with mlmehalt
+	if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_HALT_IN_PROGRESS | fRTMP_ADAPTER_NIC_NOT_EXIST))
+		return;
+	
+    pObj = (POS_COOKIE) pAd->OS_Cookie;
+
+//	printk("mgmt_dma_done_process\n");
+	IntSource.word = 0;
+	IntSource.field.MgmtDmaDone = 1;
+	pAd->int_pending &= ~INT_MGMT_DLY;
+	
+	RTMPHandleMgmtRingDmaDoneInterrupt(pAd);
+
+	// if you use RTMP_SEM_LOCK, sometimes kernel will hang up, no any
+	// bug report output
+	RTMP_INT_LOCK(&pAd->irq_lock, flags);
+	/*
+	 * double check to avoid lose of interrupts
+	 */
+	if (pAd->int_pending & INT_MGMT_DLY) 
+	{
+		tasklet_hi_schedule(&pObj->mgmt_dma_done_task);
+		RTMP_INT_UNLOCK(&pAd->irq_lock, flags);    
+		return;
+	}
+
+	/* enable TxDataInt again */
+	rt2860_int_enable(pAd, INT_MGMT_DLY);
+	RTMP_INT_UNLOCK(&pAd->irq_lock, flags);    
+}
+
+
+static void rx_done_tasklet(unsigned long data)
+{
+	unsigned long flags;
+	PRTMP_ADAPTER pAd = (PRTMP_ADAPTER) data;
+	BOOLEAN	bReschedule = 0;
+	POS_COOKIE pObj;
+	
+	// Do nothing if the driver is starting halt state.
+	// This might happen when timer already been fired before cancel timer with mlmehalt
+	if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_HALT_IN_PROGRESS | fRTMP_ADAPTER_NIC_NOT_EXIST))
+		return;
+
+#ifdef UAPSD_AP_SUPPORT
+	UAPSD_TIMING_RECORD(pAd, UAPSD_TIMING_RECORD_TASKLET);
+#endif // UAPSD_AP_SUPPORT //
+
+    pObj = (POS_COOKIE) pAd->OS_Cookie;
+	
+	pAd->int_pending &= ~(INT_RX);
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		bReschedule = STARxDoneInterruptHandle(pAd, 0);
+#endif // CONFIG_STA_SUPPORT //
+
+#ifdef UAPSD_AP_SUPPORT
+	UAPSD_TIMING_RECORD_STOP();
+#endif // UAPSD_AP_SUPPORT //
+
+	RTMP_INT_LOCK(&pAd->irq_lock, flags);
+	/*
+	 * double check to avoid rotting packet 
+	 */
+	if (pAd->int_pending & INT_RX || bReschedule) 
+	{
+		tasklet_hi_schedule(&pObj->rx_done_task);
+		RTMP_INT_UNLOCK(&pAd->irq_lock, flags);    
+		return;
+	}
+
+	/* enable RxINT again */
+	rt2860_int_enable(pAd, INT_RX);
+	RTMP_INT_UNLOCK(&pAd->irq_lock, flags);
+
+}
+
+
+void fifo_statistic_full_tasklet(unsigned long data)
+{
+	unsigned long flags;
+	PRTMP_ADAPTER pAd = (PRTMP_ADAPTER) data;
+	POS_COOKIE pObj;
+	
+	// Do nothing if the driver is starting halt state.
+	// This might happen when timer already been fired before cancel timer with mlmehalt
+	if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_HALT_IN_PROGRESS | fRTMP_ADAPTER_NIC_NOT_EXIST))
+		return;
+	
+    pObj = (POS_COOKIE) pAd->OS_Cookie;
+
+	pAd->int_pending &= ~(FifoStaFullInt); 
+	NICUpdateFifoStaCounters(pAd);
+	
+	RTMP_INT_LOCK(&pAd->irq_lock, flags);  
+	/*
+	 * double check to avoid rotting packet 
+	 */
+	if (pAd->int_pending & FifoStaFullInt) 
+	{
+		tasklet_hi_schedule(&pObj->fifo_statistic_full_task);
+		RTMP_INT_UNLOCK(&pAd->irq_lock, flags);    
+		return;
+	}
+
+	/* enable RxINT again */
+
+	rt2860_int_enable(pAd, FifoStaFullInt);
+	RTMP_INT_UNLOCK(&pAd->irq_lock, flags);
+
+}
+
+
+static void hcca_dma_done_tasklet(unsigned long data)
+{
+	unsigned long flags;
+	PRTMP_ADAPTER pAd = (PRTMP_ADAPTER) data;
+    INT_SOURCE_CSR_STRUC	IntSource;
+	POS_COOKIE pObj;
+	
+	// Do nothing if the driver is starting halt state.
+	// This might happen when timer already been fired before cancel timer with mlmehalt
+	if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_HALT_IN_PROGRESS | fRTMP_ADAPTER_NIC_NOT_EXIST))
+		return;
+	
+    pObj = (POS_COOKIE) pAd->OS_Cookie;
+
+
+	IntSource.word = 0;
+	IntSource.field.HccaDmaDone = 1;
+	pAd->int_pending &= ~INT_HCCA_DLY;
+
+	RTMPHandleTxRingDmaDoneInterrupt(pAd, IntSource);
+
+	RTMP_INT_LOCK(&pAd->irq_lock, flags);
+	/*
+	 * double check to avoid lose of interrupts
+	 */
+	if (pAd->int_pending & INT_HCCA_DLY)
+	{
+		tasklet_hi_schedule(&pObj->hcca_dma_done_task);
+		RTMP_INT_UNLOCK(&pAd->irq_lock, flags);    
+		return;
+	}
+
+	/* enable TxDataInt again */
+	rt2860_int_enable(pAd, INT_HCCA_DLY);
+	RTMP_INT_UNLOCK(&pAd->irq_lock, flags);    
+}
+
+
+static void ac3_dma_done_tasklet(unsigned long data)
+{
+	unsigned long flags;
+	PRTMP_ADAPTER pAd = (PRTMP_ADAPTER) data;
+    INT_SOURCE_CSR_STRUC	IntSource;
+	POS_COOKIE pObj;
+	BOOLEAN bReschedule = 0;
+
+	// Do nothing if the driver is starting halt state.
+	// This might happen when timer already been fired before cancel timer with mlmehalt
+	if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_HALT_IN_PROGRESS | fRTMP_ADAPTER_NIC_NOT_EXIST))
+		return;
+	
+    pObj = (POS_COOKIE) pAd->OS_Cookie;
+
+//	printk("ac0_dma_done_process\n");
+	IntSource.word = 0;
+	IntSource.field.Ac3DmaDone = 1;
+	pAd->int_pending &= ~INT_AC3_DLY;
+
+	bReschedule = RTMPHandleTxRingDmaDoneInterrupt(pAd, IntSource);
+
+	RTMP_INT_LOCK(&pAd->irq_lock, flags);
+	/*
+	 * double check to avoid lose of interrupts
+	 */
+	if ((pAd->int_pending & INT_AC3_DLY) || bReschedule)
+	{
+		tasklet_hi_schedule(&pObj->ac3_dma_done_task);
+		RTMP_INT_UNLOCK(&pAd->irq_lock, flags);    
+		return;
+	}
+
+	/* enable TxDataInt again */
+	rt2860_int_enable(pAd, INT_AC3_DLY);
+	RTMP_INT_UNLOCK(&pAd->irq_lock, flags);    
+}
+
+
+static void ac2_dma_done_tasklet(unsigned long data)
+{
+	unsigned long flags;
+	PRTMP_ADAPTER pAd = (PRTMP_ADAPTER) data;
+    INT_SOURCE_CSR_STRUC	IntSource;
+	POS_COOKIE pObj;
+	BOOLEAN bReschedule = 0;
+	
+	// Do nothing if the driver is starting halt state.
+	// This might happen when timer already been fired before cancel timer with mlmehalt
+	if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_HALT_IN_PROGRESS | fRTMP_ADAPTER_NIC_NOT_EXIST))
+		return;
+	
+    pObj = (POS_COOKIE) pAd->OS_Cookie;
+
+	IntSource.word = 0;
+	IntSource.field.Ac2DmaDone = 1;
+	pAd->int_pending &= ~INT_AC2_DLY;
+
+	bReschedule = RTMPHandleTxRingDmaDoneInterrupt(pAd, IntSource);
+
+	RTMP_INT_LOCK(&pAd->irq_lock, flags);
+
+	/*
+	 * double check to avoid lose of interrupts
+	 */
+	if ((pAd->int_pending & INT_AC2_DLY) || bReschedule) 
+	{
+		tasklet_hi_schedule(&pObj->ac2_dma_done_task);
+		RTMP_INT_UNLOCK(&pAd->irq_lock, flags);    
+		return;
+	}
+
+	/* enable TxDataInt again */
+	rt2860_int_enable(pAd, INT_AC2_DLY);
+	RTMP_INT_UNLOCK(&pAd->irq_lock, flags);    
+}
+
+
+static void ac1_dma_done_tasklet(unsigned long data)
+{
+	unsigned long flags;
+	PRTMP_ADAPTER pAd = (PRTMP_ADAPTER) data;
+    INT_SOURCE_CSR_STRUC	IntSource;
+	POS_COOKIE pObj;
+	BOOLEAN bReschedule = 0;
+
+	// Do nothing if the driver is starting halt state.
+	// This might happen when timer already been fired before cancel timer with mlmehalt
+	if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_HALT_IN_PROGRESS | fRTMP_ADAPTER_NIC_NOT_EXIST))
+		return;
+	
+    pObj = (POS_COOKIE) pAd->OS_Cookie;
+
+//	printk("ac0_dma_done_process\n");
+	IntSource.word = 0;
+	IntSource.field.Ac1DmaDone = 1;
+	pAd->int_pending &= ~INT_AC1_DLY;
+
+	bReschedule = RTMPHandleTxRingDmaDoneInterrupt(pAd, IntSource);
+
+	RTMP_INT_LOCK(&pAd->irq_lock, flags);
+	/*
+	 * double check to avoid lose of interrupts
+	 */
+	if ((pAd->int_pending & INT_AC1_DLY) || bReschedule) 
+	{
+		tasklet_hi_schedule(&pObj->ac1_dma_done_task);
+		RTMP_INT_UNLOCK(&pAd->irq_lock, flags);    
+		return;
+	}
+
+	/* enable TxDataInt again */
+	rt2860_int_enable(pAd, INT_AC1_DLY);
+	RTMP_INT_UNLOCK(&pAd->irq_lock, flags);    
+}
+
+
+static void ac0_dma_done_tasklet(unsigned long data)
+{
+	unsigned long flags;
+	PRTMP_ADAPTER pAd = (PRTMP_ADAPTER) data;
+	INT_SOURCE_CSR_STRUC	IntSource;
+	POS_COOKIE pObj;
+	BOOLEAN bReschedule = 0;
+
+	// Do nothing if the driver is starting halt state.
+	// This might happen when timer already been fired before cancel timer with mlmehalt
+	if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_HALT_IN_PROGRESS | fRTMP_ADAPTER_NIC_NOT_EXIST))
+		return;
+	
+	pObj = (POS_COOKIE) pAd->OS_Cookie;
+
+//	printk("ac0_dma_done_process\n");
+	IntSource.word = 0;
+	IntSource.field.Ac0DmaDone = 1;
+	pAd->int_pending &= ~INT_AC0_DLY;
+
+//	RTMPHandleMgmtRingDmaDoneInterrupt(pAd);
+	bReschedule = RTMPHandleTxRingDmaDoneInterrupt(pAd, IntSource);
+	
+	RTMP_INT_LOCK(&pAd->irq_lock, flags);
+	/*
+	 * double check to avoid lose of interrupts
+	 */
+	if ((pAd->int_pending & INT_AC0_DLY) || bReschedule)
+	{
+		tasklet_hi_schedule(&pObj->ac0_dma_done_task);
+		RTMP_INT_UNLOCK(&pAd->irq_lock, flags);    
+		return;
+	}
+
+	/* enable TxDataInt again */
+	rt2860_int_enable(pAd, INT_AC0_DLY);
+	RTMP_INT_UNLOCK(&pAd->irq_lock, flags);    
+}
+
+
+
+
+/***************************************************************************
+  *
+  *	interrupt handler related procedures.
+  *
+  **************************************************************************/
+int print_int_count;
+
+IRQ_HANDLE_TYPE
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,19))
+rt2860_interrupt(int irq, void *dev_instance)
+#else
+rt2860_interrupt(int irq, void *dev_instance, struct pt_regs *regs)
+#endif
+{
+	struct net_device *net_dev = (struct net_device *) dev_instance;
+	PRTMP_ADAPTER pAd = NULL;
+	INT_SOURCE_CSR_STRUC	IntSource;
+	POS_COOKIE pObj;
+	
+	GET_PAD_FROM_NET_DEV(pAd, net_dev);
+
+	pObj = (POS_COOKIE) pAd->OS_Cookie;
+
+
+	/* Note 03312008: we can not return here before
+		RTMP_IO_READ32(pAd, INT_SOURCE_CSR, &IntSource.word);
+		RTMP_IO_WRITE32(pAd, INT_SOURCE_CSR, IntSource.word);
+		Or kernel will panic after ifconfig ra0 down sometimes */
+
+
+	//
+	// Inital the Interrupt source.
+	//
+	IntSource.word = 0x00000000L;
+//	McuIntSource.word = 0x00000000L;
+
+	//
+	// Get the interrupt sources & saved to local variable
+	//
+	//RTMP_IO_READ32(pAd, where, &McuIntSource.word);
+	//RTMP_IO_WRITE32(pAd, , McuIntSource.word);
+
+	//
+	// Flag fOP_STATUS_DOZE On, means ASIC put to sleep, elase means ASICK WakeUp
+	// And at the same time, clock maybe turned off that say there is no DMA service.
+	// when ASIC get to sleep. 
+	// To prevent system hang on power saving.
+	// We need to check it before handle the INT_SOURCE_CSR, ASIC must be wake up.
+	//
+	// RT2661 => when ASIC is sleeping, MAC register cannot be read and written.
+	// RT2860 => when ASIC is sleeping, MAC register can be read and written.
+//	if (!OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_DOZE))
+	{
+		RTMP_IO_READ32(pAd, INT_SOURCE_CSR, &IntSource.word);
+		RTMP_IO_WRITE32(pAd, INT_SOURCE_CSR, IntSource.word); // write 1 to clear
+	}
+//	else
+//		DBGPRINT(RT_DEBUG_TRACE, (">>>fOP_STATUS_DOZE<<<\n"));
+
+//	RTMP_IO_READ32(pAd, INT_SOURCE_CSR, &IsrAfterClear);
+//	RTMP_IO_READ32(pAd, MCU_INT_SOURCE_CSR, &McuIsrAfterClear);
+//	DBGPRINT(RT_DEBUG_INFO, ("====> RTMPHandleInterrupt(ISR=%08x,Mcu ISR=%08x, After clear ISR=%08x, MCU ISR=%08x)\n",
+//			IntSource.word, McuIntSource.word, IsrAfterClear, McuIsrAfterClear));
+
+	// Do nothing if Reset in progress
+	if (RTMP_TEST_FLAG(pAd, (fRTMP_ADAPTER_RESET_IN_PROGRESS |fRTMP_ADAPTER_HALT_IN_PROGRESS)))
+	{
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
+        return  IRQ_HANDLED;
+#else
+        return;
+#endif
+	}
+
+	if (!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_START_UP))
+	{
+		return;
+	}
+
+	//
+	// Handle interrupt, walk through all bits
+	// Should start from highest priority interrupt
+	// The priority can be adjust by altering processing if statement
+	//
+
+#ifdef DBG
+
+#endif
+		
+
+	pAd->bPCIclkOff = FALSE;
+
+	// If required spinlock, each interrupt service routine has to acquire
+	// and release itself.
+	//
+	
+	// Do nothing if NIC doesn't exist
+	if (IntSource.word == 0xffffffff)
+	{
+		RTMP_SET_FLAG(pAd, (fRTMP_ADAPTER_NIC_NOT_EXIST | fRTMP_ADAPTER_HALT_IN_PROGRESS));
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
+        return  IRQ_HANDLED;
+#else
+        return;
+#endif
+	}
+	
+	if (IntSource.word & TxCoherent)
+	{
+		DBGPRINT(RT_DEBUG_ERROR, (">>>TxCoherent<<<\n"));
+		RTMPHandleRxCoherentInterrupt(pAd);
+	}
+
+	if (IntSource.word & RxCoherent)
+	{
+		DBGPRINT(RT_DEBUG_ERROR, (">>>RxCoherent<<<\n"));
+		RTMPHandleRxCoherentInterrupt(pAd);
+	}
+
+	if (IntSource.word & FifoStaFullInt) 
+	{
+		if ((pAd->int_disable_mask & FifoStaFullInt) == 0) 
+		{
+			/* mask FifoStaFullInt */
+			rt2860_int_disable(pAd, FifoStaFullInt);
+			tasklet_hi_schedule(&pObj->fifo_statistic_full_task);
+		}
+		pAd->int_pending |= FifoStaFullInt; 
+	}
+
+	if (IntSource.word & INT_MGMT_DLY) 
+	{
+		if ((pAd->int_disable_mask & INT_MGMT_DLY) ==0 )
+		{
+			rt2860_int_disable(pAd, INT_MGMT_DLY);
+			tasklet_hi_schedule(&pObj->mgmt_dma_done_task);			
+		}
+		pAd->int_pending |= INT_MGMT_DLY ;
+	}
+
+	if (IntSource.word & INT_RX)
+	{
+		if ((pAd->int_disable_mask & INT_RX) == 0) 
+		{
+
+			/* mask RxINT */
+			rt2860_int_disable(pAd, INT_RX);
+			tasklet_hi_schedule(&pObj->rx_done_task);
+		}
+		pAd->int_pending |= INT_RX; 		
+	}
+
+	if (IntSource.word & INT_HCCA_DLY)
+	{
+
+		if ((pAd->int_disable_mask & INT_HCCA_DLY) == 0) 
+		{
+			/* mask TxDataInt */
+			rt2860_int_disable(pAd, INT_HCCA_DLY);
+			tasklet_hi_schedule(&pObj->hcca_dma_done_task);
+		}
+		pAd->int_pending |= INT_HCCA_DLY;						
+	}
+
+	if (IntSource.word & INT_AC3_DLY)
+	{
+
+		if ((pAd->int_disable_mask & INT_AC3_DLY) == 0) 
+		{
+			/* mask TxDataInt */
+			rt2860_int_disable(pAd, INT_AC3_DLY);
+			tasklet_hi_schedule(&pObj->ac3_dma_done_task);
+		}
+		pAd->int_pending |= INT_AC3_DLY;						
+	}
+
+	if (IntSource.word & INT_AC2_DLY)
+	{
+
+		if ((pAd->int_disable_mask & INT_AC2_DLY) == 0) 
+		{
+			/* mask TxDataInt */
+			rt2860_int_disable(pAd, INT_AC2_DLY);
+			tasklet_hi_schedule(&pObj->ac2_dma_done_task);
+		}
+		pAd->int_pending |= INT_AC2_DLY;						
+	}
+
+	if (IntSource.word & INT_AC1_DLY)
+	{
+
+		pAd->int_pending |= INT_AC1_DLY;						
+
+		if ((pAd->int_disable_mask & INT_AC1_DLY) == 0) 
+		{
+			/* mask TxDataInt */
+			rt2860_int_disable(pAd, INT_AC1_DLY);
+			tasklet_hi_schedule(&pObj->ac1_dma_done_task);
+		}
+		
+	}
+
+	if (IntSource.word & INT_AC0_DLY)
+	{
+
+/*
+		if (IntSource.word & 0x2) {
+			u32 reg;
+			RTMP_IO_READ32(pAd, DELAY_INT_CFG, &reg);
+			printk("IntSource.word = %08x, DELAY_REG = %08x\n", IntSource.word, reg);
+		}
+*/
+		pAd->int_pending |= INT_AC0_DLY;
+
+		if ((pAd->int_disable_mask & INT_AC0_DLY) == 0) 
+		{
+			/* mask TxDataInt */
+			rt2860_int_disable(pAd, INT_AC0_DLY);
+			tasklet_hi_schedule(&pObj->ac0_dma_done_task);
+		}
+								
+	}
+
+
+	if (IntSource.word & PreTBTTInt)
+	{
+		RTMPHandlePreTBTTInterrupt(pAd);
+	}
+
+	if (IntSource.word & TBTTInt)
+	{
+		RTMPHandleTBTTInterrupt(pAd);
+	}
+
+
+
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+		if (IntSource.word & AutoWakeupInt)
+			RTMPHandleTwakeupInterrupt(pAd);
+	}
+#endif // CONFIG_STA_SUPPORT //
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
+	return  IRQ_HANDLED;
+#endif
+
+}
+
+
+
+/*
+========================================================================
+Routine Description:
+    PCI command kernel thread.
+
+Arguments:
+	*Context			the pAd, driver control block pointer
+
+Return Value:
+    0					close the thread
+
+Note:
+========================================================================
+*/
+INT RTPCICmdThread(
+	IN ULONG Context)
+{
+	RTMP_ADAPTER *pAd;
+	RTMP_OS_TASK *pTask;
+	int status;
+	status = 0;
+
+	pTask = (RTMP_OS_TASK *)Context;
+	pAd = (PRTMP_ADAPTER)pTask->priv;
+	
+	RtmpOSTaskCustomize(pTask);
+
+	NdisAcquireSpinLock(&pAd->CmdQLock);
+	pAd->CmdQ.CmdQState = RTMP_TASK_STAT_RUNNING;
+	NdisReleaseSpinLock(&pAd->CmdQLock);
+
+	while (pAd && pAd->CmdQ.CmdQState == RTMP_TASK_STAT_RUNNING)
+	{
+#ifdef KTHREAD_SUPPORT
+		RTMP_WAIT_EVENT_INTERRUPTIBLE(pAd, pTask);
+#else
+		/* lock the device pointers */
+		RTMP_SEM_EVENT_WAIT(&(pTask->taskSema), status);
+
+		if (status != 0)
+		{
+			RTMP_SET_FLAG(pAd, fRTMP_ADAPTER_HALT_IN_PROGRESS);
+			break;
+		}
+#endif
+
+		if (pAd->CmdQ.CmdQState == RTMP_TASK_STAT_STOPED)
+			break;
+
+		if (!pAd->PM_FlgSuspend)
+			CMDHandler(pAd);
+	}
+
+	if (pAd && !pAd->PM_FlgSuspend)
+	{	// Clear the CmdQElements.
+		CmdQElmt	*pCmdQElmt = NULL;
+
+		NdisAcquireSpinLock(&pAd->CmdQLock);
+		pAd->CmdQ.CmdQState = RTMP_TASK_STAT_STOPED;
+		while(pAd->CmdQ.size)
+		{
+			RTThreadDequeueCmd(&pAd->CmdQ, &pCmdQElmt);
+			if (pCmdQElmt)
+			{
+				if (pCmdQElmt->CmdFromNdis == TRUE)
+				{
+					if (pCmdQElmt->buffer != NULL)
+						os_free_mem(pAd, pCmdQElmt->buffer);
+					os_free_mem(pAd, (PUCHAR)pCmdQElmt);
+				}
+				else
+				{
+					if ((pCmdQElmt->buffer != NULL) && (pCmdQElmt->bufferlength != 0))
+						os_free_mem(pAd, pCmdQElmt->buffer);
+					os_free_mem(pAd, (PUCHAR)pCmdQElmt);
+				}
+			}
+		}
+
+		NdisReleaseSpinLock(&pAd->CmdQLock);
+	}
+	/* notify the exit routine that we're actually exiting now 
+	 *
+	 * complete()/wait_for_completion() is similar to up()/down(),
+	 * except that complete() is safe in the case where the structure
+	 * is getting deleted in a parallel mode of execution (i.e. just
+	 * after the down() -- that's necessary for the thread-shutdown
+	 * case.
+	 *
+	 * complete_and_exit() goes even further than this -- it is safe in
+	 * the case that the thread of the caller is going away (not just
+	 * the structure) -- this is necessary for the module-remove case.
+	 * This is important in preemption kernels, which transfer the flow
+	 * of execution immediately upon a complete().
+	 */
+	DBGPRINT(RT_DEBUG_TRACE,( "<---RTPCICmdThread\n"));
+
+#ifndef KTHREAD_SUPPORT
+	pTask->taskPID = THREAD_PID_INIT_VALUE;
+	complete_and_exit (&pTask->taskComplete, 0);
+#endif
+	return 0;
+
+}
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt_pci_rbus.o b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt_pci_rbus.o
new file mode 100644
index 0000000000000000000000000000000000000000..c1be6707b47b268f54c144fb9278956b3fb191f6
GIT binary patch
literal 7739
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

literal 0
HcmV?d00001

diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt_profile.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt_profile.c
new file mode 100644
index 000000000..3029b07c9
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt_profile.c
@@ -0,0 +1,102 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+    Module Name:
+	rt_profile.c
+ 
+    Abstract:
+ 
+    Revision History:
+    Who          When          What
+    ---------    ----------    ----------------------------------------------
+ */
+ 
+#include "rt_config.h"
+
+
+NDIS_STATUS	RTMPReadParametersHook(
+	IN	PRTMP_ADAPTER pAd)
+{
+	PSTRING					src = NULL;
+	RTMP_OS_FD				srcf;
+	RTMP_OS_FS_INFO			osFSInfo;
+	INT 						retval = NDIS_STATUS_FAILURE;
+	PSTRING					buffer;
+
+	buffer = kmalloc(MAX_INI_BUFFER_SIZE, MEM_ALLOC_FLAG);
+	if(buffer == NULL)
+		return NDIS_STATUS_FAILURE;
+	memset(buffer, 0x00, MAX_INI_BUFFER_SIZE);
+			
+	{	
+
+#ifdef CONFIG_STA_SUPPORT
+		IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+		{
+			src = STA_PROFILE_PATH;
+		}
+#endif // CONFIG_STA_SUPPORT //
+#ifdef MULTIPLE_CARD_SUPPORT
+		src = (PSTRING)pAd->MC_FileName;
+#endif // MULTIPLE_CARD_SUPPORT //
+	}
+
+	if (src && *src)
+	{
+		RtmpOSFSInfoChange(&osFSInfo, TRUE);
+		srcf = RtmpOSFileOpen(src, O_RDONLY, 0);
+		if (IS_FILE_OPEN_ERR(srcf)) 
+		{
+			DBGPRINT(RT_DEBUG_ERROR, ("Open file \"%s\" failed!\n", src));
+		}
+		else 
+		{
+			retval =RtmpOSFileRead(srcf, buffer, MAX_INI_BUFFER_SIZE);
+			if (retval > 0)
+			{
+				RTMPSetProfileParameters(pAd, buffer);
+				retval = NDIS_STATUS_SUCCESS;
+			}
+			else
+				DBGPRINT(RT_DEBUG_ERROR, ("Read file \"%s\" failed(errCode=%d)!\n", src, retval));
+
+			retval = RtmpOSFileClose(srcf);
+			if ( retval != 0)
+			{
+				retval = NDIS_STATUS_FAILURE;
+				DBGPRINT(RT_DEBUG_ERROR, ("Close file \"%s\" failed(errCode=%d)!\n", src, retval));
+			}
+		}
+		
+		RtmpOSFSInfoChange(&osFSInfo, FALSE);
+	}
+	
+	kfree(buffer);
+	
+	return (retval);
+
+}
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt_profile.o b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt_profile.o
new file mode 100644
index 0000000000000000000000000000000000000000..944fe56cffd2db027ada63e0e6cc18233a796d4b
GIT binary patch
literal 2109
zcmb<-^>JflWMqH=Mh0dE1doB?1rtQZ1Wai#@G)?MSui5B^J#ckaPu357k~c$|G!It
zfq|jZ^~sJ6><kQGk#1fV1_p+1(=F@_46P?S5A(NfV_;xty}b`)NlD#K1{MZ}&ijT3
zKCkYreX$E9*!csj(eR|<r5zw!z&u-q5C8vn9^-EZ>E6j8z`)RX3oOxkpw6Y+^$C>M
z`2i}}d8|ZeAxL-Y0shvt3=9ll`#OIZUIHuVyaA?~k0^A0h>nYoJv^aX6s-DE$(~LZ
z6^`RBDj;Vw9A{C{V1WAM^`dTD0g&7O^S9Xi|Np<6z0>tU^KlliBS9KKeup}((?sQe
z=!0(d)&rfc4@z&n<oW;qf3q#f1_u6?!vFvOgVck#U}qg?Q30{RPI?&uk>vmd1w<C%
z79W^fUK;)X|9^shYDuzwcxF**PHJ(neo%<9ftf*Yh$Difmy%e*z`zicnwX-HmYI{P
zprl%?q>z@FnUk8Lky=#boS%|vtD2&z$i?8ClV6-lNRfX*Y959fMJ|xz!GycBvz3BI
zXi{ljNvVQ~o{65Zu1P7FXQ~O|Gcf2CSLT)^CNbz0mlQ$h3>d2@HAk-`wW5SUuP8qy
zu_O_s#8A%!m21eLSCpC)AD^3?Uz%4EpOc@=0P<!cgI-c`F@s)Seo3mHyI-hoaY<rw
zHiKSrer|4R9w-z*t|W}*85qFnpAD+ifq{Xc1{4=iJ}3o%n9>Xk44fba6icu&Fx+5Z
zVBmr32PGd41_lOIDBlRGZVw{^Lm`w6qCo0E#)I+~h=!@tWny5E04acCkQ@lRL(PL`
zO9l@n22d7)szR`x(cJfem4N}|9+3N386fIF{1B*l%uo}2U<O0^AoqcoQ4A3Mgw(}D
z&4cMfHxJ|oka_t~bp{{~0|Ns{9XJ<2`5<*5EXcsX0J9S$Rlvl+Pyu2<F-Q%F38Imm
z{)3f)p@5NrftP`S0hBgD?g7OeD9(`0%V1|<xC$}=ib3Xpm>@k&{0t1@Aa{x}Fvu`4
zFfj2kFerie!VC<cVu4YNfguzmF2ukP2NGvuU`Ph>1sND>K(q)0Ll=nVVqlmEqD2`P
z=77|3Gcard@r4)|c7kXg28L5m@mnC8iGkrElzs-17hqs`2jUAeFfcPRFo23{9T3gU
zz+ercnHU({K{PW1gAXGE1Csy)LmG(B#K4dXrHi2AAipt!0tLjtfl+G!Q1~N<7>ExF
zO@wA<22hGZ=CdO>;P?ZjG=vZ{O3ne9#|6%FFcmBeAOG{gI1CJ+(w;#bjStE%Fd<O9
zT0uG0j0_Ay42%qcP(FwP$tQsrPz>T{LfIe+#4i9bpcurjhq6Hwh(8I$fMO7TIg|~e
zKzvZW1Y(0Qh<^;kfMO7zp{OLjpeP?y3hN~^1cmqp1gDk+Km-C3ixP8FOHzx98G=Gw
zQj<#4eNxL(a~QJIic(X-YC$D9LX}5;el|mPZfb6Pa$<5uYJ6f2s1$@0hztcqnRzAI
z3_&Hi1^&TqnK`MTLL0^n_RLGmcg{%6OHXBpk1r`oOinGx&&(@{&(4Jyg3t!C5~eLP
QCly>jFhG?->@8*h05iRN5&!@I

literal 0
HcmV?d00001

diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt_rbus_pci_util.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt_rbus_pci_util.c
new file mode 100644
index 000000000..db7add7f7
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt_rbus_pci_util.c
@@ -0,0 +1,248 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+	Module Name:
+	rtusb_bulk.c
+
+	Abstract:
+
+	Revision History:
+	Who			When		What
+	--------	----------	----------------------------------------------
+	Name		Date		Modification logs
+	
+*/
+
+#include "rt_config.h"
+
+
+// Function for TxDesc Memory allocation.
+void RTMP_AllocateTxDescMemory(
+	IN	PRTMP_ADAPTER pAd,
+	IN	UINT	Index,
+	IN	ULONG	Length,
+	IN	BOOLEAN	Cached,
+	OUT	PVOID	*VirtualAddress,
+	OUT	PNDIS_PHYSICAL_ADDRESS PhysicalAddress)
+{
+	POS_COOKIE pObj = (POS_COOKIE)pAd->OS_Cookie;
+
+	*VirtualAddress = (PVOID)pci_alloc_consistent(pObj->pci_dev,sizeof(char)*Length, PhysicalAddress);
+
+}
+
+
+// Function for MgmtDesc Memory allocation.
+void RTMP_AllocateMgmtDescMemory(
+	IN	PRTMP_ADAPTER pAd,
+	IN	ULONG	Length,
+	IN	BOOLEAN	Cached,
+	OUT	PVOID	*VirtualAddress,
+	OUT	PNDIS_PHYSICAL_ADDRESS PhysicalAddress)
+{
+	POS_COOKIE pObj = (POS_COOKIE)pAd->OS_Cookie;
+
+	*VirtualAddress = (PVOID)pci_alloc_consistent(pObj->pci_dev,sizeof(char)*Length, PhysicalAddress);
+
+}
+
+
+// Function for RxDesc Memory allocation.
+void RTMP_AllocateRxDescMemory(
+	IN	PRTMP_ADAPTER pAd,
+	IN	ULONG	Length,
+	IN	BOOLEAN	Cached,
+	OUT	PVOID	*VirtualAddress,
+	OUT	PNDIS_PHYSICAL_ADDRESS PhysicalAddress)
+{
+	POS_COOKIE pObj = (POS_COOKIE)pAd->OS_Cookie;
+
+	*VirtualAddress = (PVOID)pci_alloc_consistent(pObj->pci_dev,sizeof(char)*Length, PhysicalAddress);
+
+}
+
+
+// Function for free allocated Desc Memory.
+void RTMP_FreeDescMemory(
+	IN	PRTMP_ADAPTER pAd,
+	IN	ULONG	Length,
+	IN	PVOID	VirtualAddress,
+	IN	NDIS_PHYSICAL_ADDRESS PhysicalAddress)
+{
+	POS_COOKIE pObj = (POS_COOKIE)pAd->OS_Cookie;
+	
+	pci_free_consistent(pObj->pci_dev, Length, VirtualAddress, PhysicalAddress);
+}
+
+
+// Function for TxData DMA Memory allocation.
+void RTMP_AllocateFirstTxBuffer(
+	IN	PRTMP_ADAPTER pAd,
+	IN	UINT	Index,
+	IN	ULONG	Length,
+	IN	BOOLEAN	Cached,
+	OUT	PVOID	*VirtualAddress,
+	OUT	PNDIS_PHYSICAL_ADDRESS PhysicalAddress)
+{
+	POS_COOKIE pObj = (POS_COOKIE)pAd->OS_Cookie;
+
+	*VirtualAddress = (PVOID)pci_alloc_consistent(pObj->pci_dev,sizeof(char)*Length, PhysicalAddress);
+}
+
+
+void RTMP_FreeFirstTxBuffer(
+	IN	PRTMP_ADAPTER pAd,
+	IN	ULONG	Length,
+	IN	BOOLEAN	Cached,
+	IN	PVOID	VirtualAddress,
+	IN	NDIS_PHYSICAL_ADDRESS PhysicalAddress)
+{
+	POS_COOKIE pObj = (POS_COOKIE)pAd->OS_Cookie;
+
+	pci_free_consistent(pObj->pci_dev, Length, VirtualAddress, PhysicalAddress);
+}
+
+
+/*
+ * FUNCTION: Allocate a common buffer for DMA
+ * ARGUMENTS:
+ *     AdapterHandle:  AdapterHandle
+ *     Length:  Number of bytes to allocate
+ *     Cached:  Whether or not the memory can be cached
+ *     VirtualAddress:  Pointer to memory is returned here
+ *     PhysicalAddress:  Physical address corresponding to virtual address
+ */
+void RTMP_AllocateSharedMemory(
+	IN	PRTMP_ADAPTER pAd,
+	IN	ULONG	Length,
+	IN	BOOLEAN	Cached,
+	OUT	PVOID	*VirtualAddress,
+	OUT	PNDIS_PHYSICAL_ADDRESS PhysicalAddress)
+{
+	POS_COOKIE pObj = (POS_COOKIE)pAd->OS_Cookie;
+
+	*VirtualAddress = (PVOID)pci_alloc_consistent(pObj->pci_dev,sizeof(char)*Length, PhysicalAddress);	
+}
+
+
+/*
+ * FUNCTION: Allocate a packet buffer for DMA
+ * ARGUMENTS:
+ *     AdapterHandle:  AdapterHandle
+ *     Length:  Number of bytes to allocate
+ *     Cached:  Whether or not the memory can be cached
+ *     VirtualAddress:  Pointer to memory is returned here
+ *     PhysicalAddress:  Physical address corresponding to virtual address
+ * Notes:
+ *     Cached is ignored: always cached memory
+ */
+PNDIS_PACKET RTMP_AllocateRxPacketBuffer(
+	IN	PRTMP_ADAPTER pAd,
+	IN	ULONG	Length,
+	IN	BOOLEAN	Cached,
+	OUT	PVOID	*VirtualAddress,
+	OUT	PNDIS_PHYSICAL_ADDRESS PhysicalAddress)
+{
+	struct sk_buff *pkt;
+
+//	pkt = dev_alloc_skb(Length);
+	DEV_ALLOC_SKB(pAd, pkt, Length);
+
+	if (pkt == NULL) {
+		DBGPRINT(RT_DEBUG_ERROR, ("can't allocate rx %ld size packet\n",Length));
+	}
+
+	if (pkt) {
+		RTMP_SET_PACKET_SOURCE(OSPKT_TO_RTPKT(pkt), PKTSRC_NDIS);
+		*VirtualAddress = (PVOID) pkt->data;	
+//#ifdef CONFIG_5VT_ENHANCE
+//		*PhysicalAddress = PCI_MAP_SINGLE(pAd, *VirtualAddress, 1600, PCI_DMA_FROMDEVICE);
+//#else
+		*PhysicalAddress = PCI_MAP_SINGLE(pAd, *VirtualAddress, Length,  -1, PCI_DMA_FROMDEVICE);
+//#endif
+	} else {
+		*VirtualAddress = (PVOID) NULL;
+		*PhysicalAddress = (NDIS_PHYSICAL_ADDRESS) NULL;
+	}	
+
+	return (PNDIS_PACKET) pkt;
+}
+
+/*
+ * invaild or writeback cache 
+ * and convert virtual address to physical address 
+ */
+dma_addr_t linux_pci_map_single(void *handle, void *ptr, size_t size, int sd_idx, int direction)
+{
+	PRTMP_ADAPTER pAd;
+	POS_COOKIE pObj;
+	
+	/* 
+		------ Porting Information ------
+		> For Tx Alloc:
+			mgmt packets => sd_idx = 0
+			SwIdx: pAd->MgmtRing.TxCpuIdx
+			pTxD : pAd->MgmtRing.Cell[SwIdx].AllocVa;
+	 
+			data packets => sd_idx = 1
+	 		TxIdx : pAd->TxRing[pTxBlk->QueIdx].TxCpuIdx 
+	 		QueIdx: pTxBlk->QueIdx 
+	 		pTxD  : pAd->TxRing[pTxBlk->QueIdx].Cell[TxIdx].AllocVa;
+
+	 	> For Rx Alloc:
+	 		sd_idx = -1
+	*/
+
+	pAd = (PRTMP_ADAPTER)handle;
+	pObj = (POS_COOKIE)pAd->OS_Cookie;
+	
+	if (sd_idx == 1)
+	{
+		PTX_BLK		pTxBlk;
+		pTxBlk = (PTX_BLK)ptr;
+		return pci_map_single(pObj->pci_dev, pTxBlk->pSrcBufData, pTxBlk->SrcBufLen, direction);
+	}
+	else
+	{
+		return pci_map_single(pObj->pci_dev, ptr, size, direction);
+	}
+
+}
+
+void linux_pci_unmap_single(void *handle, dma_addr_t dma_addr, size_t size, int direction)
+{
+	PRTMP_ADAPTER pAd;
+	POS_COOKIE pObj;
+
+	pAd=(PRTMP_ADAPTER)handle;
+	pObj = (POS_COOKIE)pAd->OS_Cookie;
+	
+	if (size > 0)
+		pci_unmap_single(pObj->pci_dev, dma_addr, size, direction);
+	
+}
+
+/* End of rt_usb_util.c */
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt_rbus_pci_util.o b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/rt_rbus_pci_util.o
new file mode 100644
index 0000000000000000000000000000000000000000..26a17d3d756129fa4f4f694da2fc63a24647959c
GIT binary patch
literal 3896
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
BA@~3Q

literal 0
HcmV?d00001

diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/sta_ioctl.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/sta_ioctl.c
new file mode 100644
index 000000000..a7e2f0202
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/sta_ioctl.c
@@ -0,0 +1,6143 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+    Module Name:
+    sta_ioctl.c
+
+    Abstract:
+    IOCTL related subroutines
+
+    Revision History:
+    Who         When          What
+    --------    ----------    ----------------------------------------------
+    Rory Chen   01-03-2003    created
+	Rory Chen   02-14-2005    modify to support RT61
+*/
+
+#include	"rt_config.h"
+
+#ifdef DBG
+extern ULONG    RTDebugLevel;
+#endif
+
+#define NR_WEP_KEYS 				4
+#define WEP_SMALL_KEY_LEN 			(40/8)
+#define WEP_LARGE_KEY_LEN 			(104/8)
+
+#define GROUP_KEY_NO                4
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27)
+#define IWE_STREAM_ADD_EVENT(_A, _B, _C, _D, _E)		iwe_stream_add_event(_A, _B, _C, _D, _E)
+#define IWE_STREAM_ADD_POINT(_A, _B, _C, _D, _E)		iwe_stream_add_point(_A, _B, _C, _D, _E)
+#define IWE_STREAM_ADD_VALUE(_A, _B, _C, _D, _E, _F)	iwe_stream_add_value(_A, _B, _C, _D, _E, _F)
+#else
+#define IWE_STREAM_ADD_EVENT(_A, _B, _C, _D, _E)		iwe_stream_add_event(_B, _C, _D, _E)
+#define IWE_STREAM_ADD_POINT(_A, _B, _C, _D, _E)		iwe_stream_add_point(_B, _C, _D, _E)
+#define IWE_STREAM_ADD_VALUE(_A, _B, _C, _D, _E, _F)	iwe_stream_add_value(_B, _C, _D, _E, _F)
+#endif
+
+extern UCHAR    CipherWpa2Template[];
+
+typedef struct GNU_PACKED _RT_VERSION_INFO{
+    UCHAR       DriverVersionW;
+    UCHAR       DriverVersionX;
+    UCHAR       DriverVersionY;
+    UCHAR       DriverVersionZ;
+    UINT        DriverBuildYear;
+    UINT        DriverBuildMonth;
+    UINT        DriverBuildDay;
+} RT_VERSION_INFO, *PRT_VERSION_INFO;
+
+struct iw_priv_args privtab[] = {
+{ RTPRIV_IOCTL_SET, 
+  IW_PRIV_TYPE_CHAR | 1024, 0,
+  "set"},
+
+{ RTPRIV_IOCTL_SHOW, IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK,
+  ""},
+/* --- sub-ioctls definitions --- */   
+    { SHOW_CONN_STATUS,
+	  IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "connStatus" },
+	{ SHOW_DRVIER_VERION,
+	  IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "driverVer" },
+    { SHOW_BA_INFO,
+	  IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "bainfo" },
+	{ SHOW_DESC_INFO,
+	  IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "descinfo" },
+    { RAIO_OFF,
+	  IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "radio_off" },
+	{ RAIO_ON,
+	  IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "radio_on" },
+#ifdef QOS_DLS_SUPPORT
+	{ SHOW_DLS_ENTRY_INFO,
+	  IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "dlsentryinfo" },
+#endif // QOS_DLS_SUPPORT //
+	{ SHOW_CFG_VALUE,
+	  IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "show" },
+	{ SHOW_ADHOC_ENTRY_INFO,
+	  IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, "adhocEntry" },
+/* --- sub-ioctls relations --- */
+
+#ifdef DBG
+{ RTPRIV_IOCTL_BBP,
+  IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK,
+  "bbp"},
+{ RTPRIV_IOCTL_MAC,
+  IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | 1024,
+  "mac"},  
+#ifdef RTMP_RF_RW_SUPPORT
+{ RTPRIV_IOCTL_RF,
+  IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK,
+  "rf"},
+#endif // RTMP_RF_RW_SUPPORT //
+{ RTPRIV_IOCTL_E2P,
+  IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | 1024,
+  "e2p"},
+#endif  /* DBG */
+
+{ RTPRIV_IOCTL_STATISTICS,
+  0, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK,
+  "stat"}, 
+{ RTPRIV_IOCTL_GSITESURVEY,
+  0, IW_PRIV_TYPE_CHAR | 1024,
+  "get_site_survey"},
+
+};
+
+static __s32 ralinkrate[] =
+	{2,  4,   11,  22, // CCK
+	12, 18,   24,  36, 48, 72, 96, 108, // OFDM
+	13, 26,   39,  52,  78, 104, 117, 130, 26,  52,  78, 104, 156, 208, 234, 260, // 20MHz, 800ns GI, MCS: 0 ~ 15
+	39, 78,  117, 156, 234, 312, 351, 390,										  // 20MHz, 800ns GI, MCS: 16 ~ 23
+	27, 54,   81, 108, 162, 216, 243, 270, 54, 108, 162, 216, 324, 432, 486, 540, // 40MHz, 800ns GI, MCS: 0 ~ 15
+	81, 162, 243, 324, 486, 648, 729, 810,										  // 40MHz, 800ns GI, MCS: 16 ~ 23
+	14, 29,   43,  57,  87, 115, 130, 144, 29, 59,   87, 115, 173, 230, 260, 288, // 20MHz, 400ns GI, MCS: 0 ~ 15
+	43, 87,  130, 173, 260, 317, 390, 433,										  // 20MHz, 400ns GI, MCS: 16 ~ 23
+	30, 60,   90, 120, 180, 240, 270, 300, 60, 120, 180, 240, 360, 480, 540, 600, // 40MHz, 400ns GI, MCS: 0 ~ 15
+	90, 180, 270, 360, 540, 720, 810, 900};										  // 40MHz, 400ns GI, MCS: 16 ~ 23
+
+
+
+
+
+
+/*
+This is required for LinEX2004/kernel2.6.7 to provide iwlist scanning function
+*/
+
+int
+rt_ioctl_giwname(struct net_device *dev,
+		   struct iw_request_info *info,
+		   char *name, char *extra)
+{
+	strncpy(name, "Ralink STA", IFNAMSIZ);
+	return 0;
+}
+
+int rt_ioctl_siwfreq(struct net_device *dev,
+			struct iw_request_info *info,
+			struct iw_freq *freq, char *extra)
+{
+	PRTMP_ADAPTER pAdapter = NULL;
+	int 	chan = -1;
+
+	GET_PAD_FROM_NET_DEV(pAdapter, dev);
+
+    //check if the interface is down
+    if(!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_INTERRUPT_IN_USE))
+    {
+        DBGPRINT(RT_DEBUG_TRACE, ("INFO::Network is down!\n"));
+        return -ENETDOWN;   
+    }
+
+
+	if (freq->e > 1)
+		return -EINVAL;
+
+	if((freq->e == 0) && (freq->m <= 1000))
+		chan = freq->m;	// Setting by channel number 
+	else
+		MAP_KHZ_TO_CHANNEL_ID( (freq->m /100) , chan); // Setting by frequency - search the table , like 2.412G, 2.422G, 
+
+    if (ChannelSanity(pAdapter, chan) == TRUE)
+    {
+	pAdapter->CommonCfg.Channel = chan;
+	DBGPRINT(RT_DEBUG_ERROR, ("==>rt_ioctl_siwfreq::SIOCSIWFREQ[cmd=0x%x] (Channel=%d)\n", SIOCSIWFREQ, pAdapter->CommonCfg.Channel));
+    }
+    else
+        return -EINVAL;
+    
+	return 0;
+}
+
+
+int rt_ioctl_giwfreq(struct net_device *dev,
+		   struct iw_request_info *info,
+		   struct iw_freq *freq, char *extra)
+{
+	PRTMP_ADAPTER pAdapter = NULL;
+	UCHAR ch;
+	ULONG	m = 2412000;
+
+	GET_PAD_FROM_NET_DEV(pAdapter, dev);
+
+	if (pAdapter == NULL)
+	{
+		/* if 1st open fail, pAd will be free;
+		   So the net_dev->priv will be NULL in 2rd open */
+		return -ENETDOWN;
+	}
+
+	//check if the interface is down
+	if(!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_INTERRUPT_IN_USE))
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("INFO::Network is down!\n"));
+		return -ENETDOWN;   
+	}
+		ch = pAdapter->CommonCfg.Channel;
+
+	DBGPRINT(RT_DEBUG_TRACE,("==>rt_ioctl_giwfreq  %d\n", ch));
+
+	MAP_CHANNEL_ID_TO_KHZ(ch, m);
+	freq->m = m * 100;
+	freq->e = 1;
+	freq->i = 0;
+	
+	return 0;
+}
+
+
+int rt_ioctl_siwmode(struct net_device *dev,
+		   struct iw_request_info *info,
+		   __u32 *mode, char *extra)
+{
+	PRTMP_ADAPTER pAdapter = NULL;
+
+	GET_PAD_FROM_NET_DEV(pAdapter, dev);
+
+	//check if the interface is down
+    if(!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_INTERRUPT_IN_USE))
+    {
+    	DBGPRINT(RT_DEBUG_TRACE, ("INFO::Network is down!\n"));
+       	return -ENETDOWN;   
+    }
+
+	switch (*mode)
+	{
+		case IW_MODE_ADHOC:
+			Set_NetworkType_Proc(pAdapter, "Adhoc");
+			break;
+		case IW_MODE_INFRA:
+			Set_NetworkType_Proc(pAdapter, "Infra");
+			break;
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,4,20))
+        case IW_MODE_MONITOR:
+			Set_NetworkType_Proc(pAdapter, "Monitor");
+			break;
+#endif            
+		default:
+			DBGPRINT(RT_DEBUG_TRACE, ("===>rt_ioctl_siwmode::SIOCSIWMODE (unknown %d)\n", *mode));
+			return -EINVAL;
+	}
+	
+	// Reset Ralink supplicant to not use, it will be set to start when UI set PMK key
+	pAdapter->StaCfg.WpaState = SS_NOTUSE;
+
+	return 0;
+}
+
+
+int rt_ioctl_giwmode(struct net_device *dev,
+		   struct iw_request_info *info,
+		   __u32 *mode, char *extra)
+{
+	PRTMP_ADAPTER pAdapter = NULL;
+
+	GET_PAD_FROM_NET_DEV(pAdapter, dev);
+
+	if (pAdapter == NULL)
+	{
+		/* if 1st open fail, pAd will be free;
+		   So the net_dev->priv will be NULL in 2rd open */
+		return -ENETDOWN;
+	}
+
+	//check if the interface is down
+    if(!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_INTERRUPT_IN_USE))
+    {
+        DBGPRINT(RT_DEBUG_TRACE, ("INFO::Network is down!\n"));
+        return -ENETDOWN;   
+    }
+
+	if (ADHOC_ON(pAdapter))
+		*mode = IW_MODE_ADHOC;
+    else if (INFRA_ON(pAdapter))
+		*mode = IW_MODE_INFRA;
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,4,20))
+    else if (MONITOR_ON(pAdapter))
+    {
+        *mode = IW_MODE_MONITOR;
+    }
+#endif         
+    else
+        *mode = IW_MODE_AUTO;
+
+	DBGPRINT(RT_DEBUG_TRACE, ("==>rt_ioctl_giwmode(mode=%d)\n", *mode));
+	return 0;
+}
+
+int rt_ioctl_siwsens(struct net_device *dev,
+		   struct iw_request_info *info,
+		   char *name, char *extra)
+{
+	PRTMP_ADAPTER pAdapter = NULL;
+
+	GET_PAD_FROM_NET_DEV(pAdapter, dev);
+
+	//check if the interface is down
+    	if(!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_INTERRUPT_IN_USE))
+    	{
+        	DBGPRINT(RT_DEBUG_TRACE, ("INFO::Network is down!\n"));
+        	return -ENETDOWN;   
+    	}
+
+	return 0;
+}
+
+int rt_ioctl_giwsens(struct net_device *dev,
+		   struct iw_request_info *info,
+		   char *name, char *extra)
+{
+	return 0;
+}
+
+int rt_ioctl_giwrange(struct net_device *dev,
+		   struct iw_request_info *info,
+		   struct iw_point *data, char *extra)
+{
+	PRTMP_ADAPTER pAdapter = NULL;
+	struct iw_range *range = (struct iw_range *) extra;
+	u16 val;
+	int i;
+
+	GET_PAD_FROM_NET_DEV(pAdapter, dev);
+
+	if (pAdapter == NULL)
+	{
+		/* if 1st open fail, pAd will be free;
+		   So the net_dev->priv will be NULL in 2rd open */
+		return -ENETDOWN;
+	}
+
+#ifndef NATIVE_WPA_SUPPLICANT_SUPPORT
+	if(!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_INTERRUPT_IN_USE))
+	{
+    	DBGPRINT(RT_DEBUG_TRACE, ("INFO::Network is down!\n"));
+    	return -ENETDOWN;   
+	}
+#endif // NATIVE_WPA_SUPPLICANT_SUPPORT //
+
+	DBGPRINT(RT_DEBUG_TRACE ,("===>rt_ioctl_giwrange\n"));
+	data->length = sizeof(struct iw_range);
+	memset(range, 0, sizeof(struct iw_range));
+
+	range->txpower_capa = IW_TXPOW_DBM;
+
+	if (INFRA_ON(pAdapter)||ADHOC_ON(pAdapter))
+	{
+		range->min_pmp = 1 * 1024;
+		range->max_pmp = 65535 * 1024;
+		range->min_pmt = 1 * 1024;
+		range->max_pmt = 1000 * 1024;
+		range->pmp_flags = IW_POWER_PERIOD;
+		range->pmt_flags = IW_POWER_TIMEOUT;
+		range->pm_capa = IW_POWER_PERIOD | IW_POWER_TIMEOUT |
+			IW_POWER_UNICAST_R | IW_POWER_ALL_R;
+	}
+
+	range->we_version_compiled = WIRELESS_EXT;
+	range->we_version_source = 14;
+
+	range->retry_capa = IW_RETRY_LIMIT;
+	range->retry_flags = IW_RETRY_LIMIT;
+	range->min_retry = 0;
+	range->max_retry = 255;
+
+	range->num_channels =  pAdapter->ChannelListNum;
+
+	val = 0;
+	for (i = 1; i <= range->num_channels; i++) 
+	{
+		u32 m = 2412000;
+		range->freq[val].i = pAdapter->ChannelList[i-1].Channel;
+		MAP_CHANNEL_ID_TO_KHZ(pAdapter->ChannelList[i-1].Channel, m);
+		range->freq[val].m = m * 100; /* OS_HZ */
+		
+		range->freq[val].e = 1;
+		val++;
+		if (val == IW_MAX_FREQUENCIES)
+			break;
+	}
+	range->num_frequency = val;
+
+	range->max_qual.qual = 100; /* what is correct max? This was not
+					* documented exactly. At least
+					* 69 has been observed. */
+	range->max_qual.level = 0; /* dB */
+	range->max_qual.noise = 0; /* dB */
+
+	/* What would be suitable values for "average/typical" qual? */
+	range->avg_qual.qual = 20;
+	range->avg_qual.level = -60;
+	range->avg_qual.noise = -95;
+	range->sensitivity = 3;
+
+	range->max_encoding_tokens = NR_WEP_KEYS;
+	range->num_encoding_sizes = 2;
+	range->encoding_size[0] = 5;
+	range->encoding_size[1] = 13;
+
+	range->min_rts = 0;
+	range->max_rts = 2347;
+	range->min_frag = 256;
+	range->max_frag = 2346;
+
+#if WIRELESS_EXT > 17
+	/* IW_ENC_CAPA_* bit field */
+	range->enc_capa = IW_ENC_CAPA_WPA | IW_ENC_CAPA_WPA2 | 
+					IW_ENC_CAPA_CIPHER_TKIP | IW_ENC_CAPA_CIPHER_CCMP;
+#endif
+
+	return 0;
+}
+
+int rt_ioctl_siwap(struct net_device *dev,
+		      struct iw_request_info *info,
+		      struct sockaddr *ap_addr, char *extra)
+{
+	PRTMP_ADAPTER pAdapter = NULL;
+    NDIS_802_11_MAC_ADDRESS Bssid;
+
+	GET_PAD_FROM_NET_DEV(pAdapter, dev);
+
+	//check if the interface is down
+	if(!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_INTERRUPT_IN_USE))
+	{
+       	DBGPRINT(RT_DEBUG_TRACE, ("INFO::Network is down!\n"));
+       	return -ENETDOWN;   
+    }
+
+	if (pAdapter->Mlme.CntlMachine.CurrState != CNTL_IDLE)
+    {
+        RTMP_MLME_RESET_STATE_MACHINE(pAdapter);
+        DBGPRINT(RT_DEBUG_TRACE, ("!!! MLME busy, reset MLME state machine !!!\n"));
+    }
+
+	if (NdisCmpMemory(ZERO_MAC_ADDR, ap_addr->sa_data, MAC_ADDR_LEN) == 0)
+        return 0;
+
+    // tell CNTL state machine to call NdisMSetInformationComplete() after completing
+    // this request, because this request is initiated by NDIS.
+    pAdapter->MlmeAux.CurrReqIsFromNdis = FALSE; 
+	// Prevent to connect AP again in STAMlmePeriodicExec
+	pAdapter->MlmeAux.AutoReconnectSsidLen= 32;
+
+    memset(Bssid, 0, MAC_ADDR_LEN);
+    memcpy(Bssid, ap_addr->sa_data, MAC_ADDR_LEN);
+    MlmeEnqueue(pAdapter, 
+                MLME_CNTL_STATE_MACHINE, 
+                OID_802_11_BSSID, 
+                sizeof(NDIS_802_11_MAC_ADDRESS),
+                (VOID *)&Bssid, 0);
+    
+    DBGPRINT(RT_DEBUG_TRACE, ("IOCTL::SIOCSIWAP %02x:%02x:%02x:%02x:%02x:%02x\n",
+        Bssid[0], Bssid[1], Bssid[2], Bssid[3], Bssid[4], Bssid[5]));
+
+	return 0;
+}
+
+int rt_ioctl_giwap(struct net_device *dev,
+		      struct iw_request_info *info,
+		      struct sockaddr *ap_addr, char *extra)
+{
+	PRTMP_ADAPTER pAdapter = NULL;
+
+	GET_PAD_FROM_NET_DEV(pAdapter, dev);
+
+	if (pAdapter == NULL)
+	{
+		/* if 1st open fail, pAd will be free;
+		   So the net_dev->priv will be NULL in 2rd open */
+		return -ENETDOWN;
+	}
+
+	//check if the interface is down
+    if(!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_INTERRUPT_IN_USE))
+    {
+        DBGPRINT(RT_DEBUG_TRACE, ("INFO::Network is down!\n"));
+        return -ENETDOWN;   
+    }
+
+	if (INFRA_ON(pAdapter) || ADHOC_ON(pAdapter))
+	{
+		ap_addr->sa_family = ARPHRD_ETHER;
+		memcpy(ap_addr->sa_data, &pAdapter->CommonCfg.Bssid, ETH_ALEN);
+	}
+#ifdef WPA_SUPPLICANT_SUPPORT    
+    // Add for RT2870
+    else if (pAdapter->StaCfg.WpaSupplicantUP != WPA_SUPPLICANT_DISABLE)
+    {
+        ap_addr->sa_family = ARPHRD_ETHER;
+        memcpy(ap_addr->sa_data, &pAdapter->MlmeAux.Bssid, ETH_ALEN);
+    }
+#endif // WPA_SUPPLICANT_SUPPORT //    
+	else
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("IOCTL::SIOCGIWAP(=EMPTY)\n"));
+		return -ENOTCONN;
+	}
+
+	return 0;
+}
+
+/*
+ * Units are in db above the noise floor. That means the
+ * rssi values reported in the tx/rx descriptors in the
+ * driver are the SNR expressed in db.
+ *
+ * If you assume that the noise floor is -95, which is an
+ * excellent assumption 99.5 % of the time, then you can
+ * derive the absolute signal level (i.e. -95 + rssi). 
+ * There are some other slight factors to take into account
+ * depending on whether the rssi measurement is from 11b,
+ * 11g, or 11a.   These differences are at most 2db and
+ * can be documented.
+ *
+ * NB: various calculations are based on the orinoco/wavelan
+ *     drivers for compatibility
+ */
+static void set_quality(PRTMP_ADAPTER pAdapter,
+                        struct iw_quality *iq, 
+                        PBSS_ENTRY pBssEntry)
+{
+	__u8 ChannelQuality;
+
+	// Normalize Rssi
+	if (pBssEntry->Rssi >= -50)
+        ChannelQuality = 100;
+	else if (pBssEntry->Rssi >= -80) // between -50 ~ -80dbm
+		ChannelQuality = (__u8)(24 + ((pBssEntry->Rssi + 80) * 26)/10);
+	else if (pBssEntry->Rssi >= -90)   // between -80 ~ -90dbm
+        ChannelQuality = (__u8)((pBssEntry->Rssi + 90) * 26)/10;   
+	else
+		ChannelQuality = 0;
+        
+    iq->qual = (__u8)ChannelQuality;
+    
+    iq->level = (__u8)(pBssEntry->Rssi);
+
+    if (pBssEntry->Rssi >= -70)
+		iq->noise = -92;
+	else
+		iq->noise = pBssEntry->Rssi - pBssEntry->MinSNR;		
+
+    iq->updated = pAdapter->iw_stats.qual.updated;
+}
+
+int rt_ioctl_iwaplist(struct net_device *dev,
+			struct iw_request_info *info,
+			struct iw_point *data, char *extra)
+{
+ 	PRTMP_ADAPTER pAdapter = NULL;	
+
+	struct sockaddr addr[IW_MAX_AP];
+	struct iw_quality qual[IW_MAX_AP];
+	int i;
+
+	GET_PAD_FROM_NET_DEV(pAdapter, dev);
+
+   	//check if the interface is down
+    if(!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_INTERRUPT_IN_USE))
+    {
+       	DBGPRINT(RT_DEBUG_TRACE, ("INFO::Network is down!\n"));
+		data->length = 0;
+		return 0;
+        //return -ENETDOWN;   
+	}
+
+	for (i = 0; i <IW_MAX_AP ; i++)
+	{
+		if (i >=  pAdapter->ScanTab.BssNr)
+			break;
+		addr[i].sa_family = ARPHRD_ETHER;
+			memcpy(addr[i].sa_data, &pAdapter->ScanTab.BssEntry[i].Bssid, MAC_ADDR_LEN);
+		set_quality(pAdapter, &qual[i], &pAdapter->ScanTab.BssEntry[i]);	
+	}
+	data->length = i;
+	memcpy(extra, &addr, i*sizeof(addr[0]));
+	data->flags = 1;		/* signal quality present (sort of) */
+	memcpy(extra + i*sizeof(addr[0]), &qual, i*sizeof(qual[i]));
+
+	return 0;
+}
+
+#if defined(SIOCGIWSCAN) || defined(RT_CFG80211_SUPPORT)
+int rt_ioctl_siwscan(struct net_device *dev,
+			struct iw_request_info *info,
+			struct iw_point *data, char *extra)
+{
+	PRTMP_ADAPTER pAdapter = NULL;
+	int Status = NDIS_STATUS_SUCCESS;
+
+	GET_PAD_FROM_NET_DEV(pAdapter, dev);
+
+	//check if the interface is down
+	if(!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_INTERRUPT_IN_USE))
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("INFO::Network is down!\n"));
+		return -ENETDOWN;   
+	}
+
+	if (MONITOR_ON(pAdapter))
+    {
+        DBGPRINT(RT_DEBUG_TRACE, ("!!! Driver is in Monitor Mode now !!!\n"));
+        return -EINVAL;
+    }
+
+	//Baron 2010/01/28
+    if (OPSTATUS_TEST_FLAG(pAdapter, fOP_STATUS_MEDIA_STATE_CONNECTED) && ((pAdapter->RalinkCounters.LastOneSecTotalTxCount > 50) || (pAdapter->RalinkCounters.LastOneSecRxOkDataCnt > 50)))		
+    {
+        DBGPRINT(RT_DEBUG_TRACE, ("!!! rt_ioctl_siwscan set::OID_802_11_BSSID_LIST_SCAN\n"));
+     	return  NDIS_STATUS_SUCCESS;
+    }
+
+#ifdef WPA_SUPPLICANT_SUPPORT
+	if ((pAdapter->StaCfg.WpaSupplicantUP & 0x7F) == WPA_SUPPLICANT_ENABLE)
+	{
+		pAdapter->StaCfg.WpaSupplicantScanCount++;
+	}
+#endif // WPA_SUPPLICANT_SUPPORT //
+
+    pAdapter->StaCfg.bScanReqIsFromWebUI = TRUE;
+	do{
+#ifdef WPA_SUPPLICANT_SUPPORT
+		if (((pAdapter->StaCfg.WpaSupplicantUP & 0x7F) == WPA_SUPPLICANT_ENABLE) &&
+			(pAdapter->StaCfg.WpaSupplicantScanCount > 3))
+		{
+			DBGPRINT(RT_DEBUG_TRACE, ("!!! WpaSupplicantScanCount > 3\n"));
+			Status = NDIS_STATUS_SUCCESS;
+			break;
+		}
+#endif // WPA_SUPPLICANT_SUPPORT //
+
+		if ((OPSTATUS_TEST_FLAG(pAdapter, fOP_STATUS_MEDIA_STATE_CONNECTED)) &&
+			((pAdapter->StaCfg.AuthMode == Ndis802_11AuthModeWPA) || 
+			(pAdapter->StaCfg.AuthMode == Ndis802_11AuthModeWPAPSK)) &&	
+			(pAdapter->StaCfg.PortSecured == WPA_802_1X_PORT_NOT_SECURED))
+		{
+			DBGPRINT(RT_DEBUG_TRACE, ("!!! Link UP, Port Not Secured! ignore this set::OID_802_11_BSSID_LIST_SCAN\n"));
+			Status = NDIS_STATUS_SUCCESS;
+			break;
+		}
+
+		if (pAdapter->Mlme.CntlMachine.CurrState != CNTL_IDLE)
+		{
+			RTMP_MLME_RESET_STATE_MACHINE(pAdapter);
+			DBGPRINT(RT_DEBUG_TRACE, ("!!! MLME busy, reset MLME state machine !!!\n"));
+		}
+
+		// Reset allowed scan retries
+		pAdapter->StaCfg.ScanCnt = 0;
+		
+		NdisGetSystemUpTime(&pAdapter->StaCfg.LastScanTime);
+
+		MlmeEnqueue(pAdapter, 
+			MLME_CNTL_STATE_MACHINE, 
+			OID_802_11_BSSID_LIST_SCAN, 
+			0,
+			NULL, 0);
+
+		Status = NDIS_STATUS_SUCCESS;
+		RTMP_MLME_HANDLER(pAdapter);
+	}while(0);
+	return NDIS_STATUS_SUCCESS;
+}
+
+int rt_ioctl_giwscan(struct net_device *dev,
+			struct iw_request_info *info,
+			struct iw_point *data, char *extra)
+{
+	PRTMP_ADAPTER pAdapter = NULL;
+	int i=0;
+	PSTRING current_ev = extra, previous_ev = extra;
+	PSTRING end_buf;
+	PSTRING current_val;
+	STRING custom[MAX_CUSTOM_LEN] = {0};
+#ifndef IWEVGENIE
+	unsigned char idx;
+#endif // IWEVGENIE //
+	struct iw_event iwe;
+
+	GET_PAD_FROM_NET_DEV(pAdapter, dev);
+
+	//check if the interface is down
+    if(!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_INTERRUPT_IN_USE))
+    {
+       	DBGPRINT(RT_DEBUG_TRACE, ("INFO::Network is down!\n"));
+        return -ENETDOWN;
+	}
+
+	if (RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS))
+    {
+		/*
+		 * Still scanning, indicate the caller should try again.
+		 */
+		pAdapter->StaCfg.bScanReqIsFromWebUI = TRUE;
+		return -EAGAIN;
+	}
+
+
+#ifdef WPA_SUPPLICANT_SUPPORT
+	if ((pAdapter->StaCfg.WpaSupplicantUP & 0x7F) == WPA_SUPPLICANT_ENABLE)
+	{
+		pAdapter->StaCfg.WpaSupplicantScanCount = 0;
+	}
+#endif // WPA_SUPPLICANT_SUPPORT //
+
+	if (pAdapter->ScanTab.BssNr == 0)
+	{
+		data->length = 0;
+		return 0;
+	}
+	
+#if WIRELESS_EXT >= 17
+    if (data->length > 0)
+        end_buf = extra + data->length;
+    else
+        end_buf = extra + IW_SCAN_MAX_DATA;
+#else
+    end_buf = extra + IW_SCAN_MAX_DATA;
+#endif
+
+	for (i = 0; i < pAdapter->ScanTab.BssNr; i++) 
+	{
+		if (current_ev >= end_buf)
+        {
+#if WIRELESS_EXT >= 17
+            return -E2BIG;
+#else
+			break;
+#endif
+        }
+		
+		//MAC address
+		//================================
+		memset(&iwe, 0, sizeof(iwe));
+		iwe.cmd = SIOCGIWAP;
+		iwe.u.ap_addr.sa_family = ARPHRD_ETHER;
+				memcpy(iwe.u.ap_addr.sa_data, &pAdapter->ScanTab.BssEntry[i].Bssid, ETH_ALEN);
+
+        previous_ev = current_ev;
+		current_ev = IWE_STREAM_ADD_EVENT(info, current_ev,end_buf, &iwe, IW_EV_ADDR_LEN);
+        if (current_ev == previous_ev)
+#if WIRELESS_EXT >= 17
+            return -E2BIG;
+#else
+			break;
+#endif
+
+		/* 
+		Protocol:
+			it will show scanned AP's WirelessMode .
+			it might be
+					802.11a
+					802.11a/n
+					802.11g/n
+					802.11b/g/n
+					802.11g
+					802.11b/g
+		*/
+		memset(&iwe, 0, sizeof(iwe));
+		iwe.cmd = SIOCGIWNAME;
+
+
+	{
+		PBSS_ENTRY pBssEntry=&pAdapter->ScanTab.BssEntry[i];
+		BOOLEAN isGonly=FALSE;
+		int rateCnt=0;
+
+		if (pBssEntry->Channel>14)
+		{
+			if (pBssEntry->HtCapabilityLen!=0)
+				strcpy(iwe.u.name,"802.11a/n");
+			else	
+				strcpy(iwe.u.name,"802.11a");
+		}
+		else
+		{
+			/*
+				if one of non B mode rate is set supported rate . it mean G only. 
+			*/
+			for (rateCnt=0;rateCnt<pBssEntry->SupRateLen;rateCnt++)
+			{									
+				/*
+					6Mbps(140) 9Mbps(146) and >=12Mbps(152) are supported rate , it mean G only. 
+				*/
+				if (pBssEntry->SupRate[rateCnt]==140 || pBssEntry->SupRate[rateCnt]==146 || pBssEntry->SupRate[rateCnt]>=152)
+					isGonly=TRUE;
+			}
+
+			for (rateCnt=0;rateCnt<pBssEntry->ExtRateLen;rateCnt++)
+			{
+				if (pBssEntry->ExtRate[rateCnt]==140 || pBssEntry->ExtRate[rateCnt]==146 || pBssEntry->ExtRate[rateCnt]>=152)
+					isGonly=TRUE;
+			}		
+			
+			
+			if (pBssEntry->HtCapabilityLen!=0)
+			{
+				if (isGonly==TRUE)
+					strcpy(iwe.u.name,"802.11g/n");
+				else
+					strcpy(iwe.u.name,"802.11b/g/n");
+			}
+			else
+			{
+				if (isGonly==TRUE)
+					strcpy(iwe.u.name,"802.11g");
+				else
+				{
+					if (pBssEntry->SupRateLen==4 && pBssEntry->ExtRateLen==0)
+						strcpy(iwe.u.name,"802.11b");
+					else
+						strcpy(iwe.u.name,"802.11b/g");		
+				}
+			}
+		}
+	}
+
+		previous_ev = current_ev;
+		current_ev = IWE_STREAM_ADD_EVENT(info, current_ev,end_buf, &iwe, IW_EV_ADDR_LEN);
+		if (current_ev == previous_ev)
+#if WIRELESS_EXT >= 17
+	   		return -E2BIG;
+#else
+			break;
+#endif
+
+		//ESSID	
+		//================================
+		memset(&iwe, 0, sizeof(iwe));
+		iwe.cmd = SIOCGIWESSID;
+		iwe.u.data.length = pAdapter->ScanTab.BssEntry[i].SsidLen;
+		iwe.u.data.flags = 1;
+ 
+        previous_ev = current_ev;
+		current_ev = IWE_STREAM_ADD_POINT(info, current_ev,end_buf, &iwe, (PSTRING) pAdapter->ScanTab.BssEntry[i].Ssid);
+        if (current_ev == previous_ev)
+#if WIRELESS_EXT >= 17
+            return -E2BIG;
+#else
+			break;
+#endif
+		
+		//Network Type 
+		//================================
+		memset(&iwe, 0, sizeof(iwe));
+		iwe.cmd = SIOCGIWMODE;
+		if (pAdapter->ScanTab.BssEntry[i].BssType == Ndis802_11IBSS)
+		{
+			iwe.u.mode = IW_MODE_ADHOC;
+		}
+		else if (pAdapter->ScanTab.BssEntry[i].BssType == Ndis802_11Infrastructure)
+		{
+			iwe.u.mode = IW_MODE_INFRA;
+		}
+		else
+		{
+			iwe.u.mode = IW_MODE_AUTO;
+		}
+		iwe.len = IW_EV_UINT_LEN;
+
+        previous_ev = current_ev;
+		current_ev = IWE_STREAM_ADD_EVENT(info, current_ev, end_buf, &iwe,  IW_EV_UINT_LEN);
+        if (current_ev == previous_ev)
+#if WIRELESS_EXT >= 17
+            return -E2BIG;
+#else
+			break;
+#endif
+
+		//Channel and Frequency
+		//================================
+		memset(&iwe, 0, sizeof(iwe));
+		iwe.cmd = SIOCGIWFREQ;
+		{
+			UCHAR ch = pAdapter->ScanTab.BssEntry[i].Channel;
+			ULONG	m = 0;
+			MAP_CHANNEL_ID_TO_KHZ(ch, m);
+			iwe.u.freq.m = m * 100;
+			iwe.u.freq.e = 1;
+		iwe.u.freq.i = 0;
+		previous_ev = current_ev;
+		current_ev = IWE_STREAM_ADD_EVENT(info, current_ev,end_buf, &iwe, IW_EV_FREQ_LEN);
+        if (current_ev == previous_ev)
+#if WIRELESS_EXT >= 17
+            return -E2BIG;
+#else
+			break;
+#endif
+		}	    
+
+        //Add quality statistics
+        //================================
+        memset(&iwe, 0, sizeof(iwe));
+    	iwe.cmd = IWEVQUAL;
+    	iwe.u.qual.level = 0;
+    	iwe.u.qual.noise = 0;
+		set_quality(pAdapter, &iwe.u.qual, &pAdapter->ScanTab.BssEntry[i]);
+    	current_ev = IWE_STREAM_ADD_EVENT(info, current_ev, end_buf, &iwe, IW_EV_QUAL_LEN);
+	if (current_ev == previous_ev)
+#if WIRELESS_EXT >= 17
+            return -E2BIG;
+#else
+			break;
+#endif
+
+		//Encyption key
+		//================================
+		memset(&iwe, 0, sizeof(iwe));
+		iwe.cmd = SIOCGIWENCODE;
+		if (CAP_IS_PRIVACY_ON (pAdapter->ScanTab.BssEntry[i].CapabilityInfo ))
+			iwe.u.data.flags =IW_ENCODE_ENABLED | IW_ENCODE_NOKEY;
+		else
+			iwe.u.data.flags = IW_ENCODE_DISABLED;
+
+        previous_ev = current_ev;		
+        current_ev = IWE_STREAM_ADD_POINT(info, current_ev, end_buf,&iwe, (char *)pAdapter->SharedKey[BSS0][(iwe.u.data.flags & IW_ENCODE_INDEX)-1].Key);
+        if (current_ev == previous_ev)
+#if WIRELESS_EXT >= 17
+            return -E2BIG;
+#else
+			break;
+#endif
+
+		//Bit Rate
+		//================================
+		if (pAdapter->ScanTab.BssEntry[i].SupRateLen)
+        {
+            UCHAR tmpRate = pAdapter->ScanTab.BssEntry[i].SupRate[pAdapter->ScanTab.BssEntry[i].SupRateLen-1];
+			memset(&iwe, 0, sizeof(iwe));
+			iwe.cmd = SIOCGIWRATE;
+    		current_val = current_ev + IW_EV_LCP_LEN;            
+            if (tmpRate == 0x82)
+                iwe.u.bitrate.value =  1 * 1000000;
+            else if (tmpRate == 0x84)
+                iwe.u.bitrate.value =  2 * 1000000;
+            else if (tmpRate == 0x8B)
+                iwe.u.bitrate.value =  5.5 * 1000000;
+            else if (tmpRate == 0x96)
+                iwe.u.bitrate.value =  11 * 1000000;
+            else
+    		    iwe.u.bitrate.value =  (tmpRate/2) * 1000000;
+            
+			if (pAdapter->ScanTab.BssEntry[i].ExtRateLen)
+			{
+				UCHAR tmpSupRate =(pAdapter->ScanTab.BssEntry[i].SupRate[pAdapter->ScanTab.BssEntry[i].SupRateLen-1]& 0x7f);
+				UCHAR tmpExtRate =(pAdapter->ScanTab.BssEntry[i].ExtRate[pAdapter->ScanTab.BssEntry[i].ExtRateLen-1]& 0x7f);
+				iwe.u.bitrate.value = (tmpSupRate > tmpExtRate) ? (tmpSupRate)*500000 : (tmpExtRate)*500000;	
+			}
+
+			if (tmpRate == 0x6c && pAdapter->ScanTab.BssEntry[i].HtCapabilityLen > 0)
+			{
+				int rate_count = sizeof(ralinkrate)/sizeof(__s32);
+				HT_CAP_INFO capInfo = pAdapter->ScanTab.BssEntry[i].HtCapability.HtCapInfo;
+				int shortGI = capInfo.ChannelWidth ? capInfo.ShortGIfor40 : capInfo.ShortGIfor20;
+				int maxMCS = pAdapter->ScanTab.BssEntry[i].HtCapability.MCSSet[1] ?  15 : 7;
+				int rate_index = 12 + ((UCHAR)capInfo.ChannelWidth * 24) + ((UCHAR)shortGI *48) + ((UCHAR)maxMCS);
+				if (rate_index < 0)
+					rate_index = 0;
+				if (rate_index > rate_count)
+					rate_index = rate_count;
+				iwe.u.bitrate.value	=  ralinkrate[rate_index] * 500000;
+			}
+            
+			iwe.u.bitrate.disabled = 0;
+			current_val = IWE_STREAM_ADD_VALUE(info, current_ev,
+				current_val, end_buf, &iwe,
+    			IW_EV_PARAM_LEN);            
+
+        	if((current_val-current_ev)>IW_EV_LCP_LEN)
+            	current_ev = current_val;
+        	else
+#if WIRELESS_EXT >= 17
+                return -E2BIG;
+#else
+			    break;
+#endif
+        }
+            
+#ifdef IWEVGENIE
+        //WPA IE
+		if (pAdapter->ScanTab.BssEntry[i].WpaIE.IELen > 0)
+        {
+			memset(&iwe, 0, sizeof(iwe));
+			memset(&custom[0], 0, MAX_CUSTOM_LEN);
+			memcpy(custom, &(pAdapter->ScanTab.BssEntry[i].WpaIE.IE[0]), 
+						   pAdapter->ScanTab.BssEntry[i].WpaIE.IELen);
+			iwe.cmd = IWEVGENIE;
+			iwe.u.data.length = pAdapter->ScanTab.BssEntry[i].WpaIE.IELen;
+			current_ev = IWE_STREAM_ADD_POINT(info, current_ev, end_buf, &iwe, custom);
+			if (current_ev == previous_ev)
+#if WIRELESS_EXT >= 17
+                return -E2BIG;
+#else
+			    break;
+#endif
+		}
+            
+		//WPA2 IE
+        if (pAdapter->ScanTab.BssEntry[i].RsnIE.IELen > 0)
+        {
+        	memset(&iwe, 0, sizeof(iwe));
+			memset(&custom[0], 0, MAX_CUSTOM_LEN);
+			memcpy(custom, &(pAdapter->ScanTab.BssEntry[i].RsnIE.IE[0]), 
+						   pAdapter->ScanTab.BssEntry[i].RsnIE.IELen);
+			iwe.cmd = IWEVGENIE;
+			iwe.u.data.length = pAdapter->ScanTab.BssEntry[i].RsnIE.IELen;
+			current_ev = IWE_STREAM_ADD_POINT(info, current_ev, end_buf, &iwe, custom);
+			if (current_ev == previous_ev)
+#if WIRELESS_EXT >= 17
+                return -E2BIG;
+#else
+			    break;
+#endif
+        }
+#else
+        //WPA IE
+		//================================
+        if (pAdapter->ScanTab.BssEntry[i].WpaIE.IELen > 0)
+        {
+    		NdisZeroMemory(&iwe, sizeof(iwe));
+			memset(&custom[0], 0, MAX_CUSTOM_LEN);
+    		iwe.cmd = IWEVCUSTOM;
+            iwe.u.data.length = (pAdapter->ScanTab.BssEntry[i].WpaIE.IELen * 2) + 7;
+            NdisMoveMemory(custom, "wpa_ie=", 7);
+            for (idx = 0; idx < pAdapter->ScanTab.BssEntry[i].WpaIE.IELen; idx++)
+                sprintf(custom, "%s%02x", custom, pAdapter->ScanTab.BssEntry[i].WpaIE.IE[idx]);
+            previous_ev = current_ev;
+    		current_ev = IWE_STREAM_ADD_POINT(info, current_ev, end_buf, &iwe,  custom);
+            if (current_ev == previous_ev)
+#if WIRELESS_EXT >= 17
+                return -E2BIG;
+#else
+			    break;
+#endif
+        }
+
+        //WPA2 IE
+        if (pAdapter->ScanTab.BssEntry[i].RsnIE.IELen > 0)
+        {
+    		NdisZeroMemory(&iwe, sizeof(iwe));
+			memset(&custom[0], 0, MAX_CUSTOM_LEN);
+    		iwe.cmd = IWEVCUSTOM;
+            iwe.u.data.length = (pAdapter->ScanTab.BssEntry[i].RsnIE.IELen * 2) + 7;
+            NdisMoveMemory(custom, "rsn_ie=", 7);
+			for (idx = 0; idx < pAdapter->ScanTab.BssEntry[i].RsnIE.IELen; idx++)
+                sprintf(custom, "%s%02x", custom, pAdapter->ScanTab.BssEntry[i].RsnIE.IE[idx]);
+            previous_ev = current_ev;
+    		current_ev = IWE_STREAM_ADD_POINT(info, current_ev, end_buf, &iwe,  custom);
+            if (current_ev == previous_ev)
+#if WIRELESS_EXT >= 17
+                return -E2BIG;
+#else
+			    break;
+#endif
+        }
+#endif // IWEVGENIE //
+	}
+
+	data->length = current_ev - extra;
+    pAdapter->StaCfg.bScanReqIsFromWebUI = FALSE;
+	DBGPRINT(RT_DEBUG_ERROR ,("===>rt_ioctl_giwscan. %d(%d) BSS returned, data->length = %d\n",i , pAdapter->ScanTab.BssNr, data->length));
+	return 0;
+}
+#endif
+
+int rt_ioctl_siwessid(struct net_device *dev,
+			 struct iw_request_info *info,
+			 struct iw_point *data, char *essid)
+{
+	PRTMP_ADAPTER pAdapter = NULL;
+
+	GET_PAD_FROM_NET_DEV(pAdapter, dev);
+
+	//check if the interface is down
+    if(!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_INTERRUPT_IN_USE))
+    {
+       	DBGPRINT(RT_DEBUG_TRACE, ("INFO::Network is down!\n"));
+       	return -ENETDOWN;   
+    }
+
+	if (data->flags)
+	{
+		PSTRING	pSsidString = NULL;
+		
+		// Includes null character.
+		if (data->length > (IW_ESSID_MAX_SIZE + 1)) 
+			return -E2BIG;
+
+		pSsidString = kmalloc(MAX_LEN_OF_SSID+1, MEM_ALLOC_FLAG);
+		if (pSsidString)
+        {
+			NdisZeroMemory(pSsidString, MAX_LEN_OF_SSID+1);
+			NdisMoveMemory(pSsidString, essid, data->length);
+			if (Set_SSID_Proc(pAdapter, pSsidString) == FALSE)
+				return -EINVAL;
+		}
+		else
+			return -ENOMEM;
+		}
+	else
+    {
+		// ANY ssid
+		if (Set_SSID_Proc(pAdapter, "") == FALSE)
+			return -EINVAL;
+    }
+	return 0;
+}
+
+int rt_ioctl_giwessid(struct net_device *dev,
+			 struct iw_request_info *info,
+			 struct iw_point *data, char *essid)
+{
+	PRTMP_ADAPTER pAdapter = NULL;
+
+	GET_PAD_FROM_NET_DEV(pAdapter, dev);
+
+	if (pAdapter == NULL)
+	{
+		/* if 1st open fail, pAd will be free;
+		   So the net_dev->priv will be NULL in 2rd open */
+		return -ENETDOWN;
+	}
+
+	//check if the interface is down
+    if(!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_INTERRUPT_IN_USE))
+    {
+       	DBGPRINT(RT_DEBUG_TRACE, ("INFO::Network is down!\n"));
+        return -ENETDOWN;
+	}
+
+	data->flags = 1;		
+    if (MONITOR_ON(pAdapter))
+    {
+        data->length  = 0;
+        return 0;
+    }
+
+	if (OPSTATUS_TEST_FLAG(pAdapter, fOP_STATUS_MEDIA_STATE_CONNECTED))
+	{
+		DBGPRINT(RT_DEBUG_TRACE ,("MediaState is connected\n"));
+		data->length = pAdapter->CommonCfg.SsidLen;
+		memcpy(essid, pAdapter->CommonCfg.Ssid, pAdapter->CommonCfg.SsidLen);
+	}
+	else
+	{//the ANY ssid was specified
+		data->length  = 0;
+		DBGPRINT(RT_DEBUG_TRACE ,("MediaState is not connected, ess\n"));
+	}
+
+	return 0;
+
+}
+
+int rt_ioctl_siwnickn(struct net_device *dev,
+			 struct iw_request_info *info,
+			 struct iw_point *data, char *nickname)
+{
+	PRTMP_ADAPTER pAdapter = NULL;
+
+	GET_PAD_FROM_NET_DEV(pAdapter, dev);
+
+    //check if the interface is down
+    if(!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_INTERRUPT_IN_USE))
+    {
+        DBGPRINT(RT_DEBUG_TRACE ,("INFO::Network is down!\n"));
+        return -ENETDOWN;   
+    }
+
+	if (data->length > IW_ESSID_MAX_SIZE)
+		return -EINVAL;
+
+	memset(pAdapter->nickname, 0, IW_ESSID_MAX_SIZE + 1);
+	memcpy(pAdapter->nickname, nickname, data->length);
+
+
+	return 0;
+}
+
+int rt_ioctl_giwnickn(struct net_device *dev,
+			 struct iw_request_info *info,
+			 struct iw_point *data, char *nickname)
+{
+	PRTMP_ADAPTER pAdapter = NULL;
+
+	GET_PAD_FROM_NET_DEV(pAdapter, dev);
+
+	if (pAdapter == NULL)
+	{
+		/* if 1st open fail, pAd will be free;
+		   So the net_dev->priv will be NULL in 2rd open */
+		return -ENETDOWN;
+	}
+
+	//check if the interface is down
+    if(!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_INTERRUPT_IN_USE))
+    {
+       	DBGPRINT(RT_DEBUG_TRACE, ("INFO::Network is down!\n"));
+		data->length = 0;
+        return -ENETDOWN;
+	}
+
+	if (data->length > strlen((PSTRING) pAdapter->nickname) + 1)
+		data->length = strlen((PSTRING) pAdapter->nickname) + 1;
+	if (data->length > 0) {
+		memcpy(nickname, pAdapter->nickname, data->length-1);
+		nickname[data->length-1] = '\0';
+	}
+	return 0;
+}
+
+int rt_ioctl_siwrts(struct net_device *dev,
+		       struct iw_request_info *info,
+		       struct iw_param *rts, char *extra)
+{
+	PRTMP_ADAPTER pAdapter = NULL;
+	u16 val;
+
+	GET_PAD_FROM_NET_DEV(pAdapter, dev);
+
+    //check if the interface is down
+    if(!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_INTERRUPT_IN_USE))
+    {
+        DBGPRINT(RT_DEBUG_TRACE, ("INFO::Network is down!\n"));
+        return -ENETDOWN;   
+    }
+	
+	if (rts->disabled)
+		val = MAX_RTS_THRESHOLD;
+	else if (rts->value < 0 || rts->value > MAX_RTS_THRESHOLD)
+		return -EINVAL;
+	else if (rts->value == 0)
+	    val = MAX_RTS_THRESHOLD;
+	else
+		val = rts->value;
+	
+	if (val != pAdapter->CommonCfg.RtsThreshold)
+		pAdapter->CommonCfg.RtsThreshold = val;
+
+	return 0;
+}
+
+int rt_ioctl_giwrts(struct net_device *dev,
+		       struct iw_request_info *info,
+		       struct iw_param *rts, char *extra)
+{
+	PRTMP_ADAPTER pAdapter = NULL;
+
+	GET_PAD_FROM_NET_DEV(pAdapter, dev);
+
+	if (pAdapter == NULL)
+	{
+		/* if 1st open fail, pAd will be free;
+		   So the net_dev->priv will be NULL in 2rd open */
+		return -ENETDOWN;
+	}
+
+	//check if the interface is down
+    	if(!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_INTERRUPT_IN_USE))
+    	{
+      		DBGPRINT(RT_DEBUG_TRACE, ("INFO::Network is down!\n"));
+        	return -ENETDOWN;   
+    	}
+
+	rts->value = pAdapter->CommonCfg.RtsThreshold;
+	rts->disabled = (rts->value == MAX_RTS_THRESHOLD);
+	rts->fixed = 1;
+
+	return 0;
+}
+
+int rt_ioctl_siwfrag(struct net_device *dev,
+			struct iw_request_info *info,
+			struct iw_param *frag, char *extra)
+{
+	PRTMP_ADAPTER pAdapter = NULL;
+	u16 val;
+
+	GET_PAD_FROM_NET_DEV(pAdapter, dev);
+
+	//check if the interface is down
+    	if(!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_INTERRUPT_IN_USE))
+    	{
+      		DBGPRINT(RT_DEBUG_TRACE, ("INFO::Network is down!\n"));
+        	return -ENETDOWN;   
+    	}
+
+	if (frag->disabled)
+		val = MAX_FRAG_THRESHOLD;
+	else if (frag->value >= MIN_FRAG_THRESHOLD || frag->value <= MAX_FRAG_THRESHOLD)
+        val = __cpu_to_le16(frag->value & ~0x1); /* even numbers only */
+	else if (frag->value == 0)
+	    val = MAX_FRAG_THRESHOLD;
+	else
+		return -EINVAL;
+
+	pAdapter->CommonCfg.FragmentThreshold = val;
+	return 0;
+}
+
+int rt_ioctl_giwfrag(struct net_device *dev,
+			struct iw_request_info *info,
+			struct iw_param *frag, char *extra)
+{
+	PRTMP_ADAPTER pAdapter = NULL;
+
+	GET_PAD_FROM_NET_DEV(pAdapter, dev);
+
+	if (pAdapter == NULL)
+	{
+		/* if 1st open fail, pAd will be free;
+		   So the net_dev->priv will be NULL in 2rd open */
+		return -ENETDOWN;
+	}
+
+	//check if the interface is down
+    	if(!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_INTERRUPT_IN_USE))
+    	{
+      		DBGPRINT(RT_DEBUG_TRACE, ("INFO::Network is down!\n"));
+        	return -ENETDOWN;   
+    	}
+		
+	frag->value = pAdapter->CommonCfg.FragmentThreshold;
+	frag->disabled = (frag->value == MAX_FRAG_THRESHOLD);
+	frag->fixed = 1;
+
+	return 0;
+}
+
+#define MAX_WEP_KEY_SIZE 13
+#define MIN_WEP_KEY_SIZE 5
+int rt_ioctl_siwencode(struct net_device *dev,
+			  struct iw_request_info *info,
+			  struct iw_point *erq, char *extra)
+{
+	PRTMP_ADAPTER pAdapter = NULL;
+
+	GET_PAD_FROM_NET_DEV(pAdapter, dev);
+
+	//check if the interface is down
+    	if(!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_INTERRUPT_IN_USE))
+    	{
+      		DBGPRINT(RT_DEBUG_TRACE, ("INFO::Network is down!\n"));
+        	return -ENETDOWN;   
+    	}
+
+	if ((erq->length == 0) &&
+        (erq->flags & IW_ENCODE_DISABLED))
+	{
+		pAdapter->StaCfg.PairCipher = Ndis802_11WEPDisabled;
+		pAdapter->StaCfg.GroupCipher = Ndis802_11WEPDisabled;
+		pAdapter->StaCfg.WepStatus = Ndis802_11WEPDisabled;
+        pAdapter->StaCfg.OrigWepStatus = pAdapter->StaCfg.WepStatus;
+        pAdapter->StaCfg.AuthMode = Ndis802_11AuthModeOpen;
+        goto done;
+	}
+	else if (erq->flags & IW_ENCODE_RESTRICTED || erq->flags & IW_ENCODE_OPEN)
+	{
+	    //pAdapter->StaCfg.PortSecured = WPA_802_1X_PORT_SECURED;
+		STA_PORT_SECURED(pAdapter);
+		pAdapter->StaCfg.PairCipher = Ndis802_11WEPEnabled;
+		pAdapter->StaCfg.GroupCipher = Ndis802_11WEPEnabled;
+		pAdapter->StaCfg.WepStatus = Ndis802_11WEPEnabled;
+        pAdapter->StaCfg.OrigWepStatus = pAdapter->StaCfg.WepStatus;
+		if (erq->flags & IW_ENCODE_RESTRICTED)
+			pAdapter->StaCfg.AuthMode = Ndis802_11AuthModeShared;
+    	else
+			pAdapter->StaCfg.AuthMode = Ndis802_11AuthModeOpen;
+	}
+    
+    if (erq->length > 0) 
+	{
+		int keyIdx = (erq->flags & IW_ENCODE_INDEX) - 1;
+		/* Check the size of the key */
+		if (erq->length > MAX_WEP_KEY_SIZE) 
+		{
+			return -EINVAL;
+		}
+		/* Check key index */
+		if ((keyIdx < 0) || (keyIdx >= NR_WEP_KEYS))
+        {
+            DBGPRINT(RT_DEBUG_TRACE ,("==>rt_ioctl_siwencode::Wrong keyIdx=%d! Using default key instead (%d)\n", 
+                                        keyIdx, pAdapter->StaCfg.DefaultKeyId));
+            
+            //Using default key
+			keyIdx = pAdapter->StaCfg.DefaultKeyId;   
+        }
+		else
+			pAdapter->StaCfg.DefaultKeyId = keyIdx;
+
+        NdisZeroMemory(pAdapter->SharedKey[BSS0][keyIdx].Key,  16);
+		
+		if (erq->length == MAX_WEP_KEY_SIZE)
+        {      
+			pAdapter->SharedKey[BSS0][keyIdx].KeyLen = MAX_WEP_KEY_SIZE;
+            pAdapter->SharedKey[BSS0][keyIdx].CipherAlg = CIPHER_WEP128;
+		}
+		else if (erq->length == MIN_WEP_KEY_SIZE)
+        {      
+            pAdapter->SharedKey[BSS0][keyIdx].KeyLen = MIN_WEP_KEY_SIZE;
+            pAdapter->SharedKey[BSS0][keyIdx].CipherAlg = CIPHER_WEP64;
+		}
+		else
+			/* Disable the key */
+			pAdapter->SharedKey[BSS0][keyIdx].KeyLen = 0;
+
+		/* Check if the key is not marked as invalid */
+		if(!(erq->flags & IW_ENCODE_NOKEY)) 
+		{
+			/* Copy the key in the driver */
+			NdisMoveMemory(pAdapter->SharedKey[BSS0][keyIdx].Key, extra, erq->length);
+        }
+	} 
+    else 
+			{
+		/* Do we want to just set the transmit key index ? */
+		int index = (erq->flags & IW_ENCODE_INDEX) - 1;
+		if ((index >= 0) && (index < 4)) 
+        {      
+			pAdapter->StaCfg.DefaultKeyId = index;
+            }
+        else
+			/* Don't complain if only change the mode */
+		if(!erq->flags & IW_ENCODE_MODE) 
+		{
+				return -EINVAL;
+		}
+	}
+		
+done:
+    DBGPRINT(RT_DEBUG_TRACE ,("==>rt_ioctl_siwencode::erq->flags=%x\n",erq->flags));
+	DBGPRINT(RT_DEBUG_TRACE ,("==>rt_ioctl_siwencode::AuthMode=%x\n",pAdapter->StaCfg.AuthMode));
+	DBGPRINT(RT_DEBUG_TRACE ,("==>rt_ioctl_siwencode::DefaultKeyId=%x, KeyLen = %d\n",pAdapter->StaCfg.DefaultKeyId , pAdapter->SharedKey[BSS0][pAdapter->StaCfg.DefaultKeyId].KeyLen));
+	DBGPRINT(RT_DEBUG_TRACE ,("==>rt_ioctl_siwencode::WepStatus=%x\n",pAdapter->StaCfg.WepStatus));
+	return 0;
+}
+
+int
+rt_ioctl_giwencode(struct net_device *dev,
+			  struct iw_request_info *info,
+			  struct iw_point *erq, char *key)
+{
+	int kid;
+	PRTMP_ADAPTER pAdapter = NULL;
+
+	GET_PAD_FROM_NET_DEV(pAdapter, dev);
+
+	if (pAdapter == NULL)
+	{
+		/* if 1st open fail, pAd will be free;
+		   So the net_dev->priv will be NULL in 2rd open */
+		return -ENETDOWN;
+	}
+
+	//check if the interface is down
+	if(!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_INTERRUPT_IN_USE))
+	{
+  		DBGPRINT(RT_DEBUG_TRACE, ("INFO::Network is down!\n"));
+    	return -ENETDOWN;   
+	}
+		
+	kid = erq->flags & IW_ENCODE_INDEX;
+	DBGPRINT(RT_DEBUG_TRACE, ("===>rt_ioctl_giwencode %d\n", erq->flags & IW_ENCODE_INDEX));
+
+	if (pAdapter->StaCfg.WepStatus == Ndis802_11WEPDisabled)
+	{
+		erq->length = 0;
+		erq->flags = IW_ENCODE_DISABLED;
+	} 
+	else if ((kid > 0) && (kid <=4))
+	{
+		// copy wep key
+		erq->flags = kid ;			/* NB: base 1 */
+		if (erq->length > pAdapter->SharedKey[BSS0][kid-1].KeyLen)
+			erq->length = pAdapter->SharedKey[BSS0][kid-1].KeyLen;
+		memcpy(key, pAdapter->SharedKey[BSS0][kid-1].Key, erq->length);
+		//if ((kid == pAdapter->PortCfg.DefaultKeyId))
+		//erq->flags |= IW_ENCODE_ENABLED;	/* XXX */
+		if (pAdapter->StaCfg.AuthMode == Ndis802_11AuthModeShared)
+			erq->flags |= IW_ENCODE_RESTRICTED;		/* XXX */
+		else
+			erq->flags |= IW_ENCODE_OPEN;		/* XXX */
+		
+	}
+	else if (kid == 0)
+	{
+		if (pAdapter->StaCfg.AuthMode == Ndis802_11AuthModeShared)
+			erq->flags |= IW_ENCODE_RESTRICTED;		/* XXX */
+		else
+			erq->flags |= IW_ENCODE_OPEN;		/* XXX */
+		erq->length = pAdapter->SharedKey[BSS0][pAdapter->StaCfg.DefaultKeyId].KeyLen;
+		memcpy(key, pAdapter->SharedKey[BSS0][pAdapter->StaCfg.DefaultKeyId].Key, erq->length);
+		// copy default key ID
+		if (pAdapter->StaCfg.AuthMode == Ndis802_11AuthModeShared)
+			erq->flags |= IW_ENCODE_RESTRICTED;		/* XXX */
+		else
+			erq->flags |= IW_ENCODE_OPEN;		/* XXX */
+		erq->flags = pAdapter->StaCfg.DefaultKeyId + 1;			/* NB: base 1 */
+		erq->flags |= IW_ENCODE_ENABLED;	/* XXX */
+	}
+		
+	return 0;
+
+}
+
+
+static int
+rt_private_get_statistics(struct net_device *dev, struct iw_request_info *info,
+		struct iw_point *wrq, char *extra)
+{
+	INT				Status = 0;
+    PRTMP_ADAPTER   pAd = NULL;
+
+	GET_PAD_FROM_NET_DEV(pAd, dev);
+
+	//check if the interface is down
+    if(!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_IN_USE))
+    {
+       	DBGPRINT(RT_DEBUG_TRACE, ("INFO::Network is down!\n"));
+        return -ENETDOWN;
+	}
+
+    if (extra == NULL)
+    {
+        wrq->length = 0;
+        return -EIO;
+    }
+    
+    memset(extra, 0x00, IW_PRIV_SIZE_MASK);
+    sprintf(extra, "\n\n");
+
+#ifdef RALINK_ATE
+	if (ATE_ON(pAd))
+	{
+	    sprintf(extra+strlen(extra), "Tx success                      = %ld\n", (ULONG)pAd->ate.TxDoneCount);
+	    //sprintf(extra+strlen(extra), "Tx success without retry        = %ld\n", (ULONG)pAd->ate.TxDoneCount);
+	}
+	else
+#endif // RALINK_ATE //
+	{
+	    sprintf(extra+strlen(extra), "Tx success                      = %lu\n", (ULONG)pAd->WlanCounters.TransmittedFragmentCount.u.LowPart);
+	}
+    sprintf(extra+strlen(extra), "Tx retry count          		  = %lu\n", (ULONG)pAd->WlanCounters.RetryCount.u.LowPart);
+    sprintf(extra+strlen(extra), "Tx fail to Rcv ACK after retry  = %lu\n", (ULONG)pAd->WlanCounters.FailedCount.u.LowPart);
+    sprintf(extra+strlen(extra), "RTS Success Rcv CTS             = %lu\n", (ULONG)pAd->WlanCounters.RTSSuccessCount.u.LowPart);
+    sprintf(extra+strlen(extra), "RTS Fail Rcv CTS                = %lu\n", (ULONG)pAd->WlanCounters.RTSFailureCount.u.LowPart);
+
+    sprintf(extra+strlen(extra), "Rx success                      = %lu\n", (ULONG)pAd->WlanCounters.ReceivedFragmentCount.QuadPart);
+    sprintf(extra+strlen(extra), "Rx with CRC                     = %lu\n", (ULONG)pAd->WlanCounters.FCSErrorCount.u.LowPart);
+    sprintf(extra+strlen(extra), "Rx drop due to out of resource  = %lu\n", (ULONG)pAd->Counters8023.RxNoBuffer);
+    sprintf(extra+strlen(extra), "Rx duplicate frame              = %lu\n", (ULONG)pAd->WlanCounters.FrameDuplicateCount.u.LowPart);
+
+    sprintf(extra+strlen(extra), "False CCA (one second)          = %lu\n", (ULONG)pAd->RalinkCounters.OneSecFalseCCACnt);
+
+#ifdef RALINK_ATE
+	if (ATE_ON(pAd))
+	{
+		if (pAd->ate.RxAntennaSel == 0)
+		{
+    		sprintf(extra+strlen(extra), "RSSI-A                          = %ld\n", (LONG)(pAd->ate.LastRssi0 - pAd->BbpRssiToDbmDelta));
+			sprintf(extra+strlen(extra), "RSSI-B (if available)           = %ld\n", (LONG)(pAd->ate.LastRssi1 - pAd->BbpRssiToDbmDelta));
+			sprintf(extra+strlen(extra), "RSSI-C (if available)           = %ld\n\n", (LONG)(pAd->ate.LastRssi2 - pAd->BbpRssiToDbmDelta));
+		}
+		else
+		{
+    		sprintf(extra+strlen(extra), "RSSI                            = %ld\n", (LONG)(pAd->ate.LastRssi0 - pAd->BbpRssiToDbmDelta));
+		}
+	}
+	else
+#endif // RALINK_ATE //
+	{
+    	sprintf(extra+strlen(extra), "RSSI-A                          = %ld\n", (LONG)(pAd->StaCfg.RssiSample.LastRssi0 - pAd->BbpRssiToDbmDelta));
+        sprintf(extra+strlen(extra), "RSSI-B (if available)           = %ld\n", (LONG)(pAd->StaCfg.RssiSample.LastRssi1 - pAd->BbpRssiToDbmDelta));
+        sprintf(extra+strlen(extra), "RSSI-C (if available)           = %ld\n\n", (LONG)(pAd->StaCfg.RssiSample.LastRssi2 - pAd->BbpRssiToDbmDelta));
+	}   
+#ifdef WPA_SUPPLICANT_SUPPORT
+    sprintf(extra+strlen(extra), "WpaSupplicantUP                 = %d\n\n", pAd->StaCfg.WpaSupplicantUP);
+#endif // WPA_SUPPLICANT_SUPPORT //
+
+
+
+	// display pin code
+	sprintf(extra+strlen(extra), "RT2860 Linux STA PinCode\t%08u\n", GenerateWpsPinCode(pAd, BSS0));
+        
+    wrq->length = strlen(extra) + 1; // 1: size of '\0'
+    DBGPRINT(RT_DEBUG_TRACE, ("<== rt_private_get_statistics, wrq->length = %d\n", wrq->length));
+
+    return Status;
+}
+
+#ifdef DOT11_N_SUPPORT
+void	getBaInfo(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			pOutBuf)
+{
+	INT i, j;
+	BA_ORI_ENTRY *pOriBAEntry;
+	BA_REC_ENTRY *pRecBAEntry;
+
+	for (i=0; i<MAX_LEN_OF_MAC_TABLE; i++)
+	{
+		PMAC_TABLE_ENTRY pEntry = &pAd->MacTab.Content[i];
+		if (((IS_ENTRY_CLIENT(pEntry) || IS_ENTRY_APCLI(pEntry) || IS_ENTRY_TDLS(pEntry)) && (pEntry->Sst == SST_ASSOC))
+			|| IS_ENTRY_WDS(pEntry) || IS_ENTRY_MESH(pEntry))
+		{		
+			sprintf(pOutBuf, "%s\n%02X:%02X:%02X:%02X:%02X:%02X (Aid = %d) (AP) -\n",
+                pOutBuf,
+				pEntry->Addr[0], pEntry->Addr[1], pEntry->Addr[2],
+				pEntry->Addr[3], pEntry->Addr[4], pEntry->Addr[5], pEntry->Aid);
+			
+			sprintf(pOutBuf, "%s[Recipient]\n", pOutBuf);
+			for (j=0; j < NUM_OF_TID; j++)
+			{
+				if (pEntry->BARecWcidArray[j] != 0)
+				{
+					pRecBAEntry =&pAd->BATable.BARecEntry[pEntry->BARecWcidArray[j]];
+					sprintf(pOutBuf, "%sTID=%d, BAWinSize=%d, LastIndSeq=%d, ReorderingPkts=%d\n", pOutBuf, j, pRecBAEntry->BAWinSize, pRecBAEntry->LastIndSeq, pRecBAEntry->list.qlen);
+				}
+			}
+			sprintf(pOutBuf, "%s\n", pOutBuf);
+
+			sprintf(pOutBuf, "%s[Originator]\n", pOutBuf);
+			for (j=0; j < NUM_OF_TID; j++)
+			{
+				if (pEntry->BAOriWcidArray[j] != 0)
+				{
+					pOriBAEntry =&pAd->BATable.BAOriEntry[pEntry->BAOriWcidArray[j]];
+					sprintf(pOutBuf, "%sTID=%d, BAWinSize=%d, StartSeq=%d, CurTxSeq=%d\n", pOutBuf, j, pOriBAEntry->BAWinSize, pOriBAEntry->Sequence, pEntry->TxSeq[j]);
+				}
+			}
+			sprintf(pOutBuf, "%s\n\n", pOutBuf);
+		}
+        if (strlen(pOutBuf) > (IW_PRIV_SIZE_MASK - 30))
+                break;
+	}
+
+	return;
+}
+#endif // DOT11_N_SUPPORT //
+
+static int
+rt_private_show(struct net_device *dev, struct iw_request_info *info,
+		struct iw_point *wrq, PSTRING extra)
+{
+	INT				Status = 0;
+	PRTMP_ADAPTER   pAd;
+	POS_COOKIE		pObj;
+	u32             subcmd = wrq->flags;
+
+	GET_PAD_FROM_NET_DEV(pAd, dev);
+
+	if (pAd == NULL)
+	{
+		/* if 1st open fail, pAd will be free;
+		   So the net_dev->priv will be NULL in 2rd open */
+		return -ENETDOWN;
+	}
+
+	//check if the interface is down
+    if(!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_IN_USE))
+    {
+       	DBGPRINT(RT_DEBUG_TRACE, ("INFO::Network is down!\n"));
+        return -ENETDOWN;
+	}
+
+	pObj = (POS_COOKIE) pAd->OS_Cookie;
+	if (extra == NULL)
+	{
+		wrq->length = 0;
+		return -EIO;
+	}
+	memset(extra, 0x00, IW_PRIV_SIZE_MASK);
+    
+	{
+		pObj->ioctl_if_type = INT_MAIN;
+		pObj->ioctl_if = MAIN_MBSSID;
+	}
+    
+    switch(subcmd)
+    {
+
+        case SHOW_CONN_STATUS:
+            if (MONITOR_ON(pAd))
+            {
+#ifdef DOT11_N_SUPPORT
+                if (pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED &&
+                    pAd->CommonCfg.RegTransmitSetting.field.BW)
+                    sprintf(extra, "Monitor Mode(CentralChannel %d)\n", pAd->CommonCfg.CentralChannel);
+                else
+#endif // DOT11_N_SUPPORT //
+                    sprintf(extra, "Monitor Mode(Channel %d)\n", pAd->CommonCfg.Channel);
+            }
+            else
+            {
+                if (pAd->IndicateMediaState == NdisMediaStateConnected)
+            	{        	    
+            	    if (INFRA_ON(pAd))
+                    {   
+                    sprintf(extra, "Connected(AP: %s[%02X:%02X:%02X:%02X:%02X:%02X])\n", 
+                                    pAd->CommonCfg.Ssid, 
+                                    pAd->CommonCfg.Bssid[0],
+                                    pAd->CommonCfg.Bssid[1],
+                                    pAd->CommonCfg.Bssid[2],
+                                    pAd->CommonCfg.Bssid[3],
+                                    pAd->CommonCfg.Bssid[4],
+                                    pAd->CommonCfg.Bssid[5]);
+            		DBGPRINT(RT_DEBUG_TRACE ,("Ssid=%s ,Ssidlen = %d\n",pAd->CommonCfg.Ssid, pAd->CommonCfg.SsidLen));
+            	}
+                    else if (ADHOC_ON(pAd))
+                        sprintf(extra, "Connected\n");
+            	}
+            	else
+            	{
+            	    sprintf(extra, "Disconnected\n");
+            		DBGPRINT(RT_DEBUG_TRACE ,("ConnStatus is not connected\n"));
+            	}
+            }
+            wrq->length = strlen(extra) + 1; // 1: size of '\0'
+            break;
+        case SHOW_DRVIER_VERION:
+            sprintf(extra, "Driver version-%s, %s %s\n", STA_DRIVER_VERSION, __DATE__, __TIME__ );
+            wrq->length = strlen(extra) + 1; // 1: size of '\0'
+            break;
+#ifdef DOT11_N_SUPPORT
+        case SHOW_BA_INFO:
+            getBaInfo(pAd, extra);
+            wrq->length = strlen(extra) + 1; // 1: size of '\0'
+            break;
+#endif // DOT11_N_SUPPORT //
+		case SHOW_DESC_INFO:
+			{
+				Show_DescInfo_Proc(pAd, NULL);
+				wrq->length = 0; // 1: size of '\0'				
+			}
+			break;
+        case RAIO_OFF:
+            if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS))
+            {
+                if (pAd->Mlme.CntlMachine.CurrState != CNTL_IDLE)
+		        {
+		            RTMP_MLME_RESET_STATE_MACHINE(pAd);
+		            DBGPRINT(RT_DEBUG_TRACE, ("!!! MLME busy, reset MLME state machine !!!\n"));
+		        }
+            }
+            pAd->StaCfg.bSwRadio = FALSE;
+            if (pAd->StaCfg.bRadio != (pAd->StaCfg.bHwRadio && pAd->StaCfg.bSwRadio))
+            {
+                pAd->StaCfg.bRadio = (pAd->StaCfg.bHwRadio && pAd->StaCfg.bSwRadio);
+                if (pAd->StaCfg.bRadio == FALSE)
+                {
+                    MlmeRadioOff(pAd);
+                    // Update extra information
+					pAd->ExtraInfo = SW_RADIO_OFF;
+                } 
+            }
+            sprintf(extra, "Radio Off\n");
+            wrq->length = strlen(extra) + 1; // 1: size of '\0'
+            break;
+        case RAIO_ON:
+            pAd->StaCfg.bSwRadio = TRUE;
+            //if (pAd->StaCfg.bRadio != (pAd->StaCfg.bHwRadio && pAd->StaCfg.bSwRadio))
+            {
+                pAd->StaCfg.bRadio = (pAd->StaCfg.bHwRadio && pAd->StaCfg.bSwRadio);
+                if (pAd->StaCfg.bRadio == TRUE)
+                {
+                    MlmeRadioOn(pAd);
+                    // Update extra information
+					pAd->ExtraInfo = EXTRA_INFO_CLEAR;
+                }
+            }
+            sprintf(extra, "Radio On\n");
+            wrq->length = strlen(extra) + 1; // 1: size of '\0'
+            break;
+
+
+#ifdef QOS_DLS_SUPPORT
+		case SHOW_DLS_ENTRY_INFO:
+			{
+				Set_DlsEntryInfo_Display_Proc(pAd, NULL);
+				wrq->length = 0; // 1: size of '\0'
+			}
+			break;
+#endif // QOS_DLS_SUPPORT //
+
+
+		case SHOW_CFG_VALUE:
+			{
+				Status = RTMPShowCfgValue(pAd, (PSTRING) wrq->pointer, extra);
+				if (Status == 0)
+					wrq->length = strlen(extra) + 1; // 1: size of '\0'
+			}
+			break;
+		case SHOW_ADHOC_ENTRY_INFO:
+			Show_Adhoc_MacTable_Proc(pAd, extra);
+			wrq->length = strlen(extra) + 1; // 1: size of '\0'
+			break;
+
+        default:
+            DBGPRINT(RT_DEBUG_TRACE, ("%s - unknow subcmd = %d\n", __FUNCTION__, subcmd));
+            break;
+    }
+    
+    return Status;
+}
+
+#ifdef SIOCSIWMLME
+int rt_ioctl_siwmlme(struct net_device *dev,
+			   struct iw_request_info *info,
+			   union iwreq_data *wrqu,
+			   char *extra)
+{
+	PRTMP_ADAPTER   pAd = NULL;
+	struct iw_mlme *pMlme = (struct iw_mlme *)wrqu->data.pointer;
+	MLME_QUEUE_ELEM				MsgElem;
+	MLME_DISASSOC_REQ_STRUCT	DisAssocReq;
+	MLME_DEAUTH_REQ_STRUCT      DeAuthReq;
+
+	GET_PAD_FROM_NET_DEV(pAd, dev);
+
+	DBGPRINT(RT_DEBUG_TRACE, ("====> %s\n", __FUNCTION__));
+
+	//check if the interface is down
+    if(!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_IN_USE))
+    {
+       	DBGPRINT(RT_DEBUG_TRACE, ("INFO::Network is down!\n"));
+        return -ENETDOWN;
+	}
+
+	if (pMlme == NULL)
+		return -EINVAL;
+
+	switch(pMlme->cmd)
+	{
+#ifdef IW_MLME_DEAUTH	
+		case IW_MLME_DEAUTH:
+			DBGPRINT(RT_DEBUG_TRACE, ("====> %s - IW_MLME_DEAUTH\n", __FUNCTION__));			                
+			COPY_MAC_ADDR(DeAuthReq.Addr, pAd->CommonCfg.Bssid);
+			DeAuthReq.Reason = pMlme->reason_code;
+			MsgElem.MsgLen = sizeof(MLME_DEAUTH_REQ_STRUCT);
+			NdisMoveMemory(MsgElem.Msg, &DeAuthReq, sizeof(MLME_DEAUTH_REQ_STRUCT));
+			MlmeDeauthReqAction(pAd, &MsgElem);
+			if (INFRA_ON(pAd))
+			{
+			    LinkDown(pAd, FALSE);
+			    pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE;
+			}
+			break;
+#endif // IW_MLME_DEAUTH //
+#ifdef IW_MLME_DISASSOC
+		case IW_MLME_DISASSOC:
+			DBGPRINT(RT_DEBUG_TRACE, ("====> %s - IW_MLME_DISASSOC\n", __FUNCTION__));
+			COPY_MAC_ADDR(DisAssocReq.Addr, pAd->CommonCfg.Bssid);
+			DisAssocReq.Reason =  pMlme->reason_code;
+
+			MsgElem.Machine = ASSOC_STATE_MACHINE;
+			MsgElem.MsgType = MT2_MLME_DISASSOC_REQ;
+			MsgElem.MsgLen = sizeof(MLME_DISASSOC_REQ_STRUCT);
+			NdisMoveMemory(MsgElem.Msg, &DisAssocReq, sizeof(MLME_DISASSOC_REQ_STRUCT));
+
+			pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_OID_DISASSOC;
+			MlmeDisassocReqAction(pAd, &MsgElem);
+			break;
+#endif // IW_MLME_DISASSOC //
+		default:
+			DBGPRINT(RT_DEBUG_TRACE, ("====> %s - Unknow Command\n", __FUNCTION__));
+			break;
+	}
+	
+	return 0;
+}
+#endif // SIOCSIWMLME //
+
+#if WIRELESS_EXT > 17
+int rt_ioctl_siwauth(struct net_device *dev,
+			  struct iw_request_info *info,
+			  union iwreq_data *wrqu, char *extra)
+{
+	PRTMP_ADAPTER   pAdapter = NULL;
+	struct iw_param *param = &wrqu->param;
+
+	GET_PAD_FROM_NET_DEV(pAdapter, dev);
+
+    //check if the interface is down
+	if(!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_INTERRUPT_IN_USE))
+	{
+  		DBGPRINT(RT_DEBUG_TRACE, ("INFO::Network is down!\n"));
+    	return -ENETDOWN;   
+	}
+	switch (param->flags & IW_AUTH_INDEX) {
+    	case IW_AUTH_WPA_VERSION:
+            if (param->value == IW_AUTH_WPA_VERSION_WPA)
+            {            
+                pAdapter->StaCfg.AuthMode = Ndis802_11AuthModeWPAPSK;
+				if (pAdapter->StaCfg.BssType == BSS_ADHOC)
+					pAdapter->StaCfg.AuthMode = Ndis802_11AuthModeWPANone;
+            }
+            else if (param->value == IW_AUTH_WPA_VERSION_WPA2)
+                pAdapter->StaCfg.AuthMode = Ndis802_11AuthModeWPA2PSK;
+			
+            DBGPRINT(RT_DEBUG_TRACE, ("%s::IW_AUTH_WPA_VERSION - param->value = %d!\n", __FUNCTION__, param->value));
+            break;
+    	case IW_AUTH_CIPHER_PAIRWISE:
+            if (param->value == IW_AUTH_CIPHER_NONE)
+            {
+                pAdapter->StaCfg.WepStatus = Ndis802_11WEPDisabled;
+                pAdapter->StaCfg.OrigWepStatus = pAdapter->StaCfg.WepStatus;
+                pAdapter->StaCfg.PairCipher = Ndis802_11WEPDisabled;
+            }
+            else if (param->value == IW_AUTH_CIPHER_WEP40 ||
+                     param->value == IW_AUTH_CIPHER_WEP104)
+            {
+                pAdapter->StaCfg.WepStatus = Ndis802_11WEPEnabled;
+                pAdapter->StaCfg.OrigWepStatus = pAdapter->StaCfg.WepStatus;
+                pAdapter->StaCfg.PairCipher = Ndis802_11WEPEnabled;
+#ifdef WPA_SUPPLICANT_SUPPORT                
+                pAdapter->StaCfg.IEEE8021X = FALSE;
+#endif // WPA_SUPPLICANT_SUPPORT //
+            }
+            else if (param->value == IW_AUTH_CIPHER_TKIP)
+            {
+                pAdapter->StaCfg.WepStatus = Ndis802_11Encryption2Enabled;
+                pAdapter->StaCfg.OrigWepStatus = pAdapter->StaCfg.WepStatus;
+                pAdapter->StaCfg.PairCipher = Ndis802_11Encryption2Enabled;
+            }
+            else if (param->value == IW_AUTH_CIPHER_CCMP)
+            {
+                pAdapter->StaCfg.WepStatus = Ndis802_11Encryption3Enabled;
+                pAdapter->StaCfg.OrigWepStatus = pAdapter->StaCfg.WepStatus;
+                pAdapter->StaCfg.PairCipher = Ndis802_11Encryption3Enabled;
+            }
+            DBGPRINT(RT_DEBUG_TRACE, ("%s::IW_AUTH_CIPHER_PAIRWISE - param->value = %d!\n", __FUNCTION__, param->value));
+            break;
+    	case IW_AUTH_CIPHER_GROUP:
+            if (param->value == IW_AUTH_CIPHER_NONE)
+            {
+                pAdapter->StaCfg.GroupCipher = Ndis802_11WEPDisabled;
+            }
+            else if (param->value == IW_AUTH_CIPHER_WEP40)
+            {
+                pAdapter->StaCfg.GroupCipher = Ndis802_11GroupWEP40Enabled;
+            }
+			else if (param->value == IW_AUTH_CIPHER_WEP104)
+			{
+				pAdapter->StaCfg.GroupCipher = Ndis802_11GroupWEP104Enabled;
+			}
+            else if (param->value == IW_AUTH_CIPHER_TKIP)
+            {
+                pAdapter->StaCfg.GroupCipher = Ndis802_11Encryption2Enabled;
+            }
+            else if (param->value == IW_AUTH_CIPHER_CCMP)
+            {
+                pAdapter->StaCfg.GroupCipher = Ndis802_11Encryption3Enabled;
+            }
+            DBGPRINT(RT_DEBUG_TRACE, ("%s::IW_AUTH_CIPHER_GROUP - param->value = %d!\n", __FUNCTION__, param->value));
+            break;
+    	case IW_AUTH_KEY_MGMT:
+            if (param->value == IW_AUTH_KEY_MGMT_802_1X)
+            { 
+                if (pAdapter->StaCfg.AuthMode == Ndis802_11AuthModeWPAPSK)
+                {
+                    pAdapter->StaCfg.AuthMode = Ndis802_11AuthModeWPA;
+#ifdef WPA_SUPPLICANT_SUPPORT                    
+                    pAdapter->StaCfg.IEEE8021X = FALSE;
+#endif // WPA_SUPPLICANT_SUPPORT //
+                }
+                else if (pAdapter->StaCfg.AuthMode == Ndis802_11AuthModeWPA2PSK)
+                {
+                    pAdapter->StaCfg.AuthMode = Ndis802_11AuthModeWPA2;
+#ifdef WPA_SUPPLICANT_SUPPORT
+                    pAdapter->StaCfg.IEEE8021X = FALSE;
+#endif // WPA_SUPPLICANT_SUPPORT //
+                }
+#ifdef WPA_SUPPLICANT_SUPPORT                
+                else
+                    // WEP 1x
+                    pAdapter->StaCfg.IEEE8021X = TRUE;
+#endif // WPA_SUPPLICANT_SUPPORT //                
+            }
+            else if (param->value == 0)
+            {
+                //pAdapter->StaCfg.PortSecured = WPA_802_1X_PORT_SECURED;
+				STA_PORT_SECURED(pAdapter);
+            }
+            DBGPRINT(RT_DEBUG_TRACE, ("%s::IW_AUTH_KEY_MGMT - param->value = %d!\n", __FUNCTION__, param->value));
+            break;
+    	case IW_AUTH_RX_UNENCRYPTED_EAPOL:
+            break;
+    	case IW_AUTH_PRIVACY_INVOKED:
+            /*if (param->value == 0)
+			{
+                pAdapter->StaCfg.AuthMode = Ndis802_11AuthModeOpen;
+                pAdapter->StaCfg.WepStatus = Ndis802_11WEPDisabled;
+                pAdapter->StaCfg.OrigWepStatus = pAdapter->StaCfg.WepStatus;
+                pAdapter->StaCfg.PairCipher = Ndis802_11WEPDisabled;
+        	    pAdapter->StaCfg.GroupCipher = Ndis802_11WEPDisabled;
+            }*/            
+            DBGPRINT(RT_DEBUG_TRACE, ("%s::IW_AUTH_PRIVACY_INVOKED - param->value = %d!\n", __FUNCTION__, param->value));
+    		break;
+    	case IW_AUTH_DROP_UNENCRYPTED:
+            if (param->value != 0)
+                pAdapter->StaCfg.PortSecured = WPA_802_1X_PORT_NOT_SECURED;
+			else
+			{
+                //pAdapter->StaCfg.PortSecured = WPA_802_1X_PORT_SECURED;
+				STA_PORT_SECURED(pAdapter);
+			}
+            DBGPRINT(RT_DEBUG_TRACE, ("%s::IW_AUTH_WPA_VERSION - param->value = %d!\n", __FUNCTION__, param->value));
+    		break;
+    	case IW_AUTH_80211_AUTH_ALG: 
+			if (param->value & IW_AUTH_ALG_SHARED_KEY) 
+            {
+				pAdapter->StaCfg.AuthMode = Ndis802_11AuthModeShared;
+			} 
+            else if (param->value & IW_AUTH_ALG_OPEN_SYSTEM) 
+            {
+				pAdapter->StaCfg.AuthMode = Ndis802_11AuthModeOpen;
+			} 
+            else
+				return -EINVAL;
+            DBGPRINT(RT_DEBUG_TRACE, ("%s::IW_AUTH_80211_AUTH_ALG - param->value = %d!\n", __FUNCTION__, param->value));
+			break;
+    	case IW_AUTH_WPA_ENABLED:
+    		DBGPRINT(RT_DEBUG_TRACE, ("%s::IW_AUTH_WPA_ENABLED - Driver supports WPA!(param->value = %d)\n", __FUNCTION__, param->value));
+    		break;
+    	default:
+    		return -EOPNOTSUPP;
+}
+
+	return 0;
+}
+
+int rt_ioctl_giwauth(struct net_device *dev,
+			       struct iw_request_info *info,
+			       union iwreq_data *wrqu, char *extra)
+{
+	PRTMP_ADAPTER   pAdapter = NULL;
+	struct iw_param *param = &wrqu->param;
+
+	GET_PAD_FROM_NET_DEV(pAdapter, dev);
+
+    //check if the interface is down
+	if(!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_INTERRUPT_IN_USE))
+    {
+  		DBGPRINT(RT_DEBUG_TRACE, ("INFO::Network is down!\n"));
+    	return -ENETDOWN;   
+    }
+
+	switch (param->flags & IW_AUTH_INDEX) {
+	case IW_AUTH_DROP_UNENCRYPTED:
+        param->value = (pAdapter->StaCfg.WepStatus == Ndis802_11WEPDisabled) ? 0 : 1;
+		break;
+
+	case IW_AUTH_80211_AUTH_ALG:
+        param->value = (pAdapter->StaCfg.AuthMode == Ndis802_11AuthModeShared) ? IW_AUTH_ALG_SHARED_KEY : IW_AUTH_ALG_OPEN_SYSTEM;
+		break;
+
+	case IW_AUTH_WPA_ENABLED:
+		param->value = (pAdapter->StaCfg.AuthMode >= Ndis802_11AuthModeWPA) ? 1 : 0;
+		break;
+
+	default:
+		return -EOPNOTSUPP;
+	}
+    DBGPRINT(RT_DEBUG_TRACE, ("rt_ioctl_giwauth::param->value = %d!\n", param->value));
+	return 0;
+}
+
+void fnSetCipherKey(
+    IN  PRTMP_ADAPTER   pAdapter,
+    IN  INT             keyIdx,    
+    IN  UCHAR           CipherAlg,
+    IN  BOOLEAN         bGTK,
+    IN  struct iw_encode_ext *ext)
+{
+    NdisZeroMemory(&pAdapter->SharedKey[BSS0][keyIdx], sizeof(CIPHER_KEY));
+    pAdapter->SharedKey[BSS0][keyIdx].KeyLen = LEN_TK;
+    NdisMoveMemory(pAdapter->SharedKey[BSS0][keyIdx].Key, ext->key, LEN_TK);
+    NdisMoveMemory(pAdapter->SharedKey[BSS0][keyIdx].TxMic, ext->key + LEN_TK, LEN_TKIP_MIC);
+    NdisMoveMemory(pAdapter->SharedKey[BSS0][keyIdx].RxMic, ext->key + LEN_TK + LEN_TKIP_MIC, LEN_TKIP_MIC);
+    pAdapter->SharedKey[BSS0][keyIdx].CipherAlg = CipherAlg;
+
+    // Update group key information to ASIC Shared Key Table	   
+	AsicAddSharedKeyEntry(pAdapter, 
+						  BSS0, 
+						  keyIdx, 
+						  &pAdapter->SharedKey[BSS0][keyIdx]);
+			
+	/* STA doesn't need to set WCID attribute for group key */
+        // Update ASIC WCID attribute table and IVEIV table
+        if (!bGTK)
+	        RTMPSetWcidSecurityInfo(pAdapter, 
+	    							BSS0, 
+	    							keyIdx, 
+	    							pAdapter->SharedKey[BSS0][keyIdx].CipherAlg, 
+	        						BSSID_WCID, 
+	        						SHAREDKEYTABLE);
+}
+
+int rt_ioctl_siwencodeext(struct net_device *dev,
+			   struct iw_request_info *info,
+			   union iwreq_data *wrqu,
+			   char *extra)
+			{
+	PRTMP_ADAPTER   pAdapter = NULL;
+	struct iw_point *encoding = &wrqu->encoding;
+	struct iw_encode_ext *ext = (struct iw_encode_ext *)extra;
+    int keyIdx, alg = ext->alg;
+	
+	GET_PAD_FROM_NET_DEV(pAdapter, dev);
+	
+    //check if the interface is down
+	if(!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_INTERRUPT_IN_USE))
+	{
+  		DBGPRINT(RT_DEBUG_TRACE, ("INFO::Network is down!\n"));
+    	return -ENETDOWN;   
+	}
+
+    if (encoding->flags & IW_ENCODE_DISABLED)
+	{
+        keyIdx = (encoding->flags & IW_ENCODE_INDEX) - 1;
+        // set BSSID wcid entry of the Pair-wise Key table as no-security mode
+	    AsicRemovePairwiseKeyEntry(pAdapter, BSSID_WCID);
+        pAdapter->SharedKey[BSS0][keyIdx].KeyLen = 0;
+		pAdapter->SharedKey[BSS0][keyIdx].CipherAlg = CIPHER_NONE;
+		AsicRemoveSharedKeyEntry(pAdapter, 0, (UCHAR)keyIdx);
+        NdisZeroMemory(&pAdapter->SharedKey[BSS0][keyIdx], sizeof(CIPHER_KEY));
+        DBGPRINT(RT_DEBUG_TRACE, ("%s::Remove all keys!(encoding->flags = %x)\n", __FUNCTION__, encoding->flags));
+    }
+					else
+    {
+        // Get Key Index and convet to our own defined key index
+    	keyIdx = (encoding->flags & IW_ENCODE_INDEX) - 1;
+    	if((keyIdx < 0) || (keyIdx >= NR_WEP_KEYS))
+    		return -EINVAL;               
+					
+        if (ext->ext_flags & IW_ENCODE_EXT_SET_TX_KEY)
+        {
+            pAdapter->StaCfg.DefaultKeyId = keyIdx;
+            DBGPRINT(RT_DEBUG_TRACE, ("%s::DefaultKeyId = %d\n", __FUNCTION__, pAdapter->StaCfg.DefaultKeyId));
+        }
+
+        switch (alg) {
+    		case IW_ENCODE_ALG_NONE:
+                DBGPRINT(RT_DEBUG_TRACE, ("%s::IW_ENCODE_ALG_NONE\n", __FUNCTION__));
+    			break;
+    		case IW_ENCODE_ALG_WEP:
+                DBGPRINT(RT_DEBUG_TRACE, ("%s::IW_ENCODE_ALG_WEP - ext->key_len = %d, keyIdx = %d\n", __FUNCTION__, ext->key_len, keyIdx));
+    			if (ext->key_len == MAX_WEP_KEY_SIZE)
+                {      
+        			pAdapter->SharedKey[BSS0][keyIdx].KeyLen = MAX_WEP_KEY_SIZE;
+                    pAdapter->SharedKey[BSS0][keyIdx].CipherAlg = CIPHER_WEP128;
+				}
+        		else if (ext->key_len == MIN_WEP_KEY_SIZE)
+                {      
+                    pAdapter->SharedKey[BSS0][keyIdx].KeyLen = MIN_WEP_KEY_SIZE;
+                    pAdapter->SharedKey[BSS0][keyIdx].CipherAlg = CIPHER_WEP64;
+				}
+        		else
+                    return -EINVAL;
+                                
+                NdisZeroMemory(pAdapter->SharedKey[BSS0][keyIdx].Key,  16);
+			    NdisMoveMemory(pAdapter->SharedKey[BSS0][keyIdx].Key, ext->key, ext->key_len);
+
+				if (pAdapter->StaCfg.GroupCipher == Ndis802_11GroupWEP40Enabled ||					
+					pAdapter->StaCfg.GroupCipher == Ndis802_11GroupWEP104Enabled ||
+					pAdapter->StaCfg.GroupCipher == Ndis802_11WEPEnabled)				
+				{										
+					// Set Group key material to Asic					
+					AsicAddSharedKeyEntry(pAdapter, BSS0, keyIdx, &pAdapter->SharedKey[BSS0][keyIdx]);										
+
+					RTMPAddWcidAttributeEntry(pAdapter, BSS0, keyIdx, pAdapter->SharedKey[BSS0][keyIdx].CipherAlg, &pAdapter->MacTab.Content[BSSID_WCID]);									
+
+					/* STA doesn't need to set WCID attribute for group key */
+
+					// Assign pairwise key info
+					RTMPSetWcidSecurityInfo(pAdapter, 
+										 	BSS0, 
+										 	keyIdx, 
+										 	pAdapter->SharedKey[BSS0][keyIdx].CipherAlg, 												 
+										 	BSSID_WCID, 
+										 	SHAREDKEYTABLE);
+
+					STA_PORT_SECURED(pAdapter);
+					// Indicate Connected for GUI    				
+					pAdapter->IndicateMediaState = NdisMediaStateConnected;				
+				}
+    			break;
+            case IW_ENCODE_ALG_TKIP:
+                DBGPRINT(RT_DEBUG_TRACE, ("%s::IW_ENCODE_ALG_TKIP - keyIdx = %d, ext->key_len = %d\n", __FUNCTION__, keyIdx, ext->key_len));
+                if (ext->key_len == 32)
+                {
+                    if (ext->ext_flags & IW_ENCODE_EXT_SET_TX_KEY)
+                    {
+                        fnSetCipherKey(pAdapter, keyIdx, CIPHER_TKIP, FALSE, ext);
+                        if (pAdapter->StaCfg.AuthMode >= Ndis802_11AuthModeWPA2)
+                        {
+                            //pAdapter->StaCfg.PortSecured = WPA_802_1X_PORT_SECURED;
+                            STA_PORT_SECURED(pAdapter);
+                            pAdapter->IndicateMediaState = NdisMediaStateConnected;	
+                        }
+		}
+                    else if (ext->ext_flags & IW_ENCODE_EXT_GROUP_KEY)
+                    {
+                        fnSetCipherKey(pAdapter, keyIdx, CIPHER_TKIP, TRUE, ext);
+		
+                        // set 802.1x port control
+            	        //pAdapter->StaCfg.PortSecured = WPA_802_1X_PORT_SECURED;
+            	        STA_PORT_SECURED(pAdapter);
+            	        pAdapter->IndicateMediaState = NdisMediaStateConnected;	
+                    }
+                }
+                else
+                    return -EINVAL;
+                break;
+            case IW_ENCODE_ALG_CCMP:
+                if (ext->ext_flags & IW_ENCODE_EXT_SET_TX_KEY)
+		{
+                    fnSetCipherKey(pAdapter, keyIdx, CIPHER_AES, FALSE, ext);
+                    if (pAdapter->StaCfg.AuthMode >= Ndis802_11AuthModeWPA2)
+                    	//pAdapter->StaCfg.PortSecured = WPA_802_1X_PORT_SECURED;
+                    	STA_PORT_SECURED(pAdapter);
+                    	pAdapter->IndicateMediaState = NdisMediaStateConnected;	
+                }
+                else if (ext->ext_flags & IW_ENCODE_EXT_GROUP_KEY)
+                {
+                    fnSetCipherKey(pAdapter, keyIdx, CIPHER_AES, TRUE, ext);
+                    
+                    // set 802.1x port control
+        	        //pAdapter->StaCfg.PortSecured = WPA_802_1X_PORT_SECURED;
+        	        STA_PORT_SECURED(pAdapter);
+        	        pAdapter->IndicateMediaState = NdisMediaStateConnected;	
+                }
+                break;
+    		default:
+    			return -EINVAL;
+		}
+    }
+			
+    return 0;
+}
+
+int
+rt_ioctl_giwencodeext(struct net_device *dev,
+			  struct iw_request_info *info,
+			  union iwreq_data *wrqu, char *extra)
+{
+	PRTMP_ADAPTER pAd = NULL;
+	PCHAR pKey = NULL;
+	struct iw_point *encoding = &wrqu->encoding;
+	struct iw_encode_ext *ext = (struct iw_encode_ext *)extra;
+	int idx, max_key_len;
+
+	GET_PAD_FROM_NET_DEV(pAd, dev);
+
+	DBGPRINT(RT_DEBUG_TRACE ,("===> rt_ioctl_giwencodeext\n"));
+
+	//check if the interface is down
+    if(!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_IN_USE))
+    {
+       	DBGPRINT(RT_DEBUG_TRACE, ("INFO::Network is down!\n"));
+        return -ENETDOWN;
+	}
+
+	max_key_len = encoding->length - sizeof(*ext);
+	if (max_key_len < 0)
+		return -EINVAL;
+
+	idx = encoding->flags & IW_ENCODE_INDEX;
+	if (idx) 
+	{
+		if (idx < 1 || idx > 4)
+			return -EINVAL;
+		idx--;
+
+		if ((pAd->StaCfg.WepStatus == Ndis802_11Encryption2Enabled) ||
+			(pAd->StaCfg.WepStatus == Ndis802_11Encryption3Enabled))
+		{
+			if (idx != pAd->StaCfg.DefaultKeyId)
+			{
+				ext->key_len = 0;
+				return 0;
+			}
+		}
+	} 
+	else
+		idx = pAd->StaCfg.DefaultKeyId;
+
+	encoding->flags = idx + 1;
+	memset(ext, 0, sizeof(*ext));
+
+	ext->key_len = 0;
+	switch(pAd->StaCfg.WepStatus) {
+		case Ndis802_11WEPDisabled:
+			ext->alg = IW_ENCODE_ALG_NONE;
+			encoding->flags |= IW_ENCODE_DISABLED;		
+			break;
+		case Ndis802_11WEPEnabled:
+			ext->alg = IW_ENCODE_ALG_WEP;
+			if (pAd->SharedKey[BSS0][idx].KeyLen > max_key_len)
+				return -E2BIG;
+			else
+			{
+				ext->key_len = pAd->SharedKey[BSS0][idx].KeyLen;				
+				pKey = (PCHAR)&(pAd->SharedKey[BSS0][idx].Key[0]);
+			}
+			break;
+		case Ndis802_11Encryption2Enabled:
+		case Ndis802_11Encryption3Enabled:
+			if (pAd->StaCfg.WepStatus == Ndis802_11Encryption2Enabled)
+				ext->alg = IW_ENCODE_ALG_TKIP;
+			else
+				ext->alg = IW_ENCODE_ALG_CCMP;
+			
+			if (max_key_len < 32)
+				return -E2BIG;
+			else
+			{
+				ext->key_len = 32;
+				pKey = (PCHAR)&pAd->StaCfg.PMK[0];
+			}
+			break;
+		default:
+			return -EINVAL;
+	}
+
+	if (ext->key_len && pKey)
+	{
+		encoding->flags |= IW_ENCODE_ENABLED;
+		memcpy(ext->key, pKey, ext->key_len);
+	}
+	
+	return 0;
+}
+
+#ifdef SIOCSIWGENIE
+int rt_ioctl_siwgenie(struct net_device *dev,
+			  struct iw_request_info *info,
+			  union iwreq_data *wrqu, char *extra)
+{
+	PRTMP_ADAPTER   pAd = NULL;
+
+	GET_PAD_FROM_NET_DEV(pAd, dev);	
+	
+	//check if the interface is down
+    if(!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_IN_USE))
+    {
+       	DBGPRINT(RT_DEBUG_TRACE, ("INFO::Network is down!\n"));
+        return -ENETDOWN;
+	}
+#ifdef WPA_SUPPLICANT_SUPPORT
+	if (pAd->StaCfg.WpaSupplicantUP != WPA_SUPPLICANT_DISABLE)
+	{
+		DBGPRINT(RT_DEBUG_TRACE ,("===> rt_ioctl_siwgenie\n"));
+		pAd->StaCfg.bRSN_IE_FromWpaSupplicant = FALSE;
+		if ((wrqu->data.length == 0) ||
+		    (extra == NULL))
+		{
+			return -EINVAL;
+		}
+		else if (wrqu->data.length) 
+		{
+			if (pAd->StaCfg.pWpaAssocIe)
+			{
+				kfree(pAd->StaCfg.pWpaAssocIe);
+				pAd->StaCfg.pWpaAssocIe = NULL;
+			}
+			pAd->StaCfg.pWpaAssocIe = kmalloc(wrqu->data.length, MEM_ALLOC_FLAG);
+			if (pAd->StaCfg.pWpaAssocIe)
+			{
+				pAd->StaCfg.WpaAssocIeLen = wrqu->data.length;
+				NdisMoveMemory(pAd->StaCfg.pWpaAssocIe, extra, pAd->StaCfg.WpaAssocIeLen);
+				pAd->StaCfg.bRSN_IE_FromWpaSupplicant = TRUE;
+			}
+			else
+				pAd->StaCfg.WpaAssocIeLen = 0;
+		}
+		return 0;
+	}
+	else
+#endif // WPA_SUPPLICANT_SUPPORT //
+	return -EOPNOTSUPP;
+}
+#endif // SIOCSIWGENIE //
+
+int rt_ioctl_giwgenie(struct net_device *dev,
+			       struct iw_request_info *info,
+			       union iwreq_data *wrqu, char *extra)
+{
+	PRTMP_ADAPTER   pAd = NULL;
+
+	GET_PAD_FROM_NET_DEV(pAd, dev);	
+	
+	//check if the interface is down
+    if(!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_IN_USE))
+    {
+       	DBGPRINT(RT_DEBUG_TRACE, ("INFO::Network is down!\n"));
+        return -ENETDOWN;
+	}
+	
+	if ((pAd->StaCfg.RSNIE_Len == 0) ||
+		(pAd->StaCfg.AuthMode < Ndis802_11AuthModeWPA))
+	{
+		wrqu->data.length = 0;
+		return 0;
+	}
+
+#ifdef WPA_SUPPLICANT_SUPPORT
+#ifdef SIOCSIWGENIE
+	if ((pAd->StaCfg.WpaSupplicantUP & 0x7F) == WPA_SUPPLICANT_ENABLE &&
+		(pAd->StaCfg.WpaAssocIeLen > 0))
+	{
+		if (wrqu->data.length < pAd->StaCfg.WpaAssocIeLen)
+			return -E2BIG;
+
+		wrqu->data.length = pAd->StaCfg.WpaAssocIeLen;
+		memcpy(extra, pAd->StaCfg.pWpaAssocIe, pAd->StaCfg.WpaAssocIeLen);
+	}
+	else
+#endif // SIOCSIWGENIE //
+#endif // WPA_SUPPLICANT_SUPPORT //
+	{
+		UCHAR RSNIe = IE_WPA;
+		
+		if (wrqu->data.length < (pAd->StaCfg.RSNIE_Len + 2)) // ID, Len
+			return -E2BIG;
+		wrqu->data.length = pAd->StaCfg.RSNIE_Len + 2;
+		
+		if ((pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2PSK) ||
+            (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2))
+			RSNIe = IE_RSN;
+		
+		extra[0] = (char)RSNIe;
+		extra[1] = pAd->StaCfg.RSNIE_Len;
+		memcpy(extra+2, &pAd->StaCfg.RSN_IE[0], pAd->StaCfg.RSNIE_Len);
+	}
+	
+	return 0;
+}
+
+int rt_ioctl_siwpmksa(struct net_device *dev,
+			   struct iw_request_info *info,
+			   union iwreq_data *wrqu,
+			   char *extra)
+{
+	PRTMP_ADAPTER   pAd = NULL;
+	struct iw_pmksa *pPmksa = (struct iw_pmksa *)wrqu->data.pointer;
+	INT	CachedIdx = 0, idx = 0;
+
+	GET_PAD_FROM_NET_DEV(pAd, dev);	
+
+	//check if the interface is down
+    if(!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_IN_USE))
+    {
+       	DBGPRINT(RT_DEBUG_TRACE, ("INFO::Network is down!\n"));
+        return -ENETDOWN;
+	}
+
+	if (pPmksa == NULL)
+		return -EINVAL;
+
+	DBGPRINT(RT_DEBUG_TRACE ,("===> rt_ioctl_siwpmksa\n"));
+	switch(pPmksa->cmd)
+	{
+		case IW_PMKSA_FLUSH:
+			NdisZeroMemory(pAd->StaCfg.SavedPMK, sizeof(BSSID_INFO)*PMKID_NO);
+			DBGPRINT(RT_DEBUG_TRACE ,("rt_ioctl_siwpmksa - IW_PMKSA_FLUSH\n"));
+			break;
+		case IW_PMKSA_REMOVE:
+			for (CachedIdx = 0; CachedIdx < pAd->StaCfg.SavedPMKNum; CachedIdx++)
+			{
+		        // compare the BSSID
+		        if (NdisEqualMemory(pPmksa->bssid.sa_data, pAd->StaCfg.SavedPMK[CachedIdx].BSSID, MAC_ADDR_LEN))
+		        {
+		        	NdisZeroMemory(pAd->StaCfg.SavedPMK[CachedIdx].BSSID, MAC_ADDR_LEN);
+					NdisZeroMemory(pAd->StaCfg.SavedPMK[CachedIdx].PMKID, 16);
+					for (idx = CachedIdx; idx < (pAd->StaCfg.SavedPMKNum - 1); idx++)
+					{
+						NdisMoveMemory(&pAd->StaCfg.SavedPMK[idx].BSSID[0], &pAd->StaCfg.SavedPMK[idx+1].BSSID[0], MAC_ADDR_LEN);
+						NdisMoveMemory(&pAd->StaCfg.SavedPMK[idx].PMKID[0], &pAd->StaCfg.SavedPMK[idx+1].PMKID[0], 16);
+					}
+					pAd->StaCfg.SavedPMKNum--;
+			        break;
+		        }
+	        }
+			
+			DBGPRINT(RT_DEBUG_TRACE ,("rt_ioctl_siwpmksa - IW_PMKSA_REMOVE\n"));
+			break;
+		case IW_PMKSA_ADD:
+			for (CachedIdx = 0; CachedIdx < pAd->StaCfg.SavedPMKNum; CachedIdx++)
+			{
+		        // compare the BSSID
+		        if (NdisEqualMemory(pPmksa->bssid.sa_data, pAd->StaCfg.SavedPMK[CachedIdx].BSSID, MAC_ADDR_LEN))
+			        break;			
+	        }
+
+	        // Found, replace it
+	        if (CachedIdx < PMKID_NO)
+	        {
+		        DBGPRINT(RT_DEBUG_OFF, ("Update PMKID, idx = %d\n", CachedIdx));
+		        NdisMoveMemory(&pAd->StaCfg.SavedPMK[CachedIdx].BSSID[0], pPmksa->bssid.sa_data, MAC_ADDR_LEN);
+				NdisMoveMemory(&pAd->StaCfg.SavedPMK[CachedIdx].PMKID[0], pPmksa->pmkid, 16);
+		        pAd->StaCfg.SavedPMKNum++;
+	        }
+	        // Not found, replace the last one
+	        else
+	        {
+		        // Randomly replace one
+		        CachedIdx = (pPmksa->bssid.sa_data[5] % PMKID_NO);
+		        DBGPRINT(RT_DEBUG_OFF, ("Update PMKID, idx = %d\n", CachedIdx));
+		        NdisMoveMemory(&pAd->StaCfg.SavedPMK[CachedIdx].BSSID[0], pPmksa->bssid.sa_data, MAC_ADDR_LEN);
+				NdisMoveMemory(&pAd->StaCfg.SavedPMK[CachedIdx].PMKID[0], pPmksa->pmkid, 16);
+	        }
+			
+			DBGPRINT(RT_DEBUG_TRACE ,("rt_ioctl_siwpmksa - IW_PMKSA_ADD\n"));
+			break;
+		default:
+			DBGPRINT(RT_DEBUG_TRACE ,("rt_ioctl_siwpmksa - Unknow Command!!\n"));
+			break;
+	}
+
+	return 0;
+}
+#endif // #if WIRELESS_EXT > 17
+
+#ifdef DBG
+static int
+rt_private_ioctl_bbp(struct net_device *dev, struct iw_request_info *info,
+		struct iw_point *wrq, char *extra)
+			{
+	PSTRING				this_char;
+	PSTRING				value = NULL;
+	UCHAR				regBBP = 0;
+//	CHAR				arg[255]={0};
+	UINT32				bbpId;
+	UINT32				bbpValue;
+	BOOLEAN				bIsPrintAllBBP = FALSE;
+	INT					Status = 0;
+    PRTMP_ADAPTER       pAdapter = NULL;
+
+	GET_PAD_FROM_NET_DEV(pAdapter, dev);	
+
+
+	memset(extra, 0x00, IW_PRIV_SIZE_MASK);
+
+	if (wrq->length > 1) //No parameters.
+				{
+		sprintf(extra, "\n");
+					
+		//Parsing Read or Write
+		this_char = wrq->pointer;
+		DBGPRINT(RT_DEBUG_TRACE, ("this_char=%s\n", this_char));
+		if (!*this_char)                                                                            
+			goto next;
+
+		if ((value = rtstrchr(this_char, '=')) != NULL)
+			*value++ = 0;		
+		
+		if (!value || !*value)
+		{ //Read                                                                                    
+			DBGPRINT(RT_DEBUG_TRACE, ("this_char=%s, value=%s\n", this_char, value));
+			if (sscanf(this_char, "%d", &(bbpId)) == 1)                                             
+			{  
+				if (bbpId <= MAX_BBP_ID)
+				{                                                                                   
+#ifdef RALINK_ATE
+					if (ATE_ON(pAdapter))
+					{
+						ATE_BBP_IO_READ8_BY_REG_ID(pAdapter, bbpId, &regBBP);
+					}
+					else
+#endif // RALINK_ATE //
+					{
+					RTMP_BBP_IO_READ8_BY_REG_ID(pAdapter, bbpId, &regBBP);                          
+					}
+					sprintf(extra+strlen(extra), "R%02d[0x%02X]:%02X\n", bbpId, bbpId, regBBP);
+                    wrq->length = strlen(extra) + 1; // 1: size of '\0'
+					DBGPRINT(RT_DEBUG_TRACE, ("msg=%s\n", extra));
+				}                                                                                   
+				else                                                                                
+				{//Invalid parametes, so default printk all bbp                                     
+					bIsPrintAllBBP = TRUE;
+					goto next;                                                                          
+				}                                                                                   
+			}                                                                                       
+			else                                                                                    
+			{ //Invalid parametes, so default printk all bbp                                        
+				bIsPrintAllBBP = TRUE;
+				goto next;                                                                              
+			}                                                                                       
+		}                                                                                           
+		else                                                                                        
+		{ //Write                                
+			if ((sscanf(this_char, "%d", &(bbpId)) == 1) && (sscanf(value, "%x", &(bbpValue)) == 1))
+			{
+				if (bbpId <= MAX_BBP_ID)
+				{                                                                                   
+#ifdef RALINK_ATE
+					if (ATE_ON(pAdapter))
+					{
+						ATE_BBP_IO_WRITE8_BY_REG_ID(pAdapter, bbpId, bbpValue);          
+						/* read it back for showing */                                                      
+						ATE_BBP_IO_READ8_BY_REG_ID(pAdapter, bbpId, &regBBP);  
+					}
+					else
+#endif // RALINK_ATE //
+					{
+					    RTMP_BBP_IO_WRITE8_BY_REG_ID(pAdapter, bbpId, bbpValue);          
+    					/* read it back for showing */                                                      
+    					RTMP_BBP_IO_READ8_BY_REG_ID(pAdapter, bbpId, &regBBP);                          
+			}
+					sprintf(extra+strlen(extra), "R%02d[0x%02X]:%02X\n", bbpId, bbpId, regBBP);
+                    wrq->length = strlen(extra) + 1; // 1: size of '\0'
+					DBGPRINT(RT_DEBUG_TRACE, ("msg=%s\n", extra));                                       
+				}                                                                                   
+				else                                                                                
+				{//Invalid parametes, so default printk all bbp                                     
+					bIsPrintAllBBP = TRUE;                                                          
+					goto next;                                                                          
+				}                                                                                   
+			}                                                                                       
+			else                                                                                    
+			{ //Invalid parametes, so default printk all bbp                                        
+				bIsPrintAllBBP = TRUE;                                                              
+				goto next;                                                                              
+			}                                                                                       
+		}                             
+		}
+	else
+		bIsPrintAllBBP = TRUE;
+
+next:    
+	if (bIsPrintAllBBP)
+	{   
+		memset(extra, 0x00, IW_PRIV_SIZE_MASK);
+		sprintf(extra, "\n");
+		for (bbpId = 0; bbpId <= MAX_BBP_ID; bbpId++)
+		{
+		    if (strlen(extra) >= (IW_PRIV_SIZE_MASK - 20))
+                break;
+#ifdef RALINK_ATE
+			if (ATE_ON(pAdapter))
+			{
+				ATE_BBP_IO_READ8_BY_REG_ID(pAdapter, bbpId, &regBBP); 
+			}
+			else
+#endif // RALINK_ATE //
+			RTMP_BBP_IO_READ8_BY_REG_ID(pAdapter, bbpId, &regBBP);
+			sprintf(extra+strlen(extra), "R%02d[0x%02X]:%02X    ", bbpId, bbpId, regBBP);
+			if (bbpId%5 == 4)
+			sprintf(extra+strlen(extra), "%03d = %02X\n", bbpId, regBBP);  // edit by johnli, change display format
+		}
+		
+        wrq->length = strlen(extra) + 1; // 1: size of '\0'
+        DBGPRINT(RT_DEBUG_TRACE, ("wrq->length = %d\n", wrq->length));
+	}
+	
+	DBGPRINT(RT_DEBUG_TRACE, ("<==rt_private_ioctl_bbp\n\n"));	
+    
+    return Status;
+}
+#endif // DBG //
+
+int rt_ioctl_siwrate(struct net_device *dev,
+			struct iw_request_info *info,
+			union iwreq_data *wrqu, char *extra)
+{
+    PRTMP_ADAPTER   pAd = NULL;
+    UINT32          rate = wrqu->bitrate.value, fixed = wrqu->bitrate.fixed;
+
+	GET_PAD_FROM_NET_DEV(pAd, dev);
+
+    //check if the interface is down
+	if(!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_IN_USE))
+	{
+  		DBGPRINT(RT_DEBUG_TRACE, ("rt_ioctl_siwrate::Network is down!\n"));
+    	return -ENETDOWN;   
+	}    
+
+    DBGPRINT(RT_DEBUG_TRACE, ("rt_ioctl_siwrate::(rate = %d, fixed = %d)\n", rate, fixed));
+    /* rate = -1 => auto rate
+       rate = X, fixed = 1 => (fixed rate X)       
+    */
+    if (rate == -1)
+    {
+        //Auto Rate
+        pAd->StaCfg.DesiredTransmitSetting.field.MCS = MCS_AUTO;	
+		pAd->StaCfg.bAutoTxRateSwitch = TRUE;
+		if ((pAd->CommonCfg.PhyMode <= PHY_11G) ||
+		    (pAd->MacTab.Content[BSSID_WCID].HTPhyMode.field.MODE <= MODE_OFDM))
+            RTMPSetDesiredRates(pAd, -1);
+			
+#ifdef DOT11_N_SUPPORT
+            SetCommonHT(pAd);
+#endif // DOT11_N_SUPPORT //
+    }
+    else
+    {        
+        if (fixed)
+        {
+        	pAd->StaCfg.bAutoTxRateSwitch = FALSE;
+            if ((pAd->CommonCfg.PhyMode <= PHY_11G) ||
+                (pAd->MacTab.Content[BSSID_WCID].HTPhyMode.field.MODE <= MODE_OFDM))
+                RTMPSetDesiredRates(pAd, rate);
+            else
+            {
+                pAd->StaCfg.DesiredTransmitSetting.field.MCS = MCS_AUTO;
+#ifdef DOT11_N_SUPPORT
+                SetCommonHT(pAd);
+#endif // DOT11_N_SUPPORT //
+            }
+            DBGPRINT(RT_DEBUG_TRACE, ("rt_ioctl_siwrate::(HtMcs=%d)\n",pAd->StaCfg.DesiredTransmitSetting.field.MCS));
+        }
+        else
+        {
+            // TODO: rate = X, fixed = 0 => (rates <= X)
+            return -EOPNOTSUPP;
+        }
+    }
+
+    return 0;
+}
+
+int rt_ioctl_giwrate(struct net_device *dev,
+			       struct iw_request_info *info,
+			       union iwreq_data *wrqu, char *extra)
+{
+    PRTMP_ADAPTER   pAd = NULL;
+    int rate_index = 0, rate_count = 0;
+    HTTRANSMIT_SETTING ht_setting; 
+
+	GET_PAD_FROM_NET_DEV(pAd, dev);
+
+    rate_count = sizeof(ralinkrate)/sizeof(__s32);
+    //check if the interface is down
+	if(!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_IN_USE))
+	{
+  		DBGPRINT(RT_DEBUG_TRACE, ("INFO::Network is down!\n"));
+    	return -ENETDOWN;   
+	}
+
+    if ((pAd->StaCfg.bAutoTxRateSwitch == FALSE) &&
+        (INFRA_ON(pAd)) &&
+        ((pAd->CommonCfg.PhyMode <= PHY_11G) || (pAd->MacTab.Content[BSSID_WCID].HTPhyMode.field.MODE <= MODE_OFDM)))
+        ht_setting.word = pAd->StaCfg.HTPhyMode.word;
+    else
+        ht_setting.word = pAd->MacTab.Content[BSSID_WCID].HTPhyMode.word;
+    
+#ifdef DOT11_N_SUPPORT
+    if (ht_setting.field.MODE >= MODE_HTMIX)
+    {
+//    	rate_index = 12 + ((UCHAR)ht_setting.field.BW *16) + ((UCHAR)ht_setting.field.ShortGI *32) + ((UCHAR)ht_setting.field.MCS);
+    	rate_index = 12 + ((UCHAR)ht_setting.field.BW *24) + ((UCHAR)ht_setting.field.ShortGI *48) + ((UCHAR)ht_setting.field.MCS);
+    }
+    else 
+#endif // DOT11_N_SUPPORT //
+    if (ht_setting.field.MODE == MODE_OFDM)                
+    	rate_index = (UCHAR)(ht_setting.field.MCS) + 4;
+    else if (ht_setting.field.MODE == MODE_CCK)   
+    	rate_index = (UCHAR)(ht_setting.field.MCS);
+
+    if (rate_index < 0)
+        rate_index = 0;
+    
+    if (rate_index > rate_count)
+        rate_index = rate_count;
+
+    wrqu->bitrate.value = ralinkrate[rate_index] * 500000;
+    wrqu->bitrate.disabled = 0;
+
+    return 0;
+}
+
+static const iw_handler rt_handler[] =
+{
+	(iw_handler) NULL,			            /* SIOCSIWCOMMIT */
+	(iw_handler) rt_ioctl_giwname,			/* SIOCGIWNAME   */
+	(iw_handler) NULL,			            /* SIOCSIWNWID   */
+	(iw_handler) NULL,			            /* SIOCGIWNWID   */
+	(iw_handler) rt_ioctl_siwfreq,		    /* SIOCSIWFREQ   */
+	(iw_handler) rt_ioctl_giwfreq,		    /* SIOCGIWFREQ   */
+	(iw_handler) rt_ioctl_siwmode,		    /* SIOCSIWMODE   */
+	(iw_handler) rt_ioctl_giwmode,		    /* SIOCGIWMODE   */
+	(iw_handler) NULL,		                /* SIOCSIWSENS   */
+	(iw_handler) NULL,		                /* SIOCGIWSENS   */
+	(iw_handler) NULL /* not used */,		/* SIOCSIWRANGE  */
+	(iw_handler) rt_ioctl_giwrange,		    /* SIOCGIWRANGE  */
+	(iw_handler) NULL /* not used */,		/* SIOCSIWPRIV   */
+	(iw_handler) NULL /* kernel code */,    /* SIOCGIWPRIV   */
+	(iw_handler) NULL /* not used */,		/* SIOCSIWSTATS  */
+	(iw_handler) rt28xx_get_wireless_stats /* kernel code */,    /* SIOCGIWSTATS  */
+	(iw_handler) NULL,		                /* SIOCSIWSPY    */
+	(iw_handler) NULL,		                /* SIOCGIWSPY    */
+	(iw_handler) NULL,				        /* SIOCSIWTHRSPY */
+	(iw_handler) NULL,				        /* SIOCGIWTHRSPY */
+	(iw_handler) rt_ioctl_siwap,            /* SIOCSIWAP     */
+	(iw_handler) rt_ioctl_giwap,		    /* SIOCGIWAP     */
+#ifdef SIOCSIWMLME
+	(iw_handler) rt_ioctl_siwmlme,	        /* SIOCSIWMLME   */
+#else
+	(iw_handler) NULL,				        /* SIOCSIWMLME */
+#endif // SIOCSIWMLME //
+	(iw_handler) rt_ioctl_iwaplist,		    /* SIOCGIWAPLIST */
+#ifdef SIOCGIWSCAN
+	(iw_handler) rt_ioctl_siwscan,		    /* SIOCSIWSCAN   */
+	(iw_handler) rt_ioctl_giwscan,		    /* SIOCGIWSCAN   */
+#else
+	(iw_handler) NULL,				        /* SIOCSIWSCAN   */
+	(iw_handler) NULL,				        /* SIOCGIWSCAN   */
+#endif /* SIOCGIWSCAN */
+	(iw_handler) rt_ioctl_siwessid,		    /* SIOCSIWESSID  */
+	(iw_handler) rt_ioctl_giwessid,		    /* SIOCGIWESSID  */
+	(iw_handler) rt_ioctl_siwnickn,		    /* SIOCSIWNICKN  */
+	(iw_handler) rt_ioctl_giwnickn,		    /* SIOCGIWNICKN  */
+	(iw_handler) NULL,				        /* -- hole --    */
+	(iw_handler) NULL,				        /* -- hole --    */
+	(iw_handler) rt_ioctl_siwrate,          /* SIOCSIWRATE   */
+	(iw_handler) rt_ioctl_giwrate,          /* SIOCGIWRATE   */
+	(iw_handler) rt_ioctl_siwrts,		    /* SIOCSIWRTS    */
+	(iw_handler) rt_ioctl_giwrts,		    /* SIOCGIWRTS    */
+	(iw_handler) rt_ioctl_siwfrag,		    /* SIOCSIWFRAG   */
+	(iw_handler) rt_ioctl_giwfrag,		    /* SIOCGIWFRAG   */
+	(iw_handler) NULL,		                /* SIOCSIWTXPOW  */
+	(iw_handler) NULL,		                /* SIOCGIWTXPOW  */
+	(iw_handler) NULL,		                /* SIOCSIWRETRY  */
+	(iw_handler) NULL,		                /* SIOCGIWRETRY  */
+	(iw_handler) rt_ioctl_siwencode,		/* SIOCSIWENCODE */
+	(iw_handler) rt_ioctl_giwencode,		/* SIOCGIWENCODE */
+	(iw_handler) NULL,		                /* SIOCSIWPOWER  */
+	(iw_handler) NULL,		                /* SIOCGIWPOWER  */
+	(iw_handler) NULL,						/* -- hole -- */	
+	(iw_handler) NULL,						/* -- hole -- */
+#if WIRELESS_EXT > 17	
+    (iw_handler) rt_ioctl_siwgenie,         /* SIOCSIWGENIE  */
+	(iw_handler) rt_ioctl_giwgenie,         /* SIOCGIWGENIE  */
+	(iw_handler) rt_ioctl_siwauth,		    /* SIOCSIWAUTH   */
+	(iw_handler) rt_ioctl_giwauth,		    /* SIOCGIWAUTH   */
+	(iw_handler) rt_ioctl_siwencodeext,	    /* SIOCSIWENCODEEXT */
+	(iw_handler) rt_ioctl_giwencodeext,		/* SIOCGIWENCODEEXT */
+	(iw_handler) rt_ioctl_siwpmksa,         /* SIOCSIWPMKSA  */
+#endif
+};
+
+static const iw_handler rt_priv_handlers[] = {
+	(iw_handler) NULL, /* + 0x00 */
+	(iw_handler) NULL, /* + 0x01 */
+	(iw_handler) rt_ioctl_setparam, /* + 0x02 */
+#ifdef DBG	
+	(iw_handler) rt_private_ioctl_bbp, /* + 0x03 */	
+#else
+	(iw_handler) NULL, /* + 0x03 */
+#endif
+	(iw_handler) NULL, /* + 0x04 */
+	(iw_handler) NULL, /* + 0x05 */
+	(iw_handler) NULL, /* + 0x06 */
+	(iw_handler) NULL, /* + 0x07 */
+	(iw_handler) NULL, /* + 0x08 */
+	(iw_handler) rt_private_get_statistics, /* + 0x09 */
+	(iw_handler) NULL, /* + 0x0A */
+	(iw_handler) NULL, /* + 0x0B */
+	(iw_handler) NULL, /* + 0x0C */
+	(iw_handler) NULL, /* + 0x0D */
+	(iw_handler) NULL, /* + 0x0E */
+	(iw_handler) NULL, /* + 0x0F */
+	(iw_handler) NULL, /* + 0x10 */
+	(iw_handler) rt_private_show, /* + 0x11 */
+    (iw_handler) NULL, /* + 0x12 */
+	(iw_handler) NULL, /* + 0x13 */
+    (iw_handler) NULL, /* + 0x14 */
+	(iw_handler) NULL, /* + 0x15 */
+    (iw_handler) NULL, /* + 0x16 */
+	(iw_handler) NULL, /* + 0x17 */
+	(iw_handler) NULL, /* + 0x18 */
+};
+
+const struct iw_handler_def rt28xx_iw_handler_def =
+{
+#define	N(a)	(sizeof (a) / sizeof (a[0]))
+	.standard	= (iw_handler *) rt_handler,
+	.num_standard	= sizeof(rt_handler) / sizeof(iw_handler),
+	.private	= (iw_handler *) rt_priv_handlers,
+	.num_private		= N(rt_priv_handlers),
+	.private_args	= (struct iw_priv_args *) privtab,
+	.num_private_args	= N(privtab),
+#if IW_HANDLER_VERSION >= 7
+    .get_wireless_stats = rt28xx_get_wireless_stats,
+#endif 
+};
+
+INT RTMPSetInformation(
+    IN  PRTMP_ADAPTER pAd,
+    IN  OUT struct ifreq    *rq,
+    IN  INT                 cmd)
+{
+    struct iwreq                        *wrq = (struct iwreq *) rq;
+    NDIS_802_11_SSID                    Ssid;
+    NDIS_802_11_MAC_ADDRESS             Bssid;
+    RT_802_11_PHY_MODE                  PhyMode;
+    RT_802_11_STA_CONFIG                StaConfig;
+    NDIS_802_11_RATES                   aryRates;
+    RT_802_11_PREAMBLE                  Preamble;
+    NDIS_802_11_WEP_STATUS              WepStatus;
+    NDIS_802_11_AUTHENTICATION_MODE     AuthMode = Ndis802_11AuthModeMax;
+    NDIS_802_11_NETWORK_INFRASTRUCTURE  BssType;
+    NDIS_802_11_RTS_THRESHOLD           RtsThresh;
+    NDIS_802_11_FRAGMENTATION_THRESHOLD FragThresh;
+    NDIS_802_11_POWER_MODE              PowerMode;
+    PNDIS_802_11_KEY                    pKey = NULL;
+    PNDIS_802_11_WEP			        pWepKey =NULL;
+    PNDIS_802_11_REMOVE_KEY             pRemoveKey = NULL;
+    NDIS_802_11_CONFIGURATION           Config, *pConfig = NULL;
+    NDIS_802_11_NETWORK_TYPE            NetType;
+    ULONG                               Now;
+    UINT                                KeyIdx = 0;
+    INT                                 Status = NDIS_STATUS_SUCCESS, MaxPhyMode = PHY_11G;
+    ULONG                               PowerTemp;
+    BOOLEAN                             RadioState;
+    BOOLEAN                             StateMachineTouched = FALSE;
+     PNDIS_802_11_PASSPHRASE                    ppassphrase = NULL;     
+#ifdef DOT11_N_SUPPORT
+	OID_SET_HT_PHYMODE					HT_PhyMode;	//11n ,kathy
+#endif // DOT11_N_SUPPORT //
+#ifdef WPA_SUPPLICANT_SUPPORT    
+    PNDIS_802_11_PMKID                  pPmkId = NULL;
+    BOOLEAN				                IEEE8021xState = FALSE;
+    BOOLEAN				                IEEE8021x_required_keys = FALSE;
+    UCHAR                               wpa_supplicant_enable = 0;
+#endif // WPA_SUPPLICANT_SUPPORT //
+
+#ifdef SNMP_SUPPORT	
+	TX_RTY_CFG_STRUC			tx_rty_cfg;
+	ULONG						ShortRetryLimit, LongRetryLimit;
+	UCHAR						ctmp;
+#endif // SNMP_SUPPORT //
+
+
+
+
+#ifdef DOT11_N_SUPPORT
+	MaxPhyMode = PHY_11N_5G;
+#endif // DOT11_N_SUPPORT //
+
+	DBGPRINT(RT_DEBUG_TRACE, ("-->RTMPSetInformation(),	0x%08x\n", cmd&0x7FFF));
+	switch(cmd & 0x7FFF) {
+		case RT_OID_802_11_COUNTRY_REGION:
+			if (wrq->u.data.length < sizeof(UCHAR))
+				Status = -EINVAL;
+			// Only avaliable when EEPROM not programming
+            else if (!(pAd->CommonCfg.CountryRegion & 0x80) && !(pAd->CommonCfg.CountryRegionForABand & 0x80))
+			{
+				ULONG   Country;
+				UCHAR	TmpPhy;
+
+				Status = copy_from_user(&Country, wrq->u.data.pointer, wrq->u.data.length);
+				pAd->CommonCfg.CountryRegion = (UCHAR)(Country & 0x000000FF);
+				pAd->CommonCfg.CountryRegionForABand = (UCHAR)((Country >> 8) & 0x000000FF);
+                TmpPhy = pAd->CommonCfg.PhyMode;
+				pAd->CommonCfg.PhyMode = 0xff;
+				// Build all corresponding channel information
+				RTMPSetPhyMode(pAd, TmpPhy);
+#ifdef DOT11_N_SUPPORT
+				SetCommonHT(pAd);
+#endif // DOT11_N_SUPPORT //
+				DBGPRINT(RT_DEBUG_TRACE, ("Set::RT_OID_802_11_COUNTRY_REGION (A:%d  B/G:%d)\n", pAd->CommonCfg.CountryRegionForABand,
+				    pAd->CommonCfg.CountryRegion));
+            }
+            break;
+        case OID_802_11_BSSID_LIST_SCAN:
+            Now = jiffies;
+			DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_BSSID_LIST_SCAN, TxCnt = %d \n", pAd->RalinkCounters.LastOneSecTotalTxCount));
+
+            if (MONITOR_ON(pAd))
+            {
+                DBGPRINT(RT_DEBUG_TRACE, ("!!! Driver is in Monitor Mode now !!!\n"));
+                break;
+            }
+
+			//Benson add 20080527, when radio off, sta don't need to scan
+			if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_RADIO_OFF))
+				break;
+				
+//			if (pAd->RalinkCounters.LastOneSecTotalTxCount > 100)													//Baron 2010/01/27
+		//Baron 2010/01/28
+            if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED) && ((pAd->RalinkCounters.LastOneSecTotalTxCount > 50) || (pAd->RalinkCounters.LastOneSecRxOkDataCnt > 50)))
+            {
+                DBGPRINT(RT_DEBUG_TRACE, ("!!! Link UP, ignore this set::OID_802_11_BSSID_LIST_SCAN\n"));
+				Status = NDIS_STATUS_SUCCESS;
+				pAd->StaCfg.ScanCnt = 99;		// Prevent auto scan triggered by this OID
+				break;
+            }
+            
+            if ((OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED)) &&
+				((pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA) || 
+				(pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPAPSK) ||
+				(pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2) ||
+				(pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2PSK)) &&
+                (pAd->StaCfg.PortSecured == WPA_802_1X_PORT_NOT_SECURED))
+            {
+                DBGPRINT(RT_DEBUG_TRACE, ("!!! Link UP, Port Not Secured! ignore this set::OID_802_11_BSSID_LIST_SCAN\n"));
+				Status = NDIS_STATUS_SUCCESS;
+				pAd->StaCfg.ScanCnt = 99;		// Prevent auto scan triggered by this OID
+				break;
+            }
+
+
+            if (pAd->Mlme.CntlMachine.CurrState != CNTL_IDLE)
+            {
+                RTMP_MLME_RESET_STATE_MACHINE(pAd);
+                DBGPRINT(RT_DEBUG_TRACE, ("!!! MLME busy, reset MLME state machine !!!\n"));
+            }
+
+            // tell CNTL state machine to call NdisMSetInformationComplete() after completing
+            // this request, because this request is initiated by NDIS.
+            pAd->MlmeAux.CurrReqIsFromNdis = FALSE;
+            // Reset allowed scan retries
+            pAd->StaCfg.ScanCnt = 0;
+            pAd->StaCfg.LastScanTime = Now;
+
+			pAd->StaCfg.bScanReqIsFromWebUI = TRUE;
+            RTMP_SET_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS);
+            MlmeEnqueue(pAd, 
+                        MLME_CNTL_STATE_MACHINE, 
+                        OID_802_11_BSSID_LIST_SCAN, 
+                        0, 
+                        NULL, 0);
+
+            Status = NDIS_STATUS_SUCCESS;
+            StateMachineTouched = TRUE;
+            break;
+        case OID_802_11_SSID:
+            if (wrq->u.data.length != sizeof(NDIS_802_11_SSID))
+                Status = -EINVAL;
+            else
+            {
+            	PSTRING pSsidString = NULL;
+                Status = copy_from_user(&Ssid, wrq->u.data.pointer, wrq->u.data.length);
+
+				DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_SSID (Len=%d,Ssid=%s)\n", Ssid.SsidLength, Ssid.Ssid));
+                if (Ssid.SsidLength > MAX_LEN_OF_SSID)
+                    Status = -EINVAL;
+                else
+                {
+                	if (Ssid.SsidLength == 0)
+		    		{
+                		Set_SSID_Proc(pAd, "");
+		    		}
+					else
+                    {
+	                	pSsidString = (PSTRING)kmalloc(MAX_LEN_OF_SSID+1, MEM_ALLOC_FLAG);
+						if (pSsidString)
+						{
+							NdisZeroMemory(pSsidString, MAX_LEN_OF_SSID+1);
+							NdisMoveMemory(pSsidString, Ssid.Ssid, Ssid.SsidLength);
+							Set_SSID_Proc(pAd, pSsidString);
+							kfree(pSsidString);
+						}
+						else
+							Status = -ENOMEM;
+                    }
+                }
+            }
+            break;
+		case OID_802_11_SET_PASSPHRASE:
+    	    ppassphrase= kmalloc(wrq->u.data.length, MEM_ALLOC_FLAG);
+
+    	    if(ppassphrase== NULL)
+            {
+               	Status = -ENOMEM;
+				DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_SET_PASSPHRASE, Failed!!\n"));
+               	break;
+            }
+			else
+           	{
+               	Status = copy_from_user(ppassphrase, wrq->u.data.pointer, wrq->u.data.length);
+
+				if (Status)
+            	{
+                	Status  = -EINVAL;
+                	DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_SET_PASSPHRASE, Failed (length mismatch)!!\n"));
+           		}
+           		else
+           		{
+					if(ppassphrase->KeyLength < 8 || ppassphrase->KeyLength > 64)
+					{
+						Status  = -EINVAL;
+                    	DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_SET_PASSPHRASE, Failed (len less than 8 or greater than 64)!!\n"));
+					}
+					else
+					{
+	                    			// set key passphrase and length
+	 					NdisZeroMemory(pAd->StaCfg.WpaPassPhrase, 64);
+	    				NdisMoveMemory(pAd->StaCfg.WpaPassPhrase, &ppassphrase->KeyMaterial, ppassphrase->KeyLength);
+	   					pAd->StaCfg.WpaPassPhraseLen = ppassphrase->KeyLength;
+						hex_dump("pAd->StaCfg.WpaPassPhrase", pAd->StaCfg.WpaPassPhrase, 64);
+						printk("WpaPassPhrase=%s\n",pAd->StaCfg.WpaPassPhrase);
+					}
+                }
+            }
+         	kfree(ppassphrase);
+	   		break;
+		
+        case OID_802_11_BSSID:
+            if (wrq->u.data.length != sizeof(NDIS_802_11_MAC_ADDRESS))
+                Status  = -EINVAL;
+            else
+            {
+                Status = copy_from_user(&Bssid, wrq->u.data.pointer, wrq->u.data.length);
+
+                // tell CNTL state machine to call NdisMSetInformationComplete() after completing
+                // this request, because this request is initiated by NDIS.
+                pAd->MlmeAux.CurrReqIsFromNdis = FALSE; 
+
+				// Prevent to connect AP again in STAMlmePeriodicExec
+				pAd->MlmeAux.AutoReconnectSsidLen= 32;
+
+                // Reset allowed scan retries
+				pAd->StaCfg.ScanCnt = 0;
+
+                if (pAd->Mlme.CntlMachine.CurrState != CNTL_IDLE)
+                {
+                    RTMP_MLME_RESET_STATE_MACHINE(pAd);
+                    DBGPRINT(RT_DEBUG_TRACE, ("!!! MLME busy, reset MLME state machine !!!\n"));
+                }
+                MlmeEnqueue(pAd, 
+                            MLME_CNTL_STATE_MACHINE, 
+                            OID_802_11_BSSID, 
+                            sizeof(NDIS_802_11_MAC_ADDRESS),
+                            (VOID *)&Bssid, 0);
+                Status = NDIS_STATUS_SUCCESS;
+                StateMachineTouched = TRUE;
+
+                DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_BSSID %02x:%02x:%02x:%02x:%02x:%02x\n",
+                                        Bssid[0], Bssid[1], Bssid[2], Bssid[3], Bssid[4], Bssid[5]));
+            }
+            break;
+        case RT_OID_802_11_RADIO:
+            if (wrq->u.data.length != sizeof(BOOLEAN))
+                Status  = -EINVAL;
+            else
+            {
+                Status = copy_from_user(&RadioState, wrq->u.data.pointer, wrq->u.data.length);
+                DBGPRINT(RT_DEBUG_TRACE, ("Set::RT_OID_802_11_RADIO (=%d)\n", RadioState));
+                if (pAd->StaCfg.bSwRadio != RadioState)
+                {
+                    pAd->StaCfg.bSwRadio = RadioState;
+                    if (pAd->StaCfg.bRadio != (pAd->StaCfg.bHwRadio && pAd->StaCfg.bSwRadio))
+                    {
+                        pAd->StaCfg.bRadio = (pAd->StaCfg.bHwRadio && pAd->StaCfg.bSwRadio);
+                        if (pAd->StaCfg.bRadio == TRUE)
+                        {
+                            MlmeRadioOn(pAd);
+                            // Update extra information
+							pAd->ExtraInfo = EXTRA_INFO_CLEAR;
+                        }
+                        else
+                        {
+                        	if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS))
+				            {
+				                if (pAd->Mlme.CntlMachine.CurrState != CNTL_IDLE)
+						        {
+						            RTMP_MLME_RESET_STATE_MACHINE(pAd);
+						            DBGPRINT(RT_DEBUG_TRACE, ("!!! MLME busy, reset MLME state machine !!!\n"));
+						        }
+				            }
+							
+                            MlmeRadioOff(pAd);
+                            // Update extra information
+							pAd->ExtraInfo = SW_RADIO_OFF;
+                        }
+                    }
+                }
+            }
+            break;
+        case RT_OID_802_11_PHY_MODE:
+            if (wrq->u.data.length != sizeof(RT_802_11_PHY_MODE))
+                Status  = -EINVAL;
+            else
+            {
+                Status = copy_from_user(&PhyMode, wrq->u.data.pointer, wrq->u.data.length);
+				if (PhyMode <= MaxPhyMode)
+				{
+					pAd->CommonCfg.DesiredPhyMode = PhyMode;
+                	RTMPSetPhyMode(pAd, PhyMode);
+#ifdef DOT11_N_SUPPORT
+					SetCommonHT(pAd);
+#endif // DOT11_N_SUPPORT //
+				}
+                DBGPRINT(RT_DEBUG_TRACE, ("Set::RT_OID_802_11_PHY_MODE (=%d)\n", PhyMode));
+            }
+            break;
+        case RT_OID_802_11_STA_CONFIG:
+            if (wrq->u.data.length != sizeof(RT_802_11_STA_CONFIG))
+                Status  = -EINVAL;
+            else
+            {
+            	UINT32	Value;
+				
+                Status = copy_from_user(&StaConfig, wrq->u.data.pointer, wrq->u.data.length);
+                pAd->CommonCfg.bEnableTxBurst = StaConfig.EnableTxBurst;
+                pAd->CommonCfg.UseBGProtection = StaConfig.UseBGProtection;
+                pAd->CommonCfg.bUseShortSlotTime = 1; // 2003-10-30 always SHORT SLOT capable
+                if ((pAd->CommonCfg.PhyMode != StaConfig.AdhocMode) &&
+					(StaConfig.AdhocMode <= MaxPhyMode))
+                {
+                    // allow dynamic change of "USE OFDM rate or not" in ADHOC mode
+                    // if setting changed, need to reset current TX rate as well as BEACON frame format
+                    if (pAd->StaCfg.BssType == BSS_ADHOC)
+                    {
+                    	pAd->CommonCfg.PhyMode = StaConfig.AdhocMode;
+                    	RTMPSetPhyMode(pAd, PhyMode);
+                        MlmeUpdateTxRates(pAd, FALSE, 0);
+                        MakeIbssBeacon(pAd);           // re-build BEACON frame
+                        AsicEnableIbssSync(pAd);   // copy to on-chip memory
+                    }
+                }
+                DBGPRINT(RT_DEBUG_TRACE, ("Set::RT_OID_802_11_SET_STA_CONFIG (Burst=%d, Protection=%ld,ShortSlot=%d\n",
+                                        pAd->CommonCfg.bEnableTxBurst,
+                                        pAd->CommonCfg.UseBGProtection,
+                                        pAd->CommonCfg.bUseShortSlotTime));
+
+#ifdef XLINK_SUPPORT
+				if (pAd->StaCfg.PSPXlink)
+					Value = PSPXLINK;
+				else
+#endif // XLINK_SUPPORT //
+					Value = STANORMAL;
+				RTMP_IO_WRITE32(pAd, RX_FILTR_CFG, Value);
+            }
+            break;
+        case OID_802_11_DESIRED_RATES:
+            if (wrq->u.data.length != sizeof(NDIS_802_11_RATES))
+                Status  = -EINVAL;
+            else
+            {
+                Status = copy_from_user(&aryRates, wrq->u.data.pointer, wrq->u.data.length);
+                NdisZeroMemory(pAd->CommonCfg.DesireRate, MAX_LEN_OF_SUPPORTED_RATES);
+                NdisMoveMemory(pAd->CommonCfg.DesireRate, &aryRates, sizeof(NDIS_802_11_RATES));
+                DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_DESIRED_RATES (%02x,%02x,%02x,%02x,%02x,%02x,%02x,%02x)\n",
+                    pAd->CommonCfg.DesireRate[0],pAd->CommonCfg.DesireRate[1],
+                    pAd->CommonCfg.DesireRate[2],pAd->CommonCfg.DesireRate[3],
+                    pAd->CommonCfg.DesireRate[4],pAd->CommonCfg.DesireRate[5],
+                    pAd->CommonCfg.DesireRate[6],pAd->CommonCfg.DesireRate[7] ));
+                // Changing DesiredRate may affect the MAX TX rate we used to TX frames out
+                MlmeUpdateTxRates(pAd, FALSE, 0);
+            }
+            break;
+        case RT_OID_802_11_PREAMBLE:
+            if (wrq->u.data.length != sizeof(RT_802_11_PREAMBLE))
+                Status  = -EINVAL;
+            else
+            {
+                Status = copy_from_user(&Preamble, wrq->u.data.pointer, wrq->u.data.length);
+                if (Preamble == Rt802_11PreambleShort)
+                {
+                    pAd->CommonCfg.TxPreamble = Preamble;
+                    MlmeSetTxPreamble(pAd, Rt802_11PreambleShort);
+                }
+                else if ((Preamble == Rt802_11PreambleLong) || (Preamble == Rt802_11PreambleAuto))
+                {
+                    // if user wants AUTO, initialize to LONG here, then change according to AP's
+                    // capability upon association.
+                    pAd->CommonCfg.TxPreamble = Preamble;
+                    MlmeSetTxPreamble(pAd, Rt802_11PreambleLong);
+                }
+                else
+                {
+                    Status = -EINVAL;
+                    break;
+                }
+                DBGPRINT(RT_DEBUG_TRACE, ("Set::RT_OID_802_11_PREAMBLE (=%d)\n", Preamble));
+            }
+            break;
+        case OID_802_11_WEP_STATUS:
+            if (wrq->u.data.length != sizeof(NDIS_802_11_WEP_STATUS))
+                Status  = -EINVAL;
+            else
+            {
+                Status = copy_from_user(&WepStatus, wrq->u.data.pointer, wrq->u.data.length);
+                // Since TKIP, AES, WEP are all supported. It should not have any invalid setting
+                if (WepStatus <= Ndis802_11Encryption3KeyAbsent)
+                {
+                    if (pAd->StaCfg.WepStatus != WepStatus)
+                    {
+                        // Config has changed
+                        pAd->bConfigChanged = TRUE;
+                    }
+                    pAd->StaCfg.WepStatus     = WepStatus;
+                    pAd->StaCfg.OrigWepStatus = WepStatus;
+                    pAd->StaCfg.PairCipher    = WepStatus;
+                	pAd->StaCfg.GroupCipher   = WepStatus;
+
+					if (pAd->StaCfg.BssType == BSS_ADHOC)
+					{
+						// Build all corresponding channel information
+						RTMPSetPhyMode(pAd, pAd->CommonCfg.DesiredPhyMode);
+#ifdef DOT11_N_SUPPORT
+						SetCommonHT(pAd);
+#endif // DOT11_N_SUPPORT //
+					}
+                }
+                else
+                {
+                    Status  = -EINVAL;
+                    break;
+                }
+                DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_WEP_STATUS (=%d)\n",WepStatus));
+            }
+            break;
+        case OID_802_11_AUTHENTICATION_MODE:
+            if (wrq->u.data.length != sizeof(NDIS_802_11_AUTHENTICATION_MODE)) 
+                Status  = -EINVAL;
+            else
+            {
+                Status = copy_from_user(&AuthMode, wrq->u.data.pointer, wrq->u.data.length);
+                if (AuthMode > Ndis802_11AuthModeMax)
+                {
+                    Status  = -EINVAL;
+                    break;
+                }
+                else
+                {
+                    if (pAd->StaCfg.AuthMode != AuthMode)
+                    {
+                        // Config has changed
+                        pAd->bConfigChanged = TRUE;
+                    }
+                    pAd->StaCfg.AuthMode = AuthMode;
+                }
+                pAd->StaCfg.PortSecured = WPA_802_1X_PORT_NOT_SECURED;
+                DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_AUTHENTICATION_MODE (=%d) \n",pAd->StaCfg.AuthMode));
+            }
+            break;
+        case OID_802_11_INFRASTRUCTURE_MODE:
+            if (wrq->u.data.length != sizeof(NDIS_802_11_NETWORK_INFRASTRUCTURE))
+                Status  = -EINVAL;
+            else
+            {
+                Status = copy_from_user(&BssType, wrq->u.data.pointer, wrq->u.data.length);
+							
+				if (BssType == Ndis802_11IBSS)
+					Set_NetworkType_Proc(pAd, "Adhoc");
+				else if (BssType == Ndis802_11Infrastructure)
+					Set_NetworkType_Proc(pAd, "Infra");
+                else if (BssType == Ndis802_11Monitor)
+					Set_NetworkType_Proc(pAd, "Monitor");
+                else
+                {
+                    Status  = -EINVAL;
+                    DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_INFRASTRUCTURE_MODE (unknown)\n"));
+                }
+            }
+            break;
+	 case OID_802_11_REMOVE_WEP:
+            DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_REMOVE_WEP\n"));
+            if (wrq->u.data.length != sizeof(NDIS_802_11_KEY_INDEX))
+            {
+				Status = -EINVAL;
+            }
+            else 
+            {
+		KeyIdx = *(NDIS_802_11_KEY_INDEX *) wrq->u.data.pointer;
+
+		if (KeyIdx & 0x80000000)
+		{
+			// Should never set default bit when remove key
+			Status = -EINVAL;
+		}
+		else
+		{
+			KeyIdx = KeyIdx & 0x0fffffff;
+			if (KeyIdx >= 4){
+				Status = -EINVAL;
+			}
+			else
+			{
+						pAd->SharedKey[BSS0][KeyIdx].KeyLen = 0;
+						pAd->SharedKey[BSS0][KeyIdx].CipherAlg = CIPHER_NONE;
+						AsicRemoveSharedKeyEntry(pAd, 0, (UCHAR)KeyIdx);
+			}
+		}
+            }
+            break;
+        case RT_OID_802_11_RESET_COUNTERS:
+            NdisZeroMemory(&pAd->WlanCounters, sizeof(COUNTER_802_11));
+            NdisZeroMemory(&pAd->Counters8023, sizeof(COUNTER_802_3));
+            NdisZeroMemory(&pAd->RalinkCounters, sizeof(COUNTER_RALINK));
+            pAd->Counters8023.RxNoBuffer   = 0;
+			pAd->Counters8023.GoodReceives = 0;
+			pAd->Counters8023.RxNoBuffer   = 0;
+            DBGPRINT(RT_DEBUG_TRACE, ("Set::RT_OID_802_11_RESET_COUNTERS \n"));
+            break;
+        case OID_802_11_RTS_THRESHOLD:
+            if (wrq->u.data.length != sizeof(NDIS_802_11_RTS_THRESHOLD))
+                Status  = -EINVAL;
+            else
+            {
+                Status = copy_from_user(&RtsThresh, wrq->u.data.pointer, wrq->u.data.length);
+                if (RtsThresh > MAX_RTS_THRESHOLD)
+                    Status  = -EINVAL;
+                else
+                    pAd->CommonCfg.RtsThreshold = (USHORT)RtsThresh;
+            }
+            DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_RTS_THRESHOLD (=%ld)\n",RtsThresh));
+            break;
+        case OID_802_11_FRAGMENTATION_THRESHOLD:
+            if (wrq->u.data.length != sizeof(NDIS_802_11_FRAGMENTATION_THRESHOLD))
+                Status  = -EINVAL;
+            else
+            {
+                Status = copy_from_user(&FragThresh, wrq->u.data.pointer, wrq->u.data.length);
+                pAd->CommonCfg.bUseZeroToDisableFragment = FALSE;
+                if (FragThresh > MAX_FRAG_THRESHOLD || FragThresh < MIN_FRAG_THRESHOLD)
+                {
+                    if (FragThresh == 0)
+                    {
+                        pAd->CommonCfg.FragmentThreshold = MAX_FRAG_THRESHOLD;
+                        pAd->CommonCfg.bUseZeroToDisableFragment = TRUE;
+                    }
+                    else
+                        Status  = -EINVAL;
+                }
+                else
+                    pAd->CommonCfg.FragmentThreshold = (USHORT)FragThresh;
+            }
+            DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_FRAGMENTATION_THRESHOLD (=%ld) \n",FragThresh));
+            break;
+        case OID_802_11_POWER_MODE:
+            if (wrq->u.data.length != sizeof(NDIS_802_11_POWER_MODE))
+                Status = -EINVAL;
+            else
+            {
+                Status = copy_from_user(&PowerMode, wrq->u.data.pointer, wrq->u.data.length);
+                if (PowerMode == Ndis802_11PowerModeCAM) 
+                	Set_PSMode_Proc(pAd, "CAM");
+                else if (PowerMode == Ndis802_11PowerModeMAX_PSP) 
+                	Set_PSMode_Proc(pAd, "Max_PSP");
+                else if (PowerMode == Ndis802_11PowerModeFast_PSP) 
+					Set_PSMode_Proc(pAd, "Fast_PSP");
+                else if (PowerMode == Ndis802_11PowerModeLegacy_PSP) 
+					Set_PSMode_Proc(pAd, "Legacy_PSP");
+                else
+                    Status = -EINVAL;
+            }
+            DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_POWER_MODE (=%d)\n",PowerMode));
+            break;
+         case RT_OID_802_11_TX_POWER_LEVEL_1:
+			if (wrq->u.data.length  < sizeof(ULONG))
+				Status = -EINVAL;
+			else
+			{
+				Status = copy_from_user(&PowerTemp, wrq->u.data.pointer, wrq->u.data.length);
+				if (PowerTemp > 100)
+					PowerTemp = 0xffffffff;  // AUTO
+				pAd->CommonCfg.TxPowerDefault = PowerTemp; //keep current setting.
+				pAd->CommonCfg.TxPowerPercentage = pAd->CommonCfg.TxPowerDefault;			
+                DBGPRINT(RT_DEBUG_TRACE, ("Set::RT_OID_802_11_TX_POWER_LEVEL_1 (=%ld)\n", pAd->CommonCfg.TxPowerPercentage));
+			}	
+	        break;
+		case OID_802_11_NETWORK_TYPE_IN_USE: 
+			if (wrq->u.data.length != sizeof(NDIS_802_11_NETWORK_TYPE))
+				Status = -EINVAL;
+			else 
+			{
+				Status = copy_from_user(&NetType, wrq->u.data.pointer, wrq->u.data.length);
+
+				if (NetType == Ndis802_11DS)
+					RTMPSetPhyMode(pAd, PHY_11B);
+				else if (NetType == Ndis802_11OFDM24)
+					RTMPSetPhyMode(pAd, PHY_11BG_MIXED);
+				else if (NetType == Ndis802_11OFDM5)
+					RTMPSetPhyMode(pAd, PHY_11A);
+				else 
+					Status = -EINVAL;
+#ifdef DOT11_N_SUPPORT
+				if (Status == NDIS_STATUS_SUCCESS)
+					SetCommonHT(pAd);
+#endif // DOT11_N_SUPPORT //
+                DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_NETWORK_TYPE_IN_USE (=%d)\n",NetType));
+		    }	    
+			break;
+        // For WPA PSK PMK key
+        case RT_OID_802_11_ADD_WPA:
+            pKey = kmalloc(wrq->u.data.length, MEM_ALLOC_FLAG);
+            if(pKey == NULL)
+            {
+                Status = -ENOMEM;
+                break;
+            }
+            
+            Status = copy_from_user(pKey, wrq->u.data.pointer, wrq->u.data.length);
+            if (pKey->Length != wrq->u.data.length)
+            {
+                Status  = -EINVAL;
+                DBGPRINT(RT_DEBUG_TRACE, ("Set::RT_OID_802_11_ADD_WPA, Failed!!\n"));
+            }
+            else
+            {
+                if ((pAd->StaCfg.AuthMode != Ndis802_11AuthModeWPAPSK) &&
+				    (pAd->StaCfg.AuthMode != Ndis802_11AuthModeWPA2PSK) &&
+				    (pAd->StaCfg.AuthMode != Ndis802_11AuthModeWPANone) )
+                {
+                    Status = -EOPNOTSUPP;
+                    DBGPRINT(RT_DEBUG_TRACE, ("Set::RT_OID_802_11_ADD_WPA, Failed!! [AuthMode != WPAPSK/WPA2PSK/WPANONE]\n"));
+                }
+                else if ((pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPAPSK) ||
+						 (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2PSK) ||
+						 (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPANone) )     // Only for WPA PSK mode
+				{		
+                    NdisMoveMemory(pAd->StaCfg.PMK, &pKey->KeyMaterial, pKey->KeyLength);
+                    // Use RaConfig as PSK agent.
+                    // Start STA supplicant state machine
+                    if (pAd->StaCfg.AuthMode != Ndis802_11AuthModeWPANone)
+                        pAd->StaCfg.WpaState = SS_START;
+
+                    DBGPRINT(RT_DEBUG_TRACE, ("Set::RT_OID_802_11_ADD_WPA (id=0x%x, Len=%d-byte)\n", pKey->KeyIndex, pKey->KeyLength));
+                }
+                else
+                {   
+                    pAd->StaCfg.WpaState = SS_NOTUSE;
+                    DBGPRINT(RT_DEBUG_TRACE, ("Set::RT_OID_802_11_ADD_WPA (id=0x%x, Len=%d-byte)\n", pKey->KeyIndex, pKey->KeyLength));
+                }
+            }
+            kfree(pKey);
+            break;
+        case OID_802_11_REMOVE_KEY:
+            pRemoveKey = kmalloc(wrq->u.data.length, MEM_ALLOC_FLAG);
+            if(pRemoveKey == NULL)
+            {
+                Status = -ENOMEM;
+                break;
+            }
+            
+            Status = copy_from_user(pRemoveKey, wrq->u.data.pointer, wrq->u.data.length);
+            if (pRemoveKey->Length != wrq->u.data.length)
+            {
+                Status  = -EINVAL;
+                DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_REMOVE_KEY, Failed!!\n"));
+            }
+            else
+            {
+                if (pAd->StaCfg.AuthMode >= Ndis802_11AuthModeWPA)
+                {
+                    RTMPWPARemoveKeyProc(pAd, pRemoveKey);
+                    DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_REMOVE_KEY, Remove WPA Key!!\n"));
+                }
+                else
+                {
+                    KeyIdx = pRemoveKey->KeyIndex;
+
+                    if (KeyIdx & 0x80000000)
+                    {
+                        // Should never set default bit when remove key
+                        Status  = -EINVAL;
+                        DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_REMOVE_KEY, Failed!!(Should never set default bit when remove key)\n"));
+                    }
+                    else
+                    {
+                        KeyIdx = KeyIdx & 0x0fffffff;
+                        if (KeyIdx > 3)
+                        {
+                            Status  = -EINVAL;
+                            DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_REMOVE_KEY, Failed!!(KeyId[%d] out of range)\n", KeyIdx));
+                        }
+                        else
+                        {
+                            pAd->SharedKey[BSS0][KeyIdx].KeyLen = 0;
+                            pAd->SharedKey[BSS0][KeyIdx].CipherAlg = CIPHER_NONE;
+                            AsicRemoveSharedKeyEntry(pAd, 0, (UCHAR)KeyIdx); 
+                            DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_REMOVE_KEY (id=0x%x, Len=%d-byte)\n", pRemoveKey->KeyIndex, pRemoveKey->Length));
+                        }
+                    }
+                }
+            }
+            kfree(pRemoveKey);
+            break;        
+        // New for WPA
+        case OID_802_11_ADD_KEY:
+            pKey = kmalloc(wrq->u.data.length, MEM_ALLOC_FLAG);
+            if(pKey == NULL)
+            {
+                Status = -ENOMEM;
+                break;
+            }
+            Status = copy_from_user(pKey, wrq->u.data.pointer, wrq->u.data.length);
+            if (pKey->Length != wrq->u.data.length)
+            {
+                Status  = -EINVAL;
+                DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_ADD_KEY, Failed!!\n"));
+            }
+            else
+            {
+                RTMPAddKey(pAd, pKey);
+                DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_ADD_KEY (id=0x%x, Len=%d-byte)\n", pKey->KeyIndex, pKey->KeyLength));
+            }
+            kfree(pKey);
+            break;
+        case OID_802_11_CONFIGURATION:
+            if (wrq->u.data.length != sizeof(NDIS_802_11_CONFIGURATION))
+                Status  = -EINVAL;
+            else
+            {
+                Status = copy_from_user(&Config, wrq->u.data.pointer, wrq->u.data.length);
+                pConfig = &Config;
+
+                if ((pConfig->BeaconPeriod >= 20) && (pConfig->BeaconPeriod <=400))
+                     pAd->CommonCfg.BeaconPeriod = (USHORT) pConfig->BeaconPeriod;
+                
+                pAd->StaActive.AtimWin = (USHORT) pConfig->ATIMWindow;
+                MAP_KHZ_TO_CHANNEL_ID(pConfig->DSConfig, pAd->CommonCfg.Channel);
+                //
+				// Save the channel on MlmeAux for CntlOidRTBssidProc used.
+				//
+				pAd->MlmeAux.Channel = pAd->CommonCfg.Channel;
+				
+                DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_CONFIGURATION (BeacnPeriod=%ld,AtimW=%ld,Ch=%d)\n",
+                    pConfig->BeaconPeriod, pConfig->ATIMWindow, pAd->CommonCfg.Channel));
+                // Config has changed
+                pAd->bConfigChanged = TRUE;
+            }
+            break;
+#ifdef DOT11_N_SUPPORT
+		case RT_OID_802_11_SET_HT_PHYMODE:
+			if (wrq->u.data.length	!= sizeof(OID_SET_HT_PHYMODE))
+				Status = -EINVAL;
+			else 
+			{
+			    POID_SET_HT_PHYMODE	pHTPhyMode = &HT_PhyMode;
+                
+				Status = copy_from_user(&HT_PhyMode, wrq->u.data.pointer, wrq->u.data.length);				
+				DBGPRINT(RT_DEBUG_TRACE, ("Set::pHTPhyMode	(PhyMode = %d,TransmitNo = %d, HtMode =	%d,	ExtOffset =	%d , MCS = %d, BW =	%d,	STBC = %d, SHORTGI = %d) \n", 
+				pHTPhyMode->PhyMode, pHTPhyMode->TransmitNo,pHTPhyMode->HtMode,pHTPhyMode->ExtOffset,
+				pHTPhyMode->MCS, pHTPhyMode->BW, pHTPhyMode->STBC,	pHTPhyMode->SHORTGI));
+				if (pAd->CommonCfg.PhyMode	>= PHY_11ABGN_MIXED)
+					RTMPSetHT(pAd,	pHTPhyMode);
+			}
+			DBGPRINT(RT_DEBUG_TRACE, ("Set::RT_OID_802_11_SET_HT_PHYMODE(MCS=%d,BW=%d,SGI=%d,STBC=%d)\n", 
+				pAd->StaCfg.HTPhyMode.field.MCS, pAd->StaCfg.HTPhyMode.field.BW, pAd->StaCfg.HTPhyMode.field.ShortGI,
+				pAd->StaCfg.HTPhyMode.field.STBC));
+			break;
+#endif // DOT11_N_SUPPORT //
+		case RT_OID_802_11_SET_APSD_SETTING:
+			if (wrq->u.data.length != sizeof(ULONG))
+				Status = -EINVAL;
+			else 
+			{
+				ULONG apsd ;
+				Status = copy_from_user(&apsd, wrq->u.data.pointer,	wrq->u.data.length);
+
+				/*-------------------------------------------------------------------
+				|B31~B7	|	B6~B5	 |	 B4	 |	 B3	 |	B2	 |	B1	 |	   B0		|
+				---------------------------------------------------------------------
+				| Rsvd	| Max SP Len | AC_VO | AC_VI | AC_BK | AC_BE | APSD	Capable	|
+				---------------------------------------------------------------------*/
+				pAd->CommonCfg.bAPSDCapable = (apsd & 0x00000001) ? TRUE :	FALSE;
+				pAd->CommonCfg.bAPSDAC_BE = ((apsd	& 0x00000002) >> 1)	? TRUE : FALSE;
+				pAd->CommonCfg.bAPSDAC_BK = ((apsd	& 0x00000004) >> 2)	? TRUE : FALSE;
+				pAd->CommonCfg.bAPSDAC_VI = ((apsd	& 0x00000008) >> 3)	? TRUE : FALSE;
+				pAd->CommonCfg.bAPSDAC_VO = ((apsd	& 0x00000010) >> 4)	? TRUE : FALSE;
+				pAd->CommonCfg.MaxSPLength	= (UCHAR)((apsd	& 0x00000060) >> 5);
+
+				DBGPRINT(RT_DEBUG_TRACE, ("Set::RT_OID_802_11_SET_APSD_SETTING (apsd=0x%lx, APSDCap=%d, [BE,BK,VI,VO]=[%d/%d/%d/%d],	MaxSPLen=%d)\n", apsd, pAd->CommonCfg.bAPSDCapable,
+					pAd->CommonCfg.bAPSDAC_BE,	pAd->CommonCfg.bAPSDAC_BK,	pAd->CommonCfg.bAPSDAC_VI,	pAd->CommonCfg.bAPSDAC_VO,	pAd->CommonCfg.MaxSPLength));
+			}
+			break;
+
+		case RT_OID_802_11_SET_APSD_PSM:
+			if (wrq->u.data.length	!= sizeof(ULONG))
+				Status = -EINVAL;
+			else 
+			{
+				// Driver needs to notify AP when PSM changes
+				Status = copy_from_user(&pAd->CommonCfg.bAPSDForcePowerSave, wrq->u.data.pointer, wrq->u.data.length);
+				if (pAd->CommonCfg.bAPSDForcePowerSave	!= pAd->StaCfg.Psm)
+				{
+					RTMP_SET_PSM_BIT(pAd,	pAd->CommonCfg.bAPSDForcePowerSave);
+					RTMPSendNullFrame(pAd,	pAd->CommonCfg.TxRate,	TRUE);
+				}
+				DBGPRINT(RT_DEBUG_TRACE, ("Set::RT_OID_802_11_SET_APSD_PSM (bAPSDForcePowerSave:%d)\n",	pAd->CommonCfg.bAPSDForcePowerSave));
+			}
+			break;
+#ifdef QOS_DLS_SUPPORT
+		case RT_OID_802_11_SET_DLS:
+			if (wrq->u.data.length != sizeof(ULONG))
+				Status = -EINVAL;
+			else 
+			{
+				BOOLEAN	oldvalue = pAd->CommonCfg.bDLSCapable;
+				Status = copy_from_user(&pAd->CommonCfg.bDLSCapable, wrq->u.data.pointer, wrq->u.data.length);
+				if (oldvalue &&	!pAd->CommonCfg.bDLSCapable)
+				{
+					int	i;
+					// tear	down local dls table entry
+					for	(i=0; i<MAX_NUM_OF_INIT_DLS_ENTRY; i++)
+					{
+						if (pAd->StaCfg.DLSEntry[i].Valid && (pAd->StaCfg.DLSEntry[i].Status == DLS_FINISH))
+						{
+							pAd->StaCfg.DLSEntry[i].Status	= DLS_NONE;
+							pAd->StaCfg.DLSEntry[i].Valid	= FALSE;
+							RTMPSendDLSTearDownFrame(pAd, pAd->StaCfg.DLSEntry[i].MacAddr);
+						}
+					}
+
+					// tear	down peer dls table	entry
+					for	(i=MAX_NUM_OF_INIT_DLS_ENTRY; i<MAX_NUM_OF_DLS_ENTRY; i++)
+					{
+						if (pAd->StaCfg.DLSEntry[i].Valid && (pAd->StaCfg.DLSEntry[i].Status == DLS_FINISH))
+						{
+							pAd->StaCfg.DLSEntry[i].Status	= DLS_NONE;
+							pAd->StaCfg.DLSEntry[i].Valid	= FALSE;
+							RTMPSendDLSTearDownFrame(pAd, pAd->StaCfg.DLSEntry[i].MacAddr);
+						}
+					}
+				}
+
+				DBGPRINT(RT_DEBUG_TRACE,("Set::RT_OID_802_11_SET_DLS (=%d)\n", pAd->CommonCfg.bDLSCapable));
+			}
+			break;
+
+		case RT_OID_802_11_SET_DLS_PARAM:
+			if (wrq->u.data.length	!= sizeof(RT_802_11_DLS_UI))
+				Status = -EINVAL;
+			else 
+			{
+				RT_802_11_DLS	Dls;
+
+				NdisZeroMemory(&Dls, sizeof(RT_802_11_DLS));
+				RTMPMoveMemory(&Dls, wrq->u.data.pointer, sizeof(RT_802_11_DLS_UI));
+				MlmeEnqueue(pAd, 
+							MLME_CNTL_STATE_MACHINE, 
+							RT_OID_802_11_SET_DLS_PARAM, 
+							sizeof(RT_802_11_DLS), 
+							&Dls, 0);
+				DBGPRINT(RT_DEBUG_TRACE,("Set::RT_OID_802_11_SET_DLS_PARAM \n"));
+			}
+			break;
+#endif // QOS_DLS_SUPPORT //
+
+
+		case RT_OID_802_11_SET_WMM:
+			if (wrq->u.data.length	!= sizeof(BOOLEAN))
+				Status = -EINVAL;
+			else 
+			{
+				Status = copy_from_user(&pAd->CommonCfg.bWmmCapable, wrq->u.data.pointer, wrq->u.data.length);
+				DBGPRINT(RT_DEBUG_TRACE, ("Set::RT_OID_802_11_SET_WMM (=%d)	\n", pAd->CommonCfg.bWmmCapable));
+			}
+			break;
+
+		case OID_802_11_DISASSOCIATE:
+			//
+			// Set NdisRadioStateOff to	TRUE, instead of called	MlmeRadioOff.
+			// Later on, NDIS_802_11_BSSID_LIST_EX->NumberOfItems should be	0 
+			// when	query OID_802_11_BSSID_LIST.
+			//
+			// TRUE:  NumberOfItems	will set to	0.
+			// FALSE: NumberOfItems	no change.
+			//			
+			pAd->CommonCfg.NdisRadioStateOff =	TRUE;
+			// Set to immediately send the media disconnect	event
+			pAd->MlmeAux.CurrReqIsFromNdis	= TRUE;			
+			DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_DISASSOCIATE	\n"));
+
+
+			if (INFRA_ON(pAd))
+			{
+				if (pAd->Mlme.CntlMachine.CurrState !=	CNTL_IDLE)
+				{
+					RTMP_MLME_RESET_STATE_MACHINE(pAd);
+					DBGPRINT(RT_DEBUG_TRACE, ("!!! MLME	busy, reset	MLME state machine !!!\n"));
+				}
+
+				MlmeEnqueue(pAd, 
+					MLME_CNTL_STATE_MACHINE,
+					OID_802_11_DISASSOCIATE,
+					0,
+					NULL, 0);
+
+				StateMachineTouched	= TRUE;
+			}
+			break;
+
+#ifdef DOT11_N_SUPPORT
+		case RT_OID_802_11_SET_IMME_BA_CAP:
+				if (wrq->u.data.length != sizeof(OID_BACAP_STRUC))
+					Status = -EINVAL;
+				else
+				{
+					OID_BACAP_STRUC Orde ;
+					Status = copy_from_user(&Orde, wrq->u.data.pointer, wrq->u.data.length);
+					if (Orde.Policy > BA_NOTUSE)
+					{
+						Status = NDIS_STATUS_INVALID_DATA;
+					}
+					else if (Orde.Policy == BA_NOTUSE)
+					{
+						pAd->CommonCfg.BACapability.field.Policy = BA_NOTUSE;
+						pAd->CommonCfg.BACapability.field.MpduDensity = Orde.MpduDensity;
+						pAd->CommonCfg.DesiredHtPhy.MpduDensity = Orde.MpduDensity;
+						pAd->CommonCfg.DesiredHtPhy.AmsduEnable = Orde.AmsduEnable;
+						pAd->CommonCfg.DesiredHtPhy.AmsduSize= Orde.AmsduSize;
+						pAd->CommonCfg.DesiredHtPhy.MimoPs= Orde.MMPSmode;
+						pAd->CommonCfg.BACapability.field.MMPSmode = Orde.MMPSmode;
+						// UPdata to HT IE
+						pAd->CommonCfg.HtCapability.HtCapInfo.MimoPs = Orde.MMPSmode;
+						pAd->CommonCfg.HtCapability.HtCapInfo.AMsduSize = Orde.AmsduSize;
+						pAd->CommonCfg.HtCapability.HtCapParm.MpduDensity = Orde.MpduDensity;
+					}
+					else
+					{
+                        pAd->CommonCfg.BACapability.field.AutoBA = Orde.AutoBA;
+						pAd->CommonCfg.BACapability.field.Policy = IMMED_BA; // we only support immediate BA.
+						pAd->CommonCfg.BACapability.field.MpduDensity = Orde.MpduDensity;
+						pAd->CommonCfg.DesiredHtPhy.MpduDensity = Orde.MpduDensity;
+						pAd->CommonCfg.DesiredHtPhy.AmsduEnable = Orde.AmsduEnable;
+						pAd->CommonCfg.DesiredHtPhy.AmsduSize= Orde.AmsduSize;
+						pAd->CommonCfg.DesiredHtPhy.MimoPs = Orde.MMPSmode;
+						pAd->CommonCfg.BACapability.field.MMPSmode = Orde.MMPSmode;
+							
+						// UPdata to HT IE
+						pAd->CommonCfg.HtCapability.HtCapInfo.MimoPs = Orde.MMPSmode;
+						pAd->CommonCfg.HtCapability.HtCapInfo.AMsduSize = Orde.AmsduSize;
+						pAd->CommonCfg.HtCapability.HtCapParm.MpduDensity = Orde.MpduDensity;
+						
+						if (pAd->CommonCfg.BACapability.field.RxBAWinLimit > MAX_RX_REORDERBUF)
+							pAd->CommonCfg.BACapability.field.RxBAWinLimit = MAX_RX_REORDERBUF;
+
+					}
+
+					pAd->CommonCfg.REGBACapability.word = pAd->CommonCfg.BACapability.word;
+					DBGPRINT(RT_DEBUG_TRACE, ("Set::(Orde.AutoBA = %d) (Policy=%d)(ReBAWinLimit=%d)(TxBAWinLimit=%d)(AutoMode=%d)\n",Orde.AutoBA, pAd->CommonCfg.BACapability.field.Policy,
+						pAd->CommonCfg.BACapability.field.RxBAWinLimit,pAd->CommonCfg.BACapability.field.TxBAWinLimit, pAd->CommonCfg.BACapability.field.AutoBA));
+					DBGPRINT(RT_DEBUG_TRACE, ("Set::(MimoPs = %d)(AmsduEnable = %d) (AmsduSize=%d)(MpduDensity=%d)\n",pAd->CommonCfg.DesiredHtPhy.MimoPs, pAd->CommonCfg.DesiredHtPhy.AmsduEnable,
+						pAd->CommonCfg.DesiredHtPhy.AmsduSize, pAd->CommonCfg.DesiredHtPhy.MpduDensity));
+				}
+
+				break;
+		case RT_OID_802_11_ADD_IMME_BA:
+			DBGPRINT(RT_DEBUG_TRACE, (" Set :: RT_OID_802_11_ADD_IMME_BA \n"));
+			if (wrq->u.data.length != sizeof(OID_ADD_BA_ENTRY))
+					Status = -EINVAL;
+			else 
+			{
+				UCHAR		        index;
+				OID_ADD_BA_ENTRY    BA;
+				MAC_TABLE_ENTRY     *pEntry;
+
+				Status = copy_from_user(&BA, wrq->u.data.pointer, wrq->u.data.length);
+				if (BA.TID > 15)
+				{
+					Status = NDIS_STATUS_INVALID_DATA;
+					break;
+				}
+				else
+				{
+					//BATableInsertEntry
+					//As ad-hoc mode, BA pair is not limited to only BSSID. so add via OID. 
+					index = BA.TID;
+					// in ad hoc mode, when adding BA pair, we should insert this entry into MACEntry too
+					pEntry = MacTableLookup(pAd, BA.MACAddr);
+					if (!pEntry)
+					{
+						DBGPRINT(RT_DEBUG_TRACE, ("RT_OID_802_11_ADD_IMME_BA. break on no connection.----:%x:%x\n", BA.MACAddr[4], BA.MACAddr[5]));
+						break;
+					}
+					if (BA.IsRecipient == FALSE)
+					{
+					    if (pEntry->bIAmBadAtheros == TRUE)
+							pAd->CommonCfg.BACapability.field.RxBAWinLimit = 0x10;
+
+						BAOriSessionSetUp(pAd, pEntry, index, 0, 100, TRUE);
+					}
+					else 
+					{
+						//BATableInsertEntry(pAd, pEntry->Aid, BA.MACAddr, 0, 0xffff, BA.TID, BA.nMSDU, BA.IsRecipient);
+					}
+
+					DBGPRINT(RT_DEBUG_TRACE, ("Set::RT_OID_802_11_ADD_IMME_BA. Rec = %d. Mac = %x:%x:%x:%x:%x:%x . \n",
+						BA.IsRecipient, BA.MACAddr[0], BA.MACAddr[1], BA.MACAddr[2], BA.MACAddr[2]
+						, BA.MACAddr[4], BA.MACAddr[5]));
+				}
+			}
+			break;
+
+		case RT_OID_802_11_TEAR_IMME_BA:
+			DBGPRINT(RT_DEBUG_TRACE, ("Set :: RT_OID_802_11_TEAR_IMME_BA \n"));
+			if (wrq->u.data.length != sizeof(OID_ADD_BA_ENTRY))
+					Status = -EINVAL;
+			else 
+			{
+				POID_ADD_BA_ENTRY	pBA;
+				MAC_TABLE_ENTRY *pEntry;
+				
+				pBA = kmalloc(wrq->u.data.length, MEM_ALLOC_FLAG);
+
+				if (pBA == NULL)
+				{
+					DBGPRINT(RT_DEBUG_TRACE, ("Set :: RT_OID_802_11_TEAR_IMME_BA kmalloc() can't allocate enough memory\n"));
+					Status = NDIS_STATUS_FAILURE;
+				}
+				else
+				{
+					Status = copy_from_user(pBA, wrq->u.data.pointer, wrq->u.data.length);
+					DBGPRINT(RT_DEBUG_TRACE, ("Set :: RT_OID_802_11_TEAR_IMME_BA(TID=%d, bAllTid=%d)\n", pBA->TID, pBA->bAllTid));
+					
+					if (!pBA->bAllTid && (pBA->TID > NUM_OF_TID))
+					{
+						Status = NDIS_STATUS_INVALID_DATA;
+						break;
+					}
+					
+					if (pBA->IsRecipient == FALSE)
+					{
+						pEntry = MacTableLookup(pAd, pBA->MACAddr);
+						DBGPRINT(RT_DEBUG_TRACE, (" pBA->IsRecipient == FALSE\n"));
+						if (pEntry)
+						{
+							DBGPRINT(RT_DEBUG_TRACE, (" pBA->pEntry\n"));
+							BAOriSessionTearDown(pAd, pEntry->Aid, pBA->TID, FALSE, TRUE);
+						}
+						else
+							DBGPRINT(RT_DEBUG_TRACE, ("Set :: Not found pEntry \n"));
+					}
+					else
+					{
+						pEntry = MacTableLookup(pAd, pBA->MACAddr);
+						if (pEntry)
+						{
+							BARecSessionTearDown( pAd, (UCHAR)pEntry->Aid, pBA->TID, TRUE);
+						}
+						else
+							DBGPRINT(RT_DEBUG_TRACE, ("Set :: Not found pEntry \n"));
+					}
+					kfree(pBA);
+				}
+            }
+            break;
+#endif // DOT11_N_SUPPORT //
+
+        // For WPA_SUPPLICANT to set static wep key	  
+    	case OID_802_11_ADD_WEP:
+    	    pWepKey = kmalloc(wrq->u.data.length, MEM_ALLOC_FLAG);
+
+    	    if(pWepKey == NULL)
+            {
+                Status = -ENOMEM;
+				DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_ADD_WEP, Failed!!\n"));
+                break;
+            }
+            Status = copy_from_user(pWepKey, wrq->u.data.pointer, wrq->u.data.length);
+            if (Status)
+            {
+                Status  = -EINVAL;
+                DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_ADD_WEP, Failed (length mismatch)!!\n"));
+            }
+            else
+            {
+		        KeyIdx = pWepKey->KeyIndex & 0x0fffffff;
+                // KeyIdx must be 0 ~ 3
+                if (KeyIdx > 4)
+    			{
+                    Status  = -EINVAL;
+                    DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_ADD_WEP, Failed (KeyIdx must be smaller than 4)!!\n"));
+                }
+                else
+                {
+                    UCHAR CipherAlg = 0;
+                    PUCHAR Key;
+
+					// Zero the specific shared key
+					NdisZeroMemory(&pAd->SharedKey[BSS0][KeyIdx], sizeof(CIPHER_KEY));
+
+                    // set key material and key length
+                    pAd->SharedKey[BSS0][KeyIdx].KeyLen = (UCHAR) pWepKey->KeyLength;
+                    NdisMoveMemory(pAd->SharedKey[BSS0][KeyIdx].Key, &pWepKey->KeyMaterial, pWepKey->KeyLength);
+
+                    switch(pWepKey->KeyLength)
+                    {
+                        case 5:
+                            CipherAlg = CIPHER_WEP64;
+                            break;
+                        case 13:
+                            CipherAlg = CIPHER_WEP128;
+                            break;
+                        default:
+                            DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_ADD_WEP, only support CIPHER_WEP64(len:5) & CIPHER_WEP128(len:13)!!\n"));
+                            Status = -EINVAL;
+                            break;
+                    }
+                    pAd->SharedKey[BSS0][KeyIdx].CipherAlg = CipherAlg;
+
+                    // Default key for tx (shared key)
+                    if (pWepKey->KeyIndex & 0x80000000)
+                    {
+#ifdef WPA_SUPPLICANT_SUPPORT
+                        NdisZeroMemory(&pAd->StaCfg.DesireSharedKey[KeyIdx], sizeof(CIPHER_KEY));
+								
+                        // set key material and key length
+                        pAd->StaCfg.DesireSharedKey[KeyIdx].KeyLen = (UCHAR) pWepKey->KeyLength;
+                        NdisMoveMemory(pAd->StaCfg.DesireSharedKey[KeyIdx].Key, &pWepKey->KeyMaterial, pWepKey->KeyLength);
+                        pAd->StaCfg.DesireSharedKeyId = KeyIdx;
+                        pAd->StaCfg.DesireSharedKey[KeyIdx].CipherAlg = CipherAlg;
+#endif // WPA_SUPPLICANT_SUPPORT //                    
+                        pAd->StaCfg.DefaultKeyId = (UCHAR) KeyIdx;
+                    }
+                    
+#ifdef WPA_SUPPLICANT_SUPPORT
+					if ((pAd->StaCfg.WpaSupplicantUP != WPA_SUPPLICANT_DISABLE) &&
+						(pAd->StaCfg.AuthMode >= Ndis802_11AuthModeWPA))
+					{
+						Key = pWepKey->KeyMaterial;
+						
+						// Set Group key material to Asic
+    					AsicAddSharedKeyEntry(pAd, BSS0, KeyIdx, &pAd->SharedKey[BSS0][KeyIdx]);
+						
+						/* STA doesn't need to set WCID attribute for group key */
+						STA_PORT_SECURED(pAd);
+						
+        				// Indicate Connected for GUI
+        				pAd->IndicateMediaState = NdisMediaStateConnected;
+					}
+                    else if (pAd->StaCfg.PortSecured == WPA_802_1X_PORT_SECURED)
+#endif // WPA_SUPPLICANT_SUPPORT
+                    {
+                        Key = pAd->SharedKey[BSS0][KeyIdx].Key;
+
+                        // Set key material and cipherAlg to Asic
+        				AsicAddSharedKeyEntry(pAd, BSS0, KeyIdx, &pAd->SharedKey[BSS0][KeyIdx]);	
+                        
+                        if (pWepKey->KeyIndex & 0x80000000)
+                        {
+							/* STA doesn't need to set WCID attribute for group key */
+    						// Assign pairwise key info
+    						RTMPSetWcidSecurityInfo(pAd, 
+												 BSS0, 
+												 KeyIdx, 
+												 CipherAlg, 												 
+												 BSSID_WCID, 
+												 SHAREDKEYTABLE);
+                        }
+                    }
+					DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_ADD_WEP (id=0x%x, Len=%d-byte), %s\n", pWepKey->KeyIndex, pWepKey->KeyLength, (pAd->StaCfg.PortSecured == WPA_802_1X_PORT_SECURED) ? "Port Secured":"Port NOT Secured"));
+				}
+            }
+            kfree(pWepKey);
+            break;
+#ifdef WPA_SUPPLICANT_SUPPORT
+	    case OID_SET_COUNTERMEASURES:
+            if (wrq->u.data.length != sizeof(int))
+                Status  = -EINVAL;
+            else
+            {
+                int enabled = 0;
+                Status = copy_from_user(&enabled, wrq->u.data.pointer, wrq->u.data.length);
+                if (enabled == 1)
+                    pAd->StaCfg.bBlockAssoc = TRUE;
+                else
+                    // WPA MIC error should block association attempt for 60 seconds
+                    pAd->StaCfg.bBlockAssoc = FALSE;
+                DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_SET_COUNTERMEASURES bBlockAssoc=%s\n", pAd->StaCfg.bBlockAssoc ? "TRUE":"FALSE"));
+            }
+	        break;
+        case RT_OID_WPA_SUPPLICANT_SUPPORT:
+			if (wrq->u.data.length != sizeof(UCHAR))
+                Status  = -EINVAL;
+            else
+            {
+				Status = copy_from_user(&wpa_supplicant_enable, wrq->u.data.pointer, wrq->u.data.length);
+				if (wpa_supplicant_enable & WPA_SUPPLICANT_ENABLE_WPS)
+					pAd->StaCfg.WpaSupplicantUP |= WPA_SUPPLICANT_ENABLE_WPS;
+				else
+				{
+					pAd->StaCfg.WpaSupplicantUP = wpa_supplicant_enable;
+					pAd->StaCfg.WpaSupplicantUP &= 0x7F;
+				}
+				DBGPRINT(RT_DEBUG_TRACE, ("Set::RT_OID_WPA_SUPPLICANT_SUPPORT (=0x%02X)\n", pAd->StaCfg.WpaSupplicantUP));
+			}
+            break;	   
+        case OID_802_11_DEAUTHENTICATION:
+            if (wrq->u.data.length != sizeof(MLME_DEAUTH_REQ_STRUCT))
+                Status  = -EINVAL;
+            else
+            {
+                MLME_DEAUTH_REQ_STRUCT      *pInfo;
+				MLME_QUEUE_ELEM *MsgElem = (MLME_QUEUE_ELEM *) kmalloc(sizeof(MLME_QUEUE_ELEM), MEM_ALLOC_FLAG);                
+                if (MsgElem == NULL)
+                {
+                	DBGPRINT(RT_DEBUG_ERROR, ("%s():alloc memory failed!\n", __FUNCTION__));
+                        return -EINVAL;
+                }
+
+                pInfo = (MLME_DEAUTH_REQ_STRUCT *) MsgElem->Msg;
+                Status = copy_from_user(pInfo, wrq->u.data.pointer, wrq->u.data.length);
+                MlmeDeauthReqAction(pAd, MsgElem);
+				kfree(MsgElem);
+				
+                if (INFRA_ON(pAd))
+                {
+                    LinkDown(pAd, FALSE);
+                    pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE;
+                }
+                DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_DEAUTHENTICATION (Reason=%d)\n", pInfo->Reason));
+            }
+            break;
+        case OID_802_11_DROP_UNENCRYPTED:
+            if (wrq->u.data.length != sizeof(int))
+                Status  = -EINVAL;
+            else
+            {
+                int enabled = 0;
+                Status = copy_from_user(&enabled, wrq->u.data.pointer, wrq->u.data.length);
+                if (enabled == 1)
+                    pAd->StaCfg.PortSecured = WPA_802_1X_PORT_NOT_SECURED;
+                else
+                    pAd->StaCfg.PortSecured = WPA_802_1X_PORT_SECURED;
+				NdisAcquireSpinLock(&pAd->MacTabLock);
+				pAd->MacTab.Content[BSSID_WCID].PortSecured = pAd->StaCfg.PortSecured;
+				NdisReleaseSpinLock(&pAd->MacTabLock);
+                DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_DROP_UNENCRYPTED (=%d)\n", enabled));
+            }
+            break;
+        case OID_802_11_SET_IEEE8021X:
+            if (wrq->u.data.length != sizeof(BOOLEAN))
+                Status  = -EINVAL;
+            else
+            {
+                Status = copy_from_user(&IEEE8021xState, wrq->u.data.pointer, wrq->u.data.length);                				
+		        pAd->StaCfg.IEEE8021X = IEEE8021xState;
+                DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_SET_IEEE8021X (=%d)\n", IEEE8021xState));
+            }
+            break;
+        case OID_802_11_SET_IEEE8021X_REQUIRE_KEY:	
+			if (wrq->u.data.length != sizeof(BOOLEAN))
+				 Status  = -EINVAL;
+            else
+            {
+                Status = copy_from_user(&IEEE8021x_required_keys, wrq->u.data.pointer, wrq->u.data.length);                				
+				pAd->StaCfg.IEEE8021x_required_keys = IEEE8021x_required_keys;				
+				DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_SET_IEEE8021X_REQUIRE_KEY (%d)\n", IEEE8021x_required_keys));
+			}	
+			break;
+        case OID_802_11_PMKID:
+	        pPmkId = kmalloc(wrq->u.data.length, MEM_ALLOC_FLAG);
+
+	        if(pPmkId == NULL) {
+                Status = -ENOMEM;
+                break;
+            }
+            Status = copy_from_user(pPmkId, wrq->u.data.pointer, wrq->u.data.length);
+	  	  
+	        // check the PMKID information
+	        if (pPmkId->BSSIDInfoCount == 0)
+                NdisZeroMemory(pAd->StaCfg.SavedPMK, sizeof(BSSID_INFO)*PMKID_NO);
+	        else
+	        {
+		        PBSSID_INFO	pBssIdInfo;
+		        UINT		BssIdx;
+		        UINT		CachedIdx;
+
+		        for (BssIdx = 0; BssIdx < pPmkId->BSSIDInfoCount; BssIdx++)
+		        {
+			        // point to the indexed BSSID_INFO structure
+			        pBssIdInfo = (PBSSID_INFO) ((PUCHAR) pPmkId + 2 * sizeof(UINT) + BssIdx * sizeof(BSSID_INFO));
+			        // Find the entry in the saved data base.
+			        for (CachedIdx = 0; CachedIdx < pAd->StaCfg.SavedPMKNum; CachedIdx++)
+			        {
+				        // compare the BSSID
+				        if (NdisEqualMemory(pBssIdInfo->BSSID, pAd->StaCfg.SavedPMK[CachedIdx].BSSID, sizeof(NDIS_802_11_MAC_ADDRESS)))
+					        break;			
+			        }
+
+			        // Found, replace it
+			        if (CachedIdx < PMKID_NO)
+			        {
+				        DBGPRINT(RT_DEBUG_OFF, ("Update OID_802_11_PMKID, idx = %d\n", CachedIdx));
+				        NdisMoveMemory(&pAd->StaCfg.SavedPMK[CachedIdx], pBssIdInfo, sizeof(BSSID_INFO));
+				        pAd->StaCfg.SavedPMKNum++;
+			        }
+			        // Not found, replace the last one
+			        else
+			        {
+				        // Randomly replace one
+				        CachedIdx = (pBssIdInfo->BSSID[5] % PMKID_NO);
+				        DBGPRINT(RT_DEBUG_OFF, ("Update OID_802_11_PMKID, idx = %d\n", CachedIdx));
+				        NdisMoveMemory(&pAd->StaCfg.SavedPMK[CachedIdx], pBssIdInfo, sizeof(BSSID_INFO));
+			        }				
+		        }
+			}
+			if(pPmkId) 
+				kfree(pPmkId);
+	        break;
+
+		case RT_OID_WPS_PROBE_REQ_IE:
+			if (pAd->StaCfg.pWpsProbeReqIe)
+			{
+				kfree(pAd->StaCfg.pWpsProbeReqIe);
+				pAd->StaCfg.pWpsProbeReqIe = NULL;
+			}
+			pAd->StaCfg.WpsProbeReqIeLen = 0;
+			pAd->StaCfg.pWpsProbeReqIe = kmalloc(wrq->u.data.length, MEM_ALLOC_FLAG);
+			if (pAd->StaCfg.pWpsProbeReqIe)
+			{
+				Status = copy_from_user(pAd->StaCfg.pWpsProbeReqIe, wrq->u.data.pointer, wrq->u.data.length);
+
+				if (Status)
+            	{
+                	Status  = -EINVAL;
+					if (pAd->StaCfg.pWpsProbeReqIe)
+					{
+						kfree(pAd->StaCfg.pWpsProbeReqIe);
+						pAd->StaCfg.pWpsProbeReqIe = NULL;
+					}
+					pAd->StaCfg.WpsProbeReqIeLen = 0;
+                	DBGPRINT(RT_DEBUG_TRACE, ("Set::RT_OID_WPS_PROBE_REQ_IE, Failed (copy_from_user failed)!!\n"));
+           		}
+           		else
+           		{
+					pAd->StaCfg.WpsProbeReqIeLen = wrq->u.data.length;
+					hex_dump("WpsProbeReqIe", pAd->StaCfg.pWpsProbeReqIe, pAd->StaCfg.WpsProbeReqIeLen);
+					DBGPRINT(RT_DEBUG_TRACE, ("Set::RT_OID_WPS_PROBE_REQ_IE, WpsProbeReqIeLen = %d!!\n",
+								pAd->StaCfg.WpsProbeReqIeLen));
+           		}
+			}
+			else
+				Status = -ENOMEM;
+			break;
+#endif // WPA_SUPPLICANT_SUPPORT //
+
+
+
+#ifdef SNMP_SUPPORT
+		case OID_802_11_SHORTRETRYLIMIT:
+			if (wrq->u.data.length != sizeof(ULONG))
+				Status = -EINVAL;
+			else
+			{
+				Status = copy_from_user(&ShortRetryLimit, wrq->u.data.pointer, wrq->u.data.length);
+				RTMP_IO_READ32(pAd, TX_RTY_CFG, &tx_rty_cfg.word);
+				tx_rty_cfg.field.ShortRtyLimit = ShortRetryLimit;
+				RTMP_IO_WRITE32(pAd, TX_RTY_CFG, tx_rty_cfg.word);
+				DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_SHORTRETRYLIMIT (tx_rty_cfg.field.ShortRetryLimit=%d, ShortRetryLimit=%ld)\n", tx_rty_cfg.field.ShortRtyLimit, ShortRetryLimit));
+			}
+			break;
+
+		case OID_802_11_LONGRETRYLIMIT:
+			DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_LONGRETRYLIMIT \n"));
+			if (wrq->u.data.length != sizeof(ULONG))
+				Status = -EINVAL;
+			else
+			{
+				Status = copy_from_user(&LongRetryLimit, wrq->u.data.pointer, wrq->u.data.length);
+				RTMP_IO_READ32(pAd, TX_RTY_CFG, &tx_rty_cfg.word);
+				tx_rty_cfg.field.LongRtyLimit = LongRetryLimit;
+				RTMP_IO_WRITE32(pAd, TX_RTY_CFG, tx_rty_cfg.word);
+				DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_LONGRETRYLIMIT (tx_rty_cfg.field.LongRetryLimit= %d,LongRetryLimit=%ld)\n", tx_rty_cfg.field.LongRtyLimit, LongRetryLimit));
+			}
+			break;
+
+		case OID_802_11_WEPDEFAULTKEYVALUE:
+			DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_WEPDEFAULTKEYVALUE\n"));
+			pKey = kmalloc(wrq->u.data.length, GFP_KERNEL);
+			Status = copy_from_user(pKey, wrq->u.data.pointer, wrq->u.data.length);
+			//pKey = &WepKey;
+			
+			if ( pKey->Length != wrq->u.data.length)
+			{
+				Status = -EINVAL;
+				DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_WEPDEFAULTKEYVALUE, Failed!!\n"));
+			}
+			KeyIdx = pKey->KeyIndex & 0x0fffffff;
+			DBGPRINT(RT_DEBUG_TRACE,("pKey->KeyIndex =%d, pKey->KeyLength=%d\n", pKey->KeyIndex, pKey->KeyLength));
+
+			// it is a shared key
+			if (KeyIdx > 4)
+				Status = -EINVAL;
+			else
+			{
+				pAd->SharedKey[BSS0][pAd->StaCfg.DefaultKeyId].KeyLen = (UCHAR) pKey->KeyLength;
+				NdisMoveMemory(&pAd->SharedKey[BSS0][pAd->StaCfg.DefaultKeyId].Key, &pKey->KeyMaterial, pKey->KeyLength);
+				if (pKey->KeyIndex & 0x80000000)
+				{
+					// Default key for tx (shared key)
+					pAd->StaCfg.DefaultKeyId = (UCHAR) KeyIdx;
+				}
+				//RestartAPIsRequired = TRUE;
+			}
+			break;
+
+
+		case OID_802_11_WEPDEFAULTKEYID:
+			DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_WEPDEFAULTKEYID \n"));
+
+			if (wrq->u.data.length != sizeof(UCHAR))
+				Status = -EINVAL;
+			else
+				Status = copy_from_user(&pAd->StaCfg.DefaultKeyId, wrq->u.data.pointer, wrq->u.data.length);
+
+			break;
+
+
+		case OID_802_11_CURRENTCHANNEL:
+			DBGPRINT(RT_DEBUG_TRACE, ("Set::OID_802_11_CURRENTCHANNEL \n"));
+			if (wrq->u.data.length != sizeof(UCHAR))
+				Status = -EINVAL;
+			else
+			{
+				Status = copy_from_user(&ctmp, wrq->u.data.pointer, wrq->u.data.length);
+				sprintf((PSTRING)&ctmp,"%d", ctmp);
+				Set_Channel_Proc(pAd, (PSTRING)&ctmp);
+			}
+			break;
+#endif
+
+
+
+#ifdef XLINK_SUPPORT
+		case RT_OID_802_11_SET_PSPXLINK_MODE:
+			if (wrq->u.data.length != sizeof(BOOLEAN))
+                Status  = -EINVAL;
+            else
+            {
+                Status = copy_from_user(&pAd->StaCfg.PSPXlink, wrq->u.data.pointer, wrq->u.data.length);
+				/*if (pAd->StaCfg.PSPXlink)
+					RX_FILTER_SET_FLAG(pAd, fRX_FILTER_ACCEPT_PROMISCUOUS)*/
+				DBGPRINT(RT_DEBUG_TRACE,("Set::RT_OID_802_11_SET_PSPXLINK_MODE(=%d) \n", pAd->StaCfg.PSPXlink));
+            }
+			break;
+#endif // XLINK_SUPPORT //
+
+
+        default:
+            DBGPRINT(RT_DEBUG_TRACE, ("Set::unknown IOCTL's subcmd = 0x%08x\n", cmd));
+            Status = -EOPNOTSUPP;
+            break;
+    }
+
+
+    return Status;
+}
+
+INT RTMPQueryInformation(
+    IN  PRTMP_ADAPTER pAd,
+    IN  OUT struct ifreq    *rq,
+    IN  INT                 cmd)
+{
+    struct iwreq                        *wrq = (struct iwreq *) rq;
+    NDIS_802_11_BSSID_LIST_EX           *pBssidList = NULL;
+    PNDIS_WLAN_BSSID_EX                 pBss;
+    NDIS_802_11_SSID                    Ssid;
+    NDIS_802_11_CONFIGURATION           *pConfiguration = NULL;
+    RT_802_11_LINK_STATUS               *pLinkStatus = NULL;
+    RT_802_11_STA_CONFIG                *pStaConfig = NULL;
+    NDIS_802_11_STATISTICS              *pStatistics = NULL;
+    NDIS_802_11_RTS_THRESHOLD           RtsThresh;
+    NDIS_802_11_FRAGMENTATION_THRESHOLD FragThresh;
+    NDIS_802_11_POWER_MODE              PowerMode;
+    NDIS_802_11_NETWORK_INFRASTRUCTURE  BssType;
+    RT_802_11_PREAMBLE                  PreamType;
+    NDIS_802_11_AUTHENTICATION_MODE     AuthMode;
+    NDIS_802_11_WEP_STATUS              WepStatus;
+    NDIS_MEDIA_STATE                    MediaState;
+    ULONG                               BssBufSize, ulInfo=0, NetworkTypeList[4], apsd = 0, RateValue=0;
+    USHORT                              BssLen = 0;
+    PUCHAR                              pBuf = NULL, pPtr;
+    INT                                 Status = NDIS_STATUS_SUCCESS;
+    UINT                                we_version_compiled;
+    UCHAR                               i, Padding = 0;
+    BOOLEAN                             RadioState;
+    STRING								driverVersion[8];
+    OID_SET_HT_PHYMODE			        *pHTPhyMode = NULL;
+    HTTRANSMIT_SETTING	HTPhyMode;
+	
+
+#ifdef SNMP_SUPPORT	
+	//for snmp, kathy
+	DefaultKeyIdxValue			*pKeyIdxValue;
+	INT							valueLen;
+	TX_RTY_CFG_STRUC			tx_rty_cfg;
+	ULONG						ShortRetryLimit, LongRetryLimit;
+	UCHAR						tmp[64];
+#endif //SNMP
+
+
+    switch(cmd) 
+    {
+        case RT_OID_DEVICE_NAME:
+            wrq->u.data.length = sizeof(pAd->nickname);
+            Status = copy_to_user(wrq->u.data.pointer, pAd->nickname, wrq->u.data.length);
+            break;        
+        case RT_OID_VERSION_INFO:
+			DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_VERSION_INFO \n"));
+			wrq->u.data.length = 8*sizeof(CHAR);
+			sprintf(&driverVersion[0], "%s", STA_DRIVER_VERSION);
+			driverVersion[7] = '\0';
+			if (copy_to_user(wrq->u.data.pointer, &driverVersion[0], wrq->u.data.length))
+            {
+				Status = -EFAULT;
+            }
+            break;
+
+        case OID_802_11_BSSID_LIST:
+            if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS))
+            {
+            	/*
+            	 * Still scanning, indicate the caller should try again.
+            	 */
+            	pAd->StaCfg.bScanReqIsFromWebUI = TRUE;
+            	DBGPRINT(RT_DEBUG_TRACE, ("Query::OID_802_11_BSSID_LIST (Still scanning)\n"));
+				return -EAGAIN;
+            }
+#ifdef WPA_SUPPLICANT_SUPPORT
+			if ((pAd->StaCfg.WpaSupplicantUP & 0x7F) == WPA_SUPPLICANT_ENABLE)
+			{
+				pAd->StaCfg.WpaSupplicantScanCount = 0;
+			}
+#endif // WPA_SUPPLICANT_SUPPORT //
+            DBGPRINT(RT_DEBUG_TRACE, ("Query::OID_802_11_BSSID_LIST (%d BSS returned)\n",pAd->ScanTab.BssNr));
+			pAd->StaCfg.bScanReqIsFromWebUI = FALSE;
+            // Claculate total buffer size required
+            BssBufSize = sizeof(ULONG);
+            
+            for (i = 0; i < pAd->ScanTab.BssNr; i++) 
+            {
+                // Align pointer to 4 bytes boundary.
+                //Padding = 4 - (pAdapter->ScanTab.BssEntry[i].VarIELen & 0x0003);
+                //if (Padding == 4)
+                //    Padding = 0;
+                BssBufSize += (sizeof(NDIS_WLAN_BSSID_EX) - 1 + sizeof(NDIS_802_11_FIXED_IEs) + pAd->ScanTab.BssEntry[i].VarIELen + Padding);
+            }
+
+            // For safety issue, we add 256 bytes just in case
+            BssBufSize += 256;
+            // Allocate the same size as passed from higher layer
+            pBuf = kmalloc(BssBufSize, MEM_ALLOC_FLAG);
+            if(pBuf == NULL)
+            {
+                Status = -ENOMEM;
+                break;
+            }
+            // Init 802_11_BSSID_LIST_EX structure
+            NdisZeroMemory(pBuf, BssBufSize);
+            pBssidList = (PNDIS_802_11_BSSID_LIST_EX) pBuf;
+            pBssidList->NumberOfItems = pAd->ScanTab.BssNr;
+            
+            // Calculate total buffer length
+            BssLen = 4; // Consist of NumberOfItems
+            // Point to start of NDIS_WLAN_BSSID_EX
+            // pPtr = pBuf + sizeof(ULONG);
+            pPtr = (PUCHAR) &pBssidList->Bssid[0];
+            for (i = 0; i < pAd->ScanTab.BssNr; i++) 
+            {
+                pBss = (PNDIS_WLAN_BSSID_EX) pPtr;
+                NdisMoveMemory(&pBss->MacAddress, &pAd->ScanTab.BssEntry[i].Bssid, MAC_ADDR_LEN);
+                if ((pAd->ScanTab.BssEntry[i].Hidden == 1) && (pAd->StaCfg.bShowHiddenSSID == FALSE))
+                {
+                    //
+					// We must return this SSID during 4way handshaking, otherwise Aegis will failed to parse WPA infomation
+					// and then failed to send EAPOl farame.
+					//
+					if ((pAd->StaCfg.AuthMode >= Ndis802_11AuthModeWPA) && (pAd->StaCfg.PortSecured != WPA_802_1X_PORT_SECURED))
+					{
+						pBss->Ssid.SsidLength = pAd->ScanTab.BssEntry[i].SsidLen;
+						NdisMoveMemory(pBss->Ssid.Ssid, pAd->ScanTab.BssEntry[i].Ssid, pAd->ScanTab.BssEntry[i].SsidLen);
+					}
+					else
+                    	pBss->Ssid.SsidLength = 0;
+                }
+                else
+                {
+                    pBss->Ssid.SsidLength = pAd->ScanTab.BssEntry[i].SsidLen;
+                    NdisMoveMemory(pBss->Ssid.Ssid, pAd->ScanTab.BssEntry[i].Ssid, pAd->ScanTab.BssEntry[i].SsidLen);
+                }
+                pBss->Privacy = pAd->ScanTab.BssEntry[i].Privacy;
+                pBss->Rssi = pAd->ScanTab.BssEntry[i].Rssi - pAd->BbpRssiToDbmDelta;
+                pBss->NetworkTypeInUse = NetworkTypeInUseSanity(&pAd->ScanTab.BssEntry[i]);
+                pBss->Configuration.Length = sizeof(NDIS_802_11_CONFIGURATION);
+                pBss->Configuration.BeaconPeriod = pAd->ScanTab.BssEntry[i].BeaconPeriod;  
+                pBss->Configuration.ATIMWindow = pAd->ScanTab.BssEntry[i].AtimWin;
+				//NdisMoveMemory(&pBss->QBssLoad, &pAd->ScanTab.BssEntry[i].QbssLoad, sizeof(QBSS_LOAD_UI));
+
+                MAP_CHANNEL_ID_TO_KHZ(pAd->ScanTab.BssEntry[i].Channel, pBss->Configuration.DSConfig);
+
+                if (pAd->ScanTab.BssEntry[i].BssType == BSS_INFRA) 
+                    pBss->InfrastructureMode = Ndis802_11Infrastructure;
+                else
+                    pBss->InfrastructureMode = Ndis802_11IBSS;
+
+                NdisMoveMemory(pBss->SupportedRates, pAd->ScanTab.BssEntry[i].SupRate, pAd->ScanTab.BssEntry[i].SupRateLen);
+                NdisMoveMemory(pBss->SupportedRates + pAd->ScanTab.BssEntry[i].SupRateLen,
+                               pAd->ScanTab.BssEntry[i].ExtRate,
+                               pAd->ScanTab.BssEntry[i].ExtRateLen);
+
+                if (pAd->ScanTab.BssEntry[i].VarIELen == 0)
+                {
+                    pBss->IELength = sizeof(NDIS_802_11_FIXED_IEs);
+                    NdisMoveMemory(pBss->IEs, &pAd->ScanTab.BssEntry[i].FixIEs, sizeof(NDIS_802_11_FIXED_IEs));
+                    pPtr = pPtr + sizeof(NDIS_WLAN_BSSID_EX) - 1 + sizeof(NDIS_802_11_FIXED_IEs);
+                }
+                else
+                {
+                    pBss->IELength = (ULONG)(sizeof(NDIS_802_11_FIXED_IEs) + pAd->ScanTab.BssEntry[i].VarIELen);
+                    pPtr = pPtr + sizeof(NDIS_WLAN_BSSID_EX) - 1 + sizeof(NDIS_802_11_FIXED_IEs);
+                    NdisMoveMemory(pBss->IEs, &pAd->ScanTab.BssEntry[i].FixIEs, sizeof(NDIS_802_11_FIXED_IEs));
+                    NdisMoveMemory(pBss->IEs + sizeof(NDIS_802_11_FIXED_IEs), pAd->ScanTab.BssEntry[i].VarIEs, pAd->ScanTab.BssEntry[i].VarIELen);
+                    pPtr += pAd->ScanTab.BssEntry[i].VarIELen;
+                }
+                pBss->Length = (ULONG)(sizeof(NDIS_WLAN_BSSID_EX) - 1 + sizeof(NDIS_802_11_FIXED_IEs) + pAd->ScanTab.BssEntry[i].VarIELen + Padding);
+
+#if WIRELESS_EXT < 17                
+                if ((BssLen + pBss->Length) < wrq->u.data.length)
+                BssLen += pBss->Length;
+                else
+                {
+                    pBssidList->NumberOfItems = i;
+                    break;
+                }
+#else
+                BssLen += pBss->Length;
+#endif
+            }
+
+#if WIRELESS_EXT < 17            
+            wrq->u.data.length = BssLen;
+#else
+            if (BssLen > wrq->u.data.length)
+            {
+                kfree(pBssidList);
+                return -E2BIG;
+            }
+            else
+                wrq->u.data.length = BssLen;
+#endif
+            Status = copy_to_user(wrq->u.data.pointer, pBssidList, BssLen);
+            kfree(pBssidList);
+            break;
+        case OID_802_3_CURRENT_ADDRESS:
+            wrq->u.data.length = MAC_ADDR_LEN;
+            Status = copy_to_user(wrq->u.data.pointer, &pAd->CurrentAddress, wrq->u.data.length);
+            break;
+        case OID_GEN_MEDIA_CONNECT_STATUS:
+            if (pAd->IndicateMediaState == NdisMediaStateConnected)
+                MediaState = NdisMediaStateConnected;
+            else
+                MediaState = NdisMediaStateDisconnected;
+                
+            wrq->u.data.length = sizeof(NDIS_MEDIA_STATE);
+            Status = copy_to_user(wrq->u.data.pointer, &MediaState, wrq->u.data.length);
+            break;   
+        case OID_802_11_BSSID:
+            if (INFRA_ON(pAd) || ADHOC_ON(pAd))
+            {
+                Status = copy_to_user(wrq->u.data.pointer, &pAd->CommonCfg.Bssid, sizeof(NDIS_802_11_MAC_ADDRESS));
+
+            }
+            else
+            {
+                DBGPRINT(RT_DEBUG_TRACE, ("Query::OID_802_11_BSSID(=EMPTY)\n"));
+                Status = -ENOTCONN;
+            }
+            break;
+        case OID_802_11_SSID:
+			NdisZeroMemory(&Ssid, sizeof(NDIS_802_11_SSID));
+			NdisZeroMemory(Ssid.Ssid, MAX_LEN_OF_SSID);
+            Ssid.SsidLength = pAd->CommonCfg.SsidLen;
+			memcpy(Ssid.Ssid, pAd->CommonCfg.Ssid,	Ssid.SsidLength);
+            wrq->u.data.length = sizeof(NDIS_802_11_SSID);
+            Status = copy_to_user(wrq->u.data.pointer, &Ssid, wrq->u.data.length);
+            DBGPRINT(RT_DEBUG_TRACE, ("Query::OID_802_11_SSID (Len=%d, ssid=%s)\n", Ssid.SsidLength,Ssid.Ssid));
+            break;
+        case RT_OID_802_11_QUERY_LINK_STATUS:
+            pLinkStatus = (RT_802_11_LINK_STATUS *) kmalloc(sizeof(RT_802_11_LINK_STATUS), MEM_ALLOC_FLAG);
+            if (pLinkStatus)
+            {
+                pLinkStatus->CurrTxRate = RateIdTo500Kbps[pAd->CommonCfg.TxRate];   // unit : 500 kbps
+                pLinkStatus->ChannelQuality = pAd->Mlme.ChannelQuality;
+                pLinkStatus->RxByteCount = pAd->RalinkCounters.ReceivedByteCount;
+                pLinkStatus->TxByteCount = pAd->RalinkCounters.TransmittedByteCount;
+        		pLinkStatus->CentralChannel = pAd->CommonCfg.CentralChannel;
+                wrq->u.data.length = sizeof(RT_802_11_LINK_STATUS);
+                Status = copy_to_user(wrq->u.data.pointer, pLinkStatus, wrq->u.data.length);
+                kfree(pLinkStatus);
+                DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_802_11_QUERY_LINK_STATUS\n"));
+            }
+            else
+            {
+                DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_802_11_QUERY_LINK_STATUS(kmalloc failed)\n"));
+                Status = -EFAULT;
+            }
+            break;
+        case OID_802_11_CONFIGURATION:
+            pConfiguration = (NDIS_802_11_CONFIGURATION *) kmalloc(sizeof(NDIS_802_11_CONFIGURATION), MEM_ALLOC_FLAG);
+            if (pConfiguration)
+            {
+                pConfiguration->Length = sizeof(NDIS_802_11_CONFIGURATION);
+                pConfiguration->BeaconPeriod = pAd->CommonCfg.BeaconPeriod;
+                pConfiguration->ATIMWindow = pAd->StaActive.AtimWin;
+                MAP_CHANNEL_ID_TO_KHZ(pAd->CommonCfg.Channel, pConfiguration->DSConfig);
+                wrq->u.data.length = sizeof(NDIS_802_11_CONFIGURATION);
+                Status = copy_to_user(wrq->u.data.pointer, pConfiguration, wrq->u.data.length);
+                DBGPRINT(RT_DEBUG_TRACE, ("Query::OID_802_11_CONFIGURATION(BeaconPeriod=%ld,AtimW=%ld,Channel=%d) \n", 
+                                        pConfiguration->BeaconPeriod, pConfiguration->ATIMWindow, pAd->CommonCfg.Channel));
+				kfree(pConfiguration);
+            }
+            else
+            {
+                DBGPRINT(RT_DEBUG_TRACE, ("Query::OID_802_11_CONFIGURATION(kmalloc failed)\n"));
+                Status = -EFAULT;
+            }
+            break;
+		case RT_OID_802_11_SNR_0:
+			if ((pAd->StaCfg.LastSNR0 > 0))
+			{
+				ulInfo = ((0xeb	- pAd->StaCfg.LastSNR0) * 3) /	16 ;
+				wrq->u.data.length = sizeof(ulInfo);
+				Status = copy_to_user(wrq->u.data.pointer, &ulInfo,	wrq->u.data.length);
+				DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_802_11_SNR_0(0x=%lx)\n", ulInfo));
+			}
+            else
+			    Status = -EFAULT;
+			break;
+		case RT_OID_802_11_SNR_1:
+			if ((pAd->Antenna.field.RxPath	> 1) && 
+                (pAd->StaCfg.LastSNR1 > 0))
+			{
+				ulInfo = ((0xeb	- pAd->StaCfg.LastSNR1) * 3) /	16 ;
+				wrq->u.data.length = sizeof(ulInfo);
+				Status = copy_to_user(wrq->u.data.pointer, &ulInfo,	wrq->u.data.length);
+				DBGPRINT(RT_DEBUG_TRACE,("Query::RT_OID_802_11_SNR_1(0x=%lx)\n",ulInfo));
+			}
+			else
+				Status = -EFAULT;
+            DBGPRINT(RT_DEBUG_TRACE,("Query::RT_OID_802_11_SNR_1(pAd->StaCfg.LastSNR1=%d)\n",pAd->StaCfg.LastSNR1));
+			break;
+        case OID_802_11_RSSI_TRIGGER:
+            ulInfo = pAd->StaCfg.RssiSample.LastRssi0 - pAd->BbpRssiToDbmDelta;
+            wrq->u.data.length = sizeof(ulInfo);
+            Status = copy_to_user(wrq->u.data.pointer, &ulInfo, wrq->u.data.length);
+            DBGPRINT(RT_DEBUG_TRACE, ("Query::OID_802_11_RSSI_TRIGGER(=%ld)\n", ulInfo));
+            break;
+		case OID_802_11_RSSI:
+        case RT_OID_802_11_RSSI:
+			ulInfo = pAd->StaCfg.RssiSample.LastRssi0;
+			wrq->u.data.length = sizeof(ulInfo);
+			Status = copy_to_user(wrq->u.data.pointer, &ulInfo,	wrq->u.data.length);
+			break;
+		case RT_OID_802_11_RSSI_1:
+            ulInfo = pAd->StaCfg.RssiSample.LastRssi1;
+			wrq->u.data.length = sizeof(ulInfo);
+			Status = copy_to_user(wrq->u.data.pointer, &ulInfo,	wrq->u.data.length);
+			break;
+        case RT_OID_802_11_RSSI_2:
+            ulInfo = pAd->StaCfg.RssiSample.LastRssi2;
+			wrq->u.data.length = sizeof(ulInfo);
+			Status = copy_to_user(wrq->u.data.pointer, &ulInfo,	wrq->u.data.length);
+			break;
+        case OID_802_11_STATISTICS:
+            pStatistics = (NDIS_802_11_STATISTICS *) kmalloc(sizeof(NDIS_802_11_STATISTICS), MEM_ALLOC_FLAG);
+            if (pStatistics)
+            {
+                DBGPRINT(RT_DEBUG_TRACE, ("Query::OID_802_11_STATISTICS \n"));
+                // add the most up-to-date h/w raw counters into software counters
+			    NICUpdateRawCounters(pAd);
+                
+                // Sanity check for calculation of sucessful count
+                if (pAd->WlanCounters.TransmittedFragmentCount.QuadPart < pAd->WlanCounters.RetryCount.QuadPart)
+                    pAd->WlanCounters.TransmittedFragmentCount.QuadPart = pAd->WlanCounters.RetryCount.QuadPart;
+
+                pStatistics->TransmittedFragmentCount.QuadPart = pAd->WlanCounters.TransmittedFragmentCount.QuadPart;
+                pStatistics->MulticastTransmittedFrameCount.QuadPart = pAd->WlanCounters.MulticastTransmittedFrameCount.QuadPart;
+                pStatistics->FailedCount.QuadPart = pAd->WlanCounters.FailedCount.QuadPart;
+                pStatistics->RetryCount.QuadPart = pAd->WlanCounters.RetryCount.QuadPart;
+                pStatistics->MultipleRetryCount.QuadPart = pAd->WlanCounters.MultipleRetryCount.QuadPart;
+                pStatistics->RTSSuccessCount.QuadPart = pAd->WlanCounters.RTSSuccessCount.QuadPart;
+                pStatistics->RTSFailureCount.QuadPart = pAd->WlanCounters.RTSFailureCount.QuadPart;
+                pStatistics->ACKFailureCount.QuadPart = pAd->WlanCounters.ACKFailureCount.QuadPart;
+                pStatistics->FrameDuplicateCount.QuadPart = pAd->WlanCounters.FrameDuplicateCount.QuadPart;
+                pStatistics->ReceivedFragmentCount.QuadPart = pAd->WlanCounters.ReceivedFragmentCount.QuadPart;
+                pStatistics->MulticastReceivedFrameCount.QuadPart = pAd->WlanCounters.MulticastReceivedFrameCount.QuadPart;
+#ifdef DBG	
+                pStatistics->FCSErrorCount = pAd->RalinkCounters.RealFcsErrCount;
+#else
+                pStatistics->FCSErrorCount.QuadPart = pAd->WlanCounters.FCSErrorCount.QuadPart;
+                pStatistics->FrameDuplicateCount.u.LowPart = pAd->WlanCounters.FrameDuplicateCount.u.LowPart / 100;
+#endif
+                wrq->u.data.length = sizeof(NDIS_802_11_STATISTICS);
+                Status = copy_to_user(wrq->u.data.pointer, pStatistics, wrq->u.data.length);
+                kfree(pStatistics);
+            }
+            else
+            {
+                DBGPRINT(RT_DEBUG_TRACE, ("Query::OID_802_11_STATISTICS(kmalloc failed)\n"));
+                Status = -EFAULT;
+            }
+            break;
+        case OID_GEN_RCV_OK:
+            ulInfo = pAd->Counters8023.GoodReceives;
+            wrq->u.data.length = sizeof(ulInfo);
+            Status = copy_to_user(wrq->u.data.pointer, &ulInfo, wrq->u.data.length);
+            break;
+        case OID_GEN_RCV_NO_BUFFER:
+            ulInfo = pAd->Counters8023.RxNoBuffer;
+            wrq->u.data.length = sizeof(ulInfo);
+            Status = copy_to_user(wrq->u.data.pointer, &ulInfo, wrq->u.data.length);
+            break;
+        case RT_OID_802_11_PHY_MODE:
+            ulInfo = (ULONG)pAd->CommonCfg.PhyMode;
+            wrq->u.data.length = sizeof(ulInfo);
+            Status = copy_to_user(wrq->u.data.pointer, &ulInfo, wrq->u.data.length);
+            DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_802_11_PHY_MODE (=%ld)\n", ulInfo));
+            break;
+        case RT_OID_802_11_STA_CONFIG:
+            pStaConfig = (RT_802_11_STA_CONFIG *) kmalloc(sizeof(RT_802_11_STA_CONFIG), MEM_ALLOC_FLAG);
+            if (pStaConfig)
+            {
+                DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_802_11_STA_CONFIG\n"));
+                pStaConfig->EnableTxBurst = pAd->CommonCfg.bEnableTxBurst;
+                pStaConfig->EnableTurboRate = 0;
+                pStaConfig->UseBGProtection = pAd->CommonCfg.UseBGProtection;
+                pStaConfig->UseShortSlotTime = pAd->CommonCfg.bUseShortSlotTime;
+                //pStaConfig->AdhocMode = pAd->StaCfg.AdhocMode;
+                pStaConfig->HwRadioStatus = (pAd->StaCfg.bHwRadio == TRUE) ? 1 : 0;
+                pStaConfig->Rsv1 = 0;
+                pStaConfig->SystemErrorBitmap = pAd->SystemErrorBitmap;
+                wrq->u.data.length = sizeof(RT_802_11_STA_CONFIG);
+                Status = copy_to_user(wrq->u.data.pointer, pStaConfig, wrq->u.data.length);
+                kfree(pStaConfig);
+            }
+            else
+            {
+                DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_802_11_STA_CONFIG(kmalloc failed)\n"));
+                Status = -EFAULT;
+            }
+            break;
+        case OID_802_11_RTS_THRESHOLD:
+            RtsThresh = pAd->CommonCfg.RtsThreshold;
+            wrq->u.data.length = sizeof(RtsThresh);
+            Status = copy_to_user(wrq->u.data.pointer, &RtsThresh, wrq->u.data.length);
+            DBGPRINT(RT_DEBUG_TRACE, ("Query::OID_802_11_RTS_THRESHOLD(=%ld)\n", RtsThresh));
+            break;
+        case OID_802_11_FRAGMENTATION_THRESHOLD:
+            FragThresh = pAd->CommonCfg.FragmentThreshold;
+            if (pAd->CommonCfg.bUseZeroToDisableFragment == TRUE)
+                FragThresh = 0;
+            wrq->u.data.length = sizeof(FragThresh);
+            Status = copy_to_user(wrq->u.data.pointer, &FragThresh, wrq->u.data.length);
+            DBGPRINT(RT_DEBUG_TRACE, ("Query::OID_802_11_FRAGMENTATION_THRESHOLD(=%ld)\n", FragThresh));
+            break;
+        case OID_802_11_POWER_MODE:
+            PowerMode = pAd->StaCfg.WindowsPowerMode;
+            wrq->u.data.length = sizeof(PowerMode);
+            Status = copy_to_user(wrq->u.data.pointer, &PowerMode, wrq->u.data.length);
+            DBGPRINT(RT_DEBUG_TRACE, ("Query::OID_802_11_POWER_MODE(=%d)\n", PowerMode));
+            break;
+        case RT_OID_802_11_RADIO:
+            RadioState = (BOOLEAN) pAd->StaCfg.bSwRadio;
+            wrq->u.data.length = sizeof(RadioState);
+            Status = copy_to_user(wrq->u.data.pointer, &RadioState, wrq->u.data.length);
+            DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_802_11_QUERY_RADIO (=%d)\n", RadioState));
+            break;
+        case OID_802_11_INFRASTRUCTURE_MODE:
+            if (pAd->StaCfg.BssType == BSS_ADHOC)
+                BssType = Ndis802_11IBSS;
+            else if (pAd->StaCfg.BssType == BSS_INFRA)
+                BssType = Ndis802_11Infrastructure;
+            else if (pAd->StaCfg.BssType == BSS_MONITOR)
+                BssType = Ndis802_11Monitor;
+            else
+                BssType = Ndis802_11AutoUnknown;
+
+            wrq->u.data.length = sizeof(BssType);
+            Status = copy_to_user(wrq->u.data.pointer, &BssType, wrq->u.data.length);
+            DBGPRINT(RT_DEBUG_TRACE, ("Query::OID_802_11_INFRASTRUCTURE_MODE(=%d)\n", BssType));
+            break;
+        case RT_OID_802_11_PREAMBLE:
+            PreamType = pAd->CommonCfg.TxPreamble;
+            wrq->u.data.length = sizeof(PreamType);
+            Status = copy_to_user(wrq->u.data.pointer, &PreamType, wrq->u.data.length);
+            DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_802_11_PREAMBLE(=%d)\n", PreamType));
+            break;
+        case OID_802_11_AUTHENTICATION_MODE:
+            AuthMode = pAd->StaCfg.AuthMode;
+            wrq->u.data.length = sizeof(AuthMode);
+            Status = copy_to_user(wrq->u.data.pointer, &AuthMode, wrq->u.data.length);
+            DBGPRINT(RT_DEBUG_TRACE, ("Query::OID_802_11_AUTHENTICATION_MODE(=%d)\n", AuthMode));
+            break;
+        case OID_802_11_WEP_STATUS:
+            WepStatus = pAd->StaCfg.WepStatus;
+            wrq->u.data.length = sizeof(WepStatus);
+            Status = copy_to_user(wrq->u.data.pointer, &WepStatus, wrq->u.data.length);
+            DBGPRINT(RT_DEBUG_TRACE, ("Query::OID_802_11_WEP_STATUS(=%d)\n", WepStatus));
+            break;
+        case OID_802_11_TX_POWER_LEVEL:
+			wrq->u.data.length = sizeof(ULONG);
+			Status = copy_to_user(wrq->u.data.pointer, &pAd->CommonCfg.TxPower, wrq->u.data.length);
+			DBGPRINT(RT_DEBUG_TRACE, ("Query::OID_802_11_TX_POWER_LEVEL %x\n",pAd->CommonCfg.TxPower));
+			break;
+        case RT_OID_802_11_TX_POWER_LEVEL_1:
+            wrq->u.data.length = sizeof(ULONG);
+            Status = copy_to_user(wrq->u.data.pointer, &pAd->CommonCfg.TxPowerPercentage, wrq->u.data.length);
+			DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_802_11_TX_POWER_LEVEL_1 (=%ld)\n", pAd->CommonCfg.TxPowerPercentage));
+			break;
+        case OID_802_11_NETWORK_TYPES_SUPPORTED:
+			if ((pAd->RfIcType	== RFIC_2850) || (pAd->RfIcType ==	RFIC_2750) || (pAd->RfIcType == RFIC_3052))		
+			{
+				NetworkTypeList[0] = 3;                 // NumberOfItems = 3
+				NetworkTypeList[1] = Ndis802_11DS;      // NetworkType[1] = 11b
+				NetworkTypeList[2] = Ndis802_11OFDM24;  // NetworkType[2] = 11g
+				NetworkTypeList[3] = Ndis802_11OFDM5;   // NetworkType[3] = 11a
+                wrq->u.data.length = 16;
+				Status = copy_to_user(wrq->u.data.pointer, &NetworkTypeList[0], wrq->u.data.length);
+			}
+			else
+			{
+				NetworkTypeList[0] = 2;                 // NumberOfItems = 2
+				NetworkTypeList[1] = Ndis802_11DS;      // NetworkType[1] = 11b
+				NetworkTypeList[2] = Ndis802_11OFDM24;  // NetworkType[2] = 11g
+			    wrq->u.data.length = 12;
+				Status = copy_to_user(wrq->u.data.pointer, &NetworkTypeList[0], wrq->u.data.length);
+			}
+			DBGPRINT(RT_DEBUG_TRACE, ("Query::OID_802_11_NETWORK_TYPES_SUPPORTED\n"));
+				break;
+	    case OID_802_11_NETWORK_TYPE_IN_USE:
+            wrq->u.data.length = sizeof(ULONG);
+			if (pAd->CommonCfg.PhyMode == PHY_11A)
+				ulInfo = Ndis802_11OFDM5;
+			else if ((pAd->CommonCfg.PhyMode == PHY_11BG_MIXED) || (pAd->CommonCfg.PhyMode == PHY_11G))
+				ulInfo = Ndis802_11OFDM24;
+			else
+				ulInfo = Ndis802_11DS;
+            Status = copy_to_user(wrq->u.data.pointer, &ulInfo, wrq->u.data.length);
+			break;
+        	case RT_OID_802_11_QUERY_LAST_RX_RATE:
+            		ulInfo = (ULONG)pAd->LastRxRate;
+            		wrq->u.data.length = sizeof(ulInfo);
+			Status = copy_to_user(wrq->u.data.pointer, &ulInfo, wrq->u.data.length);
+			DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_802_11_QUERY_LAST_RX_RATE (=%ld)\n", ulInfo));
+			break;
+		case RT_OID_802_11_QUERY_LAST_TX_RATE:
+			ulInfo = (ULONG)pAd->LastTxRate;
+			wrq->u.data.length = sizeof(ulInfo);
+			Status = copy_to_user(wrq->u.data.pointer, &ulInfo, wrq->u.data.length);
+			DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_802_11_QUERY_LAST_TX_RATE (=%lx)\n", ulInfo));
+			break;
+        	case RT_OID_802_11_QUERY_MAP_REAL_RX_RATE:
+			RateValue=0;
+			HTPhyMode.word = (USHORT)pAd->LastRxRate;
+			getRate(HTPhyMode, &RateValue);
+			wrq->u.data.length = sizeof(RateValue);
+			Status = copy_to_user(wrq->u.data.pointer, &RateValue, wrq->u.data.length);
+			DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_802_11_QUERY_LAST_RX_RATE (=%ld)\n", RateValue));
+			break;
+		case RT_OID_802_11_QUERY_MAP_REAL_TX_RATE:
+			RateValue=0;
+			HTPhyMode.word = (USHORT)pAd->LastTxRate;
+			getRate(HTPhyMode, &RateValue);
+			wrq->u.data.length = sizeof(RateValue);
+			Status = copy_to_user(wrq->u.data.pointer, &RateValue, wrq->u.data.length);
+			DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_802_11_QUERY_LAST_TX_RATE (=%ld)\n", RateValue));
+			break;
+		case RT_OID_802_11_QUERY_TX_PHYMODE:
+			ulInfo = (ULONG)pAd->MacTab.Content[BSSID_WCID].HTPhyMode.word;
+			wrq->u.data.length = sizeof(ulInfo);
+			Status = copy_to_user(wrq->u.data.pointer, &ulInfo,	wrq->u.data.length);
+			DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_802_11_QUERY_TX_PHYMODE (=%lx)\n", ulInfo));
+			break;
+        case RT_OID_802_11_QUERY_EEPROM_VERSION:
+            wrq->u.data.length = sizeof(ULONG);
+            Status = copy_to_user(wrq->u.data.pointer, &pAd->EepromVersion, wrq->u.data.length);
+            break;
+        case RT_OID_802_11_QUERY_FIRMWARE_VERSION:
+            wrq->u.data.length = sizeof(ULONG);
+            Status = copy_to_user(wrq->u.data.pointer, &pAd->FirmwareVersion, wrq->u.data.length);
+			break;
+	    case RT_OID_802_11_QUERY_NOISE_LEVEL:
+			wrq->u.data.length = sizeof(UCHAR);
+			Status = copy_to_user(wrq->u.data.pointer, &pAd->BbpWriteLatch[17], wrq->u.data.length);
+			DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_802_11_QUERY_NOISE_LEVEL (=%d)\n", pAd->BbpWriteLatch[17]));
+			break;
+	    case RT_OID_802_11_EXTRA_INFO:
+			wrq->u.data.length = sizeof(ULONG);
+			Status = copy_to_user(wrq->u.data.pointer, &pAd->ExtraInfo, wrq->u.data.length);
+	        DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_802_11_EXTRA_INFO (=%ld)\n", pAd->ExtraInfo));
+	        break;
+	    case RT_OID_WE_VERSION_COMPILED:
+	        wrq->u.data.length = sizeof(UINT);
+	        we_version_compiled = WIRELESS_EXT;
+	        Status = copy_to_user(wrq->u.data.pointer, &we_version_compiled, wrq->u.data.length);
+	        break;
+		case RT_OID_802_11_QUERY_APSD_SETTING:
+			apsd = (pAd->CommonCfg.bAPSDCapable | (pAd->CommonCfg.bAPSDAC_BE << 1) | (pAd->CommonCfg.bAPSDAC_BK << 2)
+				| (pAd->CommonCfg.bAPSDAC_VI << 3)	| (pAd->CommonCfg.bAPSDAC_VO << 4)	| (pAd->CommonCfg.MaxSPLength << 5));
+
+			wrq->u.data.length = sizeof(ULONG);
+			Status = copy_to_user(wrq->u.data.pointer, &apsd, wrq->u.data.length);
+			DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_802_11_QUERY_APSD_SETTING (=0x%lx,APSDCap=%d,AC_BE=%d,AC_BK=%d,AC_VI=%d,AC_VO=%d,MAXSPLen=%d)\n", 
+				apsd,pAd->CommonCfg.bAPSDCapable,pAd->CommonCfg.bAPSDAC_BE,pAd->CommonCfg.bAPSDAC_BK,pAd->CommonCfg.bAPSDAC_VI,pAd->CommonCfg.bAPSDAC_VO,pAd->CommonCfg.MaxSPLength));
+			break;
+		case RT_OID_802_11_QUERY_APSD_PSM:
+			wrq->u.data.length = sizeof(ULONG);
+			Status = copy_to_user(wrq->u.data.pointer, &pAd->CommonCfg.bAPSDForcePowerSave, wrq->u.data.length);
+			DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_802_11_QUERY_APSD_PSM (=%d)\n", pAd->CommonCfg.bAPSDForcePowerSave));			
+			break;
+		case RT_OID_802_11_QUERY_WMM:
+			wrq->u.data.length = sizeof(BOOLEAN);
+			Status = copy_to_user(wrq->u.data.pointer, &pAd->CommonCfg.bWmmCapable, wrq->u.data.length);
+			DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_802_11_QUERY_WMM (=%d)\n",	pAd->CommonCfg.bWmmCapable));
+			break;
+
+
+#ifdef WPA_SUPPLICANT_SUPPORT
+        case RT_OID_NEW_DRIVER:
+            {
+                UCHAR enabled = 1;
+    	        wrq->u.data.length = sizeof(UCHAR);
+    	        Status = copy_to_user(wrq->u.data.pointer, &enabled, wrq->u.data.length);
+                DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_NEW_DRIVER (=%d)\n", enabled));
+            }
+	        break;
+        case RT_OID_WPA_SUPPLICANT_SUPPORT:
+	        wrq->u.data.length = sizeof(UCHAR);
+	        Status = copy_to_user(wrq->u.data.pointer, &pAd->StaCfg.WpaSupplicantUP, wrq->u.data.length);
+            DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_WPA_SUPPLICANT_SUPPORT (=%d)\n", pAd->StaCfg.WpaSupplicantUP));
+	        break;
+#endif // WPA_SUPPLICANT_SUPPORT //
+
+        case RT_OID_DRIVER_DEVICE_NAME:
+            DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_DRIVER_DEVICE_NAME \n"));
+			wrq->u.data.length = 16;
+			if (copy_to_user(wrq->u.data.pointer, pAd->StaCfg.dev_name, wrq->u.data.length))
+			{
+				Status = -EFAULT;
+			}
+            break;
+        case RT_OID_802_11_QUERY_HT_PHYMODE:
+            pHTPhyMode = (OID_SET_HT_PHYMODE *) kmalloc(sizeof(OID_SET_HT_PHYMODE), MEM_ALLOC_FLAG);
+            if (pHTPhyMode)
+            {           
+                pHTPhyMode->PhyMode = pAd->CommonCfg.PhyMode;
+    			pHTPhyMode->HtMode = (UCHAR)pAd->MacTab.Content[BSSID_WCID].HTPhyMode.field.MODE;
+    			pHTPhyMode->BW = (UCHAR)pAd->MacTab.Content[BSSID_WCID].HTPhyMode.field.BW;
+    			pHTPhyMode->MCS= (UCHAR)pAd->MacTab.Content[BSSID_WCID].HTPhyMode.field.MCS;
+    			pHTPhyMode->SHORTGI= (UCHAR)pAd->MacTab.Content[BSSID_WCID].HTPhyMode.field.ShortGI;
+    			pHTPhyMode->STBC= (UCHAR)pAd->MacTab.Content[BSSID_WCID].HTPhyMode.field.STBC;
+    	
+    			pHTPhyMode->ExtOffset = ((pAd->CommonCfg.CentralChannel < pAd->CommonCfg.Channel) ? (EXTCHA_BELOW) : (EXTCHA_ABOVE));
+                wrq->u.data.length = sizeof(OID_SET_HT_PHYMODE);
+                if (copy_to_user(wrq->u.data.pointer, pHTPhyMode, wrq->u.data.length))
+    			{
+    				Status = -EFAULT;
+    			}
+    			DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_802_11_QUERY_HT_PHYMODE (PhyMode = %d, MCS =%d, BW = %d, STBC = %d, ExtOffset=%d)\n",
+    				pHTPhyMode->HtMode, pHTPhyMode->MCS, pHTPhyMode->BW, pHTPhyMode->STBC, pHTPhyMode->ExtOffset));
+    			DBGPRINT(RT_DEBUG_TRACE, (" MlmeUpdateTxRates (.word = %x )\n", pAd->MacTab.Content[BSSID_WCID].HTPhyMode.word));
+            }
+            else
+            {
+                DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_802_11_STA_CONFIG(kmalloc failed)\n"));
+                Status = -EFAULT;
+            }
+            break;
+        case RT_OID_802_11_COUNTRY_REGION:
+            DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_802_11_COUNTRY_REGION \n"));
+			wrq->u.data.length = sizeof(ulInfo);
+            ulInfo = pAd->CommonCfg.CountryRegionForABand;
+            ulInfo = (ulInfo << 8)|(pAd->CommonCfg.CountryRegion);
+			if (copy_to_user(wrq->u.data.pointer, &ulInfo, wrq->u.data.length))
+            {
+				Status = -EFAULT;
+            }
+            break;
+        case RT_OID_802_11_QUERY_DAT_HT_PHYMODE:
+            pHTPhyMode = (OID_SET_HT_PHYMODE *) kmalloc(sizeof(OID_SET_HT_PHYMODE), MEM_ALLOC_FLAG);
+            if (pHTPhyMode)
+            {           
+                pHTPhyMode->PhyMode = pAd->CommonCfg.PhyMode;
+    			pHTPhyMode->HtMode = (UCHAR)pAd->CommonCfg.RegTransmitSetting.field.HTMODE;
+    			pHTPhyMode->BW = (UCHAR)pAd->CommonCfg.RegTransmitSetting.field.BW;
+    			pHTPhyMode->MCS= (UCHAR)pAd->StaCfg.DesiredTransmitSetting.field.MCS;
+    			pHTPhyMode->SHORTGI= (UCHAR)pAd->CommonCfg.RegTransmitSetting.field.ShortGI;
+    			pHTPhyMode->STBC= (UCHAR)pAd->CommonCfg.RegTransmitSetting.field.STBC;
+    	
+                wrq->u.data.length = sizeof(OID_SET_HT_PHYMODE);
+                if (copy_to_user(wrq->u.data.pointer, pHTPhyMode, wrq->u.data.length))
+    			{
+    				Status = -EFAULT;
+    			}
+    			DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_802_11_QUERY_HT_PHYMODE (PhyMode = %d, MCS =%d, BW = %d, STBC = %d, ExtOffset=%d)\n",
+    				pHTPhyMode->HtMode, pHTPhyMode->MCS, pHTPhyMode->BW, pHTPhyMode->STBC, pHTPhyMode->ExtOffset));
+    			DBGPRINT(RT_DEBUG_TRACE, (" MlmeUpdateTxRates (.word = %x )\n", pAd->MacTab.Content[BSSID_WCID].HTPhyMode.word));
+            }
+            else
+            {
+                DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_802_11_STA_CONFIG(kmalloc failed)\n"));
+                Status = -EFAULT;
+            }
+            break;
+        case RT_OID_QUERY_MULTIPLE_CARD_SUPPORT:            
+			wrq->u.data.length = sizeof(UCHAR);
+            i = 0;
+#ifdef MULTIPLE_CARD_SUPPORT
+            i = 1;
+#endif // MULTIPLE_CARD_SUPPORT //
+			if (copy_to_user(wrq->u.data.pointer, &i, wrq->u.data.length))
+            {
+				Status = -EFAULT;
+            }
+            DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_QUERY_MULTIPLE_CARD_SUPPORT(=%d) \n", i));
+            break;
+#ifdef SNMP_SUPPORT
+		case RT_OID_802_11_MAC_ADDRESS:
+            wrq->u.data.length = MAC_ADDR_LEN;
+            Status = copy_to_user(wrq->u.data.pointer, &pAd->CurrentAddress, wrq->u.data.length);
+			break;
+
+		case RT_OID_802_11_MANUFACTUREROUI:
+			DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_802_11_MANUFACTUREROUI \n"));
+			wrq->u.data.length = ManufacturerOUI_LEN;
+			Status = copy_to_user(wrq->u.data.pointer, &pAd->CurrentAddress, wrq->u.data.length);
+			break;
+
+		case RT_OID_802_11_MANUFACTURERNAME:
+			DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_802_11_MANUFACTURERNAME \n"));
+			wrq->u.data.length = strlen(ManufacturerNAME);
+			Status = copy_to_user(wrq->u.data.pointer, ManufacturerNAME, wrq->u.data.length);
+			break;
+
+		case RT_OID_802_11_RESOURCETYPEIDNAME:
+			DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_802_11_RESOURCETYPEIDNAME \n"));
+			wrq->u.data.length = strlen(ResourceTypeIdName);
+			Status = copy_to_user(wrq->u.data.pointer, ResourceTypeIdName, wrq->u.data.length);
+			break;
+
+		case RT_OID_802_11_PRIVACYOPTIONIMPLEMENTED:
+			DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_802_11_PRIVACYOPTIONIMPLEMENTED \n"));
+			ulInfo = 1; // 1 is support wep else 2 is not support.
+			wrq->u.data.length = sizeof(ulInfo);
+			Status = copy_to_user(wrq->u.data.pointer, &ulInfo, wrq->u.data.length);
+			break;
+
+		case RT_OID_802_11_POWERMANAGEMENTMODE:
+			DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_802_11_POWERMANAGEMENTMODE \n"));
+			if (pAd->StaCfg.Psm == PSMP_ACTION)
+				ulInfo = 1; // 1 is power active else 2 is power save.
+			else
+				ulInfo = 2;
+			
+			wrq->u.data.length = sizeof(ulInfo);
+			Status = copy_to_user(wrq->u.data.pointer, &ulInfo, wrq->u.data.length);
+			break;
+
+		case OID_802_11_WEPDEFAULTKEYVALUE:
+			DBGPRINT(RT_DEBUG_TRACE, ("Query::OID_802_11_WEPDEFAULTKEYVALUE \n"));
+			//KeyIdxValue.KeyIdx = pAd->PortCfg.MBSSID[pAd->IoctlIF].DefaultKeyId;
+			pKeyIdxValue = wrq->u.data.pointer;
+			DBGPRINT(RT_DEBUG_TRACE,("KeyIdxValue.KeyIdx = %d, \n",pKeyIdxValue->KeyIdx));
+			valueLen = pAd->SharedKey[BSS0][pAd->StaCfg.DefaultKeyId].KeyLen;
+			NdisMoveMemory(pKeyIdxValue->Value,
+						   &pAd->SharedKey[BSS0][pAd->StaCfg.DefaultKeyId].Key,
+						   valueLen);
+			pKeyIdxValue->Value[valueLen]='\0';
+
+			wrq->u.data.length = sizeof(DefaultKeyIdxValue);
+
+			Status = copy_to_user(wrq->u.data.pointer, pKeyIdxValue, wrq->u.data.length);
+			DBGPRINT(RT_DEBUG_TRACE,("DefaultKeyId = %d, total len = %d, str len=%d, KeyValue= %02x %02x %02x %02x \n", 
+										pAd->StaCfg.DefaultKeyId, 
+										wrq->u.data.length, 
+										pAd->SharedKey[BSS0][pAd->StaCfg.DefaultKeyId].KeyLen,
+										pAd->SharedKey[BSS0][0].Key[0],
+										pAd->SharedKey[BSS0][1].Key[0],
+										pAd->SharedKey[BSS0][2].Key[0],
+										pAd->SharedKey[BSS0][3].Key[0]));
+			break;
+
+		case OID_802_11_WEPDEFAULTKEYID:
+			DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_802_11_WEPDEFAULTKEYID \n"));
+			wrq->u.data.length = sizeof(UCHAR);
+			Status = copy_to_user(wrq->u.data.pointer, &pAd->StaCfg.DefaultKeyId, wrq->u.data.length);
+			DBGPRINT(RT_DEBUG_TRACE, ("DefaultKeyId =%d \n", pAd->StaCfg.DefaultKeyId));
+			break;
+
+		case RT_OID_802_11_WEPKEYMAPPINGLENGTH:
+			DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_802_11_WEPKEYMAPPINGLENGTH \n"));
+			wrq->u.data.length = sizeof(UCHAR);
+			Status = copy_to_user(wrq->u.data.pointer,
+									&pAd->SharedKey[BSS0][pAd->StaCfg.DefaultKeyId].KeyLen,
+									wrq->u.data.length);
+			break;
+
+		case OID_802_11_SHORTRETRYLIMIT:
+			DBGPRINT(RT_DEBUG_TRACE, ("Query::OID_802_11_SHORTRETRYLIMIT \n"));
+			wrq->u.data.length = sizeof(ULONG);
+			RTMP_IO_READ32(pAd, TX_RTY_CFG, &tx_rty_cfg.word);
+			ShortRetryLimit = tx_rty_cfg.field.ShortRtyLimit;
+			DBGPRINT(RT_DEBUG_TRACE, ("ShortRetryLimit =%ld,  tx_rty_cfg.field.ShortRetryLimit=%d\n", ShortRetryLimit, tx_rty_cfg.field.ShortRtyLimit));
+			Status = copy_to_user(wrq->u.data.pointer, &ShortRetryLimit, wrq->u.data.length);
+			break;
+
+		case OID_802_11_LONGRETRYLIMIT:
+			DBGPRINT(RT_DEBUG_TRACE, ("Query::OID_802_11_LONGRETRYLIMIT \n"));
+			wrq->u.data.length = sizeof(ULONG);
+			RTMP_IO_READ32(pAd, TX_RTY_CFG, &tx_rty_cfg.word);
+			LongRetryLimit = tx_rty_cfg.field.LongRtyLimit;
+			DBGPRINT(RT_DEBUG_TRACE, ("LongRetryLimit =%ld,  tx_rty_cfg.field.LongRtyLimit=%d\n", LongRetryLimit, tx_rty_cfg.field.LongRtyLimit));
+			Status = copy_to_user(wrq->u.data.pointer, &LongRetryLimit, wrq->u.data.length);
+			break;
+			
+		case RT_OID_802_11_PRODUCTID:
+			DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_802_11_PRODUCTID \n"));
+		
+#ifdef RTMP_MAC_PCI
+			{
+			
+				USHORT  device_id;
+				if (((POS_COOKIE)pAd->OS_Cookie)->pci_dev != NULL)
+			    	pci_read_config_word(((POS_COOKIE)pAd->OS_Cookie)->pci_dev, PCI_DEVICE_ID, &device_id);
+				else 
+					DBGPRINT(RT_DEBUG_TRACE, (" pci_dev = NULL\n"));
+				sprintf((PSTRING)tmp, "%04x %04x\n", NIC_PCI_VENDOR_ID, device_id);
+			}
+#endif // RTMP_MAC_PCI //
+			wrq->u.data.length = strlen((PSTRING)tmp);
+			Status = copy_to_user(wrq->u.data.pointer, tmp, wrq->u.data.length);
+			break;
+
+		case RT_OID_802_11_MANUFACTUREID:
+			DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_802_11_MANUFACTUREID \n"));
+			wrq->u.data.length = strlen(ManufacturerNAME);
+			Status = copy_to_user(wrq->u.data.pointer, ManufacturerNAME, wrq->u.data.length);
+			break;
+
+		case OID_802_11_CURRENTCHANNEL:
+			DBGPRINT(RT_DEBUG_TRACE, ("Query::OID_802_11_CURRENTCHANNEL \n"));
+			wrq->u.data.length = sizeof(UCHAR);
+			DBGPRINT(RT_DEBUG_TRACE, ("sizeof UCHAR=%d, channel=%d \n", sizeof(UCHAR), pAd->CommonCfg.Channel));
+			Status = copy_to_user(wrq->u.data.pointer, &pAd->CommonCfg.Channel, wrq->u.data.length);
+			DBGPRINT(RT_DEBUG_TRACE, ("Status=%d\n", Status));
+			break;
+#endif //SNMP_SUPPORT
+		
+		case OID_802_11_BUILD_CHANNEL_EX:
+			{
+				UCHAR value;
+				DBGPRINT(RT_DEBUG_TRACE, ("Query::OID_802_11_BUILD_CHANNEL_EX \n"));
+				wrq->u.data.length = sizeof(UCHAR);
+#ifdef EXT_BUILD_CHANNEL_LIST
+				DBGPRINT(RT_DEBUG_TRACE, ("Support EXT_BUILD_CHANNEL_LIST.\n"));
+				value = 1;
+#else
+				DBGPRINT(RT_DEBUG_TRACE, ("Doesn't support EXT_BUILD_CHANNEL_LIST.\n"));
+				value = 0;
+#endif // EXT_BUILD_CHANNEL_LIST //
+				Status = copy_to_user(wrq->u.data.pointer, &value, 1);
+				DBGPRINT(RT_DEBUG_TRACE, ("Status=%d\n", Status));
+			}
+			break;
+
+		case OID_802_11_GET_CH_LIST:
+			{
+				PRT_CHANNEL_LIST_INFO pChListBuf;
+
+				DBGPRINT(RT_DEBUG_TRACE, ("Query::OID_802_11_GET_CH_LIST \n"));
+				if (pAd->ChannelListNum == 0)
+				{
+					wrq->u.data.length = 0;
+					break;
+				}
+
+				pChListBuf = (RT_CHANNEL_LIST_INFO *) kmalloc(sizeof(RT_CHANNEL_LIST_INFO), MEM_ALLOC_FLAG);
+				if (pChListBuf == NULL)
+				{
+					wrq->u.data.length = 0;
+					break;
+				}
+
+				pChListBuf->ChannelListNum = pAd->ChannelListNum;
+				for (i = 0; i < pChListBuf->ChannelListNum; i++)
+					pChListBuf->ChannelList[i] = pAd->ChannelList[i].Channel;
+
+				wrq->u.data.length = sizeof(RT_CHANNEL_LIST_INFO);
+				Status = copy_to_user(wrq->u.data.pointer, pChListBuf, sizeof(RT_CHANNEL_LIST_INFO));
+				DBGPRINT(RT_DEBUG_TRACE, ("Status=%d\n", Status));
+
+				if (pChListBuf)
+					kfree(pChListBuf);
+			}
+			break;
+
+		case OID_802_11_GET_COUNTRY_CODE:
+			DBGPRINT(RT_DEBUG_TRACE, ("Query::OID_802_11_GET_COUNTRY_CODE \n"));
+			wrq->u.data.length = 2;
+			Status = copy_to_user(wrq->u.data.pointer, &pAd->CommonCfg.CountryCode, 2);
+			DBGPRINT(RT_DEBUG_TRACE, ("Status=%d\n", Status));
+			break;
+
+#ifdef EXT_BUILD_CHANNEL_LIST
+		case OID_802_11_GET_CHANNEL_GEOGRAPHY:
+			DBGPRINT(RT_DEBUG_TRACE, ("Query::OID_802_11_GET_CHANNEL_GEOGRAPHY \n"));
+			wrq->u.data.length = 1;
+			Status = copy_to_user(wrq->u.data.pointer, &pAd->CommonCfg.Geography, 1);
+			DBGPRINT(RT_DEBUG_TRACE, ("Status=%d\n", Status));
+			break;			
+#endif // EXT_BUILD_CHANNEL_LIST //
+
+
+#ifdef QOS_DLS_SUPPORT
+		case RT_OID_802_11_QUERY_DLS:
+			wrq->u.data.length = sizeof(BOOLEAN);
+			Status = copy_to_user(wrq->u.data.pointer, &pAd->CommonCfg.bDLSCapable, wrq->u.data.length);
+			DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_802_11_QUERY_DLS(=%d)\n", pAd->CommonCfg.bDLSCapable));
+			break;
+
+		case RT_OID_802_11_QUERY_DLS_PARAM:
+			{
+				PRT_802_11_DLS_INFO	pDlsInfo = kmalloc(sizeof(RT_802_11_DLS_INFO), GFP_ATOMIC);
+				if (pDlsInfo == NULL)
+					break;
+
+				for (i=0; i<MAX_NUM_OF_DLS_ENTRY; i++)
+				{
+					RTMPMoveMemory(&pDlsInfo->Entry[i], &pAd->StaCfg.DLSEntry[i], sizeof(RT_802_11_DLS_UI));
+				}
+
+				pDlsInfo->num = MAX_NUM_OF_DLS_ENTRY;
+				wrq->u.data.length = sizeof(RT_802_11_DLS_INFO);
+				Status = copy_to_user(wrq->u.data.pointer, pDlsInfo, wrq->u.data.length);
+				DBGPRINT(RT_DEBUG_TRACE, ("Query::RT_OID_802_11_QUERY_DLS_PARAM\n"));
+
+				if (pDlsInfo)
+					kfree(pDlsInfo);
+			}
+			break;
+#endif // QOS_DLS_SUPPORT //
+
+#ifdef XLINK_SUPPORT
+		case OID_802_11_SET_PSPXLINK_MODE:
+			wrq->u.data.length = sizeof(BOOLEAN);
+            Status = copy_to_user(wrq->u.data.pointer, &pAd->StaCfg.PSPXlink, wrq->u.data.length);
+			DBGPRINT(RT_DEBUG_TRACE, ("Query::OID_802_11_SET_PSPXLINK_MODE(=%d)\n", pAd->StaCfg.PSPXlink));
+			break;
+#endif // XLINK_SUPPORT //
+
+    default:
+            DBGPRINT(RT_DEBUG_TRACE, ("Query::unknown IOCTL's subcmd = 0x%08x\n", cmd));
+            Status = -EOPNOTSUPP;
+            break;
+    }
+    return Status;
+}
+
+INT rt28xx_sta_ioctl(
+	IN	struct net_device	*net_dev, 
+	IN	OUT	struct ifreq	*rq, 
+	IN	INT					cmd)
+{
+	POS_COOKIE			pObj;
+	RTMP_ADAPTER        *pAd = NULL;
+	struct iwreq        *wrq = (struct iwreq *) rq;
+	BOOLEAN				StateMachineTouched = FALSE;
+	INT					Status = NDIS_STATUS_SUCCESS;
+	USHORT				subcmd;
+
+	GET_PAD_FROM_NET_DEV(pAd, net_dev);
+
+	if (pAd == NULL)
+	{
+		/* if 1st open fail, pAd will be free;
+		   So the net_dev->priv will be NULL in 2rd open */
+		return -ENETDOWN;
+	}
+	pObj = (POS_COOKIE) pAd->OS_Cookie;
+	
+    //check if the interface is down
+    if(!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_IN_USE))
+    {
+#ifdef CONFIG_APSTA_MIXED_SUPPORT
+	    if (wrq->u.data.pointer == NULL)
+	    {
+		    return Status;
+	    }
+
+	    if (strstr(wrq->u.data.pointer, "OpMode") == NULL)
+#endif // CONFIG_APSTA_MIXED_SUPPORT //
+		{
+            DBGPRINT(RT_DEBUG_TRACE, ("INFO::Network is down!\n"));
+		    return -ENETDOWN;  
+        }
+    }
+
+	{	// determine this ioctl command is comming from which interface.
+		pObj->ioctl_if_type = INT_MAIN;
+		pObj->ioctl_if = MAIN_MBSSID;
+	}
+
+	switch(cmd)
+	{			
+#ifdef RALINK_ATE
+#ifdef RALINK_28xx_QA
+		case RTPRIV_IOCTL_ATE:
+			{
+				RtmpDoAte(pAd, wrq);
+			}
+			break;
+#endif // RALINK_28xx_QA // 
+#endif // RALINK_ATE //
+        case SIOCGIFHWADDR:
+			DBGPRINT(RT_DEBUG_TRACE, ("IOCTL::SIOCGIFHWADDR\n"));
+			memcpy(wrq->u.name, pAd->CurrentAddress, ETH_ALEN);
+			break;	
+		case SIOCGIWNAME:
+        {
+        	char *name=&wrq->u.name[0];
+        	rt_ioctl_giwname(net_dev, NULL, name, NULL);
+            break;
+		}
+		case SIOCGIWESSID:  //Get ESSID
+        {
+        	struct iw_point *essid=&wrq->u.essid;
+        	rt_ioctl_giwessid(net_dev, NULL, essid, essid->pointer);
+            break;
+		}
+		case SIOCSIWESSID:  //Set ESSID
+        	{
+        	struct iw_point	*essid=&wrq->u.essid;
+        	rt_ioctl_siwessid(net_dev, NULL, essid, essid->pointer);
+            break;  
+		}
+		case SIOCSIWNWID:   // set network id (the cell)
+		case SIOCGIWNWID:   // get network id
+			Status = -EOPNOTSUPP;
+			break;
+		case SIOCSIWFREQ:   //set channel/frequency (Hz)
+        	{
+        	struct iw_freq *freq=&wrq->u.freq;
+        	rt_ioctl_siwfreq(net_dev, NULL, freq, NULL);
+			break;
+		}
+		case SIOCGIWFREQ:   // get channel/frequency (Hz)
+        	{
+        	struct iw_freq *freq=&wrq->u.freq;
+        	rt_ioctl_giwfreq(net_dev, NULL, freq, NULL);
+			break;
+		}
+		case SIOCSIWNICKN: //set node name/nickname
+        	{
+        	//struct iw_point *data=&wrq->u.data;
+        	//rt_ioctl_siwnickn(net_dev, NULL, data, NULL);
+			break;
+			}
+		case SIOCGIWNICKN: //get node name/nickname
+        {
+			struct iw_point	*erq = NULL;
+        	erq = &wrq->u.data;
+            erq->length = strlen((PSTRING) pAd->nickname);
+            Status = copy_to_user(erq->pointer, pAd->nickname, erq->length);
+			break;
+		}
+		case SIOCGIWRATE:   //get default bit rate (bps)
+		    rt_ioctl_giwrate(net_dev, NULL, &wrq->u, NULL);
+            break;
+	    case SIOCSIWRATE:  //set default bit rate (bps)
+	        rt_ioctl_siwrate(net_dev, NULL, &wrq->u, NULL);
+            break;
+        case SIOCGIWRTS:  // get RTS/CTS threshold (bytes)
+        	{
+        	struct iw_param *rts=&wrq->u.rts;
+        	rt_ioctl_giwrts(net_dev, NULL, rts, NULL);
+            break;
+		}
+        case SIOCSIWRTS:  //set RTS/CTS threshold (bytes)
+        	{
+        	struct iw_param *rts=&wrq->u.rts;
+        	rt_ioctl_siwrts(net_dev, NULL, rts, NULL);
+            break;
+		}
+        case SIOCGIWFRAG:  //get fragmentation thr (bytes)
+        	{
+        	struct iw_param *frag=&wrq->u.frag;
+        	rt_ioctl_giwfrag(net_dev, NULL, frag, NULL);
+            break;
+		}
+        case SIOCSIWFRAG:  //set fragmentation thr (bytes)
+        	{
+        	struct iw_param *frag=&wrq->u.frag;
+        	rt_ioctl_siwfrag(net_dev, NULL, frag, NULL);
+            break;
+		}
+        case SIOCGIWENCODE:  //get encoding token & mode
+        	{
+        	struct iw_point *erq=&wrq->u.encoding;
+        	if(erq)
+        		rt_ioctl_giwencode(net_dev, NULL, erq, erq->pointer);
+            break;
+		}
+        case SIOCSIWENCODE:  //set encoding token & mode
+        	{
+        	struct iw_point *erq=&wrq->u.encoding;
+        	if(erq)
+        		rt_ioctl_siwencode(net_dev, NULL, erq, erq->pointer);
+            break;
+		}
+		case SIOCGIWAP:     //get access point MAC addresses
+        	{
+        	struct sockaddr *ap_addr=&wrq->u.ap_addr;
+        	rt_ioctl_giwap(net_dev, NULL, ap_addr, ap_addr->sa_data);
+			break;
+		}
+	    case SIOCSIWAP:  //set access point MAC addresses
+        	{
+        	struct sockaddr *ap_addr=&wrq->u.ap_addr;
+        	rt_ioctl_siwap(net_dev, NULL, ap_addr, ap_addr->sa_data);
+            break;
+		}
+		case SIOCGIWMODE:   //get operation mode
+        	{
+        	__u32 *mode=&wrq->u.mode;
+        	rt_ioctl_giwmode(net_dev, NULL, mode, NULL);
+            break;
+		}
+		case SIOCSIWMODE:   //set operation mode
+        	{
+        	__u32 *mode=&wrq->u.mode;
+        	rt_ioctl_siwmode(net_dev, NULL, mode, NULL);
+            break;
+		}
+		case SIOCGIWSENS:   //get sensitivity (dBm)
+		case SIOCSIWSENS:	//set sensitivity (dBm)
+		case SIOCGIWPOWER:  //get Power Management settings
+		case SIOCSIWPOWER:  //set Power Management settings
+		case SIOCGIWTXPOW:  //get transmit power (dBm)
+		case SIOCSIWTXPOW:  //set transmit power (dBm)
+		case SIOCGIWRANGE:	//Get range of parameters
+		case SIOCGIWRETRY:	//get retry limits and lifetime
+		case SIOCSIWRETRY:	//set retry limits and lifetime
+			Status = -EOPNOTSUPP;
+			break;			
+		case RT_PRIV_IOCTL:
+        case RT_PRIV_IOCTL_EXT:
+			subcmd = wrq->u.data.flags;
+			if( subcmd & OID_GET_SET_TOGGLE)
+				Status = RTMPSetInformation(pAd, rq, subcmd);
+			else
+				Status = RTMPQueryInformation(pAd, rq, subcmd);
+			break;		
+		case SIOCGIWPRIV:
+			if (wrq->u.data.pointer) 
+			{
+				if ( access_ok(VERIFY_WRITE, wrq->u.data.pointer, sizeof(privtab)) != TRUE)
+					break;
+				if ((sizeof(privtab) / sizeof(privtab[0])) <= wrq->u.data.length)
+				{
+					wrq->u.data.length = sizeof(privtab) / sizeof(privtab[0]);
+					if (copy_to_user(wrq->u.data.pointer, privtab, sizeof(privtab)))
+						Status = -EFAULT;
+				}
+				else
+					Status = -E2BIG;
+			}
+			break;
+		case RTPRIV_IOCTL_SET:
+			if(access_ok(VERIFY_READ, wrq->u.data.pointer, wrq->u.data.length) != TRUE)   
+					break;
+			rt_ioctl_setparam(net_dev, NULL, NULL, wrq->u.data.pointer);
+			break;
+		case RTPRIV_IOCTL_GSITESURVEY:
+			RTMPIoctlGetSiteSurvey(pAd, wrq);
+		    break;			
+#ifdef DBG
+		case RTPRIV_IOCTL_MAC:
+			RTMPIoctlMAC(pAd, wrq);
+			break;
+		case RTPRIV_IOCTL_E2P:
+			RTMPIoctlE2PROM(pAd, wrq);
+			break;
+#ifdef RTMP_RF_RW_SUPPORT
+		case RTPRIV_IOCTL_RF:
+			RTMPIoctlRF(pAd, wrq);
+			break;
+#endif // RTMP_RF_RW_SUPPORT //
+#endif // DBG //
+
+        case SIOCETHTOOL:
+                break;
+		default:
+			DBGPRINT(RT_DEBUG_ERROR, ("IOCTL::unknown IOCTL's cmd = 0x%08x\n", cmd));
+			Status = -EOPNOTSUPP;
+			break;
+	}
+
+    if(StateMachineTouched) // Upper layer sent a MLME-related operations
+    	RTMP_MLME_HANDLER(pAd);
+
+	return Status;
+}
+
+#ifdef DBG
+/* 
+    ==========================================================================
+    Description:
+        Read / Write MAC
+    Arguments:
+        pAdapter                    Pointer to our adapter
+        wrq                         Pointer to the ioctl argument
+
+    Return Value:
+        None
+
+    Note:
+        Usage: 
+               1.) iwpriv ra0 mac 0        ==> read MAC where Addr=0x0
+               2.) iwpriv ra0 mac 0=12     ==> write MAC where Addr=0x0, value=12
+    ==========================================================================
+*/
+VOID RTMPIoctlMAC(
+	IN	PRTMP_ADAPTER	pAdapter, 
+	IN	struct iwreq	*wrq)
+{
+	PSTRING				this_char;
+	PSTRING				value;
+	INT					j = 0, k = 0;
+	STRING				msg[1024];
+	STRING				arg[255];
+	ULONG				macAddr = 0;
+	UCHAR				temp[16];
+	STRING				temp2[16];
+	UINT32				macValue = 0;
+	INT					Status;
+	BOOLEAN				bIsPrintAllMAC = FALSE;
+
+
+	memset(msg, 0x00, 1024);
+	if (wrq->u.data.length > 1) //No parameters.
+	{   
+	    Status = copy_from_user(arg, wrq->u.data.pointer, (wrq->u.data.length > 255) ? 255 : wrq->u.data.length);
+		sprintf(msg, "\n");
+		
+		//Parsing Read or Write
+	    this_char = arg;
+		if (!*this_char)
+			goto next;
+
+		if ((value = rtstrchr(this_char, '=')) != NULL)
+			*value++ = 0;
+
+		if (!value || !*value)
+		{ //Read
+			// Sanity check
+			if(strlen(this_char) > 4)
+				goto next;
+
+			j = strlen(this_char);
+			while(j-- > 0)
+			{
+				if(this_char[j] > 'f' || this_char[j] < '0')
+					return;
+			}
+
+			// Mac Addr
+			k = j = strlen(this_char);
+			while(j-- > 0)
+			{
+				this_char[4-k+j] = this_char[j];
+			}
+			
+			while(k < 4)
+				this_char[3-k++]='0';
+			this_char[4]='\0';
+
+			if(strlen(this_char) == 4)
+			{
+				AtoH(this_char, temp, 2);
+				macAddr = *temp*256 + temp[1];					
+				if (macAddr < 0xFFFF)
+				{
+					RTMP_IO_READ32(pAdapter, macAddr, &macValue);
+					DBGPRINT(RT_DEBUG_TRACE, ("MacAddr=%lx, MacValue=%x\n", macAddr, macValue));
+					sprintf(msg+strlen(msg), "[0x%08lX]:%08X  ", macAddr , macValue);
+				}
+				else
+				{//Invalid parametes, so default printk all mac
+					bIsPrintAllMAC = TRUE;
+					goto next;
+				}
+			}
+		}
+		else
+		{ //Write
+			memcpy(&temp2, value, strlen(value));
+			temp2[strlen(value)] = '\0';
+
+			// Sanity check
+			if((strlen(this_char) > 4) || strlen(temp2) > 8)
+				goto next;
+
+			j = strlen(this_char);
+			while(j-- > 0)
+			{
+				if(this_char[j] > 'f' || this_char[j] < '0')
+					return;
+			}
+
+			j = strlen(temp2);
+			while(j-- > 0)
+			{
+				if(temp2[j] > 'f' || temp2[j] < '0')
+					return;
+			}
+
+			//MAC Addr
+			k = j = strlen(this_char);
+			while(j-- > 0)
+			{
+				this_char[4-k+j] = this_char[j];
+			}
+
+			while(k < 4)
+				this_char[3-k++]='0';
+			this_char[4]='\0';
+
+			//MAC value
+			k = j = strlen(temp2);
+			while(j-- > 0)
+			{
+				temp2[8-k+j] = temp2[j];
+			}
+			
+			while(k < 8)
+				temp2[7-k++]='0';
+			temp2[8]='\0';
+
+			{
+				AtoH(this_char, temp, 2);
+				macAddr = *temp*256 + temp[1];
+
+				AtoH(temp2, temp, 4);
+				macValue = *temp*256*256*256 + temp[1]*256*256 + temp[2]*256 + temp[3];
+
+				// debug mode
+				if (macAddr == (HW_DEBUG_SETTING_BASE + 4))
+				{
+					// 0x2bf4: byte0 non-zero: enable R17 tuning, 0: disable R17 tuning
+                    if (macValue & 0x000000ff) 
+                    {
+                        pAdapter->BbpTuning.bEnable = TRUE;
+                        DBGPRINT(RT_DEBUG_TRACE,("turn on R17 tuning\n"));
+                    }
+                    else
+                    {
+                        UCHAR R66;
+                        pAdapter->BbpTuning.bEnable = FALSE;
+                        R66 = 0x26 + GET_LNA_GAIN(pAdapter);
+#ifdef RALINK_ATE
+						if (ATE_ON(pAdapter))
+						{
+							ATE_BBP_IO_WRITE8_BY_REG_ID(pAdapter, BBP_R27, 0x0);
+							ATE_BBP_IO_WRITE8_BY_REG_ID(pAdapter, BBP_R66, (0x26 + GET_LNA_GAIN(pAdapter)));
+							ATE_BBP_IO_WRITE8_BY_REG_ID(pAdapter, BBP_R27, 0x20);
+							ATE_BBP_IO_WRITE8_BY_REG_ID(pAdapter, BBP_R66, (0x26 + GET_LNA_GAIN(pAdapter)));
+							ATE_BBP_IO_WRITE8_BY_REG_ID(pAdapter, BBP_R27, 0x40);
+							ATE_BBP_IO_WRITE8_BY_REG_ID(pAdapter, BBP_R66, (0x26 + GET_LNA_GAIN(pAdapter)));
+						}
+						else
+#endif // RALINK_ATE //
+
+#ifdef RT35xx
+						if (IS_RT3572(pAdapter))
+						{
+							RT3572WriteBBPR66(pAdapter, (0x26 + GET_LNA_GAIN(pAdapter)));
+						}
+						else
+#endif // RT35xx //
+							RTMP_BBP_IO_WRITE8_BY_REG_ID(pAdapter, BBP_R66, (0x26 + GET_LNA_GAIN(pAdapter)));
+                        DBGPRINT(RT_DEBUG_TRACE,("turn off R17 tuning, restore to 0x%02x\n", R66));
+                    }
+					return;
+				}
+
+				DBGPRINT(RT_DEBUG_TRACE, ("MacAddr=%02lx, MacValue=0x%x\n", macAddr, macValue));
+				
+				RTMP_IO_WRITE32(pAdapter, macAddr, macValue);
+				sprintf(msg+strlen(msg), "[0x%08lX]:%08X  ", macAddr, macValue);
+			}
+		}
+	}
+	else
+		bIsPrintAllMAC = TRUE;
+next:
+	if (bIsPrintAllMAC)
+	{
+		struct file		*file_w;
+		PSTRING			fileName = "MacDump.txt";
+		mm_segment_t	orig_fs;
+
+		orig_fs = get_fs();
+		set_fs(KERNEL_DS); 
+
+		// open file
+		file_w = filp_open(fileName, O_WRONLY|O_CREAT, 0);
+		if (IS_ERR(file_w)) 
+		{
+			DBGPRINT(RT_DEBUG_TRACE, ("-->2) %s: Error %ld opening %s\n", __FUNCTION__, -PTR_ERR(file_w), fileName));
+		}
+		else 
+		{
+			if (file_w->f_op && file_w->f_op->write) 
+			{
+				file_w->f_pos = 0;
+				macAddr = 0x1000;
+				
+				while (macAddr <= 0x1800)
+				{
+					RTMP_IO_READ32(pAdapter, macAddr, &macValue);
+					sprintf(msg, "%08lx = %08X\n", macAddr, macValue);
+					
+					// write data to file
+					file_w->f_op->write(file_w, msg, strlen(msg), &file_w->f_pos);
+					
+					printk("%s", msg);
+					macAddr += 4;
+				}
+				sprintf(msg, "\nDump all MAC values to %s\n", fileName);
+			}
+			filp_close(file_w, NULL);
+		}
+		set_fs(orig_fs); 
+	}
+	if(strlen(msg) == 1)
+		sprintf(msg+strlen(msg), "===>Error command format!");
+
+	// Copy the information into the user buffer
+	wrq->u.data.length = strlen(msg);
+	Status = copy_to_user(wrq->u.data.pointer, msg, wrq->u.data.length);
+	
+	DBGPRINT(RT_DEBUG_TRACE, ("<==RTMPIoctlMAC\n\n"));
+}
+
+/* 
+    ==========================================================================
+    Description:
+        Read / Write E2PROM
+    Arguments:
+        pAdapter                    Pointer to our adapter
+        wrq                         Pointer to the ioctl argument
+
+    Return Value:
+        None
+
+    Note:
+        Usage: 
+               1.) iwpriv ra0 e2p 0     	==> read E2PROM where Addr=0x0
+               2.) iwpriv ra0 e2p 0=1234    ==> write E2PROM where Addr=0x0, value=1234
+    ==========================================================================
+*/
+VOID RTMPIoctlE2PROM(
+	IN	PRTMP_ADAPTER	pAdapter, 
+	IN	struct iwreq	*wrq)
+{
+	PSTRING				this_char;
+	PSTRING				value;
+	INT					j = 0, k = 0;
+	STRING				msg[1024];
+	STRING				arg[255];
+	USHORT				eepAddr = 0;
+	UCHAR				temp[16];
+	STRING				temp2[16];
+	USHORT				eepValue;
+	int					Status;
+	BOOLEAN				bIsPrintAllE2P = FALSE;
+
+	
+	memset(msg, 0x00, 1024);
+	if (wrq->u.data.length > 1) //No parameters.
+	{   
+	    Status = copy_from_user(arg, wrq->u.data.pointer, (wrq->u.data.length > 255) ? 255 : wrq->u.data.length);
+		sprintf(msg, "\n");
+
+	    //Parsing Read or Write
+		this_char = arg;
+		
+		
+		if (!*this_char)
+			goto next;
+
+		if ((value = rtstrchr(this_char, '=')) != NULL)
+			*value++ = 0;
+
+		if (!value || !*value)
+		{ //Read
+
+			// Sanity check
+			if(strlen(this_char) > 4)
+				goto next;
+
+			j = strlen(this_char);
+			while(j-- > 0)
+			{
+				if(this_char[j] > 'f' || this_char[j] < '0')
+					return;
+			}
+
+			// E2PROM addr
+			k = j = strlen(this_char);
+			while(j-- > 0)
+			{
+				this_char[4-k+j] = this_char[j];
+			}
+			
+			while(k < 4)
+				this_char[3-k++]='0';
+			this_char[4]='\0';
+
+			if(strlen(this_char) == 4)
+			{
+				AtoH(this_char, temp, 2);
+				eepAddr = *temp*256 + temp[1];					
+				if (eepAddr < 0xFFFF)
+				{
+					RT28xx_EEPROM_READ16(pAdapter, eepAddr, eepValue);
+					sprintf(msg+strlen(msg), "[0x%04X]:0x%04X  ", eepAddr , eepValue);
+				}
+				else
+				{//Invalid parametes, so default printk all bbp
+					bIsPrintAllE2P = TRUE;
+					goto next;
+				}
+			}
+		}
+		else
+		{ //Write
+			memcpy(&temp2, value, strlen(value));
+			temp2[strlen(value)] = '\0';
+
+			// Sanity check
+			if((strlen(this_char) > 4) || strlen(temp2) > 8)
+				goto next;
+
+			j = strlen(this_char);
+			while(j-- > 0)
+			{
+				if(this_char[j] > 'f' || this_char[j] < '0')
+					return;
+			}
+			j = strlen(temp2);
+			while(j-- > 0)
+			{
+				if(temp2[j] > 'f' || temp2[j] < '0')
+					return;
+			}
+
+			//MAC Addr
+			k = j = strlen(this_char);
+			while(j-- > 0)
+			{
+				this_char[4-k+j] = this_char[j];
+			}
+
+			while(k < 4)
+				this_char[3-k++]='0';
+			this_char[4]='\0';
+
+			//MAC value
+			k = j = strlen(temp2);
+			while(j-- > 0)
+			{
+				temp2[4-k+j] = temp2[j];
+			}
+			
+			while(k < 4)
+				temp2[3-k++]='0';
+			temp2[4]='\0';
+
+			AtoH(this_char, temp, 2);
+			eepAddr = *temp*256 + temp[1];
+
+			AtoH(temp2, temp, 2);
+			eepValue = *temp*256 + temp[1];
+
+			RT28xx_EEPROM_WRITE16(pAdapter, eepAddr, eepValue);
+			sprintf(msg+strlen(msg), "[0x%02X]:%02X  ", eepAddr, eepValue);
+		}
+	}
+	else
+		bIsPrintAllE2P = TRUE;
+next:
+	if (bIsPrintAllE2P)
+	{
+		struct file		*file_w;
+		PSTRING			fileName = "EEPROMDump.txt";
+		mm_segment_t	orig_fs;
+
+		orig_fs = get_fs();
+		set_fs(KERNEL_DS); 
+
+		// open file
+		file_w = filp_open(fileName, O_WRONLY|O_CREAT, 0);
+		if (IS_ERR(file_w)) 
+		{
+			DBGPRINT(RT_DEBUG_TRACE, ("-->2) %s: Error %ld opening %s\n", __FUNCTION__, -PTR_ERR(file_w), fileName));
+		}
+		else 
+		{
+			if (file_w->f_op && file_w->f_op->write) 
+			{
+				file_w->f_pos = 0;
+				eepAddr = 0x00;
+				
+				while (eepAddr <= 0xFE)
+				{
+					RT28xx_EEPROM_READ16(pAdapter, eepAddr, eepValue);
+					sprintf(msg, "%08x = %04x\n", eepAddr , eepValue);
+					
+					// write data to file
+					file_w->f_op->write(file_w, msg, strlen(msg), &file_w->f_pos);
+					
+					printk("%s", msg);
+					eepAddr += 2;
+				}
+				sprintf(msg, "\nDump all EEPROM values to %s\n", fileName);
+			}
+			filp_close(file_w, NULL);
+		}
+		set_fs(orig_fs); 
+	}
+	if(strlen(msg) == 1)
+		sprintf(msg+strlen(msg), "===>Error command format!");
+
+
+	// Copy the information into the user buffer
+	wrq->u.data.length = strlen(msg);
+	Status = copy_to_user(wrq->u.data.pointer, msg, wrq->u.data.length);
+	
+	DBGPRINT(RT_DEBUG_TRACE, ("<==RTMPIoctlE2PROM\n"));	
+}
+
+
+#ifdef RT30xx
+/* 
+    ==========================================================================
+    Description:
+        Read / Write RF register
+Arguments:
+    pAdapter                    Pointer to our adapter
+    wrq                         Pointer to the ioctl argument
+
+    Return Value:
+        None
+
+    Note:
+        Usage: 
+               1.) iwpriv ra0 rf                ==> read all RF registers
+               2.) iwpriv ra0 rf 1              ==> read RF where RegID=1
+               3.) iwpriv ra0 rf 1=10		    ==> write RF R1=0x10
+    ==========================================================================
+*/
+VOID RTMPIoctlRF(
+	IN	PRTMP_ADAPTER	pAdapter,
+	IN	struct iwreq	*wrq)
+{
+	CHAR				*this_char;
+	CHAR				*value;
+	UCHAR				regRF = 0;
+	STRING				msg[2048];
+	CHAR				arg[255];
+	INT					rfId;
+	LONG				rfValue;
+	int					Status;
+	BOOLEAN				bIsPrintAllRF = FALSE;
+
+
+	memset(msg, 0x00, 2048);
+	if (wrq->u.data.length > 1) //No parameters.
+	{
+	    Status = copy_from_user(arg, wrq->u.data.pointer, (wrq->u.data.length > 255) ? 255 : wrq->u.data.length);
+		sprintf(msg, "\n");
+
+	    //Parsing Read or Write
+		this_char = arg;
+		if (!*this_char)
+			goto next;
+
+		if ((value = strchr(this_char,'=')) != NULL)
+			*value++ = 0;
+
+		if (!value || !*value)
+		{ //Read
+			if (sscanf((PSTRING) this_char, "%d", &(rfId)) == 1)
+			{
+				if (rfId <= 31)
+				{
+#ifdef RALINK_ATE
+					/* 
+						In RT2860 ATE mode, we do not load 8051 firmware.
+	                    We must access RF directly.
+						For RT2870 ATE mode, ATE_RF_IO_WRITE8(/READ8)_BY_REG_ID are redefined.
+					*/
+					if (ATE_ON(pAdapter))
+					{
+						ATE_RF_IO_READ8_BY_REG_ID(pAdapter, rfId, &regRF);
+					}
+					else
+#endif // RALINK_ATE //
+					// according to Andy, Gary, David require.
+					// the command rf shall read rf register directly for dubug.
+					// BBP_IO_READ8_BY_REG_ID(pAdapter, bbpId, &regBBP);
+					RT30xxReadRFRegister(pAdapter, rfId, &regRF);
+
+					sprintf(msg+strlen(msg), "R%02d[0x%02x]:%02X  ", rfId, rfId, regRF);
+				}
+				else
+				{//Invalid parametes, so default printk all RF
+					bIsPrintAllRF = TRUE;
+					goto next;
+				}
+			}
+			else
+			{ //Invalid parametes, so default printk all RF
+				bIsPrintAllRF = TRUE;
+				goto next;
+			}
+		}
+		else
+		{ //Write
+			if ((sscanf((PSTRING) this_char, "%d", &(rfId)) == 1) && (sscanf((PSTRING) value, "%lx", &(rfValue)) == 1))
+			{
+				if (rfId <= 31)
+				{
+#ifdef RALINK_ATE
+						/* 
+							In RT2860 ATE mode, we do not load 8051 firmware.
+		                    We must access RF directly.
+							For RT2870 ATE mode, ATE_RF_IO_WRITE8(/READ8)_BY_REG_ID are redefined.
+						*/
+						if (ATE_ON(pAdapter))
+						{
+							ATE_RF_IO_READ8_BY_REG_ID(pAdapter, rfId, &regRF);
+							ATE_RF_IO_WRITE8_BY_REG_ID(pAdapter, (UCHAR)rfId,(UCHAR) rfValue);
+							//Read it back for showing
+							ATE_RF_IO_READ8_BY_REG_ID(pAdapter, rfId, &regRF);
+							sprintf(msg+strlen(msg), "R%02d[0x%02X]:%02X\n", rfId, rfId, regRF);
+						}
+						else
+#endif // RALINK_ATE //
+						{
+							// according to Andy, Gary, David require.
+							// the command RF shall read/write RF register directly for dubug.
+							//BBP_IO_READ8_BY_REG_ID(pAdapter, bbpId, &regBBP);
+							//BBP_IO_WRITE8_BY_REG_ID(pAdapter, (UCHAR)bbpId,(UCHAR) bbpValue);
+							RT30xxReadRFRegister(pAdapter, rfId, &regRF);
+							RT30xxWriteRFRegister(pAdapter, (UCHAR)rfId,(UCHAR) rfValue);
+							//Read it back for showing
+							//BBP_IO_READ8_BY_REG_ID(pAdapter, bbpId, &regBBP);
+							RT30xxReadRFRegister(pAdapter, rfId, &regRF);
+			                sprintf(msg+strlen(msg), "R%02d[0x%02X]:%02X\n", rfId, rfId, regRF);
+				                }
+				}
+				else
+				{//Invalid parametes, so default printk all RF
+					bIsPrintAllRF = TRUE;
+				}
+			}
+			else
+			{ //Invalid parametes, so default printk all RF
+				bIsPrintAllRF = TRUE;
+			}
+		}
+	}
+	else
+		bIsPrintAllRF = TRUE;
+next:
+	if (bIsPrintAllRF)
+	{
+		memset(msg, 0x00, 2048);
+		sprintf(msg, "\n");
+		for (rfId = 0; rfId <= 31; rfId++)
+		{
+#ifdef RALINK_ATE
+			/* 
+				In RT2860 ATE mode, we do not load 8051 firmware.
+                We must access RF directly.
+				For RT2870 ATE mode, ATE_RF_IO_WRITE8(/READ8)_BY_REG_ID are redefined.
+			*/
+			if (ATE_ON(pAdapter))
+			{
+				ATE_RF_IO_READ8_BY_REG_ID(pAdapter, rfId, &regRF);
+			}
+			else
+#endif // RALINK_ATE //
+
+			// according to Andy, Gary, David require.
+			// the command RF shall read/write RF register directly for dubug.
+			RT30xxReadRFRegister(pAdapter, rfId, &regRF);
+			sprintf(msg+strlen(msg), "%03d = %02X\n", rfId, regRF);
+		}
+		// Copy the information into the user buffer
+		DBGPRINT(RT_DEBUG_TRACE, ("strlen(msg)=%d\n", (UINT32)strlen(msg)));
+		wrq->u.data.length = strlen(msg);
+		if (copy_to_user(wrq->u.data.pointer, msg, wrq->u.data.length)) 
+		{
+			DBGPRINT(RT_DEBUG_TRACE, ("%s: copy_to_user() fail\n", __FUNCTION__));			
+		}
+	}
+	else
+	{
+		if(strlen(msg) == 1)
+			sprintf(msg+strlen(msg), "===>Error command format!");
+
+		DBGPRINT(RT_DEBUG_TRACE, ("copy to user [msg=%s]\n", msg));
+		// Copy the information into the user buffer
+		DBGPRINT(RT_DEBUG_TRACE, ("strlen(msg) =%d\n", (UINT32)strlen(msg)));
+
+		// Copy the information into the user buffer
+		wrq->u.data.length = strlen(msg);
+		Status = copy_to_user(wrq->u.data.pointer, msg, wrq->u.data.length);
+	}
+
+	DBGPRINT(RT_DEBUG_TRACE, ("<==RTMPIoctlRF\n\n"));
+}
+#endif // RT30xx //
+#endif // DBG //
+
+
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/sta_ioctl.o b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/sta_ioctl.o
new file mode 100644
index 0000000000000000000000000000000000000000..47a537d8588c7fdedf9c8bb4d630ae23f73162c3
GIT binary patch
literal 79930
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
F831a0PWb=;

literal 0
HcmV?d00001

diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/vr_ikans.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/vr_ikans.c
new file mode 100644
index 000000000..ae565ec74
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/os/linux/vr_ikans.c
@@ -0,0 +1,352 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+ 
+    Module Name:
+    vr_ikans.c
+ 
+    Abstract:
+    Only for IKANOS Vx160 or Vx180 platform.
+
+	The fast path will check IP address/ IP port, etc. NOT only check MAC.
+ 
+    Revision History:
+    Who         When          What
+    --------    ----------    ----------------------------------------------
+    Sample Lin	01-28-2008    Created
+
+ */
+
+#define MODULE_IKANOS
+
+#include "rt_config.h"
+#include <linux/config.h>
+#include <linux/version.h>
+#include <linux/module.h>
+#include <linux/skbuff.h>
+#include <linux/netdevice.h>
+#include <netpro/apprehdr.h>
+
+
+#ifdef IKANOS_VX_1X0
+
+#define IKANOS_PERAP_ID		7 /* IKANOS Fix Peripheral ID */
+#define K0_TO_K1(x)			((unsigned)(x)|0xA0000000) /* kseg0 to kseg1 */
+//#define IKANOS_DEBUG
+
+
+extern INT rt28xx_send_packets(
+	IN struct sk_buff		*skb_p,
+	IN struct net_device	*net_dev);
+
+static INT32 IKANOS_WlanDataFramesTx(
+	IN void					*_pAdBuf,
+	IN struct net_device	*pNetDev);
+
+static void IKANOS_WlanPktFromAp(
+	IN apPreHeader_t 		*pFrame);
+
+static INT32 GetSpecInfoIdxFromBssid(
+	IN PRTMP_ADAPTER pAd,
+	IN INT32 FromWhichBSSID);
+
+
+
+
+/* --------------------------------- Public -------------------------------- */
+
+/*
+========================================================================
+Routine Description:
+	Init IKANOS fast path function.
+
+Arguments:
+	pApMac			- the MAC of AP
+
+Return Value:
+	None
+
+Note:
+	If you want to enable RX fast path, you must call the function.
+========================================================================
+*/
+void VR_IKANOS_FP_Init(
+	IN UINT8 BssNum,
+	IN UINT8 *pApMac)
+{
+	UINT32 i;
+	UINT8 mac[6];
+
+
+	memcpy(mac, pApMac, 6);
+
+	/* add all MAC of multiple BSS */
+	for(i=0; i<BssNum; i++)
+	{
+		apMacAddrConfig(7, mac, 0xAD);
+		mac[5] ++;
+	} /* End of for */
+} /* End of VR_IKANOS_FP_Init */
+
+
+/*
+========================================================================
+Routine Description:
+	Ikanos LAN --> WLAN transmit fast path function.
+
+Arguments:
+	skb				- the transmitted packet (SKB packet format)
+	netdev			- our WLAN network device
+
+Return Value:
+	
+
+Note:
+========================================================================
+*/
+INT32 IKANOS_DataFramesTx(
+	IN struct sk_buff		*pSkb,
+	IN struct net_device	*pNetDev)
+{
+	PRTMP_ADAPTER pAd = (PRTMP_ADAPTER)pNetDev->priv;
+	IkanosWlanTxCbFuncP *fp = &IKANOS_WlanDataFramesTx;
+
+	pSkb->apFlowData.txDev = pNetDev;
+	pSkb->apFlowData.txApId = IKANOS_PERAP_ID;
+	pAd->IkanosTxInfo.netdev = pNetDev;
+	pAd->IkanosTxInfo.fp = fp;
+	pSkb->apFlowData.txHandle = &(pAd->IkanosTxInfo);
+	ap2apFlowProcess(pSkb, pNetDev);
+
+#ifdef IKANOS_DEBUG
+	printk("ikanos> tx no fp\n"); // debug use
+#endif // IKANOS_DEBUG //
+
+	return rt28xx_send_packets(pSkb, pNetDev);
+} /* End of IKANOS_DataFramesTx */
+
+
+/*
+========================================================================
+Routine Description:
+	Ikanos WLAN --> LAN transmit fast path function.
+
+Arguments:
+	pAd				- WLAN control block
+	pRxParam		-
+	pSkb			- the transmitted packet (SKB packet format)
+	Length			- packet length
+
+Return Value:
+	None
+
+Note:
+========================================================================
+*/
+/* Note: because no unsigned long private parameters in apPreHeader_t can be used,
+	we use a global variable to record pAd.
+	So we can not use multiple card function in Ikanos platform. */
+PRTMP_ADAPTER	pIkanosAd;
+
+void IKANOS_DataFrameRx(
+	IN PRTMP_ADAPTER	pAd,
+	IN void				*pRxParam,
+	IN struct sk_buff	*pSkb,
+	IN UINT32			Length)
+{
+    apPreHeader_t *apBuf;
+
+
+    apBuf = (apPreHeader_t *)(translateMbuf2Apbuf(pSkb, 0));
+
+    apBuf->flags1 = 1 << AP_FLAG1_IS_ETH_BIT;
+    apBuf->specInfoElement = RTMP_GET_PACKET_NET_DEVICE_MBSSID(pSkb); // MBSS
+	pIkanosAd = pAd;
+
+//  apBuf->egressList[0].pEgress = NULL;
+//  apBuf->egressList[0].pFlowID = NULL;
+    apBuf->flags2 = 0;
+
+    apClassify(IKANOS_PERAP_ID, apBuf, (void *)IKANOS_WlanPktFromAp);
+    dev_kfree_skb(pSkb); 
+} /* End of IKANOS_DataFrameRx */
+
+
+
+
+/* --------------------------------- Private -------------------------------- */
+
+/*
+========================================================================
+Routine Description:
+	Ikanos LAN --> WLAN transmit fast path function.
+
+Arguments:
+	_pAdBuf			- the transmitted packet (Ikanos packet format)
+	netdev			- our WLAN network device
+
+Return Value:
+	
+
+Note:
+========================================================================
+*/
+static INT32 IKANOS_WlanDataFramesTx(
+	IN void					*_pAdBuf,
+	IN struct net_device	*pNetDev)
+{
+	apPreHeader_t *pApBuf = (apPreHeader_t *)_pAdBuf;
+	struct sk_buff *sk = NULL;
+
+	sk = (struct sk_buff *)translateApbuf2Mbuf(pApBuf);
+	if (sk == NULL)
+	{
+		printk("ikanos> translateApbuf2Mbuf returned NULL!\n");
+		return 1;
+	} /* End of if */
+
+	sk->apFlowData.flags2 = 0;
+	sk->apFlowData.wlanFlags = 0;
+	sk->protocol = ETH_P_IP;
+	sk->dev = pNetDev;
+	sk->priority = 0;
+
+	return rt28xx_send_packets(sk, pNetDev);
+} /* End of IKANOS_WlanDataFramesTx */
+
+
+static INT32 GetSpecInfoIdxFromBssid(
+	IN PRTMP_ADAPTER pAd,
+	IN INT32 FromWhichBSSID)
+{
+	INT32 IfIdx = MAIN_MBSSID;
+
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+		IfIdx = MAIN_MBSSID;
+	}
+#endif // CONFIG_STA_SUPPORT //
+
+	return IfIdx; /* return one of MBSS */
+}
+
+/*
+========================================================================
+Routine Description:
+	Get real interface index, used in get_netdev_from_bssid()
+
+Arguments:
+	pAd				- 
+	FromWhichBSSID	- 
+
+Return Value:
+	None
+
+Note:
+========================================================================
+*/
+static INT32 GetSpecInfoIdxFromBssid(
+	IN PRTMP_ADAPTER	pAd,
+	IN INT32			FromWhichBSSID)
+{
+	INT32 IfIdx = MAIN_MBSSID;
+
+
+#ifdef CONFIG_STA_SUPPORT
+	IF_DEV_CONFIG_OPMODE_ON_STA(pAd)
+	{
+		IfIdx = MAIN_MBSSID;
+	}
+#endif // CONFIG_STA_SUPPORT //
+
+	return IfIdx; /* return one of MBSS */
+} /* End of GetSpecInfoIdxFromBssid */
+
+
+/*
+========================================================================
+Routine Description:
+	Ikanos WLAN --> LAN transmit fast path function.
+
+Arguments:
+	pFrame			- the received packet (Ikanos packet format)
+
+Return Value:
+	None
+
+Note:
+	Ikanos platform supports only 8 VAPs
+========================================================================
+*/
+static void IKANOS_WlanPktFromAp(
+	IN apPreHeader_t		*pFrame)
+{
+	PRTMP_ADAPTER pAd;
+    struct net_device *dev = NULL;
+    struct sk_buff *skb;
+    INT32 index;
+    apPreHeader_t *apBuf = K0_TO_K1(pFrame);
+
+
+	pAd = pIkanosAd;
+    //index = apBuf->specInfoElement;
+	//dev = pAd->ApCfg.MBSSID[index].MSSIDDev;
+	index = GetSpecInfoIdxFromBssid(pAd, apBuf->specInfoElement);
+	dev = get_netdev_from_bssid(pAd, apBuf->specInfoElement);
+    if (dev == NULL)
+    {
+        printk("ikanos> %s: ERROR null device ***************\n", __FUNCTION__);
+        return;
+    } /* End of if */
+
+    skb = (struct sk_buff *)translateApbuf2Mbuf(apBuf);
+    if (NULL == skb)
+    {
+        printk("ikanos> %s: skb is null *********************\n", __FUNCTION__);
+        return;
+    } /* End of if */
+
+    pAd->IkanosRxInfo[index].netdev = dev;
+    pAd->IkanosRxInfo[index].fp = &IKANOS_WlanDataFramesTx;
+
+    skb->dev = dev;
+    skb->apFlowData.rxApId = IKANOS_PERAP_ID;
+    //skb->apFlowData.txHandle = &(txinforx[index]);
+    skb->apFlowData.rxHandle = &(pAd->IkanosRxInfo[index]);
+    skb->protocol = eth_type_trans(skb, skb->dev);
+
+#ifdef IKANOS_DEBUG
+	printk("ikanos> rx no fp!\n"); // debug use
+#endif // IKANOS_DEBUG //
+
+    netif_rx(skb);
+    return;
+} /* End of IKANOS_WlanPktFromAp */
+
+#endif // IKANOS_VX_1X0 //
+
+/* End of vr_ikans.c */
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/readme.txt b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/readme.txt
new file mode 100644
index 000000000..69a73403a
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/readme.txt
@@ -0,0 +1,23 @@
+Driver install:
+
+Please use following command ( # is comment line , after the  ">"  is command) to install driver
+
+# extract driver
+
+> tar zxvf 2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2.tar.gz
+
+# enter the driver folder that just extract
+
+> cd 2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2
+
+# compile the driver (system need install kernel-header package, should be installed by default)
+
+> make
+
+# install the driver to system (need "root" right)
+
+> make install
+
+#plugin the DWA-525(PCI device) then the driver should be loadup by system.
+
+# now user may use "networkmanager" to site survey and connect to AP.
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/.assoc.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/.assoc.o.cmd
new file mode 100644
index 000000000..08f40e132
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/.assoc.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/assoc.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/.assoc.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(assoc)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/.tmp_assoc.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/assoc.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/assoc.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/assoc.c \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+    $(wildcard include/config/sta/support.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/assoc.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/assoc.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/assoc.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/.auth.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/.auth.o.cmd
new file mode 100644
index 000000000..1fd78eb2e
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/.auth.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/auth.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/.auth.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(auth)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/.tmp_auth.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/auth.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/auth.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/auth.c \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+    $(wildcard include/config/sta/support.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/auth.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/auth.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/auth.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/.auth_rsp.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/.auth_rsp.o.cmd
new file mode 100644
index 000000000..ab4a95dd8
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/.auth_rsp.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/auth_rsp.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/.auth_rsp.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(auth_rsp)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/.tmp_auth_rsp.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/auth_rsp.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/auth_rsp.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/auth_rsp.c \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+    $(wildcard include/config/sta/support.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/auth_rsp.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/auth_rsp.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/auth_rsp.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/.connect.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/.connect.o.cmd
new file mode 100644
index 000000000..af2d78a22
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/.connect.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/connect.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/.connect.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(connect)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/.tmp_connect.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/connect.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/connect.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/connect.c \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+    $(wildcard include/config/sta/support.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/connect.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/connect.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/connect.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/.rtmp_data.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/.rtmp_data.o.cmd
new file mode 100644
index 000000000..77330c18c
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/.rtmp_data.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/rtmp_data.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/.rtmp_data.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(rtmp_data)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/.tmp_rtmp_data.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/rtmp_data.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/rtmp_data.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/rtmp_data.c \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+    $(wildcard include/config/sta/support.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/rtmp_data.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/rtmp_data.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/rtmp_data.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/.sanity.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/.sanity.o.cmd
new file mode 100644
index 000000000..a8a8e5b1e
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/.sanity.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/sanity.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/.sanity.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(sanity)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/.tmp_sanity.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/sanity.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/sanity.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/sanity.c \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+    $(wildcard include/config/sta/support.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/sanity.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/sanity.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/sanity.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/.sta_cfg.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/.sta_cfg.o.cmd
new file mode 100644
index 000000000..ba8a66e33
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/.sta_cfg.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/sta_cfg.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/.sta_cfg.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(sta_cfg)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/.tmp_sta_cfg.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/sta_cfg.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/sta_cfg.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/sta_cfg.c \
+    $(wildcard include/config/apsta/mixed/support.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+    $(wildcard include/config/sta/support.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/sta_cfg.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/sta_cfg.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/sta_cfg.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/.sync.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/.sync.o.cmd
new file mode 100644
index 000000000..f4abab5f0
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/.sync.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/sync.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/.sync.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(sync)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/.tmp_sync.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/sync.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/sync.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/sync.c \
+    $(wildcard include/config/sta/support.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/sync.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/sync.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/sync.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/.wpa.o.cmd b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/.wpa.o.cmd
new file mode 100644
index 000000000..d746033d3
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/.wpa.o.cmd
@@ -0,0 +1,813 @@
+cmd_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/wpa.o := gcc -Wp,-MD,/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/.wpa.o.d  -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.4.3/include  -Iinclude  -I/usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include -include include/linux/autoconf.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m32 -msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -march=i586 -mtune=generic -maccumulate-outgoing-args -Wa,-mtune=generic32 -ffreestanding -fstack-protector -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Wframe-larger-than=1024 -fno-omit-frame-pointer -fno-optimize-sibling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-dwarf2-cfi-asm -fconserve-stack -DAGGREGATION_SUPPORT -DPIGGYBACK_SUPPORT -DWMM_SUPPORT -DLINUX -Wall -Wstrict-prototypes -Wno-trigraphs -DSYSTEM_LOG_SUPPORT -DKTHREAD_SUPPORT -DCONFIG_STA_SUPPORT -DDBG -DWPA_SUPPLICANT_SUPPORT -DNATIVE_WPA_SUPPLICANT_SUPPORT -DDOT11_N_SUPPORT -DDOT11N_DRAFT3 -DSTATS_COUNT_SUPPORT -DRTMP_MAC_PCI -DRT2860 -DRT28xx -DRT30xx -DRT35xx -DRTMP_PCI_SUPPORT -DRTMP_RF_RW_SUPPORT -DRTMP_EFUSE_SUPPORT -DMODVERSIONS -I/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include  -DMODULE -D"KBUILD_STR(s)=\#s" -D"KBUILD_BASENAME=KBUILD_STR(wpa)"  -D"KBUILD_MODNAME=KBUILD_STR(rt3562sta)"  -c -o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/.tmp_wpa.o /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/wpa.c
+
+deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/wpa.o := \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/wpa.c \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+    $(wildcard include/config/h//.h) \
+    $(wildcard include/config/sta/support.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_os.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/os/rt_linux.h \
+    $(wildcard include/config/apsta/mixed/support.h) \
+    $(wildcard include/config/5vt/enhance.h) \
+  include/linux/module.h \
+    $(wildcard include/config/modules.h) \
+    $(wildcard include/config/modversions.h) \
+    $(wildcard include/config/unused/symbols.h) \
+    $(wildcard include/config/generic/bug.h) \
+    $(wildcard include/config/kallsyms.h) \
+    $(wildcard include/config/tracepoints.h) \
+    $(wildcard include/config/tracing.h) \
+    $(wildcard include/config/event/tracing.h) \
+    $(wildcard include/config/ftrace/mcount/record.h) \
+    $(wildcard include/config/module/unload.h) \
+    $(wildcard include/config/smp.h) \
+    $(wildcard include/config/constructors.h) \
+    $(wildcard include/config/sysfs.h) \
+  include/linux/list.h \
+    $(wildcard include/config/debug/list.h) \
+  include/linux/stddef.h \
+  include/linux/compiler.h \
+    $(wildcard include/config/trace/branch/profiling.h) \
+    $(wildcard include/config/profile/all/branches.h) \
+    $(wildcard include/config/enable/must/check.h) \
+    $(wildcard include/config/enable/warn/deprecated.h) \
+  include/linux/compiler-gcc.h \
+    $(wildcard include/config/arch/supports/optimized/inlining.h) \
+    $(wildcard include/config/optimize/inlining.h) \
+  include/linux/compiler-gcc4.h \
+  include/linux/poison.h \
+    $(wildcard include/config/illegal/pointer/value.h) \
+  include/linux/prefetch.h \
+  include/linux/types.h \
+    $(wildcard include/config/uid16.h) \
+    $(wildcard include/config/lbdaf.h) \
+    $(wildcard include/config/phys/addr/t/64bit.h) \
+    $(wildcard include/config/64bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/types.h \
+    $(wildcard include/config/x86/64.h) \
+    $(wildcard include/config/highmem64g.h) \
+  include/asm-generic/types.h \
+  include/asm-generic/int-ll64.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitsperlong.h \
+  include/asm-generic/bitsperlong.h \
+  include/linux/posix_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types.h \
+    $(wildcard include/config/x86/32.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/posix_types_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor.h \
+    $(wildcard include/config/x86/vsmp.h) \
+    $(wildcard include/config/cc/stackprotector.h) \
+    $(wildcard include/config/paravirt.h) \
+    $(wildcard include/config/m386.h) \
+    $(wildcard include/config/m486.h) \
+    $(wildcard include/config/x86/debugctlmsr.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/processor-flags.h \
+    $(wildcard include/config/vm86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vm86.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace.h \
+    $(wildcard include/config/x86/ptrace/bts.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ptrace-abi.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/segment.h \
+  include/linux/init.h \
+    $(wildcard include/config/hotplug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/math_emu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sigcontext.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/current.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/percpu.h \
+    $(wildcard include/config/x86/64/smp.h) \
+  include/linux/kernel.h \
+    $(wildcard include/config/preempt/voluntary.h) \
+    $(wildcard include/config/debug/spinlock/sleep.h) \
+    $(wildcard include/config/prove/locking.h) \
+    $(wildcard include/config/printk.h) \
+    $(wildcard include/config/dynamic/debug.h) \
+    $(wildcard include/config/ring/buffer.h) \
+    $(wildcard include/config/numa.h) \
+  /usr/lib/gcc/i486-linux-gnu/4.4.3/include/stdarg.h \
+  include/linux/linkage.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/linkage.h \
+    $(wildcard include/config/x86/alignment/16.h) \
+  include/linux/stringify.h \
+  include/linux/bitops.h \
+    $(wildcard include/config/generic/find/first/bit.h) \
+    $(wildcard include/config/generic/find/last/bit.h) \
+    $(wildcard include/config/generic/find/next/bit.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bitops.h \
+    $(wildcard include/config/x86/cmov.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/alternative.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/asm.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpufeature.h \
+    $(wildcard include/config/x86/invlpg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/required-features.h \
+    $(wildcard include/config/x86/minimum/cpu/family.h) \
+    $(wildcard include/config/math/emulation.h) \
+    $(wildcard include/config/x86/pae.h) \
+    $(wildcard include/config/x86/cmpxchg64.h) \
+    $(wildcard include/config/x86/use/3dnow.h) \
+    $(wildcard include/config/x86/p6/nop.h) \
+  include/asm-generic/bitops/sched.h \
+  include/asm-generic/bitops/hweight.h \
+  include/asm-generic/bitops/fls64.h \
+  include/asm-generic/bitops/ext2-non-atomic.h \
+  include/asm-generic/bitops/le.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/byteorder.h \
+  include/linux/byteorder/little_endian.h \
+  include/linux/swab.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swab.h \
+    $(wildcard include/config/x86/bswap.h) \
+  include/linux/byteorder/generic.h \
+  include/asm-generic/bitops/minix.h \
+  include/linux/log2.h \
+    $(wildcard include/config/arch/has/ilog2/u32.h) \
+    $(wildcard include/config/arch/has/ilog2/u64.h) \
+  include/linux/typecheck.h \
+  include/linux/ratelimit.h \
+  include/linux/param.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/param.h \
+  include/asm-generic/param.h \
+    $(wildcard include/config/hz.h) \
+  include/linux/dynamic_debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bug.h \
+    $(wildcard include/config/bug.h) \
+    $(wildcard include/config/debug/bugverbose.h) \
+  include/asm-generic/bug.h \
+    $(wildcard include/config/generic/bug/relative/pointers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/div64.h \
+  include/asm-generic/percpu.h \
+    $(wildcard include/config/debug/preempt.h) \
+    $(wildcard include/config/have/setup/per/cpu/area.h) \
+  include/linux/threads.h \
+    $(wildcard include/config/nr/cpus.h) \
+    $(wildcard include/config/base/small.h) \
+  include/linux/percpu-defs.h \
+    $(wildcard include/config/debug/force/weak/per/cpu.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/system.h \
+    $(wildcard include/config/ia32/emulation.h) \
+    $(wildcard include/config/x86/32/lazy/gs.h) \
+    $(wildcard include/config/x86/ppro/fence.h) \
+    $(wildcard include/config/x86/oostore.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cmpxchg_32.h \
+    $(wildcard include/config/x86/cmpxchg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/nops.h \
+    $(wildcard include/config/mk7.h) \
+  include/linux/irqflags.h \
+    $(wildcard include/config/trace/irqflags.h) \
+    $(wildcard include/config/irqsoff/tracer.h) \
+    $(wildcard include/config/preempt/tracer.h) \
+    $(wildcard include/config/trace/irqflags/support.h) \
+    $(wildcard include/config/x86.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irqflags.h \
+    $(wildcard include/config/debug/lock/alloc.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt.h \
+    $(wildcard include/config/highpte.h) \
+    $(wildcard include/config/paravirt/spinlocks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_types.h \
+    $(wildcard include/config/kmemcheck.h) \
+    $(wildcard include/config/compat/vdso.h) \
+    $(wildcard include/config/proc/fs.h) \
+  include/linux/const.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32_types.h \
+    $(wildcard include/config/highmem4g.h) \
+    $(wildcard include/config/page/offset.h) \
+    $(wildcard include/config/4kstacks.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+    $(wildcard include/config/highmem.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level_types.h \
+  include/asm-generic/pgtable-nopud.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/paravirt_types.h \
+    $(wildcard include/config/x86/local/apic.h) \
+    $(wildcard include/config/paravirt/debug.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc_defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/kmap_types.h \
+    $(wildcard include/config/debug/highmem.h) \
+  include/asm-generic/kmap_types.h \
+  include/linux/cpumask.h \
+    $(wildcard include/config/cpumask/offstack.h) \
+    $(wildcard include/config/hotplug/cpu.h) \
+    $(wildcard include/config/debug/per/cpu/maps.h) \
+    $(wildcard include/config/disable/obsolete/cpumask/functions.h) \
+  include/linux/bitmap.h \
+  include/linux/string.h \
+    $(wildcard include/config/binary/printf.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/string_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/page_32.h \
+    $(wildcard include/config/hugetlb/page.h) \
+    $(wildcard include/config/debug/virtual.h) \
+    $(wildcard include/config/flatmem.h) \
+    $(wildcard include/config/x86/3dnow.h) \
+  include/asm-generic/memory_model.h \
+    $(wildcard include/config/discontigmem.h) \
+    $(wildcard include/config/sparsemem/vmemmap.h) \
+    $(wildcard include/config/sparsemem.h) \
+  include/asm-generic/getorder.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/msr-index.h \
+  include/linux/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ioctl.h \
+  include/asm-generic/ioctl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/errno.h \
+  include/asm-generic/errno.h \
+  include/asm-generic/errno-base.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cpumask.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ds.h \
+    $(wildcard include/config/x86/ds.h) \
+  include/linux/err.h \
+  include/linux/personality.h \
+  include/linux/cache.h \
+    $(wildcard include/config/arch/has/cache/line/size.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cache.h \
+    $(wildcard include/config/x86/l1/cache/shift.h) \
+  include/linux/math64.h \
+  include/linux/stat.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/stat.h \
+  include/linux/time.h \
+    $(wildcard include/config/arch/uses/gettimeoffset.h) \
+  include/linux/seqlock.h \
+  include/linux/spinlock.h \
+    $(wildcard include/config/debug/spinlock.h) \
+    $(wildcard include/config/generic/lockbreak.h) \
+    $(wildcard include/config/preempt.h) \
+  include/linux/preempt.h \
+    $(wildcard include/config/preempt/notifiers.h) \
+  include/linux/thread_info.h \
+    $(wildcard include/config/compat.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/thread_info.h \
+    $(wildcard include/config/debug/stack/usage.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ftrace.h \
+    $(wildcard include/config/function/tracer.h) \
+    $(wildcard include/config/dynamic/ftrace.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/atomic_32.h \
+  include/asm-generic/atomic-long.h \
+  include/linux/bottom_half.h \
+  include/linux/spinlock_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock_types.h \
+  include/linux/lockdep.h \
+    $(wildcard include/config/lockdep.h) \
+    $(wildcard include/config/lock/stat.h) \
+    $(wildcard include/config/generic/hardirqs.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/spinlock.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwlock.h \
+  include/linux/spinlock_api_smp.h \
+  include/linux/kmod.h \
+  include/linux/gfp.h \
+    $(wildcard include/config/zone/dma.h) \
+    $(wildcard include/config/zone/dma32.h) \
+    $(wildcard include/config/debug/vm.h) \
+  include/linux/mmzone.h \
+    $(wildcard include/config/force/max/zoneorder.h) \
+    $(wildcard include/config/memory/hotplug.h) \
+    $(wildcard include/config/arch/populates/node/map.h) \
+    $(wildcard include/config/flat/node/mem/map.h) \
+    $(wildcard include/config/cgroup/mem/res/ctlr.h) \
+    $(wildcard include/config/have/memory/present.h) \
+    $(wildcard include/config/need/node/memmap/size.h) \
+    $(wildcard include/config/need/multiple/nodes.h) \
+    $(wildcard include/config/have/arch/early/pfn/to/nid.h) \
+    $(wildcard include/config/sparsemem/extreme.h) \
+    $(wildcard include/config/nodes/span/other/nodes.h) \
+    $(wildcard include/config/holes/in/zone.h) \
+    $(wildcard include/config/arch/has/holes/memorymodel.h) \
+  include/linux/wait.h \
+  include/linux/numa.h \
+    $(wildcard include/config/nodes/shift.h) \
+  include/linux/nodemask.h \
+  include/linux/pageblock-flags.h \
+    $(wildcard include/config/hugetlb/page/size/variable.h) \
+  include/linux/bounds.h \
+  include/linux/memory_hotplug.h \
+    $(wildcard include/config/have/arch/nodedata/extension.h) \
+    $(wildcard include/config/memory/hotremove.h) \
+  include/linux/notifier.h \
+  include/linux/errno.h \
+  include/linux/mutex.h \
+    $(wildcard include/config/debug/mutexes.h) \
+  include/linux/rwsem.h \
+    $(wildcard include/config/rwsem/generic/spinlock.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/rwsem.h \
+  include/linux/srcu.h \
+  include/linux/topology.h \
+    $(wildcard include/config/sched/smt.h) \
+    $(wildcard include/config/sched/mc.h) \
+  include/linux/smp.h \
+    $(wildcard include/config/use/generic/smp/helpers.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/smp.h \
+    $(wildcard include/config/x86/io/apic.h) \
+    $(wildcard include/config/x86/32/smp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec.h \
+    $(wildcard include/config/x86/numaq.h) \
+    $(wildcard include/config/mca.h) \
+    $(wildcard include/config/eisa.h) \
+    $(wildcard include/config/x86/mpparse.h) \
+    $(wildcard include/config/acpi.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mpspec_def.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/x86_init.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/bootparam.h \
+  include/linux/screen_info.h \
+  include/linux/apm_bios.h \
+  include/linux/edd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/e820.h \
+    $(wildcard include/config/efi.h) \
+    $(wildcard include/config/hibernation.h) \
+    $(wildcard include/config/memtest.h) \
+  include/linux/ioport.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ist.h \
+  include/video/edid.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apic.h \
+    $(wildcard include/config/x86/x2apic.h) \
+  include/linux/delay.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/delay.h \
+  include/linux/pm.h \
+    $(wildcard include/config/pm/sleep.h) \
+    $(wildcard include/config/pm/runtime.h) \
+  include/linux/workqueue.h \
+  include/linux/timer.h \
+    $(wildcard include/config/timer/stats.h) \
+    $(wildcard include/config/debug/objects/timers.h) \
+  include/linux/ktime.h \
+    $(wildcard include/config/ktime/scalar.h) \
+  include/linux/jiffies.h \
+  include/linux/timex.h \
+    $(wildcard include/config/no/hz.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/timex.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/tsc.h \
+    $(wildcard include/config/x86/tsc.h) \
+  include/linux/debugobjects.h \
+    $(wildcard include/config/debug/objects.h) \
+    $(wildcard include/config/debug/objects/free.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/apicdef.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fixmap.h \
+    $(wildcard include/config/provide/ohci1394/dma/init.h) \
+    $(wildcard include/config/x86/visws/apic.h) \
+    $(wildcard include/config/x86/f00f/bug.h) \
+    $(wildcard include/config/x86/cyclone/timer.h) \
+    $(wildcard include/config/pci/mmconfig.h) \
+    $(wildcard include/config/intel/txt.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/acpi.h \
+    $(wildcard include/config/acpi/numa.h) \
+  include/acpi/pdc_intel.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/numa_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/mmu.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_apic.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_vectors.h \
+    $(wildcard include/config/sparse/irq.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/topology.h \
+    $(wildcard include/config/x86/ht.h) \
+    $(wildcard include/config/x86/64/acpi/numa.h) \
+  include/asm-generic/topology.h \
+  include/linux/mmdebug.h \
+  include/linux/elf.h \
+  include/linux/elf-em.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/elf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/user_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/auxvec.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/vdso.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/desc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ldt.h \
+  include/linux/mm_types.h \
+    $(wildcard include/config/split/ptlock/cpus.h) \
+    $(wildcard include/config/want/page/debug/flags.h) \
+    $(wildcard include/config/mmu.h) \
+    $(wildcard include/config/aio.h) \
+    $(wildcard include/config/mm/owner.h) \
+    $(wildcard include/config/mmu/notifier.h) \
+  include/linux/auxvec.h \
+  include/linux/prio_tree.h \
+  include/linux/rbtree.h \
+  include/linux/completion.h \
+  include/linux/page-debug-flags.h \
+    $(wildcard include/config/page/poisoning.h) \
+    $(wildcard include/config/page/debug/something/else.h) \
+  include/linux/kobject.h \
+  include/linux/sysfs.h \
+  include/linux/kref.h \
+  include/linux/moduleparam.h \
+    $(wildcard include/config/alpha.h) \
+    $(wildcard include/config/ia64.h) \
+    $(wildcard include/config/ppc64.h) \
+  include/linux/tracepoint.h \
+  include/linux/rcupdate.h \
+    $(wildcard include/config/tree/preempt/rcu.h) \
+    $(wildcard include/config/tree/rcu.h) \
+  include/linux/rcutree.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/local.h \
+  include/linux/percpu.h \
+    $(wildcard include/config/have/legacy/per/cpu/area.h) \
+    $(wildcard include/config/need/per/cpu/embed/first/chunk.h) \
+    $(wildcard include/config/need/per/cpu/page/first/chunk.h) \
+    $(wildcard include/config/debug/kmemleak.h) \
+  include/linux/slab.h \
+    $(wildcard include/config/slab/debug.h) \
+    $(wildcard include/config/slub.h) \
+    $(wildcard include/config/slob.h) \
+    $(wildcard include/config/debug/slab.h) \
+  include/linux/slub_def.h \
+    $(wildcard include/config/slub/stats.h) \
+    $(wildcard include/config/slub/debug.h) \
+    $(wildcard include/config/kmemtrace.h) \
+  include/linux/kmemtrace.h \
+  include/trace/events/kmem.h \
+  include/trace/define_trace.h \
+  include/linux/kmemleak.h \
+  include/linux/pfn.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/module.h \
+    $(wildcard include/config/m586.h) \
+    $(wildcard include/config/m586tsc.h) \
+    $(wildcard include/config/m586mmx.h) \
+    $(wildcard include/config/mcore2.h) \
+    $(wildcard include/config/matom.h) \
+    $(wildcard include/config/m686.h) \
+    $(wildcard include/config/mpentiumii.h) \
+    $(wildcard include/config/mpentiumiii.h) \
+    $(wildcard include/config/mpentiumm.h) \
+    $(wildcard include/config/mpentium4.h) \
+    $(wildcard include/config/mk6.h) \
+    $(wildcard include/config/mk8.h) \
+    $(wildcard include/config/x86/elan.h) \
+    $(wildcard include/config/mcrusoe.h) \
+    $(wildcard include/config/mefficeon.h) \
+    $(wildcard include/config/mwinchipc6.h) \
+    $(wildcard include/config/mwinchip3d.h) \
+    $(wildcard include/config/mcyrixiii.h) \
+    $(wildcard include/config/mviac3/2.h) \
+    $(wildcard include/config/mviac7.h) \
+    $(wildcard include/config/mgeodegx1.h) \
+    $(wildcard include/config/mgeode/lx.h) \
+  include/asm-generic/module.h \
+  include/trace/events/module.h \
+  include/linux/version.h \
+  include/linux/interrupt.h \
+    $(wildcard include/config/generic/irq/probe.h) \
+    $(wildcard include/config/debug/shirq.h) \
+  include/linux/irqreturn.h \
+  include/linux/irqnr.h \
+  include/linux/hardirq.h \
+    $(wildcard include/config/virt/cpu/accounting.h) \
+  include/linux/ftrace_irq.h \
+    $(wildcard include/config/ftrace/nmi/enter.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hardirq.h \
+    $(wildcard include/config/x86/mce.h) \
+    $(wildcard include/config/x86/mce/threshold.h) \
+  include/linux/irq.h \
+    $(wildcard include/config/s390.h) \
+    $(wildcard include/config/irq/per/cpu.h) \
+    $(wildcard include/config/irq/release/method.h) \
+    $(wildcard include/config/intr/remap.h) \
+    $(wildcard include/config/generic/pending/irq.h) \
+    $(wildcard include/config/numa/irq/desc.h) \
+    $(wildcard include/config/generic/hardirqs/no//do/irq.h) \
+    $(wildcard include/config/cpumasks/offstack.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/irq_regs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/hw_irq.h \
+  include/linux/profile.h \
+    $(wildcard include/config/profiling.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sections.h \
+  include/asm-generic/sections.h \
+  include/linux/hrtimer.h \
+    $(wildcard include/config/high/res/timers.h) \
+  include/linux/pci.h \
+    $(wildcard include/config/pci/iov.h) \
+    $(wildcard include/config/pcieaspm.h) \
+    $(wildcard include/config/pci/msi.h) \
+    $(wildcard include/config/pci.h) \
+    $(wildcard include/config/pci/legacy.h) \
+    $(wildcard include/config/pcie/ecrc.h) \
+    $(wildcard include/config/ht/irq.h) \
+    $(wildcard include/config/pci/domains.h) \
+    $(wildcard include/config/hotplug/pci.h) \
+  include/linux/pci_regs.h \
+  include/linux/mod_devicetable.h \
+  include/linux/device.h \
+    $(wildcard include/config/debug/devres.h) \
+    $(wildcard include/config/devtmpfs.h) \
+  include/linux/klist.h \
+  include/linux/semaphore.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/device.h \
+    $(wildcard include/config/dmar.h) \
+  include/linux/pm_wakeup.h \
+    $(wildcard include/config/pm.h) \
+  include/linux/io.h \
+    $(wildcard include/config/has/ioport.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/io_32.h \
+  include/asm-generic/iomap.h \
+  include/linux/vmalloc.h \
+  include/linux/pci_ids.h \
+  include/linux/dmapool.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/scatterlist.h \
+  include/asm-generic/scatterlist.h \
+    $(wildcard include/config/debug/sg.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pci.h \
+    $(wildcard include/config/dma/api/debug.h) \
+  include/linux/mm.h \
+    $(wildcard include/config/sysctl.h) \
+    $(wildcard include/config/stack/growsup.h) \
+    $(wildcard include/config/swap.h) \
+    $(wildcard include/config/debug/pagealloc.h) \
+  include/linux/debug_locks.h \
+    $(wildcard include/config/debug/locking/api/selftests.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable_32_types.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/pgtable-3level.h \
+  include/asm-generic/pgtable.h \
+  include/linux/page-flags.h \
+    $(wildcard include/config/pageflags/extended.h) \
+    $(wildcard include/config/have/mlocked/page/bit.h) \
+    $(wildcard include/config/arch/uses/pg/uncached.h) \
+    $(wildcard include/config/memory/failure.h) \
+  include/linux/vmstat.h \
+    $(wildcard include/config/vm/event/counters.h) \
+  include/asm-generic/pci-dma-compat.h \
+  include/linux/dma-mapping.h \
+    $(wildcard include/config/has/dma.h) \
+    $(wildcard include/config/have/dma/attrs.h) \
+  include/linux/dma-attrs.h \
+  include/linux/bug.h \
+  include/linux/scatterlist.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/dma-mapping.h \
+    $(wildcard include/config/isa.h) \
+  include/linux/kmemcheck.h \
+  include/linux/dma-debug.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/swiotlb.h \
+    $(wildcard include/config/swiotlb.h) \
+  include/linux/swiotlb.h \
+  include/asm-generic/dma-coherent.h \
+    $(wildcard include/config/have/generic/dma/coherent.h) \
+  include/asm-generic/dma-mapping-common.h \
+  include/asm-generic/pci.h \
+  include/linux/netdevice.h \
+    $(wildcard include/config/dcb.h) \
+    $(wildcard include/config/wlan/80211.h) \
+    $(wildcard include/config/ax25.h) \
+    $(wildcard include/config/mac80211/mesh.h) \
+    $(wildcard include/config/tr.h) \
+    $(wildcard include/config/net/ipip.h) \
+    $(wildcard include/config/net/ipgre.h) \
+    $(wildcard include/config/ipv6/sit.h) \
+    $(wildcard include/config/ipv6/tunnel.h) \
+    $(wildcard include/config/netpoll.h) \
+    $(wildcard include/config/net/poll/controller.h) \
+    $(wildcard include/config/fcoe.h) \
+    $(wildcard include/config/wireless/ext.h) \
+    $(wildcard include/config/net/dsa.h) \
+    $(wildcard include/config/net/ns.h) \
+    $(wildcard include/config/net/dsa/tag/dsa.h) \
+    $(wildcard include/config/net/dsa/tag/trailer.h) \
+    $(wildcard include/config/netpoll/trap.h) \
+  include/linux/if.h \
+  include/linux/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/socket.h \
+  include/asm-generic/socket.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sockios.h \
+  include/asm-generic/sockios.h \
+  include/linux/sockios.h \
+  include/linux/uio.h \
+  include/linux/hdlc/ioctl.h \
+  include/linux/if_ether.h \
+  include/linux/skbuff.h \
+    $(wildcard include/config/nf/conntrack.h) \
+    $(wildcard include/config/bridge/netfilter.h) \
+    $(wildcard include/config/xfrm.h) \
+    $(wildcard include/config/net/sched.h) \
+    $(wildcard include/config/net/cls/act.h) \
+    $(wildcard include/config/ipv6/ndisc/nodetype.h) \
+    $(wildcard include/config/net/dma.h) \
+    $(wildcard include/config/network/secmark.h) \
+  include/linux/net.h \
+  include/linux/random.h \
+  include/linux/fcntl.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/fcntl.h \
+  include/asm-generic/fcntl.h \
+  include/linux/sysctl.h \
+  include/linux/textsearch.h \
+  include/net/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess.h \
+    $(wildcard include/config/x86/wp/works/ok.h) \
+    $(wildcard include/config/x86/intel/usercopy.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/uaccess_32.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/checksum_32.h \
+  include/linux/in6.h \
+  include/linux/dmaengine.h \
+    $(wildcard include/config/dma/engine.h) \
+    $(wildcard include/config/async/tx/dma.h) \
+    $(wildcard include/config/async/tx/disable/channel/switch.h) \
+  include/linux/if_packet.h \
+  include/linux/rculist.h \
+  include/linux/ethtool.h \
+  include/net/net_namespace.h \
+    $(wildcard include/config/ipv6.h) \
+    $(wildcard include/config/ip/dccp.h) \
+    $(wildcard include/config/netfilter.h) \
+    $(wildcard include/config/net.h) \
+  include/net/netns/core.h \
+  include/net/netns/mib.h \
+    $(wildcard include/config/xfrm/statistics.h) \
+  include/net/snmp.h \
+  include/linux/snmp.h \
+  include/net/netns/unix.h \
+  include/net/netns/packet.h \
+  include/net/netns/ipv4.h \
+    $(wildcard include/config/ip/multiple/tables.h) \
+    $(wildcard include/config/ip/mroute.h) \
+    $(wildcard include/config/ip/pimsm/v1.h) \
+    $(wildcard include/config/ip/pimsm/v2.h) \
+  include/net/inet_frag.h \
+  include/net/netns/ipv6.h \
+    $(wildcard include/config/ipv6/multiple/tables.h) \
+    $(wildcard include/config/ipv6/mroute.h) \
+    $(wildcard include/config/ipv6/pimsm/v2.h) \
+  include/net/dst_ops.h \
+  include/net/netns/dccp.h \
+  include/net/netns/x_tables.h \
+    $(wildcard include/config/bridge/nf/ebtables.h) \
+  include/linux/netfilter.h \
+    $(wildcard include/config/netfilter/debug.h) \
+    $(wildcard include/config/nf/nat/needed.h) \
+  include/linux/in.h \
+  include/net/flow.h \
+  include/linux/proc_fs.h \
+    $(wildcard include/config/proc/devicetree.h) \
+    $(wildcard include/config/proc/kcore.h) \
+  include/linux/fs.h \
+    $(wildcard include/config/dnotify.h) \
+    $(wildcard include/config/quota.h) \
+    $(wildcard include/config/fsnotify.h) \
+    $(wildcard include/config/inotify.h) \
+    $(wildcard include/config/security.h) \
+    $(wildcard include/config/fs/posix/acl.h) \
+    $(wildcard include/config/epoll.h) \
+    $(wildcard include/config/debug/writecount.h) \
+    $(wildcard include/config/file/locking.h) \
+    $(wildcard include/config/auditsyscall.h) \
+    $(wildcard include/config/block.h) \
+    $(wildcard include/config/fs/xip.h) \
+    $(wildcard include/config/migration.h) \
+  include/linux/limits.h \
+  include/linux/kdev_t.h \
+  include/linux/dcache.h \
+  include/linux/path.h \
+  include/linux/radix-tree.h \
+  include/linux/pid.h \
+  include/linux/capability.h \
+    $(wildcard include/config/security/file/capabilities.h) \
+  include/linux/fiemap.h \
+  include/linux/quota.h \
+  include/linux/dqblk_xfs.h \
+  include/linux/dqblk_v1.h \
+  include/linux/dqblk_v2.h \
+  include/linux/dqblk_qtree.h \
+  include/linux/nfs_fs_i.h \
+  include/linux/nfs.h \
+  include/linux/sunrpc/msg_prot.h \
+  include/linux/inet.h \
+  include/linux/magic.h \
+  include/net/netns/conntrack.h \
+  include/linux/list_nulls.h \
+  include/net/netns/xfrm.h \
+  include/linux/xfrm.h \
+  include/linux/seq_file_net.h \
+  include/linux/seq_file.h \
+  include/net/dsa.h \
+  include/net/dcbnl.h \
+  include/linux/etherdevice.h \
+    $(wildcard include/config/have/efficient/unaligned/access.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unaligned.h \
+  include/linux/unaligned/access_ok.h \
+  include/linux/unaligned/generic.h \
+  include/linux/wireless.h \
+  include/linux/if_arp.h \
+  include/linux/ctype.h \
+  include/linux/usb.h \
+    $(wildcard include/config/usb/devicefs.h) \
+    $(wildcard include/config/usb/mon.h) \
+    $(wildcard include/config/usb/device/class.h) \
+    $(wildcard include/config/usb/suspend.h) \
+  include/linux/usb/ch9.h \
+    $(wildcard include/config/size.h) \
+    $(wildcard include/config/att/one.h) \
+    $(wildcard include/config/att/selfpower.h) \
+    $(wildcard include/config/att/wakeup.h) \
+    $(wildcard include/config/att/battery.h) \
+  include/linux/sched.h \
+    $(wildcard include/config/sched/debug.h) \
+    $(wildcard include/config/detect/softlockup.h) \
+    $(wildcard include/config/detect/hung/task.h) \
+    $(wildcard include/config/core/dump/default/elf/headers.h) \
+    $(wildcard include/config/bsd/process/acct.h) \
+    $(wildcard include/config/taskstats.h) \
+    $(wildcard include/config/audit.h) \
+    $(wildcard include/config/inotify/user.h) \
+    $(wildcard include/config/posix/mqueue.h) \
+    $(wildcard include/config/keys.h) \
+    $(wildcard include/config/user/sched.h) \
+    $(wildcard include/config/perf/events.h) \
+    $(wildcard include/config/schedstats.h) \
+    $(wildcard include/config/task/delay/acct.h) \
+    $(wildcard include/config/fair/group/sched.h) \
+    $(wildcard include/config/rt/group/sched.h) \
+    $(wildcard include/config/blk/dev/io/trace.h) \
+    $(wildcard include/config/sysvipc.h) \
+    $(wildcard include/config/rt/mutexes.h) \
+    $(wildcard include/config/task/xacct.h) \
+    $(wildcard include/config/cpusets.h) \
+    $(wildcard include/config/cgroups.h) \
+    $(wildcard include/config/futex.h) \
+    $(wildcard include/config/fault/injection.h) \
+    $(wildcard include/config/latencytop.h) \
+    $(wildcard include/config/function/graph/tracer.h) \
+    $(wildcard include/config/have/unstable/sched/clock.h) \
+    $(wildcard include/config/group/sched.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/cputime.h \
+  include/asm-generic/cputime.h \
+  include/linux/sem.h \
+  include/linux/ipc.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/ipcbuf.h \
+  include/asm-generic/ipcbuf.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/sembuf.h \
+  include/linux/signal.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/signal.h \
+  include/asm-generic/signal-defs.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/siginfo.h \
+  include/asm-generic/siginfo.h \
+  include/linux/proportions.h \
+  include/linux/percpu_counter.h \
+  include/linux/seccomp.h \
+    $(wildcard include/config/seccomp.h) \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/seccomp_32.h \
+  include/linux/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/unistd_32.h \
+  include/linux/rtmutex.h \
+    $(wildcard include/config/debug/rt/mutexes.h) \
+  include/linux/plist.h \
+    $(wildcard include/config/debug/pi/list.h) \
+  include/linux/resource.h \
+  /usr/src/linux-headers-2.6.32-29-generic-pae/arch/x86/include/asm/resource.h \
+  include/asm-generic/resource.h \
+  include/linux/task_io_accounting.h \
+    $(wildcard include/config/task/io/accounting.h) \
+  include/linux/latencytop.h \
+  include/linux/cred.h \
+    $(wildcard include/config/debug/credentials.h) \
+  include/linux/key.h \
+  include/linux/selinux.h \
+    $(wildcard include/config/security/selinux.h) \
+  include/linux/aio.h \
+  include/linux/aio_abi.h \
+  include/net/iw_handler.h \
+  include/linux/kthread.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/oid.h \
+    $(wildcard include/config/status.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_chip.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt2860.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/mac_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_type.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_mac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rtmp_phy.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_iface.h \
+    $(wildcard include/config/.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/iface/rtmp_pci.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt35xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chip/rt30xx.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_timer.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/mlme.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_dot11.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_md5.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_sha2.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_hmac.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rt_config.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_aes.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/crypt_arc4.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_cmd.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp.h \
+    $(wildcard include/config/ap/support.h) \
+    $(wildcard include/config/opmode/on/ap.h) \
+    $(wildcard include/config/opmode/on/sta.h) \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/link_list.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum_def.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa_cmm.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dot11i_wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/ap.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/wpa.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/dfs.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/chlist.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/spectrum.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/eeprom.h \
+  /root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/include/rtmp_mcu.h \
+
+/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/wpa.o: $(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/wpa.o)
+
+$(deps_/root/2010_01_28_RT2860_Linux_STA_v2.3.0.0_Alpha_v2/os/linux/../../sta/wpa.o):
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/assoc.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/assoc.c
new file mode 100644
index 000000000..4ab061541
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/assoc.c
@@ -0,0 +1,1784 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+	Module Name:
+	assoc.c
+
+	Abstract:
+
+	Revision History:
+	Who			When			What
+	--------	----------		----------------------------------------------
+	John		2004-9-3		porting from RT2500
+*/
+#include "rt_config.h"
+
+UCHAR	CipherWpaTemplate[] = {
+		0xdd, 					// WPA IE
+		0x16,					// Length
+		0x00, 0x50, 0xf2, 0x01,	// oui
+		0x01, 0x00,				// Version
+		0x00, 0x50, 0xf2, 0x02,	// Multicast
+		0x01, 0x00,				// Number of unicast
+		0x00, 0x50, 0xf2, 0x02,	// unicast
+		0x01, 0x00,				// number of authentication method
+		0x00, 0x50, 0xf2, 0x01	// authentication
+		};
+
+UCHAR	CipherWpa2Template[] = {
+		0x30,					// RSN IE
+		0x14,					// Length	
+		0x01, 0x00,				// Version
+		0x00, 0x0f, 0xac, 0x02,	// group cipher, TKIP
+		0x01, 0x00,				// number of pairwise
+		0x00, 0x0f, 0xac, 0x02,	// unicast
+		0x01, 0x00,				// number of authentication method
+		0x00, 0x0f, 0xac, 0x02,	// authentication
+		0x00, 0x00,				// RSN capability
+		};
+
+/*  
+	==========================================================================
+	Description: 
+		association state machine init, including state transition and timer init
+	Parameters: 
+		S - pointer to the association state machine
+
+	IRQL = PASSIVE_LEVEL
+	
+	==========================================================================
+ */
+VOID AssocStateMachineInit(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN  STATE_MACHINE *S, 
+	OUT STATE_MACHINE_FUNC Trans[]) 
+{
+	StateMachineInit(S, Trans, MAX_ASSOC_STATE, MAX_ASSOC_MSG, (STATE_MACHINE_FUNC)Drop, ASSOC_IDLE, ASSOC_MACHINE_BASE);
+
+	// first column
+	StateMachineSetAction(S, ASSOC_IDLE, MT2_MLME_ASSOC_REQ, (STATE_MACHINE_FUNC)MlmeAssocReqAction);
+	StateMachineSetAction(S, ASSOC_IDLE, MT2_MLME_REASSOC_REQ, (STATE_MACHINE_FUNC)MlmeReassocReqAction);
+	StateMachineSetAction(S, ASSOC_IDLE, MT2_MLME_DISASSOC_REQ, (STATE_MACHINE_FUNC)MlmeDisassocReqAction);
+	StateMachineSetAction(S, ASSOC_IDLE, MT2_PEER_DISASSOC_REQ, (STATE_MACHINE_FUNC)PeerDisassocAction);
+
+	// second column
+	StateMachineSetAction(S, ASSOC_WAIT_RSP, MT2_MLME_ASSOC_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenAssoc);
+	StateMachineSetAction(S, ASSOC_WAIT_RSP, MT2_MLME_REASSOC_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenReassoc);
+	StateMachineSetAction(S, ASSOC_WAIT_RSP, MT2_MLME_DISASSOC_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenDisassociate);
+	StateMachineSetAction(S, ASSOC_WAIT_RSP, MT2_PEER_DISASSOC_REQ, (STATE_MACHINE_FUNC)PeerDisassocAction);
+	StateMachineSetAction(S, ASSOC_WAIT_RSP, MT2_PEER_ASSOC_RSP, (STATE_MACHINE_FUNC)PeerAssocRspAction);
+	//
+	// Patch 3Com AP MOde:3CRWE454G72
+	// We send Assoc request frame to this AP, it always send Reassoc Rsp not Associate Rsp.
+	//
+	StateMachineSetAction(S, ASSOC_WAIT_RSP, MT2_PEER_REASSOC_RSP, (STATE_MACHINE_FUNC)PeerAssocRspAction);
+	StateMachineSetAction(S, ASSOC_WAIT_RSP, MT2_ASSOC_TIMEOUT, (STATE_MACHINE_FUNC)AssocTimeoutAction);
+
+	// third column
+	StateMachineSetAction(S, REASSOC_WAIT_RSP, MT2_MLME_ASSOC_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenAssoc);
+	StateMachineSetAction(S, REASSOC_WAIT_RSP, MT2_MLME_REASSOC_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenReassoc);
+	StateMachineSetAction(S, REASSOC_WAIT_RSP, MT2_MLME_DISASSOC_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenDisassociate);
+	StateMachineSetAction(S, REASSOC_WAIT_RSP, MT2_PEER_DISASSOC_REQ, (STATE_MACHINE_FUNC)PeerDisassocAction);
+	StateMachineSetAction(S, REASSOC_WAIT_RSP, MT2_PEER_REASSOC_RSP, (STATE_MACHINE_FUNC)PeerReassocRspAction);
+	//
+	// Patch, AP doesn't send Reassociate Rsp frame to Station.
+	//
+	StateMachineSetAction(S, REASSOC_WAIT_RSP, MT2_PEER_ASSOC_RSP, (STATE_MACHINE_FUNC)PeerReassocRspAction);	
+	StateMachineSetAction(S, REASSOC_WAIT_RSP, MT2_REASSOC_TIMEOUT, (STATE_MACHINE_FUNC)ReassocTimeoutAction);
+
+	// fourth column
+	StateMachineSetAction(S, DISASSOC_WAIT_RSP, MT2_MLME_ASSOC_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenAssoc);
+	StateMachineSetAction(S, DISASSOC_WAIT_RSP, MT2_MLME_REASSOC_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenReassoc);
+	StateMachineSetAction(S, DISASSOC_WAIT_RSP, MT2_MLME_DISASSOC_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenDisassociate);
+	StateMachineSetAction(S, DISASSOC_WAIT_RSP, MT2_PEER_DISASSOC_REQ, (STATE_MACHINE_FUNC)PeerDisassocAction);
+	StateMachineSetAction(S, DISASSOC_WAIT_RSP, MT2_DISASSOC_TIMEOUT, (STATE_MACHINE_FUNC)DisassocTimeoutAction);
+
+	// initialize the timer
+	RTMPInitTimer(pAd, &pAd->MlmeAux.AssocTimer, GET_TIMER_FUNCTION(AssocTimeout), pAd, FALSE);
+	RTMPInitTimer(pAd, &pAd->MlmeAux.ReassocTimer, GET_TIMER_FUNCTION(ReassocTimeout), pAd, FALSE);
+	RTMPInitTimer(pAd, &pAd->MlmeAux.DisassocTimer, GET_TIMER_FUNCTION(DisassocTimeout), pAd, FALSE);
+}
+
+/*
+	==========================================================================
+	Description:
+		Association timeout procedure. After association timeout, this function 
+		will be called and it will put a message into the MLME queue
+	Parameters:
+		Standard timer parameters
+
+	IRQL = DISPATCH_LEVEL
+
+	==========================================================================
+ */
+VOID AssocTimeout(IN PVOID SystemSpecific1, 
+				 IN PVOID FunctionContext, 
+				 IN PVOID SystemSpecific2, 
+				 IN PVOID SystemSpecific3) 
+{
+	RTMP_ADAPTER *pAd = (RTMP_ADAPTER *)FunctionContext;
+	
+	// Do nothing if the driver is starting halt state.
+	// This might happen when timer already been fired before cancel timer with mlmehalt
+	if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_HALT_IN_PROGRESS | fRTMP_ADAPTER_NIC_NOT_EXIST))
+		return;
+	
+	MlmeEnqueue(pAd, ASSOC_STATE_MACHINE, MT2_ASSOC_TIMEOUT, 0, NULL, 0);
+	RTMP_MLME_HANDLER(pAd);
+}
+
+/*
+	==========================================================================
+	Description:
+		Reassociation timeout procedure. After reassociation timeout, this 
+		function will be called and put a message into the MLME queue
+	Parameters:
+		Standard timer parameters
+
+	IRQL = DISPATCH_LEVEL
+
+	==========================================================================
+ */
+VOID ReassocTimeout(IN PVOID SystemSpecific1, 
+					IN PVOID FunctionContext, 
+					IN PVOID SystemSpecific2, 
+					IN PVOID SystemSpecific3) 
+{
+	RTMP_ADAPTER *pAd = (RTMP_ADAPTER *)FunctionContext;
+	
+	// Do nothing if the driver is starting halt state.
+	// This might happen when timer already been fired before cancel timer with mlmehalt
+	if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_HALT_IN_PROGRESS | fRTMP_ADAPTER_NIC_NOT_EXIST))
+		return;
+	
+	MlmeEnqueue(pAd, ASSOC_STATE_MACHINE, MT2_REASSOC_TIMEOUT, 0, NULL, 0);
+	RTMP_MLME_HANDLER(pAd);
+}
+
+/*
+	==========================================================================
+	Description:
+		Disassociation timeout procedure. After disassociation timeout, this 
+		function will be called and put a message into the MLME queue
+	Parameters:
+		Standard timer parameters
+
+	IRQL = DISPATCH_LEVEL
+
+	==========================================================================
+ */
+VOID DisassocTimeout(IN PVOID SystemSpecific1, 
+					IN PVOID FunctionContext, 
+					IN PVOID SystemSpecific2, 
+					IN PVOID SystemSpecific3) 
+{
+	RTMP_ADAPTER *pAd = (RTMP_ADAPTER *)FunctionContext;
+	
+	// Do nothing if the driver is starting halt state.
+	// This might happen when timer already been fired before cancel timer with mlmehalt
+	if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_HALT_IN_PROGRESS | fRTMP_ADAPTER_NIC_NOT_EXIST))
+		return;
+	
+	MlmeEnqueue(pAd, ASSOC_STATE_MACHINE, MT2_DISASSOC_TIMEOUT, 0, NULL, 0);
+	RTMP_MLME_HANDLER(pAd);
+}
+
+/*
+	==========================================================================
+	Description:
+		mlme assoc req handling procedure
+	Parameters:
+		Adapter - Adapter pointer
+		Elem - MLME Queue Element
+	Pre:
+		the station has been authenticated and the following information is stored in the config
+			-# SSID
+			-# supported rates and their length
+			-# listen interval (Adapter->StaCfg.default_listen_count)
+			-# Transmit power  (Adapter->StaCfg.tx_power)
+	Post  :
+		-# An association request frame is generated and sent to the air
+		-# Association timer starts
+		-# Association state -> ASSOC_WAIT_RSP
+
+	IRQL = DISPATCH_LEVEL
+
+	==========================================================================
+ */
+VOID MlmeAssocReqAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+	UCHAR			ApAddr[6];
+	HEADER_802_11	AssocHdr;
+	UCHAR			WmeIe[9] = {IE_VENDOR_SPECIFIC, 0x07, 0x00, 0x50, 0xf2, 0x02, 0x00, 0x01, 0x00};
+	USHORT			ListenIntv;
+	ULONG			Timeout;
+	USHORT			CapabilityInfo;
+	BOOLEAN			TimerCancelled;
+	PUCHAR			pOutBuffer = NULL;
+	NDIS_STATUS		NStatus;
+	ULONG			FrameLen = 0;
+	ULONG			tmp;
+	USHORT			VarIesOffset = 0;
+	USHORT			Status;
+
+	// Block all authentication request durning WPA block period
+	if (pAd->StaCfg.bBlockAssoc == TRUE)
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("ASSOC - Block Assoc request durning WPA block period!\n"));
+		pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE;
+		Status = MLME_STATE_MACHINE_REJECT;
+		MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_ASSOC_CONF, 2, &Status, 0);
+	}	
+	// check sanity first
+	else if (MlmeAssocReqSanity(pAd, Elem->Msg, Elem->MsgLen, ApAddr, &CapabilityInfo, &Timeout, &ListenIntv)) 
+	{
+		RTMPCancelTimer(&pAd->MlmeAux.AssocTimer, &TimerCancelled);
+		COPY_MAC_ADDR(pAd->MlmeAux.Bssid, ApAddr);
+
+		// Get an unused nonpaged memory
+		NStatus = MlmeAllocateMemory(pAd, &pOutBuffer);  
+		if (NStatus != NDIS_STATUS_SUCCESS) 
+		{
+			DBGPRINT(RT_DEBUG_TRACE,("ASSOC - MlmeAssocReqAction() allocate memory failed \n"));
+			pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE;
+			Status = MLME_FAIL_NO_RESOURCE;
+			MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_ASSOC_CONF, 2, &Status, 0);
+			return;
+		}
+
+		// Add by James 03/06/27
+		pAd->StaCfg.AssocInfo.Length = sizeof(NDIS_802_11_ASSOCIATION_INFORMATION); 
+		// Association don't need to report MAC address
+		pAd->StaCfg.AssocInfo.AvailableRequestFixedIEs =
+			NDIS_802_11_AI_REQFI_CAPABILITIES | NDIS_802_11_AI_REQFI_LISTENINTERVAL;
+		pAd->StaCfg.AssocInfo.RequestFixedIEs.Capabilities = CapabilityInfo;
+		pAd->StaCfg.AssocInfo.RequestFixedIEs.ListenInterval = ListenIntv;		
+		// Only reassociate need this
+		//COPY_MAC_ADDR(pAd->StaCfg.AssocInfo.RequestFixedIEs.CurrentAPAddress, ApAddr);
+		pAd->StaCfg.AssocInfo.OffsetRequestIEs = sizeof(NDIS_802_11_ASSOCIATION_INFORMATION);
+		
+        NdisZeroMemory(pAd->StaCfg.ReqVarIEs, MAX_VIE_LEN);
+		// First add SSID
+		VarIesOffset = 0;
+		NdisMoveMemory(pAd->StaCfg.ReqVarIEs + VarIesOffset, &SsidIe, 1);
+		VarIesOffset += 1;
+		NdisMoveMemory(pAd->StaCfg.ReqVarIEs + VarIesOffset, &pAd->MlmeAux.SsidLen, 1);
+		VarIesOffset += 1;
+		NdisMoveMemory(pAd->StaCfg.ReqVarIEs + VarIesOffset, pAd->MlmeAux.Ssid, pAd->MlmeAux.SsidLen);
+		VarIesOffset += pAd->MlmeAux.SsidLen;
+
+		// Second add Supported rates
+		NdisMoveMemory(pAd->StaCfg.ReqVarIEs + VarIesOffset, &SupRateIe, 1);
+		VarIesOffset += 1;
+		NdisMoveMemory(pAd->StaCfg.ReqVarIEs + VarIesOffset, &pAd->MlmeAux.SupRateLen, 1);
+		VarIesOffset += 1;
+		NdisMoveMemory(pAd->StaCfg.ReqVarIEs + VarIesOffset, pAd->MlmeAux.SupRate, pAd->MlmeAux.SupRateLen);
+		VarIesOffset += pAd->MlmeAux.SupRateLen;
+		// End Add by James
+
+		DBGPRINT(RT_DEBUG_TRACE, ("ASSOC - Send ASSOC request...\n"));
+		MgtMacHeaderInit(pAd, &AssocHdr, SUBTYPE_ASSOC_REQ, 0, ApAddr, ApAddr);
+		
+		// Build basic frame first
+		MakeOutgoingFrame(pOutBuffer,				&FrameLen,
+						  sizeof(HEADER_802_11),	&AssocHdr,
+						  2,						&CapabilityInfo,
+						  2,						&ListenIntv,
+						  1,						&SsidIe,
+						  1,						&pAd->MlmeAux.SsidLen, 
+						  pAd->MlmeAux.SsidLen, 	pAd->MlmeAux.Ssid,
+						  1,						&SupRateIe,
+						  1,						&pAd->MlmeAux.SupRateLen,
+						  pAd->MlmeAux.SupRateLen,  pAd->MlmeAux.SupRate,
+						  END_OF_ARGS);
+
+		if (pAd->MlmeAux.ExtRateLen != 0)
+		{
+			MakeOutgoingFrame(pOutBuffer + FrameLen,    &tmp,
+							  1,                        &ExtRateIe,
+							  1,                        &pAd->MlmeAux.ExtRateLen,
+							  pAd->MlmeAux.ExtRateLen,  pAd->MlmeAux.ExtRate,							
+							  END_OF_ARGS);
+			FrameLen += tmp;
+		}
+
+
+#ifdef DOT11_N_SUPPORT
+		// HT
+		if ((pAd->MlmeAux.HtCapabilityLen > 0) && (pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED))
+		{
+			ULONG TmpLen;
+			UCHAR HtLen;
+			UCHAR BROADCOM[4] = {0x0, 0x90, 0x4c, 0x33};
+			PHT_CAPABILITY_IE pHtCapability;
+#ifdef RT_BIG_ENDIAN
+			HT_CAPABILITY_IE HtCapabilityTmp;
+			NdisZeroMemory(&HtCapabilityTmp, sizeof(HT_CAPABILITY_IE));
+			NdisMoveMemory(&HtCapabilityTmp, &pAd->MlmeAux.HtCapability, pAd->MlmeAux.HtCapabilityLen);
+			*(USHORT *)(&HtCapabilityTmp.HtCapInfo) = SWAP16(*(USHORT *)(&HtCapabilityTmp.HtCapInfo));
+			*(USHORT *)(&HtCapabilityTmp.ExtHtCapInfo) = SWAP16(*(USHORT *)(&HtCapabilityTmp.ExtHtCapInfo));
+			pHtCapability = &HtCapabilityTmp;
+#else
+			pHtCapability = &pAd->MlmeAux.HtCapability;
+#endif
+
+			if (pAd->StaActive.SupportedPhyInfo.bPreNHt == TRUE)
+			{
+				HtLen = SIZE_HT_CAP_IE + 4;
+				MakeOutgoingFrame(pOutBuffer + FrameLen,			&TmpLen,
+									1,							&WpaIe,
+									1,							&HtLen,
+									4,							&BROADCOM[0],
+									pAd->MlmeAux.HtCapabilityLen,	pHtCapability, 
+									END_OF_ARGS);
+			}
+			else				
+			{
+				MakeOutgoingFrame(pOutBuffer + FrameLen,			&TmpLen,
+									1,							&HtCapIe,
+									1,							&pAd->MlmeAux.HtCapabilityLen,
+									pAd->MlmeAux.HtCapabilityLen,	pHtCapability, 
+									END_OF_ARGS);
+			}
+			FrameLen += TmpLen;
+		}
+#endif // DOT11_N_SUPPORT //
+
+#if defined(DOT11N_DRAFT3) || defined(DOT11V_WNM_SUPPORT)
+		// TODO: How to integrate the DRAFT3 and DOT11V_WNM_SUPPORT???
+		{
+			ULONG TmpLen;
+			EXT_CAP_INFO_ELEMENT	extCapInfo;
+			UCHAR ExtCapIe[3] = {IE_EXT_CAPABILITY, 1, 0x01};
+
+
+			NdisZeroMemory(&extCapInfo, sizeof(EXT_CAP_INFO_ELEMENT));
+#ifdef DOT11N_DRAFT3
+			if (pAd->CommonCfg.bBssCoexEnable == TRUE)
+				extCapInfo.BssCoexistMgmtSupport = 1;
+#endif // DOT11N_DRAFT3 //
+
+			NdisMoveMemory(&ExtCapIe[2], &extCapInfo, sizeof(EXT_CAP_INFO_ELEMENT));
+			MakeOutgoingFrame(pOutBuffer+FrameLen, &TmpLen,
+								sizeof(ExtCapIe), ExtCapIe,
+								END_OF_ARGS);
+			FrameLen += TmpLen;
+		}
+#endif // defined(DOT11N_DRAFT3) || defined(DOT11V_WNM_SUPPORT) //
+
+		// add Ralink proprietary IE to inform AP this STA is going to use AGGREGATION or PIGGY-BACK+AGGREGATION
+		// Case I: (Aggregation + Piggy-Back)
+		// 1. user enable aggregation, AND
+		// 2. Mac support piggy-back
+		// 3. AP annouces it's PIGGY-BACK+AGGREGATION-capable in BEACON
+		// Case II: (Aggregation)
+		// 1. user enable aggregation, AND
+		// 2. AP annouces it's AGGREGATION-capable in BEACON
+		if (pAd->CommonCfg.bAggregationCapable)
+		{
+			if ((pAd->CommonCfg.bPiggyBackCapable) && ((pAd->MlmeAux.APRalinkIe & 0x00000003) == 3))
+			{
+				ULONG TmpLen;
+				UCHAR RalinkIe[9] = {IE_VENDOR_SPECIFIC, 7, 0x00, 0x0c, 0x43, 0x03, 0x00, 0x00, 0x00}; 
+				MakeOutgoingFrame(pOutBuffer+FrameLen,           &TmpLen,
+								  9,                             RalinkIe,
+								  END_OF_ARGS);
+				FrameLen += TmpLen;
+			}
+			else if (pAd->MlmeAux.APRalinkIe & 0x00000001)
+			{
+				ULONG TmpLen;
+				UCHAR RalinkIe[9] = {IE_VENDOR_SPECIFIC, 7, 0x00, 0x0c, 0x43, 0x01, 0x00, 0x00, 0x00}; 
+				MakeOutgoingFrame(pOutBuffer+FrameLen,           &TmpLen,
+								  9,                             RalinkIe,
+								  END_OF_ARGS);
+				FrameLen += TmpLen;
+			}
+		}
+		else
+		{
+			ULONG TmpLen;
+			UCHAR RalinkIe[9] = {IE_VENDOR_SPECIFIC, 7, 0x00, 0x0c, 0x43, 0x06, 0x00, 0x00, 0x00}; 
+			MakeOutgoingFrame(pOutBuffer+FrameLen,		 &TmpLen,
+							  9,						 RalinkIe,
+							  END_OF_ARGS);
+			FrameLen += TmpLen;
+		}
+
+		if (pAd->MlmeAux.APEdcaParm.bValid)
+		{
+			if (pAd->CommonCfg.bAPSDCapable && pAd->MlmeAux.APEdcaParm.bAPSDCapable)
+			{
+				QBSS_STA_INFO_PARM QosInfo;
+
+				NdisZeroMemory(&QosInfo, sizeof(QBSS_STA_INFO_PARM));
+				QosInfo.UAPSD_AC_BE = pAd->CommonCfg.bAPSDAC_BE;
+				QosInfo.UAPSD_AC_BK = pAd->CommonCfg.bAPSDAC_BK;
+				QosInfo.UAPSD_AC_VI = pAd->CommonCfg.bAPSDAC_VI;
+				QosInfo.UAPSD_AC_VO = pAd->CommonCfg.bAPSDAC_VO;
+				QosInfo.MaxSPLength = pAd->CommonCfg.MaxSPLength;
+				WmeIe[8] |= *(PUCHAR)&QosInfo;
+			}
+			else
+			{
+                // The Parameter Set Count is set to ��0�� in the association request frames
+                // WmeIe[8] |= (pAd->MlmeAux.APEdcaParm.EdcaUpdateCount & 0x0f);
+			}
+
+			MakeOutgoingFrame(pOutBuffer + FrameLen,    &tmp,
+							  9,                        &WmeIe[0],
+							  END_OF_ARGS);
+			FrameLen += tmp;
+		}
+
+		//
+		// Let WPA(#221) Element ID on the end of this association frame.
+		// Otherwise some AP will fail on parsing Element ID and set status fail on Assoc Rsp.
+		// For example: Put Vendor Specific IE on the front of WPA IE.
+		// This happens on AP (Model No:Linksys WRK54G)
+		//		
+		if (((pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPAPSK) || 
+            (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2PSK) ||
+            (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA) || 
+            (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2)
+			)            
+            )          
+		{
+			UCHAR RSNIe = IE_WPA;
+			
+			if ((pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2PSK) ||
+                (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2))
+			{
+				RSNIe = IE_WPA2;
+			}	
+
+#ifdef WPA_SUPPLICANT_SUPPORT
+			if (pAd->StaCfg.bRSN_IE_FromWpaSupplicant == FALSE)
+#endif // WPA_SUPPLICANT_SUPPORT //
+				RTMPMakeRSNIE(pAd, pAd->StaCfg.AuthMode, pAd->StaCfg.WepStatus, BSS0);
+            
+            // Check for WPA PMK cache list
+			if (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2)
+			{
+			    INT     idx;
+                BOOLEAN FoundPMK = FALSE;
+				// Search chched PMKID, append it if existed
+				for (idx = 0; idx < PMKID_NO; idx++)
+				{
+					if (NdisEqualMemory(ApAddr, &pAd->StaCfg.SavedPMK[idx].BSSID, 6))
+					{
+						FoundPMK = TRUE;
+						break;
+					}
+				}
+
+#ifdef WPA_SUPPLICANT_SUPPORT
+				/*
+					When AuthMode is WPA2-Enterprise and AP reboot or STA lost AP,
+					AP would not do PMK cache with STA after STA re-connect to AP again.
+					In this case, driver doesn't need to send PMKID to AP and WpaSupplicant.
+				*/
+				if ((pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2) &&
+					(NdisEqualMemory(pAd->MlmeAux.Bssid, pAd->CommonCfg.LastBssid, MAC_ADDR_LEN)))
+				{
+					FoundPMK = FALSE;
+				}
+#endif // WPA_SUPPLICANT_SUPPORT //
+
+				if (FoundPMK)
+				{
+					// Set PMK number
+					*(PUSHORT) &pAd->StaCfg.RSN_IE[pAd->StaCfg.RSNIE_Len] = 1;
+					NdisMoveMemory(&pAd->StaCfg.RSN_IE[pAd->StaCfg.RSNIE_Len + 2], &pAd->StaCfg.SavedPMK[idx].PMKID, 16);
+                    pAd->StaCfg.RSNIE_Len += 18;
+				}
+			}
+
+#ifdef WPA_SUPPLICANT_SUPPORT
+#ifdef SIOCSIWGENIE
+			if ((pAd->StaCfg.WpaSupplicantUP & WPA_SUPPLICANT_ENABLE) &&
+				(pAd->StaCfg.bRSN_IE_FromWpaSupplicant == TRUE))			
+			{
+				;
+			}
+			else
+#endif
+#endif // WPA_SUPPLICANT_SUPPORT //
+			{
+				MakeOutgoingFrame(pOutBuffer + FrameLen,    		&tmp,
+				              		1,                              &RSNIe,
+		                        	1,                              &pAd->StaCfg.RSNIE_Len,
+		                        	pAd->StaCfg.RSNIE_Len,			pAd->StaCfg.RSN_IE,
+		                        	END_OF_ARGS);
+				FrameLen += tmp;
+			}
+			
+#ifdef WPA_SUPPLICANT_SUPPORT
+#ifdef SIOCSIWGENIE
+			if (((pAd->StaCfg.WpaSupplicantUP & 0x7F) != WPA_SUPPLICANT_ENABLE) ||
+				(pAd->StaCfg.bRSN_IE_FromWpaSupplicant == FALSE))
+#endif
+#endif // WPA_SUPPLICANT_SUPPORT //
+			{
+	            // Append Variable IE
+	            NdisMoveMemory(pAd->StaCfg.ReqVarIEs + VarIesOffset, &RSNIe, 1);
+	            VarIesOffset += 1;
+	            NdisMoveMemory(pAd->StaCfg.ReqVarIEs + VarIesOffset, &pAd->StaCfg.RSNIE_Len, 1);
+	            VarIesOffset += 1;
+
+				NdisMoveMemory(pAd->StaCfg.ReqVarIEs + VarIesOffset, pAd->StaCfg.RSN_IE, pAd->StaCfg.RSNIE_Len);
+				VarIesOffset += pAd->StaCfg.RSNIE_Len;
+
+				// Set Variable IEs Length
+				pAd->StaCfg.ReqVarIELen = VarIesOffset;
+			}			
+		}			
+
+#ifdef WPA_SUPPLICANT_SUPPORT
+#ifdef SIOCSIWGENIE
+		if ((pAd->StaCfg.WpaSupplicantUP & WPA_SUPPLICANT_ENABLE) &&
+			(pAd->StaCfg.bRSN_IE_FromWpaSupplicant == TRUE))			
+		{
+			ULONG 		TmpWpaAssocIeLen = 0;
+			MakeOutgoingFrame(pOutBuffer + FrameLen,    		&TmpWpaAssocIeLen,
+	                        	pAd->StaCfg.WpaAssocIeLen,		pAd->StaCfg.pWpaAssocIe,
+	                        	END_OF_ARGS);
+
+			FrameLen += TmpWpaAssocIeLen;
+
+			NdisMoveMemory(pAd->StaCfg.ReqVarIEs + VarIesOffset, pAd->StaCfg.pWpaAssocIe, pAd->StaCfg.WpaAssocIeLen);
+			VarIesOffset += pAd->StaCfg.WpaAssocIeLen;
+
+			// Set Variable IEs Length
+			pAd->StaCfg.ReqVarIELen = VarIesOffset;
+		}
+#endif
+#endif // WPA_SUPPLICANT_SUPPORT //
+
+
+		MiniportMMRequest(pAd, 0, pOutBuffer, FrameLen);
+		MlmeFreeMemory(pAd, pOutBuffer);
+
+		RTMPSetTimer(&pAd->MlmeAux.AssocTimer, Timeout);
+		pAd->Mlme.AssocMachine.CurrState = ASSOC_WAIT_RSP;
+	} 
+	else 
+	{
+		DBGPRINT(RT_DEBUG_TRACE,("ASSOC - MlmeAssocReqAction() sanity check failed. BUG!!!!!! \n"));
+		pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE;
+		Status = MLME_INVALID_FORMAT;
+		MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_ASSOC_CONF, 2, &Status, 0);
+	}
+
+}
+
+/*
+	==========================================================================
+	Description:
+		mlme reassoc req handling procedure
+	Parameters:
+		Elem - 
+	Pre:
+		-# SSID  (Adapter->StaCfg.ssid[])
+		-# BSSID (AP address, Adapter->StaCfg.bssid)
+		-# Supported rates (Adapter->StaCfg.supported_rates[])
+		-# Supported rates length (Adapter->StaCfg.supported_rates_len)
+		-# Tx power (Adapter->StaCfg.tx_power)
+
+	IRQL = DISPATCH_LEVEL
+
+	==========================================================================
+ */
+VOID MlmeReassocReqAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+	UCHAR			ApAddr[6];
+	HEADER_802_11	ReassocHdr;
+	UCHAR			WmeIe[9] = {IE_VENDOR_SPECIFIC, 0x07, 0x00, 0x50, 0xf2, 0x02, 0x00, 0x01, 0x00};
+	USHORT			CapabilityInfo, ListenIntv;
+	ULONG			Timeout;
+	ULONG			FrameLen = 0;
+	BOOLEAN			TimerCancelled;
+	NDIS_STATUS		NStatus;
+	ULONG			tmp;
+	PUCHAR			pOutBuffer = NULL;
+	USHORT			Status;
+
+	// Block all authentication request durning WPA block period
+	if (pAd->StaCfg.bBlockAssoc == TRUE)
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("ASSOC - Block ReAssoc request durning WPA block period!\n"));
+		pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE;
+		Status = MLME_STATE_MACHINE_REJECT;
+		MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_REASSOC_CONF, 2, &Status, 0);
+	}	
+	// the parameters are the same as the association
+	else if(MlmeAssocReqSanity(pAd, Elem->Msg, Elem->MsgLen, ApAddr, &CapabilityInfo, &Timeout, &ListenIntv)) 
+	{
+		RTMPCancelTimer(&pAd->MlmeAux.ReassocTimer, &TimerCancelled);
+
+		NStatus = MlmeAllocateMemory(pAd, &pOutBuffer);  //Get an unused nonpaged memory
+		if(NStatus != NDIS_STATUS_SUCCESS) 
+		{
+			DBGPRINT(RT_DEBUG_TRACE,("ASSOC - MlmeReassocReqAction() allocate memory failed \n"));
+			pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE;
+			Status = MLME_FAIL_NO_RESOURCE;
+			MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_REASSOC_CONF, 2, &Status, 0);
+			return;
+		}
+
+		COPY_MAC_ADDR(pAd->MlmeAux.Bssid, ApAddr);
+
+		// make frame, use bssid as the AP address??
+		DBGPRINT(RT_DEBUG_TRACE, ("ASSOC - Send RE-ASSOC request...\n"));
+		MgtMacHeaderInit(pAd, &ReassocHdr, SUBTYPE_REASSOC_REQ, 0, ApAddr, ApAddr);
+		MakeOutgoingFrame(pOutBuffer,               &FrameLen,
+						  sizeof(HEADER_802_11),    &ReassocHdr,
+						  2,                        &CapabilityInfo,
+						  2,                        &ListenIntv,
+						  MAC_ADDR_LEN,             ApAddr,
+						  1,                        &SsidIe,
+						  1,                        &pAd->MlmeAux.SsidLen, 
+						  pAd->MlmeAux.SsidLen,     pAd->MlmeAux.Ssid, 
+						  1,                        &SupRateIe,
+						  1,						&pAd->MlmeAux.SupRateLen,
+						  pAd->MlmeAux.SupRateLen,  pAd->MlmeAux.SupRate,
+						  END_OF_ARGS);
+
+		if (pAd->MlmeAux.ExtRateLen != 0)
+		{
+			MakeOutgoingFrame(pOutBuffer + FrameLen,        &tmp,
+							  1,                            &ExtRateIe,
+							  1,                            &pAd->MlmeAux.ExtRateLen,
+							  pAd->MlmeAux.ExtRateLen,	    pAd->MlmeAux.ExtRate,							
+							  END_OF_ARGS);
+			FrameLen += tmp;
+		}
+
+
+		if (pAd->MlmeAux.APEdcaParm.bValid)
+		{
+			if (pAd->CommonCfg.bAPSDCapable && pAd->MlmeAux.APEdcaParm.bAPSDCapable)
+			{
+				QBSS_STA_INFO_PARM QosInfo;
+
+				NdisZeroMemory(&QosInfo, sizeof(QBSS_STA_INFO_PARM));
+				QosInfo.UAPSD_AC_BE = pAd->CommonCfg.bAPSDAC_BE;
+				QosInfo.UAPSD_AC_BK = pAd->CommonCfg.bAPSDAC_BK;
+				QosInfo.UAPSD_AC_VI = pAd->CommonCfg.bAPSDAC_VI;
+				QosInfo.UAPSD_AC_VO = pAd->CommonCfg.bAPSDAC_VO;
+				QosInfo.MaxSPLength = pAd->CommonCfg.MaxSPLength;
+
+				DBGPRINT(RT_DEBUG_TRACE,
+						("uapsd> MaxSPLength = %d!\n", QosInfo.MaxSPLength));
+				WmeIe[8] |= *(PUCHAR)&QosInfo;
+			}
+
+			MakeOutgoingFrame(pOutBuffer + FrameLen,    &tmp,
+							  9,                        &WmeIe[0],
+							  END_OF_ARGS);
+			FrameLen += tmp;
+		}
+
+#ifdef DOT11_N_SUPPORT
+		// HT
+		if ((pAd->MlmeAux.HtCapabilityLen > 0) && (pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED))
+		{
+			ULONG TmpLen;
+			UCHAR HtLen;
+			UCHAR BROADCOM[4] = {0x0, 0x90, 0x4c, 0x33};
+			PHT_CAPABILITY_IE pHtCapability;
+
+#ifdef RT_BIG_ENDIAN
+			HT_CAPABILITY_IE HtCapabilityTmp;
+			NdisZeroMemory(&HtCapabilityTmp, sizeof(HT_CAPABILITY_IE));
+			NdisMoveMemory(&HtCapabilityTmp, &pAd->MlmeAux.HtCapability, pAd->MlmeAux.HtCapabilityLen);
+			*(USHORT *)(&HtCapabilityTmp.HtCapInfo) = SWAP16(*(USHORT *)(&HtCapabilityTmp.HtCapInfo));
+			*(USHORT *)(&HtCapabilityTmp.ExtHtCapInfo) = SWAP16(*(USHORT *)(&HtCapabilityTmp.ExtHtCapInfo));
+			pHtCapability = &HtCapabilityTmp;
+#else
+			pHtCapability = &pAd->MlmeAux.HtCapability;
+#endif
+
+			if (pAd->StaActive.SupportedPhyInfo.bPreNHt == TRUE)
+			{
+				HtLen = SIZE_HT_CAP_IE + 4;
+				MakeOutgoingFrame(pOutBuffer + FrameLen,			&TmpLen,
+									1,							&WpaIe,
+									1,							&HtLen,
+									4,							&BROADCOM[0],
+									pAd->MlmeAux.HtCapabilityLen,	pHtCapability, 
+									END_OF_ARGS);
+			}
+			else				
+			{
+				MakeOutgoingFrame(pOutBuffer + FrameLen,			&TmpLen,
+									1,							&HtCapIe,
+									1,							&pAd->MlmeAux.HtCapabilityLen,
+									pAd->MlmeAux.HtCapabilityLen,	pHtCapability, 
+									END_OF_ARGS);
+			}
+			FrameLen += TmpLen;
+		}
+#endif // DOT11_N_SUPPORT //
+
+
+		// add Ralink proprietary IE to inform AP this STA is going to use AGGREGATION or PIGGY-BACK+AGGREGATION
+		// Case I: (Aggregation + Piggy-Back)
+		// 1. user enable aggregation, AND
+		// 2. Mac support piggy-back
+		// 3. AP annouces it's PIGGY-BACK+AGGREGATION-capable in BEACON
+		// Case II: (Aggregation)
+		// 1. user enable aggregation, AND
+		// 2. AP annouces it's AGGREGATION-capable in BEACON
+		if (pAd->CommonCfg.bAggregationCapable)
+		{
+			if ((pAd->CommonCfg.bPiggyBackCapable) && ((pAd->MlmeAux.APRalinkIe & 0x00000003) == 3))
+			{
+				ULONG TmpLen;
+				UCHAR RalinkIe[9] = {IE_VENDOR_SPECIFIC, 7, 0x00, 0x0c, 0x43, 0x03, 0x00, 0x00, 0x00}; 
+				MakeOutgoingFrame(pOutBuffer+FrameLen,           &TmpLen,
+								  9,                             RalinkIe,
+								  END_OF_ARGS);
+				FrameLen += TmpLen;
+			}
+			else if (pAd->MlmeAux.APRalinkIe & 0x00000001)
+			{
+				ULONG TmpLen;
+				UCHAR RalinkIe[9] = {IE_VENDOR_SPECIFIC, 7, 0x00, 0x0c, 0x43, 0x01, 0x00, 0x00, 0x00}; 
+				MakeOutgoingFrame(pOutBuffer+FrameLen,           &TmpLen,
+								  9,                             RalinkIe,
+								  END_OF_ARGS);
+				FrameLen += TmpLen;
+			}
+		}
+		else
+		{
+			ULONG TmpLen;
+			UCHAR RalinkIe[9] = {IE_VENDOR_SPECIFIC, 7, 0x00, 0x0c, 0x43, 0x04, 0x00, 0x00, 0x00}; 
+			MakeOutgoingFrame(pOutBuffer+FrameLen,		 &TmpLen,
+							  9,						 RalinkIe,
+							  END_OF_ARGS);
+			FrameLen += TmpLen;
+		}
+
+		MiniportMMRequest(pAd, 0, pOutBuffer, FrameLen);
+		MlmeFreeMemory(pAd, pOutBuffer);
+
+		RTMPSetTimer(&pAd->MlmeAux.ReassocTimer, Timeout*2); /* in mSec */
+		pAd->Mlme.AssocMachine.CurrState = REASSOC_WAIT_RSP;
+	} 
+	else 
+	{
+		DBGPRINT(RT_DEBUG_TRACE,("ASSOC - MlmeReassocReqAction() sanity check failed. BUG!!!! \n"));
+		pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE;
+		Status = MLME_INVALID_FORMAT;
+		MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_REASSOC_CONF, 2, &Status, 0);
+	}
+}
+
+/*
+	==========================================================================
+	Description:
+		Upper layer issues disassoc request
+	Parameters:
+		Elem -
+
+	IRQL = PASSIVE_LEVEL
+
+	==========================================================================
+ */
+VOID MlmeDisassocReqAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+	PMLME_DISASSOC_REQ_STRUCT pDisassocReq;
+	HEADER_802_11         DisassocHdr;
+	PHEADER_802_11        pDisassocHdr;
+	PUCHAR                pOutBuffer = NULL;
+	ULONG                 FrameLen = 0;
+	NDIS_STATUS           NStatus;
+	BOOLEAN               TimerCancelled;
+	ULONG                 Timeout = 500;
+	USHORT                Status;
+
+#ifdef QOS_DLS_SUPPORT
+	// send DLS-TEAR_DOWN message, 
+	if (pAd->CommonCfg.bDLSCapable)
+	{
+		UCHAR i;
+
+		// tear down local dls table entry
+		for (i=0; i<MAX_NUM_OF_INIT_DLS_ENTRY; i++)
+		{
+			if (pAd->StaCfg.DLSEntry[i].Valid && (pAd->StaCfg.DLSEntry[i].Status == DLS_FINISH))
+			{
+				RTMPSendDLSTearDownFrame(pAd, pAd->StaCfg.DLSEntry[i].MacAddr);
+				pAd->StaCfg.DLSEntry[i].Status	= DLS_NONE;
+				pAd->StaCfg.DLSEntry[i].Valid	= FALSE;
+			}
+		}
+
+		// tear down peer dls table entry
+		for (i=MAX_NUM_OF_INIT_DLS_ENTRY; i<MAX_NUM_OF_DLS_ENTRY; i++)
+		{
+			if (pAd->StaCfg.DLSEntry[i].Valid && (pAd->StaCfg.DLSEntry[i].Status == DLS_FINISH))
+			{
+				RTMPSendDLSTearDownFrame(pAd, pAd->StaCfg.DLSEntry[i].MacAddr);
+				pAd->StaCfg.DLSEntry[i].Status = DLS_NONE;
+				pAd->StaCfg.DLSEntry[i].Valid	= FALSE;
+			}
+		}
+	}
+#endif // QOS_DLS_SUPPORT //
+
+
+	// skip sanity check
+	pDisassocReq = (PMLME_DISASSOC_REQ_STRUCT)(Elem->Msg);
+
+	NStatus = MlmeAllocateMemory(pAd, &pOutBuffer);  //Get an unused nonpaged memory
+	if (NStatus != NDIS_STATUS_SUCCESS) 
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("ASSOC - MlmeDisassocReqAction() allocate memory failed\n"));
+		pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE;
+		Status = MLME_FAIL_NO_RESOURCE;
+		MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_DISASSOC_CONF, 2, &Status, 0);
+		return;
+	}
+
+
+
+
+	RTMPCancelTimer(&pAd->MlmeAux.DisassocTimer, &TimerCancelled);
+
+	DBGPRINT(RT_DEBUG_TRACE, ("ASSOC - Send DISASSOC request[BSSID::%02x:%02x:%02x:%02x:%02x:%02x (Reason=%d)\n", 
+				pDisassocReq->Addr[0], pDisassocReq->Addr[1], pDisassocReq->Addr[2],
+				pDisassocReq->Addr[3], pDisassocReq->Addr[4], pDisassocReq->Addr[5], pDisassocReq->Reason));
+	MgtMacHeaderInit(pAd, &DisassocHdr, SUBTYPE_DISASSOC, 0, pDisassocReq->Addr, pDisassocReq->Addr);	// patch peap ttls switching issue
+	MakeOutgoingFrame(pOutBuffer,           &FrameLen, 
+					  sizeof(HEADER_802_11),&DisassocHdr, 
+					  2,                    &pDisassocReq->Reason, 
+					  END_OF_ARGS);
+	MiniportMMRequest(pAd, 0, pOutBuffer, FrameLen);
+
+	// To patch Instance and Buffalo(N) AP
+	// Driver has to send deauth to Instance AP, but Buffalo(N) needs to send disassoc to reset Authenticator's state machine
+	// Therefore, we send both of them.
+	pDisassocHdr = (PHEADER_802_11)pOutBuffer;
+	pDisassocHdr->FC.SubType = SUBTYPE_DEAUTH;
+	MiniportMMRequest(pAd, 0, pOutBuffer, FrameLen);
+	
+	MlmeFreeMemory(pAd, pOutBuffer);
+
+	pAd->StaCfg.DisassocReason = REASON_DISASSOC_STA_LEAVING;
+	COPY_MAC_ADDR(pAd->StaCfg.DisassocSta, pDisassocReq->Addr);
+
+	RTMPSetTimer(&pAd->MlmeAux.DisassocTimer, Timeout); /* in mSec */
+	pAd->Mlme.AssocMachine.CurrState = DISASSOC_WAIT_RSP;
+
+#ifdef WPA_SUPPLICANT_SUPPORT
+#ifndef NATIVE_WPA_SUPPLICANT_SUPPORT
+	if (pAd->StaCfg.WpaSupplicantUP != WPA_SUPPLICANT_DISABLE) 
+	{
+		//send disassociate event to wpa_supplicant
+		RtmpOSWrielessEventSend(pAd, IWEVCUSTOM, RT_DISASSOC_EVENT_FLAG, NULL, NULL, 0);
+	}
+#endif // NATIVE_WPA_SUPPLICANT_SUPPORT //
+#endif // WPA_SUPPLICANT_SUPPORT //
+
+#ifdef NATIVE_WPA_SUPPLICANT_SUPPORT
+	RtmpOSWrielessEventSend(pAd, SIOCGIWAP, -1, NULL, NULL, 0);
+#endif // NATIVE_WPA_SUPPLICANT_SUPPORT //        
+
+	RTMPSendWirelessEvent(pAd, IW_DISASSOC_EVENT_FLAG, NULL, BSS0, 0); 
+
+}
+
+/*
+	==========================================================================
+	Description:
+		peer sends assoc rsp back
+	Parameters:
+		Elme - MLME message containing the received frame
+
+	IRQL = DISPATCH_LEVEL
+
+	==========================================================================
+ */
+VOID PeerAssocRspAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+	USHORT        CapabilityInfo, Status, Aid;
+	UCHAR         SupRate[MAX_LEN_OF_SUPPORTED_RATES], SupRateLen;
+	UCHAR         ExtRate[MAX_LEN_OF_SUPPORTED_RATES], ExtRateLen;
+	UCHAR         Addr2[MAC_ADDR_LEN];
+	BOOLEAN       TimerCancelled;
+	UCHAR         CkipFlag;
+	EDCA_PARM     EdcaParm;
+	HT_CAPABILITY_IE		HtCapability;
+	ADD_HT_INFO_IE		AddHtInfo;	// AP might use this additional ht info IE 
+	UCHAR			HtCapabilityLen = 0;
+	UCHAR			AddHtInfoLen;
+	UCHAR			NewExtChannelOffset = 0xff;
+	EXT_CAP_INFO_ELEMENT	ExtCapInfo;
+
+
+	if (PeerAssocRspSanity(pAd, Elem->Msg, Elem->MsgLen, 
+		Addr2, &CapabilityInfo, &Status, &Aid, SupRate, &SupRateLen, 
+		ExtRate, &ExtRateLen, &HtCapability,&AddHtInfo, &HtCapabilityLen,
+		&AddHtInfoLen,&NewExtChannelOffset, &EdcaParm, 
+		&ExtCapInfo,
+		&CkipFlag)) 
+	{
+		// The frame is for me ?
+		if(MAC_ADDR_EQUAL(Addr2, pAd->MlmeAux.Bssid)) 
+		{
+			DBGPRINT(RT_DEBUG_TRACE, ("PeerAssocRspAction():ASSOC - receive ASSOC_RSP to me (status=%d)\n", Status));
+#ifdef DOT11_N_SUPPORT
+			DBGPRINT(RT_DEBUG_TRACE, ("PeerAssocRspAction():MacTable [%d].AMsduSize = %d. ClientStatusFlags = 0x%lx \n",Elem->Wcid, pAd->MacTab.Content[BSSID_WCID].AMsduSize, pAd->MacTab.Content[BSSID_WCID].ClientStatusFlags));
+#endif // DOT11_N_SUPPORT //
+			RTMPCancelTimer(&pAd->MlmeAux.AssocTimer, &TimerCancelled);
+
+
+
+			if(Status == MLME_SUCCESS) 
+			{
+				UCHAR			MaxSupportedRateIn500Kbps = 0;
+				UCHAR			idx;
+
+				// supported rates array may not be sorted. sort it and find the maximum rate
+			    for (idx=0; idx<SupRateLen; idx++)
+			    {
+			        if (MaxSupportedRateIn500Kbps < (SupRate[idx] & 0x7f)) 
+			            MaxSupportedRateIn500Kbps = SupRate[idx] & 0x7f;
+			    }
+
+				for (idx=0; idx<ExtRateLen; idx++)
+			    {
+			        if (MaxSupportedRateIn500Kbps < (ExtRate[idx] & 0x7f)) 
+			            MaxSupportedRateIn500Kbps = ExtRate[idx] & 0x7f;
+			    }
+				// go to procedure listed on page 376
+				AssocPostProc(pAd, Addr2, CapabilityInfo, Aid, SupRate, SupRateLen, ExtRate, ExtRateLen, 
+					&EdcaParm, &HtCapability, HtCapabilityLen, &AddHtInfo);
+
+				StaAddMacTableEntry(pAd, 
+									&pAd->MacTab.Content[BSSID_WCID], 
+									MaxSupportedRateIn500Kbps, 
+									&HtCapability, 
+									HtCapabilityLen,
+									&AddHtInfo,
+									AddHtInfoLen,
+									CapabilityInfo);
+			}
+			pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE;
+			MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_ASSOC_CONF, 2, &Status, 0);
+
+#ifdef LINUX
+#ifdef RT_CFG80211_SUPPORT
+{
+			PFRAME_802_11 pFrame = (PFRAME_802_11)(Elem->Msg);
+			RTEnqueueInternalCmd(pAd, CMDTHREAD_CONNECT_RESULT_INFORM,
+								&pFrame->Octet[6],
+								Elem->MsgLen - 6 - sizeof(HEADER_802_11));
+}
+#endif // RT_CFG80211_SUPPORT //
+#endif // LINUX //
+		} 
+	}
+	else
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("ASSOC - PeerAssocRspAction() sanity check fail\n"));
+	}
+}
+
+/*
+	==========================================================================
+	Description:
+		peer sends reassoc rsp
+	Parametrs:
+		Elem - MLME message cntaining the received frame
+
+	IRQL = DISPATCH_LEVEL
+
+	==========================================================================
+ */
+VOID PeerReassocRspAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+	USHORT      CapabilityInfo;
+	USHORT      Status;
+	USHORT      Aid;
+	UCHAR       SupRate[MAX_LEN_OF_SUPPORTED_RATES], SupRateLen;
+	UCHAR       ExtRate[MAX_LEN_OF_SUPPORTED_RATES], ExtRateLen;
+	UCHAR       Addr2[MAC_ADDR_LEN];
+	UCHAR       CkipFlag;
+	BOOLEAN     TimerCancelled;
+	EDCA_PARM   EdcaParm;
+	HT_CAPABILITY_IE		HtCapability;
+	ADD_HT_INFO_IE		AddHtInfo;	// AP might use this additional ht info IE 
+	UCHAR			HtCapabilityLen;
+	UCHAR			AddHtInfoLen;
+	UCHAR			NewExtChannelOffset = 0xff;
+	EXT_CAP_INFO_ELEMENT	ExtCapInfo;
+
+
+	if (PeerAssocRspSanity(pAd, Elem->Msg, Elem->MsgLen, Addr2, 
+		&CapabilityInfo, &Status, &Aid, SupRate, &SupRateLen, ExtRate, &ExtRateLen, 
+		&HtCapability,	&AddHtInfo, &HtCapabilityLen, &AddHtInfoLen,&NewExtChannelOffset, &EdcaParm, 
+		&ExtCapInfo,
+		&CkipFlag)) 
+	{
+		if(MAC_ADDR_EQUAL(Addr2, pAd->MlmeAux.Bssid)) // The frame is for me ?
+		{
+			DBGPRINT(RT_DEBUG_TRACE, ("ASSOC - receive REASSOC_RSP to me (status=%d)\n", Status));
+			RTMPCancelTimer(&pAd->MlmeAux.ReassocTimer, &TimerCancelled);
+
+			if(Status == MLME_SUCCESS) 
+			{
+				// go to procedure listed on page 376
+				AssocPostProc(pAd, Addr2, CapabilityInfo, Aid, SupRate, SupRateLen, ExtRate, ExtRateLen, 
+					 &EdcaParm, &HtCapability, HtCapabilityLen, &AddHtInfo);
+
+#ifdef WPA_SUPPLICANT_SUPPORT
+#ifndef NATIVE_WPA_SUPPLICANT_SUPPORT
+                if (pAd->StaCfg.WpaSupplicantUP != WPA_SUPPLICANT_DISABLE)
+			{
+				SendAssocIEsToWpaSupplicant(pAd);
+				RtmpOSWrielessEventSend(pAd, IWEVCUSTOM, RT_ASSOC_EVENT_FLAG, NULL, NULL, 0);
+			}
+#endif // NATIVE_WPA_SUPPLICANT_SUPPORT //
+#endif // WPA_SUPPLICANT_SUPPORT //
+
+#ifdef NATIVE_WPA_SUPPLICANT_SUPPORT
+                {
+                    wext_notify_event_assoc(pAd);
+                    RtmpOSWrielessEventSend(pAd, SIOCGIWAP, -1, &pAd->MlmeAux.Bssid[0], NULL, 0);
+                }
+#endif // NATIVE_WPA_SUPPLICANT_SUPPORT //
+
+			} 
+
+
+			// CkipFlag is no use for reassociate
+			pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE;
+			MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_REASSOC_CONF, 2, &Status, 0);
+		} 
+	}
+	else
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("ASSOC - PeerReassocRspAction() sanity check fail\n"));
+	}
+
+}
+
+/*
+	==========================================================================
+	Description:
+		procedures on IEEE 802.11/1999 p.376 
+	Parametrs:
+
+	IRQL = DISPATCH_LEVEL
+
+	==========================================================================
+ */
+VOID AssocPostProc(
+	IN PRTMP_ADAPTER pAd, 
+	IN PUCHAR pAddr2, 
+	IN USHORT CapabilityInfo, 
+	IN USHORT Aid, 
+	IN UCHAR SupRate[], 
+	IN UCHAR SupRateLen,
+	IN UCHAR ExtRate[],
+	IN UCHAR ExtRateLen,
+	IN PEDCA_PARM pEdcaParm,
+	IN HT_CAPABILITY_IE		*pHtCapability,
+	IN UCHAR HtCapabilityLen, 
+	IN ADD_HT_INFO_IE		*pAddHtInfo)	// AP might use this additional ht info IE 
+{
+	ULONG Idx;
+
+	pAd->MlmeAux.BssType = BSS_INFRA;
+	COPY_MAC_ADDR(pAd->MlmeAux.Bssid, pAddr2);
+	pAd->MlmeAux.Aid = Aid;
+	pAd->MlmeAux.CapabilityInfo = CapabilityInfo & SUPPORTED_CAPABILITY_INFO;
+	
+#ifdef DOT11_N_SUPPORT
+	// Some HT AP might lost WMM IE. We add WMM ourselves. beacuase HT requires QoS on.
+	if ((HtCapabilityLen > 0) && (pEdcaParm->bValid == FALSE))
+	{
+		pEdcaParm->bValid = TRUE;
+		pEdcaParm->Aifsn[0] = 3;
+		pEdcaParm->Aifsn[1] = 7;
+		pEdcaParm->Aifsn[2] = 2;
+		pEdcaParm->Aifsn[3] = 2;
+
+		pEdcaParm->Cwmin[0] = 4;
+		pEdcaParm->Cwmin[1] = 4;
+		pEdcaParm->Cwmin[2] = 3;
+		pEdcaParm->Cwmin[3] = 2;
+
+		pEdcaParm->Cwmax[0] = 10;
+		pEdcaParm->Cwmax[1] = 10;
+		pEdcaParm->Cwmax[2] = 4;
+		pEdcaParm->Cwmax[3] = 3;
+
+		pEdcaParm->Txop[0]  = 0;
+		pEdcaParm->Txop[1]  = 0;
+		pEdcaParm->Txop[2]  = 96;
+		pEdcaParm->Txop[3]  = 48;
+
+	}
+#endif // DOT11_N_SUPPORT //
+
+	NdisMoveMemory(&pAd->MlmeAux.APEdcaParm, pEdcaParm, sizeof(EDCA_PARM));
+
+	// filter out un-supported rates
+	pAd->MlmeAux.SupRateLen = SupRateLen;
+	NdisMoveMemory(pAd->MlmeAux.SupRate, SupRate, SupRateLen);
+	RTMPCheckRates(pAd, pAd->MlmeAux.SupRate, &pAd->MlmeAux.SupRateLen);
+
+	// filter out un-supported rates
+	pAd->MlmeAux.ExtRateLen = ExtRateLen;
+	NdisMoveMemory(pAd->MlmeAux.ExtRate, ExtRate, ExtRateLen);
+	RTMPCheckRates(pAd, pAd->MlmeAux.ExtRate, &pAd->MlmeAux.ExtRateLen);
+
+#ifdef DOT11_N_SUPPORT
+	if (HtCapabilityLen > 0)
+	{
+		RTMPCheckHt(pAd, BSSID_WCID, pHtCapability, pAddHtInfo);
+	}
+	DBGPRINT(RT_DEBUG_TRACE, ("AssocPostProc===>  AP.AMsduSize = %d. ClientStatusFlags = 0x%lx \n", pAd->MacTab.Content[BSSID_WCID].AMsduSize, pAd->MacTab.Content[BSSID_WCID].ClientStatusFlags));
+		
+	DBGPRINT(RT_DEBUG_TRACE, ("AssocPostProc===>    (Mmps=%d, AmsduSize=%d, )\n", 
+		pAd->MacTab.Content[BSSID_WCID].MmpsMode, pAd->MacTab.Content[BSSID_WCID].AMsduSize));
+#endif // DOT11_N_SUPPORT //
+
+	// Set New WPA information
+	Idx = BssTableSearch(&pAd->ScanTab, pAddr2, pAd->MlmeAux.Channel);
+	if (Idx == BSS_NOT_FOUND) 
+	{
+		DBGPRINT_ERR(("ASSOC - Can't find BSS after receiving Assoc response\n"));
+	}
+	else
+	{
+		// Init variable
+		pAd->MacTab.Content[BSSID_WCID].RSNIE_Len = 0;
+		NdisZeroMemory(pAd->MacTab.Content[BSSID_WCID].RSN_IE, MAX_LEN_OF_RSNIE);
+
+		// Store appropriate RSN_IE for WPA SM negotiation later
+		if ((pAd->StaCfg.AuthMode >= Ndis802_11AuthModeWPA) && (pAd->ScanTab.BssEntry[Idx].VarIELen != 0))
+		{					
+			PUCHAR              pVIE;
+			USHORT              len;
+			PEID_STRUCT         pEid;
+
+			pVIE = pAd->ScanTab.BssEntry[Idx].VarIEs;
+			len	 = pAd->ScanTab.BssEntry[Idx].VarIELen;
+
+			
+#ifdef PCIE_PS_SUPPORT
+			// Don't allow to go to sleep mode if authmode is WPA-related. 
+			//This can make Authentication process more smoothly.
+			RTMP_CLEAR_PSFLAG(pAd, fRTMP_PS_CAN_GO_SLEEP);
+#endif // PCIE_PS_SUPPORT //
+			while (len > 0)
+			{
+				pEid = (PEID_STRUCT) pVIE;	
+				// For WPA/WPAPSK
+				if ((pEid->Eid == IE_WPA) && (NdisEqualMemory(pEid->Octet, WPA_OUI, 4)) 
+					&& (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA || pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPAPSK))
+				{
+					NdisMoveMemory(pAd->MacTab.Content[BSSID_WCID].RSN_IE, pVIE, (pEid->Len + 2));
+					pAd->MacTab.Content[BSSID_WCID].RSNIE_Len = (pEid->Len + 2);							
+					DBGPRINT(RT_DEBUG_TRACE, ("AssocPostProc===> Store RSN_IE for WPA SM negotiation \n"));
+				}
+				// For WPA2/WPA2PSK
+				else if ((pEid->Eid == IE_RSN) && (NdisEqualMemory(pEid->Octet + 2, RSN_OUI, 3))
+					&& (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2 || pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2PSK))
+				{
+					NdisMoveMemory(pAd->MacTab.Content[BSSID_WCID].RSN_IE, pVIE, (pEid->Len + 2));
+					pAd->MacTab.Content[BSSID_WCID].RSNIE_Len = (pEid->Len + 2);	
+					DBGPRINT(RT_DEBUG_TRACE, ("AssocPostProc===> Store RSN_IE for WPA2 SM negotiation \n"));
+				}
+
+				pVIE += (pEid->Len + 2);
+				len  -= (pEid->Len + 2);
+			}			
+
+			
+		}
+
+		if (pAd->MacTab.Content[BSSID_WCID].RSNIE_Len == 0)
+		{			
+			DBGPRINT(RT_DEBUG_TRACE, ("AssocPostProc===> no RSN_IE \n"));			
+		}
+		else
+		{
+			hex_dump("RSN_IE", pAd->MacTab.Content[BSSID_WCID].RSN_IE, pAd->MacTab.Content[BSSID_WCID].RSNIE_Len);
+		}
+	}
+}
+
+/*
+	==========================================================================
+	Description:
+		left part of IEEE 802.11/1999 p.374 
+	Parameters:
+		Elem - MLME message containing the received frame
+
+	IRQL = DISPATCH_LEVEL
+
+	==========================================================================
+ */
+VOID PeerDisassocAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+	UCHAR         Addr2[MAC_ADDR_LEN];
+	USHORT        Reason;
+
+	DBGPRINT(RT_DEBUG_TRACE, ("ASSOC - PeerDisassocAction()\n"));
+	if(PeerDisassocSanity(pAd, Elem->Msg, Elem->MsgLen, Addr2, &Reason)) 
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("ASSOC - PeerDisassocAction() Reason = %d\n", Reason));
+		if (INFRA_ON(pAd) && MAC_ADDR_EQUAL(pAd->CommonCfg.Bssid, Addr2)) 
+		{
+
+			RTMPSendWirelessEvent(pAd, IW_DISASSOC_EVENT_FLAG, NULL, BSS0, 0); 
+			
+
+
+			/*
+				It is possible that AP sends dis-assoc frame(PeerDisassocAction) to STA 
+				after driver enqueue MT2_MLME_DISASSOC_REQ (MlmeDisassocReqAction) 
+				and set CntlMachine.CurrState = CNTL_WAIT_DISASSOC.				
+				DisassocTimer is useless because AssocMachine.CurrState will set to ASSOC_IDLE here.
+				Therefore, we need to check CntlMachine.CurrState here and enqueue MT2_DISASSOC_CONF to 
+				reset CntlMachine.CurrState to CNTL_IDLE state again.
+			*/
+			if (pAd->Mlme.CntlMachine.CurrState == CNTL_WAIT_DISASSOC)
+			{
+				USHORT  Status;
+				Status = MLME_SUCCESS;
+				MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_DISASSOC_CONF, 2, &Status, 0);
+			}
+			else
+				LinkDown(pAd, TRUE);
+			
+			pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE;
+
+#ifdef WPA_SUPPLICANT_SUPPORT
+#ifndef NATIVE_WPA_SUPPLICANT_SUPPORT
+            if (pAd->StaCfg.WpaSupplicantUP != WPA_SUPPLICANT_DISABLE) 
+			{
+				//send disassociate event to wpa_supplicant
+				RtmpOSWrielessEventSend(pAd, IWEVCUSTOM, RT_DISASSOC_EVENT_FLAG, NULL, NULL, 0);
+			} 
+#endif // NATIVE_WPA_SUPPLICANT_SUPPORT //
+#endif // WPA_SUPPLICANT_SUPPORT //
+
+#ifdef NATIVE_WPA_SUPPLICANT_SUPPORT
+			RtmpOSWrielessEventSend(pAd, SIOCGIWAP, -1, NULL, NULL, 0);
+#endif // NATIVE_WPA_SUPPLICANT_SUPPORT //
+		}
+	}
+	else
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("ASSOC - PeerDisassocAction() sanity check fail\n"));
+	}
+
+}
+
+/*
+	==========================================================================
+	Description:
+		what the state machine will do after assoc timeout
+	Parameters:
+		Elme -
+
+	IRQL = DISPATCH_LEVEL
+
+	==========================================================================
+ */
+VOID AssocTimeoutAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+	USHORT  Status;
+	DBGPRINT(RT_DEBUG_TRACE, ("ASSOC - AssocTimeoutAction\n"));
+	pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE;
+	Status = MLME_REJ_TIMEOUT;
+	MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_ASSOC_CONF, 2, &Status, 0);
+}
+
+/*
+	==========================================================================
+	Description:
+		what the state machine will do after reassoc timeout
+
+	IRQL = DISPATCH_LEVEL
+
+	==========================================================================
+ */
+VOID ReassocTimeoutAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+	USHORT  Status;
+	DBGPRINT(RT_DEBUG_TRACE, ("ASSOC - ReassocTimeoutAction\n"));
+	pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE;
+	Status = MLME_REJ_TIMEOUT;
+	MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_REASSOC_CONF, 2, &Status, 0);
+}
+
+/*
+	==========================================================================
+	Description:
+		what the state machine will do after disassoc timeout
+
+	IRQL = DISPATCH_LEVEL
+
+	==========================================================================
+ */
+VOID DisassocTimeoutAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+	USHORT  Status;
+	DBGPRINT(RT_DEBUG_TRACE, ("ASSOC - DisassocTimeoutAction\n"));
+	pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE;
+	Status = MLME_SUCCESS;
+	MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_DISASSOC_CONF, 2, &Status, 0);
+}
+
+VOID InvalidStateWhenAssoc(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+	USHORT  Status;
+	DBGPRINT(RT_DEBUG_TRACE, ("ASSOC - InvalidStateWhenAssoc(state=%ld), reset ASSOC state machine\n", 
+		pAd->Mlme.AssocMachine.CurrState));
+	pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE;
+	Status = MLME_STATE_MACHINE_REJECT;
+	MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_ASSOC_CONF, 2, &Status, 0);
+}
+
+VOID InvalidStateWhenReassoc(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+	USHORT Status;
+	DBGPRINT(RT_DEBUG_TRACE, ("ASSOC - InvalidStateWhenReassoc(state=%ld), reset ASSOC state machine\n", 
+		pAd->Mlme.AssocMachine.CurrState));
+	pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE;
+	Status = MLME_STATE_MACHINE_REJECT;
+	MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_REASSOC_CONF, 2, &Status, 0);
+}
+
+VOID InvalidStateWhenDisassociate(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+	USHORT Status;
+	DBGPRINT(RT_DEBUG_TRACE, ("ASSOC - InvalidStateWhenDisassoc(state=%ld), reset ASSOC state machine\n", 
+		pAd->Mlme.AssocMachine.CurrState));
+	pAd->Mlme.AssocMachine.CurrState = ASSOC_IDLE;
+	Status = MLME_STATE_MACHINE_REJECT;
+	MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_DISASSOC_CONF, 2, &Status, 0);
+}
+
+/*
+	==========================================================================
+	Description:
+		right part of IEEE 802.11/1999 page 374
+	Note: 
+		This event should never cause ASSOC state machine perform state
+		transition, and has no relationship with CNTL machine. So we separate
+		this routine as a service outside of ASSOC state transition table.
+
+	IRQL = DISPATCH_LEVEL
+
+	==========================================================================
+ */
+VOID Cls3errAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN PUCHAR        pAddr) 
+{
+	HEADER_802_11         DisassocHdr;
+	PHEADER_802_11        pDisassocHdr;
+	PUCHAR                pOutBuffer = NULL;
+	ULONG                 FrameLen = 0;
+	NDIS_STATUS           NStatus;
+	USHORT                Reason = REASON_CLS3ERR;
+
+	NStatus = MlmeAllocateMemory(pAd, &pOutBuffer);  //Get an unused nonpaged memory
+	if (NStatus != NDIS_STATUS_SUCCESS) 
+		return;
+
+	DBGPRINT(RT_DEBUG_TRACE, ("ASSOC - Class 3 Error, Send DISASSOC frame\n"));
+	MgtMacHeaderInit(pAd, &DisassocHdr, SUBTYPE_DISASSOC, 0, pAddr, pAd->CommonCfg.Bssid);	// patch peap ttls switching issue
+	MakeOutgoingFrame(pOutBuffer,           &FrameLen, 
+					  sizeof(HEADER_802_11),&DisassocHdr, 
+					  2,                    &Reason, 
+					  END_OF_ARGS);
+	MiniportMMRequest(pAd, 0, pOutBuffer, FrameLen);
+
+	// To patch Instance and Buffalo(N) AP
+	// Driver has to send deauth to Instance AP, but Buffalo(N) needs to send disassoc to reset Authenticator's state machine
+	// Therefore, we send both of them.
+	pDisassocHdr = (PHEADER_802_11)pOutBuffer;
+	pDisassocHdr->FC.SubType = SUBTYPE_DEAUTH;
+	MiniportMMRequest(pAd, 0, pOutBuffer, FrameLen);
+	
+	MlmeFreeMemory(pAd, pOutBuffer);
+
+	pAd->StaCfg.DisassocReason = REASON_CLS3ERR;
+	COPY_MAC_ADDR(pAd->StaCfg.DisassocSta, pAddr);
+}
+
+#ifdef WPA_SUPPLICANT_SUPPORT
+#ifndef NATIVE_WPA_SUPPLICANT_SUPPORT
+VOID    SendAssocIEsToWpaSupplicant( 
+    IN  PRTMP_ADAPTER pAd)
+{
+	STRING custom[IW_CUSTOM_MAX] = {0};
+
+	if ((pAd->StaCfg.ReqVarIELen + 17) <= IW_CUSTOM_MAX)
+	{
+		sprintf(custom, "ASSOCINFO_ReqIEs=");
+		NdisMoveMemory(custom+17, pAd->StaCfg.ReqVarIEs, pAd->StaCfg.ReqVarIELen);
+		RtmpOSWrielessEventSend(pAd, IWEVCUSTOM, RT_REQIE_EVENT_FLAG, NULL, (PUCHAR)custom, pAd->StaCfg.ReqVarIELen + 17);
+		
+		RtmpOSWrielessEventSend(pAd, IWEVCUSTOM, RT_ASSOCINFO_EVENT_FLAG, NULL, NULL, 0);
+	}
+	else
+		DBGPRINT(RT_DEBUG_TRACE, ("pAd->StaCfg.ReqVarIELen + 17 > MAX_CUSTOM_LEN\n"));
+
+	return;
+}
+#endif // NATIVE_WPA_SUPPLICANT_SUPPORT //
+#endif // WPA_SUPPLICANT_SUPPORT //
+
+#ifdef NATIVE_WPA_SUPPLICANT_SUPPORT
+int wext_notify_event_assoc(
+	IN  RTMP_ADAPTER *pAd)
+{
+	char custom[IW_CUSTOM_MAX] = {0};
+
+#if WIRELESS_EXT > 17
+	if (pAd->StaCfg.ReqVarIELen <= IW_CUSTOM_MAX)
+	{
+		NdisMoveMemory(custom, pAd->StaCfg.ReqVarIEs, pAd->StaCfg.ReqVarIELen);
+		RtmpOSWrielessEventSend(pAd, IWEVASSOCREQIE, -1, NULL, custom, pAd->StaCfg.ReqVarIELen);
+	}
+	else
+	    DBGPRINT(RT_DEBUG_TRACE, ("pAd->StaCfg.ReqVarIELen > MAX_CUSTOM_LEN\n"));
+#else
+	int len;
+
+	len = (pAd->StaCfg.ReqVarIELen*2) + 17;
+	if (len <= IW_CUSTOM_MAX)
+	{
+		UCHAR   idx;
+		sprintf(custom, "ASSOCINFO(ReqIEs=");
+		for (idx=0; idx<pAd->StaCfg.ReqVarIELen; idx++)
+		        sprintf(custom, "%s%02x", custom, pAd->StaCfg.ReqVarIEs[idx]);
+		RtmpOSWrielessEventSend(pAd, IWEVCUSTOM, -1, NULL, custom, len);
+	}
+	else
+		DBGPRINT(RT_DEBUG_TRACE, ("len(%d) > MAX_CUSTOM_LEN\n", len));
+#endif
+
+	return 0;
+	
+}
+#endif // NATIVE_WPA_SUPPLICANT_SUPPORT //
+
+
+BOOLEAN StaAddMacTableEntry(
+	IN  PRTMP_ADAPTER		pAd,
+	IN  PMAC_TABLE_ENTRY	pEntry,
+	IN  UCHAR				MaxSupportedRateIn500Kbps,
+	IN  HT_CAPABILITY_IE	*pHtCapability,
+	IN  UCHAR				HtCapabilityLen,
+	IN  ADD_HT_INFO_IE		*pAddHtInfo,
+	IN  UCHAR				AddHtInfoLen,
+	IN  USHORT        		CapabilityInfo)
+{
+	UCHAR		MaxSupportedRate = RATE_11;
+	BOOLEAN		bSupportN = FALSE;
+	
+	if (!pEntry)
+        return FALSE;
+	
+	if (ADHOC_ON(pAd))
+		CLIENT_STATUS_CLEAR_FLAG(pEntry, fCLIENT_STATUS_WMM_CAPABLE);
+
+	switch (MaxSupportedRateIn500Kbps)
+    {
+        case 108: MaxSupportedRate = RATE_54;   break;
+        case 96:  MaxSupportedRate = RATE_48;   break;
+        case 72:  MaxSupportedRate = RATE_36;   break;
+        case 48:  MaxSupportedRate = RATE_24;   break;
+        case 36:  MaxSupportedRate = RATE_18;   break;
+        case 24:  MaxSupportedRate = RATE_12;   break;
+        case 18:  MaxSupportedRate = RATE_9;    break;
+        case 12:  MaxSupportedRate = RATE_6;    break;
+        case 22:  MaxSupportedRate = RATE_11;   break;
+        case 11:  MaxSupportedRate = RATE_5_5;  break;
+        case 4:   MaxSupportedRate = RATE_2;    break;
+        case 2:   MaxSupportedRate = RATE_1;    break;
+        default:  MaxSupportedRate = RATE_11;   break;
+    }
+
+    if ((pAd->CommonCfg.PhyMode == PHY_11G) && (MaxSupportedRate < RATE_FIRST_OFDM_RATE))
+        return FALSE;
+
+#ifdef DOT11_N_SUPPORT
+	// 11n only
+	if (((pAd->CommonCfg.PhyMode == PHY_11N_2_4G) || (pAd->CommonCfg.PhyMode == PHY_11N_5G))&& (HtCapabilityLen == 0))
+		return FALSE;
+#endif // DOT11_N_SUPPORT //
+
+	NdisAcquireSpinLock(&pAd->MacTabLock);
+	if (pEntry)
+	{
+		pEntry->PortSecured = WPA_802_1X_PORT_SECURED;
+		if ((MaxSupportedRate < RATE_FIRST_OFDM_RATE) ||
+			(pAd->CommonCfg.PhyMode == PHY_11B))
+		{
+			pEntry->RateLen = 4;
+			if (MaxSupportedRate >= RATE_FIRST_OFDM_RATE)
+				MaxSupportedRate = RATE_11;
+		}
+		else
+			pEntry->RateLen = 12;
+
+		pEntry->MaxHTPhyMode.word = 0;
+		pEntry->MinHTPhyMode.word = 0;
+		pEntry->HTPhyMode.word = 0;
+		pEntry->MaxSupportedRate = MaxSupportedRate;
+		if (pEntry->MaxSupportedRate < RATE_FIRST_OFDM_RATE)
+		{
+			pEntry->MaxHTPhyMode.field.MODE = MODE_CCK;
+			pEntry->MaxHTPhyMode.field.MCS = pEntry->MaxSupportedRate;
+			pEntry->MinHTPhyMode.field.MODE = MODE_CCK;
+			pEntry->MinHTPhyMode.field.MCS = pEntry->MaxSupportedRate;
+			pEntry->HTPhyMode.field.MODE = MODE_CCK;
+			pEntry->HTPhyMode.field.MCS = pEntry->MaxSupportedRate;
+		}
+		else
+		{
+			pEntry->MaxHTPhyMode.field.MODE = MODE_OFDM;
+			pEntry->MaxHTPhyMode.field.MCS = OfdmRateToRxwiMCS[pEntry->MaxSupportedRate];
+			pEntry->MinHTPhyMode.field.MODE = MODE_OFDM;
+			pEntry->MinHTPhyMode.field.MCS = OfdmRateToRxwiMCS[pEntry->MaxSupportedRate];
+			pEntry->HTPhyMode.field.MODE = MODE_OFDM;
+			pEntry->HTPhyMode.field.MCS = OfdmRateToRxwiMCS[pEntry->MaxSupportedRate];
+		}
+		pEntry->CapabilityInfo = CapabilityInfo;
+		CLIENT_STATUS_CLEAR_FLAG(pEntry, fCLIENT_STATUS_AGGREGATION_CAPABLE);
+		CLIENT_STATUS_CLEAR_FLAG(pEntry, fCLIENT_STATUS_PIGGYBACK_CAPABLE);
+	}
+
+#ifdef DOT11_N_SUPPORT
+	NdisZeroMemory(&pEntry->HTCapability, sizeof(pEntry->HTCapability));
+	// If this Entry supports 802.11n, upgrade to HT rate. 
+	//if ((HtCapabilityLen != 0) && (pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED))
+	if ((pAd->StaCfg.BssType == BSS_INFRA) && 
+		(HtCapabilityLen != 0) && 
+		(pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED))
+		bSupportN = TRUE;
+	if ((pAd->StaCfg.BssType == BSS_ADHOC) &&
+		(pAd->StaCfg.bAdhocN == TRUE) &&
+		(HtCapabilityLen != 0) && 
+		(pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED))
+		bSupportN = TRUE;
+	if (bSupportN)
+	{
+		UCHAR	j, bitmask; //k,bitmask;
+		CHAR    i;
+
+		if (ADHOC_ON(pAd))
+			CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_WMM_CAPABLE);
+		if ((pHtCapability->HtCapInfo.GF) && (pAd->CommonCfg.DesiredHtPhy.GF))
+		{
+			pEntry->MaxHTPhyMode.field.MODE = MODE_HTGREENFIELD;
+		}
+		else
+		{	
+			pEntry->MaxHTPhyMode.field.MODE = MODE_HTMIX;
+			pAd->MacTab.fAnyStationNonGF = TRUE;
+			pAd->CommonCfg.AddHTInfo.AddHtInfo2.NonGfPresent = 1;
+		}
+
+		if ((pHtCapability->HtCapInfo.ChannelWidth) && 
+			(pAd->CommonCfg.DesiredHtPhy.ChannelWidth) &&
+			((pAd->StaCfg.BssType == BSS_INFRA) || ((pAd->StaCfg.BssType == BSS_ADHOC) && (pAddHtInfo->AddHtInfo.ExtChanOffset == pAd->CommonCfg.AddHTInfo.AddHtInfo.ExtChanOffset))))
+		{
+			pEntry->MaxHTPhyMode.field.BW= BW_40;
+			pEntry->MaxHTPhyMode.field.ShortGI = ((pAd->CommonCfg.DesiredHtPhy.ShortGIfor40)&(pHtCapability->HtCapInfo.ShortGIfor40));
+		}
+		else
+		{	
+			pEntry->MaxHTPhyMode.field.BW = BW_20;
+			pEntry->MaxHTPhyMode.field.ShortGI = ((pAd->CommonCfg.DesiredHtPhy.ShortGIfor20)&(pHtCapability->HtCapInfo.ShortGIfor20));
+			pAd->MacTab.fAnyStation20Only = TRUE;
+		}
+		
+		// 3*3
+		if (pAd->MACVersion >= RALINK_2883_VERSION && pAd->MACVersion < RALINK_3070_VERSION)
+			pEntry->MaxHTPhyMode.field.TxBF = pAd->CommonCfg.RegTransmitSetting.field.TxBF;
+
+		// find max fixed rate
+		for (i=23; i>=0; i--) // 3*3
+		{	
+			j = i/8;	
+			bitmask = (1<<(i-(j*8)));
+			if ((pAd->StaCfg.DesiredHtPhyInfo.MCSSet[j] & bitmask) && (pHtCapability->MCSSet[j] & bitmask))
+			{
+				pEntry->MaxHTPhyMode.field.MCS = i;
+				break;
+			}
+			if (i==0)
+				break;
+		}
+
+		 
+		if (pAd->StaCfg.DesiredTransmitSetting.field.MCS != MCS_AUTO)
+		{
+			if (pAd->StaCfg.DesiredTransmitSetting.field.MCS == 32)
+			{
+				// Fix MCS as HT Duplicated Mode
+				pEntry->MaxHTPhyMode.field.BW = 1;
+				pEntry->MaxHTPhyMode.field.MODE = MODE_HTMIX;
+				pEntry->MaxHTPhyMode.field.STBC = 0;
+				pEntry->MaxHTPhyMode.field.ShortGI = 0;
+				pEntry->MaxHTPhyMode.field.MCS = 32;
+			}
+			else if (pEntry->MaxHTPhyMode.field.MCS > pAd->StaCfg.HTPhyMode.field.MCS)
+			{
+				// STA supports fixed MCS 
+				pEntry->MaxHTPhyMode.field.MCS = pAd->StaCfg.HTPhyMode.field.MCS;
+			}
+		}
+
+		pEntry->MaxHTPhyMode.field.STBC = (pHtCapability->HtCapInfo.RxSTBC & (pAd->CommonCfg.DesiredHtPhy.TxSTBC));
+		pEntry->MpduDensity = pHtCapability->HtCapParm.MpduDensity;
+		pEntry->MaxRAmpduFactor = pHtCapability->HtCapParm.MaxRAmpduFactor;
+		pEntry->MmpsMode = (UCHAR)pHtCapability->HtCapInfo.MimoPs;
+		pEntry->AMsduSize = (UCHAR)pHtCapability->HtCapInfo.AMsduSize;				
+		pEntry->HTPhyMode.word = pEntry->MaxHTPhyMode.word;
+
+		if (pAd->CommonCfg.DesiredHtPhy.AmsduEnable && (pAd->CommonCfg.REGBACapability.field.AutoBA == FALSE))
+			CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_AMSDU_INUSED);
+		if (pHtCapability->HtCapInfo.ShortGIfor20)
+			CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_SGI20_CAPABLE);
+		if (pHtCapability->HtCapInfo.ShortGIfor40)
+			CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_SGI40_CAPABLE);
+		if (pHtCapability->HtCapInfo.TxSTBC)
+			CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_TxSTBC_CAPABLE);
+		if (pHtCapability->HtCapInfo.RxSTBC)
+			CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_RxSTBC_CAPABLE);
+		if (pHtCapability->ExtHtCapInfo.PlusHTC)				
+			CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_HTC_CAPABLE);
+		if (pAd->CommonCfg.bRdg && pHtCapability->ExtHtCapInfo.RDGSupport)				
+			CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_RDG_CAPABLE);	
+		if (pHtCapability->ExtHtCapInfo.MCSFeedback == 0x03)
+			CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_MCSFEEDBACK_CAPABLE);		
+		NdisMoveMemory(&pEntry->HTCapability, pHtCapability, HtCapabilityLen);
+	}
+	else
+	{
+		pAd->MacTab.fAnyStationIsLegacy = TRUE;
+	}
+#endif // DOT11_N_SUPPORT //
+
+	pEntry->HTPhyMode.word = pEntry->MaxHTPhyMode.word;
+	pEntry->CurrTxRate = pEntry->MaxSupportedRate;
+	
+	// Set asic auto fall back
+	if (pAd->StaCfg.bAutoTxRateSwitch == TRUE)
+	{
+		PUCHAR					pTable;
+		UCHAR					TableSize = 0;
+		
+		MlmeSelectTxRateTable(pAd, pEntry, &pTable, &TableSize, &pEntry->CurrTxRateIndex);
+		pEntry->bAutoTxRateSwitch = TRUE;
+	}
+	else
+	{
+		pEntry->HTPhyMode.field.MODE	= pAd->StaCfg.HTPhyMode.field.MODE;
+		pEntry->HTPhyMode.field.MCS	= pAd->StaCfg.HTPhyMode.field.MCS;
+		pEntry->bAutoTxRateSwitch = FALSE;
+		
+		// If the legacy mode is set, overwrite the transmit setting of this entry.  			
+		RTMPUpdateLegacyTxSetting((UCHAR)pAd->StaCfg.DesiredTransmitSetting.field.FixedTxMode, pEntry);
+	}
+
+	pEntry->PortSecured = WPA_802_1X_PORT_SECURED;
+	pEntry->Sst = SST_ASSOC;
+	pEntry->AuthState = AS_AUTH_OPEN;
+	pEntry->AuthMode = pAd->StaCfg.AuthMode;
+	pEntry->WepStatus = pAd->StaCfg.WepStatus;
+
+	NdisReleaseSpinLock(&pAd->MacTabLock);
+
+#ifdef WPA_SUPPLICANT_SUPPORT
+#ifndef NATIVE_WPA_SUPPLICANT_SUPPORT
+    if (pAd->StaCfg.WpaSupplicantUP)
+    {
+        union iwreq_data    wrqu;
+
+        SendAssocIEsToWpaSupplicant(pAd);
+        memset(&wrqu, 0, sizeof(wrqu));
+        wrqu.data.flags = RT_ASSOC_EVENT_FLAG;
+        wireless_send_event(pAd->net_dev, IWEVCUSTOM, &wrqu, NULL);
+    }
+#endif // NATIVE_WPA_SUPPLICANT_SUPPORT //
+#endif // WPA_SUPPLICANT_SUPPORT //                    
+
+#ifdef NATIVE_WPA_SUPPLICANT_SUPPORT
+    {
+        union iwreq_data    wrqu;
+        wext_notify_event_assoc(pAd);
+        
+        memset(wrqu.ap_addr.sa_data, 0, MAC_ADDR_LEN);
+        memcpy(wrqu.ap_addr.sa_data, pAd->MlmeAux.Bssid, MAC_ADDR_LEN);
+        wireless_send_event(pAd->net_dev, SIOCGIWAP, &wrqu, NULL);
+        
+    }
+#endif // NATIVE_WPA_SUPPLICANT_SUPPORT //
+	return TRUE;
+}
+
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/auth.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/auth.c
new file mode 100644
index 000000000..e3b063436
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/auth.c
@@ -0,0 +1,515 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+	Module Name:
+	auth.c
+
+	Abstract:
+
+	Revision History:
+	Who			When			What
+	--------	----------		----------------------------------------------
+	John		2004-9-3		porting from RT2500
+*/
+#include "rt_config.h"
+
+/*
+    ==========================================================================
+    Description:
+        authenticate state machine init, including state transition and timer init
+    Parameters:
+        Sm - pointer to the auth state machine
+    Note:
+        The state machine looks like this
+        
+                        AUTH_REQ_IDLE           AUTH_WAIT_SEQ2                   AUTH_WAIT_SEQ4
+    MT2_MLME_AUTH_REQ   mlme_auth_req_action    invalid_state_when_auth          invalid_state_when_auth
+    MT2_PEER_AUTH_EVEN  drop                    peer_auth_even_at_seq2_action    peer_auth_even_at_seq4_action
+    MT2_AUTH_TIMEOUT    Drop                    auth_timeout_action              auth_timeout_action
+        
+	IRQL = PASSIVE_LEVEL
+
+    ==========================================================================
+ */
+
+void AuthStateMachineInit(
+    IN PRTMP_ADAPTER pAd, 
+    IN STATE_MACHINE *Sm, 
+    OUT STATE_MACHINE_FUNC Trans[]) 
+{
+    StateMachineInit(Sm, Trans, MAX_AUTH_STATE, MAX_AUTH_MSG, (STATE_MACHINE_FUNC)Drop, AUTH_REQ_IDLE, AUTH_MACHINE_BASE);
+     
+    // the first column
+    StateMachineSetAction(Sm, AUTH_REQ_IDLE, MT2_MLME_AUTH_REQ, (STATE_MACHINE_FUNC)MlmeAuthReqAction);
+
+    // the second column
+    StateMachineSetAction(Sm, AUTH_WAIT_SEQ2, MT2_MLME_AUTH_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenAuth);
+    StateMachineSetAction(Sm, AUTH_WAIT_SEQ2, MT2_PEER_AUTH_EVEN, (STATE_MACHINE_FUNC)PeerAuthRspAtSeq2Action);
+    StateMachineSetAction(Sm, AUTH_WAIT_SEQ2, MT2_AUTH_TIMEOUT, (STATE_MACHINE_FUNC)AuthTimeoutAction);
+    
+    // the third column
+    StateMachineSetAction(Sm, AUTH_WAIT_SEQ4, MT2_MLME_AUTH_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenAuth);
+    StateMachineSetAction(Sm, AUTH_WAIT_SEQ4, MT2_PEER_AUTH_EVEN, (STATE_MACHINE_FUNC)PeerAuthRspAtSeq4Action);
+    StateMachineSetAction(Sm, AUTH_WAIT_SEQ4, MT2_AUTH_TIMEOUT, (STATE_MACHINE_FUNC)AuthTimeoutAction);
+    
+	RTMPInitTimer(pAd, &pAd->MlmeAux.AuthTimer, GET_TIMER_FUNCTION(AuthTimeout), pAd, FALSE);
+}
+
+/*
+    ==========================================================================
+    Description:
+        function to be executed at timer thread when auth timer expires
+        
+	IRQL = DISPATCH_LEVEL
+
+    ==========================================================================
+ */
+VOID AuthTimeout(
+    IN PVOID SystemSpecific1, 
+    IN PVOID FunctionContext, 
+    IN PVOID SystemSpecific2, 
+    IN PVOID SystemSpecific3) 
+{
+    RTMP_ADAPTER *pAd = (RTMP_ADAPTER *)FunctionContext;
+    
+    DBGPRINT(RT_DEBUG_TRACE,("AUTH - AuthTimeout\n"));
+	
+	// Do nothing if the driver is starting halt state.
+	// This might happen when timer already been fired before cancel timer with mlmehalt
+	if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_HALT_IN_PROGRESS | fRTMP_ADAPTER_NIC_NOT_EXIST))
+		return;
+	
+	// send a de-auth to reset AP's state machine (Patch AP-Dir635)
+	if (pAd->Mlme.AuthMachine.CurrState == AUTH_WAIT_SEQ2)
+		Cls2errAction(pAd, pAd->MlmeAux.Bssid);
+	
+	
+    MlmeEnqueue(pAd, AUTH_STATE_MACHINE, MT2_AUTH_TIMEOUT, 0, NULL, 0);
+    RTMP_MLME_HANDLER(pAd);
+}
+
+
+/*
+    ==========================================================================
+    Description:
+        
+	IRQL = DISPATCH_LEVEL
+
+    ==========================================================================
+ */
+VOID MlmeAuthReqAction(
+    IN PRTMP_ADAPTER pAd, 
+    IN MLME_QUEUE_ELEM *Elem) 
+{
+	if (AUTH_ReqSend(pAd, Elem, &pAd->MlmeAux.AuthTimer, "AUTH", 1, NULL, 0))
+        pAd->Mlme.AuthMachine.CurrState = AUTH_WAIT_SEQ2;
+    else 
+    {
+		USHORT Status;
+		
+        pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE;
+        Status = MLME_INVALID_FORMAT;
+        MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_AUTH_CONF, 2, &Status, 0);
+    }
+}
+
+/*
+    ==========================================================================
+    Description:
+        
+	IRQL = DISPATCH_LEVEL
+
+    ==========================================================================
+ */
+VOID PeerAuthRspAtSeq2Action(
+    IN PRTMP_ADAPTER pAd, 
+    IN MLME_QUEUE_ELEM *Elem) 
+{
+    UCHAR         Addr2[MAC_ADDR_LEN];
+    USHORT        Seq, Status, RemoteStatus, Alg;
+	UCHAR		  iv_hdr[4];
+    UCHAR         ChlgText[CIPHER_TEXT_LEN];
+    UCHAR         CyperChlgText[CIPHER_TEXT_LEN + 8 + 8];
+	ULONG		  c_len = 0;
+    HEADER_802_11 AuthHdr;
+    BOOLEAN       TimerCancelled;
+    PUCHAR        pOutBuffer = NULL;
+    NDIS_STATUS   NStatus;
+    ULONG         FrameLen = 0;
+    USHORT        Status2;
+	UCHAR		  ChallengeIe = IE_CHALLENGE_TEXT;
+	UCHAR		  len_challengeText = CIPHER_TEXT_LEN;
+
+    if (PeerAuthSanity(pAd, Elem->Msg, Elem->MsgLen, Addr2, &Alg, &Seq, &Status, (PCHAR)ChlgText)) 
+    {
+        if (MAC_ADDR_EQUAL(pAd->MlmeAux.Bssid, Addr2) && Seq == 2) 
+        {
+            DBGPRINT(RT_DEBUG_TRACE, ("AUTH - Receive AUTH_RSP seq#2 to me (Alg=%d, Status=%d)\n", Alg, Status));
+            RTMPCancelTimer(&pAd->MlmeAux.AuthTimer, &TimerCancelled);
+            
+            if (Status == MLME_SUCCESS) 
+            {
+                // Authentication Mode "LEAP" has allow for CCX 1.X
+                if (pAd->MlmeAux.Alg == Ndis802_11AuthModeOpen)
+                {
+                    pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE;
+                    MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_AUTH_CONF, 2, &Status, 0);
+                } 
+                else 
+                {
+                    // 2. shared key, need to be challenged
+                    Seq++;
+                    RemoteStatus = MLME_SUCCESS;
+					
+					// Get an unused nonpaged memory
+                    NStatus = MlmeAllocateMemory(pAd, &pOutBuffer);  
+                    if(NStatus != NDIS_STATUS_SUCCESS) 
+                    {
+                        DBGPRINT(RT_DEBUG_TRACE, ("AUTH - PeerAuthRspAtSeq2Action() allocate memory fail\n"));
+                        pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE;
+                        Status2 = MLME_FAIL_NO_RESOURCE;
+                        MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_AUTH_CONF, 2, &Status2, 0);
+                        return;
+                    }
+                    
+                    DBGPRINT(RT_DEBUG_TRACE, ("AUTH - Send AUTH request seq#3...\n"));
+                    MgtMacHeaderInit(pAd, &AuthHdr, SUBTYPE_AUTH, 0, Addr2, pAd->MlmeAux.Bssid);
+                    AuthHdr.FC.Wep = 1;
+
+					/* TSC increment */ 
+					INC_TX_TSC(pAd->SharedKey[BSS0][pAd->StaCfg.DefaultKeyId].TxTsc, LEN_WEP_TSC);
+
+					/* Construct the 4-bytes WEP IV header */
+					RTMPConstructWEPIVHdr(pAd->StaCfg.DefaultKeyId, 
+										  pAd->SharedKey[BSS0][pAd->StaCfg.DefaultKeyId].TxTsc, 
+										  iv_hdr);
+
+					Alg = cpu2le16(*(USHORT *)&Alg);
+					Seq = cpu2le16(*(USHORT *)&Seq);
+					RemoteStatus= cpu2le16(*(USHORT *)&RemoteStatus);                    				
+
+					/* Construct message text */
+					MakeOutgoingFrame(CyperChlgText,        &c_len, 
+							          2,                    &Alg, 
+							          2,                    &Seq,
+							          2,                    &RemoteStatus,  
+							          1,					&ChallengeIe, 
+							          1,					&len_challengeText,
+							          len_challengeText,	ChlgText,
+							          END_OF_ARGS);
+
+					if (RTMPSoftEncryptWEP(pAd, 
+										   iv_hdr, 
+										   &pAd->SharedKey[BSS0][pAd->StaCfg.DefaultKeyId],
+										   CyperChlgText, 
+										   c_len) == FALSE)
+					{
+						MlmeFreeMemory(pAd, pOutBuffer);
+                        pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE;
+                        Status2 = MLME_FAIL_NO_RESOURCE;
+                        MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_AUTH_CONF, 2, &Status2, 0);
+                        return;
+					}
+						
+					/* Update the total length for 4-bytes ICV */
+					c_len += LEN_ICV;
+						
+                    MakeOutgoingFrame(pOutBuffer,               &FrameLen, 
+                                      sizeof(HEADER_802_11),    &AuthHdr,  
+							          LEN_WEP_IV_HDR,			iv_hdr,								          
+							          c_len,     				CyperChlgText, 
+                                      END_OF_ARGS);
+				
+                   
+                    MiniportMMRequest(pAd, 0, pOutBuffer, FrameLen);
+                	MlmeFreeMemory(pAd, pOutBuffer);
+
+                    RTMPSetTimer(&pAd->MlmeAux.AuthTimer, AUTH_TIMEOUT);
+                    pAd->Mlme.AuthMachine.CurrState = AUTH_WAIT_SEQ4;
+                }
+            } 
+            else 
+            {
+                pAd->StaCfg.AuthFailReason = Status;
+                COPY_MAC_ADDR(pAd->StaCfg.AuthFailSta, Addr2);
+                pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE;
+                MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_AUTH_CONF, 2, &Status, 0);
+            }
+        }
+    }
+    else
+    {
+        DBGPRINT(RT_DEBUG_TRACE, ("AUTH - PeerAuthSanity() sanity check fail\n"));
+    }
+}
+
+/*
+    ==========================================================================
+    Description:
+        
+	IRQL = DISPATCH_LEVEL
+
+    ==========================================================================
+ */
+VOID PeerAuthRspAtSeq4Action(
+    IN PRTMP_ADAPTER pAd, 
+    IN MLME_QUEUE_ELEM *Elem) 
+{
+    UCHAR         Addr2[MAC_ADDR_LEN];
+    USHORT        Alg, Seq, Status;
+    CHAR          ChlgText[CIPHER_TEXT_LEN];
+    BOOLEAN       TimerCancelled;
+
+    if(PeerAuthSanity(pAd, Elem->Msg, Elem->MsgLen, Addr2, &Alg, &Seq, &Status, ChlgText)) 
+    {
+        if(MAC_ADDR_EQUAL(pAd->MlmeAux.Bssid, Addr2) && Seq == 4) 
+        {
+            DBGPRINT(RT_DEBUG_TRACE, ("AUTH - Receive AUTH_RSP seq#4 to me\n"));
+            RTMPCancelTimer(&pAd->MlmeAux.AuthTimer, &TimerCancelled);
+            
+            if (Status != MLME_SUCCESS) 
+            {
+                pAd->StaCfg.AuthFailReason = Status;
+                COPY_MAC_ADDR(pAd->StaCfg.AuthFailSta, Addr2);
+            }                
+
+            pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE;
+            MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_AUTH_CONF, 2, &Status, 0);
+        }
+    }
+    else
+    {
+        DBGPRINT(RT_DEBUG_TRACE, ("AUTH - PeerAuthRspAtSeq4Action() sanity check fail\n"));
+    }
+}
+
+/*
+    ==========================================================================
+    Description:
+        
+	IRQL = DISPATCH_LEVEL
+
+    ==========================================================================
+ */
+VOID MlmeDeauthReqAction(
+    IN PRTMP_ADAPTER pAd, 
+    IN MLME_QUEUE_ELEM *Elem) 
+{
+    MLME_DEAUTH_REQ_STRUCT *pInfo;
+    HEADER_802_11 DeauthHdr;
+    PUCHAR        pOutBuffer = NULL;
+    NDIS_STATUS   NStatus;
+    ULONG         FrameLen = 0;
+    USHORT        Status;
+
+    pInfo = (MLME_DEAUTH_REQ_STRUCT *)Elem->Msg;
+
+    NStatus = MlmeAllocateMemory(pAd, &pOutBuffer);  //Get an unused nonpaged memory
+    if (NStatus != NDIS_STATUS_SUCCESS) 
+    {
+        DBGPRINT(RT_DEBUG_TRACE, ("AUTH - MlmeDeauthReqAction() allocate memory fail\n"));
+        pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE;
+        Status = MLME_FAIL_NO_RESOURCE;
+        MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_DEAUTH_CONF, 2, &Status, 0);
+        return;
+    }
+
+
+    DBGPRINT(RT_DEBUG_TRACE, ("AUTH - Send DE-AUTH request (Reason=%d)...\n", pInfo->Reason));
+    MgtMacHeaderInit(pAd, &DeauthHdr, SUBTYPE_DEAUTH, 0, pInfo->Addr, pAd->MlmeAux.Bssid);
+    MakeOutgoingFrame(pOutBuffer,           &FrameLen, 
+                      sizeof(HEADER_802_11),&DeauthHdr, 
+                      2,                    &pInfo->Reason, 
+                      END_OF_ARGS);
+    MiniportMMRequest(pAd, 0, pOutBuffer, FrameLen);
+	MlmeFreeMemory(pAd, pOutBuffer);
+    
+    pAd->StaCfg.DeauthReason = pInfo->Reason;
+    COPY_MAC_ADDR(pAd->StaCfg.DeauthSta, pInfo->Addr);
+    pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE;
+    Status = MLME_SUCCESS;
+    MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_DEAUTH_CONF, 2, &Status, 0);
+
+	// send wireless event - for deauthentication
+		RTMPSendWirelessEvent(pAd, IW_DEAUTH_EVENT_FLAG, NULL, BSS0, 0); 
+}
+
+/*
+    ==========================================================================
+    Description:
+        
+	IRQL = DISPATCH_LEVEL
+
+    ==========================================================================
+ */
+VOID AuthTimeoutAction(
+    IN PRTMP_ADAPTER pAd, 
+    IN MLME_QUEUE_ELEM *Elem) 
+{
+    USHORT Status;
+    DBGPRINT(RT_DEBUG_TRACE, ("AUTH - AuthTimeoutAction\n"));
+    pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE;
+    Status = MLME_REJ_TIMEOUT;
+    MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_AUTH_CONF, 2, &Status, 0);
+}
+
+/*
+    ==========================================================================
+    Description:
+        
+	IRQL = DISPATCH_LEVEL
+
+    ==========================================================================
+ */
+VOID InvalidStateWhenAuth(
+    IN PRTMP_ADAPTER pAd, 
+    IN MLME_QUEUE_ELEM *Elem) 
+{
+    USHORT Status;
+    DBGPRINT(RT_DEBUG_TRACE, ("AUTH - InvalidStateWhenAuth (state=%ld), reset AUTH state machine\n", pAd->Mlme.AuthMachine.CurrState));
+    pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE;
+    Status = MLME_STATE_MACHINE_REJECT;
+    MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_AUTH_CONF, 2, &Status, 0);
+}
+
+/*
+    ==========================================================================
+    Description:
+        Some STA/AP
+    Note:
+        This action should never trigger AUTH state transition, therefore we
+        separate it from AUTH state machine, and make it as a standalone service
+        
+	IRQL = DISPATCH_LEVEL
+
+    ==========================================================================
+ */
+VOID Cls2errAction(
+    IN PRTMP_ADAPTER pAd, 
+    IN PUCHAR pAddr) 
+{
+    HEADER_802_11 DeauthHdr;
+    PUCHAR        pOutBuffer = NULL;
+    NDIS_STATUS   NStatus;
+    ULONG         FrameLen = 0;
+    USHORT        Reason = REASON_CLS2ERR;
+    
+    NStatus = MlmeAllocateMemory(pAd, &pOutBuffer);  //Get an unused nonpaged memory
+    if (NStatus != NDIS_STATUS_SUCCESS) 
+        return;
+
+    DBGPRINT(RT_DEBUG_TRACE, ("AUTH - Class 2 error, Send DEAUTH frame...\n"));
+    MgtMacHeaderInit(pAd, &DeauthHdr, SUBTYPE_DEAUTH, 0, pAddr, pAd->MlmeAux.Bssid);
+    MakeOutgoingFrame(pOutBuffer,           &FrameLen, 
+                      sizeof(HEADER_802_11),&DeauthHdr, 
+                      2,                    &Reason, 
+                      END_OF_ARGS);
+    MiniportMMRequest(pAd, 0, pOutBuffer, FrameLen);
+	MlmeFreeMemory(pAd, pOutBuffer);
+
+    pAd->StaCfg.DeauthReason = Reason;
+    COPY_MAC_ADDR(pAd->StaCfg.DeauthSta, pAddr);
+}
+
+BOOLEAN	AUTH_ReqSend(
+	IN  PRTMP_ADAPTER 		pAd,
+	IN  PMLME_QUEUE_ELEM	pElem,
+	IN  PRALINK_TIMER_STRUCT pAuthTimer,
+	IN  PSTRING				pSMName,
+	IN  USHORT				SeqNo,
+	IN  PUCHAR				pNewElement,
+	IN  ULONG				ElementLen)
+{
+	USHORT             Alg, Seq, Status;
+	UCHAR              Addr[6];
+    ULONG              Timeout;
+    HEADER_802_11      AuthHdr;
+    BOOLEAN            TimerCancelled;
+    NDIS_STATUS        NStatus;
+    PUCHAR             pOutBuffer = NULL;
+    ULONG              FrameLen = 0, tmp = 0;
+	
+	// Block all authentication request durning WPA block period
+	if (pAd->StaCfg.bBlockAssoc == TRUE)
+	{
+        DBGPRINT(RT_DEBUG_TRACE, ("%s - Block Auth request durning WPA block period!\n", pSMName));
+        pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE;
+        Status = MLME_STATE_MACHINE_REJECT;
+        MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_AUTH_CONF, 2, &Status, 0);
+	}	
+    else if(MlmeAuthReqSanity(pAd, pElem->Msg, pElem->MsgLen, Addr, &Timeout, &Alg)) 
+    {
+    	/* reset timer */
+		RTMPCancelTimer(pAuthTimer, &TimerCancelled);
+		
+        COPY_MAC_ADDR(pAd->MlmeAux.Bssid, Addr);
+        pAd->MlmeAux.Alg  = Alg;
+        Seq = SeqNo;
+        Status = MLME_SUCCESS;
+        
+        NStatus = MlmeAllocateMemory(pAd, &pOutBuffer);  //Get an unused nonpaged memory
+        if(NStatus != NDIS_STATUS_SUCCESS) 
+        {
+            DBGPRINT(RT_DEBUG_TRACE, ("%s - MlmeAuthReqAction(Alg:%d) allocate memory failed\n", pSMName, Alg));
+            pAd->Mlme.AuthMachine.CurrState = AUTH_REQ_IDLE;
+            Status = MLME_FAIL_NO_RESOURCE;
+            MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_AUTH_CONF, 2, &Status, 0);
+            return FALSE;
+        }
+
+        DBGPRINT(RT_DEBUG_TRACE, ("%s - Send AUTH request seq#1 (Alg=%d)...\n", pSMName, Alg));
+        MgtMacHeaderInit(pAd, &AuthHdr, SUBTYPE_AUTH, 0, Addr, pAd->MlmeAux.Bssid);
+        MakeOutgoingFrame(pOutBuffer,           &FrameLen, 
+                          sizeof(HEADER_802_11),&AuthHdr, 
+                          2,                    &Alg, 
+                          2,                    &Seq, 
+                          2,                    &Status, 
+                          END_OF_ARGS);
+
+		if (pNewElement && ElementLen)
+		{
+			MakeOutgoingFrame(pOutBuffer+FrameLen,	&tmp, 
+							  ElementLen, 			pNewElement,
+                          	  END_OF_ARGS);
+			FrameLen += tmp;
+		}
+		
+        MiniportMMRequest(pAd, 0, pOutBuffer, FrameLen);
+    	MlmeFreeMemory(pAd, pOutBuffer);
+
+		RTMPSetTimer(pAuthTimer, Timeout);
+		return TRUE;
+    } 
+    else 
+    {
+        DBGPRINT_ERR(("%s - MlmeAuthReqAction() sanity check failed\n", pSMName));        
+		return FALSE;
+    }
+
+	return TRUE;
+}
+
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/auth_rsp.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/auth_rsp.c
new file mode 100644
index 000000000..70a250121
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/auth_rsp.c
@@ -0,0 +1,160 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+	Module Name:
+	auth_rsp.c
+
+	Abstract:
+
+	Revision History:
+	Who			When			What
+	--------	----------		----------------------------------------------
+	John		2004-10-1		copy from RT2560
+*/
+#include "rt_config.h"
+
+/*
+    ==========================================================================
+    Description:
+        authentication state machine init procedure
+    Parameters:
+        Sm - the state machine
+        
+	IRQL = PASSIVE_LEVEL
+
+    ==========================================================================
+ */
+VOID AuthRspStateMachineInit(
+    IN PRTMP_ADAPTER pAd, 
+    IN PSTATE_MACHINE Sm, 
+    IN STATE_MACHINE_FUNC Trans[]) 
+{
+    StateMachineInit(Sm, Trans, MAX_AUTH_RSP_STATE, MAX_AUTH_RSP_MSG, (STATE_MACHINE_FUNC)Drop, AUTH_RSP_IDLE, AUTH_RSP_MACHINE_BASE);
+
+    // column 1
+    StateMachineSetAction(Sm, AUTH_RSP_IDLE, MT2_PEER_DEAUTH, (STATE_MACHINE_FUNC)PeerDeauthAction);
+
+    // column 2
+    StateMachineSetAction(Sm, AUTH_RSP_WAIT_CHAL, MT2_PEER_DEAUTH, (STATE_MACHINE_FUNC)PeerDeauthAction);
+
+}
+
+/*
+    ==========================================================================
+    Description:
+        
+	IRQL = DISPATCH_LEVEL
+
+    ==========================================================================
+*/
+VOID PeerAuthSimpleRspGenAndSend(
+    IN PRTMP_ADAPTER pAd, 
+    IN PHEADER_802_11 pHdr80211, 
+    IN USHORT Alg, 
+    IN USHORT Seq, 
+    IN USHORT Reason, 
+    IN USHORT Status) 
+{
+    HEADER_802_11     AuthHdr;
+    ULONG             FrameLen = 0;
+    PUCHAR            pOutBuffer = NULL;
+    NDIS_STATUS       NStatus;
+
+    if (Reason != MLME_SUCCESS)
+    {
+        DBGPRINT(RT_DEBUG_TRACE, ("Peer AUTH fail...\n"));
+        return;
+    }
+    
+	//Get an unused nonpaged memory
+    NStatus = MlmeAllocateMemory(pAd, &pOutBuffer);  
+    if (NStatus != NDIS_STATUS_SUCCESS) 
+        return;
+
+    DBGPRINT(RT_DEBUG_TRACE, ("Send AUTH response (seq#2)...\n"));
+    MgtMacHeaderInit(pAd, &AuthHdr, SUBTYPE_AUTH, 0, pHdr80211->Addr2, pAd->MlmeAux.Bssid);
+    MakeOutgoingFrame(pOutBuffer,               &FrameLen, 
+                      sizeof(HEADER_802_11),    &AuthHdr, 
+                      2,                        &Alg, 
+                      2,                        &Seq, 
+                      2,                        &Reason, 
+                      END_OF_ARGS);
+    MiniportMMRequest(pAd, 0, pOutBuffer, FrameLen);
+	MlmeFreeMemory(pAd, pOutBuffer);
+}
+
+/*
+    ==========================================================================
+    Description:
+        
+	IRQL = DISPATCH_LEVEL
+
+    ==========================================================================
+*/
+VOID PeerDeauthAction(
+    IN PRTMP_ADAPTER pAd, 
+    IN PMLME_QUEUE_ELEM Elem) 
+{
+	UCHAR       Addr1[MAC_ADDR_LEN];
+    UCHAR       Addr2[MAC_ADDR_LEN];
+	UCHAR       Addr3[MAC_ADDR_LEN];
+    USHORT      Reason;
+
+    if (PeerDeauthSanity(pAd, Elem->Msg, Elem->MsgLen, Addr1, Addr2, Addr3, &Reason)) 
+    {
+        if (INFRA_ON(pAd)
+			&& (MAC_ADDR_EQUAL(Addr1, pAd->CurrentAddress) || MAC_ADDR_EQUAL(Addr1, BROADCAST_ADDR))
+			&& MAC_ADDR_EQUAL(Addr2, pAd->CommonCfg.Bssid)
+			&& MAC_ADDR_EQUAL(Addr3, pAd->CommonCfg.Bssid)
+			)
+        {
+            DBGPRINT(RT_DEBUG_TRACE,("AUTH_RSP - receive DE-AUTH from our AP (Reason=%d)\n", Reason));
+
+
+#ifdef NATIVE_WPA_SUPPLICANT_SUPPORT
+		RtmpOSWrielessEventSend(pAd, SIOCGIWAP, -1, NULL, NULL, 0);
+#endif // NATIVE_WPA_SUPPLICANT_SUPPORT //        
+            
+
+			// send wireless event - for deauthentication
+				RTMPSendWirelessEvent(pAd, IW_DEAUTH_EVENT_FLAG, NULL, BSS0, 0); 
+
+#ifdef WPA_SUPPLICANT_SUPPORT
+			if ((pAd->StaCfg.WpaSupplicantUP != WPA_SUPPLICANT_DISABLE) &&
+				(pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2) &&
+				(pAd->StaCfg.PortSecured == WPA_802_1X_PORT_SECURED))
+				pAd->StaCfg.bLostAp = TRUE;
+#endif // WPA_SUPPLICANT_SUPPORT //
+
+            LinkDown(pAd, TRUE);
+        }
+    }
+    else
+    {
+        DBGPRINT(RT_DEBUG_TRACE,("AUTH_RSP - PeerDeauthAction() sanity check fail\n"));
+    }
+}
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/connect.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/connect.c
new file mode 100644
index 000000000..595eae3f1
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/connect.c
@@ -0,0 +1,2909 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+	Module Name:
+	connect.c
+
+	Abstract:
+
+	Revision History:
+	Who			When			What
+	--------	----------		----------------------------------------------
+	John			2004-08-08			Major modification from RT2560
+*/
+#include "rt_config.h"
+
+UCHAR	CipherSuiteWpaNoneTkip[] = {
+		0x00, 0x50, 0xf2, 0x01,	// oui
+		0x01, 0x00,				// Version
+		0x00, 0x50, 0xf2, 0x02,	// Multicast
+		0x01, 0x00,				// Number of unicast
+		0x00, 0x50, 0xf2, 0x02,	// unicast
+		0x01, 0x00,				// number of authentication method
+		0x00, 0x50, 0xf2, 0x00	// authentication
+		};
+UCHAR	CipherSuiteWpaNoneTkipLen = (sizeof(CipherSuiteWpaNoneTkip) / sizeof(UCHAR));
+
+UCHAR	CipherSuiteWpaNoneAes[] = {
+		0x00, 0x50, 0xf2, 0x01,	// oui
+		0x01, 0x00,				// Version
+		0x00, 0x50, 0xf2, 0x04,	// Multicast
+		0x01, 0x00,				// Number of unicast
+		0x00, 0x50, 0xf2, 0x04,	// unicast
+		0x01, 0x00,				// number of authentication method
+		0x00, 0x50, 0xf2, 0x00	// authentication
+		};
+UCHAR	CipherSuiteWpaNoneAesLen = (sizeof(CipherSuiteWpaNoneAes) / sizeof(UCHAR));
+
+// The following MACRO is called after 1. starting an new IBSS, 2. succesfully JOIN an IBSS,
+// or 3. succesfully ASSOCIATE to a BSS, 4. successfully RE_ASSOCIATE to a BSS
+// All settings successfuly negotiated furing MLME state machines become final settings
+// and are copied to pAd->StaActive
+#define COPY_SETTINGS_FROM_MLME_AUX_TO_ACTIVE_CFG(_pAd)                                 \
+{                                                                                       \
+	NdisZeroMemory((_pAd)->CommonCfg.Ssid, MAX_LEN_OF_SSID); 							\
+	(_pAd)->CommonCfg.SsidLen = (_pAd)->MlmeAux.SsidLen;                                \
+	NdisMoveMemory((_pAd)->CommonCfg.Ssid, (_pAd)->MlmeAux.Ssid, (_pAd)->MlmeAux.SsidLen); \
+	COPY_MAC_ADDR((_pAd)->CommonCfg.Bssid, (_pAd)->MlmeAux.Bssid);                      \
+	(_pAd)->CommonCfg.Channel = (_pAd)->MlmeAux.Channel;                                \
+	(_pAd)->CommonCfg.CentralChannel = (_pAd)->MlmeAux.CentralChannel;                  \
+	(_pAd)->StaActive.Aid = (_pAd)->MlmeAux.Aid;                                        \
+	(_pAd)->StaActive.AtimWin = (_pAd)->MlmeAux.AtimWin;                                \
+	(_pAd)->StaActive.CapabilityInfo = (_pAd)->MlmeAux.CapabilityInfo;                  \
+	(_pAd)->CommonCfg.BeaconPeriod = (_pAd)->MlmeAux.BeaconPeriod;                      \
+	(_pAd)->StaActive.CfpMaxDuration = (_pAd)->MlmeAux.CfpMaxDuration;                  \
+	(_pAd)->StaActive.CfpPeriod = (_pAd)->MlmeAux.CfpPeriod;                            \
+	(_pAd)->StaActive.SupRateLen = (_pAd)->MlmeAux.SupRateLen;                          \
+	NdisMoveMemory((_pAd)->StaActive.SupRate, (_pAd)->MlmeAux.SupRate, (_pAd)->MlmeAux.SupRateLen);\
+	(_pAd)->StaActive.ExtRateLen = (_pAd)->MlmeAux.ExtRateLen;                          \
+	NdisMoveMemory((_pAd)->StaActive.ExtRate, (_pAd)->MlmeAux.ExtRate, (_pAd)->MlmeAux.ExtRateLen);\
+	NdisMoveMemory(&(_pAd)->CommonCfg.APEdcaParm, &(_pAd)->MlmeAux.APEdcaParm, sizeof(EDCA_PARM));\
+	NdisMoveMemory(&(_pAd)->CommonCfg.APQosCapability, &(_pAd)->MlmeAux.APQosCapability, sizeof(QOS_CAPABILITY_PARM));\
+	NdisMoveMemory(&(_pAd)->CommonCfg.APQbssLoad, &(_pAd)->MlmeAux.APQbssLoad, sizeof(QBSS_LOAD_PARM));\
+	COPY_MAC_ADDR((_pAd)->MacTab.Content[BSSID_WCID].Addr, (_pAd)->MlmeAux.Bssid);      \
+	(_pAd)->MacTab.Content[BSSID_WCID].Aid = (_pAd)->MlmeAux.Aid;                       \
+	(_pAd)->MacTab.Content[BSSID_WCID].PairwiseKey.CipherAlg = (_pAd)->StaCfg.PairCipher;\
+	COPY_MAC_ADDR((_pAd)->MacTab.Content[BSSID_WCID].PairwiseKey.BssId, (_pAd)->MlmeAux.Bssid);\
+	(_pAd)->MacTab.Content[BSSID_WCID].RateLen = (_pAd)->StaActive.SupRateLen + (_pAd)->StaActive.ExtRateLen;\
+}
+
+/*
+	==========================================================================
+	Description:
+
+	IRQL = PASSIVE_LEVEL
+
+	==========================================================================
+*/
+VOID MlmeCntlInit(
+	IN PRTMP_ADAPTER pAd, 
+	IN STATE_MACHINE *S, 
+	OUT STATE_MACHINE_FUNC Trans[]) 
+{
+	// Control state machine differs from other state machines, the interface 
+	// follows the standard interface
+	pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE;
+}
+
+/*
+	==========================================================================
+	Description:
+
+	IRQL = DISPATCH_LEVEL
+	
+	==========================================================================
+*/
+VOID MlmeCntlMachinePerformAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN STATE_MACHINE *S, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+	switch(pAd->Mlme.CntlMachine.CurrState) 
+	{
+		case CNTL_IDLE:
+			CntlIdleProc(pAd, Elem);
+			break;
+		case CNTL_WAIT_DISASSOC:
+			CntlWaitDisassocProc(pAd, Elem);
+			break;
+		case CNTL_WAIT_JOIN:
+			CntlWaitJoinProc(pAd, Elem);
+			break;
+
+		// CNTL_WAIT_REASSOC is the only state in CNTL machine that does
+		// not triggered directly or indirectly by "RTMPSetInformation(OID_xxx)". 
+		// Therefore not protected by NDIS's "only one outstanding OID request" 
+		// rule. Which means NDIS may SET OID in the middle of ROAMing attempts.
+		// Current approach is to block new SET request at RTMPSetInformation()
+		// when CntlMachine.CurrState is not CNTL_IDLE
+		case CNTL_WAIT_REASSOC:
+			CntlWaitReassocProc(pAd, Elem);
+			break;
+
+		case CNTL_WAIT_START:
+			CntlWaitStartProc(pAd, Elem);
+			break;
+		case CNTL_WAIT_AUTH:
+			CntlWaitAuthProc(pAd, Elem);
+			break;
+		case CNTL_WAIT_AUTH2:
+			CntlWaitAuthProc2(pAd, Elem);
+			break;
+		case CNTL_WAIT_ASSOC:
+			CntlWaitAssocProc(pAd, Elem);
+			break;
+
+		case CNTL_WAIT_OID_LIST_SCAN:
+			if(Elem->MsgType == MT2_SCAN_CONF) 
+			{
+				// Resume TxRing after SCANING complete. We hope the out-of-service time
+				// won't be too long to let upper layer time-out the waiting frames
+				RTMPResumeMsduTransmission(pAd);
+				
+				pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE;
+
+                //
+				// Set LED status to previous status.
+				//
+				if (pAd->bLedOnScanning)
+				{
+					pAd->bLedOnScanning = FALSE;
+					RTMPSetLED(pAd, pAd->LedStatus);
+				}
+#ifdef DOT11N_DRAFT3
+				// AP sent a 2040Coexistence mgmt frame, then station perform a scan, and then send back the respone.
+				if ((pAd->CommonCfg.BSSCoexist2040.field.InfoReq == 1) && 
+					INFRA_ON(pAd) && 
+					OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_SCAN_2040))
+				{
+					Update2040CoexistFrameAndNotify(pAd, BSSID_WCID, TRUE);
+				}
+#endif // DOT11N_DRAFT3 //
+			}
+			break;
+
+		case CNTL_WAIT_OID_DISASSOC:
+			if (Elem->MsgType == MT2_DISASSOC_CONF) 
+			{
+				LinkDown(pAd, FALSE);
+				pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE;
+			}
+			break;
+		default:
+			DBGPRINT_ERR(("!ERROR! CNTL - Illegal message type(=%ld)", Elem->MsgType));
+			break;
+	}
+}
+
+
+/*
+	==========================================================================
+	Description:
+
+	IRQL = DISPATCH_LEVEL
+	
+	==========================================================================
+*/
+VOID CntlIdleProc(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+	MLME_DISASSOC_REQ_STRUCT   DisassocReq;
+
+	if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_RADIO_OFF))
+		return;
+		
+	switch(Elem->MsgType) 
+	{
+		case OID_802_11_SSID:
+			CntlOidSsidProc(pAd, Elem);
+			break;
+
+		case OID_802_11_BSSID:
+			CntlOidRTBssidProc(pAd,Elem);
+			break;
+
+		case OID_802_11_BSSID_LIST_SCAN:
+			CntlOidScanProc(pAd,Elem);
+			break;
+
+		case OID_802_11_DISASSOCIATE:
+			DisassocParmFill(pAd, &DisassocReq, pAd->CommonCfg.Bssid, REASON_DISASSOC_STA_LEAVING);
+			MlmeEnqueue(pAd, ASSOC_STATE_MACHINE, MT2_MLME_DISASSOC_REQ, sizeof(MLME_DISASSOC_REQ_STRUCT), &DisassocReq, 0);
+			pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_OID_DISASSOC;
+#ifdef WPA_SUPPLICANT_SUPPORT
+            if ((pAd->StaCfg.WpaSupplicantUP & 0x7F) != WPA_SUPPLICANT_ENABLE_WITH_WEB_UI)
+#endif // WPA_SUPPLICANT_SUPPORT //
+            {
+    			// Set the AutoReconnectSsid to prevent it reconnect to old SSID
+    			// Since calling this indicate user don't want to connect to that SSID anymore.
+    			pAd->MlmeAux.AutoReconnectSsidLen= 32;
+    			NdisZeroMemory(pAd->MlmeAux.AutoReconnectSsid, pAd->MlmeAux.AutoReconnectSsidLen);
+            }
+			break;
+
+		case MT2_MLME_ROAMING_REQ:
+			CntlMlmeRoamingProc(pAd, Elem);
+			break;
+
+        case OID_802_11_MIC_FAILURE_REPORT_FRAME:
+            WpaMicFailureReportFrame(pAd, Elem);
+            break;
+
+#ifdef QOS_DLS_SUPPORT
+		case RT_OID_802_11_SET_DLS_PARAM:
+			CntlOidDLSSetupProc(pAd, Elem);
+			break;
+#endif // QOS_DLS_SUPPORT //
+
+
+		default:
+			DBGPRINT(RT_DEBUG_TRACE, ("CNTL - Illegal message in CntlIdleProc(MsgType=%ld)\n",Elem->MsgType));
+			break;
+	}
+}
+
+VOID CntlOidScanProc(
+	IN PRTMP_ADAPTER pAd,
+	IN MLME_QUEUE_ELEM *Elem)
+{
+	MLME_SCAN_REQ_STRUCT       ScanReq;
+	ULONG                      BssIdx = BSS_NOT_FOUND;
+	BSS_ENTRY                  CurrBss;
+
+#ifdef RALINK_ATE
+/* Disable scanning when ATE is running. */
+	if (ATE_ON(pAd))
+		return;
+#endif // RALINK_ATE //
+
+	
+	// record current BSS if network is connected. 
+	// 2003-2-13 do not include current IBSS if this is the only STA in this IBSS.
+	if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED))
+	{
+		BssIdx = BssSsidTableSearch(&pAd->ScanTab, pAd->CommonCfg.Bssid, (PUCHAR)pAd->CommonCfg.Ssid, pAd->CommonCfg.SsidLen, pAd->CommonCfg.Channel);
+		if (BssIdx != BSS_NOT_FOUND)
+		{
+			NdisMoveMemory(&CurrBss, &pAd->ScanTab.BssEntry[BssIdx], sizeof(BSS_ENTRY));
+		}
+	}
+
+	// clean up previous SCAN result, add current BSS back to table if any
+	BssTableInit(&pAd->ScanTab); 
+	if (BssIdx != BSS_NOT_FOUND)
+	{
+		// DDK Note: If the NIC is associated with a particular BSSID and SSID 
+		//    that are not contained in the list of BSSIDs generated by this scan, the 
+		//    BSSID description of the currently associated BSSID and SSID should be 
+		//    appended to the list of BSSIDs in the NIC's database.
+		// To ensure this, we append this BSS as the first entry in SCAN result
+		NdisMoveMemory(&pAd->ScanTab.BssEntry[0], &CurrBss, sizeof(BSS_ENTRY));
+		pAd->ScanTab.BssNr = 1;
+	}
+
+	ScanParmFill(pAd, &ScanReq, (PSTRING) Elem->Msg, Elem->MsgLen, BSS_ANY, SCAN_ACTIVE);
+	MlmeEnqueue(pAd, SYNC_STATE_MACHINE, MT2_MLME_SCAN_REQ, 
+		sizeof(MLME_SCAN_REQ_STRUCT), &ScanReq, 0);
+	pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_OID_LIST_SCAN;
+}
+
+/*
+	==========================================================================
+	Description:
+		Before calling this routine, user desired SSID should already been
+		recorded in CommonCfg.Ssid[]
+	IRQL = DISPATCH_LEVEL
+	
+	==========================================================================
+*/
+VOID CntlOidSsidProc(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM * Elem) 
+{
+	PNDIS_802_11_SSID          pOidSsid = (NDIS_802_11_SSID *)Elem->Msg;
+	MLME_DISASSOC_REQ_STRUCT   DisassocReq;
+	ULONG					   Now;
+
+
+	// Step 1. record the desired user settings to MlmeAux
+	NdisZeroMemory(pAd->MlmeAux.Ssid, MAX_LEN_OF_SSID);
+	NdisMoveMemory(pAd->MlmeAux.Ssid, pOidSsid->Ssid, pOidSsid->SsidLength);
+	pAd->MlmeAux.SsidLen = (UCHAR)pOidSsid->SsidLength;
+	if (pAd->StaCfg.BssType == BSS_INFRA)
+		NdisZeroMemory(pAd->MlmeAux.Bssid, MAC_ADDR_LEN);
+	pAd->MlmeAux.BssType = pAd->StaCfg.BssType;
+
+	pAd->StaCfg.bAutoConnectByBssid = FALSE;
+
+	//
+	// Update Reconnect Ssid, that user desired to connect.
+	//
+	NdisZeroMemory(pAd->MlmeAux.AutoReconnectSsid, MAX_LEN_OF_SSID);
+	NdisMoveMemory(pAd->MlmeAux.AutoReconnectSsid, pAd->MlmeAux.Ssid, pAd->MlmeAux.SsidLen);
+	pAd->MlmeAux.AutoReconnectSsidLen = pAd->MlmeAux.SsidLen;
+
+	// step 2. find all matching BSS in the lastest SCAN result (inBssTab) 
+	//    & log them into MlmeAux.SsidBssTab for later-on iteration. Sort by RSSI order
+	BssTableSsidSort(pAd, &pAd->MlmeAux.SsidBssTab, (PCHAR)pAd->MlmeAux.Ssid, pAd->MlmeAux.SsidLen);
+
+	DBGPRINT(RT_DEBUG_TRACE, ("CntlOidSsidProc():CNTL - %d BSS of %d BSS match the desire (%d)SSID - %s\n",
+			pAd->MlmeAux.SsidBssTab.BssNr, pAd->ScanTab.BssNr, pAd->MlmeAux.SsidLen, pAd->MlmeAux.Ssid));
+	NdisGetSystemUpTime(&Now);
+
+	if (INFRA_ON(pAd) &&
+		OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED) && 
+		(pAd->CommonCfg.SsidLen == pAd->MlmeAux.SsidBssTab.BssEntry[0].SsidLen) &&
+		NdisEqualMemory(pAd->CommonCfg.Ssid, pAd->MlmeAux.SsidBssTab.BssEntry[0].Ssid, pAd->CommonCfg.SsidLen) &&
+		MAC_ADDR_EQUAL(pAd->CommonCfg.Bssid, pAd->MlmeAux.SsidBssTab.BssEntry[0].Bssid))
+	{
+		// Case 1. already connected with an AP who has the desired SSID 
+		//         with highest RSSI
+
+		// Add checking Mode "LEAP" for CCX 1.0
+		if (((pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA) ||
+			 (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPAPSK) ||
+			 (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2) ||
+			 (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2PSK) 
+			 ) &&
+			(pAd->StaCfg.PortSecured == WPA_802_1X_PORT_NOT_SECURED))
+		{
+			// case 1.1 For WPA, WPA-PSK, if the 1x port is not secured, we have to redo 
+			//          connection process
+			DBGPRINT(RT_DEBUG_TRACE, ("CntlOidSsidProc():CNTL - disassociate with current AP...\n"));
+			DisassocParmFill(pAd, &DisassocReq, pAd->CommonCfg.Bssid, REASON_DISASSOC_STA_LEAVING);
+			MlmeEnqueue(pAd, ASSOC_STATE_MACHINE, MT2_MLME_DISASSOC_REQ, 
+						sizeof(MLME_DISASSOC_REQ_STRUCT), &DisassocReq, 0);
+			pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_DISASSOC;
+		}
+		else if (pAd->bConfigChanged == TRUE)
+		{
+			// case 1.2 Important Config has changed, we have to reconnect to the same AP
+			DBGPRINT(RT_DEBUG_TRACE, ("CntlOidSsidProc():CNTL - disassociate with current AP Because config changed...\n"));
+			DisassocParmFill(pAd, &DisassocReq, pAd->CommonCfg.Bssid, REASON_DISASSOC_STA_LEAVING);
+			MlmeEnqueue(pAd, ASSOC_STATE_MACHINE, MT2_MLME_DISASSOC_REQ, 
+						sizeof(MLME_DISASSOC_REQ_STRUCT), &DisassocReq, 0);
+			pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_DISASSOC;
+		}
+		else
+		{
+			// case 1.3. already connected to the SSID with highest RSSI.
+			DBGPRINT(RT_DEBUG_TRACE, ("CntlOidSsidProc():CNTL - already with this BSSID. ignore this SET_SSID request\n"));
+			//
+			// (HCT 12.1) 1c_wlan_mediaevents required
+			// media connect events are indicated when associating with the same AP			 
+			//
+			if (INFRA_ON(pAd))
+			{
+				//
+				// Since MediaState already is NdisMediaStateConnected
+				// We just indicate the connect event again to meet the WHQL required.
+				//
+				pAd->IndicateMediaState = NdisMediaStateConnected;				
+				RTMP_IndicateMediaState(pAd);
+                pAd->ExtraInfo = GENERAL_LINK_UP;   // Update extra information to link is up
+			}
+
+			pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE;
+#ifdef NATIVE_WPA_SUPPLICANT_SUPPORT
+			RtmpOSWrielessEventSend(pAd, SIOCGIWAP, -1, &pAd->MlmeAux.Bssid[0], NULL, 0);
+#endif // NATIVE_WPA_SUPPLICANT_SUPPORT //            
+		} 
+	} 
+	else if (INFRA_ON(pAd)) 
+	{
+		//
+		// For RT61 
+		// [88888] OID_802_11_SSID should have returned NDTEST_WEP_AP2(Returned: )
+		// RT61 may lost SSID, and not connect to NDTEST_WEP_AP2 and will connect to NDTEST_WEP_AP2 by Autoreconnect
+		// But media status is connected, so the SSID not report correctly.
+		//
+		if (!SSID_EQUAL(pAd->CommonCfg.Ssid, pAd->CommonCfg.SsidLen, pAd->MlmeAux.Ssid, pAd->MlmeAux.SsidLen))
+		{
+			//
+			// Different SSID means not Roaming case, so we let LinkDown() to Indicate a disconnect event.
+			// 
+			pAd->MlmeAux.CurrReqIsFromNdis = TRUE;
+		}
+		// case 2. active INFRA association existent
+		//    roaming is done within miniport driver, nothing to do with configuration
+		//    utility. so upon a new SET(OID_802_11_SSID) is received, we just 
+		//    disassociate with the current associated AP, 
+		//    then perform a new association with this new SSID, no matter the 
+		//    new/old SSID are the same or not.
+		DBGPRINT(RT_DEBUG_TRACE, ("CntlOidSsidProc():CNTL - disassociate with current AP...\n"));
+		DisassocParmFill(pAd, &DisassocReq, pAd->CommonCfg.Bssid, REASON_DISASSOC_STA_LEAVING);
+		MlmeEnqueue(pAd, ASSOC_STATE_MACHINE, MT2_MLME_DISASSOC_REQ, 
+					sizeof(MLME_DISASSOC_REQ_STRUCT), &DisassocReq, 0);
+		pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_DISASSOC;
+	}
+	else
+	{   
+		if (ADHOC_ON(pAd))
+		{
+			DBGPRINT(RT_DEBUG_TRACE, ("CntlOidSsidProc():CNTL - drop current ADHOC\n"));
+			LinkDown(pAd, FALSE);
+			OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED);
+			pAd->IndicateMediaState = NdisMediaStateDisconnected;
+			RTMP_IndicateMediaState(pAd);
+            pAd->ExtraInfo = GENERAL_LINK_DOWN;
+			DBGPRINT(RT_DEBUG_TRACE, ("CntlOidSsidProc():NDIS_STATUS_MEDIA_DISCONNECT Event C!\n"));
+		}
+
+		if ((pAd->MlmeAux.SsidBssTab.BssNr == 0) && 
+			(pAd->StaCfg.bAutoReconnect == TRUE) && 
+			((pAd->MlmeAux.BssType == BSS_INFRA) || ((pAd->MlmeAux.BssType == BSS_ADHOC) && !pAd->StaCfg.bNotFirstScan)) &&
+			(MlmeValidateSSID(pAd->MlmeAux.Ssid, pAd->MlmeAux.SsidLen) == TRUE)
+			)
+		{
+			MLME_SCAN_REQ_STRUCT       ScanReq;
+			pAd->StaCfg.bNotFirstScan = TRUE;
+			DBGPRINT(RT_DEBUG_TRACE, ("CntlOidSsidProc():CNTL - No matching BSS, start a new scan\n"));
+			BssTableInit(&pAd->ScanTab);
+			ScanParmFill(pAd, &ScanReq, (PSTRING) pAd->MlmeAux.Ssid, pAd->MlmeAux.SsidLen, BSS_ANY, SCAN_ACTIVE);
+			MlmeEnqueue(pAd, SYNC_STATE_MACHINE, MT2_MLME_SCAN_REQ, sizeof(MLME_SCAN_REQ_STRUCT), &ScanReq, 0);
+			pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_OID_LIST_SCAN;
+			// Reset Missed scan number
+			pAd->StaCfg.LastScanTime = Now;
+		}
+		else
+		{
+
+			pAd->MlmeAux.BssIdx = 0;
+			IterateOnBssTab(pAd);
+		}
+	} 
+}
+
+
+/*
+	==========================================================================
+	Description:
+
+	IRQL = DISPATCH_LEVEL
+	
+	==========================================================================
+*/
+VOID CntlOidRTBssidProc(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM * Elem) 
+{
+	ULONG       BssIdx;
+	PUCHAR      pOidBssid = (PUCHAR)Elem->Msg;
+	MLME_DISASSOC_REQ_STRUCT    DisassocReq;
+	MLME_JOIN_REQ_STRUCT        JoinReq;
+	PBSS_ENTRY	pInBss = NULL;
+
+#ifdef RALINK_ATE
+/* No need to perform this routine when ATE is running. */
+	if (ATE_ON(pAd))
+		return;
+#endif // RALINK_ATE //
+
+	// record user desired settings
+	COPY_MAC_ADDR(pAd->MlmeAux.Bssid, pOidBssid);
+	pAd->MlmeAux.BssType = pAd->StaCfg.BssType;
+
+	// find the desired BSS in the latest SCAN result table
+	BssIdx = BssTableSearch(&pAd->ScanTab, pOidBssid, pAd->MlmeAux.Channel);	
+
+	{
+		pInBss = &pAd->ScanTab.BssEntry[BssIdx];
+		if (SSID_EQUAL(pAd->MlmeAux.Ssid, pAd->MlmeAux.SsidLen, pInBss->Ssid, pInBss->SsidLen) == FALSE)
+			BssIdx = BSS_NOT_FOUND;
+		// Check AuthMode and AuthModeAux for matching, in case AP support dual-mode
+		if ((pAd->StaCfg.AuthMode != pInBss->AuthMode) && 
+			(pAd->StaCfg.AuthMode != pInBss->AuthModeAux))
+			BssIdx = BSS_NOT_FOUND;
+		else if ((pAd->StaCfg.AuthMode == Ndis802_11AuthModeOpen) &&
+				 (pAd->StaCfg.WepStatus != pInBss->WepStatus))
+			BssIdx = BSS_NOT_FOUND;
+	}
+				
+	if (BssIdx == BSS_NOT_FOUND) 
+	{
+		if ((pAd->StaCfg.BssType == BSS_INFRA) ||
+			(pAd->StaCfg.bNotFirstScan == FALSE))
+		{
+			MLME_SCAN_REQ_STRUCT       ScanReq;
+			
+			DBGPRINT(RT_DEBUG_TRACE, ("CNTL - BSSID not found. reply NDIS_STATUS_NOT_ACCEPTED\n"));
+			pAd->StaCfg.bNotFirstScan = TRUE;
+			
+			DBGPRINT(RT_DEBUG_TRACE, ("CNTL - BSSID not found. start a new scan\n"));
+			ScanParmFill(pAd, &ScanReq, (PSTRING) pAd->MlmeAux.Ssid, pAd->MlmeAux.SsidLen, BSS_ANY, SCAN_ACTIVE);
+			MlmeEnqueue(pAd, SYNC_STATE_MACHINE, MT2_MLME_SCAN_REQ, sizeof(MLME_SCAN_REQ_STRUCT), &ScanReq, 0);
+			pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_OID_LIST_SCAN;
+			// Reset Missed scan number
+			NdisGetSystemUpTime(&pAd->StaCfg.LastScanTime);
+		}
+		else
+		{
+			MLME_START_REQ_STRUCT   StartReq;
+			DBGPRINT(RT_DEBUG_TRACE, ("CNTL - BSSID not found. start a new ADHOC (Ssid=%s)...\n",pAd->MlmeAux.Ssid));
+			StartParmFill(pAd, &StartReq, (PCHAR)pAd->MlmeAux.Ssid, pAd->MlmeAux.SsidLen);
+			MlmeEnqueue(pAd, SYNC_STATE_MACHINE, MT2_MLME_START_REQ, sizeof(MLME_START_REQ_STRUCT), &StartReq, 0);
+			
+			pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_START;
+		}
+		return;
+	}
+
+	pInBss = &pAd->ScanTab.BssEntry[BssIdx];
+	//
+	// Update Reconnect Ssid, that user desired to connect.
+	//
+	NdisZeroMemory(pAd->MlmeAux.AutoReconnectSsid, MAX_LEN_OF_SSID);
+	pAd->MlmeAux.AutoReconnectSsidLen = pInBss->SsidLen;
+	NdisMoveMemory(pAd->MlmeAux.AutoReconnectSsid, pInBss->Ssid, pInBss->SsidLen);	
+
+	// copy the matched BSS entry from ScanTab to MlmeAux.SsidBssTab. Why?
+	// Because we need this entry to become the JOIN target in later on SYNC state machine
+	pAd->MlmeAux.BssIdx = 0;
+	pAd->MlmeAux.SsidBssTab.BssNr = 1;
+	NdisMoveMemory(&pAd->MlmeAux.SsidBssTab.BssEntry[0], pInBss, sizeof(BSS_ENTRY));
+
+	// If AP's SSID is not hidden, it is OK for updating ssid to MlmeAux again.
+	if (pInBss->Hidden == 0)
+	{
+		pAd->MlmeAux.SsidLen = pInBss->SsidLen;
+		NdisMoveMemory(pAd->MlmeAux.Ssid, pInBss->Ssid, pAd->MlmeAux.SsidLen);
+	} 
+
+	{
+		if (INFRA_ON(pAd))
+		{
+			// disassoc from current AP first
+			DBGPRINT(RT_DEBUG_TRACE, ("CNTL - disassociate with current AP ...\n"));
+			DisassocParmFill(pAd, &DisassocReq, pAd->CommonCfg.Bssid, REASON_DISASSOC_STA_LEAVING);
+			MlmeEnqueue(pAd, ASSOC_STATE_MACHINE, MT2_MLME_DISASSOC_REQ, 
+						sizeof(MLME_DISASSOC_REQ_STRUCT), &DisassocReq, 0);
+
+			pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_DISASSOC;
+		}
+		else
+		{
+			if (ADHOC_ON(pAd))
+			{
+				DBGPRINT(RT_DEBUG_TRACE, ("CNTL - drop current ADHOC\n"));
+				LinkDown(pAd, FALSE);
+				OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED);
+				pAd->IndicateMediaState = NdisMediaStateDisconnected;
+				RTMP_IndicateMediaState(pAd);
+                pAd->ExtraInfo = GENERAL_LINK_DOWN;
+				DBGPRINT(RT_DEBUG_TRACE, ("NDIS_STATUS_MEDIA_DISCONNECT Event C!\n"));
+			}
+
+			pInBss = &pAd->MlmeAux.SsidBssTab.BssEntry[0];
+			// Change the wepstatus to original wepstatus
+			pAd->StaCfg.WepStatus   = pAd->StaCfg.OrigWepStatus;
+			pAd->StaCfg.PairCipher  = pAd->StaCfg.OrigWepStatus;
+			pAd->StaCfg.GroupCipher = pAd->StaCfg.OrigWepStatus;
+
+			// Check cipher suite, AP must have more secured cipher than station setting
+			// Set the Pairwise and Group cipher to match the intended AP setting
+			// We can only connect to AP with less secured cipher setting
+			if ((pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA) || (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPAPSK))
+			{
+				pAd->StaCfg.GroupCipher = pInBss->WPA.GroupCipher;
+				
+				if (pAd->StaCfg.WepStatus == pInBss->WPA.PairCipher)
+					pAd->StaCfg.PairCipher = pInBss->WPA.PairCipher;
+				else if (pInBss->WPA.PairCipherAux != Ndis802_11WEPDisabled)
+					pAd->StaCfg.PairCipher = pInBss->WPA.PairCipherAux;
+				else	// There is no PairCipher Aux, downgrade our capability to TKIP
+					pAd->StaCfg.PairCipher = Ndis802_11Encryption2Enabled;			
+			}
+			else if ((pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2) || (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2PSK))
+			{
+				pAd->StaCfg.GroupCipher = pInBss->WPA2.GroupCipher;
+				
+				if (pAd->StaCfg.WepStatus == pInBss->WPA2.PairCipher)
+					pAd->StaCfg.PairCipher = pInBss->WPA2.PairCipher;
+				else if (pInBss->WPA2.PairCipherAux != Ndis802_11WEPDisabled)
+					pAd->StaCfg.PairCipher = pInBss->WPA2.PairCipherAux;
+				else	// There is no PairCipher Aux, downgrade our capability to TKIP
+					pAd->StaCfg.PairCipher = Ndis802_11Encryption2Enabled;			
+
+				// RSN capability
+				pAd->StaCfg.RsnCapability = pInBss->WPA2.RsnCapability;
+			}
+			
+			// Set Mix cipher flag
+			pAd->StaCfg.bMixCipher = (pAd->StaCfg.PairCipher == pAd->StaCfg.GroupCipher) ? FALSE : TRUE;
+
+
+			// No active association, join the BSS immediately
+			DBGPRINT(RT_DEBUG_TRACE, ("CNTL - joining %02x:%02x:%02x:%02x:%02x:%02x ...\n",
+				pOidBssid[0],pOidBssid[1],pOidBssid[2],pOidBssid[3],pOidBssid[4],pOidBssid[5]));
+
+			JoinParmFill(pAd, &JoinReq, pAd->MlmeAux.BssIdx);
+			MlmeEnqueue(pAd, SYNC_STATE_MACHINE, MT2_MLME_JOIN_REQ, sizeof(MLME_JOIN_REQ_STRUCT), &JoinReq, 0);
+
+			pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_JOIN;
+		}
+	} 
+}
+
+// Roaming is the only external request triggering CNTL state machine
+// despite of other "SET OID" operation. All "SET OID" related oerations 
+// happen in sequence, because no other SET OID will be sent to this device
+// until the the previous SET operation is complete (successful o failed).
+// So, how do we quarantee this ROAMING request won't corrupt other "SET OID"?
+// or been corrupted by other "SET OID"?
+//
+// IRQL = DISPATCH_LEVEL
+VOID CntlMlmeRoamingProc(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+	UCHAR BBPValue = 0;
+
+	DBGPRINT(RT_DEBUG_TRACE,("CNTL - Roaming in MlmeAux.RoamTab...\n"));
+	
+	{
+		//Let BBP register at 20MHz to do (fast) roaming.
+		RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R4, &BBPValue);
+		BBPValue &= (~0x18);
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R4, BBPValue);
+		
+		NdisMoveMemory(&pAd->MlmeAux.SsidBssTab, &pAd->MlmeAux.RoamTab, sizeof(pAd->MlmeAux.RoamTab));
+		pAd->MlmeAux.SsidBssTab.BssNr = pAd->MlmeAux.RoamTab.BssNr;
+
+		BssTableSortByRssi(&pAd->MlmeAux.SsidBssTab);
+		pAd->MlmeAux.BssIdx = 0;
+		IterateOnBssTab(pAd);
+	}
+}
+
+#ifdef QOS_DLS_SUPPORT
+/*
+	==========================================================================
+	Description:
+
+	IRQL = DISPATCH_LEVEL
+	
+	==========================================================================
+*/
+VOID CntlOidDLSSetupProc(
+	IN PRTMP_ADAPTER pAd,
+	IN MLME_QUEUE_ELEM *Elem)
+{
+	PRT_802_11_DLS		pDLS = (PRT_802_11_DLS)Elem->Msg;
+	MLME_DLS_REQ_STRUCT	MlmeDlsReq;
+	INT					i;
+	USHORT				reason = REASON_UNSPECIFY;
+
+	DBGPRINT(RT_DEBUG_TRACE,("CNTL - (OID set %02x:%02x:%02x:%02x:%02x:%02x with Valid=%d, Status=%d, TimeOut=%d, CountDownTimer=%d)\n",
+		pDLS->MacAddr[0], pDLS->MacAddr[1], pDLS->MacAddr[2], pDLS->MacAddr[3], pDLS->MacAddr[4], pDLS->MacAddr[5],
+		pDLS->Valid, pDLS->Status, pDLS->TimeOut, pDLS->CountDownTimer));
+
+	if (!pAd->CommonCfg.bDLSCapable)
+		return;
+
+	// DLS will not be supported when Adhoc mode
+	if (INFRA_ON(pAd))
+	{
+		for (i = 0; i < MAX_NUM_OF_DLS_ENTRY; i++)
+		{
+			if (pDLS->Valid && pAd->StaCfg.DLSEntry[i].Valid && (pAd->StaCfg.DLSEntry[i].Status == DLS_FINISH) &&
+				(pDLS->TimeOut == pAd->StaCfg.DLSEntry[i].TimeOut) && MAC_ADDR_EQUAL(pDLS->MacAddr, pAd->StaCfg.DLSEntry[i].MacAddr)) 
+			{
+				// 1. Same setting, just drop it
+				DBGPRINT(RT_DEBUG_TRACE,("CNTL - setting unchanged\n"));
+				break;
+			}
+			else if (!pDLS->Valid && pAd->StaCfg.DLSEntry[i].Valid && (pAd->StaCfg.DLSEntry[i].Status == DLS_FINISH) &&
+				MAC_ADDR_EQUAL(pDLS->MacAddr, pAd->StaCfg.DLSEntry[i].MacAddr)) 
+			{
+				// 2. Disable DLS link case, just tear down DLS link
+				reason = REASON_QOS_UNWANTED_MECHANISM;
+				pAd->StaCfg.DLSEntry[i].Valid	= FALSE;
+				pAd->StaCfg.DLSEntry[i].Status	= DLS_NONE;
+				DlsParmFill(pAd, &MlmeDlsReq, &pAd->StaCfg.DLSEntry[i], reason);
+				MlmeEnqueue(pAd, DLS_STATE_MACHINE, MT2_MLME_DLS_TEAR_DOWN, sizeof(MLME_DLS_REQ_STRUCT), &MlmeDlsReq, 0);
+				DBGPRINT(RT_DEBUG_TRACE,("CNTL - start tear down procedure\n"));
+				break;
+			}
+			else if ((i < MAX_NUM_OF_DLS_ENTRY) && pDLS->Valid && !pAd->StaCfg.DLSEntry[i].Valid) 
+			{
+				// 3. Enable case, start DLS setup procedure
+				NdisMoveMemory(&pAd->StaCfg.DLSEntry[i], pDLS, sizeof(RT_802_11_DLS_UI));
+
+				//Update countdown timer
+				pAd->StaCfg.DLSEntry[i].CountDownTimer = pAd->StaCfg.DLSEntry[i].TimeOut;
+				DlsParmFill(pAd, &MlmeDlsReq, &pAd->StaCfg.DLSEntry[i], reason);
+				MlmeEnqueue(pAd, DLS_STATE_MACHINE, MT2_MLME_DLS_REQ, sizeof(MLME_DLS_REQ_STRUCT), &MlmeDlsReq, 0);
+				DBGPRINT(RT_DEBUG_TRACE,("CNTL - DLS setup case\n"));
+				break;
+			}
+			else if ((i < MAX_NUM_OF_DLS_ENTRY) && pDLS->Valid && pAd->StaCfg.DLSEntry[i].Valid &&
+				(pAd->StaCfg.DLSEntry[i].Status == DLS_FINISH) && !MAC_ADDR_EQUAL(pDLS->MacAddr, pAd->StaCfg.DLSEntry[i].MacAddr)) 
+			{
+				// 4. update mac case, tear down old DLS and setup new DLS
+				reason = REASON_QOS_UNWANTED_MECHANISM;
+				pAd->StaCfg.DLSEntry[i].Valid	= FALSE;
+				pAd->StaCfg.DLSEntry[i].Status	= DLS_NONE;
+				DlsParmFill(pAd, &MlmeDlsReq, &pAd->StaCfg.DLSEntry[i], reason);
+				MlmeEnqueue(pAd, DLS_STATE_MACHINE, MT2_MLME_DLS_TEAR_DOWN, sizeof(MLME_DLS_REQ_STRUCT), &MlmeDlsReq, 0);
+				NdisMoveMemory(&pAd->StaCfg.DLSEntry[i], pDLS, sizeof(RT_802_11_DLS_UI));
+				DlsParmFill(pAd, &MlmeDlsReq, &pAd->StaCfg.DLSEntry[i], reason);
+				MlmeEnqueue(pAd, DLS_STATE_MACHINE, MT2_MLME_DLS_REQ, sizeof(MLME_DLS_REQ_STRUCT), &MlmeDlsReq, 0);
+				DBGPRINT(RT_DEBUG_TRACE,("CNTL - DLS tear down and restart case\n"));
+				break;
+			}
+			else if (pDLS->Valid && pAd->StaCfg.DLSEntry[i].Valid && 
+				MAC_ADDR_EQUAL(pDLS->MacAddr, pAd->StaCfg.DLSEntry[i].MacAddr) && (pAd->StaCfg.DLSEntry[i].TimeOut != pDLS->TimeOut)) 
+			{
+				// 5. update timeout case, start DLS setup procedure (no tear down)
+				pAd->StaCfg.DLSEntry[i].TimeOut	= pDLS->TimeOut;
+				//Update countdown timer
+				pAd->StaCfg.DLSEntry[i].CountDownTimer = pAd->StaCfg.DLSEntry[i].TimeOut;
+				DlsParmFill(pAd, &MlmeDlsReq, &pAd->StaCfg.DLSEntry[i], reason);
+				MlmeEnqueue(pAd, DLS_STATE_MACHINE, MT2_MLME_DLS_REQ, sizeof(MLME_DLS_REQ_STRUCT), &MlmeDlsReq, 0);
+				DBGPRINT(RT_DEBUG_TRACE,("CNTL - DLS update timeout case\n"));
+				break;
+			}
+			else if (pDLS->Valid && pAd->StaCfg.DLSEntry[i].Valid &&
+				(pAd->StaCfg.DLSEntry[i].Status != DLS_FINISH) && MAC_ADDR_EQUAL(pDLS->MacAddr, pAd->StaCfg.DLSEntry[i].MacAddr)) 
+			{
+				// 6. re-setup case, start DLS setup procedure (no tear down)
+				DlsParmFill(pAd, &MlmeDlsReq, &pAd->StaCfg.DLSEntry[i], reason);
+				MlmeEnqueue(pAd, DLS_STATE_MACHINE, MT2_MLME_DLS_REQ, sizeof(MLME_DLS_REQ_STRUCT), &MlmeDlsReq, 0);
+				DBGPRINT(RT_DEBUG_TRACE,("CNTL - DLS retry setup procedure\n"));
+				break;
+			}
+			else
+			{
+				DBGPRINT(RT_DEBUG_WARN,("CNTL - DLS not changed in entry - %d - Valid=%d, Status=%d, TimeOut=%d\n",
+					i, pAd->StaCfg.DLSEntry[i].Valid, pAd->StaCfg.DLSEntry[i].Status, pAd->StaCfg.DLSEntry[i].TimeOut));
+			}
+		}
+	}
+}
+#endif // QOS_DLS_SUPPORT //
+
+/*
+	==========================================================================
+	Description:
+
+	IRQL = DISPATCH_LEVEL
+	
+	==========================================================================
+*/
+VOID CntlWaitDisassocProc(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+	MLME_START_REQ_STRUCT     StartReq;
+
+	if (Elem->MsgType == MT2_DISASSOC_CONF) 
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("CNTL - Dis-associate successful\n"));
+        
+		RTMPSendWirelessEvent(pAd, IW_DISASSOC_EVENT_FLAG, NULL, BSS0, 0); 
+        		
+		LinkDown(pAd, FALSE);
+		
+		// case 1. no matching BSS, and user wants ADHOC, so we just start a new one        
+		if ((pAd->MlmeAux.SsidBssTab.BssNr==0) && (pAd->StaCfg.BssType == BSS_ADHOC))
+		{
+			DBGPRINT(RT_DEBUG_TRACE, ("CNTL - No matching BSS, start a new ADHOC (Ssid=%s)...\n",pAd->MlmeAux.Ssid));
+			StartParmFill(pAd, &StartReq, (PCHAR)pAd->MlmeAux.Ssid, pAd->MlmeAux.SsidLen);
+			MlmeEnqueue(pAd, SYNC_STATE_MACHINE, MT2_MLME_START_REQ, sizeof(MLME_START_REQ_STRUCT), &StartReq, 0);
+			pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_START;
+		}
+		// case 2. try each matched BSS
+		else
+		{
+			pAd->MlmeAux.BssIdx = 0;
+
+				IterateOnBssTab(pAd);
+		}
+	}
+}
+
+/*
+	==========================================================================
+	Description:
+
+	IRQL = DISPATCH_LEVEL
+	
+	==========================================================================
+*/
+VOID CntlWaitJoinProc(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+	USHORT                      Reason;
+	MLME_AUTH_REQ_STRUCT        AuthReq;
+
+	if (Elem->MsgType == MT2_JOIN_CONF) 
+	{
+		NdisMoveMemory(&Reason, Elem->Msg, sizeof(USHORT));
+		if (Reason == MLME_SUCCESS) 
+		{
+			// 1. joined an IBSS, we are pretty much done here
+			if (pAd->MlmeAux.BssType == BSS_ADHOC)
+			{
+			    //
+				// 5G bands rules of Japan:
+				// Ad hoc must be disabled in W53(ch52,56,60,64) channels.
+				//
+				if ( (pAd->CommonCfg.bIEEE80211H == 1) && 
+                      RadarChannelCheck(pAd, pAd->CommonCfg.Channel)
+				   )
+				{
+					pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE;
+					DBGPRINT(RT_DEBUG_TRACE, ("CNTL - Channel=%d, Join adhoc on W53(52,56,60,64) Channels are not accepted\n", pAd->CommonCfg.Channel));
+					return;
+				}
+                
+				LinkUp(pAd, BSS_ADHOC);
+				pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE;
+				DBGPRINT(RT_DEBUG_TRACE, ("CNTL - join the IBSS = %02x:%02x:%02x:%02x:%02x:%02x ...\n", 
+				pAd->CommonCfg.Bssid[0],pAd->CommonCfg.Bssid[1],pAd->CommonCfg.Bssid[2],
+				pAd->CommonCfg.Bssid[3],pAd->CommonCfg.Bssid[4],pAd->CommonCfg.Bssid[5]));
+
+                pAd->IndicateMediaState = NdisMediaStateConnected;
+                pAd->ExtraInfo = GENERAL_LINK_UP;
+
+		 		RTMPSendWirelessEvent(pAd, IW_JOIN_IBSS_FLAG, NULL, BSS0, 0);
+			} 
+			// 2. joined a new INFRA network, start from authentication
+			else 
+			{
+				{
+					// either Ndis802_11AuthModeShared or Ndis802_11AuthModeAutoSwitch, try shared key first
+					if ((pAd->StaCfg.AuthMode == Ndis802_11AuthModeShared) ||
+						(pAd->StaCfg.AuthMode == Ndis802_11AuthModeAutoSwitch))
+					{
+						AuthParmFill(pAd, &AuthReq, pAd->MlmeAux.Bssid, AUTH_MODE_KEY);
+					}
+					else
+					{
+						AuthParmFill(pAd, &AuthReq, pAd->MlmeAux.Bssid, AUTH_MODE_OPEN);
+					}
+					MlmeEnqueue(pAd, AUTH_STATE_MACHINE, MT2_MLME_AUTH_REQ, 
+							sizeof(MLME_AUTH_REQ_STRUCT), &AuthReq, 0);
+				}
+
+				pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_AUTH;
+			}
+		}
+		else
+		{
+			// 3. failed, try next BSS
+			pAd->MlmeAux.BssIdx++;
+			IterateOnBssTab(pAd);
+		} 
+	}
+}
+
+
+/*
+	==========================================================================
+	Description:
+
+	IRQL = DISPATCH_LEVEL
+	
+	==========================================================================
+*/
+VOID CntlWaitStartProc(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+	USHORT      Result;
+
+	if (Elem->MsgType == MT2_START_CONF) 
+	{
+		NdisMoveMemory(&Result, Elem->Msg, sizeof(USHORT));
+		if (Result == MLME_SUCCESS) 
+		{
+		    //
+			// 5G bands rules of Japan:
+			// Ad hoc must be disabled in W53(ch52,56,60,64) channels.
+			//
+			if ( (pAd->CommonCfg.bIEEE80211H == 1) && 
+                  RadarChannelCheck(pAd, pAd->CommonCfg.Channel)
+			   )
+			{
+				pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE;
+				DBGPRINT(RT_DEBUG_TRACE, ("CNTL - Channel=%d, Start adhoc on W53(52,56,60,64) Channels are not accepted\n", pAd->CommonCfg.Channel));
+				return;
+			}
+#ifdef DOT11_N_SUPPORT
+			NdisZeroMemory(&pAd->StaActive.SupportedPhyInfo.MCSSet[0], 16);
+			if ((pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED) && (pAd->StaCfg.bAdhocN == TRUE))
+			{
+				N_ChannelCheck(pAd);
+				SetCommonHT(pAd);
+				if ((pAd->CommonCfg.HtCapability.HtCapInfo.ChannelWidth  == BW_40) && 
+					(pAd->CommonCfg.AddHTInfo.AddHtInfo.ExtChanOffset == EXTCHA_ABOVE))
+				{
+					pAd->MlmeAux.CentralChannel = pAd->CommonCfg.Channel + 2;
+				}
+				else if ((pAd->CommonCfg.HtCapability.HtCapInfo.ChannelWidth  == BW_40) && 
+						 (pAd->CommonCfg.AddHTInfo.AddHtInfo.ExtChanOffset == EXTCHA_BELOW))
+				{
+					pAd->MlmeAux.CentralChannel = pAd->CommonCfg.Channel - 2;
+				}
+				NdisMoveMemory(&pAd->MlmeAux.AddHtInfo, &pAd->CommonCfg.AddHTInfo, sizeof(ADD_HT_INFO_IE));
+				RTMPCheckHt(pAd, BSSID_WCID, &pAd->CommonCfg.HtCapability, &pAd->CommonCfg.AddHTInfo);
+				pAd->StaActive.SupportedPhyInfo.bHtEnable = TRUE;
+				NdisMoveMemory(&pAd->StaActive.SupportedPhyInfo.MCSSet[0], &pAd->CommonCfg.HtCapability.MCSSet[0], 16);
+				COPY_HTSETTINGS_FROM_MLME_AUX_TO_ACTIVE_CFG(pAd);								
+			}
+			else
+#endif // DOT11_N_SUPPORT //
+			{
+				pAd->StaActive.SupportedPhyInfo.bHtEnable = FALSE;
+			}
+			LinkUp(pAd, BSS_ADHOC);
+			pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE;
+			// Before send beacon, driver need do radar detection
+			if ((pAd->CommonCfg.Channel > 14 )
+				&& (pAd->CommonCfg.bIEEE80211H == 1)
+				&& RadarChannelCheck(pAd, pAd->CommonCfg.Channel))
+			{
+				pAd->CommonCfg.RadarDetect.RDMode = RD_SILENCE_MODE;
+				pAd->CommonCfg.RadarDetect.RDCount = 0;
+#ifdef DFS_SUPPORT
+				BbpRadarDetectionStart(pAd);
+#endif // DFS_SUPPORT //
+			}
+			DBGPRINT(RT_DEBUG_TRACE, ("CNTL - start a new IBSS = %02x:%02x:%02x:%02x:%02x:%02x ...\n", 
+				pAd->CommonCfg.Bssid[0],pAd->CommonCfg.Bssid[1],pAd->CommonCfg.Bssid[2],
+				pAd->CommonCfg.Bssid[3],pAd->CommonCfg.Bssid[4],pAd->CommonCfg.Bssid[5]));
+
+		 		RTMPSendWirelessEvent(pAd, IW_START_IBSS_FLAG, NULL, BSS0, 0);
+		}
+		else
+		{
+			DBGPRINT(RT_DEBUG_TRACE, ("CNTL - Start IBSS fail. BUG!!!!!\n"));
+			pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE;
+		}
+	}
+}
+
+/*
+	==========================================================================
+	Description:
+
+	IRQL = DISPATCH_LEVEL
+	
+	==========================================================================
+*/
+VOID CntlWaitAuthProc(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+	USHORT                       Reason;
+	MLME_ASSOC_REQ_STRUCT        AssocReq;
+	MLME_AUTH_REQ_STRUCT         AuthReq;
+
+	if (Elem->MsgType == MT2_AUTH_CONF) 
+	{
+		NdisMoveMemory(&Reason, Elem->Msg, sizeof(USHORT));
+		if (Reason == MLME_SUCCESS) 
+		{
+			DBGPRINT(RT_DEBUG_TRACE, ("CNTL - AUTH OK\n"));
+			AssocParmFill(pAd, &AssocReq, pAd->MlmeAux.Bssid, pAd->MlmeAux.CapabilityInfo, 
+						  ASSOC_TIMEOUT, pAd->StaCfg.DefaultListenCount);
+
+			{
+				MlmeEnqueue(pAd, ASSOC_STATE_MACHINE, MT2_MLME_ASSOC_REQ, 
+							sizeof(MLME_ASSOC_REQ_STRUCT), &AssocReq, 0);
+
+				pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_ASSOC;
+			}
+		} 
+		else
+		{
+			// This fail may because of the AP already keep us in its MAC table without 
+			// ageing-out. The previous authentication attempt must have let it remove us.
+			// so try Authentication again may help. For D-Link DWL-900AP+ compatibility.
+			DBGPRINT(RT_DEBUG_TRACE, ("CNTL - AUTH FAIL, try again...\n"));
+			{
+				if ((pAd->StaCfg.AuthMode == Ndis802_11AuthModeShared) ||
+					(pAd->StaCfg.AuthMode == Ndis802_11AuthModeAutoSwitch))
+				{
+					// either Ndis802_11AuthModeShared or Ndis802_11AuthModeAutoSwitch, try shared key first
+					AuthParmFill(pAd, &AuthReq, pAd->MlmeAux.Bssid, AUTH_MODE_KEY);
+				}
+				else
+				{
+					AuthParmFill(pAd, &AuthReq, pAd->MlmeAux.Bssid, AUTH_MODE_OPEN);
+				}
+				MlmeEnqueue(pAd, AUTH_STATE_MACHINE, MT2_MLME_AUTH_REQ, 
+							sizeof(MLME_AUTH_REQ_STRUCT), &AuthReq, 0);
+				
+			}
+			pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_AUTH2;
+		}
+	}
+}
+
+/*
+	==========================================================================
+	Description:
+
+	IRQL = DISPATCH_LEVEL
+	
+	==========================================================================
+*/
+VOID CntlWaitAuthProc2(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+	USHORT                       Reason;
+	MLME_ASSOC_REQ_STRUCT        AssocReq;
+	MLME_AUTH_REQ_STRUCT         AuthReq;
+
+	if (Elem->MsgType == MT2_AUTH_CONF) 
+	{
+		NdisMoveMemory(&Reason, Elem->Msg, sizeof(USHORT));
+		if (Reason == MLME_SUCCESS) 
+		{
+			DBGPRINT(RT_DEBUG_TRACE, ("CNTL - AUTH OK\n"));
+			AssocParmFill(pAd, &AssocReq, pAd->MlmeAux.Bssid, pAd->MlmeAux.CapabilityInfo, 
+							  ASSOC_TIMEOUT, pAd->StaCfg.DefaultListenCount);
+			{
+				MlmeEnqueue(pAd, ASSOC_STATE_MACHINE, MT2_MLME_ASSOC_REQ, 
+						sizeof(MLME_ASSOC_REQ_STRUCT), &AssocReq, 0);
+
+				pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_ASSOC;
+			}
+		} 
+		else
+		{
+			if ((pAd->StaCfg.AuthMode == Ndis802_11AuthModeAutoSwitch) &&
+				 (pAd->MlmeAux.Alg == Ndis802_11AuthModeShared))
+			{
+				DBGPRINT(RT_DEBUG_TRACE, ("CNTL - AUTH FAIL, try OPEN system...\n"));
+				AuthParmFill(pAd, &AuthReq, pAd->MlmeAux.Bssid, Ndis802_11AuthModeOpen);
+				MlmeEnqueue(pAd, AUTH_STATE_MACHINE, MT2_MLME_AUTH_REQ, 
+							sizeof(MLME_AUTH_REQ_STRUCT), &AuthReq, 0);
+
+				pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_AUTH2;
+			}
+			else 
+			{
+				// not success, try next BSS
+				DBGPRINT(RT_DEBUG_TRACE, ("CNTL - AUTH FAIL, give up; try next BSS\n"));
+				pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE; //???????
+				pAd->MlmeAux.BssIdx++;
+				IterateOnBssTab(pAd);
+			}
+		}
+	}
+}
+
+/*
+	==========================================================================
+	Description:
+
+	IRQL = DISPATCH_LEVEL
+	
+	==========================================================================
+*/
+VOID CntlWaitAssocProc(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+	USHORT      Reason;
+
+	if (Elem->MsgType == MT2_ASSOC_CONF) 
+	{
+		NdisMoveMemory(&Reason, Elem->Msg, sizeof(USHORT));
+		if (Reason == MLME_SUCCESS) 
+		{
+				RTMPSendWirelessEvent(pAd, IW_ASSOC_EVENT_FLAG, NULL, BSS0, 0); 
+			
+			LinkUp(pAd, BSS_INFRA);
+			pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE;
+			DBGPRINT(RT_DEBUG_TRACE, ("CNTL - Association successful on BSS #%ld\n",pAd->MlmeAux.BssIdx));			
+		} 
+		else 
+		{
+			// not success, try next BSS
+			DBGPRINT(RT_DEBUG_TRACE, ("CNTL - Association fails on BSS #%ld\n",pAd->MlmeAux.BssIdx));
+			pAd->MlmeAux.BssIdx++;
+			IterateOnBssTab(pAd);
+		}
+	}
+}
+
+/*
+	==========================================================================
+	Description:
+
+	IRQL = DISPATCH_LEVEL
+	
+	==========================================================================
+*/
+VOID CntlWaitReassocProc(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+	USHORT      Result;
+
+	if (Elem->MsgType == MT2_REASSOC_CONF) 
+	{
+		NdisMoveMemory(&Result, Elem->Msg, sizeof(USHORT));
+		if (Result == MLME_SUCCESS) 
+		{
+			// send wireless event - for association
+				RTMPSendWirelessEvent(pAd, IW_ASSOC_EVENT_FLAG, NULL, BSS0, 0);
+
+
+			// 
+			// NDIS requires a new Link UP indication but no Link Down for RE-ASSOC
+			//
+			LinkUp(pAd, BSS_INFRA);
+
+			pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE;            
+			DBGPRINT(RT_DEBUG_TRACE, ("CNTL - Re-assocition successful on BSS #%ld\n", pAd->MlmeAux.RoamIdx));
+		} 
+		else 
+		{
+			// reassoc failed, try to pick next BSS in the BSS Table
+			DBGPRINT(RT_DEBUG_TRACE, ("CNTL - Re-assocition fails on BSS #%ld\n", pAd->MlmeAux.RoamIdx));
+			{
+				pAd->MlmeAux.RoamIdx++;
+				IterateOnBssTab2(pAd);
+			}
+		}
+	}
+}
+
+
+VOID	AdhocTurnOnQos(
+	IN  PRTMP_ADAPTER pAd)
+{
+#define AC0_DEF_TXOP		0
+#define AC1_DEF_TXOP		0
+#define AC2_DEF_TXOP		94
+#define AC3_DEF_TXOP		47
+
+	// Turn on QOs if use HT rate.
+	if (pAd->CommonCfg.APEdcaParm.bValid == FALSE)
+	{
+		pAd->CommonCfg.APEdcaParm.bValid = TRUE;
+		pAd->CommonCfg.APEdcaParm.Aifsn[0] = 3;
+		pAd->CommonCfg.APEdcaParm.Aifsn[1] = 7;
+		pAd->CommonCfg.APEdcaParm.Aifsn[2] = 1;
+		pAd->CommonCfg.APEdcaParm.Aifsn[3] = 1;
+
+		pAd->CommonCfg.APEdcaParm.Cwmin[0] = 4;
+		pAd->CommonCfg.APEdcaParm.Cwmin[1] = 4;
+		pAd->CommonCfg.APEdcaParm.Cwmin[2] = 3;
+		pAd->CommonCfg.APEdcaParm.Cwmin[3] = 2;
+
+		pAd->CommonCfg.APEdcaParm.Cwmax[0] = 10;
+		pAd->CommonCfg.APEdcaParm.Cwmax[1] = 6;
+		pAd->CommonCfg.APEdcaParm.Cwmax[2] = 4;
+		pAd->CommonCfg.APEdcaParm.Cwmax[3] = 3;
+
+		pAd->CommonCfg.APEdcaParm.Txop[0]  = 0;
+		pAd->CommonCfg.APEdcaParm.Txop[1]  = 0;
+		pAd->CommonCfg.APEdcaParm.Txop[2]  = AC2_DEF_TXOP;
+		pAd->CommonCfg.APEdcaParm.Txop[3]  = AC3_DEF_TXOP;
+	}
+	AsicSetEdcaParm(pAd, &pAd->CommonCfg.APEdcaParm);
+}
+
+/*
+	==========================================================================
+	Description:
+
+	IRQL = DISPATCH_LEVEL
+	
+	==========================================================================
+*/
+VOID LinkUp(
+	IN PRTMP_ADAPTER pAd,
+	IN UCHAR BssType) 
+{
+	ULONG	Now;
+	UINT32	Data;
+	BOOLEAN	Cancelled;
+	UCHAR	Value = 0, idx = 0, HashIdx = 0;
+	MAC_TABLE_ENTRY *pEntry = NULL, *pCurrEntry = NULL;
+	
+	
+	// Init ChannelQuality to prevent DEAD_CQI at initial LinkUp
+	pAd->Mlme.ChannelQuality = 50;
+
+	pEntry = MacTableLookup(pAd, pAd->CommonCfg.Bssid);
+	if (pEntry)
+	{
+		MacTableDeleteEntry(pAd, pEntry->Aid, pEntry->Addr);
+		pEntry = NULL;
+	}
+	
+
+	pEntry = &pAd->MacTab.Content[BSSID_WCID];
+
+	//
+	// ASSOC - DisassocTimeoutAction
+	// CNTL - Dis-associate successful
+	// !!! LINK DOWN !!!
+	// [88888] OID_802_11_SSID should have returned NDTEST_WEP_AP2(Returned: )
+	// 
+	// To prevent DisassocTimeoutAction to call Link down after we link up,
+	// cancel the DisassocTimer no matter what it start or not.
+	//
+	RTMPCancelTimer(&pAd->MlmeAux.DisassocTimer,  &Cancelled);	
+
+	COPY_SETTINGS_FROM_MLME_AUX_TO_ACTIVE_CFG(pAd);
+
+#ifdef DOT11_N_SUPPORT
+	COPY_HTSETTINGS_FROM_MLME_AUX_TO_ACTIVE_CFG(pAd);
+#endif // DOT11_N_SUPPORT //
+
+	if (BssType == BSS_ADHOC)
+	{
+		OPSTATUS_SET_FLAG(pAd, fOP_STATUS_ADHOC_ON);
+		OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_INFRA_ON);
+		
+#ifdef CARRIER_DETECTION_SUPPORT // Roger sync Carrier
+		// No carrier detection when adhoc
+		// CarrierDetectionStop(pAd);
+		pAd->CommonCfg.CarrierDetect.CD_State = CD_NORMAL;
+#endif // CARRIER_DETECTION_SUPPORT //
+
+#ifdef DOT11_N_SUPPORT
+		if ((pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED) && (pAd->StaCfg.bAdhocN == TRUE))
+			AdhocTurnOnQos(pAd);
+#endif // DOT11_N_SUPPORT //
+
+		InitChannelRelatedValue(pAd);
+
+		DBGPRINT(RT_DEBUG_TRACE, ("!!!Adhoc LINK UP !!! \n" ));
+	}
+	else
+	{
+		OPSTATUS_SET_FLAG(pAd, fOP_STATUS_INFRA_ON);
+		OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_ADHOC_ON);
+	
+		DBGPRINT(RT_DEBUG_TRACE, ("!!!Infra LINK UP !!! \n" ));
+	}
+	
+
+	//
+	// Save BBP_R66 value, it will be used in RTUSBResumeMsduTransmission
+	//
+	RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R66, &pAd->BbpTuning.R66CurrentValue);
+
+	DBGPRINT(RT_DEBUG_TRACE, ("!!! LINK UP !!! (BssType=%d, AID=%d, ssid=%s, Channel=%d, CentralChannel = %d)\n", 
+		BssType, pAd->StaActive.Aid, pAd->CommonCfg.Ssid, pAd->CommonCfg.Channel, pAd->CommonCfg.CentralChannel));
+
+#ifdef DOT11_N_SUPPORT
+	DBGPRINT(RT_DEBUG_TRACE, ("!!! LINK UP !!! (Density =%d, )\n", pAd->MacTab.Content[BSSID_WCID].MpduDensity));
+#endif // DOT11_N_SUPPORT //
+
+		AsicSetBssid(pAd, pAd->CommonCfg.Bssid);
+		
+	AsicSetSlotTime(pAd, TRUE);
+	AsicSetEdcaParm(pAd, &pAd->CommonCfg.APEdcaParm);
+
+
+	// Call this for RTS protectionfor legacy rate, we will always enable RTS threshold, but normally it will not hit
+	AsicUpdateProtect(pAd, 0, (OFDMSETPROTECT | CCKSETPROTECT), TRUE, FALSE);
+
+#ifdef DOT11_N_SUPPORT
+	if ((pAd->StaActive.SupportedPhyInfo.bHtEnable == TRUE))
+	{
+		// Update HT protectionfor based on AP's operating mode.
+    	if (pAd->MlmeAux.AddHtInfo.AddHtInfo2.NonGfPresent == 1)
+    	{
+    		AsicUpdateProtect(pAd, pAd->MlmeAux.AddHtInfo.AddHtInfo2.OperaionMode,  ALLN_SETPROTECT, FALSE, TRUE);
+    	}
+    	else
+   			AsicUpdateProtect(pAd, pAd->MlmeAux.AddHtInfo.AddHtInfo2.OperaionMode,  ALLN_SETPROTECT, FALSE, FALSE);
+	}
+#endif // DOT11_N_SUPPORT //
+
+	NdisZeroMemory(&pAd->DrsCounters, sizeof(COUNTER_DRS));
+
+	NdisGetSystemUpTime(&Now);
+	pAd->StaCfg.LastBeaconRxTime = Now;   // last RX timestamp
+
+	if ((pAd->CommonCfg.TxPreamble != Rt802_11PreambleLong) &&
+		CAP_IS_SHORT_PREAMBLE_ON(pAd->StaActive.CapabilityInfo))
+	{
+		MlmeSetTxPreamble(pAd, Rt802_11PreambleShort);
+	}
+
+	OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_AGGREGATION_INUSED);
+ 
+	if (pAd->CommonCfg.RadarDetect.RDMode == RD_SILENCE_MODE)
+	{
+#ifdef DFS_SUPPORT
+		RadarDetectionStop(pAd);
+#endif // DFS_SUPPORT //
+	}
+	pAd->CommonCfg.RadarDetect.RDMode = RD_NORMAL_MODE;
+	
+	if (BssType == BSS_ADHOC)
+	{
+		MakeIbssBeacon(pAd);
+		if ((pAd->CommonCfg.Channel > 14)
+			&& (pAd->CommonCfg.bIEEE80211H == 1)
+			&& RadarChannelCheck(pAd, pAd->CommonCfg.Channel))
+		{
+			; //Do nothing
+		}
+		else
+		{
+			AsicEnableIbssSync(pAd);
+		}
+		
+		// In ad hoc mode, use MAC table from index 1. 
+		// p.s ASIC use all 0xff as termination of WCID table search.To prevent it's 0xff-ff-ff-ff-ff-ff, Write 0 here.
+		RTMP_IO_WRITE32(pAd, MAC_WCID_BASE, 0x00);
+		RTMP_IO_WRITE32(pAd, 0x1808, 0x00);
+
+		// If WEP is enabled, add key material and cipherAlg into Asic
+		// Fill in Shared Key Table(offset: 0x6c00) and Shared Key Mode(offset: 0x7000)
+        
+		if (pAd->StaCfg.WepStatus == Ndis802_11WEPEnabled)
+		{			
+			UCHAR 	CipherAlg;
+			
+			for (idx=0; idx < SHARE_KEY_NUM; idx++)
+        	{
+				CipherAlg = pAd->SharedKey[BSS0][idx].CipherAlg;
+			
+				if (pAd->SharedKey[BSS0][idx].KeyLen > 0)
+				{
+					// Set key material and cipherAlg to Asic
+    				AsicAddSharedKeyEntry(pAd, BSS0, idx, &pAd->SharedKey[BSS0][idx]);						
+                    
+                    if (idx == pAd->StaCfg.DefaultKeyId)
+					{
+						INT	cnt;
+					
+						/* Generate 3-bytes IV randomly for software encryption using */						
+				    	for(cnt = 0; cnt < LEN_WEP_TSC; cnt++)
+							pAd->SharedKey[BSS0][idx].TxTsc[cnt] = RandomByte(pAd);   
+					
+						/* Update WCID attribute table and IVEIV table for this group key table */
+						RTMPSetWcidSecurityInfo(pAd, 
+												BSS0, 
+												idx, 												
+												CipherAlg,
+												MCAST_WCID, 
+												SHAREDKEYTABLE);	
+					}
+				}	
+
+                
+			}    		   		  		   					
+		}		
+		// If WPANone is enabled, add key material and cipherAlg into Asic 
+		// Fill in Shared Key Table(offset: 0x6c00) and Shared Key Mode(offset: 0x7000)
+		else if (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPANone)
+		{
+			pAd->StaCfg.DefaultKeyId = 0;	// always be zero
+		
+            NdisZeroMemory(&pAd->SharedKey[BSS0][0], sizeof(CIPHER_KEY));  
+							pAd->SharedKey[BSS0][0].KeyLen = LEN_TK;
+			NdisMoveMemory(pAd->SharedKey[BSS0][0].Key, pAd->StaCfg.PMK, LEN_TK);
+            
+            if (pAd->StaCfg.PairCipher == Ndis802_11Encryption2Enabled)
+            {
+    			NdisMoveMemory(pAd->SharedKey[BSS0][0].RxMic, &pAd->StaCfg.PMK[16], LEN_TKIP_MIC);
+    			NdisMoveMemory(pAd->SharedKey[BSS0][0].TxMic, &pAd->StaCfg.PMK[16], LEN_TKIP_MIC);
+            }
+
+			// Decide its ChiperAlg
+			if (pAd->StaCfg.PairCipher == Ndis802_11Encryption2Enabled)
+				pAd->SharedKey[BSS0][0].CipherAlg = CIPHER_TKIP;
+			else if (pAd->StaCfg.PairCipher == Ndis802_11Encryption3Enabled)
+				pAd->SharedKey[BSS0][0].CipherAlg = CIPHER_AES;
+			else
+            {         
+                DBGPRINT(RT_DEBUG_TRACE, ("Unknow Cipher (=%d), set Cipher to AES\n", pAd->StaCfg.PairCipher));
+				pAd->SharedKey[BSS0][0].CipherAlg = CIPHER_AES;
+            }
+		
+			// Set key material and cipherAlg to Asic
+			AsicAddSharedKeyEntry(pAd, 
+								  BSS0, 
+								  0, 
+								  &pAd->SharedKey[BSS0][0]);	
+
+			/* Update WCID attribute table and IVEIV table for this group key table */
+			RTMPSetWcidSecurityInfo(pAd, 
+									BSS0, 
+									0, 												
+									pAd->SharedKey[BSS0][0].CipherAlg,
+									MCAST_WCID, 
+									SHAREDKEYTABLE);	
+		}
+
+	}
+	else // BSS_INFRA
+	{
+		// Check the new SSID with last SSID
+		while (Cancelled == TRUE)
+		{
+			if (pAd->CommonCfg.LastSsidLen == pAd->CommonCfg.SsidLen)
+			{
+				if (RTMPCompareMemory(pAd->CommonCfg.LastSsid, pAd->CommonCfg.Ssid, pAd->CommonCfg.LastSsidLen) == 0)
+				{
+					// Link to the old one no linkdown is required.
+					break;
+				}
+			}
+			// Send link down event before set to link up
+			pAd->IndicateMediaState = NdisMediaStateDisconnected;
+			RTMP_IndicateMediaState(pAd);
+            pAd->ExtraInfo = GENERAL_LINK_DOWN;
+			DBGPRINT(RT_DEBUG_TRACE, ("NDIS_STATUS_MEDIA_DISCONNECT Event AA!\n"));
+			break;
+		}
+
+		//
+		// On WPA mode, Remove All Keys if not connect to the last BSSID
+		// Key will be set after 4-way handshake.
+		//
+		if (pAd->StaCfg.AuthMode >= Ndis802_11AuthModeWPA)
+		{
+			//ULONG 		IV;
+			
+			// Remove all WPA keys 
+#ifdef PCIE_PS_SUPPORT 
+			RTMP_CLEAR_PSFLAG(pAd, fRTMP_PS_CAN_GO_SLEEP);
+#endif // PCIE_PS_SUPPORT //
+
+			RTMPWPARemoveAllKeys(pAd);
+			pAd->StaCfg.PortSecured = WPA_802_1X_PORT_NOT_SECURED;			
+			pAd->StaCfg.PrivacyFilter = Ndis802_11PrivFilter8021xWEP;
+			
+
+#ifdef SOFT_ENCRYPT
+			/* There are some situation to need to encryption by software 			   	
+			   1. The Client support PMF. It shall ony support AES cipher.
+			   2. The Client support WAPI.
+			   If use RT3883 or later, HW can handle the above.	
+			   */
+			if ((pAd->MACVersion < RALINK_3883_VERSION) && 
+				(FALSE
+				))
+			{
+				CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_SOFTWARE_ENCRYPT);
+			}
+#endif // SOFT_ENCRYPT //
+
+			
+		}
+
+		// NOTE:
+		// the decision of using "short slot time" or not may change dynamically due to
+		// new STA association to the AP. so we have to decide that upon parsing BEACON, not here
+
+		// NOTE:
+		// the decision to use "RTC/CTS" or "CTS-to-self" protection or not may change dynamically
+		// due to new STA association to the AP. so we have to decide that upon parsing BEACON, not here
+
+		ComposePsPoll(pAd);
+		ComposeNullFrame(pAd);
+
+			AsicEnableBssSync(pAd);
+
+		// Add BSSID to WCID search table
+		AsicUpdateRxWCIDTable(pAd, BSSID_WCID, pAd->CommonCfg.Bssid);		
+
+		// If WEP is enabled, add paiewise and shared key
+#ifdef WPA_SUPPLICANT_SUPPORT
+        if (((pAd->StaCfg.WpaSupplicantUP)&&
+             (pAd->StaCfg.WepStatus == Ndis802_11WEPEnabled)&&
+             (pAd->StaCfg.PortSecured == WPA_802_1X_PORT_SECURED)) ||
+            ((pAd->StaCfg.WpaSupplicantUP == WPA_SUPPLICANT_DISABLE)&&
+              (pAd->StaCfg.WepStatus == Ndis802_11WEPEnabled)))
+#else
+		if (pAd->StaCfg.WepStatus == Ndis802_11WEPEnabled)
+#endif // WPA_SUPPLICANT_SUPPORT //            
+		{			
+			UCHAR 	CipherAlg;
+			
+			for (idx=0; idx < SHARE_KEY_NUM; idx++)
+        	{
+				CipherAlg = pAd->SharedKey[BSS0][idx].CipherAlg;
+			
+				if (pAd->SharedKey[BSS0][idx].KeyLen > 0)
+				{
+					// Set key material and cipherAlg to Asic
+    				AsicAddSharedKeyEntry(pAd, BSS0, idx, &pAd->SharedKey[BSS0][idx]);	
+
+					if (idx == pAd->StaCfg.DefaultKeyId)
+					{
+						/* STA doesn't need to set WCID attribute for group key */
+
+						/* Assign pairwise key info to Asic */
+						pEntry->Aid = BSSID_WCID;
+						RTMPSetWcidSecurityInfo(pAd, BSS0, idx, 
+												CipherAlg, pEntry->Aid, SHAREDKEYTABLE);
+					}
+				}	
+			}    		   		  		   					
+		}
+
+		// only INFRASTRUCTURE mode need to indicate connectivity immediately; ADHOC mode
+		// should wait until at least 2 active nodes in this BSSID.
+		OPSTATUS_SET_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED); 
+
+        // For GUI ++
+		if (pAd->StaCfg.AuthMode < Ndis802_11AuthModeWPA)
+		{
+			pAd->IndicateMediaState = NdisMediaStateConnected;
+			pAd->ExtraInfo = GENERAL_LINK_UP;
+			RTMP_IndicateMediaState(pAd);
+		}
+		else if ((pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPAPSK) ||
+				 (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2PSK))
+		{
+#ifdef WPA_SUPPLICANT_SUPPORT
+			if (pAd->StaCfg.WpaSupplicantUP == WPA_SUPPLICANT_DISABLE)
+#endif // WPA_SUPPLICANT_SUPPORT //
+				RTMPSetTimer(&pAd->Mlme.LinkDownTimer, LINK_DOWN_TIMEOUT);
+
+		}
+        // --
+
+		// Add BSSID in my MAC Table.
+        NdisAcquireSpinLock(&pAd->MacTabLock);
+		// add this MAC entry into HASH table
+		if (pEntry)
+		{
+			HashIdx = MAC_ADDR_HASH_INDEX(pAd->CommonCfg.Bssid);
+			if (pAd->MacTab.Hash[HashIdx] == NULL)
+			{
+				pAd->MacTab.Hash[HashIdx] = pEntry;
+			}
+			else
+			{
+				pCurrEntry = pAd->MacTab.Hash[HashIdx];
+				while (pCurrEntry->pNext != NULL)
+				{
+					pCurrEntry = pCurrEntry->pNext;
+				}
+				pCurrEntry->pNext = pEntry;
+			}
+		}
+		RTMPMoveMemory(pEntry->Addr, pAd->CommonCfg.Bssid, MAC_ADDR_LEN);
+		pEntry->Aid = BSSID_WCID;
+		pEntry->pAd = pAd;
+		SET_ENTRY_CLIENT(pEntry);
+		pAd->MacTab.Size = 1;	// infra mode always set MACtab size =1.
+		pEntry->Sst = SST_ASSOC;
+		pEntry->AuthState = SST_ASSOC;
+		pEntry->AuthMode = pAd->StaCfg.AuthMode;
+		pEntry->WepStatus = pAd->StaCfg.WepStatus;
+		if (pEntry->AuthMode < Ndis802_11AuthModeWPA)
+		{
+			pEntry->WpaState = AS_NOTUSE;
+			pEntry->PrivacyFilter = Ndis802_11PrivFilterAcceptAll;
+		}
+		else
+		{
+			pEntry->WpaState = AS_PTKSTART;
+			pEntry->PrivacyFilter = Ndis802_11PrivFilter8021xWEP;
+		}
+        	NdisReleaseSpinLock(&pAd->MacTabLock);
+
+		DBGPRINT(RT_DEBUG_TRACE, ("!!! LINK UP !!!  ClientStatusFlags=%lx)\n", 
+			pAd->MacTab.Content[BSSID_WCID].ClientStatusFlags));
+
+
+		MlmeUpdateTxRates(pAd, TRUE, BSS0);
+#ifdef DOT11_N_SUPPORT
+		MlmeUpdateHtTxRates(pAd, BSS0);
+		DBGPRINT(RT_DEBUG_TRACE, ("!!! LINK UP !! (StaActive.bHtEnable =%d, )\n", pAd->StaActive.SupportedPhyInfo.bHtEnable));
+#endif // DOT11_N_SUPPORT //
+
+
+		if (pAd->CommonCfg.bAggregationCapable)
+		{
+			if ((pAd->CommonCfg.bPiggyBackCapable) && (pAd->MlmeAux.APRalinkIe & 0x00000003) == 3)
+			{
+				OPSTATUS_SET_FLAG(pAd, fOP_STATUS_PIGGYBACK_INUSED);
+				OPSTATUS_SET_FLAG(pAd, fOP_STATUS_AGGREGATION_INUSED);
+				CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_AGGREGATION_CAPABLE);
+				CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_PIGGYBACK_CAPABLE);
+                RTMPSetPiggyBack(pAd, TRUE);
+				DBGPRINT(RT_DEBUG_TRACE, ("Turn on Piggy-Back\n"));
+			}
+			else if (pAd->MlmeAux.APRalinkIe & 0x00000001)
+			{
+				OPSTATUS_SET_FLAG(pAd, fOP_STATUS_AGGREGATION_INUSED);
+				CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_AGGREGATION_CAPABLE);
+				DBGPRINT(RT_DEBUG_TRACE, ("Ralink Aggregation\n"));
+			}
+		}
+		
+		if (pAd->MlmeAux.APRalinkIe != 0x0)
+		{
+#ifdef DOT11_N_SUPPORT		
+			if (CLIENT_STATUS_TEST_FLAG(pEntry, fCLIENT_STATUS_RDG_CAPABLE))
+			{
+				AsicEnableRDG(pAd);
+			}
+#endif // DOT11_N_SUPPORT //
+			OPSTATUS_SET_FLAG(pAd, fCLIENT_STATUS_RALINK_CHIPSET);
+			CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_RALINK_CHIPSET);
+		}
+		else
+		{
+			OPSTATUS_CLEAR_FLAG(pAd, fCLIENT_STATUS_RALINK_CHIPSET);
+			CLIENT_STATUS_CLEAR_FLAG(pEntry, fCLIENT_STATUS_RALINK_CHIPSET);
+		}
+	}
+
+
+#ifdef DOT11_N_SUPPORT
+	DBGPRINT(RT_DEBUG_TRACE, ("NDIS_STATUS_MEDIA_CONNECT Event B!.BACapability = %x. ClientStatusFlags = %lx\n", pAd->CommonCfg.BACapability.word, pAd->MacTab.Content[BSSID_WCID].ClientStatusFlags));
+#endif // DOT11_N_SUPPORT //
+
+	// Set LED
+	RTMPSetLED(pAd, LED_LINK_UP);
+	
+	pAd->Mlme.PeriodicRound = 0;
+	pAd->Mlme.OneSecPeriodicRound = 0;
+	pAd->bConfigChanged = FALSE;        // Reset config flag
+	pAd->ExtraInfo = GENERAL_LINK_UP;   // Update extra information to link is up
+
+	// Set asic auto fall back
+	{
+		PUCHAR					pTable;
+		UCHAR					TableSize = 0;
+		
+		MlmeSelectTxRateTable(pAd, &pAd->MacTab.Content[BSSID_WCID], &pTable, &TableSize, &pAd->CommonCfg.TxRateIndex);
+		AsicUpdateAutoFallBackTable(pAd, pTable);
+	}
+	
+	NdisAcquireSpinLock(&pAd->MacTabLock);
+    pEntry->HTPhyMode.word = pAd->StaCfg.HTPhyMode.word;
+    pEntry->MaxHTPhyMode.word = pAd->StaCfg.HTPhyMode.word;
+	if (pAd->StaCfg.bAutoTxRateSwitch == FALSE)
+	{
+		pEntry->bAutoTxRateSwitch = FALSE;
+#ifdef DOT11_N_SUPPORT
+		if (pEntry->HTPhyMode.field.MCS == 32)
+			pEntry->HTPhyMode.field.ShortGI = GI_800;
+
+		if ((pEntry->HTPhyMode.field.MCS > MCS_7) || (pEntry->HTPhyMode.field.MCS == 32))
+			pEntry->HTPhyMode.field.STBC = STBC_NONE;
+#endif // DOT11_N_SUPPORT //
+		// If the legacy mode is set, overwrite the transmit setting of this entry.  
+		if (pEntry->HTPhyMode.field.MODE <= MODE_OFDM)
+			RTMPUpdateLegacyTxSetting((UCHAR)pAd->StaCfg.DesiredTransmitSetting.field.FixedTxMode, pEntry);
+	}
+	else
+		pEntry->bAutoTxRateSwitch = TRUE;
+	NdisReleaseSpinLock(&pAd->MacTabLock);
+
+	//  Let Link Status Page display first initial rate.
+	pAd->LastTxRate = (USHORT)(pEntry->HTPhyMode.word);
+	// Select DAC according to HT or Legacy
+	if (pAd->StaActive.SupportedPhyInfo.MCSSet[0] != 0x00)
+	{
+		RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R1, &Value);
+		Value &= (~0x18);
+		if (pAd->Antenna.field.TxPath == 2)
+		{
+		    Value |= 0x10;
+		}
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R1, Value);
+	}
+	else
+	{
+		RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R1, &Value);
+		Value &= (~0x18);
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R1, Value);
+	}
+
+#ifdef DOT11_N_SUPPORT
+	if (pAd->StaActive.SupportedPhyInfo.bHtEnable == FALSE) 
+	{
+	}
+	else if (pEntry->MaxRAmpduFactor == 0)
+	{
+	    // If HT AP doesn't support MaxRAmpduFactor = 1, we need to set max PSDU to 0.
+	    // Because our Init value is 1 at MACRegTable.
+		RTMP_IO_WRITE32(pAd, MAX_LEN_CFG, 0x0fff);
+	}
+#endif // DOT11_N_SUPPORT //
+
+	// Patch for Marvel AP to gain high throughput
+	// Need to set as following,
+	// 1. Set txop in register-EDCA_AC0_CFG as 0x60
+	// 2. Set EnTXWriteBackDDONE in register-WPDMA_GLO_CFG as zero
+	// 3. PBF_MAX_PCNT as 0x1F3FBF9F
+	// 4. kick per two packets when dequeue
+	// 
+	// Txop can only be modified when RDG is off, WMM is disable and TxBurst is enable
+	//
+	// if 1. Legacy AP WMM on,  or 2. 11n AP, AMPDU disable.  Force turn off burst no matter what bEnableTxBurst is.
+#ifdef DOT11_N_SUPPORT
+	if (!((pAd->CommonCfg.RxStream == 1)&&(pAd->CommonCfg.TxStream == 1)) &&
+		(pAd->StaCfg.bForceTxBurst == FALSE) &&
+		(((pAd->StaActive.SupportedPhyInfo.bHtEnable == FALSE) && OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_WMM_INUSED))
+		|| ((pAd->StaActive.SupportedPhyInfo.bHtEnable == TRUE) && (pAd->CommonCfg.BACapability.field.Policy == BA_NOTUSE))))
+	{
+		RTMP_IO_READ32(pAd, EDCA_AC0_CFG, &Data);
+		Data  &= 0xFFFFFF00;
+		RTMP_IO_WRITE32(pAd, EDCA_AC0_CFG, Data);
+
+		RTMP_IO_WRITE32(pAd, PBF_MAX_PCNT, 0x1F3F7F9F);
+		DBGPRINT(RT_DEBUG_TRACE, ("Txburst 1\n"));
+	}
+	else
+#endif // DOT11_N_SUPPORT //
+	if (pAd->CommonCfg.bEnableTxBurst)
+	{
+		RTMP_IO_READ32(pAd, EDCA_AC0_CFG, &Data);
+		Data  &= 0xFFFFFF00;
+		Data  |= 0x60;
+		RTMP_IO_WRITE32(pAd, EDCA_AC0_CFG, Data);
+		pAd->CommonCfg.IOTestParm.bNowAtherosBurstOn = TRUE;
+
+		RTMP_IO_WRITE32(pAd, PBF_MAX_PCNT, 0x1F3FBF9F);
+		DBGPRINT(RT_DEBUG_TRACE, ("Txburst 2\n"));
+	}
+	else
+	{
+		RTMP_IO_READ32(pAd, EDCA_AC0_CFG, &Data);
+		Data  &= 0xFFFFFF00;
+		RTMP_IO_WRITE32(pAd, EDCA_AC0_CFG, Data);
+
+		RTMP_IO_WRITE32(pAd, PBF_MAX_PCNT, 0x1F3F7F9F);
+		DBGPRINT(RT_DEBUG_TRACE, ("Txburst 3\n"));
+	}
+	
+#ifdef DOT11_N_SUPPORT	
+	// Re-check to turn on TX burst or not.
+	if ((pAd->CommonCfg.IOTestParm.bLastAtheros == TRUE) && ((STA_WEP_ON(pAd))||(STA_TKIP_ON(pAd))))
+	{
+		pAd->CommonCfg.IOTestParm.bNextDisableRxBA = TRUE;
+		if (pAd->CommonCfg.bEnableTxBurst)
+		{
+		    UINT32 MACValue = 0;
+			// Force disable  TXOP value in this case. The same action in MLMEUpdateProtect too.
+			// I didn't change PBF_MAX_PCNT setting. 
+			RTMP_IO_READ32(pAd, EDCA_AC0_CFG, &MACValue);
+			MACValue  &= 0xFFFFFF00;
+			RTMP_IO_WRITE32(pAd, EDCA_AC0_CFG, MACValue);
+			pAd->CommonCfg.IOTestParm.bNowAtherosBurstOn = FALSE;
+		}
+	}
+	else
+	{
+		pAd->CommonCfg.IOTestParm.bNextDisableRxBA = FALSE;
+	}
+#endif // DOT11_N_SUPPORT //
+
+	pAd->CommonCfg.IOTestParm.bLastAtheros = FALSE;
+
+#ifdef WPA_SUPPLICANT_SUPPORT
+	/*
+		If STA connects to different AP, STA couldn't send EAPOL_Start for WpaSupplicant.
+	*/
+	if ((pAd->StaCfg.BssType == BSS_INFRA) &&
+		(pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2) &&
+		(NdisEqualMemory(pAd->CommonCfg.Bssid, pAd->CommonCfg.LastBssid, MAC_ADDR_LEN) == FALSE) &&
+		(pAd->StaCfg.bLostAp == TRUE))
+	{
+		pAd->StaCfg.bLostAp = FALSE;
+	}
+#endif // WPA_SUPPLICANT_SUPPORT //
+	/*
+		Need to check this COPY. This COPY is from Windows Driver.
+	*/
+
+	COPY_MAC_ADDR(pAd->CommonCfg.LastBssid, pAd->CommonCfg.Bssid);
+	DBGPRINT(RT_DEBUG_TRACE, ("!!!pAd->bNextDisableRxBA= %d \n", pAd->CommonCfg.IOTestParm.bNextDisableRxBA));
+	// BSSID add in one MAC entry too.  Because in Tx, ASIC need to check Cipher and IV/EIV, BAbitmap
+	// Pther information in MACTab.Content[BSSID_WCID] is not necessary for driver.
+	// Note: As STA, The MACTab.Content[BSSID_WCID]. PairwiseKey and Shared Key for BSS0 are the same.
+
+	if (pAd->StaCfg.WepStatus <= Ndis802_11WEPDisabled)
+	{
+#ifdef WPA_SUPPLICANT_SUPPORT
+		if (pAd->StaCfg.WpaSupplicantUP &&
+			(pAd->StaCfg.WepStatus == Ndis802_11WEPEnabled) &&
+			(pAd->StaCfg.IEEE8021X == TRUE))
+			;
+		else
+#endif // WPA_SUPPLICANT_SUPPORT //     
+		{
+			pAd->StaCfg.PortSecured = WPA_802_1X_PORT_SECURED;
+			pAd->StaCfg.PrivacyFilter = Ndis802_11PrivFilterAcceptAll;
+		}
+	}
+
+	NdisAcquireSpinLock(&pAd->MacTabLock);
+	pEntry->PortSecured = pAd->StaCfg.PortSecured;
+	NdisReleaseSpinLock(&pAd->MacTabLock);
+
+    //
+	// Patch Atheros AP TX will breakdown issue.
+	// AP Model: DLink DWL-8200AP
+	//
+	if (INFRA_ON(pAd) && OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_WMM_INUSED) && STA_TKIP_ON(pAd))
+	{
+		RTMP_IO_WRITE32(pAd, RX_PARSER_CFG, 0x01);
+	}
+	else
+	{
+		RTMP_IO_WRITE32(pAd, RX_PARSER_CFG, 0x00);
+	}
+
+	RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS);
+	//RTMP_CLEAR_PSFLAG(pAd, fRTMP_PS_GO_TO_SLEEP_NOW);
+
+
+#ifdef DOT11_N_SUPPORT
+#ifdef DOT11N_DRAFT3
+	if (INFRA_ON(pAd))
+	{
+		if ((pAd->CommonCfg.bBssCoexEnable == TRUE) && (pAd->CommonCfg.Channel <= 14)
+			&& (pAd->StaActive.SupportedPhyInfo.bHtEnable == TRUE) && (pAd->MlmeAux.ExtCapInfo.BssCoexistMgmtSupport == 1))
+		{
+			OPSTATUS_SET_FLAG(pAd, fOP_STATUS_SCAN_2040);
+			BuildEffectedChannelList(pAd);
+			//pAd->CommonCfg.ScanParameter.Dot11BssWidthTriggerScanInt = 150;
+			DBGPRINT(RT_DEBUG_TRACE, ("LinkUP AP supports 20/40 BSS COEX !!! Dot11BssWidthTriggerScanInt[%d]\n",pAd->CommonCfg.Dot11BssWidthTriggerScanInt));	
+		}
+		else
+		{
+			DBGPRINT(RT_DEBUG_TRACE, ("not supports 20/40 BSS COEX !!! \n"));
+			DBGPRINT(RT_DEBUG_TRACE, ("pAd->CommonCfg.bBssCoexEnable %d !!! \n", pAd->CommonCfg.bBssCoexEnable));			
+			DBGPRINT(RT_DEBUG_TRACE, ("pAd->CommonCfg.Channel %d !!! \n",pAd->CommonCfg.Channel));			
+			DBGPRINT(RT_DEBUG_TRACE, ("pAd->StaActive.SupportedHtPhy.bHtEnable %d !!! \n",pAd->StaActive.SupportedPhyInfo.bHtEnable));				
+			DBGPRINT(RT_DEBUG_TRACE, ("pAd->MlmeAux.ExtCapInfo.BssCoexstSup %d !!! \n",pAd->MlmeAux.ExtCapInfo.BssCoexistMgmtSupport));				
+			DBGPRINT(RT_DEBUG_TRACE, ("pAd->CommonCfg.CentralChannel %d !!! \n",pAd->CommonCfg.CentralChannel));				
+			DBGPRINT(RT_DEBUG_TRACE, ("pAd->CommonCfg.PhyMode %d !!! \n",pAd->CommonCfg.PhyMode));		
+		}
+	}
+#endif // DOT11N_DRAFT3 //
+#endif // DOT11_N_SUPPORT //
+
+#ifdef WPA_SUPPLICANT_SUPPORT
+	/*
+		When AuthMode is WPA2-Enterprise and AP reboot or STA lost AP, 
+		WpaSupplicant would not send EapolStart to AP after STA re-connect to AP again.
+		In this case, driver would send EapolStart to AP.
+	*/
+	if ((pAd->StaCfg.BssType == BSS_INFRA) &&
+		(pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2) &&
+		(NdisEqualMemory(pAd->CommonCfg.Bssid, pAd->CommonCfg.LastBssid, MAC_ADDR_LEN)) &&
+		(pAd->StaCfg.bLostAp == TRUE))
+	{
+		WpaSendEapolStart(pAd, pAd->CommonCfg.Bssid);		
+		pAd->StaCfg.bLostAp = FALSE;
+	}
+#endif // WPA_SUPPLICANT_SUPPORT //
+
+}
+
+/*
+	==========================================================================
+
+	Routine	Description:
+		Disconnect current BSSID
+
+	Arguments:
+		pAd				- Pointer to our adapter
+		IsReqFromAP		- Request from AP
+		
+	Return Value:		
+		None
+		
+	IRQL = DISPATCH_LEVEL
+
+	Note:
+		We need more information to know it's this requst from AP.
+		If yes! we need to do extra handling, for example, remove the WPA key.
+		Otherwise on 4-way handshaking will faied, since the WPA key didn't be
+		remove while auto reconnect.
+		Disconnect request from AP, it means we will start afresh 4-way handshaking 
+		on WPA mode.
+
+	==========================================================================
+*/
+VOID LinkDown(
+	IN PRTMP_ADAPTER pAd,
+	IN  BOOLEAN      IsReqFromAP)
+{
+	UCHAR			    i, ByteValue = 0;
+
+#ifdef PCIE_PS_SUPPORT
+	BOOLEAN		Cancelled;
+#endif // PCIE_PS_SUPPORT //
+
+	// Do nothing if monitor mode is on
+	if (MONITOR_ON(pAd))
+		return;
+
+#ifdef RALINK_ATE
+	// Nothing to do in ATE mode. 
+	if (ATE_ON(pAd))
+		return;
+#endif // RALINK_ATE // 
+
+#ifdef PCIE_PS_SUPPORT
+	// Not allow go to sleep within linkdown function.
+	RTMP_CLEAR_PSFLAG(pAd, fRTMP_PS_CAN_GO_SLEEP);
+#endif // PCIE_PS_SUPPORT //
+
+
+		RTMPSendWirelessEvent(pAd, IW_STA_LINKDOWN_EVENT_FLAG, NULL, BSS0, 0); 
+
+	DBGPRINT(RT_DEBUG_TRACE, ("!!! LINK DOWN !!!\n"));
+	OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_AGGREGATION_INUSED);
+    
+#ifdef PCIE_PS_SUPPORT
+
+    if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_ADVANCE_POWER_SAVE_PCIE_DEVICE))
+    {
+	    BOOLEAN Cancelled;
+        pAd->Mlme.bPsPollTimerRunning = FALSE;
+        RTMPCancelTimer(&pAd->Mlme.PsPollTimer,	&Cancelled);
+    }
+
+	pAd->bPCIclkOff = FALSE;  
+#endif // PCIE_PS_SUPPORT //
+    if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_DOZE)
+/*||	RTMP_TEST_PSFLAG(pAd, fRTMP_PS_SET_PCI_CLK_OFF_COMMAND) */
+		|| RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_IDLE_RADIO_OFF))
+    {
+        AUTO_WAKEUP_STRUC AutoWakeupCfg;
+		AsicForceWakeup(pAd, TRUE);
+        AutoWakeupCfg.word = 0;
+	    RTMP_IO_WRITE32(pAd, AUTO_WAKEUP_CFG, AutoWakeupCfg.word);
+        OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_DOZE);
+    }
+
+	if (ADHOC_ON(pAd))		// Adhoc mode link down
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("!!! LINK DOWN 1!!!\n"));
+
+        // In an IBSS, a STA's SME responds to Deauthenticate frames from a STA by 
+        // deleting the PTKSA associated with that STA. (Spec. P802.11i/D10 P.19)
+        if (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2PSK)
+        {
+        	for (i=1; i<MAX_LEN_OF_MAC_TABLE; i++)
+            {
+                if (IS_ENTRY_CLIENT(&pAd->MacTab.Content[i]))
+                    MlmeDeAuthAction(pAd, &pAd->MacTab.Content[i], REASON_DEAUTH_STA_LEAVING, FALSE);
+            }
+        }
+
+		OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_ADHOC_ON);
+			OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED);
+			pAd->IndicateMediaState = NdisMediaStateDisconnected;
+		RTMP_IndicateMediaState(pAd);
+            pAd->ExtraInfo = GENERAL_LINK_DOWN;
+			BssTableDeleteEntry(&pAd->ScanTab, pAd->CommonCfg.Bssid, pAd->CommonCfg.Channel);
+		DBGPRINT(RT_DEBUG_TRACE, ("!!! MacTab.Size=%d !!!\n", pAd->MacTab.Size));
+	}
+	else					// Infra structure mode
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("!!! LINK DOWN 2!!!\n"));
+
+#ifdef QOS_DLS_SUPPORT
+		// DLS tear down frame must be sent before link down
+		// send DLS-TEAR_DOWN message
+		if (pAd->CommonCfg.bDLSCapable)
+		{
+			// tear down local dls table entry
+			for (i=0; i<MAX_NUM_OF_INIT_DLS_ENTRY; i++)
+			{
+				if (pAd->StaCfg.DLSEntry[i].Valid && (pAd->StaCfg.DLSEntry[i].Status == DLS_FINISH))
+				{
+					pAd->StaCfg.DLSEntry[i].Status = DLS_NONE;
+					RTMPSendDLSTearDownFrame(pAd, pAd->StaCfg.DLSEntry[i].MacAddr);
+				}
+			}
+
+			// tear down peer dls table entry
+			for (i=MAX_NUM_OF_INIT_DLS_ENTRY; i<MAX_NUM_OF_DLS_ENTRY; i++)
+			{
+				if (pAd->StaCfg.DLSEntry[i].Valid && (pAd->StaCfg.DLSEntry[i].Status ==  DLS_FINISH))
+				{
+					pAd->StaCfg.DLSEntry[i].Status = DLS_NONE;
+					RTMPSendDLSTearDownFrame(pAd, pAd->StaCfg.DLSEntry[i].MacAddr);
+				}
+			}
+		}
+#endif // QOS_DLS_SUPPORT //
+
+
+
+		OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_INFRA_ON); 
+		OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED); 
+
+
+		// Saved last SSID for linkup comparison
+		pAd->CommonCfg.LastSsidLen = pAd->CommonCfg.SsidLen;
+		NdisMoveMemory(pAd->CommonCfg.LastSsid, pAd->CommonCfg.Ssid, pAd->CommonCfg.LastSsidLen);
+		COPY_MAC_ADDR(pAd->CommonCfg.LastBssid, pAd->CommonCfg.Bssid);
+		if (pAd->MlmeAux.CurrReqIsFromNdis == TRUE)
+		{
+			pAd->IndicateMediaState = NdisMediaStateDisconnected;
+			RTMP_IndicateMediaState(pAd);
+            pAd->ExtraInfo = GENERAL_LINK_DOWN;
+			DBGPRINT(RT_DEBUG_TRACE, ("NDIS_STATUS_MEDIA_DISCONNECT Event A!\n"));
+			pAd->MlmeAux.CurrReqIsFromNdis = FALSE;
+		}
+		else
+		{
+			if ((pAd->StaCfg.PortSecured == WPA_802_1X_PORT_SECURED) ||
+				(pAd->StaCfg.AuthMode < Ndis802_11AuthModeWPA))
+			{
+	            //
+				// If disassociation request is from NDIS, then we don't need to delete BSSID from entry.
+				// Otherwise lost beacon or receive De-Authentication from AP, 
+				// then we should delete BSSID from BssTable.
+				// If we don't delete from entry, roaming will fail.
+				//
+				BssTableDeleteEntry(&pAd->ScanTab, pAd->CommonCfg.Bssid, pAd->CommonCfg.Channel);
+			}
+		}
+
+		// restore back to - 
+		//      1. long slot (20 us) or short slot (9 us) time
+		//      2. turn on/off RTS/CTS and/or CTS-to-self protection
+		//      3. short preamble
+		OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_BG_PROTECTION_INUSED);
+
+#ifdef EXT_BUILD_CHANNEL_LIST
+		// Country IE of the AP will be evaluated and will be used.
+		if (pAd->StaCfg.IEEE80211dClientMode != Rt802_11_D_None)
+		{
+			NdisMoveMemory(&pAd->CommonCfg.CountryCode[0], &pAd->StaCfg.StaOriCountryCode[0], 2);
+			pAd->CommonCfg.Geography = pAd->StaCfg.StaOriGeography;
+			BuildChannelListEx(pAd);
+		}
+#endif // EXT_BUILD_CHANNEL_LIST //
+		
+	}
+
+
+	for (i=1; i<MAX_LEN_OF_MAC_TABLE; i++)
+	{
+		if (IS_ENTRY_CLIENT(&pAd->MacTab.Content[i]))
+			MacTableDeleteEntry(pAd, pAd->MacTab.Content[i].Aid, pAd->MacTab.Content[i].Addr);
+	}
+	
+	AsicSetSlotTime(pAd, TRUE); //FALSE);
+	AsicSetEdcaParm(pAd, NULL);
+
+	// Set LED
+	RTMPSetLED(pAd, LED_LINK_DOWN);
+    pAd->LedIndicatorStrength = 0xF0;
+    RTMPSetSignalLED(pAd, -100);	// Force signal strength Led to be turned off, firmware is not done it.
+
+		AsicDisableSync(pAd);
+
+	pAd->Mlme.PeriodicRound = 0;
+	pAd->Mlme.OneSecPeriodicRound = 0;
+
+#ifdef DOT11_N_SUPPORT
+	NdisZeroMemory(&pAd->MlmeAux.HtCapability, sizeof(HT_CAPABILITY_IE));
+	NdisZeroMemory(&pAd->MlmeAux.AddHtInfo, sizeof(ADD_HT_INFO_IE));
+	pAd->MlmeAux.HtCapabilityLen = 0;
+	pAd->MlmeAux.NewExtChannelOffset = 0xff;
+
+	DBGPRINT(RT_DEBUG_TRACE, ("LinkDownCleanMlmeAux.ExtCapInfo!\n"));
+	NdisZeroMemory((PUCHAR)(&pAd->MlmeAux.ExtCapInfo), sizeof(EXT_CAP_INFO_ELEMENT));
+#endif // DOT11_N_SUPPORT //
+	
+	// Reset WPA-PSK state. Only reset when supplicant enabled
+	if (pAd->StaCfg.WpaState != SS_NOTUSE)
+	{
+		pAd->StaCfg.WpaState = SS_START;
+		// Clear Replay counter
+		NdisZeroMemory(pAd->StaCfg.ReplayCounter, 8);
+
+#ifdef QOS_DLS_SUPPORT
+		if (pAd->CommonCfg.bDLSCapable)
+			NdisZeroMemory(pAd->StaCfg.DlsReplayCounter, 8);
+#endif // QOS_DLS_SUPPORT //
+	}
+	
+	//
+	// if link down come from AP, we need to remove all WPA keys on WPA mode.
+	// otherwise will cause 4-way handshaking failed, since the WPA key not empty.
+	//
+	if ((IsReqFromAP) && (pAd->StaCfg.AuthMode >= Ndis802_11AuthModeWPA))
+	{
+		// Remove all WPA keys 
+		RTMPWPARemoveAllKeys(pAd);
+	}
+	
+	// 802.1x port control
+#ifdef WPA_SUPPLICANT_SUPPORT
+	// Prevent clear PortSecured here with static WEP
+	// NetworkManger set security policy first then set SSID to connect AP.
+	if (pAd->StaCfg.WpaSupplicantUP &&
+		(pAd->StaCfg.WepStatus == Ndis802_11WEPEnabled) &&
+		(pAd->StaCfg.IEEE8021X == FALSE))
+	{
+		pAd->StaCfg.PortSecured = WPA_802_1X_PORT_SECURED;
+	}
+	else
+#endif // WPA_SUPPLICANT_SUPPORT //
+	{
+		pAd->StaCfg.PortSecured = WPA_802_1X_PORT_NOT_SECURED;
+		pAd->StaCfg.PrivacyFilter = Ndis802_11PrivFilter8021xWEP;
+	}
+
+	NdisAcquireSpinLock(&pAd->MacTabLock);
+	NdisZeroMemory(&pAd->MacTab, sizeof(MAC_TABLE));
+	pAd->MacTab.Content[BSSID_WCID].PortSecured = pAd->StaCfg.PortSecured;
+	NdisReleaseSpinLock(&pAd->MacTabLock);
+	
+	pAd->StaCfg.MicErrCnt = 0;
+
+    pAd->IndicateMediaState = NdisMediaStateDisconnected;
+	// Update extra information to link is up
+	pAd->ExtraInfo = GENERAL_LINK_DOWN;
+
+    pAd->StaActive.SupportedPhyInfo.bHtEnable = FALSE;
+
+
+	// Clean association information
+	NdisZeroMemory(&pAd->StaCfg.AssocInfo, sizeof(NDIS_802_11_ASSOCIATION_INFORMATION));
+	pAd->StaCfg.AssocInfo.Length = sizeof(NDIS_802_11_ASSOCIATION_INFORMATION);
+	pAd->StaCfg.ReqVarIELen = 0;
+	pAd->StaCfg.ResVarIELen = 0;	
+
+	//
+	// Reset RSSI value after link down
+	//
+	NdisZeroMemory((PUCHAR)(&pAd->StaCfg.RssiSample), sizeof(pAd->StaCfg.RssiSample));
+
+	// Restore MlmeRate
+	pAd->CommonCfg.MlmeRate = pAd->CommonCfg.BasicMlmeRate;
+	pAd->CommonCfg.RtsRate = pAd->CommonCfg.BasicMlmeRate;
+
+#ifdef DOT11_N_SUPPORT
+	//
+	// After Link down, reset piggy-back setting in ASIC. Disable RDG.
+	//
+	if (pAd->CommonCfg.BBPCurrentBW == BW_40)
+	{
+		pAd->CommonCfg.BBPCurrentBW = BW_20;
+		RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R4, &ByteValue);
+		ByteValue &= (~0x18);
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R4, ByteValue);
+	}
+#endif // DOT11_N_SUPPORT //
+	// Reset DAC
+	RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R1, &ByteValue);
+	ByteValue &= (~0x18);
+	if (pAd->Antenna.field.TxPath == 2)
+	{
+	ByteValue |= 0x10;
+	}
+	RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R1, ByteValue);
+
+		RTMPSetPiggyBack(pAd,FALSE);
+		OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_PIGGYBACK_INUSED);
+
+#ifdef DOT11_N_SUPPORT
+	pAd->CommonCfg.BACapability.word = pAd->CommonCfg.REGBACapability.word;
+#endif // DOT11_N_SUPPORT //
+
+	// Restore all settings in the following.
+	AsicUpdateProtect(pAd, 0, (ALLN_SETPROTECT|CCKSETPROTECT|OFDMSETPROTECT), TRUE, FALSE);
+	AsicDisableRDG(pAd);
+	pAd->CommonCfg.IOTestParm.bCurrentAtheros = FALSE;
+	pAd->CommonCfg.IOTestParm.bNowAtherosBurstOn = FALSE;
+				
+#ifdef DOT11_N_SUPPORT
+#ifdef DOT11N_DRAFT3
+	OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_SCAN_2040);
+	pAd->CommonCfg.BSSCoexist2040.word = 0;
+	TriEventInit(pAd);
+	for (i = 0; i < (pAd->ChannelListNum - 1); i++)
+	{
+		pAd->ChannelList[i].bEffectedChannel = FALSE;
+	}
+#endif // DOT11N_DRAFT3 //
+#endif // DOT11_N_SUPPORT //
+
+	RTMP_IO_WRITE32(pAd, MAX_LEN_CFG, 0x1fff);
+	RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS);
+// Allow go to sleep after linkdown steps.
+#ifdef  PCIE_PS_SUPPORT
+
+	RTMP_SET_PSFLAG(pAd, fRTMP_PS_CAN_GO_SLEEP);
+#endif // PCIE_PS_SUPPORT //
+
+#ifdef WPA_SUPPLICANT_SUPPORT
+#ifndef NATIVE_WPA_SUPPLICANT_SUPPORT
+	if (pAd->StaCfg.WpaSupplicantUP) {
+		//send disassociate event to wpa_supplicant
+		RtmpOSWrielessEventSend(pAd, IWEVCUSTOM, RT_DISASSOC_EVENT_FLAG, NULL, NULL, 0);
+	}
+#endif // NATIVE_WPA_SUPPLICANT_SUPPORT //
+#endif // WPA_SUPPLICANT_SUPPORT //            
+			
+#ifdef NATIVE_WPA_SUPPLICANT_SUPPORT
+	RtmpOSWrielessEventSend(pAd, SIOCGIWAP, -1, NULL, NULL, 0);
+#endif // NATIVE_WPA_SUPPLICANT_SUPPORT //        
+
+#ifdef RT30xx
+	if ((IS_RT30xx(pAd) || IS_RT3090(pAd)||IS_RT3390(pAd)) 
+		&&(pAd->Antenna.field.RxPath>1||pAd->Antenna.field.TxPath>1))
+	{
+		RTMP_ASIC_MMPS_DISABLE(pAd);
+	}
+#endif // RT30xx //
+
+}
+
+/*
+	==========================================================================
+	Description:
+
+	IRQL = DISPATCH_LEVEL
+	
+	==========================================================================
+*/
+VOID IterateOnBssTab(
+	IN PRTMP_ADAPTER pAd) 
+{
+	MLME_START_REQ_STRUCT   StartReq;
+	MLME_JOIN_REQ_STRUCT    JoinReq;
+	ULONG                   BssIdx;
+	BSS_ENTRY 				*pInBss = NULL;
+
+	// Change the wepstatus to original wepstatus
+	pAd->StaCfg.WepStatus   = pAd->StaCfg.OrigWepStatus;
+	pAd->StaCfg.PairCipher  = pAd->StaCfg.OrigWepStatus;
+	pAd->StaCfg.GroupCipher = pAd->StaCfg.OrigWepStatus;
+
+	BssIdx = pAd->MlmeAux.BssIdx;
+
+	if (pAd->StaCfg.BssType == BSS_ADHOC)
+	{		
+		if (BssIdx < pAd->MlmeAux.SsidBssTab.BssNr) 
+		{
+			pInBss = &pAd->MlmeAux.SsidBssTab.BssEntry[BssIdx];
+			if ((pAd->StaCfg.AuthMode == pInBss->AuthMode) &&
+				(pAd->StaCfg.WepStatus == pInBss->WepStatus))
+			{
+				DBGPRINT(RT_DEBUG_TRACE, ("CNTL - iterate BSS %ld of %d\n", BssIdx, pAd->MlmeAux.SsidBssTab.BssNr));
+				JoinParmFill(pAd, &JoinReq, BssIdx);
+				MlmeEnqueue(pAd, SYNC_STATE_MACHINE, MT2_MLME_JOIN_REQ, sizeof(MLME_JOIN_REQ_STRUCT),
+							&JoinReq, 0);
+				pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_JOIN;
+				return;
+			}
+		}
+		DBGPRINT(RT_DEBUG_TRACE, ("CNTL - All BSS fail; start a new ADHOC (Ssid=%s)...\n",pAd->MlmeAux.Ssid));
+		StartParmFill(pAd, &StartReq, (PCHAR)pAd->MlmeAux.Ssid, pAd->MlmeAux.SsidLen);
+		MlmeEnqueue(pAd, SYNC_STATE_MACHINE, MT2_MLME_START_REQ, sizeof(MLME_START_REQ_STRUCT), &StartReq, 0);
+		
+		pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_START;
+	}
+	else if ((BssIdx < pAd->MlmeAux.SsidBssTab.BssNr) &&
+			 (pAd->StaCfg.BssType == BSS_INFRA)) 
+	{
+		pInBss = &pAd->MlmeAux.SsidBssTab.BssEntry[BssIdx];
+		// Check cipher suite, AP must have more secured cipher than station setting
+		// Set the Pairwise and Group cipher to match the intended AP setting
+		// We can only connect to AP with less secured cipher setting
+		if ((pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA) || (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPAPSK))
+		{
+			pAd->StaCfg.GroupCipher = pInBss->WPA.GroupCipher;
+			
+			if (pAd->StaCfg.WepStatus == pInBss->WPA.PairCipher)
+				pAd->StaCfg.PairCipher = pInBss->WPA.PairCipher;
+			else if (pInBss->WPA.PairCipherAux != Ndis802_11WEPDisabled)
+				pAd->StaCfg.PairCipher = pInBss->WPA.PairCipherAux;
+			else	// There is no PairCipher Aux, downgrade our capability to TKIP
+				pAd->StaCfg.PairCipher = Ndis802_11Encryption2Enabled;			
+		}
+		else if ((pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2) || (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2PSK))
+		{
+			pAd->StaCfg.GroupCipher = pInBss->WPA2.GroupCipher;
+			
+			if (pAd->StaCfg.WepStatus == pInBss->WPA2.PairCipher)
+				pAd->StaCfg.PairCipher = pInBss->WPA2.PairCipher;
+			else if (pInBss->WPA2.PairCipherAux != Ndis802_11WEPDisabled)
+				pAd->StaCfg.PairCipher = pInBss->WPA2.PairCipherAux;
+			else	// There is no PairCipher Aux, downgrade our capability to TKIP
+				pAd->StaCfg.PairCipher = Ndis802_11Encryption2Enabled;			
+
+			// RSN capability
+			pAd->StaCfg.RsnCapability = pInBss->WPA2.RsnCapability;
+		}
+		
+		// Set Mix cipher flag
+		pAd->StaCfg.bMixCipher = (pAd->StaCfg.PairCipher == pAd->StaCfg.GroupCipher) ? FALSE : TRUE;
+		/*if (pAd->StaCfg.bMixCipher == TRUE)
+		{
+			// If mix cipher, re-build RSNIE  
+			RTMPMakeRSNIE(pAd, pAd->StaCfg.AuthMode, pAd->StaCfg.WepStatus, 0);
+		}*/
+
+		DBGPRINT(RT_DEBUG_TRACE, ("CNTL - iterate BSS %ld of %d\n", BssIdx, pAd->MlmeAux.SsidBssTab.BssNr));
+		JoinParmFill(pAd, &JoinReq, BssIdx);
+		MlmeEnqueue(pAd, SYNC_STATE_MACHINE, MT2_MLME_JOIN_REQ, sizeof(MLME_JOIN_REQ_STRUCT),
+					&JoinReq, 0);
+		pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_JOIN;
+	}
+	else // no more BSS
+	{
+
+#ifdef DOT11_N_SUPPORT
+#endif // DOT11_N_SUPPORT //			
+		{
+			AsicSwitchChannel(pAd, pAd->CommonCfg.Channel, FALSE);
+			AsicLockChannel(pAd, pAd->CommonCfg.Channel);
+			BssTableInit(&pAd->ScanTab);
+			DBGPRINT(RT_DEBUG_TRACE, ("CNTL - All roaming failed, restore to channel %d, Total BSS[%02d]\n",pAd->CommonCfg.Channel, pAd->ScanTab.BssNr));
+		}
+
+		if (pAd->MlmeAux.SsidBssTab.BssNr == 1)
+		{
+			pAd->MlmeAux.SsidBssTab.BssNr = 0;
+			BssTableDeleteEntry(&pAd->ScanTab, 
+								pAd->MlmeAux.SsidBssTab.BssEntry[0].Bssid, 
+								pAd->MlmeAux.SsidBssTab.BssEntry[0].Channel);
+		}
+
+		pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE;
+	} 
+}
+
+// for re-association only
+// IRQL = DISPATCH_LEVEL
+VOID IterateOnBssTab2(
+	IN PRTMP_ADAPTER pAd) 
+{
+	MLME_REASSOC_REQ_STRUCT ReassocReq;
+	ULONG                   BssIdx;
+	BSS_ENTRY               *pBss;
+
+	BssIdx = pAd->MlmeAux.RoamIdx;
+	pBss = &pAd->MlmeAux.RoamTab.BssEntry[BssIdx];
+
+	if (BssIdx < pAd->MlmeAux.RoamTab.BssNr)
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("CNTL - iterate BSS %ld of %d\n", BssIdx, pAd->MlmeAux.RoamTab.BssNr));
+
+		AsicSwitchChannel(pAd, pBss->Channel, FALSE);
+		AsicLockChannel(pAd, pBss->Channel);
+
+		// reassociate message has the same structure as associate message
+		AssocParmFill(pAd, &ReassocReq, pBss->Bssid, pBss->CapabilityInfo, 
+					  ASSOC_TIMEOUT, pAd->StaCfg.DefaultListenCount);
+		MlmeEnqueue(pAd, ASSOC_STATE_MACHINE, MT2_MLME_REASSOC_REQ, 
+					sizeof(MLME_REASSOC_REQ_STRUCT), &ReassocReq, 0);
+
+		pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_REASSOC;
+	}
+	else // no more BSS
+	{
+
+#ifdef DOT11_N_SUPPORT
+#endif // DOT11_N_SUPPORT //			
+		{
+			AsicSwitchChannel(pAd, pAd->CommonCfg.Channel, FALSE);
+			AsicLockChannel(pAd, pAd->CommonCfg.Channel);
+			DBGPRINT(RT_DEBUG_TRACE, ("CNTL - All roaming failed, restore to channel %d, Total BSS[%02d]\n",pAd->CommonCfg.Channel, pAd->ScanTab.BssNr));
+		}
+
+		pAd->Mlme.CntlMachine.CurrState = CNTL_IDLE;
+	} 
+}
+
+/*
+	==========================================================================
+	Description:
+
+	IRQL = DISPATCH_LEVEL
+	
+	==========================================================================
+*/
+VOID JoinParmFill(
+	IN PRTMP_ADAPTER pAd, 
+	IN OUT MLME_JOIN_REQ_STRUCT *JoinReq, 
+	IN ULONG BssIdx) 
+{
+	JoinReq->BssIdx = BssIdx;
+}
+
+/*
+	==========================================================================
+	Description:
+
+	IRQL = DISPATCH_LEVEL
+	
+	==========================================================================
+*/
+VOID ScanParmFill(
+	IN PRTMP_ADAPTER pAd, 
+	IN OUT MLME_SCAN_REQ_STRUCT *ScanReq, 
+	IN STRING Ssid[], 
+	IN UCHAR SsidLen, 
+	IN UCHAR BssType, 
+	IN UCHAR ScanType) 
+{
+    NdisZeroMemory(ScanReq->Ssid, MAX_LEN_OF_SSID);
+	ScanReq->SsidLen = SsidLen;
+	NdisMoveMemory(ScanReq->Ssid, Ssid, SsidLen);
+	ScanReq->BssType = BssType;
+	ScanReq->ScanType = ScanType;
+}
+
+#ifdef QOS_DLS_SUPPORT
+/*
+	==========================================================================
+	Description:
+
+	IRQL = DISPATCH_LEVEL
+	
+	==========================================================================
+*/
+VOID DlsParmFill(
+	IN PRTMP_ADAPTER pAd, 
+	IN OUT MLME_DLS_REQ_STRUCT *pDlsReq,
+	IN PRT_802_11_DLS pDls,
+	IN USHORT reason) 
+{
+	pDlsReq->pDLS = pDls;
+	pDlsReq->Reason = reason;
+}
+#endif // QOS_DLS_SUPPORT //
+
+/*
+	==========================================================================
+	Description:
+
+	IRQL = DISPATCH_LEVEL
+	
+	==========================================================================
+*/
+VOID StartParmFill(
+	IN PRTMP_ADAPTER pAd, 
+	IN OUT MLME_START_REQ_STRUCT *StartReq, 
+	IN CHAR Ssid[], 
+	IN UCHAR SsidLen) 
+{
+	ASSERT(SsidLen <= MAX_LEN_OF_SSID);
+	NdisMoveMemory(StartReq->Ssid, Ssid, SsidLen); 
+	StartReq->SsidLen = SsidLen;
+}
+
+/*
+	==========================================================================
+	Description:
+
+	IRQL = DISPATCH_LEVEL
+	
+	==========================================================================
+*/
+VOID AuthParmFill(
+	IN PRTMP_ADAPTER pAd, 
+	IN OUT MLME_AUTH_REQ_STRUCT *AuthReq, 
+	IN PUCHAR pAddr, 
+	IN USHORT Alg) 
+{
+	COPY_MAC_ADDR(AuthReq->Addr, pAddr);
+	AuthReq->Alg = Alg;
+	AuthReq->Timeout = AUTH_TIMEOUT;
+}
+
+/*
+	==========================================================================
+	Description:
+
+	IRQL = DISPATCH_LEVEL
+	
+	==========================================================================
+ */
+#ifdef RTMP_MAC_PCI
+VOID ComposePsPoll(
+	IN PRTMP_ADAPTER pAd)
+{
+	NdisZeroMemory(&pAd->PsPollFrame, sizeof(PSPOLL_FRAME));
+	pAd->PsPollFrame.FC.Type = BTYPE_CNTL;
+	pAd->PsPollFrame.FC.SubType = SUBTYPE_PS_POLL;
+	pAd->PsPollFrame.Aid = pAd->StaActive.Aid | 0xC000;
+	COPY_MAC_ADDR(pAd->PsPollFrame.Bssid, pAd->CommonCfg.Bssid);
+	COPY_MAC_ADDR(pAd->PsPollFrame.Ta, pAd->CurrentAddress);
+}
+
+// IRQL = DISPATCH_LEVEL
+VOID ComposeNullFrame(
+	IN PRTMP_ADAPTER pAd)
+{
+	NdisZeroMemory(&pAd->NullFrame, sizeof(HEADER_802_11));
+	pAd->NullFrame.FC.Type = BTYPE_DATA;
+	pAd->NullFrame.FC.SubType = SUBTYPE_NULL_FUNC;
+	pAd->NullFrame.FC.ToDs = 1;
+	COPY_MAC_ADDR(pAd->NullFrame.Addr1, pAd->CommonCfg.Bssid);
+	COPY_MAC_ADDR(pAd->NullFrame.Addr2, pAd->CurrentAddress);
+	COPY_MAC_ADDR(pAd->NullFrame.Addr3, pAd->CommonCfg.Bssid);
+}
+#endif // RTMP_MAC_PCI //
+
+
+
+
+/*
+	==========================================================================
+	Description:
+		Pre-build a BEACON frame in the shared memory
+
+	IRQL = PASSIVE_LEVEL
+	IRQL = DISPATCH_LEVEL
+	
+	==========================================================================
+*/
+ULONG MakeIbssBeacon(
+	IN PRTMP_ADAPTER pAd) 
+{
+	UCHAR         DsLen = 1, IbssLen = 2;
+	UCHAR         LocalErpIe[3] = {IE_ERP, 1, 0x04};
+	HEADER_802_11 BcnHdr;
+	USHORT        CapabilityInfo;
+	LARGE_INTEGER FakeTimestamp;
+	ULONG         FrameLen = 0;
+	PTXWI_STRUC	  pTxWI = &pAd->BeaconTxWI;
+	UCHAR         *pBeaconFrame = pAd->BeaconBuf;
+	BOOLEAN       Privacy;
+	UCHAR         SupRate[MAX_LEN_OF_SUPPORTED_RATES];
+	UCHAR         SupRateLen = 0;
+	UCHAR         ExtRate[MAX_LEN_OF_SUPPORTED_RATES];
+	UCHAR         ExtRateLen = 0;
+	
+	if ((pAd->CommonCfg.PhyMode == PHY_11B) && (pAd->CommonCfg.Channel <= 14))
+	{
+		SupRate[0] = 0x82; // 1 mbps
+		SupRate[1] = 0x84; // 2 mbps
+		SupRate[2] = 0x8b; // 5.5 mbps
+		SupRate[3] = 0x96; // 11 mbps
+		SupRateLen = 4;
+		ExtRateLen = 0;
+	}
+	else if (pAd->CommonCfg.Channel > 14)
+	{
+		SupRate[0]  = 0x8C;    // 6 mbps, in units of 0.5 Mbps, basic rate
+		SupRate[1]  = 0x12;    // 9 mbps, in units of 0.5 Mbps
+		SupRate[2]  = 0x98;    // 12 mbps, in units of 0.5 Mbps, basic rate
+		SupRate[3]  = 0x24;    // 18 mbps, in units of 0.5 Mbps
+		SupRate[4]  = 0xb0;    // 24 mbps, in units of 0.5 Mbps, basic rate
+		SupRate[5]  = 0x48;    // 36 mbps, in units of 0.5 Mbps
+		SupRate[6]  = 0x60;    // 48 mbps, in units of 0.5 Mbps
+		SupRate[7]  = 0x6c;    // 54 mbps, in units of 0.5 Mbps
+		SupRateLen  = 8;
+		ExtRateLen  = 0;
+
+		//
+		// Also Update MlmeRate & RtsRate for G only & A only
+		//
+		pAd->CommonCfg.MlmeRate = RATE_6;
+		pAd->CommonCfg.RtsRate = RATE_6;
+		pAd->CommonCfg.MlmeTransmit.field.MODE = MODE_OFDM;
+		pAd->CommonCfg.MlmeTransmit.field.MCS = OfdmRateToRxwiMCS[pAd->CommonCfg.MlmeRate];
+		pAd->MacTab.Content[BSS0Mcast_WCID].HTPhyMode.field.MODE = MODE_OFDM;
+		pAd->MacTab.Content[BSS0Mcast_WCID].HTPhyMode.field.MCS = OfdmRateToRxwiMCS[pAd->CommonCfg.MlmeRate];
+	}
+	else
+	{
+		SupRate[0] = 0x82; // 1 mbps
+		SupRate[1] = 0x84; // 2 mbps
+		SupRate[2] = 0x8b; // 5.5 mbps
+		SupRate[3] = 0x96; // 11 mbps
+		SupRateLen = 4;
+
+		ExtRate[0]  = 0x0C;    // 6 mbps, in units of 0.5 Mbps,
+		ExtRate[1]  = 0x12;    // 9 mbps, in units of 0.5 Mbps
+		ExtRate[2]  = 0x18;    // 12 mbps, in units of 0.5 Mbps,
+		ExtRate[3]  = 0x24;    // 18 mbps, in units of 0.5 Mbps
+		ExtRate[4]  = 0x30;    // 24 mbps, in units of 0.5 Mbps,
+		ExtRate[5]  = 0x48;    // 36 mbps, in units of 0.5 Mbps
+		ExtRate[6]  = 0x60;    // 48 mbps, in units of 0.5 Mbps
+		ExtRate[7]  = 0x6c;    // 54 mbps, in units of 0.5 Mbps		
+		ExtRateLen  = 8;
+	}
+
+	pAd->StaActive.SupRateLen = SupRateLen;
+	NdisMoveMemory(pAd->StaActive.SupRate, SupRate, SupRateLen);
+	pAd->StaActive.ExtRateLen = ExtRateLen;
+	NdisMoveMemory(pAd->StaActive.ExtRate, ExtRate, ExtRateLen);
+	
+	// compose IBSS beacon frame
+	MgtMacHeaderInit(pAd, &BcnHdr, SUBTYPE_BEACON, 0, BROADCAST_ADDR, pAd->CommonCfg.Bssid);
+	Privacy = (pAd->StaCfg.WepStatus == Ndis802_11Encryption1Enabled) || 
+			  (pAd->StaCfg.WepStatus == Ndis802_11Encryption2Enabled) || 
+			  (pAd->StaCfg.WepStatus == Ndis802_11Encryption3Enabled);
+	CapabilityInfo = CAP_GENERATE(0, 1, Privacy, (pAd->CommonCfg.TxPreamble == Rt802_11PreambleShort), 0, 0);
+
+	MakeOutgoingFrame(pBeaconFrame,                &FrameLen,
+					  sizeof(HEADER_802_11),           &BcnHdr, 
+					  TIMESTAMP_LEN,                   &FakeTimestamp,
+					  2,                               &pAd->CommonCfg.BeaconPeriod,
+					  2,                               &CapabilityInfo,
+					  1,                               &SsidIe, 
+					  1,                               &pAd->CommonCfg.SsidLen, 
+					  pAd->CommonCfg.SsidLen,          pAd->CommonCfg.Ssid,
+					  1,                               &SupRateIe, 
+					  1,                               &SupRateLen,
+					  SupRateLen,                      SupRate,
+					  1,                               &DsIe, 
+					  1,                               &DsLen, 
+					  1,                               &pAd->CommonCfg.Channel,
+					  1,                               &IbssIe, 
+					  1,                               &IbssLen, 
+					  2,                               &pAd->StaActive.AtimWin,
+					  END_OF_ARGS);
+
+	// add ERP_IE and EXT_RAE IE of in 802.11g
+	if (ExtRateLen)
+	{
+		ULONG	tmp;
+
+		MakeOutgoingFrame(pBeaconFrame + FrameLen,         &tmp,
+						  3,                               LocalErpIe,
+						  1,                               &ExtRateIe,
+						  1,                               &ExtRateLen,
+						  ExtRateLen,                      ExtRate,
+						  END_OF_ARGS);
+		FrameLen += tmp;
+	}
+
+	// If adhoc secruity is set for WPA-None, append the cipher suite IE
+	if (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPANone)
+	{
+		ULONG   tmp;
+	    UCHAR   RSNIe = IE_WPA;
+        RTMPMakeRSNIE(pAd, pAd->StaCfg.AuthMode, pAd->StaCfg.WepStatus, BSS0);
+        
+		MakeOutgoingFrame(pBeaconFrame + FrameLen,        	&tmp,
+						  1,                              	&RSNIe,
+						  1,                            	&pAd->StaCfg.RSNIE_Len,
+						  pAd->StaCfg.RSNIE_Len,      		pAd->StaCfg.RSN_IE,
+						  END_OF_ARGS);
+		FrameLen += tmp;	
+	}
+
+#ifdef DOT11_N_SUPPORT
+	if ((pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED) && (pAd->StaCfg.bAdhocN == TRUE))
+	{
+		ULONG TmpLen;
+		UCHAR HtLen, HtLen1;
+
+#ifdef RT_BIG_ENDIAN
+		HT_CAPABILITY_IE HtCapabilityTmp;
+		ADD_HT_INFO_IE	addHTInfoTmp;
+		USHORT	b2lTmp, b2lTmp2;
+#endif
+
+		// add HT Capability IE 
+		HtLen = sizeof(pAd->CommonCfg.HtCapability);
+		HtLen1 = sizeof(pAd->CommonCfg.AddHTInfo);
+#ifndef RT_BIG_ENDIAN
+		MakeOutgoingFrame(pBeaconFrame+FrameLen,	&TmpLen,
+						  1,						&HtCapIe,
+						  1,						&HtLen,
+						  HtLen,					&pAd->CommonCfg.HtCapability, 
+						  1,						&AddHtInfoIe,
+						  1,						&HtLen1,
+						  HtLen1,					&pAd->CommonCfg.AddHTInfo, 
+						  END_OF_ARGS);
+#else
+		NdisMoveMemory(&HtCapabilityTmp, &pAd->CommonCfg.HtCapability, HtLen);
+		*(USHORT *)(&HtCapabilityTmp.HtCapInfo) = SWAP16(*(USHORT *)(&HtCapabilityTmp.HtCapInfo));
+		*(USHORT *)(&HtCapabilityTmp.ExtHtCapInfo) = SWAP16(*(USHORT *)(&HtCapabilityTmp.ExtHtCapInfo));
+
+		NdisMoveMemory(&addHTInfoTmp, &pAd->CommonCfg.AddHTInfo, HtLen1);
+		*(USHORT *)(&addHTInfoTmp.AddHtInfo2) = SWAP16(*(USHORT *)(&addHTInfoTmp.AddHtInfo2));
+		*(USHORT *)(&addHTInfoTmp.AddHtInfo3) = SWAP16(*(USHORT *)(&addHTInfoTmp.AddHtInfo3));
+
+		MakeOutgoingFrame(pBeaconFrame+FrameLen,	&TmpLen,
+						  1,						&HtCapIe,
+						  1,						&HtLen,
+						  HtLen,					&HtCapabilityTmp, 
+						  1,						&AddHtInfoIe,
+						  1,						&HtLen1,
+						  HtLen1,					&addHTInfoTmp, 
+						  END_OF_ARGS);
+#endif
+		FrameLen += TmpLen;
+	}
+#endif // DOT11_N_SUPPORT //	
+
+	//beacon use reserved WCID 0xff
+    if (pAd->CommonCfg.Channel > 14)
+    {
+		RTMPWriteTxWI(pAd, pTxWI, FALSE, FALSE,  TRUE, FALSE, FALSE, TRUE, 0, 0xff, FrameLen, 
+			PID_MGMT, PID_BEACON, RATE_1, IFS_HTTXOP, FALSE, &pAd->CommonCfg.MlmeTransmit);
+    }
+    else
+    {
+        // Set to use 1Mbps for Adhoc beacon.
+		HTTRANSMIT_SETTING Transmit;
+        Transmit.word = 0;
+        RTMPWriteTxWI(pAd, pTxWI, FALSE, FALSE,  TRUE, FALSE, FALSE, TRUE, 0, 0xff, FrameLen, 
+    		PID_MGMT, PID_BEACON, RATE_1, IFS_HTTXOP, FALSE, &Transmit);
+    }
+	
+#ifdef RT_BIG_ENDIAN
+	RTMPFrameEndianChange(pAd, pBeaconFrame, DIR_WRITE, FALSE);
+	RTMPWIEndianChange((PUCHAR)pTxWI, TYPE_TXWI);
+#endif
+
+    DBGPRINT(RT_DEBUG_TRACE, ("MakeIbssBeacon (len=%ld), SupRateLen=%d, ExtRateLen=%d, Channel=%d, PhyMode=%d\n", 
+					FrameLen, SupRateLen, ExtRateLen, pAd->CommonCfg.Channel, pAd->CommonCfg.PhyMode));
+	return FrameLen;
+}
+
+VOID InitChannelRelatedValue(
+	IN PRTMP_ADAPTER pAd)
+{
+	UCHAR	Value = 0;
+	UINT32	Data = 0;
+
+#ifdef RTMP_MAC_PCI
+	// In power save , We will force use 1R.
+	// So after link up, check Rx antenna # again.
+	RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R3, &Value);
+	if(pAd->Antenna.field.RxPath == 3)
+	{
+		Value |= (0x10);
+	}
+	else if(pAd->Antenna.field.RxPath == 2)
+	{
+		Value |= (0x8);
+	}
+	else if(pAd->Antenna.field.RxPath == 1)
+	{
+		Value |= (0x0);
+	}
+	RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R3, Value);
+	pAd->StaCfg.BBPR3 = Value;
+#endif // RTMP_MAC_PCI //
+
+	pAd->CommonCfg.CentralChannel = pAd->MlmeAux.CentralChannel;
+	pAd->CommonCfg.Channel = pAd->MlmeAux.Channel;
+#ifdef DOT11_N_SUPPORT
+	// Change to AP channel
+    if ((pAd->CommonCfg.CentralChannel > pAd->CommonCfg.Channel) && (pAd->MlmeAux.HtCapability.HtCapInfo.ChannelWidth == BW_40))
+	{	
+		// Must using 40MHz.
+		pAd->CommonCfg.BBPCurrentBW = BW_40;
+		AsicSwitchChannel(pAd, pAd->CommonCfg.CentralChannel, FALSE);
+		AsicLockChannel(pAd, pAd->CommonCfg.CentralChannel);
+			
+		RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R4, &Value);
+		Value &= (~0x18);
+		Value |= 0x10;
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R4, Value);
+		
+		//  RX : control channel at lower 
+		RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R3, &Value);
+		Value &= (~0x20);
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R3, Value);
+#ifdef RTMP_MAC_PCI
+        pAd->StaCfg.BBPR3 = Value;
+#endif // RTMP_MAC_PCI //
+
+		RTMP_IO_READ32(pAd, TX_BAND_CFG, &Data);
+		Data &= 0xfffffffe;
+		RTMP_IO_WRITE32(pAd, TX_BAND_CFG, Data);
+		
+		if (pAd->MACVersion == 0x28600100)
+		{
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R69, 0x1A);
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R70, 0x0A);
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R73, 0x16);
+            DBGPRINT(RT_DEBUG_TRACE, ("!!!rt2860C !!! \n" ));
+		}	
+
+		DBGPRINT(RT_DEBUG_TRACE, ("!!!40MHz Lower !!! Control Channel at Below. Central = %d \n", pAd->CommonCfg.CentralChannel ));
+	}
+	else if ((pAd->CommonCfg.CentralChannel < pAd->CommonCfg.Channel) && (pAd->MlmeAux.HtCapability.HtCapInfo.ChannelWidth == BW_40))
+    {	
+	    // Must using 40MHz.
+		pAd->CommonCfg.BBPCurrentBW = BW_40;
+		AsicSwitchChannel(pAd, pAd->CommonCfg.CentralChannel, FALSE);
+	    AsicLockChannel(pAd, pAd->CommonCfg.CentralChannel);
+		
+		RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R4, &Value);
+		Value &= (~0x18);
+		Value |= 0x10;
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R4, Value);
+		
+		RTMP_IO_READ32(pAd, TX_BAND_CFG, &Data);
+		Data |= 0x1;
+		RTMP_IO_WRITE32(pAd, TX_BAND_CFG, Data);
+		
+		RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R3, &Value);
+	    Value |= (0x20);
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R3, Value);
+#ifdef RTMP_MAC_PCI
+        pAd->StaCfg.BBPR3 = Value;
+#endif // RTMP_MAC_PCI //
+	
+		if (pAd->MACVersion == 0x28600100)
+		{
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R69, 0x1A);
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R70, 0x0A);
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R73, 0x16);
+			    DBGPRINT(RT_DEBUG_TRACE, ("!!!rt2860C !!! \n" ));
+		}
+
+	    DBGPRINT(RT_DEBUG_TRACE, ("!!! 40MHz Upper !!! Control Channel at UpperCentral = %d \n", pAd->CommonCfg.CentralChannel ));
+    }
+    else
+#endif // DOT11_N_SUPPORT //
+    {
+	    pAd->CommonCfg.BBPCurrentBW = BW_20;
+		pAd->CommonCfg.CentralChannel = pAd->CommonCfg.Channel;
+		AsicSwitchChannel(pAd, pAd->CommonCfg.Channel, FALSE);
+		AsicLockChannel(pAd, pAd->CommonCfg.Channel);
+		
+		RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R4, &Value);
+		Value &= (~0x18);
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R4, Value);
+		
+		RTMP_IO_READ32(pAd, TX_BAND_CFG, &Data);
+		Data &= 0xfffffffe;
+		RTMP_IO_WRITE32(pAd, TX_BAND_CFG, Data);
+		
+		RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R3, &Value);
+		Value &= (~0x20);
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R3, Value);
+#ifdef RTMP_MAC_PCI
+        pAd->StaCfg.BBPR3 = Value;
+#endif // RTMP_MAC_PCI //
+		
+		if (pAd->MACVersion == 0x28600100)
+		{
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R69, 0x16);
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R70, 0x08);
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R73, 0x11);
+			DBGPRINT(RT_DEBUG_TRACE, ("!!!rt2860C !!! \n" ));
+		}
+		
+	    DBGPRINT(RT_DEBUG_TRACE, ("!!! 20MHz !!! \n" ));
+	}
+
+	RTMPSetAGCInitValue(pAd, pAd->CommonCfg.BBPCurrentBW);
+}
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/dls.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/dls.c
new file mode 100644
index 000000000..5e154940b
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/dls.c
@@ -0,0 +1,2235 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+    Module Name:
+    dls.c
+ 
+    Abstract:
+    Handle WMM-DLS state machine
+ 
+    Revision History:
+    Who         When          What
+    --------    ----------    ----------------------------------------------
+    Rory Chen   02-14-2006
+	Arvin Tai	06-03-2008	  Modified for RT28xx
+ */
+
+#include "rt_config.h"
+
+/*
+    ==========================================================================
+    Description:
+        dls state machine init, including state transition and timer init
+    Parameters:
+        Sm - pointer to the dls state machine
+    Note:
+        The state machine looks like this
+        
+                            DLS_IDLE
+    MT2_MLME_DLS_REQUEST   MlmeDlsReqAction
+    MT2_PEER_DLS_REQUEST   PeerDlsReqAction
+    MT2_PEER_DLS_RESPONSE  PeerDlsRspAction
+    MT2_MLME_DLS_TEARDOWN  MlmeTearDownAction
+    MT2_PEER_DLS_TEARDOWN  PeerTearDownAction
+        
+	IRQL = PASSIVE_LEVEL
+
+    ==========================================================================
+ */
+void DlsStateMachineInit(
+    IN PRTMP_ADAPTER pAd, 
+    IN STATE_MACHINE *Sm, 
+    OUT STATE_MACHINE_FUNC Trans[]) 
+{
+	UCHAR	i;
+	
+    StateMachineInit(Sm, (STATE_MACHINE_FUNC*)Trans, MAX_DLS_STATE, MAX_DLS_MSG, (STATE_MACHINE_FUNC)Drop, DLS_IDLE, DLS_MACHINE_BASE);
+     
+    // the first column
+    StateMachineSetAction(Sm, DLS_IDLE, MT2_MLME_DLS_REQ, (STATE_MACHINE_FUNC)MlmeDlsReqAction);
+    StateMachineSetAction(Sm, DLS_IDLE, MT2_PEER_DLS_REQ, (STATE_MACHINE_FUNC)PeerDlsReqAction);
+    StateMachineSetAction(Sm, DLS_IDLE, MT2_PEER_DLS_RSP, (STATE_MACHINE_FUNC)PeerDlsRspAction);
+    StateMachineSetAction(Sm, DLS_IDLE, MT2_MLME_DLS_TEAR_DOWN, (STATE_MACHINE_FUNC)MlmeDlsTearDownAction);
+    StateMachineSetAction(Sm, DLS_IDLE, MT2_PEER_DLS_TEAR_DOWN, (STATE_MACHINE_FUNC)PeerDlsTearDownAction);
+
+	for (i=0; i<MAX_NUM_OF_DLS_ENTRY; i++)
+	{
+		pAd->StaCfg.DLSEntry[i].pAd = pAd;
+		RTMPInitTimer(pAd, &pAd->StaCfg.DLSEntry[i].Timer, GET_TIMER_FUNCTION(DlsTimeoutAction), pAd, FALSE);
+	}
+}
+
+/*
+    ==========================================================================
+    Description:
+        
+	IRQL = DISPATCH_LEVEL
+
+    ==========================================================================
+ */
+VOID MlmeDlsReqAction(
+    IN PRTMP_ADAPTER pAd, 
+    IN MLME_QUEUE_ELEM *Elem) 
+{
+	PUCHAR			pOutBuffer = NULL;
+	NDIS_STATUS		NStatus;
+	ULONG			FrameLen = 0;
+	HEADER_802_11	DlsReqHdr;
+	PRT_802_11_DLS	pDLS = NULL;
+	UCHAR			Category = CATEGORY_DLS;
+	UCHAR			Action = ACTION_DLS_REQUEST;
+	ULONG			tmp;
+	USHORT			reason;
+	ULONG			Timeout;
+	BOOLEAN			TimerCancelled;
+
+	if(!MlmeDlsReqSanity(pAd, Elem->Msg, Elem->MsgLen, &pDLS, &reason))
+		return;
+
+	DBGPRINT(RT_DEBUG_TRACE,("DLS - MlmeDlsReqAction() \n"));
+	
+	NStatus = MlmeAllocateMemory(pAd, &pOutBuffer);  //Get an unused nonpaged memory
+	if (NStatus != NDIS_STATUS_SUCCESS) 
+	{
+		DBGPRINT(RT_DEBUG_ERROR,("DLS - MlmeDlsReqAction() allocate memory failed \n"));
+		return;
+	}
+
+	ActHeaderInit(pAd, &DlsReqHdr, pAd->CommonCfg.Bssid, pAd->CurrentAddress, pAd->CommonCfg.Bssid);
+		
+	// Build basic frame first
+	MakeOutgoingFrame(pOutBuffer,				&FrameLen,
+					sizeof(HEADER_802_11),		&DlsReqHdr,
+					1,							&Category,
+					1,							&Action,
+					6,							&pDLS->MacAddr,
+					6,							pAd->CurrentAddress,
+					2,							&pAd->StaActive.CapabilityInfo,
+					2,							&pDLS->TimeOut,
+					1,							&SupRateIe,
+					1,							&pAd->MlmeAux.SupRateLen,
+					pAd->MlmeAux.SupRateLen,	pAd->MlmeAux.SupRate,
+					END_OF_ARGS);
+
+	if (pAd->MlmeAux.ExtRateLen != 0)
+	{
+		MakeOutgoingFrame(pOutBuffer + FrameLen,	&tmp,
+						  1,						&ExtRateIe,
+						  1,						&pAd->MlmeAux.ExtRateLen,
+						  pAd->MlmeAux.ExtRateLen,	pAd->MlmeAux.ExtRate,
+						  END_OF_ARGS);
+		FrameLen += tmp;
+	}
+
+#ifdef DOT11_N_SUPPORT
+	if ((pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED))
+	{
+		UCHAR HtLen;
+
+#ifdef RT_BIG_ENDIAN
+		HT_CAPABILITY_IE HtCapabilityTmp;
+#endif
+
+		// add HT Capability IE 
+		HtLen = sizeof(HT_CAPABILITY_IE);
+#ifndef RT_BIG_ENDIAN
+		MakeOutgoingFrame(pOutBuffer + FrameLen,	&tmp,
+							1,						&HtCapIe,
+							1,						&HtLen,
+							HtLen,					&pAd->CommonCfg.HtCapability, 
+							END_OF_ARGS);
+#else
+		NdisMoveMemory(&HtCapabilityTmp, &pAd->CommonCfg.HtCapability, HtLen);
+							*(USHORT *)(&HtCapabilityTmp.HtCapInfo) = SWAP16(*(USHORT *)(&HtCapabilityTmp.HtCapInfo));
+							*(USHORT *)(&HtCapabilityTmp.ExtHtCapInfo) = SWAP16(*(USHORT *)(&HtCapabilityTmp.ExtHtCapInfo));
+
+		MakeOutgoingFrame(pOutBuffer + FrameLen,	&tmp,
+							1,						&HtCapIe,
+							1,						&HtLen,
+							HtLen,					&HtCapabilityTmp, 
+							END_OF_ARGS);
+#endif
+		FrameLen = FrameLen + tmp;
+	}
+#endif // DOT11_N_SUPPORT //
+
+	RTMPCancelTimer(&pDLS->Timer, &TimerCancelled);
+	Timeout = DLS_TIMEOUT;
+	RTMPSetTimer(&pDLS->Timer, Timeout);
+
+	MiniportMMRequest(pAd, QID_AC_BE, pOutBuffer, FrameLen);
+	MlmeFreeMemory(pAd, pOutBuffer);
+}
+
+/*
+    ==========================================================================
+    Description:
+        
+	IRQL = DISPATCH_LEVEL
+
+    ==========================================================================
+ */
+VOID PeerDlsReqAction(
+    IN PRTMP_ADAPTER pAd, 
+    IN MLME_QUEUE_ELEM *Elem) 
+{
+	PUCHAR			pOutBuffer = NULL;
+	NDIS_STATUS		NStatus;
+	ULONG			FrameLen = 0;
+	USHORT			StatusCode = MLME_SUCCESS;
+	HEADER_802_11	DlsRspHdr;
+	UCHAR			Category = CATEGORY_DLS;
+	UCHAR			Action = ACTION_DLS_RESPONSE;
+	ULONG			tmp;
+	USHORT			CapabilityInfo;
+	UCHAR			DA[MAC_ADDR_LEN], SA[MAC_ADDR_LEN];
+	USHORT			DLSTimeOut;
+	SHORT			i;
+	ULONG			Timeout;
+	BOOLEAN			TimerCancelled;
+	PRT_802_11_DLS	pDLS = NULL;
+	UCHAR			MaxSupportedRateIn500Kbps = 0;
+    UCHAR			SupportedRatesLen;
+    UCHAR			SupportedRates[MAX_LEN_OF_SUPPORTED_RATES];
+	UCHAR			HtCapabilityLen;
+	HT_CAPABILITY_IE	HtCapability;
+
+	if (!PeerDlsReqSanity(pAd, Elem->Msg, Elem->MsgLen, DA, SA, &CapabilityInfo, &DLSTimeOut,
+							&SupportedRatesLen, &SupportedRates[0], &HtCapabilityLen, &HtCapability)) 
+		return;
+
+    // supported rates array may not be sorted. sort it and find the maximum rate
+    for (i = 0; i < SupportedRatesLen; i++)
+    {
+        if (MaxSupportedRateIn500Kbps < (SupportedRates[i] & 0x7f)) 
+            MaxSupportedRateIn500Kbps = SupportedRates[i] & 0x7f;
+    }
+
+	DBGPRINT(RT_DEBUG_TRACE,("DLS - PeerDlsReqAction() from %02x:%02x:%02x:%02x:%02x:%02x\n", SA[0], SA[1], SA[2], SA[3], SA[4], SA[5]));
+
+	NStatus = MlmeAllocateMemory(pAd, &pOutBuffer);  //Get an unused nonpaged memory
+	if (NStatus != NDIS_STATUS_SUCCESS) 
+	{
+		DBGPRINT(RT_DEBUG_ERROR,("DLS - PeerDlsReqAction() allocate memory failed \n"));
+		return;
+	}
+
+	if (!INFRA_ON(pAd))
+	{
+		StatusCode = MLME_REQUEST_DECLINED;
+	}
+	else if (!pAd->CommonCfg.bWmmCapable)
+	{
+		StatusCode = MLME_DEST_STA_IS_NOT_A_QSTA;
+	}
+	else if (!pAd->CommonCfg.bDLSCapable)
+	{
+		StatusCode = MLME_REQUEST_DECLINED;
+	}
+	else
+	{
+		// find table to update parameters
+		for (i = (MAX_NUM_OF_DLS_ENTRY-1); i >= 0; i--)
+		{
+			if (pAd->StaCfg.DLSEntry[i].Valid && MAC_ADDR_EQUAL(SA, pAd->StaCfg.DLSEntry[i].MacAddr))
+			{
+				if (pAd->StaCfg.AuthMode >= Ndis802_11AuthModeWPA)
+					pAd->StaCfg.DLSEntry[i].Status = DLS_WAIT_KEY;
+				else
+				{
+					RTMPCancelTimer(&pAd->StaCfg.DLSEntry[i].Timer, &TimerCancelled);
+					pAd->StaCfg.DLSEntry[i].Status = DLS_FINISH;
+				}
+
+				pAd->StaCfg.DLSEntry[i].Sequence = 0;
+				pAd->StaCfg.DLSEntry[i].TimeOut = DLSTimeOut;
+				pAd->StaCfg.DLSEntry[i].CountDownTimer = DLSTimeOut;
+				if (HtCapabilityLen != 0)
+					pAd->StaCfg.DLSEntry[i].bHTCap = TRUE;
+				else
+					pAd->StaCfg.DLSEntry[i].bHTCap = FALSE;
+				pDLS = &pAd->StaCfg.DLSEntry[i];
+				break;
+			}
+		}
+
+		// can not find in table, create a new one
+		if (i < 0)
+		{
+			DBGPRINT(RT_DEBUG_TRACE,("DLS - PeerDlsReqAction() can not find same entry \n"));
+			for (i=(MAX_NUM_OF_DLS_ENTRY - 1); i >= MAX_NUM_OF_INIT_DLS_ENTRY; i--)
+			{
+				if (!pAd->StaCfg.DLSEntry[i].Valid)
+				{
+					MAC_TABLE_ENTRY *pEntry;
+					UCHAR MaxSupportedRate = RATE_11;
+
+					if (pAd->StaCfg.AuthMode >= Ndis802_11AuthModeWPA)
+					{
+						pAd->StaCfg.DLSEntry[i].Status = DLS_WAIT_KEY;
+					}
+					else
+					{
+						RTMPCancelTimer(&pAd->StaCfg.DLSEntry[i].Timer, &TimerCancelled);
+						pAd->StaCfg.DLSEntry[i].Status = DLS_FINISH;
+					}
+
+					pAd->StaCfg.DLSEntry[i].Sequence = 0;
+					pAd->StaCfg.DLSEntry[i].Valid = TRUE;
+					pAd->StaCfg.DLSEntry[i].TimeOut = DLSTimeOut;
+					pAd->StaCfg.DLSEntry[i].CountDownTimer = DLSTimeOut;
+					NdisMoveMemory(pAd->StaCfg.DLSEntry[i].MacAddr, SA, MAC_ADDR_LEN);
+					if (HtCapabilityLen != 0)
+						pAd->StaCfg.DLSEntry[i].bHTCap = TRUE;
+					else
+						pAd->StaCfg.DLSEntry[i].bHTCap = FALSE;
+					pDLS = &pAd->StaCfg.DLSEntry[i];
+					pEntry = MacTableInsertDlsEntry(pAd, SA, i);
+
+					switch (MaxSupportedRateIn500Kbps)
+					{
+						case 108: MaxSupportedRate = RATE_54;   break;
+						case 96:  MaxSupportedRate = RATE_48;   break;
+						case 72:  MaxSupportedRate = RATE_36;   break;
+						case 48:  MaxSupportedRate = RATE_24;   break;
+						case 36:  MaxSupportedRate = RATE_18;   break;
+						case 24:  MaxSupportedRate = RATE_12;   break;
+						case 18:  MaxSupportedRate = RATE_9;    break;
+						case 12:  MaxSupportedRate = RATE_6;    break;
+						case 22:  MaxSupportedRate = RATE_11;   break;
+						case 11:  MaxSupportedRate = RATE_5_5;  break;
+						case 4:   MaxSupportedRate = RATE_2;    break;
+						case 2:   MaxSupportedRate = RATE_1;    break;
+						default:  MaxSupportedRate = RATE_11;   break;
+					}
+
+					pEntry->MaxSupportedRate = min(pAd->CommonCfg.MaxTxRate, MaxSupportedRate);
+
+					if (pEntry->MaxSupportedRate < RATE_FIRST_OFDM_RATE)
+					{
+						pEntry->MaxHTPhyMode.field.MODE = MODE_CCK;
+						pEntry->MaxHTPhyMode.field.MCS = pEntry->MaxSupportedRate;
+						pEntry->MinHTPhyMode.field.MODE = MODE_CCK;
+						pEntry->MinHTPhyMode.field.MCS = pEntry->MaxSupportedRate;
+						pEntry->HTPhyMode.field.MODE = MODE_CCK;
+						pEntry->HTPhyMode.field.MCS = pEntry->MaxSupportedRate;
+					}
+					else
+					{
+						pEntry->MaxHTPhyMode.field.MODE = MODE_OFDM;
+						pEntry->MaxHTPhyMode.field.MCS = OfdmRateToRxwiMCS[pEntry->MaxSupportedRate];
+						pEntry->MinHTPhyMode.field.MODE = MODE_OFDM;
+						pEntry->MinHTPhyMode.field.MCS = OfdmRateToRxwiMCS[pEntry->MaxSupportedRate];
+						pEntry->HTPhyMode.field.MODE = MODE_OFDM;
+						pEntry->HTPhyMode.field.MCS = OfdmRateToRxwiMCS[pEntry->MaxSupportedRate];
+					}
+
+					pEntry->MaxHTPhyMode.field.BW = BW_20;
+					pEntry->MinHTPhyMode.field.BW = BW_20;
+
+#ifdef DOT11_N_SUPPORT				
+					pEntry->HTCapability.MCSSet[0] = 0;
+					pEntry->HTCapability.MCSSet[1] = 0;
+
+					// If this Entry supports 802.11n, upgrade to HT rate. 
+					if ((HtCapabilityLen != 0) && (pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED))
+					{
+						UCHAR	j, bitmask; //k,bitmask;
+						CHAR    ii;
+
+						DBGPRINT(RT_DEBUG_TRACE, ("DLS - PeerDlsReqAction() Receive Peer HT Capable STA from %02x:%02x:%02x:%02x:%02x:%02x\n",
+									SA[0], SA[1], SA[2], SA[3], SA[4], SA[5]));
+
+						if ((HtCapability.HtCapInfo.GF) && (pAd->CommonCfg.DesiredHtPhy.GF))
+						{
+							pEntry->MaxHTPhyMode.field.MODE = MODE_HTGREENFIELD;
+						}
+						else
+						{	
+							pEntry->MaxHTPhyMode.field.MODE = MODE_HTMIX;
+							pAd->MacTab.fAnyStationNonGF = TRUE;
+							pAd->CommonCfg.AddHTInfo.AddHtInfo2.NonGfPresent = 1;
+						}
+
+						if ((HtCapability.HtCapInfo.ChannelWidth) && (pAd->CommonCfg.DesiredHtPhy.ChannelWidth))
+						{
+							pEntry->MaxHTPhyMode.field.BW= BW_40;
+							pEntry->MaxHTPhyMode.field.ShortGI = ((pAd->CommonCfg.DesiredHtPhy.ShortGIfor40)&(HtCapability.HtCapInfo.ShortGIfor40));
+						}
+						else
+						{	
+							pEntry->MaxHTPhyMode.field.BW = BW_20;
+							pEntry->MaxHTPhyMode.field.ShortGI = ((pAd->CommonCfg.DesiredHtPhy.ShortGIfor20)&(HtCapability.HtCapInfo.ShortGIfor20));
+							pAd->MacTab.fAnyStation20Only = TRUE;
+						}
+
+						// find max fixed rate
+						for (ii=15; ii>=0; ii--)
+						{	
+							j = ii/8;	
+							bitmask = (1<<(ii-(j*8)));
+							if ( (pAd->StaCfg.DesiredHtPhyInfo.MCSSet[j]&bitmask) && (HtCapability.MCSSet[j]&bitmask))
+							{
+								pEntry->MaxHTPhyMode.field.MCS = ii;
+								break;
+							}
+							if (ii==0)
+								break;
+						}
+
+						 
+						if (pAd->StaCfg.DesiredTransmitSetting.field.MCS != MCS_AUTO)
+						{
+
+							DBGPRINT(RT_DEBUG_OFF, ("@@@ pAd->CommonCfg.RegTransmitSetting.field.MCS = %d\n",
+										pAd->StaCfg.DesiredTransmitSetting.field.MCS));
+							if (pAd->StaCfg.DesiredTransmitSetting.field.MCS == 32)
+							{
+								// Fix MCS as HT Duplicated Mode
+								pEntry->MaxHTPhyMode.field.BW = 1;
+								pEntry->MaxHTPhyMode.field.MODE = MODE_HTMIX;
+								pEntry->MaxHTPhyMode.field.STBC = 0;
+								pEntry->MaxHTPhyMode.field.ShortGI = 0;
+								pEntry->MaxHTPhyMode.field.MCS = 32;
+							}
+							else if (pEntry->MaxHTPhyMode.field.MCS > pAd->StaCfg.HTPhyMode.field.MCS)
+							{
+								// STA supports fixed MCS 
+								pEntry->MaxHTPhyMode.field.MCS = pAd->StaCfg.HTPhyMode.field.MCS;
+							}
+						}
+
+						pEntry->MaxHTPhyMode.field.STBC = (HtCapability.HtCapInfo.RxSTBC & (pAd->CommonCfg.DesiredHtPhy.TxSTBC));
+						pEntry->MpduDensity = HtCapability.HtCapParm.MpduDensity;
+						pEntry->MaxRAmpduFactor = HtCapability.HtCapParm.MaxRAmpduFactor;
+						pEntry->MmpsMode = (UCHAR)HtCapability.HtCapInfo.MimoPs;
+						pEntry->AMsduSize = (UCHAR)HtCapability.HtCapInfo.AMsduSize;				
+						pEntry->HTPhyMode.word = pEntry->MaxHTPhyMode.word;
+
+						if (HtCapability.HtCapInfo.ShortGIfor20)
+							CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_SGI20_CAPABLE);
+						if (HtCapability.HtCapInfo.ShortGIfor40)
+							CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_SGI40_CAPABLE);
+						if (HtCapability.HtCapInfo.TxSTBC)
+							CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_TxSTBC_CAPABLE);
+						if (HtCapability.HtCapInfo.RxSTBC)
+							CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_RxSTBC_CAPABLE);
+						if (HtCapability.ExtHtCapInfo.PlusHTC)				
+							CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_HTC_CAPABLE);
+						if (pAd->CommonCfg.bRdg && HtCapability.ExtHtCapInfo.RDGSupport)				
+							CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_RDG_CAPABLE);	
+						if (HtCapability.ExtHtCapInfo.MCSFeedback == 0x03)
+							CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_MCSFEEDBACK_CAPABLE);		
+
+						NdisMoveMemory(&pEntry->HTCapability, &HtCapability, sizeof(HT_CAPABILITY_IE));
+					}
+#endif // DOT11_N_SUPPORT //
+
+					pEntry->HTPhyMode.word = pEntry->MaxHTPhyMode.word;
+					pEntry->CurrTxRate = pEntry->MaxSupportedRate;
+					CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_WMM_CAPABLE);
+
+					if (pAd->StaCfg.bAutoTxRateSwitch == TRUE)
+					{
+						PUCHAR pTable;
+						UCHAR TableSize = 0;
+
+						MlmeSelectTxRateTable(pAd, pEntry, &pTable, &TableSize, &pEntry->CurrTxRateIndex);
+						pEntry->bAutoTxRateSwitch = TRUE;
+					}
+					else
+					{
+						pEntry->HTPhyMode.field.MODE	= pAd->StaCfg.HTPhyMode.field.MODE;
+						pEntry->HTPhyMode.field.MCS	= pAd->StaCfg.HTPhyMode.field.MCS;
+						pEntry->bAutoTxRateSwitch = FALSE;
+
+						RTMPUpdateLegacyTxSetting((UCHAR)pAd->StaCfg.DesiredTransmitSetting.field.FixedTxMode, pEntry);
+					}
+					pEntry->RateLen = SupportedRatesLen;
+
+					break;
+				}
+			}
+		}
+		StatusCode = MLME_SUCCESS;
+
+		// can not find in table, create a new one
+		if (i < 0)
+		{
+			StatusCode = MLME_QOS_UNSPECIFY;
+			DBGPRINT(RT_DEBUG_ERROR,("DLS - PeerDlsReqAction() DLSEntry table full(only can support %d DLS session) \n", MAX_NUM_OF_DLS_ENTRY - MAX_NUM_OF_INIT_DLS_ENTRY));
+		}
+		else
+		{
+			DBGPRINT(RT_DEBUG_TRACE,("DLS - PeerDlsReqAction() use entry(%d) %02x:%02x:%02x:%02x:%02x:%02x\n",
+				i, SA[0], SA[1], SA[2], SA[3], SA[4], SA[5]));
+		}
+	}
+
+	ActHeaderInit(pAd, &DlsRspHdr, pAd->CommonCfg.Bssid, pAd->CurrentAddress, pAd->CommonCfg.Bssid);
+		
+	// Build basic frame first
+	if (StatusCode == MLME_SUCCESS)
+	{
+		MakeOutgoingFrame(pOutBuffer,				&FrameLen,
+						sizeof(HEADER_802_11),		&DlsRspHdr,
+						1,							&Category,
+						1,							&Action,
+						2,							&StatusCode,
+						6,							SA,
+						6,							pAd->CurrentAddress,
+						2,							&pAd->StaActive.CapabilityInfo,
+						1,							&SupRateIe,
+						1,							&pAd->MlmeAux.SupRateLen,
+						pAd->MlmeAux.SupRateLen,	pAd->MlmeAux.SupRate,
+						END_OF_ARGS);
+
+		if (pAd->MlmeAux.ExtRateLen != 0)
+		{
+			MakeOutgoingFrame(pOutBuffer + FrameLen,	&tmp,
+							  1,						&ExtRateIe,
+							  1,						&pAd->MlmeAux.ExtRateLen,
+							  pAd->MlmeAux.ExtRateLen, 	pAd->MlmeAux.ExtRate,
+							  END_OF_ARGS);
+			FrameLen += tmp;
+		}
+
+#ifdef DOT11_N_SUPPORT
+		if ((pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED))
+		{
+			UCHAR HtLen;
+
+#ifdef RT_BIG_ENDIAN
+			HT_CAPABILITY_IE HtCapabilityTmp;
+#endif
+
+			// add HT Capability IE 
+			HtLen = sizeof(HT_CAPABILITY_IE);
+#ifndef RT_BIG_ENDIAN
+			MakeOutgoingFrame(pOutBuffer + FrameLen,	&tmp,
+								1,						&HtCapIe,
+								1,						&HtLen,
+								HtLen,					&pAd->CommonCfg.HtCapability, 
+								END_OF_ARGS);
+#else
+			NdisMoveMemory(&HtCapabilityTmp, &pAd->CommonCfg.HtCapability, HtLen);
+								*(USHORT *)(&HtCapabilityTmp.HtCapInfo) = SWAP16(*(USHORT *)(&HtCapabilityTmp.HtCapInfo));
+								*(USHORT *)(&HtCapabilityTmp.ExtHtCapInfo) = SWAP16(*(USHORT *)(&HtCapabilityTmp.ExtHtCapInfo));
+
+			MakeOutgoingFrame(pOutBuffer + FrameLen,	&tmp,
+								1,						&HtCapIe,
+								1,						&HtLen,
+								HtLen,					&HtCapabilityTmp, 
+								END_OF_ARGS);
+#endif
+			FrameLen = FrameLen + tmp;
+		}
+#endif // DOT11_N_SUPPORT //
+
+		if (pDLS && (pDLS->Status != DLS_FINISH))
+		{
+			RTMPCancelTimer(&pDLS->Timer, &TimerCancelled);
+			Timeout = DLS_TIMEOUT;
+			RTMPSetTimer(&pDLS->Timer, Timeout);
+		}
+	}
+	else
+	{
+		MakeOutgoingFrame(pOutBuffer,				&FrameLen,
+						sizeof(HEADER_802_11),		&DlsRspHdr,
+						1,							&Category,
+						1,							&Action,
+						2,							&StatusCode,
+						6,							SA,
+						6,							pAd->CurrentAddress,
+						END_OF_ARGS);
+	}
+
+	MiniportMMRequest(pAd, QID_AC_BE, pOutBuffer, FrameLen);
+	MlmeFreeMemory(pAd, pOutBuffer);
+}
+
+/*
+    ==========================================================================
+    Description:
+        
+	IRQL = DISPATCH_LEVEL
+
+    ==========================================================================
+ */
+VOID PeerDlsRspAction(
+    IN PRTMP_ADAPTER pAd, 
+    IN MLME_QUEUE_ELEM *Elem) 
+{
+	USHORT		CapabilityInfo;
+	UCHAR		DA[MAC_ADDR_LEN], SA[MAC_ADDR_LEN];
+	USHORT		StatusCode;
+	SHORT		i;
+	BOOLEAN		TimerCancelled;
+	UCHAR		MaxSupportedRateIn500Kbps = 0;
+    UCHAR		SupportedRatesLen;
+    UCHAR		SupportedRates[MAX_LEN_OF_SUPPORTED_RATES];
+	UCHAR		HtCapabilityLen;
+	HT_CAPABILITY_IE	HtCapability;
+
+	if (!pAd->CommonCfg.bDLSCapable)
+		return;
+
+	if (!INFRA_ON(pAd))
+		return;
+
+	if (!PeerDlsRspSanity(pAd, Elem->Msg, Elem->MsgLen, DA, SA, &CapabilityInfo, &StatusCode,
+							&SupportedRatesLen, &SupportedRates[0], &HtCapabilityLen, &HtCapability)) 
+		return;
+
+    // supported rates array may not be sorted. sort it and find the maximum rate
+    for (i=0; i<SupportedRatesLen; i++)
+    {
+        if (MaxSupportedRateIn500Kbps < (SupportedRates[i] & 0x7f)) 
+            MaxSupportedRateIn500Kbps = SupportedRates[i] & 0x7f;
+    }
+
+	DBGPRINT(RT_DEBUG_TRACE,("DLS - PeerDlsRspAction() from %02x:%02x:%02x:%02x:%02x:%02x with StatusCode=%d, CapabilityInfo=0x%x\n",
+		SA[0], SA[1], SA[2], SA[3], SA[4], SA[5], StatusCode, CapabilityInfo));
+
+	for (i = 0; i < MAX_NUM_OF_INIT_DLS_ENTRY; i++)
+	{
+		if (pAd->StaCfg.DLSEntry[i].Valid && MAC_ADDR_EQUAL(SA, pAd->StaCfg.DLSEntry[i].MacAddr))
+		{
+			if (StatusCode == MLME_SUCCESS)
+			{
+				MAC_TABLE_ENTRY *pEntry;
+				UCHAR MaxSupportedRate = RATE_11;
+
+				pEntry = MacTableInsertDlsEntry(pAd, SA, i);
+
+				switch (MaxSupportedRateIn500Kbps)
+				{
+					case 108: MaxSupportedRate = RATE_54;   break;
+					case 96:  MaxSupportedRate = RATE_48;   break;
+					case 72:  MaxSupportedRate = RATE_36;   break;
+					case 48:  MaxSupportedRate = RATE_24;   break;
+					case 36:  MaxSupportedRate = RATE_18;   break;
+					case 24:  MaxSupportedRate = RATE_12;   break;
+					case 18:  MaxSupportedRate = RATE_9;    break;
+					case 12:  MaxSupportedRate = RATE_6;    break;
+					case 22:  MaxSupportedRate = RATE_11;   break;
+					case 11:  MaxSupportedRate = RATE_5_5;  break;
+					case 4:   MaxSupportedRate = RATE_2;    break;
+					case 2:   MaxSupportedRate = RATE_1;    break;
+					default:  MaxSupportedRate = RATE_11;   break;
+				}
+
+				pEntry->MaxSupportedRate = min(pAd->CommonCfg.MaxTxRate, MaxSupportedRate);
+
+				if (pEntry->MaxSupportedRate < RATE_FIRST_OFDM_RATE)
+				{
+					pEntry->MaxHTPhyMode.field.MODE = MODE_CCK;
+					pEntry->MaxHTPhyMode.field.MCS = pEntry->MaxSupportedRate;
+					pEntry->MinHTPhyMode.field.MODE = MODE_CCK;
+					pEntry->MinHTPhyMode.field.MCS = pEntry->MaxSupportedRate;
+					pEntry->HTPhyMode.field.MODE = MODE_CCK;
+					pEntry->HTPhyMode.field.MCS = pEntry->MaxSupportedRate;
+				}
+				else
+				{
+					pEntry->MaxHTPhyMode.field.MODE = MODE_OFDM;
+					pEntry->MaxHTPhyMode.field.MCS = OfdmRateToRxwiMCS[pEntry->MaxSupportedRate];
+					pEntry->MinHTPhyMode.field.MODE = MODE_OFDM;
+					pEntry->MinHTPhyMode.field.MCS = OfdmRateToRxwiMCS[pEntry->MaxSupportedRate];
+					pEntry->HTPhyMode.field.MODE = MODE_OFDM;
+					pEntry->HTPhyMode.field.MCS = OfdmRateToRxwiMCS[pEntry->MaxSupportedRate];
+				}
+
+				pEntry->MaxHTPhyMode.field.BW = BW_20;
+				pEntry->MinHTPhyMode.field.BW = BW_20;
+				
+#ifdef DOT11_N_SUPPORT
+				pEntry->HTCapability.MCSSet[0] = 0;
+				pEntry->HTCapability.MCSSet[1] = 0;
+
+				// If this Entry supports 802.11n, upgrade to HT rate. 
+				if ((HtCapabilityLen != 0) && (pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED))
+				{
+					UCHAR	j, bitmask; //k,bitmask;
+					CHAR    ii;
+
+					DBGPRINT(RT_DEBUG_OFF, ("DLS - PeerDlsRspAction Receive Peer HT Capable STA from %02x:%02x:%02x:%02x:%02x:%02x\n",
+								SA[0], SA[1], SA[2], SA[3], SA[4], SA[5]));
+
+					if ((HtCapability.HtCapInfo.GF) && (pAd->CommonCfg.DesiredHtPhy.GF))
+					{
+						pEntry->MaxHTPhyMode.field.MODE = MODE_HTGREENFIELD;
+					}
+					else
+					{	
+						pEntry->MaxHTPhyMode.field.MODE = MODE_HTMIX;
+						pAd->MacTab.fAnyStationNonGF = TRUE;
+						pAd->CommonCfg.AddHTInfo.AddHtInfo2.NonGfPresent = 1;
+					}
+
+					if ((HtCapability.HtCapInfo.ChannelWidth) && (pAd->CommonCfg.DesiredHtPhy.ChannelWidth))
+					{
+						pEntry->MaxHTPhyMode.field.BW= BW_40;
+						pEntry->MaxHTPhyMode.field.ShortGI = ((pAd->CommonCfg.DesiredHtPhy.ShortGIfor40)&(HtCapability.HtCapInfo.ShortGIfor40));
+					}
+					else
+					{	
+						pEntry->MaxHTPhyMode.field.BW = BW_20;
+						pEntry->MaxHTPhyMode.field.ShortGI = ((pAd->CommonCfg.DesiredHtPhy.ShortGIfor20)&(HtCapability.HtCapInfo.ShortGIfor20));
+						pAd->MacTab.fAnyStation20Only = TRUE;
+					}
+
+					// find max fixed rate
+					for (ii=15; ii>=0; ii--)
+					{	
+						j = ii/8;	
+						bitmask = (1<<(ii-(j*8)));
+						if ( (pAd->StaCfg.DesiredHtPhyInfo.MCSSet[j]&bitmask) && (HtCapability.MCSSet[j]&bitmask))
+						{
+							pEntry->MaxHTPhyMode.field.MCS = ii;
+							break;
+						}
+						if (ii==0)
+							break;
+					}
+	 
+					if (pAd->StaCfg.DesiredTransmitSetting.field.MCS != MCS_AUTO)
+					{
+						if (pAd->StaCfg.DesiredTransmitSetting.field.MCS == 32)
+						{
+							// Fix MCS as HT Duplicated Mode
+							pEntry->MaxHTPhyMode.field.BW = 1;
+							pEntry->MaxHTPhyMode.field.MODE = MODE_HTMIX;
+							pEntry->MaxHTPhyMode.field.STBC = 0;
+							pEntry->MaxHTPhyMode.field.ShortGI = 0;
+							pEntry->MaxHTPhyMode.field.MCS = 32;
+						}
+						else if (pEntry->MaxHTPhyMode.field.MCS > pAd->StaCfg.HTPhyMode.field.MCS)
+						{
+							// STA supports fixed MCS 
+							pEntry->MaxHTPhyMode.field.MCS = pAd->StaCfg.HTPhyMode.field.MCS;
+						}
+					}
+
+					pEntry->MaxHTPhyMode.field.STBC = (HtCapability.HtCapInfo.RxSTBC & (pAd->CommonCfg.DesiredHtPhy.TxSTBC));
+					pEntry->MpduDensity = HtCapability.HtCapParm.MpduDensity;
+					pEntry->MaxRAmpduFactor = HtCapability.HtCapParm.MaxRAmpduFactor;
+					pEntry->MmpsMode = (UCHAR)HtCapability.HtCapInfo.MimoPs;
+					pEntry->AMsduSize = (UCHAR)HtCapability.HtCapInfo.AMsduSize;				
+					pEntry->HTPhyMode.word = pEntry->MaxHTPhyMode.word;
+
+					if (HtCapability.HtCapInfo.ShortGIfor20)
+						CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_SGI20_CAPABLE);
+					if (HtCapability.HtCapInfo.ShortGIfor40)
+						CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_SGI40_CAPABLE);
+					if (HtCapability.HtCapInfo.TxSTBC)
+						CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_TxSTBC_CAPABLE);
+					if (HtCapability.HtCapInfo.RxSTBC)
+						CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_RxSTBC_CAPABLE);
+					if (HtCapability.ExtHtCapInfo.PlusHTC)				
+						CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_HTC_CAPABLE);
+					if (pAd->CommonCfg.bRdg && HtCapability.ExtHtCapInfo.RDGSupport)				
+						CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_RDG_CAPABLE);	
+					if (HtCapability.ExtHtCapInfo.MCSFeedback == 0x03)
+						CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_MCSFEEDBACK_CAPABLE);		
+
+					NdisMoveMemory(&pEntry->HTCapability, &HtCapability, sizeof(HT_CAPABILITY_IE));
+				}
+#endif // DOT11_N_SUPPORT //
+				pEntry->HTPhyMode.word = pEntry->MaxHTPhyMode.word;
+				pEntry->CurrTxRate = pEntry->MaxSupportedRate;
+				CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_WMM_CAPABLE);
+
+				if (pAd->StaCfg.bAutoTxRateSwitch == TRUE)
+				{
+					PUCHAR pTable;
+					UCHAR TableSize = 0;
+
+					MlmeSelectTxRateTable(pAd, pEntry, &pTable, &TableSize, &pEntry->CurrTxRateIndex);
+					pEntry->bAutoTxRateSwitch = TRUE;
+				}
+				else
+				{
+					pEntry->HTPhyMode.field.MODE	= pAd->StaCfg.HTPhyMode.field.MODE;
+					pEntry->HTPhyMode.field.MCS	= pAd->StaCfg.HTPhyMode.field.MCS;
+					pEntry->bAutoTxRateSwitch = FALSE;
+
+					RTMPUpdateLegacyTxSetting((UCHAR)pAd->StaCfg.DesiredTransmitSetting.field.FixedTxMode, pEntry);
+				}
+				pEntry->RateLen = SupportedRatesLen;
+
+				if (pAd->StaCfg.AuthMode >= Ndis802_11AuthModeWPA)
+				{
+					// If support WPA or WPA2, start STAKey hand shake,
+					// If failed hand shake, just tear down peer DLS
+					if (RTMPSendSTAKeyRequest(pAd, pAd->StaCfg.DLSEntry[i].MacAddr) != NDIS_STATUS_SUCCESS)
+					{
+						MLME_DLS_REQ_STRUCT	MlmeDlsReq;
+						USHORT				reason = REASON_QOS_CIPHER_NOT_SUPPORT;
+						
+						DlsParmFill(pAd, &MlmeDlsReq, &pAd->StaCfg.DLSEntry[i], reason);
+						MlmeEnqueue(pAd, DLS_STATE_MACHINE, MT2_MLME_DLS_TEAR_DOWN, sizeof(MLME_DLS_REQ_STRUCT), &MlmeDlsReq, 0);
+						pAd->StaCfg.DLSEntry[i].Status = DLS_NONE;
+						pAd->StaCfg.DLSEntry[i].Valid	= FALSE;
+						DBGPRINT(RT_DEBUG_ERROR,("DLS - PeerDlsRspAction failed when call RTMPSendSTAKeyRequest \n"));
+					}
+					else
+					{
+						pAd->StaCfg.DLSEntry[i].Status = DLS_WAIT_KEY;
+						DBGPRINT(RT_DEBUG_TRACE,("DLS - waiting for STAKey handshake procedure\n"));
+					}
+				}
+				else
+				{
+					RTMPCancelTimer(&pAd->StaCfg.DLSEntry[i].Timer, &TimerCancelled);
+					pAd->StaCfg.DLSEntry[i].Status = DLS_FINISH;
+					DBGPRINT(RT_DEBUG_TRACE,("DLS - PeerDlsRspAction() from %02x:%02x:%02x:%02x:%02x:%02x Succeed with WEP or no security\n", SA[0], SA[1], SA[2], SA[3], SA[4], SA[5]));
+				}
+
+				//initialize seq no for DLS frames.
+				pAd->StaCfg.DLSEntry[i].Sequence = 0;
+				if (HtCapabilityLen != 0)
+					pAd->StaCfg.DLSEntry[i].bHTCap = TRUE;
+				else
+					pAd->StaCfg.DLSEntry[i].bHTCap = FALSE;
+			}
+			else
+			{
+				// DLS setup procedure failed.
+				pAd->StaCfg.DLSEntry[i].Status = DLS_NONE;
+				pAd->StaCfg.DLSEntry[i].Valid	= FALSE;
+				RTMPCancelTimer(&pAd->StaCfg.DLSEntry[i].Timer, &TimerCancelled);
+				DBGPRINT(RT_DEBUG_ERROR,("DLS - PeerDlsRspAction failed with StatusCode=%d \n", StatusCode));
+			}
+		}
+	}
+
+	if (i >= MAX_NUM_OF_INIT_DLS_ENTRY)
+	{
+		DBGPRINT(RT_DEBUG_TRACE,("DLS - PeerDlsRspAction() update timeout value \n"));
+		for (i=(MAX_NUM_OF_DLS_ENTRY-1); i>=MAX_NUM_OF_INIT_DLS_ENTRY; i--)
+		{
+			if (pAd->StaCfg.DLSEntry[i].Valid && MAC_ADDR_EQUAL(SA, pAd->StaCfg.DLSEntry[i].MacAddr))
+			{
+				if (StatusCode == MLME_SUCCESS)
+				{
+					MAC_TABLE_ENTRY *pEntry;
+					UCHAR MaxSupportedRate = RATE_11;
+
+					pEntry = MacTableInsertDlsEntry(pAd, SA, i);
+
+					switch (MaxSupportedRateIn500Kbps)
+					{
+						case 108: MaxSupportedRate = RATE_54;   break;
+						case 96:  MaxSupportedRate = RATE_48;   break;
+						case 72:  MaxSupportedRate = RATE_36;   break;
+						case 48:  MaxSupportedRate = RATE_24;   break;
+						case 36:  MaxSupportedRate = RATE_18;   break;
+						case 24:  MaxSupportedRate = RATE_12;   break;
+						case 18:  MaxSupportedRate = RATE_9;    break;
+						case 12:  MaxSupportedRate = RATE_6;    break;
+						case 22:  MaxSupportedRate = RATE_11;   break;
+						case 11:  MaxSupportedRate = RATE_5_5;  break;
+						case 4:   MaxSupportedRate = RATE_2;    break;
+						case 2:   MaxSupportedRate = RATE_1;    break;
+						default:  MaxSupportedRate = RATE_11;   break;
+					}
+
+					pEntry->MaxSupportedRate = min(pAd->CommonCfg.MaxTxRate, MaxSupportedRate);
+
+					if (pEntry->MaxSupportedRate < RATE_FIRST_OFDM_RATE)
+					{
+						pEntry->MaxHTPhyMode.field.MODE = MODE_CCK;
+						pEntry->MaxHTPhyMode.field.MCS = pEntry->MaxSupportedRate;
+						pEntry->MinHTPhyMode.field.MODE = MODE_CCK;
+						pEntry->MinHTPhyMode.field.MCS = pEntry->MaxSupportedRate;
+						pEntry->HTPhyMode.field.MODE = MODE_CCK;
+						pEntry->HTPhyMode.field.MCS = pEntry->MaxSupportedRate;
+					}
+					else
+					{
+						pEntry->MaxHTPhyMode.field.MODE = MODE_OFDM;
+						pEntry->MaxHTPhyMode.field.MCS = OfdmRateToRxwiMCS[pEntry->MaxSupportedRate];
+						pEntry->MinHTPhyMode.field.MODE = MODE_OFDM;
+						pEntry->MinHTPhyMode.field.MCS = OfdmRateToRxwiMCS[pEntry->MaxSupportedRate];
+						pEntry->HTPhyMode.field.MODE = MODE_OFDM;
+						pEntry->HTPhyMode.field.MCS = OfdmRateToRxwiMCS[pEntry->MaxSupportedRate];
+					}
+
+					pEntry->MaxHTPhyMode.field.BW = BW_20;
+					pEntry->MinHTPhyMode.field.BW = BW_20;
+					
+#ifdef DOT11_N_SUPPORT
+					pEntry->HTCapability.MCSSet[0] = 0;
+					pEntry->HTCapability.MCSSet[1] = 0;
+
+					// If this Entry supports 802.11n, upgrade to HT rate. 
+					if ((HtCapabilityLen != 0) && (pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED))
+					{
+						UCHAR	j, bitmask; //k,bitmask;
+						CHAR    ii;
+
+						DBGPRINT(RT_DEBUG_TRACE, ("DLS - PeerDlsRspAction Receive Peer HT Capable STA from %02x:%02x:%02x:%02x:%02x:%02x\n",
+									SA[0], SA[1], SA[2], SA[3], SA[4], SA[5]));
+
+						if ((HtCapability.HtCapInfo.GF) && (pAd->CommonCfg.DesiredHtPhy.GF))
+						{
+							pEntry->MaxHTPhyMode.field.MODE = MODE_HTGREENFIELD;
+						}
+						else
+						{	
+							pEntry->MaxHTPhyMode.field.MODE = MODE_HTMIX;
+							pAd->MacTab.fAnyStationNonGF = TRUE;
+							pAd->CommonCfg.AddHTInfo.AddHtInfo2.NonGfPresent = 1;
+						}
+
+						if ((HtCapability.HtCapInfo.ChannelWidth) && (pAd->CommonCfg.DesiredHtPhy.ChannelWidth))
+						{
+							pEntry->MaxHTPhyMode.field.BW= BW_40;
+							pEntry->MaxHTPhyMode.field.ShortGI = ((pAd->CommonCfg.DesiredHtPhy.ShortGIfor40)&(HtCapability.HtCapInfo.ShortGIfor40));
+						}
+						else
+						{	
+							pEntry->MaxHTPhyMode.field.BW = BW_20;
+							pEntry->MaxHTPhyMode.field.ShortGI = ((pAd->CommonCfg.DesiredHtPhy.ShortGIfor20)&(HtCapability.HtCapInfo.ShortGIfor20));
+							pAd->MacTab.fAnyStation20Only = TRUE;
+						}
+
+						// find max fixed rate
+						for (ii=15; ii>=0; ii--)
+						{	
+							j = ii/8;	
+							bitmask = (1<<(ii-(j*8)));
+							if ( (pAd->StaCfg.DesiredHtPhyInfo.MCSSet[j]&bitmask) && (HtCapability.MCSSet[j]&bitmask))
+							{
+								pEntry->MaxHTPhyMode.field.MCS = ii;
+								break;
+							}
+							if (ii==0)
+								break;
+						}
+		 
+						if (pAd->StaCfg.DesiredTransmitSetting.field.MCS != MCS_AUTO)
+						{
+							DBGPRINT(RT_DEBUG_OFF, ("@@@ pAd->CommonCfg.RegTransmitSetting.field.MCS = %d\n",
+													pAd->StaCfg.DesiredTransmitSetting.field.MCS));
+							if (pAd->StaCfg.DesiredTransmitSetting.field.MCS == 32)
+							{
+								// Fix MCS as HT Duplicated Mode
+								pEntry->MaxHTPhyMode.field.BW = 1;
+								pEntry->MaxHTPhyMode.field.MODE = MODE_HTMIX;
+								pEntry->MaxHTPhyMode.field.STBC = 0;
+								pEntry->MaxHTPhyMode.field.ShortGI = 0;
+								pEntry->MaxHTPhyMode.field.MCS = 32;
+							}
+							else if (pEntry->MaxHTPhyMode.field.MCS > pAd->StaCfg.HTPhyMode.field.MCS)
+							{
+								// STA supports fixed MCS 
+								pEntry->MaxHTPhyMode.field.MCS = pAd->StaCfg.HTPhyMode.field.MCS;
+							}
+						}
+
+						pEntry->MaxHTPhyMode.field.STBC = (HtCapability.HtCapInfo.RxSTBC & (pAd->CommonCfg.DesiredHtPhy.TxSTBC));
+						pEntry->MpduDensity = HtCapability.HtCapParm.MpduDensity;
+						pEntry->MaxRAmpduFactor = HtCapability.HtCapParm.MaxRAmpduFactor;
+						pEntry->MmpsMode = (UCHAR)HtCapability.HtCapInfo.MimoPs;
+						pEntry->AMsduSize = (UCHAR)HtCapability.HtCapInfo.AMsduSize;				
+						pEntry->HTPhyMode.word = pEntry->MaxHTPhyMode.word;
+
+						if (HtCapability.HtCapInfo.ShortGIfor20)
+							CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_SGI20_CAPABLE);
+						if (HtCapability.HtCapInfo.ShortGIfor40)
+							CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_SGI40_CAPABLE);
+						if (HtCapability.HtCapInfo.TxSTBC)
+							CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_TxSTBC_CAPABLE);
+						if (HtCapability.HtCapInfo.RxSTBC)
+							CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_RxSTBC_CAPABLE);
+						if (HtCapability.ExtHtCapInfo.PlusHTC)				
+							CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_HTC_CAPABLE);
+						if (pAd->CommonCfg.bRdg && HtCapability.ExtHtCapInfo.RDGSupport)				
+							CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_RDG_CAPABLE);	
+						if (HtCapability.ExtHtCapInfo.MCSFeedback == 0x03)
+							CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_MCSFEEDBACK_CAPABLE);
+
+						NdisMoveMemory(&pEntry->HTCapability, &HtCapability, sizeof(HT_CAPABILITY_IE));
+					}
+#endif // DOT11_N_SUPPORT //
+
+					pEntry->HTPhyMode.word = pEntry->MaxHTPhyMode.word;
+					pEntry->CurrTxRate = pEntry->MaxSupportedRate;
+					CLIENT_STATUS_SET_FLAG(pEntry, fCLIENT_STATUS_WMM_CAPABLE);
+
+					if (pAd->StaCfg.bAutoTxRateSwitch == TRUE)
+					{
+						PUCHAR pTable;
+						UCHAR TableSize = 0;
+
+						MlmeSelectTxRateTable(pAd, pEntry, &pTable, &TableSize, &pEntry->CurrTxRateIndex);
+						pEntry->bAutoTxRateSwitch = TRUE;
+					}
+					else
+					{
+						pEntry->HTPhyMode.field.MODE	= pAd->StaCfg.HTPhyMode.field.MODE;
+						pEntry->HTPhyMode.field.MCS	= pAd->StaCfg.HTPhyMode.field.MCS;
+						pEntry->bAutoTxRateSwitch = FALSE;
+
+						RTMPUpdateLegacyTxSetting((UCHAR)pAd->StaCfg.DesiredTransmitSetting.field.FixedTxMode, pEntry);
+					}
+					pEntry->RateLen = SupportedRatesLen;
+
+					if (pAd->StaCfg.AuthMode >= Ndis802_11AuthModeWPA)
+					{
+						// If support WPA or WPA2, start STAKey hand shake,
+						// If failed hand shake, just tear down peer DLS
+						if (RTMPSendSTAKeyRequest(pAd, pAd->StaCfg.DLSEntry[i].MacAddr) != NDIS_STATUS_SUCCESS)
+						{
+							MLME_DLS_REQ_STRUCT	MlmeDlsReq;
+							USHORT				reason = REASON_QOS_CIPHER_NOT_SUPPORT;
+							
+							DlsParmFill(pAd, &MlmeDlsReq, &pAd->StaCfg.DLSEntry[i], reason);
+							MlmeEnqueue(pAd, DLS_STATE_MACHINE, MT2_MLME_DLS_TEAR_DOWN, sizeof(MLME_DLS_REQ_STRUCT), &MlmeDlsReq, 0);
+							pAd->StaCfg.DLSEntry[i].Status = DLS_NONE;
+							pAd->StaCfg.DLSEntry[i].Valid	= FALSE;
+							DBGPRINT(RT_DEBUG_ERROR,("DLS - PeerDlsRspAction failed when call RTMPSendSTAKeyRequest \n"));
+						}
+						else
+						{
+							pAd->StaCfg.DLSEntry[i].Status = DLS_WAIT_KEY;
+							DBGPRINT(RT_DEBUG_TRACE,("DLS - waiting for STAKey handshake procedure\n"));
+						}
+					}
+					else
+					{
+						RTMPCancelTimer(&pAd->StaCfg.DLSEntry[i].Timer, &TimerCancelled);
+						pAd->StaCfg.DLSEntry[i].Status = DLS_FINISH;
+						DBGPRINT(RT_DEBUG_TRACE,("DLS - PeerDlsRspAction() from %02x:%02x:%02x:%02x:%02x:%02x Succeed with WEP or no security\n", SA[0], SA[1], SA[2], SA[3], SA[4], SA[5]));
+					}
+					pAd->StaCfg.DLSEntry[i].Sequence = 0;
+					if (HtCapabilityLen != 0)
+						pAd->StaCfg.DLSEntry[i].bHTCap = TRUE;
+					else
+						pAd->StaCfg.DLSEntry[i].bHTCap = FALSE;
+				}
+				else
+				{
+					// DLS setup procedure failed.
+					pAd->StaCfg.DLSEntry[i].Status = DLS_NONE;
+					pAd->StaCfg.DLSEntry[i].Valid	= FALSE;
+					RTMPCancelTimer(&pAd->StaCfg.DLSEntry[i].Timer, &TimerCancelled);
+					DBGPRINT(RT_DEBUG_ERROR,("DLS - PeerDlsRspAction failed with StatusCode=%d \n", StatusCode));
+				}
+			}
+		}
+	}
+}
+
+/*
+    ==========================================================================
+    Description:
+        
+	IRQL = DISPATCH_LEVEL
+
+    ==========================================================================
+ */
+VOID MlmeDlsTearDownAction(
+    IN PRTMP_ADAPTER pAd, 
+    IN MLME_QUEUE_ELEM *Elem) 
+{
+	PUCHAR			pOutBuffer = NULL;
+	NDIS_STATUS		NStatus;
+	ULONG			FrameLen = 0;
+	UCHAR			Category = CATEGORY_DLS;
+	UCHAR			Action = ACTION_DLS_TEARDOWN;
+	USHORT			ReasonCode = REASON_QOS_UNSPECIFY;
+	HEADER_802_11	DlsTearDownHdr;
+	PRT_802_11_DLS	pDLS;
+	BOOLEAN			TimerCancelled;
+	UCHAR			i;
+
+	if(!MlmeDlsReqSanity(pAd, Elem->Msg, Elem->MsgLen, &pDLS, &ReasonCode))
+		return;
+
+	DBGPRINT(RT_DEBUG_TRACE,("DLS - MlmeDlsTearDownAction() with ReasonCode=%d \n", ReasonCode));
+	
+	NStatus = MlmeAllocateMemory(pAd, &pOutBuffer);  //Get an unused nonpaged memory
+	if (NStatus != NDIS_STATUS_SUCCESS) 
+	{
+		DBGPRINT(RT_DEBUG_ERROR,("DLS - MlmeDlsTearDownAction() allocate memory failed \n"));
+		return;
+	}
+
+	ActHeaderInit(pAd, &DlsTearDownHdr, pAd->CommonCfg.Bssid, pAd->CurrentAddress, pAd->CommonCfg.Bssid);
+		
+	// Build basic frame first
+	MakeOutgoingFrame(pOutBuffer,				&FrameLen,
+					sizeof(HEADER_802_11),		&DlsTearDownHdr,
+					1,							&Category,
+					1,							&Action,
+					6,							&pDLS->MacAddr,
+					6,							pAd->CurrentAddress,
+					2,							&ReasonCode,
+					END_OF_ARGS);
+
+	MiniportMMRequest(pAd, QID_AC_BE, pOutBuffer, FrameLen);
+	MlmeFreeMemory(pAd, pOutBuffer);
+	RTMPCancelTimer(&pDLS->Timer, &TimerCancelled);
+
+	// Remove key in local dls table entry
+	for (i = 0; i < MAX_NUM_OF_INIT_DLS_ENTRY; i++)
+	{
+		if (MAC_ADDR_EQUAL(pDLS->MacAddr, pAd->StaCfg.DLSEntry[i].MacAddr))
+		{
+			MacTableDeleteDlsEntry(pAd, pAd->StaCfg.DLSEntry[i].MacTabMatchWCID, pAd->StaCfg.DLSEntry[i].MacAddr);
+		}
+	}
+
+	// clear peer dls table entry
+	for (i = MAX_NUM_OF_INIT_DLS_ENTRY; i < MAX_NUM_OF_DLS_ENTRY; i++)
+	{
+		if (MAC_ADDR_EQUAL(pDLS->MacAddr, pAd->StaCfg.DLSEntry[i].MacAddr))
+		{
+			pAd->StaCfg.DLSEntry[i].Status	= DLS_NONE;
+			pAd->StaCfg.DLSEntry[i].Valid	= FALSE;
+			RTMPCancelTimer(&pAd->StaCfg.DLSEntry[i].Timer, &TimerCancelled);
+			MacTableDeleteDlsEntry(pAd, pAd->StaCfg.DLSEntry[i].MacTabMatchWCID, pAd->StaCfg.DLSEntry[i].MacAddr);
+		}
+	}
+}
+
+/*
+    ==========================================================================
+    Description:
+        
+	IRQL = DISPATCH_LEVEL
+
+    ==========================================================================
+ */
+VOID PeerDlsTearDownAction(
+    IN PRTMP_ADAPTER pAd, 
+    IN MLME_QUEUE_ELEM *Elem) 
+{
+	UCHAR			DA[MAC_ADDR_LEN], SA[MAC_ADDR_LEN];
+	USHORT			ReasonCode;
+	UINT			i;
+	BOOLEAN			TimerCancelled;
+
+	if (!pAd->CommonCfg.bDLSCapable)
+		return;
+
+	if (!INFRA_ON(pAd))
+		return;
+	
+	if (!PeerDlsTearDownSanity(pAd, Elem->Msg, Elem->MsgLen, DA, SA, &ReasonCode)) 
+		return;
+
+	DBGPRINT(RT_DEBUG_TRACE,("DLS - PeerDlsTearDownAction() from %02x:%02x:%02x:%02x:%02x:%02x with ReasonCode=%d\n", SA[0], SA[1], SA[2], SA[3], SA[4], SA[5], ReasonCode));
+
+	// clear local dls table entry
+	for (i=0; i<MAX_NUM_OF_INIT_DLS_ENTRY; i++)
+	{
+		if (pAd->StaCfg.DLSEntry[i].Valid && MAC_ADDR_EQUAL(SA, pAd->StaCfg.DLSEntry[i].MacAddr))
+		{
+			pAd->StaCfg.DLSEntry[i].Status	= DLS_NONE;
+			pAd->StaCfg.DLSEntry[i].Valid	= FALSE;
+			RTMPCancelTimer(&pAd->StaCfg.DLSEntry[i].Timer, &TimerCancelled);
+			//AsicDelWcidTab(pAd, pAd->StaCfg.DLSEntry[i].MacTabMatchWCID);
+			//AsicRemovePairwiseKeyEntry(pAd, pAd->StaCfg.DLSEntry[i].MacTabMatchWCID);
+			MacTableDeleteDlsEntry(pAd, pAd->StaCfg.DLSEntry[i].MacTabMatchWCID, pAd->StaCfg.DLSEntry[i].MacAddr);
+		}
+	}
+
+	// clear peer dls table entry
+	for (i=MAX_NUM_OF_INIT_DLS_ENTRY; i<MAX_NUM_OF_DLS_ENTRY; i++)
+	{
+		if (pAd->StaCfg.DLSEntry[i].Valid && MAC_ADDR_EQUAL(SA, pAd->StaCfg.DLSEntry[i].MacAddr))
+		{
+			pAd->StaCfg.DLSEntry[i].Status	= DLS_NONE;
+			pAd->StaCfg.DLSEntry[i].Valid	= FALSE;
+			RTMPCancelTimer(&pAd->StaCfg.DLSEntry[i].Timer, &TimerCancelled);
+			//AsicDelWcidTab(pAd, pAd->StaCfg.DLSEntry[i].MacTabMatchWCID);
+			//AsicRemovePairwiseKeyEntry(pAd, pAd->StaCfg.DLSEntry[i].MacTabMatchWCID);
+			MacTableDeleteDlsEntry(pAd, pAd->StaCfg.DLSEntry[i].MacTabMatchWCID, pAd->StaCfg.DLSEntry[i].MacAddr);
+		}
+	}
+}
+
+/*
+    ==========================================================================
+    Description:
+        
+	IRQL = DISPATCH_LEVEL
+
+    ==========================================================================
+ */
+VOID RTMPCheckDLSTimeOut(
+	IN PRTMP_ADAPTER	pAd)
+{
+	ULONG				i;
+	MLME_DLS_REQ_STRUCT	MlmeDlsReq;
+	USHORT				reason = REASON_QOS_UNSPECIFY;
+	
+	if (! pAd->CommonCfg.bDLSCapable)
+		return;
+
+	if (! INFRA_ON(pAd))
+		return;
+
+	// If timeout value is equaled to zero, it means always not be timeout.
+
+	// update local dls table entry
+	for (i=0; i<MAX_NUM_OF_INIT_DLS_ENTRY; i++)
+	{
+		if ((pAd->StaCfg.DLSEntry[i].Valid) && (pAd->StaCfg.DLSEntry[i].Status == DLS_FINISH)
+			&& (pAd->StaCfg.DLSEntry[i].TimeOut != 0))
+		{
+			pAd->StaCfg.DLSEntry[i].CountDownTimer --;
+
+			if (pAd->StaCfg.DLSEntry[i].CountDownTimer == 0)
+			{
+				reason = REASON_QOS_REQUEST_TIMEOUT;
+				pAd->StaCfg.DLSEntry[i].Valid	= FALSE;
+				pAd->StaCfg.DLSEntry[i].Status	= DLS_NONE;
+				DlsParmFill(pAd, &MlmeDlsReq, &pAd->StaCfg.DLSEntry[i], reason);
+				MlmeEnqueue(pAd, DLS_STATE_MACHINE, MT2_MLME_DLS_TEAR_DOWN, sizeof(MLME_DLS_REQ_STRUCT), &MlmeDlsReq, 0);
+			}
+		}
+	}
+
+	// update peer dls table entry
+	for (i=MAX_NUM_OF_INIT_DLS_ENTRY; i<MAX_NUM_OF_DLS_ENTRY; i++)
+	{
+		if ((pAd->StaCfg.DLSEntry[i].Valid) && (pAd->StaCfg.DLSEntry[i].Status == DLS_FINISH)
+			&& (pAd->StaCfg.DLSEntry[i].TimeOut != 0))
+		{
+			pAd->StaCfg.DLSEntry[i].CountDownTimer --;
+
+			if (pAd->StaCfg.DLSEntry[i].CountDownTimer == 0)
+			{
+				reason = REASON_QOS_REQUEST_TIMEOUT;
+				pAd->StaCfg.DLSEntry[i].Valid	= FALSE;
+				pAd->StaCfg.DLSEntry[i].Status	= DLS_NONE;
+				DlsParmFill(pAd, &MlmeDlsReq, &pAd->StaCfg.DLSEntry[i], reason);
+				MlmeEnqueue(pAd, DLS_STATE_MACHINE, MT2_MLME_DLS_TEAR_DOWN, sizeof(MLME_DLS_REQ_STRUCT), &MlmeDlsReq, 0);
+			}
+		}
+	}
+}
+
+/*
+    ==========================================================================
+    Description:
+        
+	IRQL = DISPATCH_LEVEL
+
+    ==========================================================================
+ */
+BOOLEAN RTMPRcvFrameDLSCheck(
+	IN PRTMP_ADAPTER	pAd,
+	IN PHEADER_802_11	pHeader,
+	IN ULONG			Len,
+	IN PRT28XX_RXD_STRUC	pRxD)
+{
+	ULONG			i;
+	BOOLEAN			bFindEntry = FALSE;
+	BOOLEAN			bSTAKeyFrame = FALSE;
+	PEAPOL_PACKET	pEap;
+	PUCHAR			pProto, pAddr = NULL;
+	PUCHAR			pSTAKey = NULL;
+	UCHAR			ZeroReplay[LEN_KEY_DESC_REPLAY];
+	UCHAR			Mic[16], OldMic[16];
+	UCHAR			digest[80];
+	UCHAR			DlsPTK[80];
+	UCHAR			temp[64];
+	BOOLEAN			TimerCancelled;
+	CIPHER_KEY		PairwiseKey;
+
+	
+	if (! pAd->CommonCfg.bDLSCapable)
+		return bSTAKeyFrame;
+
+	if (! INFRA_ON(pAd))
+		return bSTAKeyFrame;
+
+	if (Len < LENGTH_802_11 + 6 + 2) /* LENGTH_802_11 + LLC + EAPOL protocol type */
+		return bSTAKeyFrame;
+
+	pProto	= (PUCHAR)pHeader + LENGTH_802_11;
+
+	if ((pHeader->FC.SubType & 0x08))
+		pProto	+= 2;	/* QOS Control field */ 
+
+     /* Skip 4-bytes for HTC */
+     if (pHeader->FC.Order && (!OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_AGGREGATION_INUSED)))
+     {    
+          pProto += 4;  
+     }
+
+	/* L2PAD bit on will pad 2 bytes at LLC */
+	if (pRxD->L2PAD)
+	{
+		pProto += 2;	
+	}
+
+	pProto	+= 6;	/* 0xAA 0xAA 0xAA 0x00 0x00 0x00 */
+
+	if ((!(pHeader->FC.SubType & 0x08)) && (!RTMPEqualMemory(EAPOL, pProto, 2)))
+		return bSTAKeyFrame;
+
+	pAddr	= pHeader->Addr2;
+
+	if (RTMPEqualMemory(EAPOL, pProto, 2) && (pAd->StaCfg.AuthMode >=  Ndis802_11AuthModeWPA))
+	{
+		pEap = (PEAPOL_PACKET) (pProto + 2);
+
+		DBGPRINT(RT_DEBUG_TRACE,("DLS - Sniff Len=%ld, DataLen=%d, KeyMic=%d, Install=%d, KeyAck=%d, Secure=%d, EKD_DL=%d, Error=%d, Request=%d\n", Len,
+			                                                             (LENGTH_802_11 + 6 + 2 + 2 + MIN_LEN_OF_EAPOL_KEY_MSG + 16),
+			                                                             pEap->KeyDesc.KeyInfo.KeyMic,
+			                                                             pEap->KeyDesc.KeyInfo.Install,
+			                                                             pEap->KeyDesc.KeyInfo.KeyAck,
+			                                                             pEap->KeyDesc.KeyInfo.Secure,
+			                                                             pEap->KeyDesc.KeyInfo.EKD_DL,
+			                                                             pEap->KeyDesc.KeyInfo.Error,
+			                                                             pEap->KeyDesc.KeyInfo.Request));
+
+		if ((Len >= (LENGTH_802_11 + 6 + 2 + 2 + MIN_LEN_OF_EAPOL_KEY_MSG + 16)) && pEap->KeyDesc.KeyInfo.KeyMic
+			&& pEap->KeyDesc.KeyInfo.Install && pEap->KeyDesc.KeyInfo.KeyAck && pEap->KeyDesc.KeyInfo.Secure
+			&& pEap->KeyDesc.KeyInfo.EKD_DL && !pEap->KeyDesc.KeyInfo.Error && !pEap->KeyDesc.KeyInfo.Request)
+		{
+			// First validate replay counter, only accept message with larger replay counter
+			// Let equal pass, some AP start with all zero replay counter
+			NdisZeroMemory(ZeroReplay, LEN_KEY_DESC_REPLAY);
+			if ((RTMPCompareMemory(pEap->KeyDesc.ReplayCounter, pAd->StaCfg.ReplayCounter, LEN_KEY_DESC_REPLAY) != 1) &&
+				(RTMPCompareMemory(pEap->KeyDesc.ReplayCounter, ZeroReplay, LEN_KEY_DESC_REPLAY) != 0))
+				return bSTAKeyFrame;
+
+			//RTMPMoveMemory(pAd->StaCfg.ReplayCounter, pEap->KeyDesc.ReplayCounter, LEN_KEY_DESC_REPLAY);
+			RTMPMoveMemory(pAd->StaCfg.DlsReplayCounter, pEap->KeyDesc.ReplayCounter, LEN_KEY_DESC_REPLAY);
+			DBGPRINT(RT_DEBUG_TRACE,("DLS - Sniff replay counter (%02x-%02x-%02x-%02x-%02x-%02x-%02x-%02x) Len=%ld, KeyDataLen=%d\n",
+				pAd->StaCfg.ReplayCounter[0], pAd->StaCfg.ReplayCounter[1], pAd->StaCfg.ReplayCounter[2],
+				pAd->StaCfg.ReplayCounter[3], pAd->StaCfg.ReplayCounter[4],	pAd->StaCfg.ReplayCounter[5],
+				pAd->StaCfg.ReplayCounter[6], pAd->StaCfg.ReplayCounter[7], Len, pEap->KeyDesc.KeyData[1]));
+
+			// put these code segment to get the replay counter
+			if (pAd->StaCfg.PortSecured == WPA_802_1X_PORT_NOT_SECURED)
+				return bSTAKeyFrame;
+
+			// Check MIC value
+			// Save the MIC and replace with zero
+			// use proprietary PTK
+			NdisZeroMemory(temp, 64);
+			NdisMoveMemory(temp, "IEEE802.11 WIRELESS ACCESS POINT", 32);
+			WpaDerivePTK(pAd, temp, temp, pAd->CommonCfg.Bssid, temp, pAd->CurrentAddress, DlsPTK, LEN_PTK);
+
+			NdisMoveMemory(OldMic, pEap->KeyDesc.KeyMic, LEN_KEY_DESC_MIC);
+			NdisZeroMemory(pEap->KeyDesc.KeyMic, LEN_KEY_DESC_MIC);
+			if (pAd->StaCfg.WepStatus == Ndis802_11Encryption3Enabled)
+			{
+				// AES
+				RT_HMAC_SHA1(DlsPTK, LEN_PTK_KCK, (PUCHAR) pEap, pEap->Body_Len[1] + 4, digest, SHA1_DIGEST_SIZE);
+				NdisMoveMemory(Mic,	digest,	LEN_KEY_DESC_MIC);
+			}
+			else
+			{
+				RT_HMAC_MD5(DlsPTK, LEN_PTK_KCK, (PUCHAR) pEap, pEap->Body_Len[1] + 4, Mic, MD5_DIGEST_SIZE);
+			}
+			
+			if (!NdisEqualMemory(OldMic, Mic, LEN_KEY_DESC_MIC))
+			{
+				DBGPRINT(RT_DEBUG_ERROR, ("MIC Different in Msg1 of STAKey handshake! \n"));
+				return bSTAKeyFrame;
+			}
+			else
+				DBGPRINT(RT_DEBUG_TRACE, ("MIC VALID in Msg1 of STAKey handshake! \n"));
+			if ((pEap->KeyDesc.KeyData[0] == 0xDD) && (pEap->KeyDesc.KeyData[2] == 0x00) && (pEap->KeyDesc.KeyData[3] == 0x0C)
+				&& (pEap->KeyDesc.KeyData[4] == 0x43) && (pEap->KeyDesc.KeyData[5] == 0x02))
+			{
+				pAddr			= pEap->KeyDesc.KeyData + 8;		// Tpe(1), Len(1), OUI(3), DataType(1), Reserved(2)
+				pSTAKey			= pEap->KeyDesc.KeyData + 14;	// Tpe(1), Len(1), OUI(3), DataType(1), Reserved(2), STAKey_Mac_Addr(6)
+
+				DBGPRINT(RT_DEBUG_TRACE,("DLS - Receive STAKey Message-1 from %02x:%02x:%02x:%02x:%02x:%02x Len=%ld, KeyDataLen=%d\n",
+					pAddr[0], pAddr[1], pAddr[2], pAddr[3], pAddr[4], pAddr[5], Len, pEap->KeyDesc.KeyData[1]));
+
+				bSTAKeyFrame = TRUE;
+			}
+			
+		}
+		else if (Len >= (LENGTH_802_11 + 6 + 2 + 2 + MIN_LEN_OF_EAPOL_KEY_MSG))
+		{
+			RTMPMoveMemory(pAd->StaCfg.DlsReplayCounter, pEap->KeyDesc.ReplayCounter, LEN_KEY_DESC_REPLAY);
+			DBGPRINT(RT_DEBUG_TRACE,("DLS - Sniff replay counter 2(%02x-%02x-%02x-%02x-%02x-%02x-%02x-%02x) Len=%ld, KeyDataLen=%d\n",
+				pAd->StaCfg.ReplayCounter[0], pAd->StaCfg.ReplayCounter[1], pAd->StaCfg.ReplayCounter[2],
+				pAd->StaCfg.ReplayCounter[3], pAd->StaCfg.ReplayCounter[4],	pAd->StaCfg.ReplayCounter[5],
+				pAd->StaCfg.ReplayCounter[6], pAd->StaCfg.ReplayCounter[7], Len, pEap->KeyDesc.KeyData[1]));
+		}
+	}
+
+	// If timeout value is equaled to zero, it means always not be timeout.
+	// update local dls table entry
+	for (i= 0; i < MAX_NUM_OF_INIT_DLS_ENTRY; i++)
+	{
+		if (pAd->StaCfg.DLSEntry[i].Valid && MAC_ADDR_EQUAL(pAddr, pAd->StaCfg.DLSEntry[i].MacAddr))
+		{
+			if (bSTAKeyFrame)
+			{
+				PMAC_TABLE_ENTRY pEntry;
+
+				// STAKey frame, add pairwise key table
+				pAd->StaCfg.DLSEntry[i].Status = DLS_FINISH;
+				RTMPCancelTimer(&pAd->StaCfg.DLSEntry[i].Timer, &TimerCancelled);
+				
+				PairwiseKey.KeyLen = LEN_TK;
+				NdisMoveMemory(PairwiseKey.Key, &pSTAKey[0], LEN_TK);
+				NdisMoveMemory(PairwiseKey.TxMic, &pSTAKey[16], LEN_TKIP_MIC);
+				NdisMoveMemory(PairwiseKey.RxMic, &pSTAKey[24], LEN_TKIP_MIC);
+
+				//PairwiseKey.CipherAlg = pAd->SharedKey[BSS0][pAd->StaCfg.DefaultKeyId].CipherAlg;
+				if (pAd->StaCfg.PairCipher == Ndis802_11Encryption2Enabled)
+					PairwiseKey.CipherAlg = CIPHER_TKIP;
+				else if (pAd->StaCfg.PairCipher == Ndis802_11Encryption3Enabled)
+					PairwiseKey.CipherAlg = CIPHER_AES;
+
+				pEntry = DlsEntryTableLookup(pAd, pAd->StaCfg.DLSEntry[i].MacAddr, TRUE);
+				//AsicAddKeyEntry(pAd, (USHORT)(i + 2), BSS0, 0, &PairwiseKey, TRUE, TRUE);	// reserve 0 for multicast, 1 for unicast
+				//AsicUpdateRxWCIDTable(pAd, (USHORT)(i + 2), pAddr);
+
+				// Add Pair-wise key to Asic
+            	RTMP_ASIC_PAIRWISE_KEY_TABLE(pAd, 
+										(UCHAR)pAd->StaCfg.DLSEntry[i].MacTabMatchWCID,
+										&PairwiseKey);															
+
+				RTMP_SET_WCID_SEC_INFO(pAd, 
+									BSS0,
+									0, 
+									PairwiseKey.CipherAlg, 
+									(UCHAR)pAd->StaCfg.DLSEntry[i].MacTabMatchWCID,
+									PAIRWISEKEYTABLE);
+
+				NdisMoveMemory(&pEntry->PairwiseKey, &PairwiseKey, sizeof(CIPHER_KEY));
+				DBGPRINT(RT_DEBUG_TRACE,("DLS - Receive STAKey Message-1 (Peer STA MAC Address STAKey) \n"));
+
+				RTMPSendSTAKeyHandShake(pAd, pAd->StaCfg.DLSEntry[i].MacAddr);
+				
+				DBGPRINT(RT_DEBUG_TRACE,("DLS - Finish STAKey handshake procedure (Initiator side)\n"));
+			}
+			else
+			{
+				// Data frame, update timeout value
+				if (pAd->StaCfg.DLSEntry[i].Status == DLS_FINISH)
+				{
+					pAd->StaCfg.DLSEntry[i].CountDownTimer = pAd->StaCfg.DLSEntry[i].TimeOut;
+					//AsicUpdateRxWCIDTable(pAd, (USHORT)(i + 2), pAddr);
+				}
+			}
+
+			bFindEntry = TRUE;
+		}
+	}
+
+	// update peer dls table entry
+	for (i=MAX_NUM_OF_INIT_DLS_ENTRY; i<MAX_NUM_OF_DLS_ENTRY; i++)
+	{
+		if (pAd->StaCfg.DLSEntry[i].Valid && MAC_ADDR_EQUAL(pAddr, pAd->StaCfg.DLSEntry[i].MacAddr))
+		{
+			if (bSTAKeyFrame)
+			{
+				PMAC_TABLE_ENTRY pEntry = NULL;
+
+				// STAKey frame, add pairwise key table, and send STAkey Msg-2
+				pAd->StaCfg.DLSEntry[i].Status = DLS_FINISH;
+				RTMPCancelTimer(&pAd->StaCfg.DLSEntry[i].Timer, &TimerCancelled);
+
+				PairwiseKey.KeyLen = LEN_TK;
+				NdisMoveMemory(PairwiseKey.Key, &pSTAKey[0], LEN_TK);
+				NdisMoveMemory(PairwiseKey.TxMic, &pSTAKey[16], LEN_TKIP_MIC);
+				NdisMoveMemory(PairwiseKey.RxMic, &pSTAKey[24], LEN_TKIP_MIC);
+
+				//PairwiseKey.CipherAlg = pAd->SharedKey[BSS0][pAd->StaCfg.DefaultKeyId].CipherAlg;
+				if (pAd->StaCfg.PairCipher == Ndis802_11Encryption2Enabled)
+					PairwiseKey.CipherAlg = CIPHER_TKIP;
+				else if (pAd->StaCfg.PairCipher == Ndis802_11Encryption3Enabled)
+					PairwiseKey.CipherAlg = CIPHER_AES;
+
+				pEntry = DlsEntryTableLookup(pAd, pAd->StaCfg.DLSEntry[i].MacAddr, TRUE);
+				//AsicAddKeyEntry(pAd, (USHORT)(i + 2), BSS0, 0, &PairwiseKey, TRUE, TRUE);	// reserve 0 for multicast, 1 for unicast
+				//AsicUpdateRxWCIDTable(pAd, (USHORT)(i + 2), pAddr);
+
+				// Add Pair-wise key to Asic
+            	RTMP_ASIC_PAIRWISE_KEY_TABLE(pAd,
+										(UCHAR)pAd->StaCfg.DLSEntry[i].MacTabMatchWCID,
+										&PairwiseKey);															
+
+				RTMP_SET_WCID_SEC_INFO(pAd, 
+									BSS0,
+									0, 
+									PairwiseKey.CipherAlg, 
+									(UCHAR)pAd->StaCfg.DLSEntry[i].MacTabMatchWCID,
+									PAIRWISEKEYTABLE);
+
+				NdisMoveMemory(&pEntry->PairwiseKey, &PairwiseKey, sizeof(CIPHER_KEY));
+				DBGPRINT(RT_DEBUG_TRACE,("DLS - Receive STAKey Message-1 (Initiator STA MAC Address STAKey)\n"));
+
+				// If support WPA or WPA2, start STAKey hand shake,
+				// If failed hand shake, just tear down peer DLS
+				if (RTMPSendSTAKeyHandShake(pAd, pAddr) != NDIS_STATUS_SUCCESS)
+				{
+					MLME_DLS_REQ_STRUCT	MlmeDlsReq;
+					USHORT				reason = REASON_QOS_CIPHER_NOT_SUPPORT;
+
+					pAd->StaCfg.DLSEntry[i].Valid	= FALSE;
+					pAd->StaCfg.DLSEntry[i].Status	= DLS_NONE;
+					DlsParmFill(pAd, &MlmeDlsReq, &pAd->StaCfg.DLSEntry[i], reason);
+					MlmeEnqueue(pAd, DLS_STATE_MACHINE, MT2_MLME_DLS_TEAR_DOWN, sizeof(MLME_DLS_REQ_STRUCT), &MlmeDlsReq, 0);
+				}
+				else
+				{
+					DBGPRINT(RT_DEBUG_TRACE,("DLS - Finish STAKey handshake procedure (Peer side)\n"));
+				}
+			}
+			else
+			{
+				// Data frame, update timeout value
+				if (pAd->StaCfg.DLSEntry[i].Status == DLS_FINISH)
+				{
+					pAd->StaCfg.DLSEntry[i].CountDownTimer = pAd->StaCfg.DLSEntry[i].TimeOut;
+				}
+			}
+			
+			bFindEntry = TRUE;
+		}
+	}
+
+
+	return bSTAKeyFrame;
+}
+
+/*
+	========================================================================
+
+	Routine	Description:
+		Check if the frame can be sent through DLS direct link interface
+		
+	Arguments:
+		pAd		Pointer	to adapter
+		
+	Return Value:
+		DLS entry index
+		
+	Note:
+	
+	========================================================================
+*/
+INT	RTMPCheckDLSFrame(
+	IN	PRTMP_ADAPTER	pAd,
+	IN  PUCHAR          pDA)
+{
+	INT rval = -1;
+	INT	i;
+
+	if (!pAd->CommonCfg.bDLSCapable)
+		return rval;
+
+	if (!INFRA_ON(pAd))
+		return rval;
+
+	do{
+		// check local dls table entry
+		for (i=0; i<MAX_NUM_OF_INIT_DLS_ENTRY; i++)
+		{
+			if (pAd->StaCfg.DLSEntry[i].Valid && (pAd->StaCfg.DLSEntry[i].Status == DLS_FINISH) &&
+				MAC_ADDR_EQUAL(pDA, pAd->StaCfg.DLSEntry[i].MacAddr))
+			{
+				rval = i;
+				break;
+			}
+		}
+
+		// check peer dls table entry
+		for (i=MAX_NUM_OF_INIT_DLS_ENTRY; i<MAX_NUM_OF_DLS_ENTRY; i++)
+		{
+			if (pAd->StaCfg.DLSEntry[i].Valid && (pAd->StaCfg.DLSEntry[i].Status == DLS_FINISH) &&
+				MAC_ADDR_EQUAL(pDA, pAd->StaCfg.DLSEntry[i].MacAddr))
+			{
+				rval = i;
+				break;
+			}
+		}
+	} while (FALSE);
+	
+	return rval;
+}
+
+/*
+    ==========================================================================
+    Description:
+        
+	IRQL = DISPATCH_LEVEL
+
+    ==========================================================================
+ */
+VOID RTMPSendDLSTearDownFrame(
+	IN	PRTMP_ADAPTER	pAd,
+	IN  PUCHAR          pDA)
+{
+	PUCHAR			pOutBuffer = NULL;
+	NDIS_STATUS		NStatus;
+	HEADER_802_11	DlsTearDownHdr;
+	ULONG			FrameLen = 0;
+	USHORT			Reason = REASON_QOS_QSTA_LEAVING_QBSS;
+	UCHAR			Category = CATEGORY_DLS;
+	UCHAR			Action = ACTION_DLS_TEARDOWN;
+	UCHAR			i = 0;
+
+	if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_RESET_IN_PROGRESS) ||
+		RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_HALT_IN_PROGRESS))
+		return;
+
+	DBGPRINT(RT_DEBUG_TRACE, ("Send DLS TearDown Frame \n"));
+
+	NStatus = MlmeAllocateMemory(pAd, &pOutBuffer);  //Get an unused nonpaged memory
+	if (NStatus != NDIS_STATUS_SUCCESS) 
+	{
+		DBGPRINT(RT_DEBUG_ERROR,("ASSOC - RTMPSendDLSTearDownFrame() allocate memory failed \n"));
+		return;
+	}
+
+	ActHeaderInit(pAd, &DlsTearDownHdr, pAd->CommonCfg.Bssid, pAd->CurrentAddress, pAd->CommonCfg.Bssid);
+	MakeOutgoingFrame(pOutBuffer,				&FrameLen, 
+					sizeof(HEADER_802_11),		&DlsTearDownHdr, 
+					1,							&Category,
+					1,							&Action,
+					6,							pDA,
+					6,							pAd->CurrentAddress,
+					2,							&Reason,
+					END_OF_ARGS);
+
+	MiniportMMRequest(pAd, 0, pOutBuffer, FrameLen);
+	MlmeFreeMemory(pAd, pOutBuffer);
+
+	// Remove key in local dls table entry
+	for (i = 0; i < MAX_NUM_OF_INIT_DLS_ENTRY; i++)
+	{
+		if (pAd->StaCfg.DLSEntry[i].Valid && (pAd->StaCfg.DLSEntry[i].Status == DLS_FINISH)
+			&& MAC_ADDR_EQUAL(pDA, pAd->StaCfg.DLSEntry[i].MacAddr))
+		{
+			MacTableDeleteDlsEntry(pAd, pAd->StaCfg.DLSEntry[i].MacTabMatchWCID, pAd->StaCfg.DLSEntry[i].MacAddr);
+		}
+	}
+
+	// Remove key in peer dls table entry
+	for (i=MAX_NUM_OF_INIT_DLS_ENTRY; i<MAX_NUM_OF_DLS_ENTRY; i++)
+	{
+		if (pAd->StaCfg.DLSEntry[i].Valid && (pAd->StaCfg.DLSEntry[i].Status == DLS_FINISH)
+			&& MAC_ADDR_EQUAL(pDA, pAd->StaCfg.DLSEntry[i].MacAddr))
+		{
+			MacTableDeleteDlsEntry(pAd, pAd->StaCfg.DLSEntry[i].MacTabMatchWCID, pAd->StaCfg.DLSEntry[i].MacAddr);
+		}
+	}
+
+	DBGPRINT(RT_DEBUG_TRACE, ("Send DLS TearDown Frame and remove key in (i=%d) \n", i));
+}
+
+/*
+    ==========================================================================
+    Description:
+        
+	IRQL = DISPATCH_LEVEL
+
+    ==========================================================================
+ */
+NDIS_STATUS RTMPSendSTAKeyRequest(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PUCHAR			pDA)
+{
+	UCHAR				Header802_3[14];
+	NDIS_STATUS			NStatus;
+	ULONG				FrameLen = 0;
+	PEAPOL_PACKET		pPacket;
+	UCHAR				*mpool;
+	UCHAR				Mic[16];
+	UCHAR				digest[80];
+	PUCHAR				pOutBuffer = NULL;
+	PNDIS_PACKET		pNdisPacket;
+	UCHAR				temp[64];
+	UCHAR				DlsPTK[80];
+
+	DBGPRINT(RT_DEBUG_TRACE,("DLS - RTMPSendSTAKeyRequest() to %02x:%02x:%02x:%02x:%02x:%02x\n", pDA[0], pDA[1], pDA[2], pDA[3], pDA[4], pDA[5]));
+	
+	pAd->Sequence ++;
+	MAKE_802_3_HEADER(Header802_3, pAd->CommonCfg.Bssid, pAd->CurrentAddress, EAPOL);
+
+	// Allocate memory for output
+	os_alloc_mem(NULL, (PUCHAR *)&mpool, TX_EAPOL_BUFFER);
+	if (mpool == NULL)
+    {
+        DBGPRINT(RT_DEBUG_ERROR, ("!!!%s : no memory!!!\n", __FUNCTION__));
+        return NDIS_STATUS_FAILURE;
+    }
+
+	// Zero message body
+	pPacket = (PEAPOL_PACKET)mpool;
+	NdisZeroMemory(pPacket, TX_EAPOL_BUFFER);
+	
+	pPacket->ProVer = EAPOL_VER;
+	pPacket->ProType    = EAPOLKey;
+	pPacket->Body_Len[1]  = sizeof(KEY_DESCRIPTER) + 6 + MAC_ADDR_LEN;		// data field contain KDE andPeer MAC address
+	
+	// STAKey Message is as EAPOL-Key(1,1,0,0,G/0,0,0, MIC, 0,Peer MAC KDE)
+	if ((pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA) || (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPAPSK))
+    {
+        pPacket->KeyDesc.Type = WPA1_KEY_DESC;
+    }
+    else if ((pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2) || (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2PSK))
+    {
+        pPacket->KeyDesc.Type = WPA2_KEY_DESC;
+    }
+	
+	// Key descriptor version
+	pPacket->KeyDesc.KeyInfo.KeyDescVer = 
+		(((pAd->StaCfg.PairCipher == Ndis802_11Encryption3Enabled) || (pAd->StaCfg.GroupCipher == Ndis802_11Encryption3Enabled)) ? (KEY_DESC_AES) : (KEY_DESC_TKIP));
+
+	pPacket->KeyDesc.KeyInfo.KeyMic	= 1;
+	pPacket->KeyDesc.KeyInfo.Secure	= 1;
+	pPacket->KeyDesc.KeyInfo.Request	= 1;
+
+	pPacket->KeyDesc.KeyDataLen[1]	= 12;
+
+	// use our own OUI to distinguish proprietary with standard.
+	pPacket->KeyDesc.KeyData[0]		= 0xDD;
+	pPacket->KeyDesc.KeyData[1]		= 0x0A;
+	pPacket->KeyDesc.KeyData[2]		= 0x00;
+	pPacket->KeyDesc.KeyData[3]		= 0x0C;
+	pPacket->KeyDesc.KeyData[4]		= 0x43;
+	pPacket->KeyDesc.KeyData[5]		= 0x03;
+	NdisMoveMemory(&pPacket->KeyDesc.KeyData[6], pDA, MAC_ADDR_LEN);
+	
+	NdisMoveMemory(pPacket->KeyDesc.ReplayCounter, pAd->StaCfg.DlsReplayCounter, LEN_KEY_DESC_REPLAY);
+
+	// Allocate buffer for transmitting message
+	NStatus = MlmeAllocateMemory(pAd, &pOutBuffer);
+	if (NStatus	!= NDIS_STATUS_SUCCESS)	
+	{
+		os_free_mem(NULL, mpool);
+		return NStatus;
+	}
+	// Prepare EAPOL frame for MIC calculation
+	// Be careful, only EAPOL frame is counted for MIC calculation
+	MakeOutgoingFrame(pOutBuffer,           &FrameLen,
+		              pPacket->Body_Len[1] + 4,    pPacket,
+		              END_OF_ARGS);
+
+	// use proprietary PTK
+	NdisZeroMemory(temp, 64);
+	NdisMoveMemory(temp, "IEEE802.11 WIRELESS ACCESS POINT", 32);
+	WpaDerivePTK(pAd, temp, temp, pAd->CommonCfg.Bssid, temp, pAd->CurrentAddress, DlsPTK, LEN_PTK);
+
+	// calculate MIC
+	if (pAd->StaCfg.WepStatus == Ndis802_11Encryption3Enabled)
+	{
+		// AES
+		NdisZeroMemory(digest,	sizeof(digest));
+		RT_HMAC_SHA1(DlsPTK, LEN_PTK_KCK, pOutBuffer, FrameLen, digest, SHA1_DIGEST_SIZE);
+		NdisMoveMemory(pPacket->KeyDesc.KeyMic, digest, LEN_KEY_DESC_MIC);
+	}
+	else
+	{
+		NdisZeroMemory(Mic,	sizeof(Mic));
+		RT_HMAC_MD5(DlsPTK, LEN_PTK_KCK, pOutBuffer, FrameLen, Mic, MD5_DIGEST_SIZE);
+		NdisMoveMemory(pPacket->KeyDesc.KeyMic, Mic, LEN_KEY_DESC_MIC);
+	}
+
+	MakeOutgoingFrame(pOutBuffer,           &FrameLen,	
+	                  sizeof(Header802_3),	Header802_3,
+		              pPacket->Body_Len[1] + 4,	pPacket,
+		              END_OF_ARGS);
+
+	NStatus = RTMPAllocateNdisPacket(pAd, &pNdisPacket, NULL, 0, pOutBuffer, FrameLen);
+	if (NStatus == NDIS_STATUS_SUCCESS)
+	{
+		RTMP_SET_PACKET_WCID(pNdisPacket, BSSID_WCID);
+		STASendPacket(pAd, pNdisPacket);
+		RTMPDeQueuePacket(pAd, FALSE, NUM_OF_TX_RING, MAX_TX_PROCESS);
+	}
+
+	MlmeFreeMemory(pAd, pOutBuffer);
+	os_free_mem(NULL, mpool);
+	
+	DBGPRINT(RT_DEBUG_TRACE, ("RTMPSendSTAKeyRequest- Send STAKey request (NStatus=%x, FrameLen=%ld)\n", NStatus, FrameLen));
+
+	return NStatus;
+}
+
+/*
+    ==========================================================================
+    Description:
+        
+	IRQL = DISPATCH_LEVEL
+
+    ==========================================================================
+ */
+NDIS_STATUS RTMPSendSTAKeyHandShake(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PUCHAR			pDA)
+{
+	UCHAR				Header802_3[14];
+	NDIS_STATUS			NStatus;
+	ULONG				FrameLen = 0;
+	PEAPOL_PACKET		pPacket;
+	UCHAR				*mpool;
+	UCHAR				Mic[16];
+	UCHAR				digest[80];
+	PUCHAR				pOutBuffer = NULL;
+	PNDIS_PACKET		pNdisPacket;
+	UCHAR				temp[64];
+	UCHAR				DlsPTK[80];			// Due to dirver can not get PTK, use proprietary PTK
+
+	DBGPRINT(RT_DEBUG_TRACE,("DLS - RTMPSendSTAKeyHandShake() to %02x:%02x:%02x:%02x:%02x:%02x\n", pDA[0], pDA[1], pDA[2], pDA[3], pDA[4], pDA[5]));
+	
+	pAd->Sequence ++;
+	MAKE_802_3_HEADER(Header802_3, pAd->CommonCfg.Bssid, pAd->CurrentAddress, EAPOL);
+
+	// Allocate memory for output
+	os_alloc_mem(NULL, (PUCHAR *)&mpool, TX_EAPOL_BUFFER);
+	if (mpool == NULL)
+    {
+        DBGPRINT(RT_DEBUG_ERROR, ("!!!%s : no memory!!!\n", __FUNCTION__));
+        return NDIS_STATUS_FAILURE;
+    }
+
+	// Zero message body
+	pPacket = (PEAPOL_PACKET)mpool;
+	NdisZeroMemory(pPacket, TX_EAPOL_BUFFER);
+
+	pPacket->ProVer = EAPOL_VER;
+	pPacket->ProType    = EAPOLKey;
+	pPacket->Body_Len[1]  = sizeof(KEY_DESCRIPTER) + 6 + MAC_ADDR_LEN;		// data field contain KDE and Peer MAC address
+	
+	// STAKey Message is as EAPOL-Key(1,1,0,0,G/0,0,0, MIC, 0,Peer MAC KDE)
+	if ((pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA) || (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPAPSK))
+    {
+        pPacket->KeyDesc.Type = WPA1_KEY_DESC;
+    }
+    else if ((pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2) || (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2PSK))
+    {
+        pPacket->KeyDesc.Type = WPA2_KEY_DESC;
+    }
+	
+	// Key descriptor version
+	pPacket->KeyDesc.KeyInfo.KeyDescVer = 
+		(((pAd->StaCfg.PairCipher == Ndis802_11Encryption3Enabled) || (pAd->StaCfg.GroupCipher == Ndis802_11Encryption3Enabled)) ? (KEY_DESC_AES) : (KEY_DESC_TKIP));
+
+	pPacket->KeyDesc.KeyInfo.KeyMic	= 1;
+	pPacket->KeyDesc.KeyInfo.Secure	= 1;
+
+	pPacket->KeyDesc.KeyDataLen[1]	= 12;
+
+	// use our own OUI to distinguish proprietary with standard.
+	pPacket->KeyDesc.KeyData[0]		= 0xDD;
+	pPacket->KeyDesc.KeyData[1]		= 0x0A;
+	pPacket->KeyDesc.KeyData[2]		= 0x00;
+	pPacket->KeyDesc.KeyData[3]		= 0x0C;
+	pPacket->KeyDesc.KeyData[4]		= 0x43;
+	pPacket->KeyDesc.KeyData[5]		= 0x03;
+	NdisMoveMemory(&pPacket->KeyDesc.KeyData[6], pDA, MAC_ADDR_LEN);
+	
+	NdisMoveMemory(pPacket->KeyDesc.ReplayCounter, pAd->StaCfg.DlsReplayCounter, LEN_KEY_DESC_REPLAY);
+
+	// Allocate buffer for transmitting message
+	NStatus = MlmeAllocateMemory(pAd, &pOutBuffer);
+	if (NStatus	!= NDIS_STATUS_SUCCESS)	
+	{
+		os_free_mem(NULL, mpool);
+		return NStatus;
+	}
+	// Prepare EAPOL frame for MIC calculation
+	// Be careful, only EAPOL frame is counted for MIC calculation
+	MakeOutgoingFrame(pOutBuffer,           &FrameLen,
+		              pPacket->Body_Len[1] + 4,    pPacket,
+		              END_OF_ARGS);
+
+	// use proprietary PTK
+	NdisZeroMemory(temp, 64);
+	NdisMoveMemory(temp, "IEEE802.11 WIRELESS ACCESS POINT", 32);
+	WpaDerivePTK(pAd, temp, temp, pAd->CommonCfg.Bssid, temp, pAd->CurrentAddress, DlsPTK, LEN_PTK);
+
+	// calculate MIC
+	if (pAd->StaCfg.WepStatus == Ndis802_11Encryption3Enabled)
+	{
+		// AES
+		NdisZeroMemory(digest,	sizeof(digest));
+		RT_HMAC_SHA1(DlsPTK, LEN_PTK_KCK, pOutBuffer, FrameLen, digest, SHA1_DIGEST_SIZE);
+		NdisMoveMemory(pPacket->KeyDesc.KeyMic, digest, LEN_KEY_DESC_MIC);
+	}
+	else
+	{
+		NdisZeroMemory(Mic,	sizeof(Mic));
+		RT_HMAC_MD5(DlsPTK, LEN_PTK_KCK, pOutBuffer, FrameLen, Mic, MD5_DIGEST_SIZE);
+		NdisMoveMemory(pPacket->KeyDesc.KeyMic, Mic, LEN_KEY_DESC_MIC);
+	}
+
+	MakeOutgoingFrame(pOutBuffer,           &FrameLen,	
+	                  sizeof(Header802_3),	Header802_3,
+		              pPacket->Body_Len[1] + 4,	pPacket,
+		              END_OF_ARGS);
+
+	NStatus = RTMPAllocateNdisPacket(pAd, &pNdisPacket, NULL, 0, pOutBuffer, FrameLen);
+	if (NStatus == NDIS_STATUS_SUCCESS)
+	{
+		RTMP_SET_PACKET_WCID(pNdisPacket, BSSID_WCID);
+		STASendPacket(pAd, pNdisPacket);
+		RTMPDeQueuePacket(pAd, FALSE, NUM_OF_TX_RING, MAX_TX_PROCESS);
+	}
+
+	MlmeFreeMemory(pAd, pOutBuffer);
+	os_free_mem(NULL, mpool);
+	
+	DBGPRINT(RT_DEBUG_TRACE, ("RTMPSendSTAKeyHandShake- Send STAKey Message-2 (NStatus=%x, FrameLen=%ld)\n", NStatus, FrameLen));
+
+	return NStatus;
+}
+
+VOID DlsTimeoutAction(
+	IN PVOID SystemSpecific1, 
+	IN PVOID FunctionContext, 
+	IN PVOID SystemSpecific2, 
+	IN PVOID SystemSpecific3) 
+{
+	MLME_DLS_REQ_STRUCT		MlmeDlsReq;
+	USHORT					reason;
+	PRT_802_11_DLS			pDLS = (PRT_802_11_DLS)FunctionContext;
+	PRTMP_ADAPTER			pAd = pDLS->pAd;
+
+	DBGPRINT(RT_DEBUG_TRACE, ("DlsTimeout - Tear down DLS links (%02x:%02x:%02x:%02x:%02x:%02x)\n",
+		pDLS->MacAddr[0], pDLS->MacAddr[1], pDLS->MacAddr[2], pDLS->MacAddr[3], pDLS->MacAddr[4], pDLS->MacAddr[5]));
+
+	if ((pDLS) && (pDLS->Valid))
+	{
+		reason			= REASON_QOS_REQUEST_TIMEOUT;
+		pDLS->Valid		= FALSE;
+		pDLS->Status	= DLS_NONE;
+		DlsParmFill(pAd, &MlmeDlsReq, pDLS, reason);
+		MlmeEnqueue(pAd, DLS_STATE_MACHINE, MT2_MLME_DLS_TEAR_DOWN, sizeof(MLME_DLS_REQ_STRUCT), &MlmeDlsReq, 0);
+		RTMP_MLME_HANDLER(pAd);
+	}
+}
+
+/*
+================================================================
+Description : because DLS and CLI share the same WCID table in ASIC. 
+Mesh entry also insert to pAd->MacTab.content[].
+Also fills the pairwise key.
+Because front MAX_AID_BA entries have direct mapping to BAEntry, which is only used as CLI. So we insert Dls
+from index MAX_AID_BA.
+================================================================
+*/
+MAC_TABLE_ENTRY *MacTableInsertDlsEntry(
+	IN  PRTMP_ADAPTER   pAd, 
+	IN  PUCHAR	pAddr,
+	IN  UINT	DlsEntryIdx)
+{
+	PMAC_TABLE_ENTRY pEntry = NULL;
+
+	DBGPRINT(RT_DEBUG_TRACE, ("====> MacTableInsertDlsEntry\n"));
+	// if FULL, return
+	if (pAd->MacTab.Size >= MAX_LEN_OF_MAC_TABLE)
+		return NULL;
+
+	do
+	{
+		if((pEntry = DlsEntryTableLookup(pAd, pAddr, TRUE)) != NULL)
+			break;
+
+		// allocate one MAC entry
+		pEntry = MacTableInsertEntry(pAd, pAddr, DlsEntryIdx + MIN_NET_DEVICE_FOR_DLS, TRUE);
+		if (pEntry)
+		{
+			pAd->StaCfg.DLSEntry[DlsEntryIdx].MacTabMatchWCID = pEntry->Aid;
+			pEntry->MatchDlsEntryIdx = DlsEntryIdx;
+			pEntry->AuthMode = pAd->StaCfg.AuthMode;
+			pEntry->WepStatus = pAd->StaCfg.WepStatus;
+			pEntry->PortSecured = WPA_802_1X_PORT_SECURED;
+
+			DBGPRINT(RT_DEBUG_TRACE, ("MacTableInsertDlsEntry - allocate entry #%d, Total= %d\n",pEntry->Aid, pAd->MacTab.Size));
+
+			// If legacy WEP is used, set pair-wise cipherAlg into WCID attribute table for this entry
+			if (IS_ENTRY_DLS(pEntry) && (pAd->StaCfg.WepStatus == Ndis802_11WEPEnabled))
+			{
+				UCHAR KeyIdx = 0;
+				UCHAR CipherAlg = 0;
+
+				KeyIdx	= pAd->StaCfg.DefaultKeyId;
+
+				CipherAlg 	= pAd->SharedKey[BSS0][KeyIdx].CipherAlg;
+
+				RTMPSetWcidSecurityInfo(pAd, 
+										BSS0, 
+										pAd->StaCfg.DefaultKeyId, 
+										pAd->SharedKey[BSS0][pAd->StaCfg.DefaultKeyId].CipherAlg, 
+										pEntry->Aid,
+										SHAREDKEYTABLE);
+			}
+		
+			break;
+		}
+	} while(FALSE);
+
+	DBGPRINT(RT_DEBUG_TRACE, ("<==== MacTableInsertDlsEntry\n"));
+
+	return pEntry;
+}
+
+
+/*
+	==========================================================================
+	Description:
+		Delete all Mesh Entry in pAd->MacTab
+	==========================================================================
+ */
+BOOLEAN MacTableDeleteDlsEntry(
+	IN PRTMP_ADAPTER pAd,
+	IN USHORT wcid,
+	IN PUCHAR pAddr)
+{
+	DBGPRINT(RT_DEBUG_TRACE, ("====> MacTableDeleteDlsEntry\n"));
+
+	if (!VALID_WCID(wcid))
+		return FALSE;
+
+	MacTableDeleteEntry(pAd, wcid, pAddr);
+
+	DBGPRINT(RT_DEBUG_TRACE, ("<==== MacTableDeleteDlsEntry\n"));
+
+	return TRUE;
+}
+
+MAC_TABLE_ENTRY *DlsEntryTableLookup(
+	IN PRTMP_ADAPTER pAd,
+	IN PUCHAR	pAddr,
+	IN BOOLEAN	bResetIdelCount)
+{
+	ULONG HashIdx;
+	MAC_TABLE_ENTRY *pEntry = NULL;
+
+	RTMP_SEM_LOCK(&pAd->MacTabLock);
+	HashIdx = MAC_ADDR_HASH_INDEX(pAddr);
+	pEntry = pAd->MacTab.Hash[HashIdx];
+
+	while (pEntry)
+	{
+		if (IS_ENTRY_DLS(pEntry)
+			&& MAC_ADDR_EQUAL(pEntry->Addr, pAddr))
+		{
+			if(bResetIdelCount)
+				pEntry->NoDataIdleCount = 0;
+			break;
+		}
+		else
+			pEntry = pEntry->pNext;
+	}
+
+	RTMP_SEM_UNLOCK(&pAd->MacTabLock);
+	return pEntry;
+}
+
+MAC_TABLE_ENTRY *DlsEntryTableLookupByWcid(
+	IN PRTMP_ADAPTER pAd,
+	IN UCHAR	wcid,
+	IN PUCHAR	pAddr,
+	IN BOOLEAN	bResetIdelCount)
+{
+	ULONG DLsIndex;
+	PMAC_TABLE_ENTRY pCurEntry = NULL;
+	PMAC_TABLE_ENTRY pEntry = NULL;
+
+	if (!VALID_WCID(wcid))
+		return NULL;
+
+	RTMP_SEM_LOCK(&pAd->MacTabLock);
+
+	do
+	{
+		pCurEntry = &pAd->MacTab.Content[wcid];
+
+		DLsIndex = 0xff;
+		if ((pCurEntry) && IS_ENTRY_DLS(pCurEntry))
+		{
+			DLsIndex = pCurEntry->MatchDlsEntryIdx;
+		}
+
+		if (DLsIndex == 0xff)
+			break;
+
+		if (MAC_ADDR_EQUAL(pCurEntry->Addr, pAddr))
+		{
+			if(bResetIdelCount)
+				pCurEntry->NoDataIdleCount = 0;
+			pEntry = pCurEntry;
+			break;
+		}
+	} while(FALSE);
+
+	RTMP_SEM_UNLOCK(&pAd->MacTabLock);
+
+	return pEntry;
+}
+
+INT Set_DlsEntryInfo_Display_Proc(
+	IN PRTMP_ADAPTER pAd, 
+	IN PUCHAR arg)
+{
+	INT i;
+
+	DBGPRINT(RT_DEBUG_OFF, ("\n%-19s%-8s\n", "MAC", "TIMEOUT\n"));
+	for (i=0; i<MAX_NUM_OF_DLS_ENTRY; i++)
+	{
+		if ((pAd->StaCfg.DLSEntry[i].Valid) && (pAd->StaCfg.DLSEntry[i].Status == DLS_FINISH))
+		{
+			PMAC_TABLE_ENTRY pEntry = &pAd->MacTab.Content[pAd->StaCfg.DLSEntry[i].MacTabMatchWCID];
+
+			DBGPRINT(RT_DEBUG_OFF, ("%02x:%02x:%02x:%02x:%02x:%02x  ",
+				pAd->StaCfg.DLSEntry[i].MacAddr[0], pAd->StaCfg.DLSEntry[i].MacAddr[1], pAd->StaCfg.DLSEntry[i].MacAddr[2],
+				pAd->StaCfg.DLSEntry[i].MacAddr[3], pAd->StaCfg.DLSEntry[i].MacAddr[4], pAd->StaCfg.DLSEntry[i].MacAddr[5]));
+			DBGPRINT(RT_DEBUG_OFF, ("%-8d\n", pAd->StaCfg.DLSEntry[i].TimeOut));
+
+			DBGPRINT(RT_DEBUG_OFF, ("\n"));
+			DBGPRINT(RT_DEBUG_OFF, ("\n%-19s%-4s%-4s%-4s%-4s%-7s%-7s%-7s","MAC", "AID", "BSS", "PSM", "WMM", "RSSI0", "RSSI1", "RSSI2"));
+#ifdef DOT11_N_SUPPORT			
+			DBGPRINT(RT_DEBUG_OFF, ("%-8s%-10s%-6s%-6s%-6s%-6s", "MIMOPS", "PhMd", "BW", "MCS", "SGI", "STBC"));
+#endif // DOT11_N_SUPPORT //
+			DBGPRINT(RT_DEBUG_OFF, ("\n%02X:%02X:%02X:%02X:%02X:%02X  ",
+				pEntry->Addr[0], pEntry->Addr[1], pEntry->Addr[2],
+				pEntry->Addr[3], pEntry->Addr[4], pEntry->Addr[5]));
+			DBGPRINT(RT_DEBUG_OFF, ("%-4d", (int)pEntry->Aid));
+			DBGPRINT(RT_DEBUG_OFF, ("%-4d", (int)pEntry->apidx));
+			DBGPRINT(RT_DEBUG_OFF, ("%-4d", (int)pEntry->PsMode));
+			DBGPRINT(RT_DEBUG_OFF, ("%-4d", (int)CLIENT_STATUS_TEST_FLAG(pEntry, fCLIENT_STATUS_WMM_CAPABLE)));
+			DBGPRINT(RT_DEBUG_OFF, ("%-7d", pEntry->RssiSample.AvgRssi0));
+			DBGPRINT(RT_DEBUG_OFF, ("%-7d", pEntry->RssiSample.AvgRssi1));
+			DBGPRINT(RT_DEBUG_OFF, ("%-7d", pEntry->RssiSample.AvgRssi2));
+#ifdef DOT11_N_SUPPORT
+			DBGPRINT(RT_DEBUG_OFF, ("%-8d", (int)pEntry->MmpsMode));
+			DBGPRINT(RT_DEBUG_OFF, ("%-10s", GetPhyMode(pEntry->HTPhyMode.field.MODE)));
+			DBGPRINT(RT_DEBUG_OFF, ("%-6s", GetBW(pEntry->HTPhyMode.field.BW)));
+			DBGPRINT(RT_DEBUG_OFF, ("%-6d", pEntry->HTPhyMode.field.MCS));
+			DBGPRINT(RT_DEBUG_OFF, ("%-6d", pEntry->HTPhyMode.field.ShortGI));
+			DBGPRINT(RT_DEBUG_OFF, ("%-6d", pEntry->HTPhyMode.field.STBC));
+#endif // DOT11_N_SUPPORT //
+			DBGPRINT(RT_DEBUG_OFF, ("%-10d, %d, %d%%\n", pEntry->DebugFIFOCount, pEntry->DebugTxCount, 
+						(pEntry->DebugTxCount) ? ((pEntry->DebugTxCount-pEntry->DebugFIFOCount)*100/pEntry->DebugTxCount) : 0));
+			DBGPRINT(RT_DEBUG_OFF, ("\n"));
+
+		}
+	}
+
+	return TRUE;
+}
+
+INT	Set_DlsAddEntry_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+    UCHAR	mac[MAC_ADDR_LEN];
+	USHORT	Timeout;
+	PSTRING token;
+	STRING sepValue[] = ":", DASH = '-';
+	INT i;
+    RT_802_11_DLS	Dls;
+
+    if(strlen(arg) < 19)  //Mac address acceptable format 01:02:03:04:05:06 length 17 plus the "-" and timeout value in decimal format.
+		return FALSE;
+
+	token = strchr(arg, DASH);
+	if ((token != NULL) && (strlen(token)>1))
+	{
+		Timeout = (USHORT) simple_strtol((token+1), 0, 10);
+		
+		*token = '\0';
+		for (i = 0, token = rstrtok(arg, &sepValue[0]); token; token = rstrtok(NULL, &sepValue[0]), i++)
+		{
+			if((strlen(token) != 2) || (!isxdigit(*token)) || (!isxdigit(*(token+1))))
+				return FALSE;
+			AtoH(token, (&mac[i]), 1);
+		}
+		if(i != 6)
+			return FALSE;
+
+	    DBGPRINT(RT_DEBUG_OFF, ("\n%02x:%02x:%02x:%02x:%02x:%02x-%d", mac[0], mac[1],
+	           mac[2], mac[3], mac[4], mac[5], (int)Timeout));
+
+		NdisZeroMemory(&Dls, sizeof(RT_802_11_DLS));
+		Dls.TimeOut = Timeout;
+		COPY_MAC_ADDR(Dls.MacAddr, mac);
+		Dls.Valid = 1;
+
+		MlmeEnqueue(pAd, 
+					MLME_CNTL_STATE_MACHINE, 
+					RT_OID_802_11_SET_DLS_PARAM, 
+					sizeof(RT_802_11_DLS), 
+					&Dls, 0);
+
+		return TRUE;
+	}
+
+	return FALSE;
+
+}
+
+INT	Set_DlsTearDownEntry_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	UCHAR			macAddr[MAC_ADDR_LEN];
+	PSTRING			value;
+	INT				i;
+	RT_802_11_DLS	Dls;
+
+	if(strlen(arg) != 17)  //Mac address acceptable format 01:02:03:04:05:06 length 17
+		return FALSE;
+
+	for (i=0, value = rstrtok(arg,":"); value; value = rstrtok(NULL,":")) 
+	{
+		if((strlen(value) != 2) || (!isxdigit(*value)) || (!isxdigit(*(value+1))) ) 
+			return FALSE;  //Invalid
+
+		AtoH(value, &macAddr[i++], 2);
+	}
+
+	DBGPRINT(RT_DEBUG_OFF, ("\n%02x:%02x:%02x:%02x:%02x:%02x", macAddr[0], macAddr[1],
+	           macAddr[2], macAddr[3], macAddr[4], macAddr[5]));
+
+	NdisZeroMemory(&Dls, sizeof(RT_802_11_DLS));
+	COPY_MAC_ADDR(Dls.MacAddr, macAddr);
+	Dls.Valid = 0;
+
+	MlmeEnqueue(pAd, 
+				MLME_CNTL_STATE_MACHINE, 
+				RT_OID_802_11_SET_DLS_PARAM, 
+				sizeof(RT_802_11_DLS), 
+				&Dls, 0);
+
+	return TRUE;
+}
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/rtmp_ckipmic.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/rtmp_ckipmic.c
new file mode 100644
index 000000000..45aace8b0
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/rtmp_ckipmic.c
@@ -0,0 +1,578 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+	Module Name:
+	rtmp_ckipmic.c
+
+	Abstract:
+
+	Revision History:
+	Who			When			What
+	--------	----------		----------------------------------------------
+	Name		Date			Modification logs
+*/
+#include "rt_config.h"
+#include "rtmp_ckipmic.h"
+
+#define MIC_ACCUM(v)            pContext->accum += (ULONGLONG)v * RTMPMicGetCoefficient(pContext)
+#define GB(p,i,s)               ( ((ULONG) *((UCHAR*)(p)+i) ) << (s) )
+#define GETBIG32(p)             GB(p,0,24)|GB(p,1,16)|GB(p,2,8)|GB(p,3,0)
+
+/*****************************/
+/******** SBOX Table *********/
+/*****************************/
+
+UCHAR SboxTable[256] =
+{
+    0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5,
+    0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76,
+    0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0,
+    0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0,
+    0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc,
+    0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15,
+    0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a,
+    0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75,
+    0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0,
+    0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84,
+    0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b,
+    0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf,
+    0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85,
+    0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8,
+    0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5,
+    0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2,
+    0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17,
+    0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73,
+    0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88,
+    0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb,
+    0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c,
+    0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79,
+    0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9,
+    0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08,
+    0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6,
+    0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a,
+    0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e,
+    0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e,
+    0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94,
+    0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf,
+    0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68,
+    0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16
+};
+
+/*===========================================================================*/
+/*=================== CKIP KEY PERMUTATION ==================================*/
+/*===========================================================================*/
+
+/* 2-byte by 2-byte subset of the full AES table */
+static const USHORT Sbox[256] =
+{
+    0xC6A5,0xF884,0xEE99,0xF68D,0xFF0D,0xD6BD,0xDEB1,0x9154,
+    0x6050,0x0203,0xCEA9,0x567D,0xE719,0xB562,0x4DE6,0xEC9A,
+    0x8F45,0x1F9D,0x8940,0xFA87,0xEF15,0xB2EB,0x8EC9,0xFB0B,
+    0x41EC,0xB367,0x5FFD,0x45EA,0x23BF,0x53F7,0xE496,0x9B5B,
+    0x75C2,0xE11C,0x3DAE,0x4C6A,0x6C5A,0x7E41,0xF502,0x834F,
+    0x685C,0x51F4,0xD134,0xF908,0xE293,0xAB73,0x6253,0x2A3F,
+    0x080C,0x9552,0x4665,0x9D5E,0x3028,0x37A1,0x0A0F,0x2FB5,
+    0x0E09,0x2436,0x1B9B,0xDF3D,0xCD26,0x4E69,0x7FCD,0xEA9F,
+    0x121B,0x1D9E,0x5874,0x342E,0x362D,0xDCB2,0xB4EE,0x5BFB,
+    0xA4F6,0x764D,0xB761,0x7DCE,0x527B,0xDD3E,0x5E71,0x1397,
+    0xA6F5,0xB968,0x0000,0xC12C,0x4060,0xE31F,0x79C8,0xB6ED,
+    0xD4BE,0x8D46,0x67D9,0x724B,0x94DE,0x98D4,0xB0E8,0x854A,
+    0xBB6B,0xC52A,0x4FE5,0xED16,0x86C5,0x9AD7,0x6655,0x1194,
+    0x8ACF,0xE910,0x0406,0xFE81,0xA0F0,0x7844,0x25BA,0x4BE3,
+    0xA2F3,0x5DFE,0x80C0,0x058A,0x3FAD,0x21BC,0x7048,0xF104,
+    0x63DF,0x77C1,0xAF75,0x4263,0x2030,0xE51A,0xFD0E,0xBF6D,
+    0x814C,0x1814,0x2635,0xC32F,0xBEE1,0x35A2,0x88CC,0x2E39,
+    0x9357,0x55F2,0xFC82,0x7A47,0xC8AC,0xBAE7,0x322B,0xE695,
+    0xC0A0,0x1998,0x9ED1,0xA37F,0x4466,0x547E,0x3BAB,0x0B83,
+    0x8CCA,0xC729,0x6BD3,0x283C,0xA779,0xBCE2,0x161D,0xAD76,
+    0xDB3B,0x6456,0x744E,0x141E,0x92DB,0x0C0A,0x486C,0xB8E4,
+    0x9F5D,0xBD6E,0x43EF,0xC4A6,0x39A8,0x31A4,0xD337,0xF28B,
+    0xD532,0x8B43,0x6E59,0xDAB7,0x018C,0xB164,0x9CD2,0x49E0,
+    0xD8B4,0xACFA,0xF307,0xCF25,0xCAAF,0xF48E,0x47E9,0x1018,
+    0x6FD5,0xF088,0x4A6F,0x5C72,0x3824,0x57F1,0x73C7,0x9751,
+    0xCB23,0xA17C,0xE89C,0x3E21,0x96DD,0x61DC,0x0D86,0x0F85,
+    0xE090,0x7C42,0x71C4,0xCCAA,0x90D8,0x0605,0xF701,0x1C12,
+    0xC2A3,0x6A5F,0xAEF9,0x69D0,0x1791,0x9958,0x3A27,0x27B9,
+    0xD938,0xEB13,0x2BB3,0x2233,0xD2BB,0xA970,0x0789,0x33A7,
+    0x2DB6,0x3C22,0x1592,0xC920,0x8749,0xAAFF,0x5078,0xA57A,
+    0x038F,0x59F8,0x0980,0x1A17,0x65DA,0xD731,0x84C6,0xD0B8,
+    0x82C3,0x29B0,0x5A77,0x1E11,0x7BCB,0xA8FC,0x6DD6,0x2C3A
+    };
+
+#define Lo8(v16)     ((v16)       & 0xFF)
+#define Hi8(v16)    (((v16) >> 8) & 0xFF)
+#define u16Swap(i)  ( (((i) >> 8) & 0xFF) | (((i) << 8) & 0xFF00) )
+#define _S_(i)      (Sbox[Lo8(i)] ^ u16Swap(Sbox[Hi8(i)]))
+
+#define rotLeft_1(x) ((((x) << 1) | ((x) >> 15)) & 0xFFFF)
+VOID CKIP_key_permute
+    (
+     OUT UCHAR  *PK,           /* output permuted key */
+     IN UCHAR *CK,           /* input CKIP key */
+     IN UCHAR  toDsFromDs,    /* input toDs/FromDs bits */
+     IN UCHAR *piv           /* input pointer to IV */
+     )
+{
+    int i;
+    USHORT H[2], tmp;          /* H=32-bits of per-packet hash value */
+    USHORT L[8], R[8];         /* L=u16 array of CK, R=u16 array of PK */
+
+    /* build L from input key */
+    memset(L, 0, sizeof(L));
+    for (i=0; i<16; i++) {
+        L[i>>1] |= ( ((USHORT)(CK[i])) << ( i & 1 ? 8 : 0) );
+    }
+
+    H[0] = (((USHORT)piv[0]) << 8) + piv[1];
+    H[1] = ( ((USHORT)toDsFromDs) << 8) | piv[2];
+
+    for (i=0; i<8; i++) {
+        H[0] ^= L[i];           /* 16-bits of key material */
+        tmp   = _S_(H[0]);      /* 16x16 permutation */
+        H[0]  = tmp ^ H[1];     /* set up for next round */
+        H[1]  = tmp;
+        R[i]  = H[0];           /* store into key array  */
+    }
+    
+    /* sweep in the other direction */
+    tmp=L[0];
+    for (i=7; i>0; i--) {
+        R[i] = tmp = rotLeft_1(tmp) + R[i];
+    }
+    
+    /* IV of the permuted key is unchanged */
+    PK[0] = piv[0];
+    PK[1] = piv[1];
+    PK[2] = piv[2];
+
+    /* key portion of the permuted key is changed */
+    for (i=3; i<16; i++) {
+        PK[i] = (UCHAR) (R[i>>1] >> (i & 1 ? 8 : 0));
+    }
+}    
+
+/* prepare for calculation of a new mic */
+VOID RTMPCkipMicInit(
+    IN  PMIC_CONTEXT        pContext,
+    IN  PUCHAR              CK)
+{
+    /* prepare for new mic calculation */
+    NdisMoveMemory(pContext->CK, CK, sizeof(pContext->CK));
+    pContext->accum = 0;
+    pContext->position = 0;
+}
+
+/* add some bytes to the mic calculation */
+VOID RTMPMicUpdate(
+    IN  PMIC_CONTEXT        pContext,
+    IN  PUCHAR              pOctets,
+    IN  INT                 len)
+{
+    INT     byte_position;
+    ULONG   val;
+
+    byte_position = (pContext->position & 3);
+    while (len > 0) {
+        /* build a 32-bit word for MIC multiply accumulate */
+        do {
+            if (len == 0) return;
+            pContext->part[byte_position++] = *pOctets++;
+            pContext->position++;
+            len--;
+        } while (byte_position < 4);
+        /* have a full 32-bit word to process */
+        val = GETBIG32(&pContext->part[0]);
+        MIC_ACCUM(val);
+        byte_position = 0;
+    }
+}
+
+ULONG RTMPMicGetCoefficient(
+    IN  PMIC_CONTEXT         pContext)
+{
+    UCHAR   aes_counter[16];
+    INT     coeff_position;
+    UCHAR   *p;
+
+    coeff_position = (pContext->position - 1) >> 2;
+    if ( (coeff_position & 3) == 0) {
+        /* fetching the first coefficient -- get new 16-byte aes counter output */
+        u32 counter = (coeff_position >> 2);
+            
+        /* new counter value */
+        memset(&aes_counter[0], 0, sizeof(aes_counter));
+        aes_counter[15] = (UINT8)(counter >> 0);
+        aes_counter[14] = (UINT8)(counter >> 8);
+        aes_counter[13] = (UINT8)(counter >> 16);
+        aes_counter[12] = (UINT8)(counter >> 24);
+
+        RTMPAesEncrypt(&pContext->CK[0], &aes_counter[0], pContext->coefficient);
+    }
+    p = &(pContext->coefficient[ (coeff_position & 3) << 2 ]);
+    return GETBIG32(p);
+}
+
+/****************************************/
+/* aes128k128d()                        */
+/* Performs a 128 bit AES encrypt with  */
+/* 128 bit data.                        */
+/****************************************/
+VOID xor_128(
+    IN  PUCHAR  a,
+    IN  PUCHAR  b,
+    OUT PUCHAR  out)
+{
+    INT i;
+
+    for (i=0;i<16; i++)
+    {
+        out[i] = a[i] ^ b[i];
+    }
+}
+
+UCHAR RTMPCkipSbox(
+    IN  UCHAR   a)
+{
+    return SboxTable[(int)a];
+}
+
+VOID xor_32(
+    IN  PUCHAR  a,
+    IN  PUCHAR  b,
+    OUT PUCHAR  out)
+{
+    INT i;
+
+    for (i=0;i<4; i++)
+    {
+        out[i] = a[i] ^ b[i];
+    }
+}
+
+VOID next_key(
+    IN  PUCHAR  key,
+    IN  INT     round)
+{
+    UCHAR       rcon;
+    UCHAR       sbox_key[4];
+    UCHAR       rcon_table[12] =
+    {
+        0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80,
+        0x1b, 0x36, 0x36, 0x36
+    };
+
+    sbox_key[0] = RTMPCkipSbox(key[13]);
+    sbox_key[1] = RTMPCkipSbox(key[14]);
+    sbox_key[2] = RTMPCkipSbox(key[15]);
+    sbox_key[3] = RTMPCkipSbox(key[12]);
+
+    rcon = rcon_table[round];
+
+    xor_32(&key[0], sbox_key, &key[0]);
+    key[0] = key[0] ^ rcon;
+
+    xor_32(&key[4], &key[0], &key[4]);
+    xor_32(&key[8], &key[4], &key[8]);
+    xor_32(&key[12], &key[8], &key[12]);
+}
+
+VOID byte_sub(
+    IN  PUCHAR  in,
+    OUT PUCHAR  out)
+{
+    INT i;
+
+    for (i=0; i< 16; i++)
+    {
+        out[i] = RTMPCkipSbox(in[i]);
+    }
+}
+
+VOID shift_row(
+    IN  PUCHAR  in,
+    OUT PUCHAR  out)
+{
+    out[0] =  in[0];
+    out[1] =  in[5];
+    out[2] =  in[10];
+    out[3] =  in[15];
+    out[4] =  in[4];
+    out[5] =  in[9];
+    out[6] =  in[14];
+    out[7] =  in[3];
+    out[8] =  in[8];
+    out[9] =  in[13];
+    out[10] = in[2];
+    out[11] = in[7];
+    out[12] = in[12];
+    out[13] = in[1];
+    out[14] = in[6];
+    out[15] = in[11];
+}
+
+VOID mix_column(
+    IN  PUCHAR  in,
+    OUT PUCHAR  out)
+{
+    INT         i;
+    UCHAR       add1b[4];
+    UCHAR       add1bf7[4];
+    UCHAR       rotl[4];
+    UCHAR       swap_halfs[4];
+    UCHAR       andf7[4];
+    UCHAR       rotr[4];
+    UCHAR       temp[4];
+    UCHAR       tempb[4];
+
+    for (i=0 ; i<4; i++)
+    {
+        if ((in[i] & 0x80)== 0x80)
+            add1b[i] = 0x1b;
+        else
+            add1b[i] = 0x00;
+    }
+
+    swap_halfs[0] = in[2];    /* Swap halfs */
+    swap_halfs[1] = in[3];
+    swap_halfs[2] = in[0];
+    swap_halfs[3] = in[1];
+
+    rotl[0] = in[3];        /* Rotate left 8 bits */
+    rotl[1] = in[0];
+    rotl[2] = in[1];
+    rotl[3] = in[2];
+
+    andf7[0] = in[0] & 0x7f;
+    andf7[1] = in[1] & 0x7f;
+    andf7[2] = in[2] & 0x7f;
+    andf7[3] = in[3] & 0x7f;
+
+    for (i = 3; i>0; i--)    /* logical shift left 1 bit */
+    {
+        andf7[i] = andf7[i] << 1;
+        if ((andf7[i-1] & 0x80) == 0x80)
+        {
+            andf7[i] = (andf7[i] | 0x01);
+        }
+    }
+    andf7[0] = andf7[0] << 1;
+    andf7[0] = andf7[0] & 0xfe;
+
+    xor_32(add1b, andf7, add1bf7);
+
+    xor_32(in, add1bf7, rotr);
+
+    temp[0] = rotr[0];         /* Rotate right 8 bits */
+    rotr[0] = rotr[1];
+    rotr[1] = rotr[2];
+    rotr[2] = rotr[3];
+    rotr[3] = temp[0];
+
+    xor_32(add1bf7, rotr, temp);
+    xor_32(swap_halfs, rotl,tempb);
+    xor_32(temp, tempb, out);
+}
+
+VOID RTMPAesEncrypt(
+    IN  PUCHAR  key,
+    IN  PUCHAR  data,
+    IN  PUCHAR  ciphertext)
+{
+    INT             round;
+    INT             i;
+    UCHAR           intermediatea[16];
+    UCHAR           intermediateb[16];
+    UCHAR           round_key[16];
+
+    for(i=0; i<16; i++) round_key[i] = key[i];
+
+    for (round = 0; round < 11; round++)
+    {
+        if (round == 0)
+        {
+            xor_128(round_key, data, ciphertext);
+            next_key(round_key, round); 
+        }
+        else if (round == 10)
+        {
+            byte_sub(ciphertext, intermediatea);
+            shift_row(intermediatea, intermediateb);
+            xor_128(intermediateb, round_key, ciphertext);
+        }
+        else    /* 1 - 9 */
+        {
+            byte_sub(ciphertext, intermediatea);
+            shift_row(intermediatea, intermediateb);
+            mix_column(&intermediateb[0], &intermediatea[0]);
+            mix_column(&intermediateb[4], &intermediatea[4]);
+            mix_column(&intermediateb[8], &intermediatea[8]);
+            mix_column(&intermediateb[12], &intermediatea[12]);
+            xor_128(intermediatea, round_key, ciphertext);
+            next_key(round_key, round);
+        }
+    }
+
+}
+
+/* calculate the mic */
+VOID RTMPMicFinal(
+    IN  PMIC_CONTEXT    pContext,
+    OUT UCHAR           digest[4])
+{
+    INT             byte_position;
+    ULONG           val;
+    ULONGLONG       sum, utmp;
+    LONGLONG        stmp;
+
+    /* deal with partial 32-bit word left over from last update */
+    if ( (byte_position = (pContext->position & 3)) != 0) {
+        /* have a partial word in part to deal with -- zero unused bytes */
+        do {
+            pContext->part[byte_position++] = 0;
+            pContext->position++;
+        } while (byte_position < 4);
+        val = GETBIG32(&pContext->part[0]);
+        MIC_ACCUM(val);
+    }
+
+    /* reduce the accumulated u64 to a 32-bit MIC */
+    sum = pContext->accum;
+    stmp = (sum  & 0xffffffffL) - ((sum >> 32)  * 15);
+    utmp = (stmp & 0xffffffffL) - ((stmp >> 32) * 15);
+    sum = utmp & 0xffffffffL;
+    if (utmp > 0x10000000fL)
+        sum -= 15;
+
+    val = (ULONG)sum;
+    digest[0] = (UCHAR)((val>>24) & 0xFF);
+    digest[1] = (UCHAR) ((val>>16) & 0xFF);
+    digest[2] = (UCHAR) ((val>>8) & 0xFF);
+    digest[3] = (UCHAR)((val>>0) & 0xFF);
+}
+
+VOID RTMPCkipInsertCMIC(
+    IN  PRTMP_ADAPTER   pAd,
+    OUT PUCHAR          pMIC,
+    IN  PUCHAR          p80211hdr,
+    IN  PNDIS_PACKET    pPacket,
+    IN  PCIPHER_KEY     pKey,
+    IN  PUCHAR          mic_snap)
+{
+	PACKET_INFO		PacketInfo;
+	PUCHAR			pSrcBufVA;
+	ULONG			SrcBufLen;
+    PUCHAR          pDA, pSA, pProto;
+    UCHAR           bigethlen[2];
+	UCHAR			ckip_ck[16];
+    MIC_CONTEXT     mic_ctx;
+    USHORT          payloadlen;
+	UCHAR			i;
+
+	if (pKey == NULL)
+	{
+		DBGPRINT_ERR(("RTMPCkipInsertCMIC, Before to form the CKIP key (CK), pKey can't be NULL\n"));
+		return;
+	}
+
+    switch (*(p80211hdr+1) & 3)
+    {
+        case 0: /* FromDs=0, ToDs=0 */
+            pDA = p80211hdr+4;
+            pSA = p80211hdr+10;
+            break;
+        case 1: /* FromDs=0, ToDs=1 */
+            pDA = p80211hdr+16;
+            pSA = p80211hdr+10;
+            break;
+        case 2: /* FromDs=1, ToDs=0 */
+            pDA = p80211hdr+4;
+            pSA = p80211hdr+16;
+            break;
+        case 3: /* FromDs=1, ToDs=1 */
+            pDA = p80211hdr+16;
+            pSA = p80211hdr+24;
+            break;
+    }
+
+	RTMP_QueryPacketInfo(pPacket, &PacketInfo, &pSrcBufVA, &SrcBufLen);
+
+    if (SrcBufLen < LENGTH_802_3)
+        return;
+
+    pProto = pSrcBufVA + 12;
+    payloadlen = PacketInfo.TotalPacketLength - LENGTH_802_3 + 18; // CKIP_LLC(8)+CMIC(4)+TxSEQ(4)+PROTO(2)=18
+    
+    bigethlen[0] = (unsigned char)(payloadlen >> 8);
+    bigethlen[1] = (unsigned char)payloadlen;
+
+	//
+	// Encryption Key expansion to form the CKIP Key (CKIP_CK).
+	//
+	if (pKey->KeyLen < 16)
+	{
+		for(i = 0; i < (16 / pKey->KeyLen); i++)
+		{
+			NdisMoveMemory(ckip_ck + i * pKey->KeyLen, 
+							pKey->Key, 
+							pKey->KeyLen);			
+		}
+		NdisMoveMemory(ckip_ck + i * pKey->KeyLen,
+						pKey->Key,
+						16 - (i * pKey->KeyLen));
+	}
+	else
+	{
+		NdisMoveMemory(ckip_ck, pKey->Key, pKey->KeyLen);
+	}	
+    RTMPCkipMicInit(&mic_ctx, ckip_ck);
+    RTMPMicUpdate(&mic_ctx, pDA, MAC_ADDR_LEN);            // MIC <-- DA
+    RTMPMicUpdate(&mic_ctx, pSA, MAC_ADDR_LEN);            // MIC <-- SA
+    RTMPMicUpdate(&mic_ctx, bigethlen, 2);                 // MIC <-- payload length starting from CKIP SNAP
+    RTMPMicUpdate(&mic_ctx, mic_snap, 8);                  // MIC <-- snap header 
+    RTMPMicUpdate(&mic_ctx, pAd->StaCfg.TxSEQ, 4);   // MIC <-- TxSEQ
+    RTMPMicUpdate(&mic_ctx, pProto, 2);                    // MIC <-- Protocol
+
+    pSrcBufVA += LENGTH_802_3;
+    SrcBufLen -= LENGTH_802_3;
+
+    // Mic <-- original payload. loop until all payload processed
+    do
+    {
+        if (SrcBufLen > 0)
+            RTMPMicUpdate(&mic_ctx, pSrcBufVA, SrcBufLen); 
+
+		NdisGetNextBuffer(PacketInfo.pFirstBuffer, &PacketInfo.pFirstBuffer);
+        if (PacketInfo.pFirstBuffer)
+        {
+            NDIS_QUERY_BUFFER(PacketInfo.pFirstBuffer, &pSrcBufVA, &SrcBufLen);
+        }
+        else
+            break;
+    } while (TRUE);
+    
+    RTMPMicFinal(&mic_ctx, pMIC);                          // update MIC
+}
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/rtmp_data.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/rtmp_data.c
new file mode 100644
index 000000000..01ffda3a1
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/rtmp_data.c
@@ -0,0 +1,3062 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+	Module Name:
+	rtmp_data.c
+
+	Abstract:
+	Data path subroutines
+
+	Revision History:
+	Who 		When			What
+	--------	----------		----------------------------------------------
+*/
+#include "rt_config.h"
+
+
+
+VOID STARxEAPOLFrameIndicate(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	MAC_TABLE_ENTRY	*pEntry,
+	IN	RX_BLK			*pRxBlk,
+	IN	UCHAR			FromWhichBSSID)
+{
+	PRXWI_STRUC		pRxWI = pRxBlk->pRxWI;
+	UCHAR			*pTmpBuf;
+
+
+#ifdef WPA_SUPPLICANT_SUPPORT
+	if (pAd->StaCfg.WpaSupplicantUP)
+	{
+		// All EAPoL frames have to pass to upper layer (ex. WPA_SUPPLICANT daemon)
+		// TBD : process fragmented EAPol frames
+		{
+			// In 802.1x mode, if the received frame is EAP-SUCCESS packet, turn on the PortSecured variable
+			if ( pAd->StaCfg.IEEE8021X == TRUE &&
+				 (EAP_CODE_SUCCESS == WpaCheckEapCode(pAd, pRxBlk->pData, pRxBlk->DataSize, LENGTH_802_1_H)))
+			{
+				PUCHAR	Key; 			
+				UCHAR 	CipherAlg;
+				int     idx = 0;
+
+				DBGPRINT_RAW(RT_DEBUG_TRACE, ("Receive EAP-SUCCESS Packet\n"));
+				//pAd->StaCfg.PortSecured = WPA_802_1X_PORT_SECURED;
+				STA_PORT_SECURED(pAd);
+				
+                if (pAd->StaCfg.IEEE8021x_required_keys == FALSE)
+                {
+                    idx = pAd->StaCfg.DesireSharedKeyId;
+                    CipherAlg = pAd->StaCfg.DesireSharedKey[idx].CipherAlg;
+					Key = pAd->StaCfg.DesireSharedKey[idx].Key;
+                    
+                    if (pAd->StaCfg.DesireSharedKey[idx].KeyLen > 0)
+    				{
+						// Set key material and cipherAlg to Asic
+						RTMP_ASIC_SHARED_KEY_TABLE(pAd, BSS0, idx, &pAd->StaCfg.DesireSharedKey[idx]);
+
+						/* STA doesn't need to set WCID attribute for group key */
+
+						// Assign pairwise key info
+						RTMP_SET_WCID_SEC_INFO(pAd, BSS0, idx, CipherAlg, BSSID_WCID, SHAREDKEYTABLE);
+
+                        pAd->IndicateMediaState = NdisMediaStateConnected;
+                        pAd->ExtraInfo = GENERAL_LINK_UP;
+						        
+						// For Preventing ShardKey Table is cleared by remove key procedure.
+    					pAd->SharedKey[BSS0][idx].CipherAlg = CipherAlg;
+						pAd->SharedKey[BSS0][idx].KeyLen = pAd->StaCfg.DesireSharedKey[idx].KeyLen;
+						NdisMoveMemory(pAd->SharedKey[BSS0][idx].Key, 
+									   pAd->StaCfg.DesireSharedKey[idx].Key, 
+									   pAd->StaCfg.DesireSharedKey[idx].KeyLen);
+    				}
+				}
+			}
+
+			Indicate_Legacy_Packet(pAd, pRxBlk, FromWhichBSSID);
+			return; 
+		}
+	}
+	else
+#endif // WPA_SUPPLICANT_SUPPORT //                        
+	{
+		// Special DATA frame that has to pass to MLME
+		//	 1. Cisco Aironet frames for CCX2. We need pass it to MLME for special process
+		//	 2. EAPOL handshaking frames when driver supplicant enabled, pass to MLME for special process
+		{
+			pTmpBuf = pRxBlk->pData - LENGTH_802_11;
+			NdisMoveMemory(pTmpBuf, pRxBlk->pHeader, LENGTH_802_11);
+			REPORT_MGMT_FRAME_TO_MLME(pAd, pRxWI->WirelessCliID, pTmpBuf, pRxBlk->DataSize + LENGTH_802_11, pRxWI->RSSI0, pRxWI->RSSI1, pRxWI->RSSI2, 0);
+			DBGPRINT_RAW(RT_DEBUG_TRACE, ("!!! report EAPOL/AIRONET DATA to MLME (len=%d) !!!\n", pRxBlk->DataSize));
+		}
+	}
+
+	RELEASE_NDIS_PACKET(pAd, pRxBlk->pRxPacket, NDIS_STATUS_FAILURE);
+	return;
+
+}
+
+VOID STARxDataFrameAnnounce(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	MAC_TABLE_ENTRY	*pEntry,
+	IN	RX_BLK			*pRxBlk,
+	IN	UCHAR			FromWhichBSSID)
+{
+
+	// non-EAP frame
+	if (!RTMPCheckWPAframe(pAd, pEntry, pRxBlk->pData, pRxBlk->DataSize, FromWhichBSSID))
+	{
+
+
+	
+		{
+			// drop all non-EAP DATA frame before
+			// this client's Port-Access-Control is secured
+			if (pRxBlk->pHeader->FC.Wep)
+			{
+				// unsupported cipher suite
+				if (pAd->StaCfg.WepStatus == Ndis802_11EncryptionDisabled)
+				{
+					// release packet
+					RELEASE_NDIS_PACKET(pAd, pRxBlk->pRxPacket, NDIS_STATUS_FAILURE);
+					return;
+				}
+			}
+			else
+			{
+				// encryption in-use but receive a non-EAPOL clear text frame, drop it 
+				if ((pAd->StaCfg.WepStatus != Ndis802_11EncryptionDisabled) && 
+					(pAd->StaCfg.PortSecured == WPA_802_1X_PORT_NOT_SECURED))
+				{
+					// release packet
+					RELEASE_NDIS_PACKET(pAd, pRxBlk->pRxPacket, NDIS_STATUS_FAILURE);
+					return;
+				}
+			}
+		}
+		RX_BLK_CLEAR_FLAG(pRxBlk, fRX_EAP);
+
+
+		if (!RX_BLK_TEST_FLAG(pRxBlk, fRX_ARALINK))
+		{
+			// Normal legacy, AMPDU or AMSDU
+			CmmRxnonRalinkFrameIndicate(pAd, pRxBlk, FromWhichBSSID);
+			
+		}
+		else
+		{
+			// ARALINK
+			CmmRxRalinkFrameIndicate(pAd, pEntry, pRxBlk, FromWhichBSSID);
+		}
+#ifdef QOS_DLS_SUPPORT
+		RX_BLK_CLEAR_FLAG(pRxBlk, fRX_DLS);
+#endif // QOS_DLS_SUPPORT //
+	}
+	else 
+	{
+		RX_BLK_SET_FLAG(pRxBlk, fRX_EAP);
+#ifdef DOT11_N_SUPPORT
+		if (RX_BLK_TEST_FLAG(pRxBlk, fRX_AMPDU) && (pAd->CommonCfg.bDisableReordering == 0)) 
+		{
+			Indicate_AMPDU_Packet(pAd, pRxBlk, FromWhichBSSID);
+		} 
+		else
+#endif // DOT11_N_SUPPORT //
+		{
+			// Determin the destination of the EAP frame
+			//  to WPA state machine or upper layer
+			STARxEAPOLFrameIndicate(pAd, pEntry, pRxBlk, FromWhichBSSID);
+		}
+	}
+}
+
+
+// For TKIP frame, calculate the MIC value						
+BOOLEAN STACheckTkipMICValue(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	MAC_TABLE_ENTRY	*pEntry,
+	IN	RX_BLK			*pRxBlk)
+{
+	PHEADER_802_11	pHeader = pRxBlk->pHeader;
+	UCHAR			*pData = pRxBlk->pData;
+	USHORT			DataSize = pRxBlk->DataSize;
+	UCHAR			UserPriority = pRxBlk->UserPriority;
+	PCIPHER_KEY		pWpaKey;
+	UCHAR			*pDA, *pSA;
+
+	pWpaKey = &pAd->SharedKey[BSS0][pRxBlk->pRxWI->KeyIndex];
+
+	pDA = pHeader->Addr1;
+	if (RX_BLK_TEST_FLAG(pRxBlk, fRX_INFRA))
+	{
+		pSA = pHeader->Addr3;
+	}
+	else 
+	{
+		pSA = pHeader->Addr2;
+	}
+
+	if (RTMPTkipCompareMICValue(pAd,
+								pData,
+								pDA,
+								pSA,
+								pWpaKey->RxMic,
+								UserPriority,
+								DataSize) == FALSE)
+	{
+		DBGPRINT_RAW(RT_DEBUG_ERROR,("Rx MIC Value error 2\n"));
+
+#ifdef WPA_SUPPLICANT_SUPPORT
+		if (pAd->StaCfg.WpaSupplicantUP)
+		{
+			WpaSendMicFailureToWpaSupplicant(pAd, (pWpaKey->Type == PAIRWISEKEY) ? TRUE : FALSE);
+		}
+		else 
+#endif // WPA_SUPPLICANT_SUPPORT //
+		{
+			RTMPReportMicError(pAd, pWpaKey);
+		}
+		
+		// release packet
+		RELEASE_NDIS_PACKET(pAd, pRxBlk->pRxPacket, NDIS_STATUS_FAILURE);
+		return FALSE;
+	}
+
+	return TRUE;
+}
+
+
+//
+// All Rx routines use RX_BLK structure to hande rx events
+// It is very important to build pRxBlk attributes
+//  1. pHeader pointer to 802.11 Header
+//  2. pData pointer to payload including LLC (just skip Header)
+//  3. set payload size including LLC to DataSize
+//  4. set some flags with RX_BLK_SET_FLAG()
+// 
+VOID STAHandleRxDataFrame(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	RX_BLK			*pRxBlk)
+{
+	PRT28XX_RXD_STRUC				pRxD = &(pRxBlk->RxD);
+	PRXWI_STRUC						pRxWI = pRxBlk->pRxWI;
+	PHEADER_802_11					pHeader = pRxBlk->pHeader;
+	PNDIS_PACKET					pRxPacket = pRxBlk->pRxPacket;
+	BOOLEAN 						bFragment = FALSE;
+	MAC_TABLE_ENTRY	    			*pEntry = NULL;
+	UCHAR							FromWhichBSSID = BSS0;
+	UCHAR                           UserPriority = 0;
+
+	if ((pHeader->FC.FrDs == 1) && (pHeader->FC.ToDs == 1))
+	{
+#ifdef CLIENT_WDS
+		if ((pRxWI->WirelessCliID < MAX_LEN_OF_MAC_TABLE)
+			&& IS_ENTRY_CLIENT(&pAd->MacTab.Content[pRxWI->WirelessCliID]))
+		{
+			RX_BLK_SET_FLAG(pRxBlk, fRX_WDS);
+		}
+		else
+#endif // CLIENT_WDS //
+		{	// release packet
+			RELEASE_NDIS_PACKET(pAd, pRxPacket, NDIS_STATUS_FAILURE);
+			return;
+		}
+	}
+	else
+	{
+		// before LINK UP, all DATA frames are rejected
+		if (!OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED))
+		{
+			// release packet
+			RELEASE_NDIS_PACKET(pAd, pRxPacket, NDIS_STATUS_FAILURE);
+			return;
+		}
+
+
+#ifdef QOS_DLS_SUPPORT
+		//if ((pHeader->FC.FrDs == 0) && (pHeader->FC.ToDs == 0))
+		if (RTMPRcvFrameDLSCheck(pAd, pHeader, pRxWI->MPDUtotalByteCount, pRxD))
+		{
+			return;
+		}
+#endif // QOS_DLS_SUPPORT //
+
+		// Drop not my BSS frames
+		if (pRxD->MyBss == 0)
+		{
+			{	
+				// release packet
+				RELEASE_NDIS_PACKET(pAd, pRxPacket, NDIS_STATUS_FAILURE);
+				return;
+			}
+		}
+
+		pAd->RalinkCounters.RxCountSinceLastNULL++;
+		if (pAd->CommonCfg.bAPSDCapable && pAd->CommonCfg.APEdcaParm.bAPSDCapable && (pHeader->FC.SubType & 0x08))
+		{
+			UCHAR *pData;
+			DBGPRINT(RT_DEBUG_INFO,("bAPSDCapable\n"));
+
+			// Qos bit 4
+			pData = (PUCHAR)pHeader + LENGTH_802_11;
+			if ((*pData >> 4) & 0x01)
+			{
+				DBGPRINT(RT_DEBUG_INFO,("RxDone- Rcv EOSP frame, driver may fall into sleep\n"));
+				pAd->CommonCfg.bInServicePeriod = FALSE;
+
+				// Force driver to fall into sleep mode when rcv EOSP frame
+				if (!OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_DOZE))
+				{
+#ifdef RTMP_MAC_PCI
+					USHORT  TbttNumToNextWakeUp;
+					USHORT  NextDtim = pAd->StaCfg.DtimPeriod;
+					ULONG   Now;
+
+					NdisGetSystemUpTime(&Now);
+					NextDtim -= (USHORT)(Now - pAd->StaCfg.LastBeaconRxTime)/pAd->CommonCfg.BeaconPeriod;
+
+					TbttNumToNextWakeUp = pAd->StaCfg.DefaultListenCount;
+					if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_RECEIVE_DTIM) && (TbttNumToNextWakeUp > NextDtim))
+						TbttNumToNextWakeUp = NextDtim;
+
+					RTMP_SET_PSM_BIT(pAd, PWR_SAVE);
+					// if WMM-APSD is failed, try to disable following line
+					AsicSleepThenAutoWakeup(pAd, TbttNumToNextWakeUp);
+#endif // RTMP_MAC_PCI //
+
+				}
+			}
+
+			if ((pHeader->FC.MoreData) && (pAd->CommonCfg.bInServicePeriod))
+			{
+				DBGPRINT(RT_DEBUG_TRACE,("Sending another trigger frame when More Data bit is set to 1\n"));
+			}
+		}
+
+		// Drop NULL, CF-ACK(no data), CF-POLL(no data), and CF-ACK+CF-POLL(no data) data frame
+		if ((pHeader->FC.SubType & 0x04)) // bit 2 : no DATA
+		{
+			// release packet
+			RELEASE_NDIS_PACKET(pAd, pRxPacket, NDIS_STATUS_FAILURE);
+			return;
+		}
+
+	    // Drop not my BSS frame (we can not only check the MyBss bit in RxD)
+		if (INFRA_ON(pAd))
+		{
+			// Infrastructure mode, check address 2 for BSSID
+			if (1
+#ifdef QOS_DLS_SUPPORT
+					&& (!pAd->CommonCfg.bDLSCapable)
+#endif // QOS_DLS_SUPPORT //
+				)
+			{
+				if (!RTMPEqualMemory(&pHeader->Addr2, &pAd->CommonCfg.Bssid, 6))
+				{
+					// Receive frame not my BSSID
+					// release packet
+					RELEASE_NDIS_PACKET(pAd, pRxPacket, NDIS_STATUS_FAILURE);
+					return;
+				}
+			}
+		}
+		else	// Ad-Hoc mode or Not associated
+		{
+			// Ad-Hoc mode, check address 3 for BSSID
+			if (!RTMPEqualMemory(&pHeader->Addr3, &pAd->CommonCfg.Bssid, 6))
+			{
+				// Receive frame not my BSSID
+	            // release packet
+	            RELEASE_NDIS_PACKET(pAd, pRxPacket, NDIS_STATUS_FAILURE);
+				return;
+			}
+		}
+
+		//
+		// find pEntry
+		// 
+		if (pRxWI->WirelessCliID < MAX_LEN_OF_MAC_TABLE)
+		{
+			pEntry = &pAd->MacTab.Content[pRxWI->WirelessCliID];
+
+		}
+		else 
+		{
+			RELEASE_NDIS_PACKET(pAd, pRxPacket, NDIS_STATUS_FAILURE);
+			return;
+		}
+
+		// infra or ad-hoc
+		if (INFRA_ON(pAd))
+		{
+			RX_BLK_SET_FLAG(pRxBlk, fRX_INFRA);
+#if defined(DOT11Z_TDLS_SUPPORT) || defined(QOS_DLS_SUPPORT)
+			if ((pHeader->FC.FrDs == 0) && (pHeader->FC.ToDs == 0))
+				RX_BLK_SET_FLAG(pRxBlk, fRX_DLS);
+			else
+#endif
+			ASSERT(pRxWI->WirelessCliID == BSSID_WCID);
+		}
+
+		// check Atheros Client
+		if ((pEntry->bIAmBadAtheros == FALSE) &&  (pRxD->AMPDU == 1) && (pHeader->FC.Retry ))
+		{
+			pEntry->bIAmBadAtheros = TRUE;
+			pAd->CommonCfg.IOTestParm.bCurrentAtheros = TRUE;
+			pAd->CommonCfg.IOTestParm.bLastAtheros = TRUE;
+			if (!STA_AES_ON(pAd))
+			{
+				AsicUpdateProtect(pAd, 8, ALLN_SETPROTECT, TRUE, FALSE);
+			}
+		}
+	}
+
+	pRxBlk->pData = (UCHAR *)pHeader;
+
+	//
+	// update RxBlk->pData, DataSize
+	// 802.11 Header, QOS, HTC, Hw Padding
+	// 
+
+	// 1. skip 802.11 HEADER
+#ifdef CLIENT_WDS
+	if (RX_BLK_TEST_FLAG(pRxBlk, fRX_WDS))
+	{
+		pRxBlk->pData += LENGTH_802_11_WITH_ADDR4;
+		pRxBlk->DataSize -= LENGTH_802_11_WITH_ADDR4;
+	}
+	else
+#endif // CLIENT_WDS //
+	{
+		pRxBlk->pData += LENGTH_802_11;
+		pRxBlk->DataSize -= LENGTH_802_11;
+	}
+
+	// 2. QOS
+	if (pHeader->FC.SubType & 0x08)
+	{
+		RX_BLK_SET_FLAG(pRxBlk, fRX_QOS);
+		UserPriority = *(pRxBlk->pData) & 0x0f;	
+		// bit 7 in QoS Control field signals the HT A-MSDU format
+		if ((*pRxBlk->pData) & 0x80)
+		{
+			RX_BLK_SET_FLAG(pRxBlk, fRX_AMSDU);
+		}
+
+		// skip QOS contorl field
+		pRxBlk->pData += 2;
+		pRxBlk->DataSize -=2;
+	}
+	pRxBlk->UserPriority = UserPriority;
+
+	/* check if need to resend PS Poll when received packet with MoreData = 1 */
+	if ((pAd->StaCfg.Psm == PWR_SAVE) && (pHeader->FC.MoreData == 1))
+	{
+		if ((((UserPriority == 0) || (UserPriority == 3)) &&
+			pAd->CommonCfg.bAPSDAC_BE == 0) ||
+			(((UserPriority == 1) || (UserPriority == 2)) &&
+			pAd->CommonCfg.bAPSDAC_BK == 0) ||
+			(((UserPriority == 4) || (UserPriority == 5)) &&
+			pAd->CommonCfg.bAPSDAC_VI == 0) ||
+			(((UserPriority == 6) || (UserPriority == 7)) &&
+			pAd->CommonCfg.bAPSDAC_VO == 0))
+		{
+			/* non-UAPSD delivery-enabled AC */
+			RTMP_PS_POLL_ENQUEUE(pAd);
+		}
+	}
+
+	// 3. Order bit: A-Ralink or HTC+
+	if (pHeader->FC.Order)
+	{
+#ifdef AGGREGATION_SUPPORT
+		if ((pRxWI->PHYMODE <= MODE_OFDM) && (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_AGGREGATION_INUSED)))
+		{
+			RX_BLK_SET_FLAG(pRxBlk, fRX_ARALINK);
+		}
+		else
+#endif // AGGREGATION_SUPPORT //
+		{
+#ifdef DOT11_N_SUPPORT
+			RX_BLK_SET_FLAG(pRxBlk, fRX_HTC);
+			// skip HTC contorl field
+			pRxBlk->pData += 4;
+			pRxBlk->DataSize -= 4;
+#endif // DOT11_N_SUPPORT //
+		}
+	}
+
+	// 4. skip HW padding 
+	if (pRxD->L2PAD)
+	{
+		// just move pData pointer 
+		// because DataSize excluding HW padding 
+		RX_BLK_SET_FLAG(pRxBlk, fRX_PAD);
+		pRxBlk->pData += 2;
+	}
+
+#ifdef DOT11_N_SUPPORT
+	if (pRxD->BA)
+	{
+		RX_BLK_SET_FLAG(pRxBlk, fRX_AMPDU);
+	}
+#endif // DOT11_N_SUPPORT //
+
+//#ifdef SOFT_ENCRYPT
+	/* Use software to decrypt the encrypted frame if necessary.
+	   If a received "encrypted" unicast packet(its WEP bit as 1) 
+	   and it's passed to driver with "Decrypted" marked as 0 in RxD. */
+	if ((pHeader->FC.Wep == 1) && (pRxD->Decrypted == 0))
+    {   
+   		PCIPHER_KEY pSwKey = NULL;
+    		
+   		/* Cipher key table selection */
+   		if ((pSwKey = RTMPSwCipherKeySelection(pAd, 
+   											   pRxBlk->pData, 
+   											   pRxBlk, 
+   											   pEntry)) == NULL)
+   		{
+   			DBGPRINT(RT_DEBUG_TRACE, ("No vaild cipher key for SW decryption!!!\n"));
+   			// release packet					
+   			RELEASE_NDIS_PACKET(pAd, pRxPacket, NDIS_STATUS_FAILURE);
+   			return;
+   		}
+
+   		/* Decryption by Software */
+   		if (RTMPSoftDecryptionAction(pAd, 
+   								 	(PUCHAR)pHeader, 
+   									 UserPriority, 
+   									 pSwKey, 
+   									 pRxBlk->pData, 
+   									 &(pRxBlk->DataSize)) != NDIS_STATUS_SUCCESS)
+   		{
+   			// release packet			
+   			RELEASE_NDIS_PACKET(pAd, pRxPacket, NDIS_STATUS_FAILURE);
+   			return;
+   		}
+   		/* Record the Decrypted bit as 1 */
+   		pRxD->Decrypted = 1;
+    }
+//#endif // SOFT_ENCRYPT //
+		
+
+	// 
+	// Case I  Process Broadcast & Multicast data frame
+	//
+	if (pRxD->Bcast || pRxD->Mcast)
+	{
+#ifdef STATS_COUNT_SUPPORT
+		INC_COUNTER64(pAd->WlanCounters.MulticastReceivedFrameCount);
+#endif // STATS_COUNT_SUPPORT //
+
+		// Drop Mcast/Bcast frame with fragment bit on
+		if (pHeader->FC.MoreFrag)
+		{
+			// release packet
+			RELEASE_NDIS_PACKET(pAd, pRxPacket, NDIS_STATUS_FAILURE);
+			return;
+		}
+				
+		// Filter out Bcast frame which AP relayed for us
+		if (pHeader->FC.FrDs && MAC_ADDR_EQUAL(pHeader->Addr3, pAd->CurrentAddress))
+		{
+			// release packet
+			RELEASE_NDIS_PACKET(pAd, pRxPacket, NDIS_STATUS_FAILURE);
+			return;
+		}
+
+		if (ADHOC_ON(pAd))
+		{
+			MAC_TABLE_ENTRY *pAdhocEntry = NULL;
+			pAdhocEntry = MacTableLookup(pAd, pHeader->Addr2);
+			if (pAdhocEntry)
+				Update_Rssi_Sample(pAd, &pAdhocEntry->RssiSample, pRxWI);
+		}
+
+		Indicate_Legacy_Packet(pAd, pRxBlk, FromWhichBSSID);
+		return;
+	}					
+	else if (pRxD->U2M)
+	{
+		pAd->LastRxRate = (USHORT)((pRxWI->MCS) + (pRxWI->BW <<7) + (pRxWI->ShortGI <<8)+ (pRxWI->PHYMODE <<14)) ;
+
+
+#if defined(DOT11Z_TDLS_SUPPORT) || defined(QOS_DLS_SUPPORT)
+        if (RX_BLK_TEST_FLAG(pRxBlk, fRX_DLS))
+		{
+			MAC_TABLE_ENTRY *pDlsEntry = NULL;
+
+			//pDlsEntry = MacTableLookup(pAd, pHeader->Addr2);
+			pDlsEntry = &pAd->MacTab.Content[pRxWI->WirelessCliID];
+			//if (pDlsEntry && (IS_ENTRY_DLS(pDlsEntry)|| IS_ENTRY_TDLS(pDlsEntry)))
+			if (pDlsEntry && (pRxWI->WirelessCliID < MAX_LEN_OF_MAC_TABLE))
+			{
+				Update_Rssi_Sample(pAd, &pDlsEntry->RssiSample, pRxWI);
+				NdisAcquireSpinLock(&pAd->MacTabLock);
+				pDlsEntry->NoDataIdleCount = 0;
+				NdisReleaseSpinLock(&pAd->MacTabLock);
+			}
+		}
+		else
+#endif
+		if (ADHOC_ON(pAd))
+		{
+			MAC_TABLE_ENTRY *pAdhocEntry = NULL;
+			pAdhocEntry = MacTableLookup(pAd, pHeader->Addr2);
+			if (pAdhocEntry)
+				Update_Rssi_Sample(pAd, &pAdhocEntry->RssiSample, pRxWI);
+		}
+
+
+		Update_Rssi_Sample(pAd, &pAd->StaCfg.RssiSample, pRxWI);
+
+		pAd->StaCfg.LastSNR0 = (UCHAR)(pRxWI->SNR0);
+		pAd->StaCfg.LastSNR1 = (UCHAR)(pRxWI->SNR1);
+	
+		pAd->RalinkCounters.OneSecRxOkDataCnt++;
+
+
+    	if (!((pHeader->Frag == 0) && (pHeader->FC.MoreFrag == 0)))
+    	{
+    		// re-assemble the fragmented packets
+    		// return complete frame (pRxPacket) or NULL   
+    		bFragment = TRUE;
+    		pRxPacket = RTMPDeFragmentDataFrame(pAd, pRxBlk);
+    	}
+
+    	if (pRxPacket)
+    	{
+			pEntry = &pAd->MacTab.Content[pRxWI->WirelessCliID];
+
+    		// process complete frame
+    		if (bFragment && (pRxD->Decrypted) && (pEntry->WepStatus == Ndis802_11Encryption2Enabled))
+    		{
+    			// Minus MIC length
+    			pRxBlk->DataSize -= 8;
+    			
+    			// For TKIP frame, calculate the MIC value						
+    			if (STACheckTkipMICValue(pAd, pEntry, pRxBlk) == FALSE)
+    			{
+    				return;
+    			}
+    		}
+
+    		STARxDataFrameAnnounce(pAd, pEntry, pRxBlk, FromWhichBSSID);
+			return;
+    	}
+    	else
+    	{
+    		// just return 
+    		// because RTMPDeFragmentDataFrame() will release rx packet, 
+    		// if packet is fragmented
+    		return;
+    	}
+	}
+#ifdef XLINK_SUPPORT
+	else if (pAd->StaCfg.PSPXlink)
+	{
+		Indicate_Legacy_Packet(pAd, pRxBlk, FromWhichBSSID);
+    	return;
+	}
+#endif // XLINK_SUPPORT //
+
+	ASSERT(0);
+	// release packet
+	RELEASE_NDIS_PACKET(pAd, pRxPacket, NDIS_STATUS_FAILURE);
+}
+
+VOID STAHandleRxMgmtFrame(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	RX_BLK			*pRxBlk)
+{
+	PRXWI_STRUC		pRxWI = pRxBlk->pRxWI;
+	PHEADER_802_11	pHeader = pRxBlk->pHeader;
+	PNDIS_PACKET	pRxPacket = pRxBlk->pRxPacket;
+	UCHAR			MinSNR = 0;
+
+	do
+	{
+
+
+		/* check if need to resend PS Poll when received packet with MoreData = 1 */
+		if ((pAd->StaCfg.Psm == PWR_SAVE) && (pHeader->FC.MoreData == 1))
+		{
+			/* for UAPSD, all management frames will be VO priority */
+			if (pAd->CommonCfg.bAPSDAC_VO == 0)
+			{
+				/* non-UAPSD delivery-enabled AC */
+				RTMP_PS_POLL_ENQUEUE(pAd);
+			}
+		}
+
+		/* TODO: if MoreData == 0, station can go to sleep */
+
+
+		// We should collect RSSI not only U2M data but also my beacon
+		if ((pHeader->FC.SubType == SUBTYPE_BEACON) && (MAC_ADDR_EQUAL(&pAd->CommonCfg.Bssid, &pHeader->Addr2))
+			&& (pAd->RxAnt.EvaluatePeriod == 0))
+		{
+			Update_Rssi_Sample(pAd, &pAd->StaCfg.RssiSample, pRxWI);
+
+			pAd->StaCfg.LastSNR0 = (UCHAR)(pRxWI->SNR0);
+			pAd->StaCfg.LastSNR1 = (UCHAR)(pRxWI->SNR1);
+		}
+
+		if ((pHeader->FC.SubType == SUBTYPE_BEACON) &&
+			(ADHOC_ON(pAd)) &&
+			(pRxWI->WirelessCliID < MAX_LEN_OF_MAC_TABLE))
+		{
+			MAC_TABLE_ENTRY	    *pEntry = NULL;
+			pEntry = &pAd->MacTab.Content[pRxWI->WirelessCliID];
+			if (pEntry)
+				Update_Rssi_Sample(pAd, &pEntry->RssiSample, pRxWI);
+		}
+
+
+		// First check the size, it MUST not exceed the mlme queue size		
+		if (pRxWI->MPDUtotalByteCount > MGMT_DMA_BUFFER_SIZE)
+		{
+			DBGPRINT_ERR(("STAHandleRxMgmtFrame: frame too large, size = %d \n", pRxWI->MPDUtotalByteCount));
+			break;
+		}
+
+		MinSNR = min((CHAR)pRxWI->SNR0, (CHAR)pRxWI->SNR1);
+		
+		/* 
+			Signal in MLME_QUEUE isn't used, therefore take this item to save min SNR.
+		*/
+		REPORT_MGMT_FRAME_TO_MLME(pAd, pRxWI->WirelessCliID, pHeader, pRxWI->MPDUtotalByteCount, 
+									pRxWI->RSSI0, pRxWI->RSSI1, pRxWI->RSSI2, MinSNR);
+	} while (FALSE);
+
+	RELEASE_NDIS_PACKET(pAd, pRxPacket, NDIS_STATUS_SUCCESS);
+}
+
+VOID STAHandleRxControlFrame(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	RX_BLK			*pRxBlk)
+{
+#ifdef DOT11_N_SUPPORT
+	PRXWI_STRUC		pRxWI = pRxBlk->pRxWI;
+#endif // DOT11_N_SUPPORT //
+	PHEADER_802_11	pHeader = pRxBlk->pHeader;
+	PNDIS_PACKET	pRxPacket = pRxBlk->pRxPacket;
+	BOOLEAN 	retStatus;
+	NDIS_STATUS status = NDIS_STATUS_FAILURE;
+
+	switch (pHeader->FC.SubType)
+	{
+		case SUBTYPE_BLOCK_ACK_REQ:
+#ifdef DOT11_N_SUPPORT
+			{
+				retStatus = CntlEnqueueForRecv(pAd, pRxWI->WirelessCliID, (pRxWI->MPDUtotalByteCount), (PFRAME_BA_REQ)pHeader);
+				status = (retStatus == TRUE) ? NDIS_STATUS_SUCCESS : NDIS_STATUS_FAILURE;
+			}
+			break;
+#endif // DOT11_N_SUPPORT //
+		case SUBTYPE_BLOCK_ACK:
+		case SUBTYPE_ACK:
+		default:
+			break;
+	}
+
+	RELEASE_NDIS_PACKET(pAd, pRxPacket, status);
+}
+
+
+/*
+	========================================================================
+
+	Routine Description:
+		Process RxDone interrupt, running in DPC level
+
+	Arguments:
+		pAd Pointer to our adapter
+
+	Return Value:
+		None
+
+	IRQL = DISPATCH_LEVEL
+	
+	Note:
+		This routine has to maintain Rx ring read pointer.
+		Need to consider QOS DATA format when converting to 802.3
+	========================================================================
+*/
+BOOLEAN STARxDoneInterruptHandle(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	BOOLEAN			argc)
+{
+	NDIS_STATUS			Status;
+	UINT32			RxProcessed, RxPending;
+	BOOLEAN			bReschedule = FALSE;
+	RT28XX_RXD_STRUC	*pRxD;
+	UCHAR			*pData;
+	PRXWI_STRUC		pRxWI;
+	PNDIS_PACKET	pRxPacket;
+	PHEADER_802_11	pHeader;
+	RX_BLK			RxCell;
+
+	RxProcessed = RxPending = 0;
+
+	// process whole rx ring
+	while (1)
+	{
+
+		if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_RADIO_OFF |
+								fRTMP_ADAPTER_RESET_IN_PROGRESS |
+								fRTMP_ADAPTER_HALT_IN_PROGRESS |
+								fRTMP_ADAPTER_NIC_NOT_EXIST) ||
+			!RTMP_TEST_FLAG(pAd,fRTMP_ADAPTER_START_UP))
+		{
+			break;
+		}
+
+#ifdef RTMP_MAC_PCI
+		if (RxProcessed++ > MAX_RX_PROCESS_CNT)
+		{
+			// need to reschedule rx handle 
+			bReschedule = TRUE;
+			break;
+		}
+#endif // RTMP_MAC_PCI //
+
+		RxProcessed ++; // test
+
+		// 1. allocate a new data packet into rx ring to replace received packet 
+		//    then processing the received packet
+		// 2. the callee must take charge of release of packet
+		// 3. As far as driver is concerned ,
+		//    the rx packet must 
+		//      a. be indicated to upper layer or 
+		//      b. be released if it is discarded
+		pRxPacket = GetPacketFromRxRing(pAd, &(RxCell.RxD), &bReschedule, &RxPending);
+		if (pRxPacket == NULL)
+		{
+			// no more packet to process
+			break;
+		}
+
+		// get rx ring descriptor
+		pRxD = &(RxCell.RxD);
+		// get rx data buffer
+		pData	= GET_OS_PKT_DATAPTR(pRxPacket);
+		pRxWI	= (PRXWI_STRUC) pData;
+		pHeader = (PHEADER_802_11) (pData+RXWI_SIZE) ;
+
+#ifdef RT_BIG_ENDIAN
+	    RTMPFrameEndianChange(pAd, (PUCHAR)pHeader, DIR_READ, TRUE);
+		RTMPWIEndianChange((PUCHAR)pRxWI, TYPE_RXWI);
+#endif
+
+		// build RxCell
+		RxCell.pRxWI = pRxWI;
+		RxCell.pHeader = pHeader;
+		RxCell.pRxPacket = pRxPacket;
+		RxCell.pData = (UCHAR *) pHeader;
+		RxCell.DataSize = pRxWI->MPDUtotalByteCount;
+		RxCell.Flags = 0;
+
+		// Increase Total receive byte counter after real data received no mater any error or not
+		pAd->RalinkCounters.ReceivedByteCount +=  pRxWI->MPDUtotalByteCount;
+		pAd->RalinkCounters.OneSecReceivedByteCount +=  pRxWI->MPDUtotalByteCount;
+		pAd->RalinkCounters.RxCount ++;
+
+#ifdef STATS_COUNT_SUPPORT
+		INC_COUNTER64(pAd->WlanCounters.ReceivedFragmentCount);
+#endif // STATS_COUNT_SUPPORT //
+
+		if (pRxWI->MPDUtotalByteCount < 14)
+			Status = NDIS_STATUS_FAILURE;
+		
+        if (MONITOR_ON(pAd))
+		{
+            send_monitor_packets(pAd, &RxCell, RTMPMaxRssi, ConvertToRssi);
+			break;
+		}
+
+		/* STARxDoneInterruptHandle() is called in rtusb_bulk.c */
+#ifdef RALINK_ATE
+		if (ATE_ON(pAd))
+		{
+			pAd->ate.RxCntPerSec++;
+			ATESampleRssi(pAd, pRxWI);
+#ifdef RALINK_28xx_QA
+			if (pAd->ate.bQARxStart == TRUE)
+			{
+				/* (*pRxD) has been swapped in GetPacketFromRxRing() */
+				ATE_QA_Statistics(pAd, pRxWI, pRxD,	pHeader);
+			}
+#endif // RALINK_28xx_QA //
+			RELEASE_NDIS_PACKET(pAd, pRxPacket, NDIS_STATUS_SUCCESS);
+			continue;
+		}
+#endif // RALINK_ATE //
+
+		// Check for all RxD errors
+		Status = RTMPCheckRxError(pAd, pHeader, pRxWI, pRxD);
+
+		// Handle the received frame
+		if (Status == NDIS_STATUS_SUCCESS)
+		{
+			switch (pHeader->FC.Type)
+			{
+				// CASE I, receive a DATA frame
+				case BTYPE_DATA:
+				{
+					// process DATA frame
+					STAHandleRxDataFrame(pAd, &RxCell);
+				}
+				break;
+				// CASE II, receive a MGMT frame
+				case BTYPE_MGMT:
+				{
+					STAHandleRxMgmtFrame(pAd, &RxCell);
+				}
+				break;
+				// CASE III. receive a CNTL frame
+				case BTYPE_CNTL:
+				{
+					STAHandleRxControlFrame(pAd, &RxCell);
+				}
+				break;
+				// discard other type
+				default:
+					RELEASE_NDIS_PACKET(pAd, pRxPacket, NDIS_STATUS_FAILURE);
+					break;
+			}
+		}
+		else
+		{
+			pAd->Counters8023.RxErrors++;
+			// discard this frame
+			RELEASE_NDIS_PACKET(pAd, pRxPacket, NDIS_STATUS_FAILURE);
+		}
+	}
+
+	return bReschedule;
+}
+
+/*
+	========================================================================
+
+	Routine Description:
+	Arguments:
+		pAd 	Pointer to our adapter
+
+	IRQL = DISPATCH_LEVEL
+	
+	========================================================================
+*/
+VOID	RTMPHandleTwakeupInterrupt(
+	IN PRTMP_ADAPTER pAd)
+{
+	AsicForceWakeup(pAd, FALSE);
+}
+
+/*
+========================================================================
+Routine Description:
+    Early checking and OS-depened parsing for Tx packet send to our STA driver.
+
+Arguments:
+    NDIS_HANDLE 	MiniportAdapterContext	Pointer refer to the device handle, i.e., the pAd.
+	PPNDIS_PACKET	ppPacketArray			The packet array need to do transmission.
+	UINT			NumberOfPackets			Number of packet in packet array.
+	
+Return Value:
+	NONE					
+
+Note:
+	This function do early checking and classification for send-out packet.
+	You only can put OS-depened & STA related code in here.
+========================================================================
+*/
+VOID STASendPackets(
+	IN	NDIS_HANDLE		MiniportAdapterContext,
+	IN	PPNDIS_PACKET	ppPacketArray,
+	IN	UINT			NumberOfPackets)
+{
+	UINT			Index;
+	PRTMP_ADAPTER	pAd = (PRTMP_ADAPTER) MiniportAdapterContext;
+	PNDIS_PACKET	pPacket;
+	BOOLEAN			allowToSend = FALSE;
+
+	
+	for (Index = 0; Index < NumberOfPackets; Index++)
+	{
+		pPacket = ppPacketArray[Index];
+
+		do
+		{
+
+			if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_RESET_IN_PROGRESS) ||
+				RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_HALT_IN_PROGRESS) ||
+				RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_RADIO_OFF))
+			{
+				// Drop send request since hardware is in reset state
+					break;
+			}
+			else if (!INFRA_ON(pAd) && !ADHOC_ON(pAd))
+			{
+				// Drop send request since there are no physical connection yet
+					break;
+			}
+			else
+			{
+				// Record that orignal packet source is from NDIS layer,so that 
+				// later on driver knows how to release this NDIS PACKET
+				if (0
+#ifdef QOS_DLS_SUPPORT
+					|| (pAd->CommonCfg.bDLSCapable)
+#endif // QOS_DLS_SUPPORT //
+					)
+				{
+					MAC_TABLE_ENTRY *pEntry;
+					PUCHAR pSrcBufVA = GET_OS_PKT_DATAPTR(pPacket);
+
+					pEntry = MacTableLookup(pAd, pSrcBufVA);
+
+					if (pEntry && (IS_ENTRY_DLS(pEntry) || IS_ENTRY_TDLS(pEntry)))
+					{
+						RTMP_SET_PACKET_WCID(pPacket, pEntry->Aid);
+					}
+					else
+					{
+						RTMP_SET_PACKET_WCID(pPacket, 0);
+					}
+				}
+				else
+				{
+					RTMP_SET_PACKET_WCID(pPacket, 0);
+				}
+
+				RTMP_SET_PACKET_SOURCE(pPacket, PKTSRC_NDIS);
+				NDIS_SET_PACKET_STATUS(pPacket, NDIS_STATUS_PENDING);
+				pAd->RalinkCounters.PendingNdisPacketCount++;
+
+				allowToSend = TRUE;
+			}
+		} while(FALSE);
+
+		if (allowToSend == TRUE)
+			STASendPacket(pAd, pPacket);
+		else
+			RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_FAILURE);
+	}
+	
+	// Dequeue outgoing frames from TxSwQueue[] and process it
+	RTMPDeQueuePacket(pAd, FALSE, NUM_OF_TX_RING, MAX_TX_PROCESS);
+
+}
+
+
+/*
+========================================================================
+Routine Description:
+	This routine is used to do packet parsing and classification for Tx packet 
+	to STA device, and it will en-queue packets to our TxSwQueue depends on AC 
+	class.
+	
+Arguments:
+	pAd    		Pointer to our adapter
+	pPacket 	Pointer to send packet
+
+Return Value:
+	NDIS_STATUS_SUCCESS			If succes to queue the packet into TxSwQueue.
+	NDIS_STATUS_FAILURE			If failed to do en-queue.
+
+Note:
+	You only can put OS-indepened & STA related code in here.
+========================================================================
+*/
+NDIS_STATUS STASendPacket(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PNDIS_PACKET	pPacket)
+{
+	PACKET_INFO 	PacketInfo;
+	PUCHAR			pSrcBufVA;
+	UINT			SrcBufLen;
+	UINT			AllowFragSize;
+	UCHAR			NumberOfFrag;
+	UCHAR			RTSRequired;
+	UCHAR			QueIdx, UserPriority;
+	MAC_TABLE_ENTRY *pEntry = NULL;
+	unsigned int 	IrqFlags;
+	UCHAR			Rate;
+	
+	// Prepare packet information structure for buffer descriptor 
+	// chained within a single NDIS packet.
+	RTMP_QueryPacketInfo(pPacket, &PacketInfo, &pSrcBufVA, &SrcBufLen);
+
+	if (pSrcBufVA == NULL)
+	{
+		DBGPRINT(RT_DEBUG_ERROR,("STASendPacket --> pSrcBufVA == NULL !!!SrcBufLen=%x\n",SrcBufLen));
+		// Resourece is low, system did not allocate virtual address
+		// return NDIS_STATUS_FAILURE directly to upper layer
+		RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_FAILURE);
+		return NDIS_STATUS_FAILURE;
+	}
+
+
+	if (SrcBufLen < 14)
+	{
+		DBGPRINT(RT_DEBUG_ERROR,("STASendPacket --> Ndis Packet buffer error !!!\n"));
+		RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_FAILURE);
+		return (NDIS_STATUS_FAILURE);
+	}
+	
+	
+	// In HT rate adhoc mode, A-MPDU is often used. So need to lookup BA Table and MAC Entry. 
+	// Note multicast packets in adhoc also use BSSID_WCID index. 
+	{
+		if(INFRA_ON(pAd))
+		{
+#if defined(QOS_DLS_SUPPORT) || defined(DOT11Z_TDLS_SUPPORT)
+			USHORT	tmpWcid;
+
+			tmpWcid = RTMP_GET_PACKET_WCID(pPacket);
+
+			if (VALID_WCID(tmpWcid) &&
+				(IS_ENTRY_DLS(&pAd->MacTab.Content[tmpWcid]) ||
+					IS_ENTRY_TDLS(&pAd->MacTab.Content[tmpWcid])))
+			{
+				pEntry = &pAd->MacTab.Content[tmpWcid];
+				Rate = pAd->MacTab.Content[tmpWcid].CurrTxRate;
+			}
+			else
+#endif
+			{
+				pEntry = &pAd->MacTab.Content[BSSID_WCID];
+				RTMP_SET_PACKET_WCID(pPacket, BSSID_WCID);
+				Rate = pAd->CommonCfg.TxRate;
+			}
+		}
+		else if (ADHOC_ON(pAd))
+		{
+			if (*pSrcBufVA & 0x01)
+			{
+				RTMP_SET_PACKET_WCID(pPacket, MCAST_WCID);
+				pEntry = &pAd->MacTab.Content[MCAST_WCID];
+			}
+			else 
+			{
+#ifdef XLINK_SUPPORT
+				if (pAd->StaCfg.PSPXlink)
+				{
+					pEntry = &pAd->MacTab.Content[MCAST_WCID];
+					pEntry->Aid = MCAST_WCID;
+				}
+				else
+#endif // XLINK_SUPPORT //
+				pEntry = MacTableLookup(pAd, pSrcBufVA);
+
+				if (pEntry)
+					RTMP_SET_PACKET_WCID(pPacket, pEntry->Aid);
+			}
+			Rate = pAd->CommonCfg.TxRate;
+		}
+	}
+
+	if (!pEntry)
+	{
+		DBGPRINT(RT_DEBUG_ERROR,("STASendPacket->Cannot find pEntry(%2x:%2x:%2x:%2x:%2x:%2x) in MacTab!\n", PRINT_MAC(pSrcBufVA)));
+		// Resourece is low, system did not allocate virtual address
+		// return NDIS_STATUS_FAILURE directly to upper layer
+		RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_FAILURE);
+		return NDIS_STATUS_FAILURE;
+	}
+
+	if (ADHOC_ON(pAd)
+		)
+	{
+		RTMP_SET_PACKET_WCID(pPacket, (UCHAR)pEntry->Aid);
+	}
+		
+	//
+	// Check the Ethernet Frame type of this packet, and set the RTMP_SET_PACKET_SPECIFIC flags.
+	//		Here we set the PACKET_SPECIFIC flags(LLC, VLAN, DHCP/ARP, EAPOL).
+	UserPriority = 0;
+	QueIdx		 = QID_AC_BE;
+	RTMPCheckEtherType(pAd, pPacket, pEntry, &UserPriority, &QueIdx);
+
+	
+	
+	//
+	// WPA 802.1x secured port control - drop all non-802.1x frame before port secured
+	//
+	if (((pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA) || 
+		 (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPAPSK) ||
+		 (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2) || 
+		 (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2PSK)
+#ifdef WPA_SUPPLICANT_SUPPORT
+		  || (pAd->StaCfg.IEEE8021X == TRUE) 
+#endif // WPA_SUPPLICANT_SUPPORT //     		 
+		  )
+		  && ((pAd->StaCfg.PortSecured == WPA_802_1X_PORT_NOT_SECURED) || (pAd->StaCfg.MicErrCnt >= 2))
+		  && (RTMP_GET_PACKET_EAPOL(pPacket)== FALSE)
+		  )
+	{    
+		DBGPRINT(RT_DEBUG_TRACE,("STASendPacket --> Drop packet before port secured !!!\n"));
+		RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_FAILURE);
+
+		return (NDIS_STATUS_FAILURE);
+	}
+
+
+	// STEP 1. Decide number of fragments required to deliver this MSDU. 
+	//	   The estimation here is not very accurate because difficult to 
+	//	   take encryption overhead into consideration here. The result 
+	//	   "NumberOfFrag" is then just used to pre-check if enough free 
+	//	   TXD are available to hold this MSDU.
+
+
+	if (*pSrcBufVA & 0x01)	// fragmentation not allowed on multicast & broadcast
+		NumberOfFrag = 1;
+	else if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_AGGREGATION_INUSED))
+		NumberOfFrag = 1;	// Aggregation overwhelms fragmentation
+	else if (CLIENT_STATUS_TEST_FLAG(pEntry, fCLIENT_STATUS_AMSDU_INUSED))
+		NumberOfFrag = 1;	// Aggregation overwhelms fragmentation
+#ifdef DOT11_N_SUPPORT
+	else if ((pAd->StaCfg.HTPhyMode.field.MODE == MODE_HTMIX) || (pAd->StaCfg.HTPhyMode.field.MODE == MODE_HTGREENFIELD))
+		NumberOfFrag = 1;	// MIMO RATE overwhelms fragmentation
+#endif // DOT11_N_SUPPORT //
+	else
+	{
+		// The calculated "NumberOfFrag" is a rough estimation because of various 
+		// encryption/encapsulation overhead not taken into consideration. This number is just
+		// used to make sure enough free TXD are available before fragmentation takes place.
+		// In case the actual required number of fragments of an NDIS packet 
+		// excceeds "NumberOfFrag"caculated here and not enough free TXD available, the
+		// last fragment (i.e. last MPDU) will be dropped in RTMPHardTransmit() due to out of 
+		// resource, and the NDIS packet will be indicated NDIS_STATUS_FAILURE. This should 
+		// rarely happen and the penalty is just like a TX RETRY fail. Affordable.
+
+		AllowFragSize = (pAd->CommonCfg.FragmentThreshold) - LENGTH_802_11 - LENGTH_CRC;
+		NumberOfFrag = ((PacketInfo.TotalPacketLength - LENGTH_802_3 + LENGTH_802_1_H) / AllowFragSize) + 1;
+		// To get accurate number of fragmentation, Minus 1 if the size just match to allowable fragment size
+		if (((PacketInfo.TotalPacketLength - LENGTH_802_3 + LENGTH_802_1_H) % AllowFragSize) == 0)
+		{
+			NumberOfFrag--;
+		}
+	}
+
+	// Save fragment number to Ndis packet reserved field
+	RTMP_SET_PACKET_FRAGMENTS(pPacket, NumberOfFrag);
+
+
+	// STEP 2. Check the requirement of RTS:
+	//	   If multiple fragment required, RTS is required only for the first fragment
+	//	   if the fragment size large than RTS threshold
+	//     For RT28xx, Let ASIC send RTS/CTS
+//	RTMP_SET_PACKET_RTS(pPacket, 0);
+	if (NumberOfFrag > 1)
+		RTSRequired = (pAd->CommonCfg.FragmentThreshold > pAd->CommonCfg.RtsThreshold) ? 1 : 0;
+	else
+		RTSRequired = (PacketInfo.TotalPacketLength > pAd->CommonCfg.RtsThreshold) ? 1 : 0;
+
+	// Save RTS requirement to Ndis packet reserved field
+	RTMP_SET_PACKET_RTS(pPacket, RTSRequired);
+	RTMP_SET_PACKET_TXRATE(pPacket, pAd->CommonCfg.TxRate);
+
+
+	RTMP_SET_PACKET_UP(pPacket, UserPriority);
+
+
+	// Make sure SendTxWait queue resource won't be used by other threads
+	RTMP_IRQ_LOCK(&pAd->irq_lock, IrqFlags);
+	if (pAd->TxSwQueue[QueIdx].Number >= MAX_PACKETS_IN_QUEUE)
+	{
+		RTMP_IRQ_UNLOCK(&pAd->irq_lock, IrqFlags);
+#ifdef BLOCK_NET_IF
+		StopNetIfQueue(pAd, QueIdx, pPacket);
+#endif // BLOCK_NET_IF //
+		RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_FAILURE);
+
+		return NDIS_STATUS_FAILURE;
+	}
+	else
+	{
+		InsertTailQueueAc(pAd, pEntry, &pAd->TxSwQueue[QueIdx], PACKET_TO_QUEUE_ENTRY(pPacket));
+	}
+	RTMP_IRQ_UNLOCK(&pAd->irq_lock, IrqFlags);
+
+#ifdef DOT11_N_SUPPORT
+    if ((pAd->CommonCfg.BACapability.field.AutoBA == TRUE)&& 
+		(pEntry->NoBADataCountDown == 0) &&
+        IS_HT_STA(pEntry))
+	{
+	    //PMAC_TABLE_ENTRY pMacEntry = &pAd->MacTab.Content[BSSID_WCID];
+		if (((pEntry->TXBAbitmap & (1<<UserPriority)) == 0) && 
+            ((pEntry->BADeclineBitmap & (1<<UserPriority)) == 0) &&
+            (pEntry->PortSecured == WPA_802_1X_PORT_SECURED)
+			 // For IOT compatibility, if  
+			 // 1. It is Ralink chip or 			  
+			 // 2. It is OPEN or AES mode, 
+			 // then BA session can be bulit.			 
+			 && ((IS_ENTRY_CLIENT(pEntry) && pAd->MlmeAux.APRalinkIe != 0x0) || 
+			 	 (pEntry->WepStatus != Ndis802_11WEPEnabled && pEntry->WepStatus != Ndis802_11Encryption2Enabled))
+			 && (!(RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS)))
+			)
+		{
+			BAOriSessionSetUp(pAd, pEntry, UserPriority, 0, 10, FALSE);
+		}
+	}
+#endif // DOT11_N_SUPPORT //
+
+	pAd->RalinkCounters.OneSecOsTxCount[QueIdx]++; // TODO: for debug only. to be removed
+	return NDIS_STATUS_SUCCESS;
+}
+
+
+/*
+	========================================================================
+
+	Routine Description:
+		This subroutine will scan through releative ring descriptor to find
+		out avaliable free ring descriptor and compare with request size.
+		
+	Arguments:
+		pAd Pointer to our adapter
+		QueIdx		Selected TX Ring
+		
+	Return Value:
+		NDIS_STATUS_FAILURE 	Not enough free descriptor
+		NDIS_STATUS_SUCCESS 	Enough free descriptor
+
+	IRQL = PASSIVE_LEVEL
+	IRQL = DISPATCH_LEVEL
+	
+	Note:
+	
+	========================================================================
+*/
+#ifdef RTMP_MAC_PCI
+NDIS_STATUS RTMPFreeTXDRequest(
+	IN		PRTMP_ADAPTER	pAd,
+	IN		UCHAR			QueIdx,
+	IN		UCHAR			NumberRequired,
+	IN		PUCHAR			FreeNumberIs)
+{
+	ULONG		FreeNumber = 0;
+	NDIS_STATUS 	Status = NDIS_STATUS_FAILURE;
+			
+	switch (QueIdx)
+	{
+		case QID_AC_BK:
+		case QID_AC_BE:
+		case QID_AC_VI:
+		case QID_AC_VO:
+		case QID_HCCA:
+			if (pAd->TxRing[QueIdx].TxSwFreeIdx > pAd->TxRing[QueIdx].TxCpuIdx)
+				FreeNumber = pAd->TxRing[QueIdx].TxSwFreeIdx - pAd->TxRing[QueIdx].TxCpuIdx - 1;
+			else
+				FreeNumber = pAd->TxRing[QueIdx].TxSwFreeIdx + TX_RING_SIZE - pAd->TxRing[QueIdx].TxCpuIdx - 1;
+
+			if (FreeNumber >= NumberRequired)
+				Status = NDIS_STATUS_SUCCESS;
+			break;
+
+		case QID_MGMT:
+			if (pAd->MgmtRing.TxSwFreeIdx > pAd->MgmtRing.TxCpuIdx)
+				FreeNumber = pAd->MgmtRing.TxSwFreeIdx - pAd->MgmtRing.TxCpuIdx - 1;
+			else
+				FreeNumber = pAd->MgmtRing.TxSwFreeIdx + MGMT_RING_SIZE - pAd->MgmtRing.TxCpuIdx - 1;
+
+			if (FreeNumber >= NumberRequired)
+				Status = NDIS_STATUS_SUCCESS;
+			break;
+
+		default:
+			DBGPRINT(RT_DEBUG_ERROR,("RTMPFreeTXDRequest::Invalid QueIdx(=%d)\n", QueIdx));
+			break;
+	}
+	*FreeNumberIs = (UCHAR)FreeNumber;
+
+	return (Status);
+}
+#endif // RTMP_MAC_PCI //
+
+
+
+VOID RTMPSendDisassociationFrame(
+	IN	PRTMP_ADAPTER	pAd)
+{
+}
+	
+VOID	RTMPSendNullFrame(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	UCHAR			TxRate,
+	IN	BOOLEAN 		bQosNull)
+{
+	UCHAR	NullFrame[48];
+	ULONG	Length;
+	PHEADER_802_11	pHeader_802_11;
+
+
+#ifdef RALINK_ATE
+	if(ATE_ON(pAd))
+	{
+		return;
+	}
+#endif // RALINK_ATE //
+
+    // WPA 802.1x secured port control
+    if (((pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA) || 
+         (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPAPSK) ||
+         (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2) || 
+         (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2PSK)
+#ifdef WPA_SUPPLICANT_SUPPORT
+			  || (pAd->StaCfg.IEEE8021X == TRUE)		
+#endif 		
+        ) &&
+       (pAd->StaCfg.PortSecured == WPA_802_1X_PORT_NOT_SECURED)) 
+	{
+		return;
+	}
+
+	NdisZeroMemory(NullFrame, 48);
+	Length = sizeof(HEADER_802_11);
+
+	pHeader_802_11 = (PHEADER_802_11) NullFrame;
+	
+	pHeader_802_11->FC.Type = BTYPE_DATA;
+	pHeader_802_11->FC.SubType = SUBTYPE_NULL_FUNC;
+	pHeader_802_11->FC.ToDs = 1;
+	COPY_MAC_ADDR(pHeader_802_11->Addr1, pAd->CommonCfg.Bssid);
+	COPY_MAC_ADDR(pHeader_802_11->Addr2, pAd->CurrentAddress);
+	COPY_MAC_ADDR(pHeader_802_11->Addr3, pAd->CommonCfg.Bssid);
+
+	if (pAd->CommonCfg.bAPSDForcePowerSave)
+	{
+		pHeader_802_11->FC.PwrMgmt = PWR_SAVE;
+	}
+	else
+	{
+		pHeader_802_11->FC.PwrMgmt = (pAd->StaCfg.Psm == PWR_SAVE) ? 1: 0;
+	}
+	pHeader_802_11->Duration = pAd->CommonCfg.Dsifs + RTMPCalcDuration(pAd, TxRate, 14);
+
+	// sequence is increased in MlmeHardTx
+	pHeader_802_11->Sequence = pAd->Sequence;
+	pAd->Sequence = (pAd->Sequence+1) & MAXSEQ; // next sequence 
+
+	// Prepare QosNull function frame
+	if (bQosNull)
+	{
+		pHeader_802_11->FC.SubType = SUBTYPE_QOS_NULL;
+		
+		// copy QOS control bytes
+		NullFrame[Length]	=  0;
+		NullFrame[Length+1] =  0;
+		Length += 2;// if pad with 2 bytes for alignment, APSD will fail
+	}
+	
+	HAL_KickOutNullFrameTx(pAd, 0, NullFrame, Length);
+
+}
+
+// IRQL = DISPATCH_LEVEL
+VOID	RTMPSendRTSFrame(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PUCHAR			pDA,
+	IN	unsigned int	NextMpduSize,
+	IN	UCHAR			TxRate,
+	IN	UCHAR			RTSRate,
+	IN	USHORT			AckDuration,
+	IN	UCHAR			QueIdx,
+	IN	UCHAR			FrameGap)
+{
+}
+
+
+
+// --------------------------------------------------------
+//  FIND ENCRYPT KEY AND DECIDE CIPHER ALGORITHM
+//		Find the WPA key, either Group or Pairwise Key
+//		LEAP + TKIP also use WPA key.
+// --------------------------------------------------------
+// Decide WEP bit and cipher suite to be used. Same cipher suite should be used for whole fragment burst
+// In Cisco CCX 2.0 Leap Authentication
+//		   WepStatus is Ndis802_11Encryption1Enabled but the key will use PairwiseKey
+//		   Instead of the SharedKey, SharedKey Length may be Zero.
+VOID STAFindCipherAlgorithm(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	TX_BLK			*pTxBlk)
+{
+	NDIS_802_11_ENCRYPTION_STATUS	Cipher;				// To indicate cipher used for this packet
+	UCHAR							CipherAlg = CIPHER_NONE;		// cipher alogrithm
+	UCHAR							KeyIdx = 0xff;
+	PUCHAR							pSrcBufVA; 
+	PCIPHER_KEY						pKey = NULL;
+	PMAC_TABLE_ENTRY 				pMacEntry;
+
+	pSrcBufVA = GET_OS_PKT_DATAPTR(pTxBlk->pPacket);
+	pMacEntry = pTxBlk->pMacEntry;
+	
+	{
+	    // Select Cipher
+	    if ((*pSrcBufVA & 0x01) && (ADHOC_ON(pAd)))
+	        Cipher = pAd->StaCfg.GroupCipher; // Cipher for Multicast or Broadcast
+	    else
+	        Cipher = pAd->StaCfg.PairCipher; // Cipher for Unicast
+
+		if (RTMP_GET_PACKET_EAPOL(pTxBlk->pPacket))
+		{
+			ASSERT(pAd->SharedKey[BSS0][0].CipherAlg <= CIPHER_CKIP128);
+			
+			// 4-way handshaking frame must be clear
+			if (!(TX_BLK_TEST_FLAG(pTxBlk, fTX_bClearEAPFrame)) && 
+				(pAd->SharedKey[BSS0][0].CipherAlg) &&
+				(pAd->SharedKey[BSS0][0].KeyLen))
+			{
+				CipherAlg = pAd->SharedKey[BSS0][0].CipherAlg;
+				KeyIdx = 0;
+			}
+		}
+		else if (Cipher == Ndis802_11Encryption1Enabled)
+		{
+				KeyIdx = pAd->StaCfg.DefaultKeyId;
+		}
+		else if ((Cipher == Ndis802_11Encryption2Enabled) ||
+				 (Cipher == Ndis802_11Encryption3Enabled))
+		{
+			if ((*pSrcBufVA & 0x01) && (ADHOC_ON(pAd))) // multicast
+				KeyIdx = pAd->StaCfg.DefaultKeyId;
+			else if (pAd->SharedKey[BSS0][0].KeyLen)
+				KeyIdx = 0;
+			else
+				KeyIdx = pAd->StaCfg.DefaultKeyId;
+		}
+
+		if (KeyIdx == 0xff)
+			CipherAlg = CIPHER_NONE;
+		else if ((Cipher == Ndis802_11EncryptionDisabled) || (pAd->SharedKey[BSS0][KeyIdx].KeyLen == 0))
+			CipherAlg = CIPHER_NONE;
+#ifdef WPA_SUPPLICANT_SUPPORT
+	    else if ( pAd->StaCfg.WpaSupplicantUP && 
+	             (Cipher == Ndis802_11Encryption1Enabled) &&
+	             (pAd->StaCfg.IEEE8021X == TRUE) &&
+	             (pAd->StaCfg.PortSecured == WPA_802_1X_PORT_NOT_SECURED))
+	        CipherAlg = CIPHER_NONE;
+#endif // WPA_SUPPLICANT_SUPPORT //
+		else
+		{
+			//Header_802_11.FC.Wep = 1;
+			CipherAlg = pAd->SharedKey[BSS0][KeyIdx].CipherAlg;
+			pKey = &pAd->SharedKey[BSS0][KeyIdx];
+		}
+	}
+	
+	pTxBlk->CipherAlg = CipherAlg;
+	pTxBlk->pKey = pKey;
+	pTxBlk->KeyIdx = KeyIdx;
+}
+
+
+VOID STABuildCommon802_11Header(
+	IN  PRTMP_ADAPTER   pAd,
+	IN  TX_BLK          *pTxBlk)
+{
+
+	HEADER_802_11	*pHeader_802_11;
+#ifdef QOS_DLS_SUPPORT
+	BOOLEAN	bDLSFrame = FALSE;
+	INT	DlsEntryIndex = 0;
+#endif // QOS_DLS_SUPPORT //
+
+	// 
+	// MAKE A COMMON 802.11 HEADER
+	// 
+
+	// normal wlan header size : 24 octets
+	pTxBlk->MpduHeaderLen = sizeof(HEADER_802_11);
+
+	pHeader_802_11 = (HEADER_802_11 *) &pTxBlk->HeaderBuf[TXINFO_SIZE + TXWI_SIZE];
+
+	NdisZeroMemory(pHeader_802_11, sizeof(HEADER_802_11));
+
+	pHeader_802_11->FC.FrDs = 0;
+	pHeader_802_11->FC.Type = BTYPE_DATA;
+	pHeader_802_11->FC.SubType = ((TX_BLK_TEST_FLAG(pTxBlk, fTX_bWMM)) ? SUBTYPE_QDATA : SUBTYPE_DATA);
+	
+#ifdef QOS_DLS_SUPPORT
+	if (INFRA_ON(pAd))
+	{
+		// Check if the frame can be sent through DLS direct link interface
+		// If packet can be sent through DLS, then force aggregation disable. (Hard to determine peer STA's capability)
+		DlsEntryIndex = RTMPCheckDLSFrame(pAd, pTxBlk->pSrcBufHeader);
+		if (DlsEntryIndex >= 0)
+			bDLSFrame = TRUE;
+		else
+			bDLSFrame = FALSE;
+	}
+#endif // QOS_DLS_SUPPORT //
+
+    if (pTxBlk->pMacEntry)
+	{
+		if (TX_BLK_TEST_FLAG(pTxBlk, fTX_bForceNonQoS))
+		{			
+			pHeader_802_11->Sequence = pTxBlk->pMacEntry->NonQosDataSeq;
+			pTxBlk->pMacEntry->NonQosDataSeq = (pTxBlk->pMacEntry->NonQosDataSeq+1) & MAXSEQ;
+		}
+		else
+		{		
+    	    pHeader_802_11->Sequence = pTxBlk->pMacEntry->TxSeq[pTxBlk->UserPriority];
+    	    pTxBlk->pMacEntry->TxSeq[pTxBlk->UserPriority] = (pTxBlk->pMacEntry->TxSeq[pTxBlk->UserPriority]+1) & MAXSEQ;
+		}
+	}
+	else
+	{
+		pHeader_802_11->Sequence = pAd->Sequence;
+		pAd->Sequence = (pAd->Sequence+1) & MAXSEQ; // next sequence  
+	}
+
+	pHeader_802_11->Frag = 0;
+
+	pHeader_802_11->FC.MoreData = TX_BLK_TEST_FLAG(pTxBlk, fTX_bMoreData);
+
+	{
+		if (INFRA_ON(pAd))
+		{
+#ifdef QOS_DLS_SUPPORT
+			if (bDLSFrame)
+			{
+				COPY_MAC_ADDR(pHeader_802_11->Addr1, pTxBlk->pSrcBufHeader);
+				COPY_MAC_ADDR(pHeader_802_11->Addr2, pAd->CurrentAddress);
+				COPY_MAC_ADDR(pHeader_802_11->Addr3, pAd->CommonCfg.Bssid);
+				pHeader_802_11->FC.ToDs = 0;
+			}
+			else
+#endif // QOS_DLS_SUPPORT //
+			{
+				COPY_MAC_ADDR(pHeader_802_11->Addr1, pAd->CommonCfg.Bssid);
+				COPY_MAC_ADDR(pHeader_802_11->Addr2, pAd->CurrentAddress);
+				COPY_MAC_ADDR(pHeader_802_11->Addr3, pTxBlk->pSrcBufHeader);
+				pHeader_802_11->FC.ToDs = 1;
+#ifdef CLIENT_WDS
+				if (!MAC_ADDR_EQUAL((pTxBlk->pSrcBufHeader + MAC_ADDR_LEN),
+						pAd->CurrentAddress))
+				{
+					pHeader_802_11->FC.FrDs = 1;
+					COPY_MAC_ADDR(&pHeader_802_11->Octet[0], pTxBlk->pSrcBufHeader + MAC_ADDR_LEN);	// ADDR4 = SA
+					pTxBlk->MpduHeaderLen += MAC_ADDR_LEN;
+				}
+#endif // CLIENT_WDS //
+			}
+		}
+		else if (ADHOC_ON(pAd))
+		{
+			COPY_MAC_ADDR(pHeader_802_11->Addr1, pTxBlk->pSrcBufHeader);
+#ifdef XLINK_SUPPORT
+			if (pAd->StaCfg.PSPXlink)
+				/* copy the SA of ether frames to address 2 of 802.11 frame */
+				COPY_MAC_ADDR(pHeader_802_11->Addr2, pTxBlk->pSrcBufHeader + MAC_ADDR_LEN);
+			else
+#endif // XLINK_SUPPORT //
+				COPY_MAC_ADDR(pHeader_802_11->Addr2, pAd->CurrentAddress);
+			COPY_MAC_ADDR(pHeader_802_11->Addr3, pAd->CommonCfg.Bssid);
+			pHeader_802_11->FC.ToDs = 0;
+		}
+	}	
+	
+	if (pTxBlk->CipherAlg != CIPHER_NONE)
+		pHeader_802_11->FC.Wep = 1;
+
+	// -----------------------------------------------------------------
+	// STEP 2. MAKE A COMMON 802.11 HEADER SHARED BY ENTIRE FRAGMENT BURST. Fill sequence later. 
+	// -----------------------------------------------------------------
+	if (pAd->CommonCfg.bAPSDForcePowerSave)
+    	pHeader_802_11->FC.PwrMgmt = PWR_SAVE;
+	else
+    	pHeader_802_11->FC.PwrMgmt = (pAd->StaCfg.Psm == PWR_SAVE);		
+}
+
+#ifdef DOT11_N_SUPPORT
+VOID STABuildCache802_11Header(
+	IN RTMP_ADAPTER		*pAd,
+	IN TX_BLK			*pTxBlk,
+	IN UCHAR			*pHeader)
+{
+	MAC_TABLE_ENTRY	*pMacEntry;
+	PHEADER_802_11	pHeader80211;
+
+	pHeader80211 = (PHEADER_802_11)pHeader;
+	pMacEntry = pTxBlk->pMacEntry;
+
+	// 
+	// Update the cached 802.11 HEADER
+	// 
+	
+	// normal wlan header size : 24 octets
+	pTxBlk->MpduHeaderLen = sizeof(HEADER_802_11);
+	
+	// More Bit
+	pHeader80211->FC.MoreData = TX_BLK_TEST_FLAG(pTxBlk, fTX_bMoreData);
+	
+	// Sequence
+	pHeader80211->Sequence = pMacEntry->TxSeq[pTxBlk->UserPriority];
+    pMacEntry->TxSeq[pTxBlk->UserPriority] = (pMacEntry->TxSeq[pTxBlk->UserPriority]+1) & MAXSEQ;
+	
+	{
+		// Check if the frame can be sent through DLS direct link interface
+		// If packet can be sent through DLS, then force aggregation disable. (Hard to determine peer STA's capability)
+#ifdef QOS_DLS_SUPPORT
+		BOOLEAN	bDLSFrame = FALSE;
+		INT	DlsEntryIndex = 0;
+
+		DlsEntryIndex = RTMPCheckDLSFrame(pAd, pTxBlk->pSrcBufHeader);
+		if (DlsEntryIndex >= 0)
+			bDLSFrame = TRUE;
+		else
+			bDLSFrame = FALSE;
+#endif // QOS_DLS_SUPPORT //
+
+		// The addr3 of normal packet send from DS is Dest Mac address.
+#ifdef QOS_DLS_SUPPORT
+		if (bDLSFrame)
+		{
+			COPY_MAC_ADDR(pHeader80211->Addr1, pTxBlk->pSrcBufHeader);
+			COPY_MAC_ADDR(pHeader80211->Addr3, pAd->CommonCfg.Bssid);
+			pHeader80211->FC.ToDs = 0;
+		}
+		else
+#endif // QOS_DLS_SUPPORT //
+		if (ADHOC_ON(pAd))
+			COPY_MAC_ADDR(pHeader80211->Addr3, pAd->CommonCfg.Bssid);
+		else
+		{
+		COPY_MAC_ADDR(pHeader80211->Addr3, pTxBlk->pSrcBufHeader);
+#ifdef CLIENT_WDS
+				if (!MAC_ADDR_EQUAL((pTxBlk->pSrcBufHeader + MAC_ADDR_LEN),
+						pAd->CurrentAddress))
+				{
+					pHeader80211->FC.FrDs = 1;
+					COPY_MAC_ADDR(&pHeader80211->Octet[0], pTxBlk->pSrcBufHeader + MAC_ADDR_LEN);	// ADDR4 = SA
+					pTxBlk->MpduHeaderLen += MAC_ADDR_LEN;
+				}
+#endif // CLIENT_WDS //
+		}
+	}
+
+	// -----------------------------------------------------------------
+	// STEP 2. MAKE A COMMON 802.11 HEADER SHARED BY ENTIRE FRAGMENT BURST. Fill sequence later. 
+	// -----------------------------------------------------------------
+	if (pAd->CommonCfg.bAPSDForcePowerSave)
+    	pHeader80211->FC.PwrMgmt = PWR_SAVE;
+	else
+    	pHeader80211->FC.PwrMgmt = (pAd->StaCfg.Psm == PWR_SAVE);	
+}
+#endif // DOT11_N_SUPPORT //
+
+static inline PUCHAR STA_Build_ARalink_Frame_Header(
+	IN RTMP_ADAPTER *pAd,
+	IN TX_BLK		*pTxBlk)
+{
+	PUCHAR			pHeaderBufPtr;
+	HEADER_802_11	*pHeader_802_11;
+	PNDIS_PACKET	pNextPacket;
+	UINT32			nextBufLen;
+	PQUEUE_ENTRY	pQEntry;
+		
+	STAFindCipherAlgorithm(pAd, pTxBlk);
+	STABuildCommon802_11Header(pAd, pTxBlk);
+
+
+	pHeaderBufPtr = &pTxBlk->HeaderBuf[TXINFO_SIZE + TXWI_SIZE];
+	pHeader_802_11 = (HEADER_802_11 *) pHeaderBufPtr;
+
+	// steal "order" bit to mark "aggregation"
+	pHeader_802_11->FC.Order = 1;
+	
+	// skip common header
+	pHeaderBufPtr += pTxBlk->MpduHeaderLen;
+
+	if (TX_BLK_TEST_FLAG(pTxBlk, fTX_bWMM))
+	{
+		//
+		// build QOS Control bytes
+		// 
+		*pHeaderBufPtr = (pTxBlk->UserPriority & 0x0F);
+
+		*(pHeaderBufPtr+1) = 0;
+		pHeaderBufPtr +=2;
+		pTxBlk->MpduHeaderLen += 2;
+	}
+
+	// padding at front of LLC header. LLC header should at 4-bytes aligment.
+	pTxBlk->HdrPadLen = (ULONG)pHeaderBufPtr;
+	pHeaderBufPtr = (PUCHAR)ROUND_UP(pHeaderBufPtr, 4);
+	pTxBlk->HdrPadLen = (ULONG)(pHeaderBufPtr - pTxBlk->HdrPadLen);
+	
+	// For RA Aggregation, 
+	// put the 2nd MSDU length(extra 2-byte field) after QOS_CONTROL in little endian format
+	pQEntry = pTxBlk->TxPacketList.Head;
+	pNextPacket = QUEUE_ENTRY_TO_PACKET(pQEntry);
+	nextBufLen = GET_OS_PKT_LEN(pNextPacket);
+	if (RTMP_GET_PACKET_VLAN(pNextPacket))
+		nextBufLen -= LENGTH_802_1Q;
+	
+	*pHeaderBufPtr = (UCHAR)nextBufLen & 0xff;
+	*(pHeaderBufPtr+1) = (UCHAR)(nextBufLen >> 8);
+
+	pHeaderBufPtr += 2;
+	pTxBlk->MpduHeaderLen += 2;
+	
+	return pHeaderBufPtr;
+	
+}
+
+#ifdef DOT11_N_SUPPORT
+static inline PUCHAR STA_Build_AMSDU_Frame_Header(
+	IN RTMP_ADAPTER *pAd,
+	IN TX_BLK		*pTxBlk)
+{
+	PUCHAR			pHeaderBufPtr;//, pSaveBufPtr;
+	HEADER_802_11	*pHeader_802_11;
+
+	
+	STAFindCipherAlgorithm(pAd, pTxBlk);
+	STABuildCommon802_11Header(pAd, pTxBlk);
+
+	pHeaderBufPtr = &pTxBlk->HeaderBuf[TXINFO_SIZE + TXWI_SIZE];
+	pHeader_802_11 = (HEADER_802_11 *) pHeaderBufPtr;
+
+	// skip common header
+	pHeaderBufPtr += pTxBlk->MpduHeaderLen;
+
+	//
+	// build QOS Control bytes
+	// 
+	*pHeaderBufPtr = (pTxBlk->UserPriority & 0x0F) | (pAd->CommonCfg.AckPolicy[pTxBlk->QueIdx]<<5);
+
+	//
+	// A-MSDU packet
+	// 
+	*pHeaderBufPtr |= 0x80;
+
+	*(pHeaderBufPtr+1) = 0;
+	pHeaderBufPtr +=2;
+	pTxBlk->MpduHeaderLen += 2;
+
+	//pSaveBufPtr = pHeaderBufPtr;
+
+	//
+	// padding at front of LLC header
+	// LLC header should locate at 4-octets aligment
+	// 
+	// @@@ MpduHeaderLen excluding padding @@@
+	// 
+	pTxBlk->HdrPadLen = (ULONG)pHeaderBufPtr;
+	pHeaderBufPtr = (PUCHAR) ROUND_UP(pHeaderBufPtr, 4);
+	pTxBlk->HdrPadLen = (ULONG)(pHeaderBufPtr - pTxBlk->HdrPadLen);
+		
+	return pHeaderBufPtr;
+
+}
+
+
+VOID STA_AMPDU_Frame_Tx(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	TX_BLK			*pTxBlk)
+{
+	HEADER_802_11	*pHeader_802_11;
+	PUCHAR			pHeaderBufPtr;
+	USHORT			FreeNumber;
+	MAC_TABLE_ENTRY	*pMacEntry;
+	BOOLEAN			bVLANPkt;
+	PQUEUE_ENTRY	pQEntry;
+	
+	ASSERT(pTxBlk);
+
+	while(pTxBlk->TxPacketList.Head)
+	{
+		pQEntry = RemoveHeadQueue(&pTxBlk->TxPacketList);
+		pTxBlk->pPacket = QUEUE_ENTRY_TO_PACKET(pQEntry);
+		if ( RTMP_FillTxBlkInfo(pAd, pTxBlk) != TRUE)
+		{
+			RELEASE_NDIS_PACKET(pAd, pTxBlk->pPacket, NDIS_STATUS_FAILURE);
+			continue;
+		}
+
+		bVLANPkt = (RTMP_GET_PACKET_VLAN(pTxBlk->pPacket) ? TRUE : FALSE);
+		
+		pMacEntry = pTxBlk->pMacEntry;
+		if (pMacEntry->isCached)
+		{
+			// NOTE: Please make sure the size of pMacEntry->CachedBuf[] is smaller than pTxBlk->HeaderBuf[]!!!!
+#ifndef VENDOR_FEATURE1_SUPPORT
+			NdisMoveMemory((PUCHAR)(&pTxBlk->HeaderBuf[TXINFO_SIZE]), (PUCHAR)(&pMacEntry->CachedBuf[0]), TXWI_SIZE + sizeof(HEADER_802_11));
+#else
+			pTxBlk->HeaderBuf = pMacEntry->HeaderBuf;
+#endif // VENDOR_FEATURE1_SUPPORT //
+
+			pHeaderBufPtr = (PUCHAR)(&pTxBlk->HeaderBuf[TXINFO_SIZE + TXWI_SIZE]);
+			STABuildCache802_11Header(pAd, pTxBlk, pHeaderBufPtr);
+
+#ifdef SOFT_ENCRYPT
+			RTMPUpdateSwCacheCipherInfo(pAd, pTxBlk, pHeaderBufPtr);
+#endif // SOFT_ENCRYPT //
+		}
+		else 
+		{
+			STAFindCipherAlgorithm(pAd, pTxBlk);
+			STABuildCommon802_11Header(pAd, pTxBlk);
+			
+			pHeaderBufPtr = &pTxBlk->HeaderBuf[TXINFO_SIZE + TXWI_SIZE];
+		}
+
+#ifdef SOFT_ENCRYPT
+		if (TX_BLK_TEST_FLAG(pTxBlk, fTX_bSwEncrypt))
+		{				
+			/* Check if the original data has enough buffer 
+			   to insert or append WPI related field. */
+			if (RTMPExpandPacketForSwEncrypt(pAd, pTxBlk) == FALSE)
+			{				
+				RELEASE_NDIS_PACKET(pAd, pTxBlk->pPacket, NDIS_STATUS_FAILURE);
+				continue;
+			}	
+		}
+#endif // SOFT_ENCRYPT //
+
+
+#ifdef VENDOR_FEATURE1_SUPPORT
+		if(pMacEntry->isCached
+			&& (pMacEntry->Protocol == RTMP_GET_PACKET_PROTOCOL(pTxBlk->pPacket))
+#ifdef SOFT_ENCRYPT
+			&& !TX_BLK_TEST_FLAG(pTxBlk, fTX_bSwEncrypt)
+#endif // SOFT_ENCRYPT //
+		)
+		{
+			pHeader_802_11 = (HEADER_802_11 *) pHeaderBufPtr;
+				
+			// skip common header
+			pHeaderBufPtr += pTxBlk->MpduHeaderLen;
+
+			//
+			// build QOS Control bytes
+			// 
+			*pHeaderBufPtr = (pTxBlk->UserPriority & 0x0F);
+			pTxBlk->MpduHeaderLen = pMacEntry->MpduHeaderLen;
+			pHeaderBufPtr = ((PUCHAR)pHeader_802_11) + pTxBlk->MpduHeaderLen;
+
+			pTxBlk->HdrPadLen = pMacEntry->HdrPadLen;
+
+			// skip 802.3 header
+			pTxBlk->pSrcBufData = pTxBlk->pSrcBufHeader + LENGTH_802_3;
+			pTxBlk->SrcBufLen  -= LENGTH_802_3;
+
+			// skip vlan tag
+			if (RTMP_GET_PACKET_VLAN(pTxBlk->pPacket))
+			{
+				pTxBlk->pSrcBufData	+= LENGTH_802_1Q;
+				pTxBlk->SrcBufLen	-= LENGTH_802_1Q;
+			}
+		}
+		else
+#endif // VENDOR_FEATURE1_SUPPORT //
+		{
+			pHeader_802_11 = (HEADER_802_11 *) pHeaderBufPtr;
+			
+			// skip common header
+			pHeaderBufPtr += pTxBlk->MpduHeaderLen;
+
+			//
+			// build QOS Control bytes
+			// 
+			*pHeaderBufPtr = (pTxBlk->UserPriority & 0x0F);
+			*(pHeaderBufPtr+1) = 0;
+			pHeaderBufPtr +=2;
+			pTxBlk->MpduHeaderLen += 2;
+
+			//
+			// build HTC+ 
+			// HTC control filed following QoS field
+			// 
+			if ((pAd->CommonCfg.bRdg == TRUE) && CLIENT_STATUS_TEST_FLAG(pTxBlk->pMacEntry, fCLIENT_STATUS_RDG_CAPABLE))
+			{
+				if (pMacEntry->isCached == FALSE)
+				{
+					// mark HTC bit 
+					pHeader_802_11->FC.Order = 1;
+
+					NdisZeroMemory(pHeaderBufPtr, 4);
+					*(pHeaderBufPtr+3) |= 0x80;
+				}
+				pHeaderBufPtr += 4;
+				pTxBlk->MpduHeaderLen += 4;
+			}
+
+			//pTxBlk->MpduHeaderLen = pHeaderBufPtr - pTxBlk->HeaderBuf - TXWI_SIZE - TXINFO_SIZE;
+			ASSERT(pTxBlk->MpduHeaderLen >= 24);
+
+			// skip 802.3 header
+			pTxBlk->pSrcBufData = pTxBlk->pSrcBufHeader + LENGTH_802_3;
+			pTxBlk->SrcBufLen  -= LENGTH_802_3;
+
+			// skip vlan tag
+			if (bVLANPkt)
+			{
+				pTxBlk->pSrcBufData	+= LENGTH_802_1Q;
+				pTxBlk->SrcBufLen	-= LENGTH_802_1Q;
+			}
+
+			//
+			// padding at front of LLC header
+			// LLC header should locate at 4-octets aligment
+			// 
+			// @@@ MpduHeaderLen excluding padding @@@
+			// 
+			pTxBlk->HdrPadLen = (ULONG)pHeaderBufPtr;
+			pHeaderBufPtr = (PUCHAR) ROUND_UP(pHeaderBufPtr, 4);
+			pTxBlk->HdrPadLen = (ULONG)(pHeaderBufPtr - pTxBlk->HdrPadLen);
+
+#ifdef VENDOR_FEATURE1_SUPPORT
+			pMacEntry->HdrPadLen = pTxBlk->HdrPadLen;
+#endif // VENDOR_FEATURE1_SUPPORT //
+
+#ifdef SOFT_ENCRYPT
+			if (TX_BLK_TEST_FLAG(pTxBlk, fTX_bSwEncrypt))
+			{			
+				UCHAR	iv_offset = 0, ext_offset = 0;
+			
+				// if original Ethernet frame contains no LLC/SNAP, 
+				// then an extra LLC/SNAP encap is required 	 	
+				EXTRA_LLCSNAP_ENCAP_FROM_PKT_OFFSET(pTxBlk->pSrcBufData-2, pTxBlk->pExtraLlcSnapEncap);
+
+				// Insert LLC-SNAP encapsulation (8 octets) to MPDU data buffer	
+				if (pTxBlk->pExtraLlcSnapEncap)
+				{
+					// Reserve the front 8 bytes of data for LLC header 
+					pTxBlk->pSrcBufData -= LENGTH_802_1_H;
+					pTxBlk->SrcBufLen  += LENGTH_802_1_H;
+
+					NdisMoveMemory(pTxBlk->pSrcBufData, pTxBlk->pExtraLlcSnapEncap, 6);					
+				}	
+								
+				/* Construct and insert specific IV header to MPDU header */
+				RTMPSoftConstructIVHdr(pTxBlk->CipherAlg, 
+									   pTxBlk->KeyIdx, 
+									   pTxBlk->pKey->TxTsc,
+									   pHeaderBufPtr, 
+									   &iv_offset);
+				pHeaderBufPtr += iv_offset;
+				pTxBlk->MpduHeaderLen += iv_offset;
+
+				/* Encrypt the MPDU data by software */
+				RTMPSoftEncryptionAction(pAd, 
+										 pTxBlk->CipherAlg, 
+										 (PUCHAR)pHeader_802_11, 
+										pTxBlk->pSrcBufData, 
+										pTxBlk->SrcBufLen, 
+										pTxBlk->KeyIdx,
+										   pTxBlk->pKey,
+										 &ext_offset);
+				pTxBlk->SrcBufLen += ext_offset;
+				pTxBlk->TotalFrameLen += ext_offset;
+									
+			}
+			else
+#endif // SOFT_ENCRYPT //
+			{
+
+				//
+				// Insert LLC-SNAP encapsulation - 8 octets
+				//
+				EXTRA_LLCSNAP_ENCAP_FROM_PKT_OFFSET(pTxBlk->pSrcBufData-2, pTxBlk->pExtraLlcSnapEncap);
+				if (pTxBlk->pExtraLlcSnapEncap)
+				{
+					NdisMoveMemory(pHeaderBufPtr, pTxBlk->pExtraLlcSnapEncap, 6);
+					pHeaderBufPtr += 6;
+					// get 2 octets (TypeofLen)
+					NdisMoveMemory(pHeaderBufPtr, pTxBlk->pSrcBufData-2, 2);
+					pHeaderBufPtr += 2;
+					pTxBlk->MpduHeaderLen += LENGTH_802_1_H;
+				}
+
+			}
+
+#ifdef VENDOR_FEATURE1_SUPPORT
+			pMacEntry->Protocol = RTMP_GET_PACKET_PROTOCOL(pTxBlk->pPacket);
+			pMacEntry->MpduHeaderLen = pTxBlk->MpduHeaderLen;
+#endif // VENDOR_FEATURE1_SUPPORT //
+		}
+
+		if (pMacEntry->isCached)
+		{
+			RTMPWriteTxWI_Cache(pAd, (PTXWI_STRUC)(&pTxBlk->HeaderBuf[TXINFO_SIZE]), pTxBlk);
+		}
+		else
+		{
+			RTMPWriteTxWI_Data(pAd, (PTXWI_STRUC)(&pTxBlk->HeaderBuf[TXINFO_SIZE]), pTxBlk);
+
+			NdisZeroMemory((PUCHAR)(&pMacEntry->CachedBuf[0]), sizeof(pMacEntry->CachedBuf));
+			NdisMoveMemory((PUCHAR)(&pMacEntry->CachedBuf[0]), (PUCHAR)(&pTxBlk->HeaderBuf[TXINFO_SIZE]), (pHeaderBufPtr - (PUCHAR)(&pTxBlk->HeaderBuf[TXINFO_SIZE])));
+
+#ifdef VENDOR_FEATURE1_SUPPORT
+			/* use space to get performance enhancement */
+			NdisZeroMemory((PUCHAR)(&pMacEntry->HeaderBuf[0]), sizeof(pMacEntry->HeaderBuf));
+			NdisMoveMemory((PUCHAR)(&pMacEntry->HeaderBuf[0]), (PUCHAR)(&pTxBlk->HeaderBuf[0]), (pHeaderBufPtr - (PUCHAR)(&pTxBlk->HeaderBuf[0])));
+#endif // VENDOR_FEATURE1_SUPPORT //
+
+			pMacEntry->isCached = TRUE;
+		}
+
+#ifdef STATS_COUNT_SUPPORT
+		// calculate Transmitted AMPDU count and ByteCount 	
+		{
+			pAd->RalinkCounters.TransmittedMPDUsInAMPDUCount.u.LowPart ++;
+			pAd->RalinkCounters.TransmittedOctetsInAMPDUCount.QuadPart += pTxBlk->SrcBufLen;		
+		}
+#endif // STATS_COUNT_SUPPORT //
+
+		//FreeNumber = GET_TXRING_FREENO(pAd, QueIdx);
+
+		HAL_WriteTxResource(pAd, pTxBlk, TRUE, &FreeNumber);
+
+		//
+		// Kick out Tx
+		// 
+#ifdef PCIE_PS_SUPPORT
+        if (!RTMP_TEST_PSFLAG(pAd, fRTMP_PS_DISABLE_TX))
+#endif // PCIE_PS_SUPPORT //
+		HAL_KickOutTx(pAd, pTxBlk, pTxBlk->QueIdx);
+
+		pAd->RalinkCounters.KickTxCount++;
+		pAd->RalinkCounters.OneSecTxDoneCount++;
+	}
+	
+}
+
+
+VOID STA_AMSDU_Frame_Tx(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	TX_BLK			*pTxBlk)
+{
+	PUCHAR			pHeaderBufPtr;
+	USHORT			FreeNumber;
+	USHORT			subFramePayloadLen = 0;	// AMSDU Subframe length without AMSDU-Header / Padding.
+	USHORT			totalMPDUSize=0;
+	UCHAR			*subFrameHeader;
+	UCHAR			padding = 0;
+	USHORT			FirstTx = 0, LastTxIdx = 0;
+	BOOLEAN			bVLANPkt;
+	int 			frameNum = 0;
+	PQUEUE_ENTRY	pQEntry;
+		
+
+	ASSERT(pTxBlk);
+	
+	ASSERT((pTxBlk->TxPacketList.Number > 1));
+
+	while(pTxBlk->TxPacketList.Head)
+	{
+		pQEntry = RemoveHeadQueue(&pTxBlk->TxPacketList);
+		pTxBlk->pPacket = QUEUE_ENTRY_TO_PACKET(pQEntry);
+		if (RTMP_FillTxBlkInfo(pAd, pTxBlk) != TRUE)
+		{
+			RELEASE_NDIS_PACKET(pAd, pTxBlk->pPacket, NDIS_STATUS_FAILURE);
+			continue;
+		}
+
+		bVLANPkt = (RTMP_GET_PACKET_VLAN(pTxBlk->pPacket) ? TRUE : FALSE);
+		
+		// skip 802.3 header
+		pTxBlk->pSrcBufData = pTxBlk->pSrcBufHeader + LENGTH_802_3;
+		pTxBlk->SrcBufLen  -= LENGTH_802_3;
+
+		// skip vlan tag
+		if (bVLANPkt)
+		{
+			pTxBlk->pSrcBufData	+= LENGTH_802_1Q;
+			pTxBlk->SrcBufLen	-= LENGTH_802_1Q;
+		}
+		
+		if (frameNum == 0)
+		{
+			pHeaderBufPtr = STA_Build_AMSDU_Frame_Header(pAd, pTxBlk);
+
+			// NOTE: TxWI->MPDUtotalByteCount will be updated after final frame was handled.
+			RTMPWriteTxWI_Data(pAd, (PTXWI_STRUC)(&pTxBlk->HeaderBuf[TXINFO_SIZE]), pTxBlk);
+		}
+		else
+		{
+			pHeaderBufPtr = &pTxBlk->HeaderBuf[0];
+			padding = ROUND_UP(LENGTH_AMSDU_SUBFRAMEHEAD + subFramePayloadLen, 4) - (LENGTH_AMSDU_SUBFRAMEHEAD + subFramePayloadLen);
+			NdisZeroMemory(pHeaderBufPtr, padding + LENGTH_AMSDU_SUBFRAMEHEAD);
+			pHeaderBufPtr += padding;
+			pTxBlk->MpduHeaderLen = padding;
+		}
+
+		//
+		// A-MSDU subframe
+		//   DA(6)+SA(6)+Length(2) + LLC/SNAP Encap
+		// 
+		subFrameHeader = pHeaderBufPtr;
+		subFramePayloadLen = pTxBlk->SrcBufLen;
+
+		NdisMoveMemory(subFrameHeader, pTxBlk->pSrcBufHeader, 12);
+
+
+		pHeaderBufPtr += LENGTH_AMSDU_SUBFRAMEHEAD;
+		pTxBlk->MpduHeaderLen += LENGTH_AMSDU_SUBFRAMEHEAD;
+
+
+		//
+		// Insert LLC-SNAP encapsulation - 8 octets
+		// 
+		EXTRA_LLCSNAP_ENCAP_FROM_PKT_OFFSET(pTxBlk->pSrcBufData-2, pTxBlk->pExtraLlcSnapEncap);
+
+		subFramePayloadLen = pTxBlk->SrcBufLen;
+
+		if (pTxBlk->pExtraLlcSnapEncap)
+		{
+			NdisMoveMemory(pHeaderBufPtr, pTxBlk->pExtraLlcSnapEncap, 6);
+			pHeaderBufPtr += 6;
+			// get 2 octets (TypeofLen)
+			NdisMoveMemory(pHeaderBufPtr, pTxBlk->pSrcBufData-2, 2);
+			pHeaderBufPtr += 2;
+			pTxBlk->MpduHeaderLen += LENGTH_802_1_H;
+			subFramePayloadLen += LENGTH_802_1_H;
+		}
+
+		// update subFrame Length field
+		subFrameHeader[12] = (subFramePayloadLen & 0xFF00) >> 8;
+		subFrameHeader[13] = subFramePayloadLen & 0xFF;
+
+		totalMPDUSize += pTxBlk->MpduHeaderLen + pTxBlk->SrcBufLen;
+
+		if (frameNum ==0)
+			FirstTx = HAL_WriteMultiTxResource(pAd, pTxBlk, frameNum, &FreeNumber);
+		else
+			LastTxIdx = HAL_WriteMultiTxResource(pAd, pTxBlk, frameNum, &FreeNumber);
+		
+		frameNum++;
+
+		pAd->RalinkCounters.KickTxCount++;
+		pAd->RalinkCounters.OneSecTxDoneCount++;		
+		
+		// calculate Transmitted AMSDU Count and ByteCount
+		{
+			pAd->RalinkCounters.TransmittedAMSDUCount.u.LowPart ++;
+			pAd->RalinkCounters.TransmittedOctetsInAMSDU.QuadPart += totalMPDUSize;			
+		}
+		
+	}
+
+	HAL_FinalWriteTxResource(pAd, pTxBlk, totalMPDUSize, FirstTx);
+	HAL_LastTxIdx(pAd, pTxBlk->QueIdx, LastTxIdx);
+
+	//
+	// Kick out Tx
+	// 
+#ifdef PCIE_PS_SUPPORT
+    if (!RTMP_TEST_PSFLAG(pAd, fRTMP_PS_DISABLE_TX))
+#endif // PCIE_PS_SUPPORT //
+	HAL_KickOutTx(pAd, pTxBlk, pTxBlk->QueIdx);
+}
+#endif // DOT11_N_SUPPORT //
+
+VOID STA_Legacy_Frame_Tx(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	TX_BLK			*pTxBlk)
+{
+	HEADER_802_11	*pHeader_802_11;
+	PUCHAR			pHeaderBufPtr;
+	USHORT			FreeNumber;
+	BOOLEAN			bVLANPkt;
+	PQUEUE_ENTRY	pQEntry;
+	
+	ASSERT(pTxBlk);
+
+
+	pQEntry = RemoveHeadQueue(&pTxBlk->TxPacketList);
+	pTxBlk->pPacket = QUEUE_ENTRY_TO_PACKET(pQEntry);
+	if (RTMP_FillTxBlkInfo(pAd, pTxBlk) != TRUE)
+	{
+		RELEASE_NDIS_PACKET(pAd, pTxBlk->pPacket, NDIS_STATUS_FAILURE);
+		return;
+	}
+
+#ifdef STATS_COUNT_SUPPORT
+	if (pTxBlk->TxFrameType == TX_MCAST_FRAME)
+	{
+		INC_COUNTER64(pAd->WlanCounters.MulticastTransmittedFrameCount);
+	}
+#endif // STATS_COUNT_SUPPORT //
+	
+	if (RTMP_GET_PACKET_RTS(pTxBlk->pPacket))
+		TX_BLK_SET_FLAG(pTxBlk, fTX_bRtsRequired);
+	else
+		TX_BLK_CLEAR_FLAG(pTxBlk, fTX_bRtsRequired);
+
+	bVLANPkt = (RTMP_GET_PACKET_VLAN(pTxBlk->pPacket) ? TRUE : FALSE);
+
+	if (pTxBlk->TxRate < pAd->CommonCfg.MinTxRate)
+		pTxBlk->TxRate = pAd->CommonCfg.MinTxRate;
+	
+	STAFindCipherAlgorithm(pAd, pTxBlk);
+	STABuildCommon802_11Header(pAd, pTxBlk);
+
+#ifdef SOFT_ENCRYPT
+	if (TX_BLK_TEST_FLAG(pTxBlk, fTX_bSwEncrypt))
+	{				
+		/* Check if the original data has enough buffer 
+		   to insert or append WPI related field. */
+		if (RTMPExpandPacketForSwEncrypt(pAd, pTxBlk) == FALSE)
+		{				
+			RELEASE_NDIS_PACKET(pAd, pTxBlk->pPacket, NDIS_STATUS_FAILURE);
+			return;
+		}	
+	}
+#endif // SOFT_ENCRYPT //
+
+	// skip 802.3 header
+	pTxBlk->pSrcBufData = pTxBlk->pSrcBufHeader + LENGTH_802_3;
+	pTxBlk->SrcBufLen  -= LENGTH_802_3;
+
+	// skip vlan tag
+	if (bVLANPkt)
+	{
+		pTxBlk->pSrcBufData	+= LENGTH_802_1Q;
+		pTxBlk->SrcBufLen	-= LENGTH_802_1Q;
+	}
+
+	pHeaderBufPtr = &pTxBlk->HeaderBuf[TXINFO_SIZE + TXWI_SIZE];
+	pHeader_802_11 = (HEADER_802_11 *) pHeaderBufPtr;
+
+	// skip common header
+	pHeaderBufPtr += pTxBlk->MpduHeaderLen;
+
+	if (TX_BLK_TEST_FLAG(pTxBlk, fTX_bWMM))
+	{
+		//
+		// build QOS Control bytes
+		// 
+		*(pHeaderBufPtr) = ((pTxBlk->UserPriority & 0x0F) | (pAd->CommonCfg.AckPolicy[pTxBlk->QueIdx]<<5));
+		*(pHeaderBufPtr+1) = 0;
+		pHeaderBufPtr +=2;
+		pTxBlk->MpduHeaderLen += 2;
+	}
+
+	// The remaining content of MPDU header should locate at 4-octets aligment	
+	pTxBlk->HdrPadLen = (ULONG)pHeaderBufPtr;
+	pHeaderBufPtr = (PUCHAR) ROUND_UP(pHeaderBufPtr, 4);
+	pTxBlk->HdrPadLen = (ULONG)(pHeaderBufPtr - pTxBlk->HdrPadLen);
+
+#ifdef SOFT_ENCRYPT
+	if (TX_BLK_TEST_FLAG(pTxBlk, fTX_bSwEncrypt))
+	{			
+		UCHAR	iv_offset = 0, ext_offset = 0;
+	
+	   	// if original Ethernet frame contains no LLC/SNAP, 
+		// then an extra LLC/SNAP encap is required 
+		EXTRA_LLCSNAP_ENCAP_FROM_PKT_OFFSET(pTxBlk->pSrcBufData - 2, pTxBlk->pExtraLlcSnapEncap);
+		
+		// Insert LLC-SNAP encapsulation (8 octets) to MPDU data buffer	
+		if (pTxBlk->pExtraLlcSnapEncap)
+		{
+			// Reserve the front 8 bytes of data for LLC header 
+			pTxBlk->pSrcBufData -= LENGTH_802_1_H;
+			pTxBlk->SrcBufLen  += LENGTH_802_1_H;
+
+			NdisMoveMemory(pTxBlk->pSrcBufData, pTxBlk->pExtraLlcSnapEncap, 6);					
+		}	
+						
+		/* Construct and insert specific IV header to MPDU header */
+		RTMPSoftConstructIVHdr(pTxBlk->CipherAlg, 
+							   pTxBlk->KeyIdx, 
+							   pTxBlk->pKey->TxTsc,
+							   pHeaderBufPtr, 
+							   &iv_offset);
+		pHeaderBufPtr += iv_offset;
+		pTxBlk->MpduHeaderLen += iv_offset;
+
+		/* Encrypt the MPDU data by software */
+		RTMPSoftEncryptionAction(pAd, 
+								 pTxBlk->CipherAlg, 
+								 (PUCHAR)pHeader_802_11, 
+								pTxBlk->pSrcBufData, 
+								pTxBlk->SrcBufLen, 
+								pTxBlk->KeyIdx,
+								   pTxBlk->pKey,
+								 &ext_offset);
+		pTxBlk->SrcBufLen += ext_offset;
+		pTxBlk->TotalFrameLen += ext_offset;
+					
+	}
+	else
+#endif // SOFT_ENCRYPT //
+	{
+
+		//
+		// Insert LLC-SNAP encapsulation - 8 octets
+		// 
+		//
+   		// if original Ethernet frame contains no LLC/SNAP, 
+		// then an extra LLC/SNAP encap is required 
+		//
+		EXTRA_LLCSNAP_ENCAP_FROM_PKT_START(pTxBlk->pSrcBufHeader, pTxBlk->pExtraLlcSnapEncap);
+		if (pTxBlk->pExtraLlcSnapEncap)
+		{
+			UCHAR vlan_size;
+	
+			NdisMoveMemory(pHeaderBufPtr, pTxBlk->pExtraLlcSnapEncap, 6);
+			pHeaderBufPtr += 6;
+			// skip vlan tag
+			vlan_size =  (bVLANPkt) ? LENGTH_802_1Q : 0;
+			// get 2 octets (TypeofLen)
+			NdisMoveMemory(pHeaderBufPtr, pTxBlk->pSrcBufHeader+12+vlan_size, 2);
+			pHeaderBufPtr += 2;
+			pTxBlk->MpduHeaderLen += LENGTH_802_1_H;
+		}
+
+	}
+
+	//
+	// prepare for TXWI
+	// use Wcid as Key Index
+	//
+
+	RTMPWriteTxWI_Data(pAd, (PTXWI_STRUC)(&pTxBlk->HeaderBuf[TXINFO_SIZE]), pTxBlk);
+
+	//FreeNumber = GET_TXRING_FREENO(pAd, QueIdx);
+
+	HAL_WriteTxResource(pAd, pTxBlk, TRUE, &FreeNumber);
+	
+	pAd->RalinkCounters.KickTxCount++;
+	pAd->RalinkCounters.OneSecTxDoneCount++;
+
+	//
+	// Kick out Tx
+	// 
+#ifdef PCIE_PS_SUPPORT
+	if (!RTMP_TEST_PSFLAG(pAd, fRTMP_PS_DISABLE_TX))
+#endif // PCIE_PS_SUPPORT //
+	HAL_KickOutTx(pAd, pTxBlk, pTxBlk->QueIdx);
+}
+
+
+VOID STA_ARalink_Frame_Tx(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	TX_BLK			*pTxBlk)
+{
+	PUCHAR			pHeaderBufPtr;
+	USHORT			FreeNumber;
+	USHORT			totalMPDUSize=0;
+	USHORT			FirstTx, LastTxIdx;
+	int 			frameNum = 0;
+	BOOLEAN			bVLANPkt;
+	PQUEUE_ENTRY	pQEntry;
+
+
+	ASSERT(pTxBlk);
+	
+	ASSERT((pTxBlk->TxPacketList.Number== 2));
+
+
+	FirstTx = LastTxIdx = 0;  // Is it ok init they as 0?
+	while(pTxBlk->TxPacketList.Head)
+	{
+		pQEntry = RemoveHeadQueue(&pTxBlk->TxPacketList);
+		pTxBlk->pPacket = QUEUE_ENTRY_TO_PACKET(pQEntry);
+		
+		if (RTMP_FillTxBlkInfo(pAd, pTxBlk) != TRUE)
+		{
+			RELEASE_NDIS_PACKET(pAd, pTxBlk->pPacket, NDIS_STATUS_FAILURE);
+			continue;
+		}
+		
+		bVLANPkt = (RTMP_GET_PACKET_VLAN(pTxBlk->pPacket) ? TRUE : FALSE);
+		
+		// skip 802.3 header
+		pTxBlk->pSrcBufData = pTxBlk->pSrcBufHeader + LENGTH_802_3;
+		pTxBlk->SrcBufLen  -= LENGTH_802_3;
+
+		// skip vlan tag
+		if (bVLANPkt)
+		{
+			pTxBlk->pSrcBufData	+= LENGTH_802_1Q;
+			pTxBlk->SrcBufLen	-= LENGTH_802_1Q;
+		}
+		
+		if (frameNum == 0)
+		{	// For first frame, we need to create the 802.11 header + padding(optional) + RA-AGG-LEN + SNAP Header
+		
+			pHeaderBufPtr = STA_Build_ARalink_Frame_Header(pAd, pTxBlk);
+			
+			// It's ok write the TxWI here, because the TxWI->MPDUtotalByteCount 
+			//	will be updated after final frame was handled.
+			RTMPWriteTxWI_Data(pAd, (PTXWI_STRUC)(&pTxBlk->HeaderBuf[TXINFO_SIZE]), pTxBlk);
+
+
+			//
+			// Insert LLC-SNAP encapsulation - 8 octets
+			// 
+			EXTRA_LLCSNAP_ENCAP_FROM_PKT_OFFSET(pTxBlk->pSrcBufData-2, pTxBlk->pExtraLlcSnapEncap);
+
+			if (pTxBlk->pExtraLlcSnapEncap)
+			{
+				NdisMoveMemory(pHeaderBufPtr, pTxBlk->pExtraLlcSnapEncap, 6);
+				pHeaderBufPtr += 6;
+				// get 2 octets (TypeofLen)
+				NdisMoveMemory(pHeaderBufPtr, pTxBlk->pSrcBufData-2, 2);
+				pHeaderBufPtr += 2;
+				pTxBlk->MpduHeaderLen += LENGTH_802_1_H;
+			}
+		}
+		else
+		{	// For second aggregated frame, we need create the 802.3 header to headerBuf, because PCI will copy it to SDPtr0.
+		
+			pHeaderBufPtr = &pTxBlk->HeaderBuf[0];
+			pTxBlk->MpduHeaderLen = 0;
+			
+			// A-Ralink sub-sequent frame header is the same as 802.3 header.
+			//   DA(6)+SA(6)+FrameType(2)
+			NdisMoveMemory(pHeaderBufPtr, pTxBlk->pSrcBufHeader, 12);
+			pHeaderBufPtr += 12;
+			// get 2 octets (TypeofLen)
+			NdisMoveMemory(pHeaderBufPtr, pTxBlk->pSrcBufData-2, 2);
+			pHeaderBufPtr += 2;
+			pTxBlk->MpduHeaderLen = LENGTH_ARALINK_SUBFRAMEHEAD;
+		}
+
+		totalMPDUSize += pTxBlk->MpduHeaderLen + pTxBlk->SrcBufLen;
+		
+		//FreeNumber = GET_TXRING_FREENO(pAd, QueIdx);
+		if (frameNum ==0)
+			FirstTx = HAL_WriteMultiTxResource(pAd, pTxBlk, frameNum, &FreeNumber);
+		else
+			LastTxIdx = HAL_WriteMultiTxResource(pAd, pTxBlk, frameNum, &FreeNumber);
+
+		frameNum++;
+		
+		pAd->RalinkCounters.OneSecTxAggregationCount++;
+		pAd->RalinkCounters.KickTxCount++;
+		pAd->RalinkCounters.OneSecTxDoneCount++;
+		
+	}
+
+	HAL_FinalWriteTxResource(pAd, pTxBlk, totalMPDUSize, FirstTx);
+	HAL_LastTxIdx(pAd, pTxBlk->QueIdx, LastTxIdx);
+
+	//
+	// Kick out Tx
+	// 
+#ifdef PCIE_PS_SUPPORT
+	if (!RTMP_TEST_PSFLAG(pAd, fRTMP_PS_DISABLE_TX))
+#endif // PCIE_PS_SUPPORT //
+	HAL_KickOutTx(pAd, pTxBlk, pTxBlk->QueIdx);
+
+}
+
+
+VOID STA_Fragment_Frame_Tx(
+	IN RTMP_ADAPTER *pAd,
+	IN TX_BLK		*pTxBlk)
+{
+	HEADER_802_11	*pHeader_802_11;
+	PUCHAR			pHeaderBufPtr;
+	USHORT			FreeNumber;
+	UCHAR 			fragNum = 0;
+	PACKET_INFO		PacketInfo;
+	USHORT			EncryptionOverhead = 0;	
+	UINT32			FreeMpduSize, SrcRemainingBytes;
+	USHORT			AckDuration;
+	UINT 			NextMpduSize;
+	BOOLEAN			bVLANPkt;
+	PQUEUE_ENTRY	pQEntry;
+	HTTRANSMIT_SETTING	*pTransmit;
+#ifdef SOFT_ENCRYPT
+	PUCHAR			tmp_ptr = NULL;
+	UINT32			buf_offset = 0;
+#endif // SOFT_ENCRYPT //
+	
+	
+	ASSERT(pTxBlk);
+
+	pQEntry = RemoveHeadQueue(&pTxBlk->TxPacketList);
+	pTxBlk->pPacket = QUEUE_ENTRY_TO_PACKET(pQEntry);
+	if (RTMP_FillTxBlkInfo(pAd, pTxBlk) != TRUE)
+	{
+		RELEASE_NDIS_PACKET(pAd, pTxBlk->pPacket, NDIS_STATUS_FAILURE);
+		return;
+	}
+
+	ASSERT(TX_BLK_TEST_FLAG(pTxBlk, fTX_bAllowFrag));
+	bVLANPkt = (RTMP_GET_PACKET_VLAN(pTxBlk->pPacket) ? TRUE : FALSE);
+	
+	STAFindCipherAlgorithm(pAd, pTxBlk);
+	STABuildCommon802_11Header(pAd, pTxBlk);
+	
+#ifdef SOFT_ENCRYPT
+	// Check if the original data has enough buffer 
+	// to insert or append extended field.
+	if (TX_BLK_TEST_FLAG(pTxBlk, fTX_bSwEncrypt))
+	{		
+		if (RTMPExpandPacketForSwEncrypt(pAd, pTxBlk) == FALSE)
+		{
+			RELEASE_NDIS_PACKET(pAd, pTxBlk->pPacket, NDIS_STATUS_FAILURE);
+			return;
+		}	
+	}
+#endif // SOFT_ENCRYPT //
+	
+	if (pTxBlk->CipherAlg == CIPHER_TKIP)
+	{
+		pTxBlk->pPacket = duplicate_pkt_with_TKIP_MIC(pAd, pTxBlk->pPacket);
+		if (pTxBlk->pPacket == NULL)
+			return;
+		RTMP_QueryPacketInfo(pTxBlk->pPacket, &PacketInfo, &pTxBlk->pSrcBufHeader, &pTxBlk->SrcBufLen);
+	}
+
+	// skip 802.3 header
+	pTxBlk->pSrcBufData = pTxBlk->pSrcBufHeader + LENGTH_802_3;
+	pTxBlk->SrcBufLen  -= LENGTH_802_3;
+
+
+	// skip vlan tag
+	if (bVLANPkt)
+	{
+		pTxBlk->pSrcBufData	+= LENGTH_802_1Q;
+		pTxBlk->SrcBufLen	-= LENGTH_802_1Q;
+	}
+
+	pHeaderBufPtr = &pTxBlk->HeaderBuf[TXINFO_SIZE + TXWI_SIZE];
+	pHeader_802_11 = (HEADER_802_11 *)pHeaderBufPtr;
+
+
+	// skip common header
+	pHeaderBufPtr += pTxBlk->MpduHeaderLen;
+
+	if (TX_BLK_TEST_FLAG(pTxBlk, fTX_bWMM))
+	{
+		//
+		// build QOS Control bytes
+		// 
+		*pHeaderBufPtr = (pTxBlk->UserPriority & 0x0F);
+
+		*(pHeaderBufPtr+1) = 0;
+		pHeaderBufPtr +=2;
+		pTxBlk->MpduHeaderLen += 2;
+	}
+
+	//
+	// padding at front of LLC header
+	// LLC header should locate at 4-octets aligment
+	// 
+	pTxBlk->HdrPadLen = (ULONG)pHeaderBufPtr;
+	pHeaderBufPtr = (PUCHAR) ROUND_UP(pHeaderBufPtr, 4);
+	pTxBlk->HdrPadLen = (ULONG)(pHeaderBufPtr - pTxBlk->HdrPadLen);
+
+#ifdef SOFT_ENCRYPT
+	if (TX_BLK_TEST_FLAG(pTxBlk, fTX_bSwEncrypt))
+	{				
+		UCHAR	iv_offset = 0;
+	
+		// if original Ethernet frame contains no LLC/SNAP, 
+		// then an extra LLC/SNAP encap is required 	 	
+		EXTRA_LLCSNAP_ENCAP_FROM_PKT_OFFSET(pTxBlk->pSrcBufData - 2, pTxBlk->pExtraLlcSnapEncap);
+		
+		// Insert LLC-SNAP encapsulation (8 octets) to MPDU data buffer	
+		if (pTxBlk->pExtraLlcSnapEncap)
+		{
+			// Reserve the front 8 bytes of data for LLC header 
+			pTxBlk->pSrcBufData -= LENGTH_802_1_H;
+			pTxBlk->SrcBufLen  += LENGTH_802_1_H;
+
+			NdisMoveMemory(pTxBlk->pSrcBufData, pTxBlk->pExtraLlcSnapEncap, 6);					
+		}	
+			
+		/* Construct and insert specific IV header to MPDU header */
+		RTMPSoftConstructIVHdr(pTxBlk->CipherAlg, 
+							   pTxBlk->KeyIdx, 
+							   pTxBlk->pKey->TxTsc, 
+							   pHeaderBufPtr, 
+							   &iv_offset);
+		pHeaderBufPtr += iv_offset;
+		pTxBlk->MpduHeaderLen += iv_offset;
+			
+	}
+	else
+#endif // SOFT_ENCRYPT //
+	{
+
+
+		//
+		// Insert LLC-SNAP encapsulation - 8 octets
+		// 
+		//
+   		// if original Ethernet frame contains no LLC/SNAP, 
+		// then an extra LLC/SNAP encap is required 
+		// 
+		EXTRA_LLCSNAP_ENCAP_FROM_PKT_START(pTxBlk->pSrcBufHeader, pTxBlk->pExtraLlcSnapEncap);
+		if (pTxBlk->pExtraLlcSnapEncap)
+		{
+			UCHAR vlan_size;
+	
+			NdisMoveMemory(pHeaderBufPtr, pTxBlk->pExtraLlcSnapEncap, 6);
+			pHeaderBufPtr += 6;
+			// skip vlan tag
+			vlan_size =  (bVLANPkt) ? LENGTH_802_1Q : 0;
+			// get 2 octets (TypeofLen)
+			NdisMoveMemory(pHeaderBufPtr, pTxBlk->pSrcBufHeader+12+vlan_size, 2);
+			pHeaderBufPtr += 2;
+			pTxBlk->MpduHeaderLen += LENGTH_802_1_H;
+		}
+	}
+	
+	// If TKIP is used and fragmentation is required. Driver has to
+	//	append TKIP MIC at tail of the scatter buffer
+	//	MAC ASIC will only perform IV/EIV/ICV insertion but no TKIP MIC
+	if (pTxBlk->CipherAlg == CIPHER_TKIP)
+	{
+		RTMPCalculateMICValue(pAd, pTxBlk->pPacket, pTxBlk->pExtraLlcSnapEncap, pTxBlk->pKey, 0);
+
+		// NOTE: DON'T refer the skb->len directly after following copy. Becasue the length is not adjust
+		//			to correct lenght, refer to pTxBlk->SrcBufLen for the packet length in following progress.
+		NdisMoveMemory(pTxBlk->pSrcBufData + pTxBlk->SrcBufLen, &pAd->PrivateInfo.Tx.MIC[0], 8);
+		//skb_put((RTPKT_TO_OSPKT(pTxBlk->pPacket))->tail, 8);
+		pTxBlk->SrcBufLen += 8;
+		pTxBlk->TotalFrameLen += 8;
+	}
+
+	//
+	// calcuate the overhead bytes that encryption algorithm may add. This
+	// affects the calculate of "duration" field
+	//
+	if ((pTxBlk->CipherAlg == CIPHER_WEP64) || (pTxBlk->CipherAlg == CIPHER_WEP128)) 
+		EncryptionOverhead = 8; //WEP: IV[4] + ICV[4];
+	else if (pTxBlk->CipherAlg == CIPHER_TKIP)
+		EncryptionOverhead = 12;//TKIP: IV[4] + EIV[4] + ICV[4], MIC will be added to TotalPacketLength
+	else if (pTxBlk->CipherAlg == CIPHER_AES)
+		EncryptionOverhead = 16;	// AES: IV[4] + EIV[4] + MIC[8]
+	else
+		EncryptionOverhead = 0;
+
+	pTransmit = pTxBlk->pTransmit;	
+	// Decide the TX rate
+	if (pTransmit->field.MODE == MODE_CCK)
+		pTxBlk->TxRate = pTransmit->field.MCS;
+	else if (pTransmit->field.MODE == MODE_OFDM)
+		pTxBlk->TxRate = pTransmit->field.MCS + RATE_FIRST_OFDM_RATE;
+	else
+		pTxBlk->TxRate = RATE_6_5;
+
+	// decide how much time an ACK/CTS frame will consume in the air
+	if (pTxBlk->TxRate <= RATE_LAST_OFDM_RATE)
+		AckDuration = RTMPCalcDuration(pAd, pAd->CommonCfg.ExpectedACKRate[pTxBlk->TxRate], 14);
+	else
+		AckDuration = RTMPCalcDuration(pAd, RATE_6_5, 14);
+
+	// Init the total payload length of this frame.
+	SrcRemainingBytes = pTxBlk->SrcBufLen;
+	
+	pTxBlk->TotalFragNum = 0xff;
+
+#ifdef SOFT_ENCRYPT
+	if (TX_BLK_TEST_FLAG(pTxBlk, fTX_bSwEncrypt))
+	{
+		// store the outgoing frame for calculating MIC per fragmented frame
+		os_alloc_mem(pAd, (PUCHAR *)&tmp_ptr, pTxBlk->SrcBufLen);
+		if (tmp_ptr == NULL)
+		{
+			DBGPRINT(RT_DEBUG_ERROR, ("!!!%s : no memory for SW MIC calculation !!!\n", 
+										__FUNCTION__));
+			RELEASE_NDIS_PACKET(pAd, pTxBlk->pPacket, NDIS_STATUS_FAILURE);
+			return;
+		}
+		NdisMoveMemory(tmp_ptr, pTxBlk->pSrcBufData, pTxBlk->SrcBufLen);
+	}
+#endif // SOFT_ENCRYPT //
+
+	do {
+
+		FreeMpduSize = pAd->CommonCfg.FragmentThreshold - LENGTH_CRC;
+
+		FreeMpduSize -= pTxBlk->MpduHeaderLen;
+
+		if (SrcRemainingBytes <= FreeMpduSize)
+		{	// this is the last or only fragment
+		
+			pTxBlk->SrcBufLen = SrcRemainingBytes;
+			
+			pHeader_802_11->FC.MoreFrag = 0;
+			pHeader_802_11->Duration = pAd->CommonCfg.Dsifs + AckDuration;
+			
+			// Indicate the lower layer that this's the last fragment.
+			pTxBlk->TotalFragNum = fragNum;
+		}
+		else
+		{	// more fragment is required
+
+			pTxBlk->SrcBufLen = FreeMpduSize;
+			
+			NextMpduSize = min(((UINT)SrcRemainingBytes - pTxBlk->SrcBufLen), ((UINT)pAd->CommonCfg.FragmentThreshold));
+			pHeader_802_11->FC.MoreFrag = 1;
+			pHeader_802_11->Duration = (3 * pAd->CommonCfg.Dsifs) + (2 * AckDuration) + RTMPCalcDuration(pAd, pTxBlk->TxRate, NextMpduSize + EncryptionOverhead);
+		}
+
+		//DBGPRINT(RT_DEBUG_INFO, ("!!!%s : Frag#%d !!!\n", __FUNCTION__, pHeader_802_11->Frag));
+
+		SrcRemainingBytes -= pTxBlk->SrcBufLen;
+
+		if (fragNum == 0)
+			pTxBlk->FrameGap = IFS_HTTXOP;
+		else
+			pTxBlk->FrameGap = IFS_SIFS;
+		
+#ifdef SOFT_ENCRYPT
+		if (TX_BLK_TEST_FLAG(pTxBlk, fTX_bSwEncrypt))
+		{
+			UCHAR	ext_offset = 0;
+		
+			NdisMoveMemory(pTxBlk->pSrcBufData, tmp_ptr + buf_offset, pTxBlk->SrcBufLen);
+			buf_offset += pTxBlk->SrcBufLen;
+
+			/* Encrypt the MPDU data by software */
+			RTMPSoftEncryptionAction(pAd, 
+									 pTxBlk->CipherAlg, 
+									 (PUCHAR)pHeader_802_11, 
+									pTxBlk->pSrcBufData, 
+									pTxBlk->SrcBufLen, 
+									pTxBlk->KeyIdx,
+									   pTxBlk->pKey,
+									 &ext_offset);
+			pTxBlk->SrcBufLen += ext_offset;
+			pTxBlk->TotalFrameLen += ext_offset;
+						
+		}	
+#endif // SOFT_ENCRYPT //
+		
+		RTMPWriteTxWI_Data(pAd, (PTXWI_STRUC)(&pTxBlk->HeaderBuf[TXINFO_SIZE]), pTxBlk);
+		
+		HAL_WriteFragTxResource(pAd, pTxBlk, fragNum, &FreeNumber);
+		
+		pAd->RalinkCounters.KickTxCount++;
+		pAd->RalinkCounters.OneSecTxDoneCount++;
+
+		// Update the frame number, remaining size of the NDIS packet payload.
+
+#ifdef SOFT_ENCRYPT
+		if (TX_BLK_TEST_FLAG(pTxBlk, fTX_bSwEncrypt))
+		{
+			if ((pTxBlk->CipherAlg == CIPHER_WEP64) || (pTxBlk->CipherAlg == CIPHER_WEP128))
+			{
+				inc_iv_byte(pTxBlk->pKey->TxTsc, LEN_WEP_TSC, 1);
+				/* Construct and insert 4-bytes WEP IV header to MPDU header */
+				RTMPConstructWEPIVHdr(pTxBlk->KeyIdx, pTxBlk->pKey->TxTsc, 
+										pHeaderBufPtr - (LEN_WEP_IV_HDR));
+			}
+			else if (pTxBlk->CipherAlg == CIPHER_TKIP)
+				;
+			else if (pTxBlk->CipherAlg == CIPHER_AES)
+			{
+				inc_iv_byte(pTxBlk->pKey->TxTsc, LEN_WPA_TSC, 1);
+				/* Construct and insert 8-bytes CCMP header to MPDU header */
+				RTMPConstructCCMPHdr(pTxBlk->KeyIdx, pTxBlk->pKey->TxTsc, 
+										pHeaderBufPtr - (LEN_CCMP_HDR));	
+			}					
+		}
+		else			
+#endif // SOFT_ENCRYPT //	
+		{
+			// space for 802.11 header.
+			if (fragNum == 0 && pTxBlk->pExtraLlcSnapEncap)
+				pTxBlk->MpduHeaderLen -= LENGTH_802_1_H;
+		}		
+		
+		fragNum++;
+		//SrcRemainingBytes -= pTxBlk->SrcBufLen;
+		pTxBlk->pSrcBufData += pTxBlk->SrcBufLen;
+		
+		pHeader_802_11->Frag++;	 // increase Frag #
+		
+	}while(SrcRemainingBytes > 0);
+
+#ifdef SOFT_ENCRYPT
+	if (tmp_ptr != NULL)
+		os_free_mem(pAd, tmp_ptr);
+#endif // SOFT_ENCRYPT //
+
+	//
+	// Kick out Tx
+	// 
+#ifdef PCIE_PS_SUPPORT
+	if (!RTMP_TEST_PSFLAG(pAd, fRTMP_PS_DISABLE_TX))
+#endif // PCIE_PS_SUPPORT //
+	HAL_KickOutTx(pAd, pTxBlk, pTxBlk->QueIdx);
+}
+
+
+#define RELEASE_FRAMES_OF_TXBLK(_pAd, _pTxBlk, _pQEntry, _Status) 										\
+		while(_pTxBlk->TxPacketList.Head)														\
+		{																						\
+			_pQEntry = RemoveHeadQueue(&_pTxBlk->TxPacketList);									\
+			RELEASE_NDIS_PACKET(_pAd, QUEUE_ENTRY_TO_PACKET(_pQEntry), _Status);	\
+		}
+
+
+/*
+	========================================================================
+
+	Routine Description:
+		Copy frame from waiting queue into relative ring buffer and set 
+	appropriate ASIC register to kick hardware encryption before really
+	sent out to air.
+		
+	Arguments:
+		pAd 	Pointer to our adapter
+		PNDIS_PACKET	Pointer to outgoing Ndis frame
+		NumberOfFrag	Number of fragment required
+		
+	Return Value:
+		None
+
+	IRQL = DISPATCH_LEVEL
+	
+	Note:
+	
+	========================================================================
+*/
+NDIS_STATUS STAHardTransmit(
+	IN PRTMP_ADAPTER	pAd,
+	IN TX_BLK 			*pTxBlk,
+	IN	UCHAR			QueIdx)
+{	
+	NDIS_PACKET		*pPacket;
+	PQUEUE_ENTRY	pQEntry;
+	
+	// ---------------------------------------------
+	// STEP 0. DO SANITY CHECK AND SOME EARLY PREPARATION.
+	// ---------------------------------------------	
+	//
+	ASSERT(pTxBlk->TxPacketList.Number);
+	if (pTxBlk->TxPacketList.Head == NULL)
+	{
+		DBGPRINT(RT_DEBUG_ERROR, ("pTxBlk->TotalFrameNum == %ld!\n", pTxBlk->TxPacketList.Number));
+		return NDIS_STATUS_FAILURE;
+	}
+
+	pPacket = QUEUE_ENTRY_TO_PACKET(pTxBlk->TxPacketList.Head);
+
+
+	// ------------------------------------------------------------------
+	// STEP 1. WAKE UP PHY
+	//		outgoing frame always wakeup PHY to prevent frame lost and 
+	//		turn off PSM bit to improve performance
+	// ------------------------------------------------------------------
+	// not to change PSM bit, just send this frame out?
+	if ((pAd->StaCfg.Psm == PWR_SAVE) && OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_DOZE))
+	{
+	    DBGPRINT_RAW(RT_DEBUG_INFO, ("AsicForceWakeup At HardTx\n"));
+#ifdef RTMP_MAC_PCI
+		AsicForceWakeup(pAd, TRUE);
+#endif // RTMP_MAC_PCI //
+	}
+	
+	// It should not change PSM bit, when APSD turn on.
+	if ((!(pAd->CommonCfg.bAPSDCapable && pAd->CommonCfg.APEdcaParm.bAPSDCapable) && (pAd->CommonCfg.bAPSDForcePowerSave == FALSE))
+		|| (RTMP_GET_PACKET_EAPOL(pTxBlk->pPacket))
+		|| (RTMP_GET_PACKET_WAI(pTxBlk->pPacket)))
+	{
+		if ((pAd->StaCfg.Psm == PWR_SAVE) &&
+            (pAd->StaCfg.WindowsPowerMode == Ndis802_11PowerModeFast_PSP))
+			RTMP_SET_PSM_BIT(pAd, PWR_ACTIVE);
+	}
+
+	switch (pTxBlk->TxFrameType)
+	{
+#ifdef DOT11_N_SUPPORT
+		case TX_AMPDU_FRAME:
+				STA_AMPDU_Frame_Tx(pAd, pTxBlk);
+			break;
+		case TX_AMSDU_FRAME:
+				STA_AMSDU_Frame_Tx(pAd, pTxBlk);
+			break;
+#endif // DOT11_N_SUPPORT //
+		case TX_LEGACY_FRAME:
+				STA_Legacy_Frame_Tx(pAd, pTxBlk);
+			break;
+		case TX_MCAST_FRAME:
+				STA_Legacy_Frame_Tx(pAd, pTxBlk);
+			break;
+		case TX_RALINK_FRAME:
+				STA_ARalink_Frame_Tx(pAd, pTxBlk);
+			break;
+		case TX_FRAG_FRAME:
+				STA_Fragment_Frame_Tx(pAd, pTxBlk);
+			break;
+		default:
+			{
+				// It should not happened!
+				DBGPRINT(RT_DEBUG_ERROR, ("Send a pacekt was not classified!! It should not happen!\n"));
+				while(pTxBlk->TxPacketList.Number)
+				{	
+					pQEntry = RemoveHeadQueue(&pTxBlk->TxPacketList);
+					pPacket = QUEUE_ENTRY_TO_PACKET(pQEntry);
+					if (pPacket)
+						RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_FAILURE);
+				}
+			}
+			break;
+	}
+
+	return (NDIS_STATUS_SUCCESS);
+	
+}
+
+ULONG  HashBytesPolynomial(UCHAR *value, unsigned int len)
+{
+   unsigned char *word = value;
+   unsigned int ret = 0; 
+   unsigned int i;	
+   
+   for(i=0; i < len; i++)
+   {
+	  int mod = i % 32;
+	  ret ^=(unsigned int) (word[i]) << mod;
+	  ret ^=(unsigned int) (word[i]) >> (32 - mod);
+   }
+   return ret;
+}
+
+VOID Sta_Announce_or_Forward_802_3_Packet(
+	IN	PRTMP_ADAPTER	pAd,
+	IN	PNDIS_PACKET	pPacket,
+	IN	UCHAR			FromWhichBSSID)
+{
+	if (TRUE
+		)
+	{
+		announce_802_3_packet(pAd, pPacket);
+	}
+	else
+	{
+		// release packet
+		RELEASE_NDIS_PACKET(pAd, pPacket, NDIS_STATUS_FAILURE);
+	}
+}
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/sanity.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/sanity.c
new file mode 100644
index 000000000..6ff216923
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/sanity.c
@@ -0,0 +1,335 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+	Module Name:
+	sanity.c
+
+	Abstract:
+
+	Revision History:
+	Who			When			What
+	--------	----------		----------------------------------------------
+	John Chang  2004-09-01      add WMM support
+*/
+#include "rt_config.h"
+
+extern UCHAR	CISCO_OUI[];
+
+extern UCHAR	WPA_OUI[];
+extern UCHAR	RSN_OUI[];
+extern UCHAR	WME_INFO_ELEM[];
+extern UCHAR	WME_PARM_ELEM[];
+extern UCHAR	Ccx2QosInfo[];
+extern UCHAR	RALINK_OUI[];
+extern UCHAR	BROADCOM_OUI[];
+
+/* 
+    ==========================================================================
+    Description:
+        MLME message sanity check
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+    ==========================================================================
+ */
+BOOLEAN MlmeStartReqSanity(
+    IN PRTMP_ADAPTER pAd, 
+    IN VOID *Msg, 
+    IN ULONG MsgLen, 
+    OUT CHAR Ssid[], 
+    OUT UCHAR *pSsidLen) 
+{
+    MLME_START_REQ_STRUCT *Info;
+
+    Info = (MLME_START_REQ_STRUCT *)(Msg);
+    
+    if (Info->SsidLen > MAX_LEN_OF_SSID)
+    {
+        DBGPRINT(RT_DEBUG_TRACE, ("MlmeStartReqSanity fail - wrong SSID length\n"));
+        return FALSE;
+    }
+
+    *pSsidLen = Info->SsidLen;
+    NdisMoveMemory(Ssid, Info->Ssid, *pSsidLen);
+
+    return TRUE;
+}
+
+/* 
+    ==========================================================================
+    Description:
+        MLME message sanity check
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+        
+    IRQL = DISPATCH_LEVEL
+
+    ==========================================================================
+ */
+BOOLEAN PeerAssocRspSanity(
+    IN PRTMP_ADAPTER pAd, 
+    IN VOID *pMsg, 
+    IN ULONG MsgLen, 
+    OUT PUCHAR pAddr2, 
+    OUT USHORT *pCapabilityInfo, 
+    OUT USHORT *pStatus, 
+    OUT USHORT *pAid, 
+    OUT UCHAR SupRate[], 
+    OUT UCHAR *pSupRateLen,
+    OUT UCHAR ExtRate[], 
+    OUT UCHAR *pExtRateLen,
+    OUT HT_CAPABILITY_IE		*pHtCapability,
+    OUT ADD_HT_INFO_IE		*pAddHtInfo,	// AP might use this additional ht info IE 
+    OUT UCHAR			*pHtCapabilityLen,
+    OUT UCHAR			*pAddHtInfoLen,
+    OUT UCHAR			*pNewExtChannelOffset,
+    OUT PEDCA_PARM pEdcaParm,
+    OUT EXT_CAP_INFO_ELEMENT *pExtCapInfo,
+    OUT UCHAR *pCkipFlag) 
+{
+    CHAR          IeType, *Ptr;
+    PFRAME_802_11 pFrame = (PFRAME_802_11)pMsg;
+    PEID_STRUCT   pEid;
+    ULONG         Length = 0;
+    
+	*pNewExtChannelOffset = 0xff;
+	*pHtCapabilityLen = 0;
+	*pAddHtInfoLen = 0;
+    COPY_MAC_ADDR(pAddr2, pFrame->Hdr.Addr2);
+    Ptr = (PCHAR)pFrame->Octet;
+    Length += LENGTH_802_11;
+        
+    NdisMoveMemory(pCapabilityInfo, &pFrame->Octet[0], 2);
+    Length += 2;
+    NdisMoveMemory(pStatus,         &pFrame->Octet[2], 2);
+    Length += 2;
+    *pCkipFlag = 0;
+    *pExtRateLen = 0;
+    pEdcaParm->bValid = FALSE;
+    
+    if (*pStatus != MLME_SUCCESS) 
+        return TRUE;
+    
+    NdisMoveMemory(pAid, &pFrame->Octet[4], 2);
+    Length += 2;
+        
+    // Aid already swaped byte order in RTMPFrameEndianChange() for big endian platform
+    *pAid = (*pAid) & 0x3fff; // AID is low 14-bit
+        
+    // -- get supported rates from payload and advance the pointer
+    IeType = pFrame->Octet[6];
+    *pSupRateLen = pFrame->Octet[7];
+    if ((IeType != IE_SUPP_RATES) || (*pSupRateLen > MAX_LEN_OF_SUPPORTED_RATES))
+    {
+        DBGPRINT(RT_DEBUG_TRACE, ("PeerAssocRspSanity fail - wrong SupportedRates IE\n"));
+        return FALSE;
+    } 
+    else 
+        NdisMoveMemory(SupRate, &pFrame->Octet[8], *pSupRateLen);
+
+
+    Length = Length + 2 + *pSupRateLen;
+
+    // many AP implement proprietary IEs in non-standard order, we'd better
+    // tolerate mis-ordered IEs to get best compatibility
+    pEid = (PEID_STRUCT) &pFrame->Octet[8 + (*pSupRateLen)];
+            
+    // get variable fields from payload and advance the pointer
+    while ((Length + 2 + pEid->Len) <= MsgLen)
+    {
+        switch (pEid->Eid)
+        {
+            case IE_EXT_SUPP_RATES:
+                if (pEid->Len <= MAX_LEN_OF_SUPPORTED_RATES)
+                {
+                    NdisMoveMemory(ExtRate, pEid->Octet, pEid->Len);
+                    *pExtRateLen = pEid->Len;
+                }
+                break;
+
+             case IE_HT_CAP:
+            case IE_HT_CAP2:
+			if (pEid->Len >= SIZE_HT_CAP_IE)  //Note: allow extension.!!
+			{
+				NdisMoveMemory(pHtCapability, pEid->Octet, SIZE_HT_CAP_IE);
+
+				*(USHORT *)(&pHtCapability->HtCapInfo) = cpu2le16(*(USHORT *)(&pHtCapability->HtCapInfo));
+				*(USHORT *)(&pHtCapability->ExtHtCapInfo) = cpu2le16(*(USHORT *)(&pHtCapability->ExtHtCapInfo));
+
+				*pHtCapabilityLen = SIZE_HT_CAP_IE;
+			}
+			else
+			{
+				DBGPRINT(RT_DEBUG_WARN, ("PeerAssocRspSanity - wrong IE_HT_CAP. \n"));
+			}
+				
+		break;
+#ifdef DOT11_N_SUPPORT
+            case IE_ADD_HT:
+            case IE_ADD_HT2:
+			if (pEid->Len >= sizeof(ADD_HT_INFO_IE))				
+			{
+				// This IE allows extension, but we can ignore extra bytes beyond our knowledge , so only
+				// copy first sizeof(ADD_HT_INFO_IE)
+				NdisMoveMemory(pAddHtInfo, pEid->Octet, sizeof(ADD_HT_INFO_IE));
+				
+				*(USHORT *)(&pAddHtInfo->AddHtInfo2) = cpu2le16(*(USHORT *)(&pAddHtInfo->AddHtInfo2));
+				*(USHORT *)(&pAddHtInfo->AddHtInfo3) = cpu2le16(*(USHORT *)(&pAddHtInfo->AddHtInfo3));
+
+				*pAddHtInfoLen = SIZE_ADD_HT_INFO_IE;
+			}
+			else
+			{
+				DBGPRINT(RT_DEBUG_WARN, ("PeerAssocRspSanity - wrong IE_ADD_HT. \n"));
+			}
+				
+		break;
+            case IE_SECONDARY_CH_OFFSET:
+			if (pEid->Len == 1)
+			{
+				*pNewExtChannelOffset = pEid->Octet[0];
+			}
+			else
+			{
+				DBGPRINT(RT_DEBUG_WARN, ("PeerAssocRspSanity - wrong IE_SECONDARY_CH_OFFSET. \n"));
+			}
+#endif // DOT11_N_SUPPORT //				
+		break;
+
+            case IE_VENDOR_SPECIFIC:
+                // handle WME PARAMTER ELEMENT
+                if (NdisEqualMemory(pEid->Octet, WME_PARM_ELEM, 6) && (pEid->Len == 24))
+                {
+                    PUCHAR ptr;
+                    int i;
+        
+                    // parsing EDCA parameters
+                    pEdcaParm->bValid          = TRUE;
+                    pEdcaParm->bQAck           = FALSE; // pEid->Octet[0] & 0x10;
+                    pEdcaParm->bQueueRequest   = FALSE; // pEid->Octet[0] & 0x20;
+                    pEdcaParm->bTxopRequest    = FALSE; // pEid->Octet[0] & 0x40;
+                    //pEdcaParm->bMoreDataAck    = FALSE; // pEid->Octet[0] & 0x80;
+                    pEdcaParm->EdcaUpdateCount = pEid->Octet[6] & 0x0f;
+                    pEdcaParm->bAPSDCapable    = (pEid->Octet[6] & 0x80) ? 1 : 0;
+                    ptr = (PUCHAR)&pEid->Octet[8];
+                    for (i=0; i<4; i++)
+                    {
+                        UCHAR aci = (*ptr & 0x60) >> 5; // b5~6 is AC INDEX
+                        pEdcaParm->bACM[aci]  = (((*ptr) & 0x10) == 0x10);   // b5 is ACM
+                        pEdcaParm->Aifsn[aci] = (*ptr) & 0x0f;               // b0~3 is AIFSN
+                        pEdcaParm->Cwmin[aci] = *(ptr+1) & 0x0f;             // b0~4 is Cwmin
+                        pEdcaParm->Cwmax[aci] = *(ptr+1) >> 4;               // b5~8 is Cwmax
+                        pEdcaParm->Txop[aci]  = *(ptr+2) + 256 * (*(ptr+3)); // in unit of 32-us
+                        ptr += 4; // point to next AC
+                    }
+                }
+                break;
+			case IE_EXT_CAPABILITY:
+				if (pEid->Len >= sizeof(EXT_CAP_INFO_ELEMENT))
+				{
+					NdisMoveMemory(pExtCapInfo, &pEid->Octet[0], 4);
+					DBGPRINT(RT_DEBUG_WARN, ("PeerAssocReqSanity - IE_EXT_CAPABILITY!\n"));
+				}
+				break;
+
+            default:
+                DBGPRINT(RT_DEBUG_TRACE, ("PeerAssocRspSanity - ignore unrecognized EID = %d\n", pEid->Eid));
+                break;
+        }
+                   
+        Length = Length + 2 + pEid->Len; 
+        pEid = (PEID_STRUCT)((UCHAR*)pEid + 2 + pEid->Len);        
+    }
+
+
+    return TRUE;
+}
+/* 
+    ==========================================================================
+    Description:
+        
+	IRQL = DISPATCH_LEVEL
+
+    ==========================================================================
+ */
+BOOLEAN GetTimBit(
+    IN CHAR *Ptr, 
+    IN USHORT Aid, 
+    OUT UCHAR *TimLen, 
+    OUT UCHAR *BcastFlag, 
+    OUT UCHAR *DtimCount, 
+    OUT UCHAR *DtimPeriod,
+    OUT UCHAR *MessageToMe) 
+{
+    UCHAR          BitCntl, N1, N2, MyByte, MyBit;
+    CHAR          *IdxPtr;
+
+    IdxPtr = Ptr;
+    
+    IdxPtr ++;
+    *TimLen = *IdxPtr;
+    
+    // get DTIM Count from TIM element
+    IdxPtr ++;
+    *DtimCount = *IdxPtr;
+    
+    // get DTIM Period from TIM element
+    IdxPtr++;
+    *DtimPeriod = *IdxPtr;
+        
+    // get Bitmap Control from TIM element
+    IdxPtr++;
+    BitCntl = *IdxPtr;
+
+    if ((*DtimCount == 0) && (BitCntl & 0x01)) 
+        *BcastFlag = TRUE;
+    else 
+        *BcastFlag = FALSE;
+    
+    // Parse Partial Virtual Bitmap from TIM element
+    N1 = BitCntl & 0xfe;    // N1 is the first bitmap byte#
+    N2 = *TimLen - 4 + N1;  // N2 is the last bitmap byte#
+    
+    if ((Aid < (N1 << 3)) || (Aid >= ((N2 + 1) << 3)))
+        *MessageToMe = FALSE;
+    else
+    {
+        MyByte = (Aid >> 3) - N1;                       // my byte position in the bitmap byte-stream
+        MyBit = Aid % 16 - ((MyByte & 0x01)? 8:0);
+
+        IdxPtr += (MyByte + 1);
+
+        //if (*IdxPtr)
+        //    DBGPRINT(RT_DEBUG_WARN, ("TIM bitmap = 0x%02x\n", *IdxPtr));
+            
+        if (*IdxPtr & (0x01 << MyBit))
+            *MessageToMe = TRUE;
+        else 
+            *MessageToMe = FALSE;
+    }
+
+    return TRUE;
+}
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/sta_cfg.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/sta_cfg.c
new file mode 100644
index 000000000..b9164245b
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/sta_cfg.c
@@ -0,0 +1,1679 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+    Module Name:
+    sta_ioctl.c
+
+    Abstract:
+    IOCTL related subroutines
+
+    Revision History:
+    Who         When          What
+    --------    ----------    ----------------------------------------------
+    Rory Chen   01-03-2003    created
+	Rory Chen   02-14-2005    modify to support RT61
+*/
+
+#include	"rt_config.h"
+
+
+
+INT Set_AutoReconnect_Proc(
+    IN  PRTMP_ADAPTER	pAd, 
+    IN  PSTRING			arg);
+
+INT Set_AdhocN_Proc(
+    IN  PRTMP_ADAPTER	pAd, 
+    IN  PSTRING			arg);
+
+char * rtstrchr(const char * s, int c)
+{
+    for(; *s != (char) c; ++s)
+        if (*s == '\0')
+            return NULL;
+    return (char *) s;
+}
+
+static struct {
+	PSTRING name;
+	INT (*set_proc)(PRTMP_ADAPTER pAdapter, PSTRING arg);
+} *PRTMP_PRIVATE_SET_PROC, RTMP_PRIVATE_SUPPORT_PROC[] = {
+	{"DriverVersion",				Set_DriverVersion_Proc},
+	{"CountryRegion",				Set_CountryRegion_Proc},	
+	{"CountryRegionABand",			Set_CountryRegionABand_Proc},      
+	{"SSID",						Set_SSID_Proc}, 
+	{"WirelessMode",				Set_WirelessMode_Proc},       
+	{"TxBurst",					Set_TxBurst_Proc},
+	{"TxPreamble",				Set_TxPreamble_Proc},
+	{"TxPower",					Set_TxPower_Proc},
+	{"Channel",					Set_Channel_Proc},            
+	{"BGProtection",				Set_BGProtection_Proc},
+	{"RTSThreshold",				Set_RTSThreshold_Proc},       
+	{"FragThreshold",				Set_FragThreshold_Proc},      
+#ifdef DOT11_N_SUPPORT
+	{"HtBw",		                Set_HtBw_Proc},
+	{"HtMcs",		                Set_HtMcs_Proc},
+	{"HtGi",		                Set_HtGi_Proc},
+	{"HtOpMode",		            Set_HtOpMode_Proc},
+	{"HtExtcha",		            Set_HtExtcha_Proc},
+	{"HtMpduDensity",		        Set_HtMpduDensity_Proc},
+	{"HtBaWinSize",		        	Set_HtBaWinSize_Proc},
+	{"HtRdg",		        		Set_HtRdg_Proc},
+	{"HtAmsdu",		        		Set_HtAmsdu_Proc},
+	{"HtAutoBa",		        	Set_HtAutoBa_Proc},
+	{"HtBaDecline",					Set_BADecline_Proc},
+	{"HtProtect",		        	Set_HtProtect_Proc},
+	{"HtMimoPs",		        	Set_HtMimoPs_Proc},
+	{"HtDisallowTKIP",				Set_HtDisallowTKIP_Proc},
+#ifdef DOT11N_DRAFT3
+	{"HtBssCoex",				Set_HT_BssCoex_Proc},
+#endif // DOT11N_DRAFT3 //
+#endif // DOT11_N_SUPPORT //
+	
+#ifdef AGGREGATION_SUPPORT
+	{"PktAggregate",				Set_PktAggregate_Proc},       
+#endif // AGGREGATION_SUPPORT //
+
+#ifdef WMM_SUPPORT
+	{"WmmCapable",					Set_WmmCapable_Proc},         
+#endif         
+	{"IEEE80211H",					Set_IEEE80211H_Proc},
+    {"NetworkType",                 Set_NetworkType_Proc},        
+	{"AuthMode",					Set_AuthMode_Proc},           
+	{"EncrypType",					Set_EncrypType_Proc},         
+	{"DefaultKeyID",				Set_DefaultKeyID_Proc},       
+	{"Key1",						Set_Key1_Proc},               
+	{"Key2",						Set_Key2_Proc},               
+	{"Key3",						Set_Key3_Proc},               
+	{"Key4",						Set_Key4_Proc},               
+	{"WPAPSK",						Set_WPAPSK_Proc},
+	{"ResetCounter",				Set_ResetStatCounter_Proc},
+	{"PSMode",                      Set_PSMode_Proc},
+#ifdef DBG
+	{"Debug",						Set_Debug_Proc},             
+#endif // DBG //
+
+#ifdef RALINK_ATE
+	{"ATE",							Set_ATE_Proc},
+	{"ATEDA",						Set_ATE_DA_Proc},
+	{"ATESA",						Set_ATE_SA_Proc},
+	{"ATEBSSID",					Set_ATE_BSSID_Proc},
+	{"ATECHANNEL",					Set_ATE_CHANNEL_Proc},
+	{"ATETXPOW0",					Set_ATE_TX_POWER0_Proc},
+	{"ATETXPOW1",					Set_ATE_TX_POWER1_Proc},
+	{"ATETXANT",					Set_ATE_TX_Antenna_Proc},
+	{"ATERXANT",					Set_ATE_RX_Antenna_Proc},
+	{"ATETXFREQOFFSET",				Set_ATE_TX_FREQOFFSET_Proc},
+	{"ATETXBW",						Set_ATE_TX_BW_Proc},
+	{"ATETXLEN",					Set_ATE_TX_LENGTH_Proc},
+	{"ATETXCNT",					Set_ATE_TX_COUNT_Proc},
+	{"ATETXMCS",					Set_ATE_TX_MCS_Proc},
+	{"ATETXMODE",					Set_ATE_TX_MODE_Proc},
+	{"ATETXGI",						Set_ATE_TX_GI_Proc},
+	{"ATERXFER",					Set_ATE_RX_FER_Proc},
+	{"ATERRF",						Set_ATE_Read_RF_Proc},
+#ifndef RTMP_RF_RW_SUPPORT
+	{"ATEWRF1",						Set_ATE_Write_RF1_Proc},
+	{"ATEWRF2",						Set_ATE_Write_RF2_Proc},
+	{"ATEWRF3",						Set_ATE_Write_RF3_Proc},
+	{"ATEWRF4",						Set_ATE_Write_RF4_Proc},
+#endif // RTMP_RF_RW_SUPPORT //
+	{"ATELDE2P",				    Set_ATE_Load_E2P_Proc},
+	{"ATERE2P",						Set_ATE_Read_E2P_Proc},
+#ifdef RT35xx
+	{"ATELED",						Set_ATE_LED_Proc},
+	{"ATEHWLED",					Set_ATE_HW_LED_Proc},
+#endif // RT35xx //
+	{"ATESHOW",						Set_ATE_Show_Proc},
+	{"ATEHELP",						Set_ATE_Help_Proc},
+
+#ifdef RALINK_28xx_QA
+	{"TxStop",						Set_TxStop_Proc},
+	{"RxStop",						Set_RxStop_Proc},	
+#endif // RALINK_28xx_QA //
+#endif // RALINK_ATE //
+
+#ifdef WPA_SUPPLICANT_SUPPORT
+    {"WpaSupport",                  Set_Wpa_Support},
+#endif // WPA_SUPPLICANT_SUPPORT //
+
+
+
+
+
+	{"FixedTxMode",                 Set_FixedTxMode_Proc},
+#ifdef CONFIG_APSTA_MIXED_SUPPORT
+	{"OpMode",						Set_OpMode_Proc},
+#endif // CONFIG_APSTA_MIXED_SUPPORT //
+#ifdef DOT11_N_SUPPORT
+    {"TGnWifiTest",                 Set_TGnWifiTest_Proc},
+    {"ForceGF",		        		Set_ForceGF_Proc},
+#endif // DOT11_N_SUPPORT //
+#ifdef QOS_DLS_SUPPORT
+	{"DlsAddEntry",					Set_DlsAddEntry_Proc},
+	{"DlsTearDownEntry",			Set_DlsTearDownEntry_Proc},
+#endif // QOS_DLS_SUPPORT //
+	{"LongRetry",	        		Set_LongRetryLimit_Proc},
+	{"ShortRetry",	        		Set_ShortRetryLimit_Proc},
+	{"AutoFallBack",	        	Set_AutoFallBack_Proc},
+#ifdef EXT_BUILD_CHANNEL_LIST
+	{"11dClientMode",				Set_Ieee80211dClientMode_Proc},
+#endif // EXT_BUILD_CHANNEL_LIST //
+#ifdef CARRIER_DETECTION_SUPPORT
+	{"CarrierDetect",				Set_CarrierDetect_Proc},
+#endif // CARRIER_DETECTION_SUPPORT //
+
+
+//2008/09/11:KH add to support efuse<--
+#ifdef RT30xx
+#ifdef RTMP_EFUSE_SUPPORT
+	{"efuseFreeNumber",				set_eFuseGetFreeBlockCount_Proc},
+	{"efuseDump",					set_eFusedump_Proc},
+	{"efuseLoadFromBin",				set_eFuseLoadFromBin_Proc},
+#ifdef RALINK_ATE
+	{"efuseBufferModeWriteBack",		set_eFuseBufferModeWriteBack_Proc},
+#endif // RALINK_ATE //
+#endif // RTMP_EFUSE_SUPPORT //
+#endif // RT30xx //
+//2008/09/11:KH add to support efuse-->
+	{"BeaconLostTime",				Set_BeaconLostTime_Proc},
+	{"AutoRoaming",					Set_AutoRoaming_Proc},
+	{"SiteSurvey",					Set_SiteSurvey_Proc},
+	{"ForceTxBurst",				Set_ForceTxBurst_Proc},
+#ifdef XLINK_SUPPORT
+	{"XlinkMode",					Set_XlinkMode_Proc},
+#endif // XLINK_SUPPORT //
+
+
+	{"AutoReconnect", 				Set_AutoReconnect_Proc},
+	{"AdhocN",						Set_AdhocN_Proc},
+	{NULL,}
+};
+
+
+int rt_ioctl_setparam(struct net_device *dev, struct iw_request_info *info,
+			 void *w, char *extra)
+{
+	PRTMP_ADAPTER pAdapter;
+	POS_COOKIE pObj;
+	PSTRING this_char = extra;
+	PSTRING value;
+	int  Status=0;
+
+	GET_PAD_FROM_NET_DEV(pAdapter, dev);
+
+	if (pAdapter == NULL)
+	{
+		/* if 1st open fail, pAd will be free;
+		   So the net_dev->priv will be NULL in 2rd open */
+		return -ENETDOWN;
+	}
+
+	pObj = (POS_COOKIE) pAdapter->OS_Cookie;
+	{
+		pObj->ioctl_if_type = INT_MAIN;
+        pObj->ioctl_if = MAIN_MBSSID;
+	}
+	
+	//check if the interface is down
+    	if(!RTMP_TEST_FLAG(pAdapter, fRTMP_ADAPTER_INTERRUPT_IN_USE))
+    	{
+      		DBGPRINT(RT_DEBUG_TRACE, ("INFO::Network is down!\n"));
+			return -ENETDOWN;
+    	}
+
+	if (!*this_char)
+		return -EINVAL;
+	                                                                                                                            
+	if ((value = rtstrchr(this_char, '=')) != NULL)                                                                             
+	    *value++ = 0;                                                                                                           
+	                                                                                                                            
+	if (!value && (strcmp(this_char, "SiteSurvey") != 0))                                                                                                      
+	    return -EINVAL;                                                                                                                  
+	else
+		goto SET_PROC;
+
+	// reject setting nothing besides ANY ssid(ssidLen=0)
+    if (!*value && (strcmp(this_char, "SSID") != 0))
+        return -EINVAL; 
+        
+SET_PROC:
+	for (PRTMP_PRIVATE_SET_PROC = RTMP_PRIVATE_SUPPORT_PROC; PRTMP_PRIVATE_SET_PROC->name; PRTMP_PRIVATE_SET_PROC++)            
+	{                                                                                                                           
+	    if (strcmp(this_char, PRTMP_PRIVATE_SET_PROC->name) == 0)                                                               
+	    {						                                                                                                
+	        if(!PRTMP_PRIVATE_SET_PROC->set_proc(pAdapter, value))                                                              
+	        {	//FALSE:Set private failed then return Invalid argument                                                         
+			    Status = -EINVAL;                                                                                               
+	        }                                                                                                                   
+		    break;	//Exit for loop.                                                                                        
+	    }                                                                                                                       
+	}                                                                                                                           
+	                                                                                                                            
+	if(PRTMP_PRIVATE_SET_PROC->name == NULL)                                                                                    
+	{  //Not found argument                                                                                                     
+	    Status = -EINVAL;                                                                                                       
+	    DBGPRINT(RT_DEBUG_TRACE, ("===>rt_ioctl_setparam:: (iwpriv) Not Support Set Command [%s=%s]\n", this_char, value));
+	}                                                                                                                           
+  
+    return Status;
+}
+
+
+/* 
+    ==========================================================================
+    Description:
+        Set SSID
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+    ==========================================================================
+*/
+INT Set_SSID_Proc(
+    IN  PRTMP_ADAPTER   pAd, 
+    IN  PSTRING          arg)
+{
+    NDIS_802_11_SSID                    Ssid, *pSsid=NULL;
+    BOOLEAN                             StateMachineTouched = FALSE;
+    int                                 success = TRUE;
+
+	/*
+		Set the AutoReconnectSsid to prevent it reconnect to old SSID
+		Since calling this indicate user don't want to connect to that SSID anymore.
+	*/
+	pAd->MlmeAux.AutoReconnectSsidLen= 32;
+	NdisZeroMemory(pAd->MlmeAux.AutoReconnectSsid, pAd->MlmeAux.AutoReconnectSsidLen);
+
+    if( strlen(arg) <= MAX_LEN_OF_SSID)
+    {
+        NdisZeroMemory(&Ssid, sizeof(NDIS_802_11_SSID));
+        if (strlen(arg) != 0)
+        {
+            NdisMoveMemory(Ssid.Ssid, arg, strlen(arg));
+            Ssid.SsidLength = strlen(arg);
+        }
+        else   //ANY ssid
+        {    
+            Ssid.SsidLength = 0; 
+	    	memcpy(Ssid.Ssid, "", 0);
+			pAd->StaCfg.BssType = BSS_INFRA;	
+			pAd->StaCfg.AuthMode = Ndis802_11AuthModeOpen;
+	        pAd->StaCfg.WepStatus  = Ndis802_11EncryptionDisabled;		    
+	}	 
+        pSsid = &Ssid;
+
+        if (pAd->Mlme.CntlMachine.CurrState != CNTL_IDLE)
+        {
+            RTMP_MLME_RESET_STATE_MACHINE(pAd);
+            DBGPRINT(RT_DEBUG_TRACE, ("!!! MLME busy, reset MLME state machine !!!\n"));
+        }
+
+		if ((pAd->StaCfg.WpaPassPhraseLen >= 8) &&
+			(pAd->StaCfg.WpaPassPhraseLen <= 64))
+		{
+			UCHAR keyMaterial[40];
+			
+			RTMPZeroMemory(pAd->StaCfg.PMK, 32);
+			if (pAd->StaCfg.WpaPassPhraseLen == 64)
+			{
+			    AtoH((PSTRING) pAd->StaCfg.WpaPassPhrase, pAd->StaCfg.PMK, 32);
+			}
+			else
+			{
+			    RtmpPasswordHash((PSTRING) pAd->StaCfg.WpaPassPhrase, Ssid.Ssid, Ssid.SsidLength, keyMaterial);
+			    NdisMoveMemory(pAd->StaCfg.PMK, keyMaterial, 32);		
+			}
+		}
+
+		// Record the desired user settings to MlmeAux
+		NdisZeroMemory(pAd->MlmeAux.Ssid, MAX_LEN_OF_SSID);
+		NdisMoveMemory(pAd->MlmeAux.Ssid, Ssid.Ssid, Ssid.SsidLength);
+		pAd->MlmeAux.SsidLen = (UCHAR)Ssid.SsidLength;
+
+        pAd->MlmeAux.CurrReqIsFromNdis = TRUE;
+        pAd->StaCfg.bScanReqIsFromWebUI = FALSE;
+		pAd->bConfigChanged = TRUE;
+
+        if (pAd->StaCfg.BssType == BSS_ADHOC)
+			pAd->StaCfg.bNotFirstScan = FALSE; 
+        
+
+        MlmeEnqueue(pAd, 
+                    MLME_CNTL_STATE_MACHINE, 
+                    OID_802_11_SSID,
+                    sizeof(NDIS_802_11_SSID),
+                    (VOID *)pSsid, 0);
+
+        StateMachineTouched = TRUE;
+        DBGPRINT(RT_DEBUG_TRACE, ("Set_SSID_Proc::(Len=%d,Ssid=%s)\n", Ssid.SsidLength, Ssid.Ssid));
+    }
+    else
+        success = FALSE;
+
+    if (StateMachineTouched) // Upper layer sent a MLME-related operations
+    	RTMP_MLME_HANDLER(pAd);
+
+    return success;
+}
+
+#ifdef WMM_SUPPORT
+/* 
+    ==========================================================================
+    Description:
+        Set WmmCapable Enable or Disable
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+    ==========================================================================
+*/
+INT	Set_WmmCapable_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	BOOLEAN	bWmmCapable;
+
+	bWmmCapable = simple_strtol(arg, 0, 10);
+
+	if ((bWmmCapable == 1)
+		)
+		pAd->CommonCfg.bWmmCapable = TRUE;
+	else if (bWmmCapable == 0)
+		pAd->CommonCfg.bWmmCapable = FALSE;
+	else
+		return FALSE;  //Invalid argument 
+	
+	DBGPRINT(RT_DEBUG_TRACE, ("Set_WmmCapable_Proc::(bWmmCapable=%d)\n", 
+		pAd->CommonCfg.bWmmCapable));
+
+	return TRUE;
+}
+#endif // WMM_SUPPORT //
+
+/* 
+    ==========================================================================
+    Description:
+        Set Network Type(Infrastructure/Adhoc mode)
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+    ==========================================================================
+*/
+INT Set_NetworkType_Proc(
+    IN  PRTMP_ADAPTER   pAd, 
+    IN  PSTRING          arg)
+{
+    UINT32	Value = 0;
+
+    if (strcmp(arg, "Adhoc") == 0)
+	{
+		if (pAd->StaCfg.BssType != BSS_ADHOC)
+		{				    
+			// Config has changed
+			pAd->bConfigChanged = TRUE;
+            if (MONITOR_ON(pAd))
+            {
+                RTMP_IO_WRITE32(pAd, RX_FILTR_CFG, STANORMAL);
+                RTMP_IO_READ32(pAd, MAC_SYS_CTRL, &Value);
+				Value &= (~0x80);
+				RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, Value);
+                OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED);
+                pAd->StaCfg.bAutoReconnect = TRUE;
+                LinkDown(pAd, FALSE);
+            }
+			if (INFRA_ON(pAd))
+			{
+				//BOOLEAN Cancelled;
+				// Set the AutoReconnectSsid to prevent it reconnect to old SSID
+				// Since calling this indicate user don't want to connect to that SSID anymore.
+				pAd->MlmeAux.AutoReconnectSsidLen= 32;
+				NdisZeroMemory(pAd->MlmeAux.AutoReconnectSsid, pAd->MlmeAux.AutoReconnectSsidLen);		
+				
+				LinkDown(pAd, FALSE);
+
+				DBGPRINT(RT_DEBUG_TRACE, ("NDIS_STATUS_MEDIA_DISCONNECT Event BB!\n"));
+			}
+		}			
+		pAd->StaCfg.BssType = BSS_ADHOC;
+        pAd->net_dev->type = pAd->StaCfg.OriDevType;
+		DBGPRINT(RT_DEBUG_TRACE, ("===>Set_NetworkType_Proc::(AD-HOC)\n"));
+	}
+    else if (strcmp(arg, "Infra") == 0)
+	{
+		if (pAd->StaCfg.BssType != BSS_INFRA)
+		{			    
+			// Config has changed
+			pAd->bConfigChanged = TRUE;
+            if (MONITOR_ON(pAd))
+            {
+                RTMP_IO_WRITE32(pAd, RX_FILTR_CFG, STANORMAL);
+                RTMP_IO_READ32(pAd, MAC_SYS_CTRL, &Value);
+				Value &= (~0x80);
+				RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, Value);
+                OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED);
+                pAd->StaCfg.bAutoReconnect = TRUE;
+                LinkDown(pAd, FALSE);
+            }
+			if (ADHOC_ON(pAd))
+			{
+				// Set the AutoReconnectSsid to prevent it reconnect to old SSID
+				// Since calling this indicate user don't want to connect to that SSID anymore.
+				pAd->MlmeAux.AutoReconnectSsidLen= 32;
+				NdisZeroMemory(pAd->MlmeAux.AutoReconnectSsid, pAd->MlmeAux.AutoReconnectSsidLen);			
+			
+				LinkDown(pAd, FALSE);
+			}
+		}			
+		pAd->StaCfg.BssType = BSS_INFRA;
+        pAd->net_dev->type = pAd->StaCfg.OriDevType;
+		DBGPRINT(RT_DEBUG_TRACE, ("===>Set_NetworkType_Proc::(INFRA)\n"));            
+	}
+    else if (strcmp(arg, "Monitor") == 0)
+    {
+			UCHAR	bbpValue = 0;
+			BCN_TIME_CFG_STRUC csr;
+			OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_INFRA_ON);
+            OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_ADHOC_ON);
+			OPSTATUS_SET_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED);
+			// disable all periodic state machine
+			pAd->StaCfg.bAutoReconnect = FALSE;
+			// reset all mlme state machine
+			RTMP_MLME_RESET_STATE_MACHINE(pAd);
+			DBGPRINT(RT_DEBUG_TRACE, ("fOP_STATUS_MEDIA_STATE_CONNECTED \n"));
+            if (pAd->CommonCfg.CentralChannel == 0)
+            {
+#ifdef DOT11_N_SUPPORT
+                if (pAd->CommonCfg.PhyMode == PHY_11AN_MIXED)
+                    pAd->CommonCfg.CentralChannel = 36;
+                else
+#endif // DOT11_N_SUPPORT //
+                    pAd->CommonCfg.CentralChannel = 6;
+            }
+#ifdef DOT11_N_SUPPORT
+            else
+                N_ChannelCheck(pAd);
+#endif // DOT11_N_SUPPORT //
+
+#ifdef DOT11_N_SUPPORT
+			if (pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED &&
+                pAd->CommonCfg.RegTransmitSetting.field.BW == BW_40 &&
+                pAd->CommonCfg.RegTransmitSetting.field.EXTCHA == EXTCHA_ABOVE)
+			{
+				// 40MHz ,control channel at lower
+				RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R4, &bbpValue);
+				bbpValue &= (~0x18);
+				bbpValue |= 0x10;
+				RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R4, bbpValue);
+				pAd->CommonCfg.BBPCurrentBW = BW_40;
+				//  RX : control channel at lower 
+				RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R3, &bbpValue);
+				bbpValue &= (~0x20);
+				RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R3, bbpValue);
+
+				RTMP_IO_READ32(pAd, TX_BAND_CFG, &Value);
+				Value &= 0xfffffffe;
+				RTMP_IO_WRITE32(pAd, TX_BAND_CFG, Value);
+				pAd->CommonCfg.CentralChannel = pAd->CommonCfg.Channel + 2;
+                AsicSwitchChannel(pAd, pAd->CommonCfg.CentralChannel, FALSE);
+			    AsicLockChannel(pAd, pAd->CommonCfg.CentralChannel);
+                DBGPRINT(RT_DEBUG_TRACE, ("BW_40 ,control_channel(%d), CentralChannel(%d) \n", 
+                                           pAd->CommonCfg.Channel,
+                                           pAd->CommonCfg.CentralChannel));
+			}
+			else if (pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED &&
+                     pAd->CommonCfg.RegTransmitSetting.field.BW == BW_40 &&
+                     pAd->CommonCfg.RegTransmitSetting.field.EXTCHA == EXTCHA_BELOW)
+			{
+				// 40MHz ,control channel at upper
+				RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R4, &bbpValue);
+				bbpValue &= (~0x18);
+				bbpValue |= 0x10;
+				RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R4, bbpValue);
+				pAd->CommonCfg.BBPCurrentBW = BW_40;
+				RTMP_IO_READ32(pAd, TX_BAND_CFG, &Value);
+				Value |= 0x1;
+				RTMP_IO_WRITE32(pAd, TX_BAND_CFG, Value);
+				
+				RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R3, &bbpValue);
+				bbpValue |= (0x20);
+				RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R3, bbpValue);
+				pAd->CommonCfg.CentralChannel = pAd->CommonCfg.Channel - 2;
+                AsicSwitchChannel(pAd, pAd->CommonCfg.CentralChannel, FALSE);
+			    AsicLockChannel(pAd, pAd->CommonCfg.CentralChannel);
+                DBGPRINT(RT_DEBUG_TRACE, ("BW_40 ,control_channel(%d), CentralChannel(%d) \n", 
+                                           pAd->CommonCfg.Channel,
+                                           pAd->CommonCfg.CentralChannel));
+			}
+			else
+#endif // DOT11_N_SUPPORT //
+			{
+				// 20MHz
+				RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R4, &bbpValue);
+				bbpValue &= (~0x18);
+				RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R4, bbpValue);
+				pAd->CommonCfg.BBPCurrentBW = BW_20;
+                AsicSwitchChannel(pAd, pAd->CommonCfg.Channel, FALSE);
+			    AsicLockChannel(pAd, pAd->CommonCfg.Channel);
+				DBGPRINT(RT_DEBUG_TRACE, ("BW_20, Channel(%d)\n", pAd->CommonCfg.Channel));
+			}
+			// Enable Rx with promiscuous reception
+			RTMP_IO_WRITE32(pAd, RX_FILTR_CFG, 0x3);
+			// ASIC supporsts sniffer function with replacing RSSI with timestamp.
+			//RTMP_IO_READ32(pAdapter, MAC_SYS_CTRL, &Value);
+			//Value |= (0x80);
+			//RTMP_IO_WRITE32(pAdapter, MAC_SYS_CTRL, Value);
+			// disable sync
+			RTMP_IO_READ32(pAd, BCN_TIME_CFG, &csr.word);
+			csr.field.bBeaconGen = 0;
+			csr.field.bTBTTEnable = 0;
+			csr.field.TsfSyncMode = 0;
+			RTMP_IO_WRITE32(pAd, BCN_TIME_CFG, csr.word);
+            
+			pAd->StaCfg.BssType = BSS_MONITOR;
+            pAd->net_dev->type = ARPHRD_IEEE80211_PRISM; //ARPHRD_IEEE80211; // IEEE80211
+			DBGPRINT(RT_DEBUG_TRACE, ("===>Set_NetworkType_Proc::(MONITOR)\n"));
+    }
+
+    // Reset Ralink supplicant to not use, it will be set to start when UI set PMK key
+    pAd->StaCfg.WpaState = SS_NOTUSE;
+
+    DBGPRINT(RT_DEBUG_TRACE, ("Set_NetworkType_Proc::(NetworkType=%d)\n", pAd->StaCfg.BssType));
+
+    return TRUE;
+}
+
+/* 
+    ==========================================================================
+    Description:
+        Set Authentication mode
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+    ==========================================================================
+*/
+INT Set_AuthMode_Proc(
+    IN  PRTMP_ADAPTER   pAd, 
+    IN  PSTRING          arg)
+{
+    if ((strcmp(arg, "WEPAUTO") == 0) || (strcmp(arg, "wepauto") == 0))
+        pAd->StaCfg.AuthMode = Ndis802_11AuthModeAutoSwitch;
+    else if ((strcmp(arg, "OPEN") == 0) || (strcmp(arg, "open") == 0))
+        pAd->StaCfg.AuthMode = Ndis802_11AuthModeOpen;
+    else if ((strcmp(arg, "SHARED") == 0) || (strcmp(arg, "shared") == 0))
+        pAd->StaCfg.AuthMode = Ndis802_11AuthModeShared;
+    else if ((strcmp(arg, "WPAPSK") == 0) || (strcmp(arg, "wpapsk") == 0))
+        pAd->StaCfg.AuthMode = Ndis802_11AuthModeWPAPSK;
+    else if ((strcmp(arg, "WPANONE") == 0) || (strcmp(arg, "wpanone") == 0))
+        pAd->StaCfg.AuthMode = Ndis802_11AuthModeWPANone;
+    else if ((strcmp(arg, "WPA2PSK") == 0) || (strcmp(arg, "wpa2psk") == 0))
+        pAd->StaCfg.AuthMode = Ndis802_11AuthModeWPA2PSK;    
+#ifdef WPA_SUPPLICANT_SUPPORT    
+    else if ((strcmp(arg, "WPA") == 0) || (strcmp(arg, "wpa") == 0))
+        pAd->StaCfg.AuthMode = Ndis802_11AuthModeWPA;    
+    else if ((strcmp(arg, "WPA2") == 0) || (strcmp(arg, "wpa2") == 0))
+        pAd->StaCfg.AuthMode = Ndis802_11AuthModeWPA2;
+#endif // WPA_SUPPLICANT_SUPPORT //
+    else
+        return FALSE;  
+
+    pAd->StaCfg.PortSecured = WPA_802_1X_PORT_NOT_SECURED;
+
+    DBGPRINT(RT_DEBUG_TRACE, ("Set_AuthMode_Proc::(AuthMode=%d)\n", pAd->StaCfg.AuthMode));
+
+    return TRUE;
+}
+
+/* 
+    ==========================================================================
+    Description:
+        Set Encryption Type
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+    ==========================================================================
+*/
+INT Set_EncrypType_Proc(
+    IN  PRTMP_ADAPTER   pAd, 
+    IN  PSTRING          arg)
+{
+    if ((strcmp(arg, "NONE") == 0) || (strcmp(arg, "none") == 0))
+    {
+        if (pAd->StaCfg.AuthMode >= Ndis802_11AuthModeWPA)
+            return TRUE;    // do nothing
+            
+        pAd->StaCfg.WepStatus     = Ndis802_11WEPDisabled;
+        pAd->StaCfg.PairCipher    = Ndis802_11WEPDisabled;
+	    pAd->StaCfg.GroupCipher   = Ndis802_11WEPDisabled;
+    }
+    else if ((strcmp(arg, "WEP") == 0) || (strcmp(arg, "wep") == 0))
+    {
+        if (pAd->StaCfg.AuthMode >= Ndis802_11AuthModeWPA)
+            return TRUE;    // do nothing
+            
+        pAd->StaCfg.WepStatus     = Ndis802_11WEPEnabled;
+        pAd->StaCfg.PairCipher    = Ndis802_11WEPEnabled;
+	    pAd->StaCfg.GroupCipher   = Ndis802_11WEPEnabled;		
+    }
+    else if ((strcmp(arg, "TKIP") == 0) || (strcmp(arg, "tkip") == 0))
+    {
+        if (pAd->StaCfg.AuthMode < Ndis802_11AuthModeWPA)
+            return TRUE;    // do nothing
+            
+        pAd->StaCfg.WepStatus     = Ndis802_11Encryption2Enabled;
+        pAd->StaCfg.PairCipher    = Ndis802_11Encryption2Enabled;
+	    pAd->StaCfg.GroupCipher   = Ndis802_11Encryption2Enabled;
+    }
+    else if ((strcmp(arg, "AES") == 0) || (strcmp(arg, "aes") == 0))
+    {
+        if (pAd->StaCfg.AuthMode < Ndis802_11AuthModeWPA)
+            return TRUE;    // do nothing
+            
+        pAd->StaCfg.WepStatus     = Ndis802_11Encryption3Enabled;
+        pAd->StaCfg.PairCipher    = Ndis802_11Encryption3Enabled;
+	    pAd->StaCfg.GroupCipher   = Ndis802_11Encryption3Enabled;
+    }
+    else
+        return FALSE;
+
+    pAd->StaCfg.OrigWepStatus = pAd->StaCfg.WepStatus;
+
+	if (pAd->StaCfg.BssType == BSS_ADHOC)
+	{
+		// Build all corresponding channel information
+		RTMPSetPhyMode(pAd, pAd->CommonCfg.DesiredPhyMode);
+#ifdef DOT11_N_SUPPORT
+		SetCommonHT(pAd);
+#endif // DOT11_N_SUPPORT //
+	}
+
+    DBGPRINT(RT_DEBUG_TRACE, ("Set_EncrypType_Proc::(EncrypType=%d)\n", pAd->StaCfg.WepStatus));
+
+    return TRUE;
+}
+
+/* 
+    ==========================================================================
+    Description:
+        Set Default Key ID
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+    ==========================================================================
+*/
+INT Set_DefaultKeyID_Proc(
+    IN  PRTMP_ADAPTER   pAdapter, 
+    IN  PSTRING          arg)
+{
+    ULONG                               KeyIdx;
+
+    KeyIdx = simple_strtol(arg, 0, 10);
+    if((KeyIdx >= 1 ) && (KeyIdx <= 4))
+        pAdapter->StaCfg.DefaultKeyId = (UCHAR) (KeyIdx - 1 );
+    else
+        return FALSE;  //Invalid argument 
+
+    DBGPRINT(RT_DEBUG_TRACE, ("Set_DefaultKeyID_Proc::(DefaultKeyID=%d)\n", pAdapter->StaCfg.DefaultKeyId));
+
+    return TRUE;
+}
+
+/* 
+    ==========================================================================
+    Description:
+        Set WEP KEY1
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+    ==========================================================================
+*/
+INT Set_Key1_Proc(
+    IN  PRTMP_ADAPTER   pAdapter, 
+    IN  PSTRING          arg)
+{
+    int                                 KeyLen;
+    int                                 i;
+    UCHAR                               CipherAlg=CIPHER_WEP64;
+
+    if (pAdapter->StaCfg.AuthMode >= Ndis802_11AuthModeWPA)
+        return TRUE;    // do nothing
+    
+    KeyLen = strlen(arg);
+
+    switch (KeyLen)
+    {
+        case 5: //wep 40 Ascii type
+            pAdapter->SharedKey[BSS0][0].KeyLen = KeyLen;
+            memcpy(pAdapter->SharedKey[BSS0][0].Key, arg, KeyLen);
+            CipherAlg = CIPHER_WEP64;
+            DBGPRINT(RT_DEBUG_TRACE, ("Set_Key1_Proc::(Key1=%s and type=%s)\n", arg, "Ascii"));       
+            break;
+        case 10: //wep 40 Hex type
+            for(i=0; i < KeyLen; i++)
+            {
+                if( !isxdigit(*(arg+i)) )
+                    return FALSE;  //Not Hex value;
+            }
+            pAdapter->SharedKey[BSS0][0].KeyLen = KeyLen / 2 ;
+            AtoH(arg, pAdapter->SharedKey[BSS0][0].Key, KeyLen / 2);
+            CipherAlg = CIPHER_WEP64;
+            DBGPRINT(RT_DEBUG_TRACE, ("Set_Key1_Proc::(Key1=%s and type=%s)\n", arg, "Hex"));     
+            break;
+        case 13: //wep 104 Ascii type
+            pAdapter->SharedKey[BSS0][0].KeyLen = KeyLen;
+            memcpy(pAdapter->SharedKey[BSS0][0].Key, arg, KeyLen);
+            CipherAlg = CIPHER_WEP128;
+            DBGPRINT(RT_DEBUG_TRACE, ("Set_Key1_Proc::(Key1=%s and type=%s)\n", arg, "Ascii"));       
+            break;
+        case 26: //wep 104 Hex type
+            for(i=0; i < KeyLen; i++)
+            {
+                if( !isxdigit(*(arg+i)) )
+                    return FALSE;  //Not Hex value;
+            }
+            pAdapter->SharedKey[BSS0][0].KeyLen = KeyLen / 2 ;
+            AtoH(arg, pAdapter->SharedKey[BSS0][0].Key, KeyLen / 2);
+            CipherAlg = CIPHER_WEP128;
+            DBGPRINT(RT_DEBUG_TRACE, ("Set_Key1_Proc::(Key1=%s and type=%s)\n", arg, "Hex"));     
+            break;
+        default: //Invalid argument 
+            DBGPRINT(RT_DEBUG_TRACE, ("Set_Key1_Proc::Invalid argument (=%s)\n", arg));       
+            return FALSE;
+    }
+    
+    pAdapter->SharedKey[BSS0][0].CipherAlg = CipherAlg;
+
+    // Set keys (into ASIC)
+    if (pAdapter->StaCfg.AuthMode >= Ndis802_11AuthModeWPA)
+        ;   // not support
+    else    // Old WEP stuff
+    {
+        AsicAddSharedKeyEntry(pAdapter, 
+                              0, 
+                              0, 
+                              &pAdapter->SharedKey[BSS0][0]);
+    }
+    
+    return TRUE;
+}
+/* 
+    ==========================================================================
+
+    Description:
+        Set WEP KEY2
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+    ==========================================================================
+*/
+INT Set_Key2_Proc(
+    IN  PRTMP_ADAPTER   pAdapter, 
+    IN  PSTRING          arg)
+{
+    int                                 KeyLen;
+    int                                 i;
+    UCHAR                               CipherAlg=CIPHER_WEP64;
+
+    if (pAdapter->StaCfg.AuthMode >= Ndis802_11AuthModeWPA)
+        return TRUE;    // do nothing
+    
+    KeyLen = strlen(arg);
+
+    switch (KeyLen)
+    {
+        case 5: //wep 40 Ascii type
+            pAdapter->SharedKey[BSS0][1].KeyLen = KeyLen;
+            memcpy(pAdapter->SharedKey[BSS0][1].Key, arg, KeyLen);
+            CipherAlg = CIPHER_WEP64;
+            DBGPRINT(RT_DEBUG_TRACE, ("Set_Key2_Proc::(Key2=%s and type=%s)\n", arg, "Ascii"));
+            break;
+        case 10: //wep 40 Hex type
+            for(i=0; i < KeyLen; i++)
+            {
+                if( !isxdigit(*(arg+i)) )
+                    return FALSE;  //Not Hex value;
+            }
+            pAdapter->SharedKey[BSS0][1].KeyLen = KeyLen / 2 ;
+            AtoH(arg, pAdapter->SharedKey[BSS0][1].Key, KeyLen / 2);
+            CipherAlg = CIPHER_WEP64;
+            DBGPRINT(RT_DEBUG_TRACE, ("Set_Key2_Proc::(Key2=%s and type=%s)\n", arg, "Hex"));
+            break;
+        case 13: //wep 104 Ascii type
+            pAdapter->SharedKey[BSS0][1].KeyLen = KeyLen;
+            memcpy(pAdapter->SharedKey[BSS0][1].Key, arg, KeyLen);
+            CipherAlg = CIPHER_WEP128;
+            DBGPRINT(RT_DEBUG_TRACE, ("Set_Key2_Proc::(Key2=%s and type=%s)\n", arg, "Ascii"));
+            break;
+        case 26: //wep 104 Hex type
+            for(i=0; i < KeyLen; i++)
+            {
+                if( !isxdigit(*(arg+i)) )
+                    return FALSE;  //Not Hex value;
+            }
+            pAdapter->SharedKey[BSS0][1].KeyLen = KeyLen / 2 ;
+            AtoH(arg, pAdapter->SharedKey[BSS0][1].Key, KeyLen / 2);
+            CipherAlg = CIPHER_WEP128;
+            DBGPRINT(RT_DEBUG_TRACE, ("Set_Key2_Proc::(Key2=%s and type=%s)\n", arg, "Hex"));
+            break;
+        default: //Invalid argument 
+            DBGPRINT(RT_DEBUG_TRACE, ("Set_Key2_Proc::Invalid argument (=%s)\n", arg));
+            return FALSE;
+    }
+    pAdapter->SharedKey[BSS0][1].CipherAlg = CipherAlg;
+
+    // Set keys (into ASIC)
+    if (pAdapter->StaCfg.AuthMode >= Ndis802_11AuthModeWPA)
+        ;   // not support
+    else    // Old WEP stuff
+    {
+        AsicAddSharedKeyEntry(pAdapter, 
+                              0, 
+                              1, 
+                              &pAdapter->SharedKey[BSS0][1]);
+    }        
+    
+    return TRUE;
+}
+/* 
+    ==========================================================================
+    Description:
+        Set WEP KEY3
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+    ==========================================================================
+*/
+INT Set_Key3_Proc(
+    IN  PRTMP_ADAPTER   pAdapter, 
+    IN  PSTRING          arg)
+{
+    int                                 KeyLen;
+    int                                 i;
+    UCHAR                               CipherAlg=CIPHER_WEP64;
+
+    if (pAdapter->StaCfg.AuthMode >= Ndis802_11AuthModeWPA)
+        return TRUE;    // do nothing
+    
+    KeyLen = strlen(arg);
+
+    switch (KeyLen)
+    {
+        case 5: //wep 40 Ascii type
+            pAdapter->SharedKey[BSS0][2].KeyLen = KeyLen;
+            memcpy(pAdapter->SharedKey[BSS0][2].Key, arg, KeyLen);
+            CipherAlg = CIPHER_WEP64;
+            DBGPRINT(RT_DEBUG_TRACE, ("Set_Key3_Proc::(Key3=%s and type=Ascii)\n", arg));
+            break;
+        case 10: //wep 40 Hex type
+            for(i=0; i < KeyLen; i++)
+            {
+                if( !isxdigit(*(arg+i)) )
+                    return FALSE;  //Not Hex value;
+            }
+            pAdapter->SharedKey[BSS0][2].KeyLen = KeyLen / 2 ;
+            AtoH(arg, pAdapter->SharedKey[BSS0][2].Key, KeyLen / 2);
+            CipherAlg = CIPHER_WEP64;
+            DBGPRINT(RT_DEBUG_TRACE, ("Set_Key3_Proc::(Key3=%s and type=Hex)\n", arg));
+            break;
+        case 13: //wep 104 Ascii type
+            pAdapter->SharedKey[BSS0][2].KeyLen = KeyLen;
+            memcpy(pAdapter->SharedKey[BSS0][2].Key, arg, KeyLen);
+            CipherAlg = CIPHER_WEP128;
+            DBGPRINT(RT_DEBUG_TRACE, ("Set_Key3_Proc::(Key3=%s and type=Ascii)\n", arg));
+            break;
+        case 26: //wep 104 Hex type
+            for(i=0; i < KeyLen; i++)
+            {
+                if( !isxdigit(*(arg+i)) )
+                    return FALSE;  //Not Hex value;
+            }
+            pAdapter->SharedKey[BSS0][2].KeyLen = KeyLen / 2 ;
+            AtoH(arg, pAdapter->SharedKey[BSS0][2].Key, KeyLen / 2);
+            CipherAlg = CIPHER_WEP128;
+            DBGPRINT(RT_DEBUG_TRACE, ("Set_Key3_Proc::(Key3=%s and type=Hex)\n", arg));
+            break;
+        default: //Invalid argument 
+            DBGPRINT(RT_DEBUG_TRACE, ("Set_Key3_Proc::Invalid argument (=%s)\n", arg));
+            return FALSE;
+    }
+    pAdapter->SharedKey[BSS0][2].CipherAlg = CipherAlg;
+    
+    // Set keys (into ASIC)
+    if (pAdapter->StaCfg.AuthMode >= Ndis802_11AuthModeWPA)
+        ;   // not support
+    else    // Old WEP stuff
+    {
+        AsicAddSharedKeyEntry(pAdapter, 
+                              0, 
+                              2, 
+                              &pAdapter->SharedKey[BSS0][2]);
+    }
+    
+    return TRUE;
+}
+/* 
+    ==========================================================================
+    Description:
+        Set WEP KEY4
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+    ==========================================================================
+*/
+INT Set_Key4_Proc(
+    IN  PRTMP_ADAPTER   pAdapter, 
+    IN  PSTRING          arg)
+{
+    int                                 KeyLen;
+    int                                 i;
+    UCHAR                               CipherAlg=CIPHER_WEP64;
+
+    if (pAdapter->StaCfg.AuthMode >= Ndis802_11AuthModeWPA)
+        return TRUE;    // do nothing
+    
+    KeyLen = strlen(arg);
+
+    switch (KeyLen)
+    {
+        case 5: //wep 40 Ascii type
+            pAdapter->SharedKey[BSS0][3].KeyLen = KeyLen;
+            memcpy(pAdapter->SharedKey[BSS0][3].Key, arg, KeyLen);
+            CipherAlg = CIPHER_WEP64;
+            DBGPRINT(RT_DEBUG_TRACE, ("Set_Key4_Proc::(Key4=%s and type=%s)\n", arg, "Ascii"));
+            break;
+        case 10: //wep 40 Hex type
+            for(i=0; i < KeyLen; i++)
+            {
+                if( !isxdigit(*(arg+i)) )
+                    return FALSE;  //Not Hex value;
+            }
+            pAdapter->SharedKey[BSS0][3].KeyLen = KeyLen / 2 ;
+            AtoH(arg, pAdapter->SharedKey[BSS0][3].Key, KeyLen / 2);
+            CipherAlg = CIPHER_WEP64;
+            DBGPRINT(RT_DEBUG_TRACE, ("Set_Key4_Proc::(Key4=%s and type=%s)\n", arg, "Hex"));
+            break;
+        case 13: //wep 104 Ascii type
+            pAdapter->SharedKey[BSS0][3].KeyLen = KeyLen;
+            memcpy(pAdapter->SharedKey[BSS0][3].Key, arg, KeyLen);
+            CipherAlg = CIPHER_WEP128;
+            DBGPRINT(RT_DEBUG_TRACE, ("Set_Key4_Proc::(Key4=%s and type=%s)\n", arg, "Ascii"));
+            break;
+        case 26: //wep 104 Hex type
+            for(i=0; i < KeyLen; i++)
+            {
+                if( !isxdigit(*(arg+i)) )
+                    return FALSE;  //Not Hex value;
+            }
+            pAdapter->SharedKey[BSS0][3].KeyLen = KeyLen / 2 ;
+            AtoH(arg, pAdapter->SharedKey[BSS0][3].Key, KeyLen / 2);
+            CipherAlg = CIPHER_WEP128;
+            DBGPRINT(RT_DEBUG_TRACE, ("Set_Key4_Proc::(Key4=%s and type=%s)\n", arg, "Hex"));
+            break;
+        default: //Invalid argument 
+            DBGPRINT(RT_DEBUG_TRACE, ("Set_Key4_Proc::Invalid argument (=%s)\n", arg));
+            return FALSE;
+    } 
+    pAdapter->SharedKey[BSS0][3].CipherAlg = CipherAlg;
+    
+    // Set keys (into ASIC)
+    if (pAdapter->StaCfg.AuthMode >= Ndis802_11AuthModeWPA)
+        ;   // not support
+    else    // Old WEP stuff
+    {
+        AsicAddSharedKeyEntry(pAdapter, 
+                              0, 
+                              3, 
+                              &pAdapter->SharedKey[BSS0][3]);
+    }
+    
+    return TRUE;
+}
+
+/* 
+    ==========================================================================
+    Description:
+        Set WPA PSK key
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+    ==========================================================================
+*/
+INT Set_WPAPSK_Proc(
+    IN  PRTMP_ADAPTER   pAd, 
+    IN  PSTRING          arg)
+{
+    int status;
+	
+    if ((pAd->StaCfg.AuthMode != Ndis802_11AuthModeWPAPSK) && 
+        (pAd->StaCfg.AuthMode != Ndis802_11AuthModeWPA2PSK) &&
+	    (pAd->StaCfg.AuthMode != Ndis802_11AuthModeWPANone)
+		)
+        return TRUE;    // do nothing
+        
+    DBGPRINT(RT_DEBUG_TRACE, ("Set_WPAPSK_Proc::(WPAPSK=%s)\n", arg));
+
+	status = RT_CfgSetWPAPSKKey(pAd, arg, pAd->MlmeAux.Ssid, pAd->MlmeAux.SsidLen, pAd->StaCfg.PMK);
+	if (status == FALSE)
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("Set_WPAPSK_Proc(): Set key failed!\n"));
+		return FALSE;
+	}
+	NdisZeroMemory(pAd->StaCfg.WpaPassPhrase, 64);
+    NdisMoveMemory(pAd->StaCfg.WpaPassPhrase, arg, strlen(arg));
+    pAd->StaCfg.WpaPassPhraseLen = (UINT)strlen(arg);
+
+
+
+    if(pAd->StaCfg.BssType == BSS_ADHOC &&
+       pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPANone)
+    {
+        pAd->StaCfg.WpaState = SS_NOTUSE;     
+    }
+    else
+    {
+        // Start STA supplicant state machine
+        pAd->StaCfg.WpaState = SS_START;
+    }    
+
+    return TRUE;
+}
+
+/* 
+    ==========================================================================
+    Description:
+        Set Power Saving mode
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+    ==========================================================================
+*/
+INT Set_PSMode_Proc(
+    IN  PRTMP_ADAPTER   pAdapter, 
+    IN  PSTRING          arg)
+{
+    if (pAdapter->StaCfg.BssType == BSS_INFRA)
+    {
+        if ((strcmp(arg, "Max_PSP") == 0) || 
+			(strcmp(arg, "max_psp") == 0) ||
+			(strcmp(arg, "MAX_PSP") == 0))
+        {
+            // do NOT turn on PSM bit here, wait until MlmeCheckPsmChange()
+            // to exclude certain situations.
+            if (pAdapter->StaCfg.bWindowsACCAMEnable == FALSE)
+                pAdapter->StaCfg.WindowsPowerMode = Ndis802_11PowerModeMAX_PSP;
+            pAdapter->StaCfg.WindowsBatteryPowerMode = Ndis802_11PowerModeMAX_PSP;
+            OPSTATUS_SET_FLAG(pAdapter, fOP_STATUS_RECEIVE_DTIM);
+            pAdapter->StaCfg.DefaultListenCount = 5;
+        
+        }
+        else if ((strcmp(arg, "Fast_PSP") == 0) || 
+				 (strcmp(arg, "fast_psp") == 0) ||
+                 (strcmp(arg, "FAST_PSP") == 0))
+        {
+            // do NOT turn on PSM bit here, wait until MlmeCheckPsmChange()
+            // to exclude certain situations.
+            OPSTATUS_SET_FLAG(pAdapter, fOP_STATUS_RECEIVE_DTIM);
+            if (pAdapter->StaCfg.bWindowsACCAMEnable == FALSE)
+                pAdapter->StaCfg.WindowsPowerMode = Ndis802_11PowerModeFast_PSP;
+            pAdapter->StaCfg.WindowsBatteryPowerMode = Ndis802_11PowerModeFast_PSP;
+            pAdapter->StaCfg.DefaultListenCount = 3;
+        }
+        else if ((strcmp(arg, "Legacy_PSP") == 0) || 
+                 (strcmp(arg, "legacy_psp") == 0) || 
+                 (strcmp(arg, "LEGACY_PSP") == 0))
+        {
+            // do NOT turn on PSM bit here, wait until MlmeCheckPsmChange()
+            // to exclude certain situations.
+            OPSTATUS_SET_FLAG(pAdapter, fOP_STATUS_RECEIVE_DTIM);
+            if (pAdapter->StaCfg.bWindowsACCAMEnable == FALSE)
+                pAdapter->StaCfg.WindowsPowerMode = Ndis802_11PowerModeLegacy_PSP;
+            pAdapter->StaCfg.WindowsBatteryPowerMode = Ndis802_11PowerModeLegacy_PSP;
+            pAdapter->StaCfg.DefaultListenCount = 3;
+        }
+        else
+        {
+            //Default Ndis802_11PowerModeCAM
+            // clear PSM bit immediately
+            RTMP_SET_PSM_BIT(pAdapter, PWR_ACTIVE);
+            OPSTATUS_SET_FLAG(pAdapter, fOP_STATUS_RECEIVE_DTIM);
+            if (pAdapter->StaCfg.bWindowsACCAMEnable == FALSE)
+                pAdapter->StaCfg.WindowsPowerMode = Ndis802_11PowerModeCAM;
+            pAdapter->StaCfg.WindowsBatteryPowerMode = Ndis802_11PowerModeCAM;
+        }
+
+        DBGPRINT(RT_DEBUG_TRACE, ("Set_PSMode_Proc::(PSMode=%ld)\n", pAdapter->StaCfg.WindowsPowerMode));
+    }
+    else
+        return FALSE;
+
+        
+    return TRUE;
+}
+
+#ifdef WPA_SUPPLICANT_SUPPORT
+/* 
+    ==========================================================================
+    Description:
+        Set WpaSupport flag.
+    Value:
+        0: Driver ignore wpa_supplicant.
+        1: wpa_supplicant initiates scanning and AP selection.
+        2: driver takes care of scanning, AP selection, and IEEE 802.11 association parameters.
+    Return:
+        TRUE if all parameters are OK, FALSE otherwise
+    ==========================================================================
+*/
+INT Set_Wpa_Support(
+    IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+
+    if ( simple_strtol(arg, 0, 10) == 0)
+        pAd->StaCfg.WpaSupplicantUP = WPA_SUPPLICANT_DISABLE;
+    else if ( simple_strtol(arg, 0, 10) == 1)
+        pAd->StaCfg.WpaSupplicantUP = WPA_SUPPLICANT_ENABLE;
+    else if ( simple_strtol(arg, 0, 10) == 2)
+        pAd->StaCfg.WpaSupplicantUP = WPA_SUPPLICANT_ENABLE_WITH_WEB_UI;
+    else
+        pAd->StaCfg.WpaSupplicantUP = WPA_SUPPLICANT_DISABLE;
+
+    DBGPRINT(RT_DEBUG_TRACE, ("Set_Wpa_Support::(WpaSupplicantUP=%d)\n", pAd->StaCfg.WpaSupplicantUP));
+    
+    return TRUE;    
+}
+#endif // WPA_SUPPLICANT_SUPPORT //
+
+
+
+
+INT Set_TGnWifiTest_Proc(
+    IN  PRTMP_ADAPTER   pAd, 
+    IN  PSTRING          arg)
+{
+    if (simple_strtol(arg, 0, 10) == 0)
+        pAd->StaCfg.bTGnWifiTest = FALSE;
+    else
+        pAd->StaCfg.bTGnWifiTest = TRUE;
+
+    DBGPRINT(RT_DEBUG_TRACE, ("IF Set_TGnWifiTest_Proc::(bTGnWifiTest=%d)\n", pAd->StaCfg.bTGnWifiTest));
+	return TRUE;
+}
+
+#ifdef EXT_BUILD_CHANNEL_LIST
+INT Set_Ieee80211dClientMode_Proc(
+    IN  PRTMP_ADAPTER   pAdapter, 
+    IN  PSTRING          arg)
+{
+    if (simple_strtol(arg, 0, 10) == 0)
+        pAdapter->StaCfg.IEEE80211dClientMode = Rt802_11_D_None;
+    else if (simple_strtol(arg, 0, 10) == 1)
+        pAdapter->StaCfg.IEEE80211dClientMode = Rt802_11_D_Flexible;
+    else if (simple_strtol(arg, 0, 10) == 2)
+        pAdapter->StaCfg.IEEE80211dClientMode = Rt802_11_D_Strict;
+    else
+        return FALSE;  
+
+    DBGPRINT(RT_DEBUG_TRACE, ("Set_Ieee802dMode_Proc::(IEEEE0211dMode=%d)\n", pAdapter->StaCfg.IEEE80211dClientMode));
+    return TRUE;
+}
+#endif // EXT_BUILD_CHANNEL_LIST //
+
+#ifdef CARRIER_DETECTION_SUPPORT
+INT Set_CarrierDetect_Proc(
+    IN  PRTMP_ADAPTER   pAd, 
+    IN  PSTRING         arg)
+{
+    if (simple_strtol(arg, 0, 10) == 0)
+        pAd->CommonCfg.CarrierDetect.Enable = FALSE;
+    else
+        pAd->CommonCfg.CarrierDetect.Enable = TRUE;
+
+    DBGPRINT(RT_DEBUG_TRACE, ("IF Set_CarrierDetect_Proc::(CarrierDetect.Enable=%d)\n", pAd->CommonCfg.CarrierDetect.Enable));
+	return TRUE;
+}
+#endif // CARRIER_DETECTION_SUPPORT //
+
+
+INT	Show_Adhoc_MacTable_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			extra)
+{
+	INT i;
+	
+	sprintf(extra, "\n");
+
+#ifdef DOT11_N_SUPPORT
+	sprintf(extra, "%sHT Operating Mode : %d\n", extra, pAd->CommonCfg.AddHTInfo.AddHtInfo2.OperaionMode);
+#endif // DOT11_N_SUPPORT //
+
+	sprintf(extra, "%s\n%-19s%-4s%-4s%-7s%-7s%-7s%-10s%-6s%-6s%-6s%-6s\n", extra, 
+			"MAC", "AID", "BSS", "RSSI0", "RSSI1", "RSSI2", "PhMd", "BW", "MCS", "SGI", "STBC");
+	
+	for (i=1; i<MAX_LEN_OF_MAC_TABLE; i++)
+	{
+		PMAC_TABLE_ENTRY pEntry = &pAd->MacTab.Content[i];
+		
+		if (strlen(extra) > (IW_PRIV_SIZE_MASK - 30))
+		    break;
+		if ((IS_ENTRY_CLIENT(pEntry) || IS_ENTRY_APCLI(pEntry)) && (pEntry->Sst == SST_ASSOC))
+		{
+			sprintf(extra, "%s%02X:%02X:%02X:%02X:%02X:%02X  ", extra,
+				pEntry->Addr[0], pEntry->Addr[1], pEntry->Addr[2],
+				pEntry->Addr[3], pEntry->Addr[4], pEntry->Addr[5]);
+			sprintf(extra, "%s%-4d", extra, (int)pEntry->Aid);
+			sprintf(extra, "%s%-4d", extra, (int)pEntry->apidx);
+			sprintf(extra, "%s%-7d", extra, pEntry->RssiSample.AvgRssi0);
+			sprintf(extra, "%s%-7d", extra, pEntry->RssiSample.AvgRssi1);
+			sprintf(extra, "%s%-7d", extra, pEntry->RssiSample.AvgRssi2);
+			sprintf(extra, "%s%-10s", extra, GetPhyMode(pEntry->HTPhyMode.field.MODE));
+			sprintf(extra, "%s%-6s", extra, GetBW(pEntry->HTPhyMode.field.BW));
+			sprintf(extra, "%s%-6d", extra, pEntry->HTPhyMode.field.MCS);
+			sprintf(extra, "%s%-6d", extra, pEntry->HTPhyMode.field.ShortGI);
+			sprintf(extra, "%s%-6d", extra, pEntry->HTPhyMode.field.STBC);
+			sprintf(extra, "%s%-10d, %d, %d%%\n", extra, pEntry->DebugFIFOCount, pEntry->DebugTxCount, 
+						(pEntry->DebugTxCount) ? ((pEntry->DebugTxCount-pEntry->DebugFIFOCount)*100/pEntry->DebugTxCount) : 0);
+			sprintf(extra, "%s\n", extra);
+		}
+	} 
+
+	return TRUE;
+}
+
+
+INT Set_BeaconLostTime_Proc(
+    IN  PRTMP_ADAPTER   pAd, 
+    IN  PSTRING         arg)
+{
+	ULONG ltmp = (ULONG)simple_strtol(arg, 0, 10);
+
+	if ((ltmp != 0) && (ltmp <= 60))
+		pAd->StaCfg.BeaconLostTime = (ltmp * OS_HZ);
+
+    DBGPRINT(RT_DEBUG_TRACE, ("IF Set_BeaconLostTime_Proc::(BeaconLostTime=%ld)\n", pAd->StaCfg.BeaconLostTime));
+	return TRUE;
+}
+
+INT Set_AutoRoaming_Proc(
+    IN  PRTMP_ADAPTER   pAd, 
+    IN  PSTRING         arg)
+{
+    if (simple_strtol(arg, 0, 10) == 0)
+        pAd->StaCfg.bAutoRoaming = FALSE;
+    else
+        pAd->StaCfg.bAutoRoaming = TRUE;
+
+    DBGPRINT(RT_DEBUG_TRACE, ("IF Set_AutoRoaming_Proc::(bAutoRoaming=%d)\n", pAd->StaCfg.bAutoRoaming));
+	return TRUE;
+}
+
+
+/* 
+    ==========================================================================
+    Description:
+        Issue a site survey command to driver
+	Arguments:
+	    pAdapter                    Pointer to our adapter
+	    wrq                         Pointer to the ioctl argument
+
+    Return Value:
+        None
+
+    Note:
+        Usage: 
+               1.) iwpriv ra0 set site_survey
+    ==========================================================================
+*/
+INT Set_SiteSurvey_Proc(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PSTRING			arg)
+{
+	NDIS_802_11_SSID Ssid;
+
+	//check if the interface is down
+	if (!RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_INTERRUPT_IN_USE))
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("INFO::Network is down!\n"));
+		return -ENETDOWN;   
+	}
+
+	if (MONITOR_ON(pAd))
+    {
+        DBGPRINT(RT_DEBUG_TRACE, ("!!! Driver is in Monitor Mode now !!!\n"));
+        return -EINVAL;
+    }
+
+	RTMPZeroMemory(&Ssid, sizeof(NDIS_802_11_SSID));	
+	Ssid.SsidLength = 0; 
+	if ((arg != NULL) &&
+		(strlen(arg) <= MAX_LEN_OF_SSID))
+    {
+        RTMPMoveMemory(Ssid.Ssid, arg, strlen(arg));
+        Ssid.SsidLength = strlen(arg);
+	}
+
+	pAd->StaCfg.bScanReqIsFromWebUI = TRUE;
+
+	if (pAd->Mlme.CntlMachine.CurrState != CNTL_IDLE)
+	{
+		RTMP_MLME_RESET_STATE_MACHINE(pAd);
+		DBGPRINT(RT_DEBUG_TRACE, ("!!! MLME busy, reset MLME state machine !!!\n"));
+	}
+
+	// tell CNTL state machine to call NdisMSetInformationComplete() after completing
+	// this request, because this request is initiated by NDIS.
+	pAd->MlmeAux.CurrReqIsFromNdis = FALSE;
+	// Reset allowed scan retries
+	pAd->StaCfg.ScanCnt = 0;
+
+	NdisGetSystemUpTime(&pAd->StaCfg.LastScanTime);
+	MlmeEnqueue(pAd, 
+		MLME_CNTL_STATE_MACHINE, 
+		OID_802_11_BSSID_LIST_SCAN, 
+		Ssid.SsidLength,
+		Ssid.Ssid, 0);
+	RTMP_MLME_HANDLER(pAd);
+
+    DBGPRINT(RT_DEBUG_TRACE, ("Set_SiteSurvey_Proc\n"));
+
+    return TRUE;
+}
+
+INT Set_ForceTxBurst_Proc(
+    IN  PRTMP_ADAPTER   pAd, 
+    IN  PSTRING         arg)
+{
+    if (simple_strtol(arg, 0, 10) == 0)
+        pAd->StaCfg.bForceTxBurst = FALSE;
+    else
+        pAd->StaCfg.bForceTxBurst = TRUE;
+
+    DBGPRINT(RT_DEBUG_TRACE, ("IF Set_ForceTxBurst_Proc::(bForceTxBurst=%d)\n", pAd->StaCfg.bForceTxBurst));
+	return TRUE;
+}
+
+
+#ifdef XLINK_SUPPORT
+INT Set_XlinkMode_Proc(
+    IN  PRTMP_ADAPTER   pAd, 
+    IN  PSTRING         arg)
+{
+	UINT32 Value = 0;
+
+    if (simple_strtol(arg, 0, 10) == 0)
+        pAd->StaCfg.PSPXlink = 0;
+    else
+        pAd->StaCfg.PSPXlink = 1;
+
+	if (pAd->StaCfg.PSPXlink)
+		Value = PSPXLINK;
+	else
+		Value = STANORMAL;
+	RTMP_IO_WRITE32(pAd, RX_FILTR_CFG, Value);
+	Value = 0;
+	RTMP_IO_READ32(pAd, MAC_SYS_CTRL, &Value);
+	Value &= (~0x80);
+	RTMP_IO_WRITE32(pAd, MAC_SYS_CTRL, Value);
+
+    DBGPRINT(RT_DEBUG_TRACE, ("IF Set_XlinkMode_Proc::(PSPXlink=%d)\n", pAd->StaCfg.PSPXlink));
+	return TRUE;
+}
+#endif // XLINK_SUPPORT //
+
+
+VOID RTMPAddKey(
+	IN	PRTMP_ADAPTER	    pAd, 
+	IN	PNDIS_802_11_KEY    pKey)
+{
+	ULONG				KeyIdx;
+	MAC_TABLE_ENTRY  	*pEntry;
+		
+    DBGPRINT(RT_DEBUG_TRACE, ("RTMPAddKey ------>\n"));
+
+	if (pAd->StaCfg.AuthMode >= Ndis802_11AuthModeWPA)
+	{
+		if (pKey->KeyIndex & 0x80000000)
+		{
+		    if (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPANone)
+            {
+                NdisZeroMemory(pAd->StaCfg.PMK, 32);
+                NdisMoveMemory(pAd->StaCfg.PMK, pKey->KeyMaterial, pKey->KeyLength);
+                goto end;
+            }
+		    // Update PTK
+		    NdisZeroMemory(&pAd->SharedKey[BSS0][0], sizeof(CIPHER_KEY));  
+            pAd->SharedKey[BSS0][0].KeyLen = LEN_TK;
+            NdisMoveMemory(pAd->SharedKey[BSS0][0].Key, pKey->KeyMaterial, LEN_TK);
+#ifdef WPA_SUPPLICANT_SUPPORT            
+            if (pAd->StaCfg.PairCipher == Ndis802_11Encryption2Enabled)
+            {
+                NdisMoveMemory(pAd->SharedKey[BSS0][0].RxMic, pKey->KeyMaterial + LEN_TK, LEN_TKIP_MIC);            
+                NdisMoveMemory(pAd->SharedKey[BSS0][0].TxMic, pKey->KeyMaterial + LEN_TK + LEN_TKIP_MIC, LEN_TKIP_MIC);
+            }
+            else
+#endif // WPA_SUPPLICANT_SUPPORT //
+            {
+            	NdisMoveMemory(pAd->SharedKey[BSS0][0].TxMic, pKey->KeyMaterial + LEN_TK, LEN_TKIP_MIC);            
+                NdisMoveMemory(pAd->SharedKey[BSS0][0].RxMic, pKey->KeyMaterial + LEN_TK + LEN_TKIP_MIC, LEN_TKIP_MIC);
+            }
+
+            // Decide its ChiperAlg
+        	if (pAd->StaCfg.PairCipher == Ndis802_11Encryption2Enabled)
+        		pAd->SharedKey[BSS0][0].CipherAlg = CIPHER_TKIP;
+        	else if (pAd->StaCfg.PairCipher == Ndis802_11Encryption3Enabled)
+        		pAd->SharedKey[BSS0][0].CipherAlg = CIPHER_AES;
+        	else
+        		pAd->SharedKey[BSS0][0].CipherAlg = CIPHER_NONE; 
+
+            // Update these related information to MAC_TABLE_ENTRY
+        	pEntry = &pAd->MacTab.Content[BSSID_WCID];
+            NdisMoveMemory(pEntry->PairwiseKey.Key, pAd->SharedKey[BSS0][0].Key, LEN_TK);            
+        	NdisMoveMemory(pEntry->PairwiseKey.RxMic, pAd->SharedKey[BSS0][0].RxMic, LEN_TKIP_MIC);
+        	NdisMoveMemory(pEntry->PairwiseKey.TxMic, pAd->SharedKey[BSS0][0].TxMic, LEN_TKIP_MIC);
+        	pEntry->PairwiseKey.CipherAlg = pAd->SharedKey[BSS0][0].CipherAlg;
+
+        	// Update pairwise key information to ASIC Shared Key Table	   
+        	AsicAddSharedKeyEntry(pAd, 
+        						  BSS0, 
+        						  0, 
+        						  &pAd->SharedKey[BSS0][0]);
+
+        	// Update ASIC WCID attribute table and IVEIV table
+        	RTMPSetWcidSecurityInfo(pAd, 
+        							  BSS0, 
+        							  0, 
+        							  pAd->SharedKey[BSS0][0].CipherAlg, 
+        							  BSSID_WCID,
+        							  SHAREDKEYTABLE);
+
+            if (pAd->StaCfg.AuthMode >= Ndis802_11AuthModeWPA2)
+            {
+                // set 802.1x port control
+	            //pAd->StaCfg.PortSecured = WPA_802_1X_PORT_SECURED;
+				STA_PORT_SECURED(pAd);
+                
+                // Indicate Connected for GUI
+                pAd->IndicateMediaState = NdisMediaStateConnected;
+            }
+		}
+        else
+        {
+            // Update GTK            
+            pAd->StaCfg.DefaultKeyId = (pKey->KeyIndex & 0xFF);
+            NdisZeroMemory(&pAd->SharedKey[BSS0][pAd->StaCfg.DefaultKeyId], sizeof(CIPHER_KEY));  
+            pAd->SharedKey[BSS0][pAd->StaCfg.DefaultKeyId].KeyLen = LEN_TK;
+            NdisMoveMemory(pAd->SharedKey[BSS0][pAd->StaCfg.DefaultKeyId].Key, pKey->KeyMaterial, LEN_TK);
+#ifdef WPA_SUPPLICANT_SUPPORT            
+            if (pAd->StaCfg.GroupCipher == Ndis802_11Encryption2Enabled)
+            {
+                NdisMoveMemory(pAd->SharedKey[BSS0][pAd->StaCfg.DefaultKeyId].RxMic, pKey->KeyMaterial + LEN_TK, LEN_TKIP_MIC);            
+                NdisMoveMemory(pAd->SharedKey[BSS0][pAd->StaCfg.DefaultKeyId].TxMic, pKey->KeyMaterial + LEN_TK + LEN_TKIP_MIC, LEN_TKIP_MIC);        	
+            }
+            else
+#endif // WPA_SUPPLICANT_SUPPORT //                
+            {
+            	NdisMoveMemory(pAd->SharedKey[BSS0][pAd->StaCfg.DefaultKeyId].TxMic, pKey->KeyMaterial + LEN_TK, LEN_TKIP_MIC);            
+                NdisMoveMemory(pAd->SharedKey[BSS0][pAd->StaCfg.DefaultKeyId].RxMic, pKey->KeyMaterial + LEN_TK + LEN_TKIP_MIC, LEN_TKIP_MIC);        	
+            }
+
+            // Update Shared Key CipherAlg
+    		pAd->SharedKey[BSS0][pAd->StaCfg.DefaultKeyId].CipherAlg = CIPHER_NONE;
+    		if (pAd->StaCfg.GroupCipher == Ndis802_11Encryption2Enabled)
+    			pAd->SharedKey[BSS0][pAd->StaCfg.DefaultKeyId].CipherAlg = CIPHER_TKIP;
+    		else if (pAd->StaCfg.GroupCipher == Ndis802_11Encryption3Enabled)
+    			pAd->SharedKey[BSS0][pAd->StaCfg.DefaultKeyId].CipherAlg = CIPHER_AES;
+
+            // Update group key information to ASIC Shared Key Table	   
+        	AsicAddSharedKeyEntry(pAd, 
+        						  BSS0, 
+        						  pAd->StaCfg.DefaultKeyId, 
+        						  &pAd->SharedKey[BSS0][pAd->StaCfg.DefaultKeyId]);
+
+			/* STA doesn't need to set WCID attribute for group key */
+
+            // set 802.1x port control
+	        //pAd->StaCfg.PortSecured = WPA_802_1X_PORT_SECURED;
+			STA_PORT_SECURED(pAd);
+
+            // Indicate Connected for GUI
+            pAd->IndicateMediaState = NdisMediaStateConnected;
+        }
+	}
+	else	// dynamic WEP from wpa_supplicant
+	{
+		UCHAR	CipherAlg;
+    	PUCHAR	Key;
+
+		if(pKey->KeyLength == 32)
+			goto end;
+		
+		KeyIdx = pKey->KeyIndex & 0x0fffffff;
+
+		if (KeyIdx < 4)
+		{
+			// it is a default shared key, for Pairwise key setting
+			if (pKey->KeyIndex & 0x80000000)
+			{
+				pEntry = MacTableLookup(pAd, pKey->BSSID);
+
+				if (pEntry)
+				{
+					DBGPRINT(RT_DEBUG_TRACE, ("RTMPAddKey: Set Pair-wise Key\n"));
+		
+					// set key material and key length
+ 					pEntry->PairwiseKey.KeyLen = (UCHAR)pKey->KeyLength;
+					NdisMoveMemory(pEntry->PairwiseKey.Key, &pKey->KeyMaterial, pKey->KeyLength);
+					
+					// set Cipher type
+					if (pKey->KeyLength == 5)
+						pEntry->PairwiseKey.CipherAlg = CIPHER_WEP64;
+					else
+						pEntry->PairwiseKey.CipherAlg = CIPHER_WEP128;
+						
+					// Add Pair-wise key to Asic
+					AsicAddPairwiseKeyEntry(
+						pAd, 
+						(UCHAR)pEntry->Aid,
+                		&pEntry->PairwiseKey);
+
+					// update WCID attribute table and IVEIV table for this entry
+					RTMPSetWcidSecurityInfo(pAd, 
+											BSS0, 
+											KeyIdx, 
+											pEntry->PairwiseKey.CipherAlg, 
+											pEntry->Aid, 
+											PAIRWISEKEYTABLE);
+				}	
+			}
+			else	
+            {
+				// Default key for tx (shared key)
+				pAd->StaCfg.DefaultKeyId = (UCHAR) KeyIdx;
+                     
+				// set key material and key length
+				pAd->SharedKey[BSS0][KeyIdx].KeyLen = (UCHAR) pKey->KeyLength;
+				NdisMoveMemory(pAd->SharedKey[BSS0][KeyIdx].Key, &pKey->KeyMaterial, pKey->KeyLength);
+				
+				// Set Ciper type
+				if (pKey->KeyLength == 5)
+					pAd->SharedKey[BSS0][KeyIdx].CipherAlg = CIPHER_WEP64;
+				else
+					pAd->SharedKey[BSS0][KeyIdx].CipherAlg = CIPHER_WEP128;
+			
+    			CipherAlg = pAd->SharedKey[BSS0][KeyIdx].CipherAlg;
+    			Key = pAd->SharedKey[BSS0][KeyIdx].Key;
+
+				// Set Group key material to Asic
+    			AsicAddSharedKeyEntry(pAd, BSS0, KeyIdx, &pAd->SharedKey[BSS0][KeyIdx]);
+		
+				/* STA doesn't need to set WCID attribute for group key */
+			}
+		}
+	}
+end:
+	return;
+}
+
+
+
+/*
+    ==========================================================================
+    Description:
+        Site survey entry point
+
+    NOTE:
+    ==========================================================================
+*/
+VOID StaSiteSurvey(
+	IN	PRTMP_ADAPTER  		pAd,
+	IN	PNDIS_802_11_SSID	pSsid,
+	IN	UCHAR				ScanType)
+{
+    MLME_SCAN_REQ_STRUCT    ScanReq;
+
+	NdisGetSystemUpTime(&pAd->StaCfg.LastScanTime);
+
+	BssTableInit(&pAd->ScanTab);
+	// Prepare Scan parameters and enqueue the MLME command
+	if (pSsid)
+		ScanParmFill(pAd, &ScanReq, pSsid->Ssid, pSsid->SsidLength, BSS_ANY, ScanType);
+	else
+		ScanParmFill(pAd, &ScanReq, "", 0, BSS_ANY, ScanType);
+	MlmeEnqueue(pAd, SYNC_STATE_MACHINE, MT2_MLME_SCAN_REQ, sizeof(MLME_SCAN_REQ_STRUCT), &ScanReq, 0);
+	RTMP_MLME_HANDLER(pAd);
+}
+
+INT Set_AutoReconnect_Proc(
+    IN  PRTMP_ADAPTER	pAd, 
+    IN  PSTRING			arg)
+{
+	if (simple_strtol(arg, 0, 10) == 0)
+        pAd->StaCfg.bAutoReconnect = FALSE;
+	else
+		pAd->StaCfg.bAutoReconnect = TRUE;
+
+	DBGPRINT(RT_DEBUG_TRACE, ("IF Set_AutoReconnect_Proc::(bAdhocN=%d)\n", pAd->StaCfg.bAutoReconnect));
+	return TRUE;
+}
+
+INT Set_AdhocN_Proc(
+    IN  PRTMP_ADAPTER	pAd, 
+    IN  PSTRING			arg)
+{
+	if (simple_strtol(arg, 0, 10) == 0)
+        pAd->StaCfg.bAdhocN = FALSE;
+	else
+		pAd->StaCfg.bAdhocN = TRUE;
+
+	DBGPRINT(RT_DEBUG_TRACE, ("IF Set_AdhocN_Proc::(bAdhocN=%d)\n", pAd->StaCfg.bAdhocN));
+	return TRUE;
+}
+/* End of sta_cfg.c */
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/sync.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/sync.c
new file mode 100644
index 000000000..513705abb
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/sync.c
@@ -0,0 +1,2286 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+	Module Name:
+	sync.c
+
+	Abstract:
+
+	Revision History:
+	Who			When			What
+	--------	----------		----------------------------------------------
+	John Chang	2004-09-01      modified for rt2561/2661
+	Jan Lee		2006-08-01      modified for rt2860 for 802.11n
+*/
+#include "rt_config.h"
+
+
+#define ADHOC_ENTRY_BEACON_LOST_TIME	(2*OS_HZ)	// 2 sec
+
+/*
+	==========================================================================
+	Description:
+		The sync state machine, 
+	Parameters:
+		Sm - pointer to the state machine
+	Note:
+		the state machine looks like the following
+
+	==========================================================================
+ */
+VOID SyncStateMachineInit(
+	IN PRTMP_ADAPTER pAd, 
+	IN STATE_MACHINE *Sm, 
+	OUT STATE_MACHINE_FUNC Trans[]) 
+{
+	StateMachineInit(Sm, Trans, MAX_SYNC_STATE, MAX_SYNC_MSG, (STATE_MACHINE_FUNC)Drop, SYNC_IDLE, SYNC_MACHINE_BASE);
+
+	// column 1
+	StateMachineSetAction(Sm, SYNC_IDLE, MT2_MLME_SCAN_REQ, (STATE_MACHINE_FUNC)MlmeScanReqAction);
+	StateMachineSetAction(Sm, SYNC_IDLE, MT2_MLME_JOIN_REQ, (STATE_MACHINE_FUNC)MlmeJoinReqAction);
+	StateMachineSetAction(Sm, SYNC_IDLE, MT2_MLME_START_REQ, (STATE_MACHINE_FUNC)MlmeStartReqAction);
+	StateMachineSetAction(Sm, SYNC_IDLE, MT2_PEER_BEACON, (STATE_MACHINE_FUNC)PeerBeacon);
+	StateMachineSetAction(Sm, SYNC_IDLE, MT2_PEER_PROBE_REQ, (STATE_MACHINE_FUNC)PeerProbeReqAction); 
+
+	//column 2
+	StateMachineSetAction(Sm, JOIN_WAIT_BEACON, MT2_MLME_SCAN_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenScan);
+	StateMachineSetAction(Sm, JOIN_WAIT_BEACON, MT2_MLME_JOIN_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenJoin);
+	StateMachineSetAction(Sm, JOIN_WAIT_BEACON, MT2_MLME_START_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenStart);
+	StateMachineSetAction(Sm, JOIN_WAIT_BEACON, MT2_PEER_BEACON, (STATE_MACHINE_FUNC)PeerBeaconAtJoinAction);
+	StateMachineSetAction(Sm, JOIN_WAIT_BEACON, MT2_BEACON_TIMEOUT, (STATE_MACHINE_FUNC)BeaconTimeoutAtJoinAction);
+	StateMachineSetAction(Sm, JOIN_WAIT_BEACON, MT2_PEER_PROBE_RSP, (STATE_MACHINE_FUNC)PeerBeaconAtScanAction);
+
+	// column 3
+	StateMachineSetAction(Sm, SCAN_LISTEN, MT2_MLME_SCAN_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenScan);
+	StateMachineSetAction(Sm, SCAN_LISTEN, MT2_MLME_JOIN_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenJoin);
+	StateMachineSetAction(Sm, SCAN_LISTEN, MT2_MLME_START_REQ, (STATE_MACHINE_FUNC)InvalidStateWhenStart);
+	StateMachineSetAction(Sm, SCAN_LISTEN, MT2_PEER_BEACON, (STATE_MACHINE_FUNC)PeerBeaconAtScanAction);
+	StateMachineSetAction(Sm, SCAN_LISTEN, MT2_PEER_PROBE_RSP, (STATE_MACHINE_FUNC)PeerBeaconAtScanAction);
+	StateMachineSetAction(Sm, SCAN_LISTEN, MT2_SCAN_TIMEOUT, (STATE_MACHINE_FUNC)ScanTimeoutAction);
+
+	// timer init
+	RTMPInitTimer(pAd, &pAd->MlmeAux.BeaconTimer, GET_TIMER_FUNCTION(BeaconTimeout), pAd, FALSE);
+	RTMPInitTimer(pAd, &pAd->MlmeAux.ScanTimer, GET_TIMER_FUNCTION(ScanTimeout), pAd, FALSE);
+}
+
+/* 
+	==========================================================================
+	Description:
+		Beacon timeout handler, executed in timer thread
+
+	IRQL = DISPATCH_LEVEL
+
+	==========================================================================
+ */
+VOID BeaconTimeout(
+	IN PVOID SystemSpecific1, 
+	IN PVOID FunctionContext, 
+	IN PVOID SystemSpecific2, 
+	IN PVOID SystemSpecific3) 
+{
+	RTMP_ADAPTER *pAd = (RTMP_ADAPTER *)FunctionContext;
+
+	DBGPRINT(RT_DEBUG_TRACE,("SYNC - BeaconTimeout\n"));
+	
+	// Do nothing if the driver is starting halt state.
+	// This might happen when timer already been fired before cancel timer with mlmehalt
+	if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_HALT_IN_PROGRESS))
+		return;
+	
+#ifdef DOT11_N_SUPPORT
+	if ((pAd->CommonCfg.BBPCurrentBW == BW_40)
+		)
+	{
+		UCHAR        BBPValue = 0;
+		AsicSwitchChannel(pAd, pAd->CommonCfg.CentralChannel, FALSE);
+		AsicLockChannel(pAd, pAd->CommonCfg.CentralChannel);
+		RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R4, &BBPValue);
+		BBPValue &= (~0x18);
+		BBPValue |= 0x10;
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R4, BBPValue);
+		DBGPRINT(RT_DEBUG_TRACE, ("SYNC - End of SCAN, restore to 40MHz channel %d, Total BSS[%02d]\n",pAd->CommonCfg.CentralChannel, pAd->ScanTab.BssNr));
+	}
+#endif // DOT11_N_SUPPORT //
+
+	MlmeEnqueue(pAd, SYNC_STATE_MACHINE, MT2_BEACON_TIMEOUT, 0, NULL, 0);
+	RTMP_MLME_HANDLER(pAd);
+}
+
+/* 
+	==========================================================================
+	Description:
+		Scan timeout handler, executed in timer thread
+
+	IRQL = DISPATCH_LEVEL
+
+	==========================================================================
+ */
+VOID ScanTimeout(
+	IN PVOID SystemSpecific1, 
+	IN PVOID FunctionContext, 
+	IN PVOID SystemSpecific2, 
+	IN PVOID SystemSpecific3) 
+{
+	RTMP_ADAPTER *pAd = (RTMP_ADAPTER *)FunctionContext;
+
+	
+	// Do nothing if the driver is starting halt state.
+	// This might happen when timer already been fired before cancel timer with mlmehalt
+	if (RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_HALT_IN_PROGRESS))
+		return;
+	
+	if (MlmeEnqueue(pAd, SYNC_STATE_MACHINE, MT2_SCAN_TIMEOUT, 0, NULL, 0))
+	{
+	RTMP_MLME_HANDLER(pAd);
+}
+	else
+	{
+		// To prevent SyncMachine.CurrState is SCAN_LISTEN forever.
+		pAd->MlmeAux.Channel = 0;
+		ScanNextChannel(pAd);
+			RTMPSendWirelessEvent(pAd, IW_SCAN_ENQUEUE_FAIL_EVENT_FLAG, NULL, BSS0, 0); 
+		
+	}
+}
+
+/* 
+	==========================================================================
+	Description:
+		MLME SCAN req state machine procedure
+	==========================================================================
+ */
+VOID MlmeScanReqAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+	UCHAR          Ssid[MAX_LEN_OF_SSID], SsidLen, ScanType, BssType, BBPValue = 0;
+	BOOLEAN        TimerCancelled;
+	ULONG		   Now;
+	USHORT         Status;
+	PHEADER_802_11 pHdr80211;
+	PUCHAR         pOutBuffer = NULL;	
+	NDIS_STATUS    NStatus;
+
+	// Check the total scan tries for one single OID command
+	// If this is the CCX 2.0 Case, skip that!
+	if ( !RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_START_UP))
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("SYNC - MlmeScanReqAction before Startup\n"));
+		return;
+	}
+
+	// Increase the scan retry counters.
+	pAd->StaCfg.ScanCnt++;
+	
+#ifdef PCIE_PS_SUPPORT
+    if ((OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_ADVANCE_POWER_SAVE_PCIE_DEVICE)) && 
+        (IDLE_ON(pAd)) &&
+		(pAd->StaCfg.bRadio == TRUE) &&
+		(RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_IDLE_RADIO_OFF)))
+	{
+	    if (pAd->StaCfg.PSControl.field.EnableNewPS == FALSE)
+		{
+			AsicSendCommandToMcu(pAd, 0x31, PowerWakeCID, 0x00, 0x02);   
+			AsicCheckCommanOk(pAd, PowerWakeCID);	
+			RTMP_CLEAR_FLAG(pAd, fRTMP_ADAPTER_IDLE_RADIO_OFF);
+			DBGPRINT(RT_DEBUG_TRACE, ("PSM - Issue Wake up command \n"));
+		}
+		else
+		{
+			RT28xxPciAsicRadioOn(pAd, GUI_IDLE_POWER_SAVE);
+		}
+	}
+#endif // PCIE_PS_SUPPORT //
+
+	// first check the parameter sanity
+	if (MlmeScanReqSanity(pAd, 
+						  Elem->Msg, 
+						  Elem->MsgLen, 
+						  &BssType, 
+						  (PCHAR)Ssid, 
+						  &SsidLen, 
+						  &ScanType)) 
+	{
+
+		// Check for channel load and noise hist request
+		// Suspend MSDU only at scan request, not the last two mentioned
+		// Suspend MSDU transmission here
+		RTMPSuspendMsduTransmission(pAd);
+		
+		//
+		// To prevent data lost.	
+		// Send an NULL data with turned PSM bit on to current associated AP before SCAN progress.
+		// And should send an NULL data with turned PSM bit off to AP, when scan progress done 
+		//
+		if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED) && (INFRA_ON(pAd)))
+		{
+			NStatus = MlmeAllocateMemory(pAd, (PVOID)&pOutBuffer);
+			if (NStatus	== NDIS_STATUS_SUCCESS)
+			{
+				pHdr80211 = (PHEADER_802_11) pOutBuffer;
+				MgtMacHeaderInit(pAd, pHdr80211, SUBTYPE_NULL_FUNC, 1, pAd->CommonCfg.Bssid, pAd->CommonCfg.Bssid);
+				pHdr80211->Duration = 0;
+				pHdr80211->FC.Type = BTYPE_DATA;
+				pHdr80211->FC.PwrMgmt = PWR_SAVE;
+
+				// Send using priority queue
+				MiniportMMRequest(pAd, 0, pOutBuffer, sizeof(HEADER_802_11));
+				DBGPRINT(RT_DEBUG_TRACE, ("MlmeScanReqAction -- Send PSM Data frame for off channel RM, SCAN_IN_PROGRESS=%d!\n",
+											RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_BSS_SCAN_IN_PROGRESS)));
+				MlmeFreeMemory(pAd, pOutBuffer);
+				OS_WAIT(20);
+			}
+		}
+		
+			RTMPSendWirelessEvent(pAd, IW_SCANNING_EVENT_FLAG, NULL, BSS0, 0);
+
+		NdisGetSystemUpTime(&Now);
+		pAd->StaCfg.LastScanTime = Now;
+		// reset all the timers
+		RTMPCancelTimer(&pAd->MlmeAux.BeaconTimer, &TimerCancelled);
+		RTMPCancelTimer(&pAd->MlmeAux.ScanTimer, &TimerCancelled);
+
+		// record desired BSS parameters
+		pAd->MlmeAux.BssType = BssType;
+		pAd->MlmeAux.ScanType = ScanType;
+		pAd->MlmeAux.SsidLen = SsidLen;
+        NdisZeroMemory(pAd->MlmeAux.Ssid, MAX_LEN_OF_SSID);
+		NdisMoveMemory(pAd->MlmeAux.Ssid, Ssid, SsidLen);
+
+		// start from the first channel
+		pAd->MlmeAux.Channel = FirstChannel(pAd);
+
+		// Let BBP register at 20MHz to do scan		
+		RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R4, &BBPValue);
+		BBPValue &= (~0x18);
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R4, BBPValue);
+		DBGPRINT(RT_DEBUG_TRACE, ("SYNC - BBP R4 to 20MHz.l\n"));
+#ifdef DOT11_N_SUPPORT
+#ifdef DOT11N_DRAFT3
+		// Before scan, reset trigger event table.
+		TriEventInit(pAd);
+#endif // DOT11N_DRAFT3 //
+#endif // DOT11_N_SUPPORT //
+		ScanNextChannel(pAd);
+		pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_OID_LIST_SCAN;
+	} 
+	else 
+	{
+		DBGPRINT_ERR(("SYNC - MlmeScanReqAction() sanity check fail\n"));
+		pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE;
+		Status = MLME_INVALID_FORMAT;
+		MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_SCAN_CONF, 2, &Status, 0);
+	}
+}
+
+/* 
+	==========================================================================
+	Description:
+		MLME JOIN req state machine procedure
+	==========================================================================
+ */
+VOID MlmeJoinReqAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+	UCHAR        BBPValue = 0;
+	BSS_ENTRY    *pBss;
+	BOOLEAN       TimerCancelled;
+	HEADER_802_11 Hdr80211;	
+	NDIS_STATUS   NStatus;
+	ULONG         FrameLen = 0;	
+	PUCHAR        pOutBuffer = NULL;
+	PUCHAR        pSupRate = NULL;
+	UCHAR         SupRateLen;
+	PUCHAR        pExtRate = NULL;
+	UCHAR         ExtRateLen;	
+	UCHAR         ASupRate[] = {0x8C, 0x12, 0x98, 0x24, 0xb0, 0x48, 0x60, 0x6C};
+	UCHAR         ASupRateLen = sizeof(ASupRate)/sizeof(UCHAR);	
+	MLME_JOIN_REQ_STRUCT *pInfo = (MLME_JOIN_REQ_STRUCT *)(Elem->Msg);
+
+	DBGPRINT(RT_DEBUG_TRACE, ("SYNC - MlmeJoinReqAction(BSS #%ld)\n", pInfo->BssIdx));
+
+#ifdef PCIE_PS_SUPPORT
+    if ((OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_ADVANCE_POWER_SAVE_PCIE_DEVICE)) && 
+        (IDLE_ON(pAd)) &&
+		(pAd->StaCfg.bRadio == TRUE) &&
+		(RTMP_TEST_FLAG(pAd, fRTMP_ADAPTER_IDLE_RADIO_OFF)))
+	{
+		RT28xxPciAsicRadioOn(pAd, GUI_IDLE_POWER_SAVE);
+	}
+#endif // PCIE_PS_SUPPORT //
+
+	// reset all the timers
+	RTMPCancelTimer(&pAd->MlmeAux.ScanTimer, &TimerCancelled);
+	RTMPCancelTimer(&pAd->MlmeAux.BeaconTimer, &TimerCancelled);
+
+	pBss = &pAd->MlmeAux.SsidBssTab.BssEntry[pInfo->BssIdx];
+
+	// record the desired SSID & BSSID we're waiting for
+	COPY_MAC_ADDR(pAd->MlmeAux.Bssid, pBss->Bssid);
+	
+	// If AP's SSID is not hidden, it is OK for updating ssid to MlmeAux again.
+	if (pBss->Hidden == 0)
+	{
+		RTMPZeroMemory(pAd->MlmeAux.Ssid, MAX_LEN_OF_SSID);
+		NdisMoveMemory(pAd->MlmeAux.Ssid, pBss->Ssid, pBss->SsidLen);	
+		pAd->MlmeAux.SsidLen = pBss->SsidLen;
+	}
+	
+	pAd->MlmeAux.BssType = pBss->BssType;
+	pAd->MlmeAux.Channel = pBss->Channel;
+	pAd->MlmeAux.CentralChannel = pBss->CentralChannel;
+	
+#ifdef EXT_BUILD_CHANNEL_LIST
+	// Country IE of the AP will be evaluated and will be used.
+	if ((pAd->StaCfg.IEEE80211dClientMode != Rt802_11_D_None) &&
+		(pBss->bHasCountryIE == TRUE))
+	{
+		NdisMoveMemory(&pAd->CommonCfg.CountryCode[0], &pBss->CountryString[0], 2);
+		if (pBss->CountryString[2] == 'I')
+			pAd->CommonCfg.Geography = IDOR;
+		else if (pBss->CountryString[2] == 'O')
+			pAd->CommonCfg.Geography = ODOR;
+		else
+			pAd->CommonCfg.Geography = BOTH;
+		BuildChannelListEx(pAd);
+	}
+#endif // EXT_BUILD_CHANNEL_LIST //
+	
+	// Let BBP register at 20MHz to do scan		
+	RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R4, &BBPValue);
+	BBPValue &= (~0x18);
+	RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R4, BBPValue);
+	pAd->CommonCfg.BBPCurrentBW = BW_20;
+	DBGPRINT(RT_DEBUG_TRACE, ("SYNC - BBP R4 to 20MHz.l\n"));
+
+	// switch channel and waiting for beacon timer
+	AsicSwitchChannel(pAd, pAd->MlmeAux.Channel, FALSE);
+	AsicLockChannel(pAd, pAd->MlmeAux.Channel);
+
+
+	RTMPSetTimer(&pAd->MlmeAux.BeaconTimer, JOIN_TIMEOUT);
+
+    do
+	{
+		if (((pAd->CommonCfg.bIEEE80211H == 1) && 
+            (pAd->MlmeAux.Channel > 14) && 
+             RadarChannelCheck(pAd, pAd->MlmeAux.Channel))
+#ifdef CARRIER_DETECTION_SUPPORT // Roger sync Carrier             
+             || (pAd->CommonCfg.CarrierDetect.Enable == TRUE)
+#endif // CARRIER_DETECTION_SUPPORT //
+            )
+		{
+			//
+			// We can't send any Probe request frame to meet 802.11h.
+			//
+			if (pBss->Hidden == 0)
+			break;
+		}
+        
+	//
+	// send probe request
+	//
+	NStatus = MlmeAllocateMemory(pAd, &pOutBuffer);
+	if (NStatus == NDIS_STATUS_SUCCESS)
+	{
+		if (pAd->MlmeAux.Channel <= 14)
+		{
+			pSupRate = pAd->CommonCfg.SupRate;
+			SupRateLen = pAd->CommonCfg.SupRateLen;
+			pExtRate = pAd->CommonCfg.ExtRate;
+			ExtRateLen = pAd->CommonCfg.ExtRateLen;
+		}
+		else
+		{
+			//
+			// Overwrite Support Rate, CCK rate are not allowed
+			//
+			pSupRate = ASupRate;
+			SupRateLen = ASupRateLen;
+			ExtRateLen = 0;
+		}
+
+		if (pAd->MlmeAux.BssType == BSS_INFRA)
+			MgtMacHeaderInit(pAd, &Hdr80211, SUBTYPE_PROBE_REQ, 0, pAd->MlmeAux.Bssid, pAd->MlmeAux.Bssid);
+		else
+			MgtMacHeaderInit(pAd, &Hdr80211, SUBTYPE_PROBE_REQ, 0, BROADCAST_ADDR, BROADCAST_ADDR);
+
+		MakeOutgoingFrame(pOutBuffer,               &FrameLen,
+						  sizeof(HEADER_802_11),    &Hdr80211,
+						  1,                        &SsidIe,
+						  1,                        &pAd->MlmeAux.SsidLen,
+						  pAd->MlmeAux.SsidLen,	    pAd->MlmeAux.Ssid,
+						  1,                        &SupRateIe,
+						  1,                        &SupRateLen,
+						  SupRateLen,               pSupRate,
+						  END_OF_ARGS);
+
+		if (ExtRateLen)
+		{
+			ULONG Tmp;
+			MakeOutgoingFrame(pOutBuffer + FrameLen,            &Tmp,
+							  1,                                &ExtRateIe,
+							  1,                                &ExtRateLen,
+							  ExtRateLen,                       pExtRate, 
+							  END_OF_ARGS);
+			FrameLen += Tmp;
+		}
+		
+
+#ifdef WPA_SUPPLICANT_SUPPORT
+		if ((pAd->OpMode == OPMODE_STA) &&
+			(pAd->StaCfg.WpaSupplicantUP != WPA_SUPPLICANT_DISABLE) &&
+			(pAd->StaCfg.WpsProbeReqIeLen != 0))
+		{
+			ULONG 		WpsTmpLen = 0;
+			
+			MakeOutgoingFrame(pOutBuffer + FrameLen,              &WpsTmpLen,
+							pAd->StaCfg.WpsProbeReqIeLen,	pAd->StaCfg.pWpsProbeReqIe,
+							END_OF_ARGS);
+
+			FrameLen += WpsTmpLen;
+		}
+#endif // WPA_SUPPLICANT_SUPPORT //
+
+		MiniportMMRequest(pAd, 0, pOutBuffer, FrameLen);
+		MlmeFreeMemory(pAd, pOutBuffer);
+	}
+    } while (FALSE);
+
+	DBGPRINT(RT_DEBUG_TRACE, ("SYNC - Switch to ch %d, Wait BEACON from %02x:%02x:%02x:%02x:%02x:%02x\n", 
+		pBss->Channel, pBss->Bssid[0], pBss->Bssid[1], pBss->Bssid[2], pBss->Bssid[3], pBss->Bssid[4], pBss->Bssid[5]));
+
+	pAd->Mlme.SyncMachine.CurrState = JOIN_WAIT_BEACON;
+}
+
+/* 
+	==========================================================================
+	Description:
+		MLME START Request state machine procedure, starting an IBSS
+	==========================================================================
+ */
+VOID MlmeStartReqAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+	UCHAR         Ssid[MAX_LEN_OF_SSID], SsidLen; 
+	BOOLEAN       TimerCancelled;
+
+	// New for WPA security suites
+	UCHAR						VarIE[MAX_VIE_LEN]; 	// Total VIE length = MAX_VIE_LEN - -5
+	NDIS_802_11_VARIABLE_IEs	*pVIE = NULL;
+	LARGE_INTEGER				TimeStamp;
+	BOOLEAN Privacy;
+	USHORT Status;
+
+	// Init Variable IE structure
+	pVIE = (PNDIS_802_11_VARIABLE_IEs) VarIE;
+	pVIE->Length = 0;
+	TimeStamp.u.LowPart  = 0;
+	TimeStamp.u.HighPart = 0;
+
+	if ((MlmeStartReqSanity(pAd, Elem->Msg, Elem->MsgLen, (PCHAR)Ssid, &SsidLen)) &&
+		(CHAN_PropertyCheck(pAd, pAd->MlmeAux.Channel, CHANNEL_NO_IBSS) == FALSE))
+	{
+		// reset all the timers
+		RTMPCancelTimer(&pAd->MlmeAux.ScanTimer, &TimerCancelled);
+		RTMPCancelTimer(&pAd->MlmeAux.BeaconTimer, &TimerCancelled);
+
+		//
+		// Start a new IBSS. All IBSS parameters are decided now....
+		//
+		DBGPRINT(RT_DEBUG_TRACE, ("MlmeStartReqAction - Start a new IBSS. All IBSS parameters are decided now.... \n"));
+		pAd->MlmeAux.BssType           = BSS_ADHOC;
+		NdisMoveMemory(pAd->MlmeAux.Ssid, Ssid, SsidLen); 
+		pAd->MlmeAux.SsidLen           = SsidLen;
+
+		// generate a radom number as BSSID
+		MacAddrRandomBssid(pAd, pAd->MlmeAux.Bssid);
+		DBGPRINT(RT_DEBUG_TRACE, ("MlmeStartReqAction - generate a radom number as BSSID \n"));
+
+		Privacy = (pAd->StaCfg.WepStatus == Ndis802_11Encryption1Enabled) || 
+				  (pAd->StaCfg.WepStatus == Ndis802_11Encryption2Enabled) || 
+				  (pAd->StaCfg.WepStatus == Ndis802_11Encryption3Enabled);
+		pAd->MlmeAux.CapabilityInfo    = CAP_GENERATE(0,1,Privacy, (pAd->CommonCfg.TxPreamble == Rt802_11PreambleShort), 1, 0);
+		pAd->MlmeAux.BeaconPeriod      = pAd->CommonCfg.BeaconPeriod;
+		pAd->MlmeAux.AtimWin           = pAd->StaCfg.AtimWin;
+		pAd->MlmeAux.Channel           = pAd->CommonCfg.Channel;
+
+		pAd->CommonCfg.CentralChannel  = pAd->CommonCfg.Channel;
+		pAd->MlmeAux.CentralChannel    = pAd->CommonCfg.CentralChannel;
+
+		pAd->MlmeAux.SupRateLen= pAd->CommonCfg.SupRateLen;
+		NdisMoveMemory(pAd->MlmeAux.SupRate, pAd->CommonCfg.SupRate, MAX_LEN_OF_SUPPORTED_RATES);
+		RTMPCheckRates(pAd, pAd->MlmeAux.SupRate, &pAd->MlmeAux.SupRateLen);
+		pAd->MlmeAux.ExtRateLen = pAd->CommonCfg.ExtRateLen;
+		NdisMoveMemory(pAd->MlmeAux.ExtRate, pAd->CommonCfg.ExtRate, MAX_LEN_OF_SUPPORTED_RATES);
+		RTMPCheckRates(pAd, pAd->MlmeAux.ExtRate, &pAd->MlmeAux.ExtRateLen);
+#ifdef DOT11_N_SUPPORT
+		if ((pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED) && (pAd->StaCfg.bAdhocN == TRUE))
+		{
+			RTMPUpdateHTIE(&pAd->CommonCfg.DesiredHtPhy, &pAd->StaCfg.DesiredHtPhyInfo.MCSSet[0], &pAd->MlmeAux.HtCapability, &pAd->MlmeAux.AddHtInfo);
+			pAd->MlmeAux.HtCapabilityLen = sizeof(HT_CAPABILITY_IE);
+			// Not turn pAd->StaActive.SupportedHtPhy.bHtEnable = TRUE here.
+			DBGPRINT(RT_DEBUG_TRACE, ("SYNC -pAd->StaActive.SupportedHtPhy.bHtEnable = TRUE\n"));
+		}
+		else
+#endif // DOT11_N_SUPPORT //
+		{
+			pAd->MlmeAux.HtCapabilityLen = 0;
+			pAd->StaActive.SupportedPhyInfo.bHtEnable = FALSE;
+			NdisZeroMemory(&pAd->StaActive.SupportedPhyInfo.MCSSet[0], 16);
+		}
+		// temporarily not support QOS in IBSS
+		NdisZeroMemory(&pAd->MlmeAux.APEdcaParm, sizeof(EDCA_PARM));
+		NdisZeroMemory(&pAd->MlmeAux.APQbssLoad, sizeof(QBSS_LOAD_PARM));
+		NdisZeroMemory(&pAd->MlmeAux.APQosCapability, sizeof(QOS_CAPABILITY_PARM));
+
+		AsicSwitchChannel(pAd, pAd->MlmeAux.Channel, FALSE);
+		AsicLockChannel(pAd, pAd->MlmeAux.Channel);
+
+		DBGPRINT(RT_DEBUG_TRACE, ("SYNC - MlmeStartReqAction(ch= %d,sup rates= %d, ext rates=%d)\n",
+			pAd->MlmeAux.Channel, pAd->MlmeAux.SupRateLen, pAd->MlmeAux.ExtRateLen));
+
+		pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE;
+		Status = MLME_SUCCESS;
+		MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_START_CONF, 2, &Status, 0);
+	} 
+	else 
+	{
+		DBGPRINT_ERR(("SYNC - MlmeStartReqAction() sanity check fail.\n"));
+		pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE;
+		Status = MLME_INVALID_FORMAT;
+		MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_START_CONF, 2, &Status, 0);
+	}
+}
+
+/* 
+	==========================================================================
+	Description:
+		peer sends beacon back when scanning
+	==========================================================================
+ */
+VOID PeerBeaconAtScanAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+	UCHAR           Bssid[MAC_ADDR_LEN], Addr2[MAC_ADDR_LEN];
+	UCHAR           Ssid[MAX_LEN_OF_SSID], BssType, Channel = 0, NewChannel,
+					SsidLen, DtimCount, DtimPeriod, BcastFlag, MessageToMe;
+	CF_PARM         CfParm;
+	USHORT          BeaconPeriod, AtimWin, CapabilityInfo;
+	PFRAME_802_11   pFrame;
+	LARGE_INTEGER   TimeStamp;
+	UCHAR           Erp;
+	UCHAR         	SupRate[MAX_LEN_OF_SUPPORTED_RATES], ExtRate[MAX_LEN_OF_SUPPORTED_RATES];
+	UCHAR		  	SupRateLen, ExtRateLen;
+	USHORT 			LenVIE;
+	UCHAR			CkipFlag;
+	UCHAR			AironetCellPowerLimit;
+	EDCA_PARM       EdcaParm;
+	QBSS_LOAD_PARM  QbssLoad;
+	QOS_CAPABILITY_PARM QosCapability;
+	ULONG						RalinkIe;
+	UCHAR						VarIE[MAX_VIE_LEN];		// Total VIE length = MAX_VIE_LEN - -5
+	NDIS_802_11_VARIABLE_IEs	*pVIE = NULL;
+	HT_CAPABILITY_IE		HtCapability;
+	ADD_HT_INFO_IE		AddHtInfo;	// AP might use this additional ht info IE 
+	UCHAR			HtCapabilityLen = 0, PreNHtCapabilityLen = 0;
+	UCHAR			AddHtInfoLen;
+	UCHAR			NewExtChannelOffset = 0xff;
+
+	EXT_CAP_INFO_ELEMENT	ExtCapInfo;
+
+
+	NdisZeroMemory(Ssid, MAX_LEN_OF_SSID);
+	pFrame = (PFRAME_802_11) Elem->Msg;
+	// Init Variable IE structure
+	pVIE = (PNDIS_802_11_VARIABLE_IEs) VarIE;
+	pVIE->Length = 0;
+#ifdef DOT11_N_SUPPORT
+    RTMPZeroMemory(&HtCapability, sizeof(HtCapability));
+	RTMPZeroMemory(&AddHtInfo, sizeof(ADD_HT_INFO_IE));
+#endif // DOT11_N_SUPPORT //
+
+	NdisZeroMemory(&QbssLoad, sizeof(QBSS_LOAD_PARM)); /* woody */
+	if (PeerBeaconAndProbeRspSanity(pAd, 
+								Elem->Msg, 
+								Elem->MsgLen, 
+								Elem->Channel,
+								Addr2, 
+								Bssid, 
+								(PCHAR)Ssid, 
+								&SsidLen, 
+								&BssType, 
+								&BeaconPeriod, 
+								&Channel, 
+								&NewChannel,
+								&TimeStamp, 
+								&CfParm, 
+								&AtimWin, 
+								&CapabilityInfo, 
+								&Erp,
+								&DtimCount, 
+								&DtimPeriod, 
+								&BcastFlag, 
+								&MessageToMe, 
+								SupRate,
+								&SupRateLen,
+								ExtRate,
+								&ExtRateLen,
+								&CkipFlag,
+								&AironetCellPowerLimit,
+								&EdcaParm,
+								&QbssLoad,
+								&QosCapability,
+								&RalinkIe,
+								&HtCapabilityLen,
+#ifdef CONFIG_STA_SUPPORT
+								&PreNHtCapabilityLen,
+#endif // CONFIG_STA_SUPPORT //
+								&HtCapability,
+								&ExtCapInfo,
+								&AddHtInfoLen,
+								&AddHtInfo,
+								&NewExtChannelOffset,
+								&LenVIE,
+								pVIE)) 
+	{
+		ULONG Idx;
+		CHAR Rssi = 0;
+
+		Idx = BssTableSearch(&pAd->ScanTab, Bssid, Channel);
+		if (Idx != BSS_NOT_FOUND) 
+			Rssi = pAd->ScanTab.BssEntry[Idx].Rssi;
+
+		Rssi = RTMPMaxRssi(pAd, ConvertToRssi(pAd, Elem->Rssi0, RSSI_0), ConvertToRssi(pAd, Elem->Rssi1, RSSI_1), ConvertToRssi(pAd, Elem->Rssi2, RSSI_2));
+
+
+#ifdef DOT11_N_SUPPORT
+		if ((HtCapabilityLen > 0) || (PreNHtCapabilityLen > 0))
+			HtCapabilityLen = SIZE_HT_CAP_IE;
+#endif // DOT11_N_SUPPORT //
+
+		Idx = BssTableSetEntry(pAd, &pAd->ScanTab, Bssid, (PCHAR)Ssid, SsidLen, BssType, BeaconPeriod,
+					  &CfParm, AtimWin, CapabilityInfo, SupRate, SupRateLen, ExtRate, ExtRateLen,  &HtCapability,
+					 &AddHtInfo, HtCapabilityLen, AddHtInfoLen, NewExtChannelOffset, Channel, Rssi, TimeStamp, CkipFlag, 
+					 &EdcaParm, &QosCapability, &QbssLoad, LenVIE, pVIE);
+#ifdef DOT11_N_SUPPORT
+#ifdef DOT11N_DRAFT3
+		if (INFRA_ON(pAd) && 
+			(pAd->CommonCfg.bBssCoexEnable == TRUE) && 
+			((Channel > 0) && (Channel <= 14)))
+		{
+			int chListIdx;
+
+			/* 
+				First we find the channel list idx by the channel number
+			*/
+			for (chListIdx = 0; chListIdx < pAd->ChannelListNum; chListIdx++)
+			{
+				if (Channel == pAd->ChannelList[chListIdx].Channel)
+					break;
+			}
+
+			if (chListIdx < pAd->ChannelListNum)
+			{
+				DBGPRINT(RT_DEBUG_TRACE, ("%s():Check Ch(%d) with ChList[Idx=%d,Ch=%d,bEffected=%d]\n",
+							__FUNCTION__, Channel, chListIdx, pAd->ChannelList[chListIdx].Channel,
+							pAd->ChannelList[chListIdx].bEffectedChannel));
+				/* 
+					If this channel is effected channel for the 20/40 coex operation. Check the related IEs.
+				*/
+				if (pAd->ChannelList[chListIdx].bEffectedChannel == TRUE)
+				{
+					UCHAR RegClass;
+					OVERLAP_BSS_SCAN_IE	BssScan;
+
+					// Read Beacon's Reg Class IE if any.
+					PeerBeaconAndProbeRspSanity2(pAd, Elem->Msg, Elem->MsgLen, &BssScan, &RegClass);
+					DBGPRINT(RT_DEBUG_TRACE, ("%s():RegClass=%d, HtCapLen=%d, Ch=%d\n",
+									 __FUNCTION__, RegClass, HtCapabilityLen, Channel));
+					TriEventTableSetEntry(pAd, &pAd->CommonCfg.TriggerEventTab, Bssid, &HtCapability, HtCapabilityLen, RegClass, Channel);
+				}
+			}
+		}
+#endif // DOT11N_DRAFT3 //
+#endif // DOT11_N_SUPPORT //
+		if (Idx != BSS_NOT_FOUND)
+		{
+			PBSS_ENTRY	pBssEntry = &pAd->ScanTab.BssEntry[Idx];
+			NdisMoveMemory(pBssEntry->PTSF, &Elem->Msg[24], 4);
+			NdisMoveMemory(&pBssEntry->TTSF[0], &Elem->TimeStamp.u.LowPart, 4);
+			NdisMoveMemory(&pBssEntry->TTSF[4], &Elem->TimeStamp.u.LowPart, 4);
+
+			pBssEntry->MinSNR = Elem->Signal % 10;
+			if (pBssEntry->MinSNR == 0)
+				pBssEntry->MinSNR = -5;
+
+			NdisMoveMemory(pBssEntry->MacAddr, Addr2, MAC_ADDR_LEN);
+
+			if ((pFrame->Hdr.FC.SubType == SUBTYPE_PROBE_RSP) &&
+				(LenVIE != 0))
+			{
+				pBssEntry->VarIeFromProbeRspLen = 0;
+				if (pBssEntry->pVarIeFromProbRsp)
+				{
+					pBssEntry->VarIeFromProbeRspLen = LenVIE;
+					RTMPZeroMemory(pBssEntry->pVarIeFromProbRsp, MAX_VIE_LEN);
+					RTMPMoveMemory(pBssEntry->pVarIeFromProbRsp, pVIE, LenVIE);
+				}
+			}
+		}
+
+#ifdef LINUX
+#ifdef RT_CFG80211_SUPPORT
+		RT_CFG80211_SCANNING_INFORM(pAd, Idx, Elem->Channel, (UCHAR *)pFrame,
+									Elem->MsgLen, Rssi, MEM_ALLOC_FLAG);
+#endif // RT_CFG80211_SUPPORT //
+#endif // LINUX //
+	}
+	// sanity check fail, ignored
+}
+
+/* 
+	==========================================================================
+	Description:
+		When waiting joining the (I)BSS, beacon received from external
+	==========================================================================
+ */
+VOID PeerBeaconAtJoinAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+	UCHAR         Bssid[MAC_ADDR_LEN], Addr2[MAC_ADDR_LEN];
+	UCHAR         Ssid[MAX_LEN_OF_SSID], SsidLen, BssType, Channel, MessageToMe, 
+				  DtimCount, DtimPeriod, BcastFlag, NewChannel; 
+	LARGE_INTEGER TimeStamp;
+	USHORT        BeaconPeriod, AtimWin, CapabilityInfo;
+	CF_PARM       Cf;
+	BOOLEAN       TimerCancelled;
+	UCHAR         Erp;
+	UCHAR         SupRate[MAX_LEN_OF_SUPPORTED_RATES], ExtRate[MAX_LEN_OF_SUPPORTED_RATES];
+	UCHAR		  SupRateLen, ExtRateLen;
+	UCHAR         CkipFlag;
+	USHORT 		  LenVIE;
+	UCHAR		  AironetCellPowerLimit;
+	EDCA_PARM       EdcaParm;
+	QBSS_LOAD_PARM  QbssLoad;
+	QOS_CAPABILITY_PARM QosCapability;
+	USHORT        Status;
+	UCHAR						VarIE[MAX_VIE_LEN];		// Total VIE length = MAX_VIE_LEN - -5
+	NDIS_802_11_VARIABLE_IEs	*pVIE = NULL;
+	ULONG           RalinkIe;
+	ULONG         Idx = 0;
+	CHAR			Rssi = 0;
+	HT_CAPABILITY_IE		HtCapability;
+	ADD_HT_INFO_IE		AddHtInfo;	// AP might use this additional ht info IE 
+	UCHAR				HtCapabilityLen = 0, PreNHtCapabilityLen = 0;
+	UCHAR			AddHtInfoLen;
+	UCHAR			NewExtChannelOffset = 0xff;
+#ifdef DOT11_N_SUPPORT
+	UCHAR			CentralChannel;
+	BOOLEAN			bAllowNrate = FALSE;
+#endif // DOT11_N_SUPPORT //
+	EXT_CAP_INFO_ELEMENT	ExtCapInfo;
+
+	// Init Variable IE structure
+	pVIE = (PNDIS_802_11_VARIABLE_IEs) VarIE;
+	pVIE->Length = 0;
+    RTMPZeroMemory(&HtCapability, sizeof(HtCapability));
+	RTMPZeroMemory(&AddHtInfo, sizeof(ADD_HT_INFO_IE));
+
+
+	if (PeerBeaconAndProbeRspSanity(pAd, 
+								Elem->Msg, 
+								Elem->MsgLen, 
+								Elem->Channel,
+								Addr2, 
+								Bssid, 
+								(PCHAR)Ssid, 
+								&SsidLen, 
+								&BssType, 
+								&BeaconPeriod, 
+								&Channel, 
+								&NewChannel,
+								&TimeStamp, 
+								&Cf, 
+								&AtimWin, 
+								&CapabilityInfo, 
+								&Erp,
+								&DtimCount, 
+								&DtimPeriod, 
+								&BcastFlag, 
+								&MessageToMe, 
+								SupRate,
+								&SupRateLen,
+								ExtRate,
+								&ExtRateLen,
+								&CkipFlag,
+								&AironetCellPowerLimit,
+								&EdcaParm,
+								&QbssLoad,
+								&QosCapability,
+								&RalinkIe,
+								&HtCapabilityLen,
+								&PreNHtCapabilityLen,
+								&HtCapability,
+								&ExtCapInfo,
+								&AddHtInfoLen,
+								&AddHtInfo,
+								&NewExtChannelOffset,
+								&LenVIE,
+								pVIE)) 
+	{
+		// Disqualify 11b only adhoc when we are in 11g only adhoc mode
+		if ((BssType == BSS_ADHOC) && (pAd->CommonCfg.PhyMode == PHY_11G) && ((SupRateLen+ExtRateLen)< 12))
+			return;
+
+		// BEACON from desired BSS/IBSS found. We should be able to decide most
+		// BSS parameters here.
+		// Q. But what happen if this JOIN doesn't conclude a successful ASSOCIATEION?
+		//    Do we need to receover back all parameters belonging to previous BSS?
+		// A. Should be not. There's no back-door recover to previous AP. It still need
+		//    a new JOIN-AUTH-ASSOC sequence.
+		if (MAC_ADDR_EQUAL(pAd->MlmeAux.Bssid, Bssid)) 
+		{
+			DBGPRINT(RT_DEBUG_TRACE, ("SYNC - receive desired BEACON at JoinWaitBeacon... Channel = %d\n", Channel));
+			RTMPCancelTimer(&pAd->MlmeAux.BeaconTimer, &TimerCancelled);
+
+			// Update RSSI to prevent No signal display when cards first initialized
+			pAd->StaCfg.RssiSample.LastRssi0	= ConvertToRssi(pAd, Elem->Rssi0, RSSI_0);
+			pAd->StaCfg.RssiSample.LastRssi1	= ConvertToRssi(pAd, Elem->Rssi1, RSSI_1);
+			pAd->StaCfg.RssiSample.LastRssi2	= ConvertToRssi(pAd, Elem->Rssi2, RSSI_2);
+			pAd->StaCfg.RssiSample.AvgRssi0	= pAd->StaCfg.RssiSample.LastRssi0;
+			pAd->StaCfg.RssiSample.AvgRssi0X8	= pAd->StaCfg.RssiSample.AvgRssi0 << 3;
+			pAd->StaCfg.RssiSample.AvgRssi1	= pAd->StaCfg.RssiSample.LastRssi1;
+			pAd->StaCfg.RssiSample.AvgRssi1X8	= pAd->StaCfg.RssiSample.AvgRssi1 << 3;
+			pAd->StaCfg.RssiSample.AvgRssi2	= pAd->StaCfg.RssiSample.LastRssi2;
+			pAd->StaCfg.RssiSample.AvgRssi2X8	= pAd->StaCfg.RssiSample.AvgRssi2 << 3;
+
+			//
+			// We need to check if SSID only set to any, then we can record the current SSID.
+			// Otherwise will cause hidden SSID association failed. 
+			//
+			if (pAd->MlmeAux.SsidLen == 0)
+			{
+				NdisMoveMemory(pAd->MlmeAux.Ssid, Ssid, SsidLen);
+				pAd->MlmeAux.SsidLen = SsidLen;
+			}
+			else
+			{
+				Idx = BssSsidTableSearch(&pAd->ScanTab, Bssid, pAd->MlmeAux.Ssid, pAd->MlmeAux.SsidLen, Channel);
+
+				if (Idx == BSS_NOT_FOUND)				
+				{
+					Rssi = RTMPMaxRssi(pAd, ConvertToRssi(pAd, Elem->Rssi0, RSSI_0), ConvertToRssi(pAd, Elem->Rssi1, RSSI_1), ConvertToRssi(pAd, Elem->Rssi2, RSSI_2));
+					Idx = BssTableSetEntry(pAd, &pAd->ScanTab, Bssid, (CHAR *) Ssid, SsidLen, BssType, BeaconPeriod,
+										&Cf, AtimWin, CapabilityInfo, SupRate, SupRateLen, ExtRate, ExtRateLen,  &HtCapability,
+										&AddHtInfo, HtCapabilityLen, AddHtInfoLen, NewExtChannelOffset, Channel, Rssi, TimeStamp, CkipFlag,
+										&EdcaParm, &QosCapability, &QbssLoad, LenVIE, pVIE);
+					if (Idx != BSS_NOT_FOUND)
+					{
+						NdisMoveMemory(pAd->ScanTab.BssEntry[Idx].PTSF, &Elem->Msg[24], 4);
+						NdisMoveMemory(&pAd->ScanTab.BssEntry[Idx].TTSF[0], &Elem->TimeStamp.u.LowPart, 4);
+						NdisMoveMemory(&pAd->ScanTab.BssEntry[Idx].TTSF[4], &Elem->TimeStamp.u.LowPart, 4);
+						CapabilityInfo = pAd->ScanTab.BssEntry[Idx].CapabilityInfo;
+
+						pAd->ScanTab.BssEntry[Idx].MinSNR = Elem->Signal % 10;
+						if (pAd->ScanTab.BssEntry[Idx].MinSNR == 0)
+							pAd->ScanTab.BssEntry[Idx].MinSNR = -5;
+
+						NdisMoveMemory(pAd->ScanTab.BssEntry[Idx].MacAddr, Addr2, MAC_ADDR_LEN);
+					}
+				}
+				else
+				{
+					//
+					// Multiple SSID case, used correct CapabilityInfo
+					//
+					CapabilityInfo = pAd->ScanTab.BssEntry[Idx].CapabilityInfo;
+				}
+			}
+			NdisMoveMemory(pAd->MlmeAux.Bssid, Bssid, MAC_ADDR_LEN);
+			pAd->MlmeAux.CapabilityInfo = CapabilityInfo & SUPPORTED_CAPABILITY_INFO;
+			pAd->MlmeAux.BssType = BssType;
+			pAd->MlmeAux.BeaconPeriod = BeaconPeriod;
+			pAd->MlmeAux.Channel = Channel;
+			pAd->MlmeAux.AtimWin = AtimWin;
+			pAd->MlmeAux.CfpPeriod = Cf.CfpPeriod;
+			pAd->MlmeAux.CfpMaxDuration = Cf.CfpMaxDuration;
+			pAd->MlmeAux.APRalinkIe = RalinkIe;
+
+			// Copy AP's supported rate to MlmeAux for creating assoication request
+			// Also filter out not supported rate
+			pAd->MlmeAux.SupRateLen = SupRateLen;
+			NdisMoveMemory(pAd->MlmeAux.SupRate, SupRate, SupRateLen);
+			RTMPCheckRates(pAd, pAd->MlmeAux.SupRate, &pAd->MlmeAux.SupRateLen);
+			pAd->MlmeAux.ExtRateLen = ExtRateLen;
+			NdisMoveMemory(pAd->MlmeAux.ExtRate, ExtRate, ExtRateLen);
+			RTMPCheckRates(pAd, pAd->MlmeAux.ExtRate, &pAd->MlmeAux.ExtRateLen);
+
+            NdisZeroMemory(pAd->StaActive.SupportedPhyInfo.MCSSet, 16);
+
+
+			/*  Get the ext capability info element */
+			NdisMoveMemory(&pAd->MlmeAux.ExtCapInfo, &ExtCapInfo,sizeof(ExtCapInfo));
+
+#ifdef DOT11_N_SUPPORT
+#ifdef DOT11N_DRAFT3
+			DBGPRINT(RT_DEBUG_TRACE, ("MlmeAux.ExtCapInfo=%d\n", pAd->MlmeAux.ExtCapInfo.BssCoexistMgmtSupport));
+			if (pAd->CommonCfg.bBssCoexEnable == TRUE)
+				pAd->CommonCfg.ExtCapIE.BssCoexistMgmtSupport = 1;
+#endif // DOT11N_DRAFT3 //
+
+			if (((pAd->StaCfg.WepStatus != Ndis802_11WEPEnabled) && (pAd->StaCfg.WepStatus != Ndis802_11Encryption2Enabled))
+				|| (pAd->CommonCfg.HT_DisallowTKIP == FALSE))
+			{
+				if ((pAd->StaCfg.BssType == BSS_INFRA) || 
+					((pAd->StaCfg.BssType == BSS_ADHOC) && (pAd->StaCfg.bAdhocN == TRUE)))
+					bAllowNrate = TRUE;			
+			}
+
+			pAd->MlmeAux.NewExtChannelOffset = NewExtChannelOffset;
+			pAd->MlmeAux.HtCapabilityLen = HtCapabilityLen;
+
+			RTMPZeroMemory(&pAd->MlmeAux.HtCapability, SIZE_HT_CAP_IE);
+			// filter out un-supported ht rates
+			if (((HtCapabilityLen > 0) || (PreNHtCapabilityLen > 0)) && 
+				(pAd->StaCfg.DesiredHtPhyInfo.bHtEnable) &&
+				((pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED) && bAllowNrate))
+			{
+   				RTMPMoveMemory(&pAd->MlmeAux.AddHtInfo, &AddHtInfo, SIZE_ADD_HT_INFO_IE);
+				
+                // StaActive.SupportedHtPhy.MCSSet stores Peer AP's 11n Rx capability
+				NdisMoveMemory(pAd->StaActive.SupportedPhyInfo.MCSSet, HtCapability.MCSSet, 16);
+				pAd->MlmeAux.NewExtChannelOffset = NewExtChannelOffset;
+				pAd->MlmeAux.HtCapabilityLen = SIZE_HT_CAP_IE;
+				pAd->StaActive.SupportedPhyInfo.bHtEnable = TRUE;
+				if (PreNHtCapabilityLen > 0)
+					pAd->StaActive.SupportedPhyInfo.bPreNHt = TRUE;
+				RTMPCheckHt(pAd, BSSID_WCID, &HtCapability, &AddHtInfo);
+				// Copy AP Parameter to StaActive.  This is also in LinkUp.
+				DBGPRINT(RT_DEBUG_TRACE, ("PeerBeaconAtJoinAction! (MpduDensity=%d, MaxRAmpduFactor=%d, BW=%d)\n", 
+					pAd->StaActive.SupportedHtPhy.MpduDensity, pAd->StaActive.SupportedHtPhy.MaxRAmpduFactor, HtCapability.HtCapInfo.ChannelWidth));
+				
+				if (AddHtInfoLen > 0)
+				{
+					CentralChannel = AddHtInfo.ControlChan;
+		 			// Check again the Bandwidth capability of this AP.
+		 			if ((AddHtInfo.ControlChan > 2)&& (AddHtInfo.AddHtInfo.ExtChanOffset == EXTCHA_BELOW) && (HtCapability.HtCapInfo.ChannelWidth == BW_40))
+		 			{
+		 				CentralChannel = AddHtInfo.ControlChan - 2;
+		 			}
+		 			else if ((AddHtInfo.AddHtInfo.ExtChanOffset == EXTCHA_ABOVE) && (HtCapability.HtCapInfo.ChannelWidth == BW_40))
+		 			{
+		 				CentralChannel = AddHtInfo.ControlChan + 2;
+		 			}
+                    
+                    // Check Error .
+					if (pAd->MlmeAux.CentralChannel != CentralChannel)
+		 				DBGPRINT(RT_DEBUG_ERROR, ("PeerBeaconAtJoinAction HT===>Beacon Central Channel = %d, Control Channel = %d. Mlmeaux CentralChannel = %d\n", CentralChannel, AddHtInfo.ControlChan, pAd->MlmeAux.CentralChannel));
+
+		 			DBGPRINT(RT_DEBUG_TRACE, ("PeerBeaconAtJoinAction HT===>Central Channel = %d, Control Channel = %d,  .\n", CentralChannel, AddHtInfo.ControlChan));
+
+				}
+				
+			}
+			else
+#endif // DOT11_N_SUPPORT //
+			{
+   				// To prevent error, let legacy AP must have same CentralChannel and Channel.
+				if ((HtCapabilityLen == 0) && (PreNHtCapabilityLen == 0))
+					pAd->MlmeAux.CentralChannel = pAd->MlmeAux.Channel;
+
+				pAd->StaActive.SupportedPhyInfo.bHtEnable = FALSE;
+				pAd->MlmeAux.NewExtChannelOffset = 0xff;
+				RTMPZeroMemory(&pAd->MlmeAux.HtCapability, SIZE_HT_CAP_IE);
+				pAd->MlmeAux.HtCapabilityLen = 0;
+				RTMPZeroMemory(&pAd->MlmeAux.AddHtInfo, SIZE_ADD_HT_INFO_IE);
+			}
+
+			RTMPUpdateMlmeRate(pAd);
+	
+			// copy QOS related information
+			if ((pAd->CommonCfg.bWmmCapable)
+#ifdef DOT11_N_SUPPORT
+				 || (pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED)
+#endif // DOT11_N_SUPPORT //
+				)
+			{
+				NdisMoveMemory(&pAd->MlmeAux.APEdcaParm, &EdcaParm, sizeof(EDCA_PARM));
+				NdisMoveMemory(&pAd->MlmeAux.APQbssLoad, &QbssLoad, sizeof(QBSS_LOAD_PARM));
+				NdisMoveMemory(&pAd->MlmeAux.APQosCapability, &QosCapability, sizeof(QOS_CAPABILITY_PARM));
+			}
+			else
+			{
+				NdisZeroMemory(&pAd->MlmeAux.APEdcaParm, sizeof(EDCA_PARM));
+				NdisZeroMemory(&pAd->MlmeAux.APQbssLoad, sizeof(QBSS_LOAD_PARM));
+				NdisZeroMemory(&pAd->MlmeAux.APQosCapability, sizeof(QOS_CAPABILITY_PARM));
+			}
+			
+			DBGPRINT(RT_DEBUG_TRACE, ("SYNC - after JOIN, SupRateLen=%d, ExtRateLen=%d\n", 
+				pAd->MlmeAux.SupRateLen, pAd->MlmeAux.ExtRateLen));
+
+			if (AironetCellPowerLimit != 0xFF)
+			{
+				//We need to change our TxPower for CCX 2.0 AP Control of Client Transmit Power
+				ChangeToCellPowerLimit(pAd, AironetCellPowerLimit);
+			}
+			else  //Used the default TX Power Percentage.
+				pAd->CommonCfg.TxPowerPercentage = pAd->CommonCfg.TxPowerDefault;
+
+			InitChannelRelatedValue(pAd);
+
+			pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE;
+			Status = MLME_SUCCESS;
+			MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_JOIN_CONF, 2, &Status, 0);
+
+#ifdef LINUX
+#ifdef RT_CFG80211_SUPPORT
+			RT_CFG80211_SCANNING_INFORM(pAd, Idx, Elem->Channel, Elem->Msg,
+										Elem->MsgLen, Rssi, MEM_ALLOC_FLAG);
+#endif // RT_CFG80211_SUPPORT //
+#endif // LINUX //
+		}
+		// not to me BEACON, ignored
+	} 
+	// sanity check fail, ignore this frame
+}
+
+/* 
+	==========================================================================
+	Description:
+		receive BEACON from peer
+
+	IRQL = DISPATCH_LEVEL
+
+	==========================================================================
+ */
+VOID PeerBeacon(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+	UCHAR         Bssid[MAC_ADDR_LEN], Addr2[MAC_ADDR_LEN];
+	CHAR          Ssid[MAX_LEN_OF_SSID];
+	CF_PARM       CfParm;
+	UCHAR         SsidLen, MessageToMe=0, BssType, Channel, NewChannel, index=0;
+	UCHAR         DtimCount=0, DtimPeriod=0, BcastFlag=0;
+	USHORT        CapabilityInfo, AtimWin, BeaconPeriod;
+	LARGE_INTEGER TimeStamp;
+	USHORT        TbttNumToNextWakeUp;
+	UCHAR         Erp;
+	UCHAR         SupRate[MAX_LEN_OF_SUPPORTED_RATES], ExtRate[MAX_LEN_OF_SUPPORTED_RATES];
+	UCHAR		  SupRateLen, ExtRateLen;
+	UCHAR		  CkipFlag;
+	USHORT        LenVIE;
+	UCHAR		  AironetCellPowerLimit;
+	EDCA_PARM       EdcaParm;
+	QBSS_LOAD_PARM  QbssLoad;
+	QOS_CAPABILITY_PARM QosCapability;
+	ULONG           RalinkIe;
+	// New for WPA security suites
+	UCHAR						VarIE[MAX_VIE_LEN];		// Total VIE length = MAX_VIE_LEN - -5
+	NDIS_802_11_VARIABLE_IEs	*pVIE = NULL;
+	HT_CAPABILITY_IE		HtCapability;
+	ADD_HT_INFO_IE		AddHtInfo;	// AP might use this additional ht info IE 
+	UCHAR			HtCapabilityLen, PreNHtCapabilityLen;
+	UCHAR			AddHtInfoLen;
+	UCHAR			NewExtChannelOffset = 0xff;
+	EXT_CAP_INFO_ELEMENT	ExtCapInfo;
+
+
+#ifdef RALINK_ATE
+    if (ATE_ON(pAd))
+    {
+		return;
+    }
+#endif // RALINK_ATE //
+
+	if (!(INFRA_ON(pAd) || ADHOC_ON(pAd)
+		))
+		return;
+
+	// Init Variable IE structure
+	pVIE = (PNDIS_802_11_VARIABLE_IEs) VarIE;
+	pVIE->Length = 0;
+    RTMPZeroMemory(&HtCapability, sizeof(HtCapability));
+	RTMPZeroMemory(&AddHtInfo, sizeof(ADD_HT_INFO_IE));
+	RTMPZeroMemory(&ExtCapInfo, sizeof(ExtCapInfo));
+
+	if (PeerBeaconAndProbeRspSanity(pAd, 
+								Elem->Msg, 
+								Elem->MsgLen, 
+								Elem->Channel,
+								Addr2, 
+								Bssid, 
+								Ssid, 
+								&SsidLen, 
+								&BssType, 
+								&BeaconPeriod, 
+								&Channel, 
+								&NewChannel,
+								&TimeStamp, 
+								&CfParm, 
+								&AtimWin, 
+								&CapabilityInfo, 
+								&Erp,
+								&DtimCount, 
+								&DtimPeriod, 
+								&BcastFlag, 
+								&MessageToMe, 
+								SupRate,
+								&SupRateLen,
+								ExtRate,
+								&ExtRateLen,
+								&CkipFlag,
+								&AironetCellPowerLimit,
+								&EdcaParm,
+								&QbssLoad,
+								&QosCapability,
+								&RalinkIe,
+								&HtCapabilityLen,
+#ifdef CONFIG_STA_SUPPORT
+								&PreNHtCapabilityLen,
+#endif // CONFIG_STA_SUPPORT //
+								&HtCapability,
+								&ExtCapInfo,
+								&AddHtInfoLen,
+								&AddHtInfo,
+								&NewExtChannelOffset,
+								&LenVIE,
+								pVIE)) 
+	{
+		BOOLEAN is_my_bssid, is_my_ssid;
+		ULONG   Bssidx, Now;
+		BSS_ENTRY *pBss;
+		CHAR		RealRssi = RTMPMaxRssi(pAd, ConvertToRssi(pAd, Elem->Rssi0, RSSI_0), ConvertToRssi(pAd, Elem->Rssi1, RSSI_1), ConvertToRssi(pAd, Elem->Rssi2, RSSI_2));
+
+		is_my_bssid = MAC_ADDR_EQUAL(Bssid, pAd->CommonCfg.Bssid)? TRUE : FALSE;
+		is_my_ssid = SSID_EQUAL(Ssid, SsidLen, pAd->CommonCfg.Ssid, pAd->CommonCfg.SsidLen)? TRUE:FALSE;
+
+
+		// ignore BEACON not for my SSID
+		if ((! is_my_ssid) && (! is_my_bssid))
+			return;
+
+		// It means STA waits disassoc completely from this AP, ignores this beacon.
+		if (pAd->Mlme.CntlMachine.CurrState == CNTL_WAIT_DISASSOC)
+			return;
+		
+#ifdef DOT11_N_SUPPORT
+		// Copy Control channel for this BSSID.		
+		if (AddHtInfoLen != 0)
+			Channel = AddHtInfo.ControlChan;
+
+		if ((HtCapabilityLen > 0) || (PreNHtCapabilityLen > 0))
+			HtCapabilityLen = SIZE_HT_CAP_IE;
+#endif // DOT11_N_SUPPORT //
+
+		//
+		// Housekeeping "SsidBssTab" table for later-on ROAMing usage. 
+		//
+		Bssidx = BssTableSearchWithSSID(&pAd->MlmeAux.SsidBssTab, Bssid, Ssid, SsidLen, Channel);
+		if (Bssidx == BSS_NOT_FOUND)
+		{			
+			// discover new AP of this network, create BSS entry
+			Bssidx = BssTableSetEntry(pAd, &pAd->MlmeAux.SsidBssTab, Bssid, Ssid, SsidLen, BssType, BeaconPeriod,
+						 &CfParm, AtimWin, CapabilityInfo, SupRate, SupRateLen, ExtRate, ExtRateLen, 
+						&HtCapability, &AddHtInfo,HtCapabilityLen,AddHtInfoLen,NewExtChannelOffset, Channel, 
+						RealRssi, TimeStamp, CkipFlag, &EdcaParm, &QosCapability, 
+						&QbssLoad, LenVIE, pVIE);
+			if (Bssidx == BSS_NOT_FOUND)
+				;
+			else
+			{
+				PBSS_ENTRY	pBssEntry = &pAd->MlmeAux.SsidBssTab.BssEntry[Bssidx];
+				NdisMoveMemory(&pBssEntry->PTSF[0], &Elem->Msg[24], 4);
+				NdisMoveMemory(&pBssEntry->TTSF[0], &Elem->TimeStamp.u.LowPart, 4);
+				NdisMoveMemory(&pBssEntry->TTSF[4], &Elem->TimeStamp.u.LowPart, 4);
+				pBssEntry->Rssi = RealRssi;
+
+				NdisMoveMemory(pBssEntry->MacAddr, Addr2, MAC_ADDR_LEN);
+				
+
+			}
+		}			
+		
+		/*
+			Update ScanTab
+		*/
+		Bssidx = BssTableSearch(&pAd->ScanTab, Bssid, Channel);
+		if (Bssidx == BSS_NOT_FOUND)
+		{
+			// discover new AP of this network, create BSS entry
+			Bssidx = BssTableSetEntry(pAd, &pAd->ScanTab, Bssid, Ssid, SsidLen, BssType, BeaconPeriod,
+						 &CfParm, AtimWin, CapabilityInfo, SupRate, SupRateLen, ExtRate, ExtRateLen, 
+						&HtCapability, &AddHtInfo,HtCapabilityLen,AddHtInfoLen,NewExtChannelOffset, Channel, 
+						RealRssi, TimeStamp, CkipFlag, &EdcaParm, &QosCapability, 
+						&QbssLoad, LenVIE, pVIE);
+			if (Bssidx == BSS_NOT_FOUND) // return if BSS table full
+				return;  
+			
+			NdisMoveMemory(pAd->ScanTab.BssEntry[Bssidx].PTSF, &Elem->Msg[24], 4);
+			NdisMoveMemory(&pAd->ScanTab.BssEntry[Bssidx].TTSF[0], &Elem->TimeStamp.u.LowPart, 4);
+			NdisMoveMemory(&pAd->ScanTab.BssEntry[Bssidx].TTSF[4], &Elem->TimeStamp.u.LowPart, 4);
+			pAd->ScanTab.BssEntry[Bssidx].MinSNR = Elem->Signal % 10;
+			if (pAd->ScanTab.BssEntry[Bssidx].MinSNR == 0)
+				pAd->ScanTab.BssEntry[Bssidx].MinSNR = -5;
+			
+			NdisMoveMemory(pAd->ScanTab.BssEntry[Bssidx].MacAddr, Addr2, MAC_ADDR_LEN);
+			
+			
+			
+		}
+
+		if ((pAd->CommonCfg.bIEEE80211H == 1) && (NewChannel != 0) && (Channel != NewChannel))
+		{
+			// Switching to channel 1 can prevent from rescanning the current channel immediately (by auto reconnection).
+			// In addition, clear the MLME queue and the scan table to discard the RX packets and previous scanning results.
+			AsicSwitchChannel(pAd, 1, FALSE);
+			AsicLockChannel(pAd, 1);
+		    LinkDown(pAd, FALSE);
+			MlmeQueueInit(&pAd->Mlme.Queue);
+			BssTableInit(&pAd->ScanTab);
+		    RTMPusecDelay(1000000);		// use delay to prevent STA do reassoc
+					
+			// channel sanity check
+			for (index = 0 ; index < pAd->ChannelListNum; index++)
+			{
+				if (pAd->ChannelList[index].Channel == NewChannel)
+				{
+					pAd->ScanTab.BssEntry[Bssidx].Channel = NewChannel;
+					pAd->CommonCfg.Channel = NewChannel;
+					AsicSwitchChannel(pAd, pAd->CommonCfg.Channel, FALSE);
+					AsicLockChannel(pAd, pAd->CommonCfg.Channel);
+					DBGPRINT(RT_DEBUG_TRACE, ("PeerBeacon - STA receive channel switch announcement IE (New Channel =%d)\n", NewChannel));
+					break;
+				}
+			}
+
+			if (index >= pAd->ChannelListNum)
+			{
+				DBGPRINT_ERR(("PeerBeacon(can not find New Channel=%d in ChannelList[%d]\n", pAd->CommonCfg.Channel, pAd->ChannelListNum));
+			}
+		}
+
+		// if the ssid matched & bssid unmatched, we should select the bssid with large value.
+		// This might happened when two STA start at the same time
+		if ((! is_my_bssid) && ADHOC_ON(pAd))
+		{
+			INT	i;
+
+			// Add the safeguard against the mismatch of adhoc wep status
+			if (pAd->StaCfg.WepStatus != pAd->ScanTab.BssEntry[Bssidx].WepStatus)
+			{
+				return;
+			}
+			
+			// collapse into the ADHOC network which has bigger BSSID value.
+			for (i = 0; i < 6; i++)
+			{
+				if (Bssid[i] > pAd->CommonCfg.Bssid[i])
+				{
+					DBGPRINT(RT_DEBUG_TRACE, ("SYNC - merge to the IBSS with bigger BSSID=%02x:%02x:%02x:%02x:%02x:%02x\n", 
+						Bssid[0], Bssid[1], Bssid[2], Bssid[3], Bssid[4], Bssid[5]));
+					AsicDisableSync(pAd);
+					COPY_MAC_ADDR(pAd->CommonCfg.Bssid, Bssid);
+					AsicSetBssid(pAd, pAd->CommonCfg.Bssid); 
+					MakeIbssBeacon(pAd);        // re-build BEACON frame
+					AsicEnableIbssSync(pAd);    // copy BEACON frame to on-chip memory
+					is_my_bssid = TRUE;
+					break;
+				}
+				else if (Bssid[i] < pAd->CommonCfg.Bssid[i])
+					break;
+			}
+		}
+
+
+		NdisGetSystemUpTime(&Now);
+		pBss = &pAd->ScanTab.BssEntry[Bssidx];
+		pBss->Rssi = RealRssi;       // lastest RSSI
+		pBss->LastBeaconRxTime = Now;   // last RX timestamp
+
+		//
+		// BEACON from my BSSID - either IBSS or INFRA network
+		// 
+		if (is_my_bssid)
+		{
+			RXWI_STRUC	RxWI;
+
+#ifdef DOT11_N_SUPPORT
+#ifdef DOT11N_DRAFT3
+			OVERLAP_BSS_SCAN_IE	BssScan;
+			UCHAR					RegClass;
+			BOOLEAN					brc;
+
+			// Read Beacon's Reg Class IE if any.
+			brc = PeerBeaconAndProbeRspSanity2(pAd, Elem->Msg, Elem->MsgLen, &BssScan, &RegClass);
+			if (brc == TRUE)
+			{
+				UpdateBssScanParm(pAd, BssScan);
+				pAd->StaCfg.RegClass = RegClass;
+			}
+#endif // DOT11N_DRAFT3 //
+#endif // DOT11_N_SUPPORT //
+
+			pAd->StaCfg.DtimCount = DtimCount;
+			pAd->StaCfg.DtimPeriod = DtimPeriod;
+			pAd->StaCfg.LastBeaconRxTime = Now;
+
+
+			RxWI.RSSI0 = Elem->Rssi0;
+			RxWI.RSSI1 = Elem->Rssi1;
+			RxWI.RSSI2 = Elem->Rssi2;
+
+			Update_Rssi_Sample(pAd, &pAd->StaCfg.RssiSample, &RxWI);
+
+#ifdef LINUX
+#ifdef RT_CFG80211_SUPPORT
+//			CFG80211_BeaconCountryRegionParse(pAd, pVIE, LenVIE);
+#endif // RT_CFG80211_SUPPORT //
+#endif // LINUX //
+
+			if (AironetCellPowerLimit != 0xFF)
+			{
+				//
+				// We get the Cisco (ccx) "TxPower Limit" required
+				// Changed to appropriate TxPower Limit for Ciso Compatible Extensions
+				//
+				ChangeToCellPowerLimit(pAd, AironetCellPowerLimit);
+			}
+			else
+			{
+				//
+				// AironetCellPowerLimit equal to 0xFF means the Cisco (ccx) "TxPower Limit" not exist.
+				// Used the default TX Power Percentage, that set from UI.	
+				//
+				pAd->CommonCfg.TxPowerPercentage = pAd->CommonCfg.TxPowerDefault;	
+			}
+
+			if (ADHOC_ON(pAd) && (CAP_IS_IBSS_ON(CapabilityInfo)))   
+			{
+				UCHAR			MaxSupportedRateIn500Kbps = 0;
+				UCHAR			idx;
+				MAC_TABLE_ENTRY *pEntry;
+	
+				// supported rates array may not be sorted. sort it and find the maximum rate
+			    for (idx=0; idx<SupRateLen; idx++)
+				{
+			        if (MaxSupportedRateIn500Kbps < (SupRate[idx] & 0x7f)) 
+			            MaxSupportedRateIn500Kbps = SupRate[idx] & 0x7f;
+				}
+				
+				for (idx=0; idx<ExtRateLen; idx++)
+			    {
+			        if (MaxSupportedRateIn500Kbps < (ExtRate[idx] & 0x7f)) 
+			            MaxSupportedRateIn500Kbps = ExtRate[idx] & 0x7f;
+				}
+						
+				// look up the existing table
+				pEntry = MacTableLookup(pAd, Addr2);
+							
+				// Ad-hoc mode is using MAC address as BA session. So we need to continuously find newly joined adhoc station by receiving beacon.
+				// To prevent always check this, we use wcid == RESERVED_WCID to recognize it as newly joined adhoc station.
+				if ((ADHOC_ON(pAd) && (Elem->Wcid == RESERVED_WCID)) ||
+					(pEntry && ((pEntry->LastBeaconRxTime + ADHOC_ENTRY_BEACON_LOST_TIME) < Now)))
+						{
+					if (pEntry == NULL)
+						// Another adhoc joining, add to our MAC table. 
+						pEntry = MacTableInsertEntry(pAd, Addr2, BSS0, FALSE);
+
+					if (StaAddMacTableEntry(pAd, 
+											pEntry, 
+											MaxSupportedRateIn500Kbps, 
+											&HtCapability, 
+											HtCapabilityLen, 
+											&AddHtInfo,
+											AddHtInfoLen,
+											CapabilityInfo) == FALSE)
+					{
+						DBGPRINT(RT_DEBUG_TRACE, ("ADHOC - Add Entry failed.\n"));
+						return;
+					}
+
+					if (pEntry &&
+						(Elem->Wcid == RESERVED_WCID))
+					{
+						idx = pAd->StaCfg.DefaultKeyId;
+							RTMP_SET_WCID_SEC_INFO(pAd, BSS0, idx, 
+												   pAd->SharedKey[BSS0][idx].CipherAlg,
+												   pEntry->Aid,
+												   SHAREDKEYTABLE);
+					}
+				}
+
+				if (pEntry && IS_ENTRY_CLIENT(pEntry))
+					pEntry->LastBeaconRxTime = Now;
+
+				// At least another peer in this IBSS, declare MediaState as CONNECTED
+				if (!OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED))
+				{
+					OPSTATUS_SET_FLAG(pAd, fOP_STATUS_MEDIA_STATE_CONNECTED); 
+					pAd->IndicateMediaState = NdisMediaStateConnected;
+					RTMP_IndicateMediaState(pAd);
+	                pAd->ExtraInfo = GENERAL_LINK_UP;
+					DBGPRINT(RT_DEBUG_TRACE, ("ADHOC  fOP_STATUS_MEDIA_STATE_CONNECTED.\n"));
+				}	
+			}
+
+			if (INFRA_ON(pAd))
+			{
+				BOOLEAN bUseShortSlot, bUseBGProtection;
+
+				// decide to use/change to - 
+				//      1. long slot (20 us) or short slot (9 us) time
+				//      2. turn on/off RTS/CTS and/or CTS-to-self protection
+				//      3. short preamble
+					
+				//bUseShortSlot = pAd->CommonCfg.bUseShortSlotTime && CAP_IS_SHORT_SLOT(CapabilityInfo);
+				bUseShortSlot = CAP_IS_SHORT_SLOT(CapabilityInfo);
+				if (bUseShortSlot != OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_SHORT_SLOT_INUSED))
+					AsicSetSlotTime(pAd, bUseShortSlot);
+
+				bUseBGProtection = (pAd->CommonCfg.UseBGProtection == 1) ||    // always use
+								   ((pAd->CommonCfg.UseBGProtection == 0) && ERP_IS_USE_PROTECTION(Erp));
+
+				if (pAd->CommonCfg.Channel > 14) // always no BG protection in A-band. falsely happened when switching A/G band to a dual-band AP
+					bUseBGProtection = FALSE;
+
+				if (bUseBGProtection != OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_BG_PROTECTION_INUSED))
+				{
+					if (bUseBGProtection)
+					{
+						OPSTATUS_SET_FLAG(pAd, fOP_STATUS_BG_PROTECTION_INUSED);
+						AsicUpdateProtect(pAd, pAd->MlmeAux.AddHtInfo.AddHtInfo2.OperaionMode, (OFDMSETPROTECT|CCKSETPROTECT|ALLN_SETPROTECT),FALSE,(pAd->MlmeAux.AddHtInfo.AddHtInfo2.NonGfPresent == 1));
+					}
+					else
+					{
+						OPSTATUS_CLEAR_FLAG(pAd, fOP_STATUS_BG_PROTECTION_INUSED);
+						AsicUpdateProtect(pAd, pAd->MlmeAux.AddHtInfo.AddHtInfo2.OperaionMode, (OFDMSETPROTECT|CCKSETPROTECT|ALLN_SETPROTECT),TRUE,(pAd->MlmeAux.AddHtInfo.AddHtInfo2.NonGfPresent == 1));
+					}
+					
+					DBGPRINT(RT_DEBUG_WARN, ("SYNC - AP changed B/G protection to %d\n", bUseBGProtection));
+				}
+				
+#ifdef DOT11_N_SUPPORT
+				// check Ht protection mode. and adhere to the Non-GF device indication by AP.
+				if ((AddHtInfoLen != 0) && 
+					((AddHtInfo.AddHtInfo2.OperaionMode != pAd->MlmeAux.AddHtInfo.AddHtInfo2.OperaionMode) ||
+					(AddHtInfo.AddHtInfo2.NonGfPresent != pAd->MlmeAux.AddHtInfo.AddHtInfo2.NonGfPresent)))
+				{
+					pAd->MlmeAux.AddHtInfo.AddHtInfo2.NonGfPresent = AddHtInfo.AddHtInfo2.NonGfPresent;
+					pAd->MlmeAux.AddHtInfo.AddHtInfo2.OperaionMode = AddHtInfo.AddHtInfo2.OperaionMode;
+					if (pAd->MlmeAux.AddHtInfo.AddHtInfo2.NonGfPresent == 1)
+				{
+						AsicUpdateProtect(pAd, pAd->MlmeAux.AddHtInfo.AddHtInfo2.OperaionMode, ALLN_SETPROTECT, FALSE, TRUE);
+					}
+					else
+						AsicUpdateProtect(pAd, pAd->MlmeAux.AddHtInfo.AddHtInfo2.OperaionMode, ALLN_SETPROTECT, FALSE, FALSE);
+
+					DBGPRINT(RT_DEBUG_TRACE, ("SYNC - AP changed N OperaionMode to %d\n", pAd->MlmeAux.AddHtInfo.AddHtInfo2.OperaionMode));
+				}
+#endif // DOT11_N_SUPPORT //
+				
+				if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_SHORT_PREAMBLE_INUSED) && 
+					ERP_IS_USE_BARKER_PREAMBLE(Erp))
+				{
+					MlmeSetTxPreamble(pAd, Rt802_11PreambleLong);
+					DBGPRINT(RT_DEBUG_TRACE, ("SYNC - AP forced to use LONG preamble\n"));
+				}
+
+				if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_WMM_INUSED)    &&
+					(EdcaParm.bValid == TRUE)                          &&
+					(EdcaParm.EdcaUpdateCount != pAd->CommonCfg.APEdcaParm.EdcaUpdateCount))
+				{
+					DBGPRINT(RT_DEBUG_TRACE, ("SYNC - AP change EDCA parameters(from %d to %d)\n", 
+						pAd->CommonCfg.APEdcaParm.EdcaUpdateCount,
+						EdcaParm.EdcaUpdateCount));
+					AsicSetEdcaParm(pAd, &EdcaParm);
+				}
+
+				// copy QOS related information
+				NdisMoveMemory(&pAd->CommonCfg.APQbssLoad, &QbssLoad, sizeof(QBSS_LOAD_PARM));
+				NdisMoveMemory(&pAd->CommonCfg.APQosCapability, &QosCapability, sizeof(QOS_CAPABILITY_PARM));
+#ifdef DOT11_N_SUPPORT
+#ifdef DOT11N_DRAFT3
+				// 2009: PF#1: 20/40 Coexistence in 2.4 GHz Band
+				// When AP changes "STA Channel Width" and "Secondary Channel Offset" fields of HT Operation Element in the Beacon to 0
+				if ((AddHtInfoLen != 0) && INFRA_ON(pAd))
+				{
+					BOOLEAN bChangeBW = FALSE;
+					//
+					// 1) HT Information
+					// 2) Secondary Channel Offset Element
+					//
+					// 40 -> 20 case
+					if (pAd->CommonCfg.BBPCurrentBW == BW_40)
+					{
+						if (((AddHtInfo.AddHtInfo.ExtChanOffset == EXTCHA_NONE) && (AddHtInfo.AddHtInfo.RecomWidth == 0)) 
+							||(NewExtChannelOffset==0x0)
+						)
+						{
+							bChangeBW = TRUE;
+							pAd->CommonCfg.CentralChannel = pAd->CommonCfg.Channel;
+							pAd->MacTab.Content[BSSID_WCID].HTPhyMode.field.BW = 0;
+							DBGPRINT(RT_DEBUG_TRACE, ("FallBack from 40MHz to 20MHz(CtrlCh=%d, CentralCh=%d)\n", 
+														pAd->CommonCfg.Channel, pAd->CommonCfg.CentralChannel));
+							CntlChannelWidth(pAd, pAd->CommonCfg.Channel, pAd->CommonCfg.CentralChannel, BW_20, 0);
+						}
+					}
+					//
+					// 20 -> 40 case
+					// 1.) Supported Channel Width Set Field of the HT Capabilities element of both STAs is set to a non-zero
+					// 2.) Secondary Channel Offset field is SCA or SCB
+					// 3.) 40MHzRegulatoryClass is TRUE (not implement it)
+					//					
+					else if (((pAd->CommonCfg.BBPCurrentBW == BW_20) ||(NewExtChannelOffset!=0x0)) &&
+							(pAd->CommonCfg.DesiredHtPhy.ChannelWidth != BW_20)
+						)
+					{
+						if ((AddHtInfo.AddHtInfo.ExtChanOffset != EXTCHA_NONE) && (HtCapabilityLen>0) && (HtCapability.HtCapInfo.ChannelWidth == 1))
+						{
+							if ((AddHtInfo.ControlChan > 2)&& (AddHtInfo.AddHtInfo.ExtChanOffset == EXTCHA_BELOW))
+							{
+								pAd->CommonCfg.CentralChannel = AddHtInfo.ControlChan - 2;
+								bChangeBW = TRUE;
+							}
+							else if ((AddHtInfo.AddHtInfo.ExtChanOffset == EXTCHA_ABOVE))
+							{
+								pAd->CommonCfg.CentralChannel = AddHtInfo.ControlChan + 2;
+								bChangeBW = TRUE;
+							}
+							
+							if (bChangeBW)
+							{
+								pAd->CommonCfg.Channel = AddHtInfo.ControlChan;
+								DBGPRINT(RT_DEBUG_TRACE, ("FallBack from 20MHz to 40MHz(CtrlCh=%d, CentralCh=%d)\n", 
+															pAd->CommonCfg.Channel, pAd->CommonCfg.CentralChannel));
+								CntlChannelWidth(pAd, pAd->CommonCfg.Channel, pAd->CommonCfg.CentralChannel, BW_40, AddHtInfo.AddHtInfo.ExtChanOffset);
+								pAd->MacTab.Content[BSSID_WCID].HTPhyMode.field.BW = 1;
+							}
+						}
+					}
+
+					if (bChangeBW)
+					{
+						pAd->CommonCfg.BSSCoexist2040.word = 0;
+						TriEventInit(pAd);
+						BuildEffectedChannelList(pAd);
+					}
+				}
+#endif // DOT11N_DRAFT3 //
+#endif // DOT11_N_SUPPORT //
+			}
+
+			// only INFRASTRUCTURE mode support power-saving feature
+			if ((INFRA_ON(pAd) && (pAd->StaCfg.Psm == PWR_SAVE)) || (pAd->CommonCfg.bAPSDForcePowerSave))
+			{
+				UCHAR FreeNumber;
+				//  1. AP has backlogged unicast-to-me frame, stay AWAKE, send PSPOLL
+				//  2. AP has backlogged broadcast/multicast frame and we want those frames, stay AWAKE
+				//  3. we have outgoing frames in TxRing or MgmtRing, better stay AWAKE
+				//  4. Psm change to PWR_SAVE, but AP not been informed yet, we better stay AWAKE
+				//  5. otherwise, put PHY back to sleep to save battery.
+				if (MessageToMe)
+				{
+#ifdef PCIE_PS_SUPPORT
+					if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_ADVANCE_POWER_SAVE_PCIE_DEVICE))
+					{
+						// Restore to correct BBP R3 value
+						if (pAd->Antenna.field.RxPath > 1)
+						RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R3, pAd->StaCfg.BBPR3);
+						// Turn clk to 80Mhz.
+					}
+#endif // PCIE_PS_SUPPORT //
+					if (pAd->CommonCfg.bAPSDCapable && pAd->CommonCfg.APEdcaParm.bAPSDCapable &&
+						pAd->CommonCfg.bAPSDAC_BE && pAd->CommonCfg.bAPSDAC_BK && pAd->CommonCfg.bAPSDAC_VI && pAd->CommonCfg.bAPSDAC_VO)
+					{
+						pAd->CommonCfg.bNeedSendTriggerFrame = TRUE;
+					}
+					else
+					{
+						if (pAd->StaCfg.WindowsBatteryPowerMode == Ndis802_11PowerModeFast_PSP)
+						{
+							/* wake up and send a NULL frame with PM = 0 to the AP */
+							RTMP_SET_PSM_BIT(pAd, PWR_ACTIVE);
+
+							if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_WMM_INUSED))
+								RTMPSendNullFrame(pAd, pAd->CommonCfg.TxRate, TRUE);
+							else
+								RTMPSendNullFrame(pAd, pAd->CommonCfg.TxRate, FALSE);
+						}
+						else
+						{
+							/* use PS-Poll to get any buffered packet */
+							RTMP_PS_POLL_ENQUEUE(pAd);
+						}
+					}
+				}
+				else if (BcastFlag && (DtimCount == 0) && OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_RECEIVE_DTIM))
+				{
+#ifdef PCIE_PS_SUPPORT
+					if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_ADVANCE_POWER_SAVE_PCIE_DEVICE))
+					{
+						if (pAd->Antenna.field.RxPath > 1)
+						RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R3, pAd->StaCfg.BBPR3);
+					}
+#endif // PCIE_PS_SUPPORT //
+				} 
+				else if ((pAd->TxSwQueue[QID_AC_BK].Number != 0)													||
+						(pAd->TxSwQueue[QID_AC_BE].Number != 0)														||
+						(pAd->TxSwQueue[QID_AC_VI].Number != 0)														||
+						(pAd->TxSwQueue[QID_AC_VO].Number != 0)														||
+						(RTMPFreeTXDRequest(pAd, QID_AC_BK, TX_RING_SIZE - 1, &FreeNumber) != NDIS_STATUS_SUCCESS)	||
+						(RTMPFreeTXDRequest(pAd, QID_AC_BE, TX_RING_SIZE - 1, &FreeNumber) != NDIS_STATUS_SUCCESS)	||
+						(RTMPFreeTXDRequest(pAd, QID_AC_VI, TX_RING_SIZE - 1, &FreeNumber) != NDIS_STATUS_SUCCESS)	||
+						(RTMPFreeTXDRequest(pAd, QID_AC_VO, TX_RING_SIZE - 1, &FreeNumber) != NDIS_STATUS_SUCCESS)	||
+						(RTMPFreeTXDRequest(pAd, QID_MGMT, MGMT_RING_SIZE - 1, &FreeNumber) != NDIS_STATUS_SUCCESS)) 
+				{
+					// TODO: consider scheduled HCCA. might not be proper to use traditional DTIM-based power-saving scheme
+					// can we cheat here (i.e. just check MGMT & AC_BE) for better performance?
+#ifdef PCIE_PS_SUPPORT
+					if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_ADVANCE_POWER_SAVE_PCIE_DEVICE))
+					{
+						if (pAd->Antenna.field.RxPath > 1)
+						RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R3, pAd->StaCfg.BBPR3);
+					}
+#endif // PCIE_PS_SUPPORT //
+				}
+				else 
+				{
+					if ((pAd->CommonCfg.bACMAPSDTr[QID_AC_VO]) ||
+						(pAd->CommonCfg.bACMAPSDTr[QID_AC_VI]) ||
+						(pAd->CommonCfg.bACMAPSDTr[QID_AC_BK]) ||
+						(pAd->CommonCfg.bACMAPSDTr[QID_AC_BE]))
+					{
+						/*
+							WMM Spec v1.0 3.6.2.4,
+							The WMM STA shall remain awake until it receives a
+							QoS Data or Null frame addressed to it, with the
+							EOSP subfield in QoS Control field set to 1.
+
+							So we can not sleep here or we will suffer a case:
+
+							PS Management Frame -->
+							Trigger frame -->
+							Beacon (TIM=0) (Beacon is closer to Trig frame) -->
+							Station goes to sleep -->
+							AP delivery queued UAPSD packets -->
+							Station can NOT receive the reply
+
+							Maybe we need a timeout timer to avoid that we do
+							NOT receive the EOSP frame.
+
+							We can not use More Data to check if SP is ended
+							due to MaxSPLength.
+						*/
+					}
+					else
+					{
+						USHORT NextDtim = DtimCount;
+
+
+						if (NextDtim == 0) 
+							NextDtim = DtimPeriod;
+
+						TbttNumToNextWakeUp = pAd->StaCfg.DefaultListenCount;
+						if (OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_RECEIVE_DTIM) && (TbttNumToNextWakeUp > NextDtim))
+							TbttNumToNextWakeUp = NextDtim;
+
+						if (!OPSTATUS_TEST_FLAG(pAd, fOP_STATUS_DOZE))
+						{
+							// Set a flag to go to sleep . Then after parse this RxDoneInterrupt, will go to sleep mode.
+							pAd->ThisTbttNumToNextWakeUp = TbttNumToNextWakeUp;
+		                                        AsicSleepThenAutoWakeup(pAd, pAd->ThisTbttNumToNextWakeUp);
+							
+						}
+					}
+				}
+			}
+		}
+		// not my BSSID, ignore it
+	}
+	// sanity check fail, ignore this frame
+}
+
+/* 
+	==========================================================================
+	Description:
+		Receive PROBE REQ from remote peer when operating in IBSS mode
+	==========================================================================
+ */
+VOID PeerProbeReqAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+	UCHAR         Addr2[MAC_ADDR_LEN];
+	CHAR          Ssid[MAX_LEN_OF_SSID];
+	UCHAR         SsidLen;
+#ifdef DOT11_N_SUPPORT
+	UCHAR		  HtLen, AddHtLen, NewExtLen;
+#endif // DOT11_N_SUPPORT //
+	HEADER_802_11 ProbeRspHdr;
+	NDIS_STATUS   NStatus;
+	PUCHAR        pOutBuffer = NULL;
+	ULONG         FrameLen = 0;
+	LARGE_INTEGER FakeTimestamp;
+	UCHAR         DsLen = 1, IbssLen = 2;
+	UCHAR         LocalErpIe[3] = {IE_ERP, 1, 0};
+	BOOLEAN       Privacy;
+	USHORT        CapabilityInfo;
+
+	if (! ADHOC_ON(pAd))
+		return;
+
+	if (PeerProbeReqSanity(pAd, Elem->Msg, Elem->MsgLen, Addr2, Ssid, &SsidLen, NULL))
+	{
+		if ((SsidLen == 0) || SSID_EQUAL(Ssid, SsidLen, pAd->CommonCfg.Ssid, pAd->CommonCfg.SsidLen))
+		{			
+			// allocate and send out ProbeRsp frame
+			NStatus = MlmeAllocateMemory(pAd, &pOutBuffer);  //Get an unused nonpaged memory
+			if (NStatus != NDIS_STATUS_SUCCESS)
+				return;
+
+			//pAd->StaCfg.AtimWin = 0;  // ??????
+			MgtMacHeaderInit(pAd, &ProbeRspHdr, SUBTYPE_PROBE_RSP, 0, Addr2, pAd->CommonCfg.Bssid);
+
+			Privacy = (pAd->StaCfg.WepStatus == Ndis802_11Encryption1Enabled) || 
+					  (pAd->StaCfg.WepStatus == Ndis802_11Encryption2Enabled) || 
+					  (pAd->StaCfg.WepStatus == Ndis802_11Encryption3Enabled);
+			CapabilityInfo = CAP_GENERATE(0, 1, Privacy, (pAd->CommonCfg.TxPreamble == Rt802_11PreambleShort), 0, 0);
+
+			MakeOutgoingFrame(pOutBuffer,                   &FrameLen, 
+							  sizeof(HEADER_802_11),        &ProbeRspHdr, 
+							  TIMESTAMP_LEN,                &FakeTimestamp,
+							  2,                            &pAd->CommonCfg.BeaconPeriod,
+							  2,                            &CapabilityInfo,
+							  1,                            &SsidIe, 
+							  1,                            &pAd->CommonCfg.SsidLen, 
+							  pAd->CommonCfg.SsidLen,       pAd->CommonCfg.Ssid,
+							  1,                            &SupRateIe, 
+							  1,                            &pAd->StaActive.SupRateLen,
+							  pAd->StaActive.SupRateLen,    pAd->StaActive.SupRate, 
+							  1,                            &DsIe, 
+							  1,                            &DsLen, 
+							  1,                            &pAd->CommonCfg.Channel,
+							  1,                            &IbssIe, 
+							  1,                            &IbssLen, 
+							  2,                            &pAd->StaActive.AtimWin,
+							  END_OF_ARGS);
+
+			if (pAd->StaActive.ExtRateLen)
+			{
+				ULONG tmp;
+				MakeOutgoingFrame(pOutBuffer + FrameLen,        &tmp, 
+								  3,                            LocalErpIe,
+								  1,                            &ExtRateIe,
+								  1,                            &pAd->StaActive.ExtRateLen,
+								  pAd->StaActive.ExtRateLen,    &pAd->StaActive.ExtRate,
+								  END_OF_ARGS);
+				FrameLen += tmp;
+			}
+
+        	if (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPANone)                
+        	{
+        	    UCHAR   RSNIe = IE_WPA;
+        		ULONG   tmp;
+
+                RTMPMakeRSNIE(pAd, pAd->StaCfg.AuthMode, pAd->StaCfg.WepStatus, BSS0);
+            	if (pAd->StaCfg.AuthMode == Ndis802_11AuthModeWPA2PSK)
+                    RSNIe = IE_RSN;
+                
+        		MakeOutgoingFrame(pOutBuffer + FrameLen,        	&tmp,
+        						  1,                              	&RSNIe,
+        						  1,                            	&pAd->StaCfg.RSNIE_Len,
+        						  pAd->StaCfg.RSNIE_Len,      		pAd->StaCfg.RSN_IE,
+        						  END_OF_ARGS);
+        		FrameLen += tmp;	
+        	}
+
+#ifdef DOT11_N_SUPPORT
+			if (pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED)
+			{
+				ULONG TmpLen;
+				UCHAR	BROADCOM[4] = {0x0, 0x90, 0x4c, 0x33};
+				HtLen = sizeof(pAd->CommonCfg.HtCapability);
+				AddHtLen = sizeof(pAd->CommonCfg.AddHTInfo);
+				NewExtLen = 1;
+				//New extension channel offset IE is included in Beacon, Probe Rsp or channel Switch Announcement Frame
+				if (pAd->bBroadComHT == TRUE)
+				{
+					MakeOutgoingFrame(pOutBuffer + FrameLen,            &TmpLen,
+								  1,                                &WpaIe,
+								  4,                                &BROADCOM[0],
+								 pAd->MlmeAux.HtCapabilityLen,          &pAd->MlmeAux.HtCapability, 
+								  END_OF_ARGS);
+				}
+				else				
+				{
+				MakeOutgoingFrame(pOutBuffer + FrameLen,            &TmpLen,
+								  1,                                &HtCapIe,
+								  1,                                &HtLen,
+								 sizeof(HT_CAPABILITY_IE),          &pAd->CommonCfg.HtCapability, 
+								  1,                                &AddHtInfoIe,
+								  1,                                &AddHtLen,
+								 sizeof(ADD_HT_INFO_IE),          &pAd->CommonCfg.AddHTInfo, 
+								  1,                                &NewExtChanIe,
+								  1,                                &NewExtLen,
+								 sizeof(NEW_EXT_CHAN_IE),          &pAd->CommonCfg.NewExtChanOffset, 
+								  END_OF_ARGS);
+				}
+				FrameLen += TmpLen;
+			}
+#endif // DOT11_N_SUPPORT //
+
+
+
+			MiniportMMRequest(pAd, 0, pOutBuffer, FrameLen);
+			MlmeFreeMemory(pAd, pOutBuffer);
+		}
+	}
+}
+
+VOID BeaconTimeoutAtJoinAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+	USHORT Status;
+	DBGPRINT(RT_DEBUG_TRACE, ("SYNC - BeaconTimeoutAtJoinAction\n"));
+	pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE;
+	Status = MLME_REJ_TIMEOUT;
+	MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_JOIN_CONF, 2, &Status, 0);
+}
+
+/* 
+	==========================================================================
+	Description:
+		Scan timeout procedure. basically add channel index by 1 and rescan
+	==========================================================================
+ */
+VOID ScanTimeoutAction(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+
+
+	pAd->MlmeAux.Channel = NextChannel(pAd, pAd->MlmeAux.Channel);
+
+	// Only one channel scanned for CISCO beacon request
+	if ((pAd->MlmeAux.ScanType == SCAN_CISCO_ACTIVE) || 
+		(pAd->MlmeAux.ScanType == SCAN_CISCO_PASSIVE) ||
+		(pAd->MlmeAux.ScanType == SCAN_CISCO_NOISE) ||
+		(pAd->MlmeAux.ScanType == SCAN_CISCO_CHANNEL_LOAD))
+		pAd->MlmeAux.Channel = 0;
+
+	// this routine will stop if pAd->MlmeAux.Channel == 0
+	ScanNextChannel(pAd); 
+}
+
+/* 
+	==========================================================================
+	Description:
+	==========================================================================
+ */
+VOID InvalidStateWhenScan(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+	USHORT Status;
+	DBGPRINT(RT_DEBUG_TRACE, ("AYNC - InvalidStateWhenScan(state=%ld). Reset SYNC machine\n", pAd->Mlme.SyncMachine.CurrState));
+	pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE;
+	Status = MLME_STATE_MACHINE_REJECT;
+	MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_SCAN_CONF, 2, &Status, 0);
+}
+
+/* 
+	==========================================================================
+	Description:
+	==========================================================================
+ */
+VOID InvalidStateWhenJoin(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+	USHORT Status;
+	DBGPRINT(RT_DEBUG_TRACE, ("InvalidStateWhenJoin(state=%ld). Reset SYNC machine\n", pAd->Mlme.SyncMachine.CurrState));
+	pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE;
+	Status = MLME_STATE_MACHINE_REJECT;
+	MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_JOIN_CONF, 2, &Status, 0);
+}
+
+/* 
+	==========================================================================
+	Description:
+	==========================================================================
+ */
+VOID InvalidStateWhenStart(
+	IN PRTMP_ADAPTER pAd, 
+	IN MLME_QUEUE_ELEM *Elem) 
+{
+	USHORT Status;
+	DBGPRINT(RT_DEBUG_TRACE, ("InvalidStateWhenStart(state=%ld). Reset SYNC machine\n", pAd->Mlme.SyncMachine.CurrState));
+	pAd->Mlme.SyncMachine.CurrState = SYNC_IDLE;
+	Status = MLME_STATE_MACHINE_REJECT;
+	MlmeEnqueue(pAd, MLME_CNTL_STATE_MACHINE, MT2_START_CONF, 2, &Status, 0);
+}
+
+/* 
+	==========================================================================
+	Description:
+
+	IRQL = DISPATCH_LEVEL
+	
+	==========================================================================
+ */
+VOID EnqueuePsPoll(
+	IN PRTMP_ADAPTER pAd) 
+{
+#ifdef RALINK_ATE
+    if (ATE_ON(pAd))
+    {
+		return;
+    }
+#endif // RALINK_ATE //
+
+	
+	if (pAd->StaCfg.WindowsPowerMode == Ndis802_11PowerModeLegacy_PSP)
+    	pAd->PsPollFrame.FC.PwrMgmt = PWR_SAVE;
+	MiniportMMRequest(pAd, 0, (PUCHAR)&pAd->PsPollFrame, sizeof(PSPOLL_FRAME));
+}
+
+
+/* 
+	==========================================================================
+	Description:
+	==========================================================================
+ */
+VOID EnqueueProbeRequest(
+	IN PRTMP_ADAPTER pAd) 
+{
+	NDIS_STATUS     NState;
+	PUCHAR          pOutBuffer;
+	ULONG           FrameLen = 0;
+	HEADER_802_11   Hdr80211;
+
+	DBGPRINT(RT_DEBUG_TRACE, ("force out a ProbeRequest ...\n"));
+
+	NState = MlmeAllocateMemory(pAd, &pOutBuffer);  //Get an unused nonpaged memory
+	if (NState == NDIS_STATUS_SUCCESS) 
+	{
+		MgtMacHeaderInit(pAd, &Hdr80211, SUBTYPE_PROBE_REQ, 0, BROADCAST_ADDR, BROADCAST_ADDR);
+
+		// this ProbeRequest explicitly specify SSID to reduce unwanted ProbeResponse
+		MakeOutgoingFrame(pOutBuffer,                     &FrameLen,
+						  sizeof(HEADER_802_11),          &Hdr80211,
+						  1,                              &SsidIe,
+						  1,                              &pAd->CommonCfg.SsidLen,
+						  pAd->CommonCfg.SsidLen,		  pAd->CommonCfg.Ssid,
+						  1,                              &SupRateIe,
+						  1,                              &pAd->StaActive.SupRateLen,
+						  pAd->StaActive.SupRateLen,      pAd->StaActive.SupRate, 
+						  END_OF_ARGS);
+		MiniportMMRequest(pAd, 0, pOutBuffer, FrameLen);
+		MlmeFreeMemory(pAd, pOutBuffer);
+	}
+
+}
+
+#ifdef DOT11_N_SUPPORT
+#ifdef DOT11N_DRAFT3
+VOID BuildEffectedChannelList(
+	IN PRTMP_ADAPTER pAd)
+{
+	UCHAR		EChannel[11];
+	UCHAR		i, j, k;
+	UCHAR		UpperChannel = 0, LowerChannel = 0;
+	
+	RTMPZeroMemory(EChannel, 11);
+	DBGPRINT(RT_DEBUG_TRACE, ("BuildEffectedChannelList:CtrlCh=%d,CentCh=%d,AuxCtrlCh=%d,AuxExtCh=%d\n", 
+								pAd->CommonCfg.Channel, pAd->CommonCfg.CentralChannel, 
+								pAd->MlmeAux.AddHtInfo.ControlChan, 
+								pAd->MlmeAux.AddHtInfo.AddHtInfo.ExtChanOffset));
+
+	// 802.11n D4 11.14.3.3: If no secondary channel has been selected, all channels in the frequency band shall be scanned.
+	//if (pAd->MacTab.Content[BSSID_WCID].HTPhyMode.field.BW == BW_20)	
+	{
+		for (k = 0;k < pAd->ChannelListNum;k++)
+		{
+			if (pAd->ChannelList[k].Channel <=14 )
+			pAd->ChannelList[k].bEffectedChannel = TRUE;
+		}
+		return;
+	}	
+	
+	i = 0;
+	// Find upper and lower channel according to 40MHz current operation. 
+	if (pAd->CommonCfg.CentralChannel < pAd->CommonCfg.Channel)
+	{
+		UpperChannel = pAd->CommonCfg.Channel;
+		LowerChannel = pAd->CommonCfg.CentralChannel-2;
+	}
+	else if (pAd->CommonCfg.CentralChannel > pAd->CommonCfg.Channel)
+	{
+		UpperChannel = pAd->CommonCfg.CentralChannel+2;
+		LowerChannel = pAd->CommonCfg.Channel;
+	}
+	else
+	{
+		DBGPRINT(RT_DEBUG_TRACE, ("LinkUP 20MHz . No Effected Channel \n"));
+		// Now operating in 20MHz, doesn't find 40MHz effected channels
+		return;
+	}
+
+	DeleteEffectedChannelList(pAd);	
+
+	DBGPRINT(RT_DEBUG_TRACE, ("BuildEffectedChannelList!LowerChannel ~ UpperChannel; %d ~ %d \n", LowerChannel, UpperChannel));
+
+	// Find all channels that are below lower channel..
+	if (LowerChannel > 1)
+	{
+		EChannel[0] = LowerChannel - 1;
+		i = 1;
+		if (LowerChannel > 2)
+		{
+			EChannel[1] = LowerChannel - 2;
+			i = 2;
+			if (LowerChannel > 3)
+			{
+				EChannel[2] = LowerChannel - 3;
+				i = 3;
+			}
+		}
+	}
+	// Find all channels that are between  lower channel and upper channel.
+	for (k = LowerChannel;k <= UpperChannel;k++)
+	{
+		EChannel[i] = k;
+		i++;
+	}
+	// Find all channels that are above upper channel..
+	if (UpperChannel < 14)
+	{
+		EChannel[i] = UpperChannel + 1;
+		i++;
+		if (UpperChannel < 13)
+		{
+			EChannel[i] = UpperChannel + 2;
+			i++;
+			if (UpperChannel < 12)
+			{
+				EChannel[i] = UpperChannel + 3;
+				i++;
+			}
+		}
+	}
+	// Total i channels are effected channels. 
+	// Now find corresponding channel in ChannelList array.  Then set its bEffectedChannel= TRUE
+	for (j = 0;j < i;j++)
+	{
+		for (k = 0;k < pAd->ChannelListNum;k++)
+		{
+			if (pAd->ChannelList[k].Channel == EChannel[j])
+			{
+				pAd->ChannelList[k].bEffectedChannel = TRUE;
+				DBGPRINT(RT_DEBUG_TRACE,(" EffectedChannel[%d]( =%d)\n", k, EChannel[j]));
+				break;
+			}
+		}
+	}
+}
+
+
+VOID DeleteEffectedChannelList(
+	IN PRTMP_ADAPTER pAd)
+{
+	UCHAR		i;
+	// Clear all bEffectedChannel in ChannelList array.
+	//for (i = 0; i < (pAd->ChannelListNum - 1); i++)
+	for (i = 0; i < pAd->ChannelListNum; i++)		
+	{
+		pAd->ChannelList[i].bEffectedChannel = FALSE;
+	}	
+}
+
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Control Primary&Central Channel, ChannelWidth and Second Channel Offset
+
+	Arguments:
+		pAd						Pointer to our adapter
+		PrimaryChannel			Primary Channel
+		CentralChannel			Central Channel
+		ChannelWidth				BW_20 or BW_40
+		SecondaryChannelOffset	EXTCHA_NONE, EXTCHA_ABOVE and EXTCHA_BELOW
+		
+	Return Value:
+		None
+		
+	Note:
+		
+	========================================================================
+*/
+VOID CntlChannelWidth(
+	IN PRTMP_ADAPTER	pAd,
+	IN UCHAR			PrimaryChannel,
+	IN UCHAR			CentralChannel,	
+	IN UCHAR			ChannelWidth,
+	IN UCHAR			SecondaryChannelOffset) 
+{
+	UCHAR	Value = 0;
+	UINT32	Data = 0;
+
+
+	DBGPRINT(RT_DEBUG_TRACE, ("%s: PrimaryChannel[%d] \n",__FUNCTION__,PrimaryChannel));
+	DBGPRINT(RT_DEBUG_TRACE, ("%s: CentralChannel[%d] \n",__FUNCTION__,CentralChannel));
+	DBGPRINT(RT_DEBUG_TRACE, ("%s: ChannelWidth[%d] \n",__FUNCTION__,ChannelWidth));
+	DBGPRINT(RT_DEBUG_TRACE, ("%s: SecondaryChannelOffset[%d] \n",__FUNCTION__,SecondaryChannelOffset));
+
+#ifdef DOT11_N_SUPPORT
+	// Change to AP channel
+	if (ChannelWidth == BW_40)
+	{
+		if(SecondaryChannelOffset == EXTCHA_ABOVE)
+		{	
+			// Must using 40MHz.
+			pAd->CommonCfg.BBPCurrentBW = BW_40;
+			AsicSwitchChannel(pAd, CentralChannel, FALSE);
+			AsicLockChannel(pAd, CentralChannel);
+
+			RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R4, &Value);
+			Value &= (~0x18);
+			Value |= 0x10;
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R4, Value);
+
+			//  RX : control channel at lower 
+			RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R3, &Value);
+			Value &= (~0x20);
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R3, Value);
+#ifdef RTMP_MAC_PCI
+			pAd->StaCfg.BBPR3 = Value;
+#endif // RTMP_MAC_PCI //
+
+			RTMP_IO_READ32(pAd, TX_BAND_CFG, &Data);
+			Data &= 0xfffffffe;
+			RTMP_IO_WRITE32(pAd, TX_BAND_CFG, Data);
+
+			if (pAd->MACVersion == 0x28600100)
+			{
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R69, 0x1A);
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R70, 0x0A);
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R73, 0x16);
+			DBGPRINT(RT_DEBUG_TRACE, ("!!!rt2860C !!! \n" ));
+			}	
+
+			DBGPRINT(RT_DEBUG_TRACE, ("!!!40MHz Lower !!! Control Channel at Below. Central = %d \n", pAd->CommonCfg.CentralChannel ));
+		}
+		else if (SecondaryChannelOffset == EXTCHA_BELOW)
+		{	
+			// Must using 40MHz.
+			pAd->CommonCfg.BBPCurrentBW = BW_40;
+			AsicSwitchChannel(pAd, CentralChannel, FALSE);
+			AsicLockChannel(pAd, CentralChannel);
+
+			RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R4, &Value);
+			Value &= (~0x18);
+			Value |= 0x10;
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R4, Value);
+
+			RTMP_IO_READ32(pAd, TX_BAND_CFG, &Data);
+			Data |= 0x1;
+			RTMP_IO_WRITE32(pAd, TX_BAND_CFG, Data);
+
+			RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R3, &Value);
+			Value |= (0x20);
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R3, Value);
+#ifdef RTMP_MAC_PCI
+			pAd->StaCfg.BBPR3 = Value;
+#endif // RTMP_MAC_PCI //
+
+			if (pAd->MACVersion == 0x28600100)
+			{
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R69, 0x1A);
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R70, 0x0A);
+			RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R73, 0x16);
+			DBGPRINT(RT_DEBUG_TRACE, ("!!!rt2860C !!! \n" ));
+			}
+
+			DBGPRINT(RT_DEBUG_TRACE, ("!!! 40MHz Upper !!! Control Channel at UpperCentral = %d \n", CentralChannel));
+		}
+	}
+	else
+#endif // DOT11_N_SUPPORT //
+	{
+		pAd->CommonCfg.BBPCurrentBW = BW_20;
+		AsicSwitchChannel(pAd, PrimaryChannel, FALSE);
+		AsicLockChannel(pAd, PrimaryChannel);
+
+		RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R4, &Value);
+		Value &= (~0x18);
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R4, Value);
+
+		RTMP_IO_READ32(pAd, TX_BAND_CFG, &Data);
+		Data &= 0xfffffffe;
+		RTMP_IO_WRITE32(pAd, TX_BAND_CFG, Data);
+
+		RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R3, &Value);
+		Value &= (~0x20);
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R3, Value);
+#ifdef RTMP_MAC_PCI
+		pAd->StaCfg.BBPR3 = Value;
+#endif // RTMP_MAC_PCI //
+
+		if (pAd->MACVersion == 0x28600100)
+		{
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R69, 0x16);
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R70, 0x08);
+		RTMP_BBP_IO_WRITE8_BY_REG_ID(pAd, BBP_R73, 0x11);
+		DBGPRINT(RT_DEBUG_TRACE, ("!!!rt2860C !!! \n" ));
+		}
+
+		DBGPRINT(RT_DEBUG_TRACE, ("!!! 20MHz !!! \n" ));
+	}
+
+	RTMPSetAGCInitValue(pAd, pAd->CommonCfg.BBPCurrentBW);
+
+	RTMP_BBP_IO_READ8_BY_REG_ID(pAd, BBP_R66, &pAd->BbpTuning.R66CurrentValue);
+}
+
+
+#endif // DOT11N_DRAFT3 //
+#endif // DOT11_N_SUPPORT //
+
+BOOLEAN ScanRunning(
+		IN PRTMP_ADAPTER pAd)
+{
+	return (pAd->Mlme.SyncMachine.CurrState == SCAN_LISTEN) ? TRUE : FALSE;
+}
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/wpa.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/wpa.c
new file mode 100644
index 000000000..edfe33e87
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta/wpa.c
@@ -0,0 +1,447 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+
+	Module Name:
+	wpa.c
+
+	Abstract:
+
+	Revision History:
+	Who			When			What
+	--------	----------		----------------------------------------------
+	Jan	Lee		03-07-22		Initial
+	Paul Lin	03-11-28		Modify for supplicant
+*/
+#include "rt_config.h"
+
+void inc_byte_array(UCHAR *counter, int len);
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Process MIC error indication and record MIC error timer.
+		
+	Arguments:
+		pAd 	Pointer to our adapter
+		pWpaKey 		Pointer to the WPA key structure
+		
+	Return Value:
+		None
+		
+	IRQL = DISPATCH_LEVEL
+	
+	Note:
+	
+	========================================================================
+*/
+VOID	RTMPReportMicError(
+	IN	PRTMP_ADAPTER	pAd, 
+	IN	PCIPHER_KEY 	pWpaKey)
+{
+	ULONG	Now;
+    UCHAR   unicastKey = (pWpaKey->Type == PAIRWISE_KEY ? 1:0);
+
+	// Record Last MIC error time and count
+	NdisGetSystemUpTime(&Now);
+	if (pAd->StaCfg.MicErrCnt == 0)
+	{
+		pAd->StaCfg.MicErrCnt++;
+		pAd->StaCfg.LastMicErrorTime = Now;
+        NdisZeroMemory(pAd->StaCfg.ReplayCounter, 8);        
+	}
+	else if (pAd->StaCfg.MicErrCnt == 1)
+	{
+		if ((pAd->StaCfg.LastMicErrorTime + (60 * OS_HZ)) < Now)
+		{
+			// Update Last MIC error time, this did not violate two MIC errors within 60 seconds
+			pAd->StaCfg.LastMicErrorTime = Now; 		
+		}
+		else
+		{
+
+				RTMPSendWirelessEvent(pAd, IW_COUNTER_MEASURES_EVENT_FLAG, pAd->MacTab.Content[BSSID_WCID].Addr, BSS0, 0); 
+
+			pAd->StaCfg.LastMicErrorTime = Now; 		
+			// Violate MIC error counts, MIC countermeasures kicks in
+			pAd->StaCfg.MicErrCnt++;			
+			// We shall block all reception
+			// We shall clean all Tx ring and disassoicate from AP after next EAPOL frame
+			// 
+			// No necessary to clean all Tx ring, on RTMPHardTransmit will stop sending non-802.1X EAPOL packets
+			// if pAd->StaCfg.MicErrCnt greater than 2.
+			//
+			// RTMPRingCleanUp(pAd, QID_AC_BK);
+			// RTMPRingCleanUp(pAd, QID_AC_BE);
+			// RTMPRingCleanUp(pAd, QID_AC_VI);
+			// RTMPRingCleanUp(pAd, QID_AC_VO);
+			// RTMPRingCleanUp(pAd, QID_HCCA);
+		}
+	}
+	else
+	{
+		// MIC error count >= 2
+		// This should not happen
+		;
+	}
+    MlmeEnqueue(pAd, 
+				MLME_CNTL_STATE_MACHINE,
+				OID_802_11_MIC_FAILURE_REPORT_FRAME,
+				1,
+				&unicastKey, 0);
+
+    if (pAd->StaCfg.MicErrCnt == 2)
+    {
+        RTMPSetTimer(&pAd->StaCfg.WpaDisassocAndBlockAssocTimer, 100);
+    }
+}
+
+
+#ifdef WPA_SUPPLICANT_SUPPORT
+#define	LENGTH_EAP_H    4
+// If the received frame is EAP-Packet ,find out its EAP-Code (Request(0x01), Response(0x02), Success(0x03), Failure(0x04)).
+INT	    WpaCheckEapCode(
+	IN  PRTMP_ADAPTER   		pAd,
+	IN  PUCHAR				pFrame,
+	IN  USHORT				FrameLen,
+	IN  USHORT				OffSet)
+{
+	
+	PUCHAR	pData;
+	INT	result = 0;
+		
+	if( FrameLen < OffSet + LENGTH_EAPOL_H + LENGTH_EAP_H ) 
+		return result;
+		
+	pData = pFrame + OffSet; // skip offset bytes
+ 	
+	if(*(pData+1) == EAPPacket) 	// 802.1x header - Packet Type
+	{
+		 result = *(pData+4);		// EAP header - Code
+	}
+
+	return result;
+}
+
+VOID    WpaSendMicFailureToWpaSupplicant(
+    IN  PRTMP_ADAPTER    pAd,
+    IN  BOOLEAN          bUnicast)
+{    
+	char custom[IW_CUSTOM_MAX] = {0};
+    
+	sprintf(custom, "MLME-MICHAELMICFAILURE.indication");
+	if(bUnicast)
+		sprintf(custom, "%s unicast", custom);
+
+	RtmpOSWrielessEventSend(pAd, IWEVCUSTOM, -1, NULL, (PUCHAR)custom, strlen(custom));
+	
+	return;
+}
+#endif // WPA_SUPPLICANT_SUPPORT //
+
+VOID	WpaMicFailureReportFrame(
+	IN  PRTMP_ADAPTER   pAd,
+	IN MLME_QUEUE_ELEM *Elem)
+{
+	PUCHAR              pOutBuffer = NULL;
+	UCHAR               Header802_3[14];
+	ULONG               FrameLen = 0;
+	UCHAR				*mpool;
+	PEAPOL_PACKET       pPacket;
+	UCHAR               Mic[16];
+    BOOLEAN             bUnicast;
+        
+	DBGPRINT(RT_DEBUG_TRACE, ("WpaMicFailureReportFrame ----->\n"));
+
+    bUnicast = (Elem->Msg[0] == 1 ? TRUE:FALSE);
+	pAd->Sequence = ((pAd->Sequence) + 1) & (MAX_SEQ_NUMBER);
+
+	// init 802.3 header and Fill Packet
+	MAKE_802_3_HEADER(Header802_3, pAd->CommonCfg.Bssid, pAd->CurrentAddress, EAPOL);	
+
+	// Allocate memory for output
+	os_alloc_mem(NULL, (PUCHAR *)&mpool, TX_EAPOL_BUFFER);
+	if (mpool == NULL)
+    {
+        DBGPRINT(RT_DEBUG_ERROR, ("!!!%s : no memory!!!\n", __FUNCTION__));
+        return;
+    }
+
+	pPacket = (PEAPOL_PACKET)mpool;
+	NdisZeroMemory(pPacket, TX_EAPOL_BUFFER);
+	
+	pPacket->ProVer	= EAPOL_VER;
+	pPacket->ProType	= EAPOLKey;
+	
+	pPacket->KeyDesc.Type = WPA1_KEY_DESC;
+
+    // Request field presented
+    pPacket->KeyDesc.KeyInfo.Request = 1;
+    
+	if(pAd->StaCfg.WepStatus  == Ndis802_11Encryption3Enabled)
+	{
+		pPacket->KeyDesc.KeyInfo.KeyDescVer = 2;
+	} 
+	else	  // TKIP
+	{
+		pPacket->KeyDesc.KeyInfo.KeyDescVer = 1;
+	}
+
+    pPacket->KeyDesc.KeyInfo.KeyType = (bUnicast ? PAIRWISEKEY : GROUPKEY);
+
+	// KeyMic field presented
+	pPacket->KeyDesc.KeyInfo.KeyMic  = 1;
+
+    // Error field presented
+	pPacket->KeyDesc.KeyInfo.Error  = 1;
+    
+	// Update packet length after decide Key data payload
+	SET_UINT16_TO_ARRARY(pPacket->Body_Len, MIN_LEN_OF_EAPOL_KEY_MSG)
+
+	// Key Replay Count
+	NdisMoveMemory(pPacket->KeyDesc.ReplayCounter, pAd->StaCfg.ReplayCounter, LEN_KEY_DESC_REPLAY);
+    inc_byte_array(pAd->StaCfg.ReplayCounter, 8);
+
+	// Convert to little-endian format.
+	*((USHORT *)&pPacket->KeyDesc.KeyInfo) = cpu2le16(*((USHORT *)&pPacket->KeyDesc.KeyInfo));
+
+
+	MlmeAllocateMemory(pAd, (PUCHAR *)&pOutBuffer);  // allocate memory
+	if(pOutBuffer == NULL)
+	{
+		os_free_mem(NULL, mpool);
+		return;
+	}
+    
+	// Prepare EAPOL frame for MIC calculation
+	// Be careful, only EAPOL frame is counted for MIC calculation
+	MakeOutgoingFrame(pOutBuffer,               &FrameLen,
+		              CONV_ARRARY_TO_UINT16(pPacket->Body_Len) + 4,   pPacket,
+		              END_OF_ARGS);
+
+	// Prepare and Fill MIC value
+	NdisZeroMemory(Mic, sizeof(Mic));
+	if(pAd->StaCfg.WepStatus  == Ndis802_11Encryption3Enabled)
+	{	// AES
+        UCHAR digest[20] = {0};
+		RT_HMAC_SHA1(pAd->StaCfg.PTK, LEN_PTK_KCK, pOutBuffer, FrameLen, digest, SHA1_DIGEST_SIZE);
+		NdisMoveMemory(Mic, digest, LEN_KEY_DESC_MIC);
+	} 
+	else
+	{	// TKIP
+		RT_HMAC_MD5(pAd->StaCfg.PTK, LEN_PTK_KCK, pOutBuffer, FrameLen, Mic, MD5_DIGEST_SIZE);
+	}
+	NdisMoveMemory(pPacket->KeyDesc.KeyMic, Mic, LEN_KEY_DESC_MIC);
+
+	// copy frame to Tx ring and send MIC failure report frame to authenticator
+	RTMPToWirelessSta(pAd, &pAd->MacTab.Content[BSSID_WCID],
+					  Header802_3, LENGTH_802_3, 
+					  (PUCHAR)pPacket, 
+					  CONV_ARRARY_TO_UINT16(pPacket->Body_Len) + 4, FALSE);
+
+	MlmeFreeMemory(pAd, (PUCHAR)pOutBuffer);
+
+	os_free_mem(NULL, mpool);
+
+	DBGPRINT(RT_DEBUG_TRACE, ("WpaMicFailureReportFrame <-----\n"));
+}
+
+/** from wpa_supplicant
+ * inc_byte_array - Increment arbitrary length byte array by one
+ * @counter: Pointer to byte array
+ * @len: Length of the counter in bytes
+ *
+ * This function increments the last byte of the counter by one and continues
+ * rolling over to more significant bytes if the byte was incremented from
+ * 0xff to 0x00.
+ */
+void inc_byte_array(UCHAR *counter, int len)
+{
+	int pos = len - 1;
+	while (pos >= 0) {
+		counter[pos]++;
+		if (counter[pos] != 0)
+			break;
+		pos--;
+	}
+}
+
+VOID WpaDisassocApAndBlockAssoc(
+    IN PVOID SystemSpecific1, 
+    IN PVOID FunctionContext, 
+    IN PVOID SystemSpecific2, 
+    IN PVOID SystemSpecific3) 
+{
+    RTMP_ADAPTER                *pAd = (PRTMP_ADAPTER)FunctionContext;
+    MLME_DISASSOC_REQ_STRUCT    DisassocReq;
+
+	// disassoc from current AP first
+	DBGPRINT(RT_DEBUG_TRACE, ("RTMPReportMicError - disassociate with current AP after sending second continuous EAPOL frame\n"));
+	DisassocParmFill(pAd, &DisassocReq, pAd->CommonCfg.Bssid, REASON_MIC_FAILURE);
+	MlmeEnqueue(pAd, ASSOC_STATE_MACHINE, MT2_MLME_DISASSOC_REQ, sizeof(MLME_DISASSOC_REQ_STRUCT), &DisassocReq, 0);
+
+	pAd->Mlme.CntlMachine.CurrState = CNTL_WAIT_DISASSOC;
+	pAd->StaCfg.bBlockAssoc = TRUE;
+}
+
+VOID WpaStaPairwiseKeySetting(
+	IN	PRTMP_ADAPTER	pAd)
+{
+	PCIPHER_KEY pSharedKey;
+	PMAC_TABLE_ENTRY pEntry;
+
+	pEntry = &pAd->MacTab.Content[BSSID_WCID];
+	
+	// Pairwise key shall use key#0 
+	pSharedKey = &pAd->SharedKey[BSS0][0];
+
+	NdisMoveMemory(pAd->StaCfg.PTK, pEntry->PTK, LEN_PTK);
+	
+	// Prepare pair-wise key information into shared key table
+	NdisZeroMemory(pSharedKey, sizeof(CIPHER_KEY));  
+	pSharedKey->KeyLen = LEN_TK;
+    NdisMoveMemory(pSharedKey->Key, &pAd->StaCfg.PTK[32], LEN_TK);
+	NdisMoveMemory(pSharedKey->RxMic, &pAd->StaCfg.PTK[48], LEN_TKIP_MIC);
+	NdisMoveMemory(pSharedKey->TxMic, &pAd->StaCfg.PTK[48+LEN_TKIP_MIC], LEN_TKIP_MIC);            
+
+	// Decide its ChiperAlg
+	if (pAd->StaCfg.PairCipher == Ndis802_11Encryption2Enabled)
+		pSharedKey->CipherAlg = CIPHER_TKIP;
+	else if (pAd->StaCfg.PairCipher == Ndis802_11Encryption3Enabled)
+		pSharedKey->CipherAlg = CIPHER_AES;
+	else
+		pSharedKey->CipherAlg = CIPHER_NONE;
+
+	// Update these related information to MAC_TABLE_ENTRY
+	NdisMoveMemory(pEntry->PairwiseKey.Key, &pAd->StaCfg.PTK[32], LEN_TK);
+	NdisMoveMemory(pEntry->PairwiseKey.RxMic, &pAd->StaCfg.PTK[48], LEN_TKIP_MIC);
+	NdisMoveMemory(pEntry->PairwiseKey.TxMic, &pAd->StaCfg.PTK[48+LEN_TKIP_MIC], LEN_TKIP_MIC);            
+	pEntry->PairwiseKey.CipherAlg = pSharedKey->CipherAlg;
+	
+	// Update pairwise key information to ASIC Shared Key Table	   
+	RTMP_ASIC_SHARED_KEY_TABLE(pAd, 
+						  BSS0, 
+						  0, 
+						  pSharedKey);
+
+	// Update ASIC WCID attribute table and IVEIV table
+	RTMP_SET_WCID_SEC_INFO(pAd, 
+						BSS0, 
+						0, 
+						pSharedKey->CipherAlg, 
+						BSSID_WCID,
+						SHAREDKEYTABLE);
+
+	RTMP_SET_PORT_SECURED(pAd);
+	pAd->IndicateMediaState = NdisMediaStateConnected;
+	
+	DBGPRINT(RT_DEBUG_TRACE, ("%s : AID(%d) port secured\n", __FUNCTION__, pEntry->Aid));
+
+}
+
+VOID WpaStaGroupKeySetting(
+	IN	PRTMP_ADAPTER	pAd)
+{
+	PCIPHER_KEY 		pSharedKey;
+
+	pSharedKey = &pAd->SharedKey[BSS0][pAd->StaCfg.DefaultKeyId];
+
+	// Prepare pair-wise key information into shared key table
+	NdisZeroMemory(pSharedKey, sizeof(CIPHER_KEY));  
+	pSharedKey->KeyLen = LEN_TK;
+	NdisMoveMemory(pSharedKey->Key, pAd->StaCfg.GTK, LEN_TK);
+	NdisMoveMemory(pSharedKey->RxMic, &pAd->StaCfg.GTK[16], LEN_TKIP_MIC);
+	NdisMoveMemory(pSharedKey->TxMic, &pAd->StaCfg.GTK[24], LEN_TKIP_MIC);
+
+	// Update Shared Key CipherAlg
+	pSharedKey->CipherAlg = CIPHER_NONE;
+	if (pAd->StaCfg.GroupCipher == Ndis802_11Encryption2Enabled)
+		pSharedKey->CipherAlg = CIPHER_TKIP;
+	else if (pAd->StaCfg.GroupCipher == Ndis802_11Encryption3Enabled)
+		pSharedKey->CipherAlg = CIPHER_AES;
+	else if (pAd->StaCfg.GroupCipher == Ndis802_11GroupWEP40Enabled)
+		pSharedKey->CipherAlg = CIPHER_WEP64;
+	else if (pAd->StaCfg.GroupCipher == Ndis802_11GroupWEP104Enabled)
+		pSharedKey->CipherAlg = CIPHER_WEP128;
+
+	// Update group key information to ASIC Shared Key Table	   
+	RTMP_ASIC_SHARED_KEY_TABLE(pAd, 
+						  	BSS0, 
+						  	pAd->StaCfg.DefaultKeyId, 
+							pSharedKey);
+
+	/* STA doesn't need to set WCID attribute for group key */
+}
+
+
+/*
+	========================================================================
+	
+	Routine Description:
+		Send EAPoL-Start packet to AP.
+
+	Arguments:
+		pAd         - NIC Adapter pointer
+		
+	Return Value:
+		None
+		
+	IRQL = DISPATCH_LEVEL
+	
+	Note:
+		Actions after link up
+		1. Change the correct parameters
+		2. Send EAPOL - START
+		
+	========================================================================
+*/
+VOID    WpaSendEapolStart(
+	IN	PRTMP_ADAPTER	pAd,
+	IN  PUCHAR          pBssid)
+{
+	IEEE8021X_FRAME		Packet;
+	UCHAR               Header802_3[14];
+	
+	DBGPRINT(RT_DEBUG_TRACE, ("-----> WpaSendEapolStart\n"));
+
+	NdisZeroMemory(Header802_3,sizeof(UCHAR)*14);
+
+	MAKE_802_3_HEADER(Header802_3, pBssid, &pAd->CurrentAddress[0], EAPOL);
+	
+	// Zero message 2 body
+	NdisZeroMemory(&Packet, sizeof(Packet));
+	Packet.Version = EAPOL_VER;
+	Packet.Type    = EAPOLStart;
+	Packet.Length  = cpu2be16(0);
+	
+	// Copy frame to Tx ring
+	RTMPToWirelessSta((PRTMP_ADAPTER)pAd, &pAd->MacTab.Content[BSSID_WCID],
+					 Header802_3, LENGTH_802_3, (PUCHAR)&Packet, 4, TRUE);
+
+	DBGPRINT(RT_DEBUG_TRACE, ("<----- WpaSendEapolStart\n"));
+}
+
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta_ate_iwpriv_usage.txt b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta_ate_iwpriv_usage.txt
new file mode 100644
index 000000000..46b0c2fb5
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/sta_ate_iwpriv_usage.txt
@@ -0,0 +1,445 @@
+===================================================================================================
+ATE Test Command Format for station driver
+
+****** IMPORTANT ******
+If you are not familiar with hardware, it is recommanded not to modify hardware default value.
+It may damage hardware.
+
+===================================================================================================
+Usage:
+	iwpriv ra0 [act] [parameters]=[val]
+
+
+where
+
+[act]	[parameters] 	[val] constraints		explaination
+-----	------------- 	-----------------    	--------------------------------
+
+=====================================
+1. Set ATE actions.
+	Value:
+		ATESTART	- Start ATE function and stop station function.
+		ATESTOP		- Stop ATE function and start station function.
+		TXCONT		- Start continuous TX, for power mask.
+		TXCARR		- Start carrier test, for frequency calibration.
+		TXFRAME		- Transmit frame, for EVM.
+		RXFRAME		- Continuous RX, for PER/FER.
+		
+1.1 ATEDA
+		Set ATE frame header destination address.
+	Value:
+		xx:xx:xx:xx:xx:xx	; hex
+
+1.2 ATESA		    
+		Set ATE frame header source addr.
+	Value:
+		xx:xx:xx:xx:xx:xx	; hex
+
+1.3 ATEBSSID	    
+		Set ATE frame header BSSID.
+	Value:
+		xx:xx:xx:xx:xx:xx	; hex
+
+1.4 ATECHANNEL	    
+		Set ATE Channel, deimal.
+	Value:
+		802.11b/g: 1 ~ 14 depends on CountryRegion setting
+
+1.5 ATETXPOW0
+		Set ATE Tx power for Antenna 1.
+	Value:
+		0 ~ 31			; 2.4GHz, deimal
+		-7 ~15			; 5.5GHz, deimal
+
+1.6 ATETXPOW1
+		Set ATE Tx power for Antenna 2.
+	Value:
+		0 ~ 31			; 2.4GHz, decimal
+		-7 ~15			; 5.5GHz, deimal
+
+1.7 ATETXFREQOFFSET	    
+		Set ATE RF frequency offset.
+	Value:
+		0 ~ 63			; unit: 2KHz, decimal
+
+1.8 ATETXLEN	    
+		Set ATE frame length.
+	Value:
+		24 ~ 2312			; decimal
+
+1.9 ATETXCNT	    
+		Set ATE frame Tx count.
+	Value:
+		1 ~				; 32-bit, decimal
+
+1.10 ATETXMODE (Refer to TxMode)
+		Set ATE Tx Mode.
+	Value:
+		0: 	CCK			802.11b
+		1: 	OFDM		        802.11g
+		2: 	HT_MIX 		        802.11b/g/n
+		3: 	Green Field		802.11n
+
+1.11 ATETXBW (Refer to TxMode)
+		Set ATE Tx and Rx Bandwidth.
+	Value:
+		0: 	20MHz
+		1: 	40MHz
+
+1.12 ATETXGI (Refer to TxMode) 
+		Set ATE Tx Guard Interval.
+	Value:
+		0: 	Long 
+		1: 	Short
+
+1.13 ATETXMCS (Refer to TxMode)
+		Set ATE Tx MCS type.
+	Value:
+		0 ~ 15
+
+1.14 ATETXANT	    
+		Set ATE TX antenna.
+	Value:
+		0: 	All
+		1: 	Antenna one
+		2: 	Antenna two
+
+1.15 ATERXANT
+		Set ATE RX antenna.
+	Value:
+		0: 	All
+		1: 	Antenna one
+		2: 	Antenna two 
+		3: 	Antenna three
+
+1.16 ATERXFER	    
+		Set ATE to periodically reset and show up RxCount (per-second) and RxTotalCount.
+	Value:
+		0: 	Disable counter visability
+		1: 	Enable counter visability
+
+1.17 ATESHOW	    
+		Show all parameters of ATE.
+	Value:
+		1
+
+1.18 ATEHELP
+		List all commands of ATE.
+	Value:
+		1
+
+1.19 ResetCounter
+		Reset statistic counter.
+	Value:
+		1
+
+1.20 ATERRF
+		Read all of the RF registers.
+	Value:
+		1
+
+1.21 ATEWRF1
+		Write the RF register 1.
+	Value:
+		xxxxxxxx          ;32-bit, hex
+
+1.22 ATEWRF2
+		Write the RF register 2.
+	Value:
+		xxxxxxxx          ;32-bit, hex
+
+1.23 ATEWRF3
+		Write the RF register 3.
+	Value:
+		xxxxxxxx          ;32-bit, hex
+
+1.24 ATEWRF4
+		Write the RF register 4.
+	Value:
+		xxxxxxxx          ;32-bit, hex
+
+1.25 ATELDE2P
+		Overwrite all EEPROM contents
+	Value:
+		1
+	E.g.
+		iwpriv ra0 set ATELDE2P=1
+
+1.26 ATERE2P
+		Display all EEPROM content.
+	Value:
+		1
+	E.g.
+		iwpriv ra0 set ATERE2P=1
+
+===================================================================================================
+2. Examples:
+=========
+
+2.1 Check EVM & Power
+		iwpriv ra0 set ATE=ATESTART
+		iwpriv ra0 set ATEDA=00:11:22:33:44:55
+		iwpriv ra0 set ATESA=00:aa:bb:cc:dd:ee
+		iwpriv ra0 set ATEBSSID=00:11:22:33:44:55
+		iwpriv ra0 set ATECHANNEL=1			; set Channel
+		iwpriv ra0 set ATETXMODE=1			; set TX-Mode.
+		iwpriv ra0 set ATETXMCS=7			; set MCS type.
+		iwpriv ra0 set ATETXBW=0			; set Bandwidth
+		iwpriv ra0 set ATETXGI=0			; set Long GI.
+		iwpriv ra0 set ATETXLEN=1024		        ; set packet length.
+		iwpriv ra0 set ATETXPOW0=18
+		iwpriv ra0 set ATETXPOW1=18
+		iwpriv ra0 set ATETXCNT=100000
+		iwpriv ra0 set ATE=TXFRAME
+		�K
+		iwpriv ra0 set ATETXPOW0=19
+		�K
+		iwpriv ra0 set ATETXPOW0=20
+		�K
+		iwpriv ra0 set ATE=ATESTART
+
+2.2 Check Carrier
+		iwpriv ra0 set ATE=ATESTART
+		iwpriv ra0 set ATECHANNEL=1			; set Channel
+		iwpriv ra0 set ATETXMODE=1			; set TX-Mode.
+		iwpriv ra0 set ATETXMCS=7			; set MCS type.
+		iwpriv ra0 set ATETXBW=0			; set Bandwidth
+		iwpriv ra0 set ATETXCNT=200			; Tx frame count(decmial)
+		iwpriv ra0 set ATE=TXFRAME			; Start Tx Frame(inform BBP to change, modulation mode)
+		iwpriv ra0 set ATE=TXCARR			; Start Tx carrier, Measure carrier with instrument
+		iwpriv ra0 set ATETXPOW0=05
+		iwpriv ra0 set ATETXPOW1=05
+		iwpriv ra0 set ATETXFREQOFFSET=19
+		iwpriv ra0 set ATE=ATESTART
+
+2.3 Check specturm mask
+		iwpriv ra0 set ATE=ATESTART
+		iwpriv ra0 set ATECHANNEL=1			; set Channel
+		iwpriv ra0 set ATETXMODE=1			; set TX-Mode.
+		iwpriv ra0 set ATETXMCS=7			; set MCS type.
+		iwpriv ra0 set ATETXBW=0			; set Bandwidth
+		iwpriv ra0 set ATETXCNT=200			; Tx frame count(decmial)
+		iwpriv ra0 set ATE=TXFRAME			; Start Tx Frame(inform BBP to change, modulation mode)
+		iwpriv ra0 set ATE=TXCONT			; Start continuous TX, Measure specturm mask with instrument
+		iwpriv ra0 set ATETXPOW0=5
+		iwpriv ra0 set ATETXPOW1=5
+		iwpriv ra0 set ATE=ATESTART
+
+2.4 Frequency offset tuning
+		iwpriv ra0 set ATE=ATESTART
+		iwpriv ra0 set ATECHANNEL=1			; set Channel
+		iwpriv ra0 set ATETXMODE=1			; set TX-Mode.
+		iwpriv ra0 set ATETXMCS=7			; set MCS type.
+		iwpriv ra0 set ATETXCNT=200			; Tx frame count(decmial)
+		iwpriv ra0 set ATETXFREQOFFSET=0	        ; Set frequency offset 0(decimal)
+		iwpriv ra0 set ATE=TXFRAME			; Start Tx Frame
+		iwpriv ra0 set ATE=TXCARR			; Start Tx carrier, Measure carrier frequency with instrument
+		iwpriv ra0 set ATETXFREQOFFSET=10	        ; Dynamic turning frequency offset, 10(decimal)
+		iwpriv ra0 set ATETXFREQOFFSET=20	        ; Dynamic turning frequency offset, 20(decimal)
+		iwpriv ra0 set ATE=ATESTART			; Stop, Store the tuning result to EEPROM
+
+2.5 Rx
+		iwpriv ra0 set ATE=ATESTART
+		iwpriv ra0 set ATECHANNEL=1			; set Channel
+		iwpriv ra0 set ResetCounter=1		        ; Reset statistic counter
+		iwpriv ra0 set ATETXFREQOFFSET=value            ;To use the ��value��(decimal) you got in tx calibration
+		iwpriv ra0 set ATETXMODE=1			; set TX-Mode.
+		iwpriv ra0 set ATETXMCS=7			; set MCS type.
+		iwpriv ra0 set ATETXBW=0			; set Bandwidth
+		iwpriv ra0 set ATE=RXFRAME			; Start Rx,
+		iwpriv ra0 set ATERXFER=1			; show RxCnt and RSSI/per-antenna, Transmit test packets
+		iwpriv ra0 set ATE=ATESTART			; Stop
+		iwpriv ra0 stat 					; get statistics counter
+		iwpriv ra0 set ATERXFER=1
+		iwpriv ra0 set ATERXANT=1
+		
+		iwpriv ra0 set ATE=ATESTART
+		iwpriv ra0 set ATERXANT=0
+		iwpriv ra0 set ATE=RXFRAME
+
+2.6 Show all ate parameters
+		iwpriv ra0 set ATESHOW=1
+
+			Mode=4
+			TxPower0=0
+			TxPower1=0
+			TxAntennaSel=0
+			RxAntennaSel=0
+			BBPCurrentBW=0
+			GI=0
+			MCS=7
+			TxMode=1
+			Addr1=00:11:22:aa:bb:cc
+			Addr2=00:11:22:aa:bb:cc
+			Addr3=00:11:22:aa:bb:cc
+			Channel=1
+			TxLength=1024
+			TxCount=40000
+			TxRate=11
+			RFFreqOffset=0
+
+2.7 Online help
+		iwpriv ra0 set ATEHELP=1
+		
+			ATE=ATESTART, ATESTOP, TXCONT, TXCARR, TXFRAME, RXFRAME
+			ATEDA
+			ATESA
+			ATEBSSID
+			ATECHANNEL, range:0~14(unless A band !). 
+			ATETXPOW0, set power level of antenna 1.
+			ATETXPOW1, set power level of antenna 2.
+			ATETXANT, set TX antenna. 0: all, 1: antenna one, 2: antenna two.
+			ATERXANT, set RX antenna.0: all, 1: antenna one, 2: antenna two, 3: antenna three.
+			ATETXFREQOFFSET, set frequency offset, range 0~63.
+			ATETXBW, set BandWidth, 0:20MHz, 1:40MHz.
+			ATETXLEN, set Frame length, range 24~2312.
+			ATETXCNT, set how many frame going to transmit.
+			ATETXMCS, set MCS, reference to rate table.
+			ATETXMODE, set Mode 0: CCK, 1: OFDM, 2: HT-Mix, 3: GreenField, reference to rate table.
+			ATETXGI, set GI interval, 0: Long, 1: Short.
+			ATERXFER, 0: disable Rx Frame error rate. 1: enable Rx Frame error rate.
+		  	ATERRF, show all RF registers.
+			ATEWRF1, set RF1 register.
+			ATEWRF2, set RF2 register.
+			ATEWRF3, set RF3 register.
+			ATEWRF4, set RF4 register.
+			ATELDE2P, load EEPROM from .bin file.
+			ATERE2P, display all EEPROM content.
+			ATESHOW, display all parameters of ATE.
+			ATEHELP, online help.
+
+2.8 Display Rx Packet Count and RSSI
+		iwpriv ra0 set ATERXANT=0		==> Enable All Three Rx Antennas
+		iwpriv ra0 set ATERXFER=1		==> Enable Rx Frame Error Rate: RxCnt/RxTotal
+		iwpriv ra0 set ATE=RXFRAME	        ==> Start Rx
+			MlmePeriodicExec: Rx packet cnt = 2/4
+			MlmePeriodicExec: Rx AvgRssi0=-88, AvgRssi1=-80, AvgRssi2=-91
+			MlmePeriodicExec: Rx packet cnt = 2/6
+			MlmePeriodicExec: Rx AvgRssi0=-86, AvgRssi1=-77, AvgRssi2=-89�K
+			�K
+
+		iwpriv ra0 set ATERXANT=1		==> Enable Three Rx Antenna-1
+		iwpriv ra0 set ATERXFER=1		==> Enable Rx Frame Error Rate: RxCnt/RxTotal
+		iwpriv ra0 set ATE=RXFRAME	        ==> Start Rx
+			MlmePeriodicExec: Rx packet cnt = 0/7
+			MlmePeriodicExec: Rx AvgRssi=-87
+			MlmePeriodicExec: Rx packet cnt = 7/14
+			MlmePeriodicExec: Rx AvgRssi=-90
+			�K
+			�K
+
+
+===================================================================================================
+3. Hardware Access
+==================
+
+=====================================
+3.1 iwpriv ra0 bbp [parameters]=[Value]
+		Read/Write BBP registers by ID number.
+	BBPID
+
+3.1.1 Read BBP register, BBPID only, no ��=�� symbol.
+	BBPID:
+		0 ~ xx			; decimal, 8-bit
+	BBPID=Value
+
+3.1.2 Write BBP register.
+	BBPID:
+		0 ~ xx			; decimal, 8-bit
+	Value:
+		00 ~FF			; hexdecimal, 8-bit
+
+=====================================
+3.2 iwpriv ra0 mac [parameters]=[val]
+		Read/Write MAC registers by offset.
+	MAC_OFFSET
+
+3.2.1 Read MAC register, MAC_OFFSET only, no ��=�� symbol.
+	MAC_OFFSET:
+		0000 ~ FFFF		; hexdecimal, 16-bit
+	MAC_OFFSET=Value
+
+3.2.2 Write MAC register.
+	MAC_OFFSET:
+		0000 ~ FFFF		; hexdecimal, 16-bit
+	Value:
+		0000 ~FFFF		; hexdecimal, 32-bit
+
+=====================================
+3.3 iwpriv ra0 e2p [parameters]=[val]
+		Read/Write EEPROM content by address.
+	EEP_ADDR
+
+3.3.1 Read EEPROM content, EEP_ADDR only, no ��=�� symbol.
+	EEP_ADDR:
+		00 ~ FF			; hexdecimal, 16-bit alignment (0, 2, 4, 6, 8, A, C, �K)
+	EEP_ADDR=Value
+
+3.3.2 Write EEPROM content.
+	EEP_ADDR:
+		00 ~ FF			; hexdecimal, 16-bit alignment (0, 2, 4, 6, 8, A, C, �K)
+	Value:
+		0000 ~FFFF		; hexdecimal, 16-bit
+
+=====================================
+3.4 Example
+
+3.4.1 Hardware access
+		iwpriv ra0 bbp 0				# read BBP register 0
+		iwpriv ra0 bbp 0=12				# write BBP register 0 as 0x12
+		iwpriv ra0 mac 0				# read MAC register 0
+		iwpriv ra0 mac 0=1234abcd		        # write MAC register 0 as 0x1234abcd
+		iwpriv ra0 e2p 0				# read E2PROM 0
+		iwpriv ra0 e2p c=12ab			        # write E2PROM 0xc as 0x12ab
+
+3.4.2 Statistic counter operation
+		iwpriv ra0 stat					# read statistic counter
+		iwpriv ra0 set ResetCounter=0	                # reset statistic counter
+
+	Suggestion:
+		1. To turn on ATE functionality, you have to add compile flag "RALINK_ATE" to Makefile
+		2. Before doing ATE testing, please stop AP function
+		3. If you want to test another ATE action, prefer to stop AP & ATE function
+		4. All ATE function settings will lose efficacy after reboot.
+		5. Before hardware register access, please reference hardware spec.
+	Note. 
+		In ATE mode, the channel must set via "ATECHANNEL"
+
+===================================================================================================
+4. ated
+=======
+4.1  Introduction
+The ated is an optional user space component for RT28xx Linux driver. 
+When Windows GUI starts, AP enters ATE mode (i.e.,ATESTART) immediately.
+It behaves as a proxy between Windows GUI and RT28xx Linux driver when ATE process proceeds.
+The ated will be killed automatically when Windows GUI is closed.
+You can kill it manually, too(for example, type '$killall ated').
+RT28xx linux driver will leave ATE mode either ated is killed or Windows GUI is closed.
+
+4.2  Environment setup
+1. Connect the platform you want to test directly with a Windows host by ether network line.
+2. In the Windows host, run WinPcap_4_0.exe for the QA GUI or ./RT2880_ATE/RaUI.exe(please unrar "RT2880_ATE.rar" to get it).
+
+4.3  How to use ated for ATE purpose
+0. First you should set both "HAS_ATE=y" and "HAS_QA_SUPPORT=y" in the file ~/Module/os/linux/config.mk and compile the driver.
+1. Modify the Makefile according to our target "PLATFORM".
+2. Change the path of "CROSS_COMPILE" if needed.
+3. Then type 'make' command to compile the source code of the daemon.
+4. After the driver interface has started up, attach both of the wireless interface and the ethernet       interface to the bridge interface.
+5. If you have no bridge interface, please give an IP address to the ethernet interface.
+   (for example : '$ated -beth0')
+6. After the interfaces have entered forwarding states, manually start ated, type '$ated -bbrX -iraX'.
+7. If your WLAN interface and Bridge interface is "ra0" and "br0" respectively, just type $ated.
+   (For further usage of options, type $ated -h)
+8. In the Windows host, run RT28xxQA_ATE.exe or ./RT2880_ATE/RaUI.exe.
+9. Select the wired network adapter, then press OK and wait for a moment.
+10.If the Windows host cannot tolerate such a broadcast storm from ated,
+   please run ated with option -u.(for example : '$ated -ira1 -u')
+11.If your target platform concerns its network security, please run RT28xxQA_unicast.exe instead of RT28xxQA_ATE.exe.
+
+Note : 
+a. The names of WLAN interface(default is "ra0") and Bridge interface(default is "br0") must be specified manually(for example : '$ated -bbr1 -ira2') if your WLAN interface or Bridge interface is not "ra0" or "br0" respectively !
+b. Please make sure no other RaUI is running before you excute ./RT2880_ATE/RaUI.exe.
+
+
+
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/tools/Makefile b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/tools/Makefile
new file mode 100644
index 000000000..ce4a422f8
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/tools/Makefile
@@ -0,0 +1,6 @@
+all:
+	gcc -g bin2h.c -o bin2h
+clean:
+	rm -f *.o bin2h
+
+	
diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/tools/bin2h b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/tools/bin2h
new file mode 100755
index 0000000000000000000000000000000000000000..7b0c33536954b3d1360c636a61e08e5e762f9c3f
GIT binary patch
literal 14741
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
QD9y{(OR9j5B7hwa033bkEC2ui

literal 0
HcmV?d00001

diff --git a/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/tools/bin2h.c b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/tools/bin2h.c
new file mode 100644
index 000000000..4a921ed65
--- /dev/null
+++ b/le-pregao-712010/pacote/usr/src/lepregao712010-2.3.0.0-Alpha-v2/tools/bin2h.c
@@ -0,0 +1,151 @@
+/*
+ *************************************************************************
+ * Ralink Tech Inc.
+ * 5F., No.36, Taiyuan St., Jhubei City,
+ * Hsinchu County 302,
+ * Taiwan, R.O.C.
+ *
+ * (c) Copyright 2002-2010, Ralink Technology, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify  * 
+ * it under the terms of the GNU General Public License as published by  * 
+ * the Free Software Foundation; either version 2 of the License, or     * 
+ * (at your option) any later version.                                   * 
+ *                                                                       * 
+ * 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.,                                       * 
+ * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             * 
+ *                                                                       * 
+ *************************************************************************
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+int main(int argc ,char *argv[])
+{
+    FILE *infile, *outfile;	
+    char infname[1024];
+    char outfname[1024];
+    char *rt28xxdir;
+    char *chipset;
+    int i=0;//,n=0;
+    unsigned char c;
+   
+    memset(infname,0,1024);
+    memset(outfname,0,1024);
+    
+    rt28xxdir = (char *)getenv("RT28xx_DIR");
+    chipset = (char *)getenv("CHIPSET");
+    if(!rt28xxdir)
+    {
+         printf("Environment value \"RT28xx_DIR\" not export \n");
+	 return -1;
+    }
+    if(!chipset)
+    {
+	 printf("Environment value \"CHIPSET\" not export \n");
+	 return -1;
+    }	    
+    strcat(infname,rt28xxdir);
+    strcat(infname,"/common/rt2860.bin");
+	    
+    strcat(outfname,rt28xxdir);
+    strcat(outfname,"/include/firmware.h");
+     
+    infile = fopen(infname,"r");
+    if (infile == (FILE *) NULL)
+    {
+         printf("Can't read file %s \n",infname);
+	 return -1;
+    }
+    outfile = fopen(outfname,"w");
+    
+    if (outfile == (FILE *) NULL)
+    {
+         printf("Can't open write file %s \n",outfname);
+        return -1;
+    }
+    
+    fputs("/*\n",outfile); 
+    fputs(" Copyright (c) 2007, Ralink Technology Corporation \n",outfile); 
+    fputs(" All rights reserved. \n\n",outfile);
+
+    fputs(" Redistribution.  Redistribution and use in binary form, without \n",outfile); 
+    fputs(" modification, are permitted provided that the following conditions are \n",outfile); 
+    fputs(" met: \n\n",outfile);
+
+    fputs(" \t* Redistributions must reproduce the above copyright notice and the \n",outfile);
+    fputs(" \tfollowing disclaimer in the documentation and/or other materials \n",outfile);
+    fputs(" \tprovided with the distribution. \n",outfile);
+    fputs(" \t* Neither the name of Ralink Technology Corporation nor the names of its \n",outfile);
+    fputs(" \tsuppliers may be used to endorse or promote products derived from this \n",outfile);
+    fputs(" \tsoftware without specific prior written permission. \n",outfile);
+    fputs(" \t* No reverse engineering, decompilation, or disassembly of this software \n",outfile);
+    fputs(" \tis permitted. \n\n",outfile);
+
+    fputs(" Limited patent license. Ralink Technology Corporation grants a world-wide, \n",outfile);
+    fputs(" royalty-free, non-exclusive license under patents it now or hereafter \n",outfile);
+    fputs(" owns or controls to make, have made, use, import, offer to sell and \n",outfile);
+    fputs(" sell (\"Utilize\") this software, but solely to the extent that any \n",outfile);
+    fputs(" such patent is necessary to Utilize the software alone, or in \n",outfile);
+    fputs(" combination with an operating system licensed under an approved Open \n",outfile);
+    fputs(" Source license as listed by the Open Source Initiative at \n",outfile);
+    fputs(" http://opensource.org/licenses.  The patent license shall not apply to \n",outfile);
+    fputs(" any other combinations which include this software.  No hardware per \n",outfile);
+    fputs(" se is licensed hereunder. \n\n",outfile);
+
+    fputs(" DISCLAIMER.  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND \n",outfile);
+    fputs(" CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, \n",outfile);
+    fputs(" BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND \n",outfile);
+    fputs(" FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE \n",outfile);
+    fputs(" COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, \n",outfile);
+    fputs(" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, \n",outfile);
+    fputs(" BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS \n",outfile);
+    fputs(" OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND \n",outfile);
+    fputs(" ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR \n",outfile);
+    fputs(" TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE \n",outfile);
+    fputs(" USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH \n",outfile);
+    fputs(" DAMAGE. \n",outfile);
+    fputs("*/ \n",outfile);
+
+    fputs("/* AUTO GEN PLEASE DO NOT MODIFY IT */ \n",outfile);
+    fputs("/* AUTO GEN PLEASE DO NOT MODIFY IT */ \n",outfile);
+    fputs("\n",outfile);
+    fputs("\n",outfile);
+    fputs("UCHAR FirmwareImage [] = { \n",outfile);
+    while(1)
+    {
+	char cc[2];    
+
+	c = getc(infile);
+	
+	if (feof(infile))
+	    break;
+	
+	memset(cc,0,2);
+	
+	if (i>=16)
+	{	
+	    fputs("\n", outfile);	
+	    i = 0;
+	}    
+	fputs("0x", outfile); 
+	sprintf(cc,"%02x",c);
+	fputs(cc, outfile);
+	fputs(", ", outfile);
+	i++;
+    } 
+    
+    fputs("} ;\n", outfile);
+    fclose(infile);
+    fclose(outfile);
+    exit(0);
+}	
-- 
GitLab