Index: chromeos/drivers/ath6kl/os/linux/include/ar6000_drv.h |
diff --git a/chromeos/drivers/ath6kl/os/linux/include/ar6000_drv.h b/chromeos/drivers/ath6kl/os/linux/include/ar6000_drv.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..4d11b982ae0c6bfdc732d7bd4bcfad81bf0a3b11 |
--- /dev/null |
+++ b/chromeos/drivers/ath6kl/os/linux/include/ar6000_drv.h |
@@ -0,0 +1,589 @@ |
+/* |
+ * |
+ * Copyright (c) 2004-2010 Atheros Communications Inc. |
+ * All rights reserved. |
+ * |
+ * |
+// This program is free software; you can redistribute it and/or modify |
+// it under the terms of the GNU General Public License version 2 as |
+// published by the Free Software Foundation; |
+// |
+// Software distributed under the License is distributed on an "AS |
+// IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or |
+// implied. See the License for the specific language governing |
+// rights and limitations under the License. |
+// |
+// |
+ * |
+ */ |
+ |
+#ifndef _AR6000_H_ |
+#define _AR6000_H_ |
+ |
+#include <linux/version.h> |
+ |
+ |
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,17) |
+#include <linux/config.h> |
+#else |
+#include <linux/autoconf.h> |
+#endif |
+#include <linux/init.h> |
+#include <linux/kernel.h> |
+#include <linux/spinlock.h> |
+#include <linux/skbuff.h> |
+#include <linux/if_ether.h> |
+#include <linux/netdevice.h> |
+#include <linux/etherdevice.h> |
+#include <net/iw_handler.h> |
+#include <linux/if_arp.h> |
+#include <linux/ip.h> |
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,26) |
+#include <asm/semaphore.h> |
+#else |
+#include <linux/semaphore.h> |
+#endif |
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,32) |
+#include <linux/sched.h> |
+#endif |
+#include <linux/wireless.h> |
+#ifdef CONFIG_CFG80211 |
+#include <net/cfg80211.h> |
+#endif /* CONFIG_CFG80211 */ |
+#include <linux/module.h> |
+#include <asm/io.h> |
+ |
+#include <a_config.h> |
+#include <athdefs.h> |
+#include "a_types.h" |
+#include "a_osapi.h" |
+#include "htc_api.h" |
+#include "wmi.h" |
+#include "a_drv.h" |
+#include "bmi.h" |
+#include <ieee80211.h> |
+#include <ieee80211_ioctl.h> |
+#include <wlan_api.h> |
+#include <wmi_api.h> |
+#include "gpio_api.h" |
+#include "gpio.h" |
+#include "pkt_log.h" |
+#include "aggr_recv_api.h" |
+#include <host_version.h> |
+#include <linux/rtnetlink.h> |
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0) |
+#include <asm/uaccess.h> |
+#else |
+#include <linux/init.h> |
+#include <linux/moduleparam.h> |
+#endif |
+#include "ar6000_api.h" |
+#ifdef CONFIG_HOST_TCMD_SUPPORT |
+#include <testcmd.h> |
+#endif |
+#include <linux/firmware.h> |
+ |
+#include "targaddrs.h" |
+#include "dbglog_api.h" |
+#include "ar6000_diag.h" |
+#include "common_drv.h" |
+#include "roaming.h" |
+#include "hci_transport_api.h" |
+#define ATH_MODULE_NAME driver |
+#include "a_debug.h" |
+#include "hw/apb_map.h" |
+#include "hw/rtc_reg.h" |
+#include "hw/mbox_reg.h" |
+ |
+#define ATH_DEBUG_DBG_LOG ATH_DEBUG_MAKE_MODULE_MASK(0) |
+#define ATH_DEBUG_WLAN_CONNECT ATH_DEBUG_MAKE_MODULE_MASK(1) |
+#define ATH_DEBUG_WLAN_SCAN ATH_DEBUG_MAKE_MODULE_MASK(2) |
+#define ATH_DEBUG_WLAN_TX ATH_DEBUG_MAKE_MODULE_MASK(3) |
+#define ATH_DEBUG_WLAN_RX ATH_DEBUG_MAKE_MODULE_MASK(4) |
+#define ATH_DEBUG_HTC_RAW ATH_DEBUG_MAKE_MODULE_MASK(5) |
+#define ATH_DEBUG_HCI_BRIDGE ATH_DEBUG_MAKE_MODULE_MASK(6) |
+#define ATH_DEBUG_HCI_RECV ATH_DEBUG_MAKE_MODULE_MASK(7) |
+#define ATH_DEBUG_HCI_SEND ATH_DEBUG_MAKE_MODULE_MASK(8) |
+#define ATH_DEBUG_HCI_DUMP ATH_DEBUG_MAKE_MODULE_MASK(9) |
+ |
+#ifndef __dev_put |
+#define __dev_put(dev) dev_put(dev) |
+#endif |
+ |
+ |
+#ifdef USER_KEYS |
+ |
+#define USER_SAVEDKEYS_STAT_INIT 0 |
+#define USER_SAVEDKEYS_STAT_RUN 1 |
+ |
+// TODO this needs to move into the AR_SOFTC struct |
+struct USER_SAVEDKEYS { |
+ struct ieee80211req_key ucast_ik; |
+ struct ieee80211req_key bcast_ik; |
+ CRYPTO_TYPE keyType; |
+ A_BOOL keyOk; |
+}; |
+#endif |
+ |
+#define DBG_INFO 0x00000001 |
+#define DBG_ERROR 0x00000002 |
+#define DBG_WARNING 0x00000004 |
+#define DBG_SDIO 0x00000008 |
+#define DBG_HIF 0x00000010 |
+#define DBG_HTC 0x00000020 |
+#define DBG_WMI 0x00000040 |
+#define DBG_WMI2 0x00000080 |
+#define DBG_DRIVER 0x00000100 |
+ |
+#define DBG_DEFAULTS (DBG_ERROR|DBG_WARNING) |
+ |
+ |
+A_STATUS ar6000_ReadRegDiag(HIF_DEVICE *hifDevice, A_UINT32 *address, A_UINT32 *data); |
+A_STATUS ar6000_WriteRegDiag(HIF_DEVICE *hifDevice, A_UINT32 *address, A_UINT32 *data); |
+ |
+#ifdef __cplusplus |
+extern "C" { |
+#endif |
+ |
+#define MAX_AR6000 1 |
+#define AR6000_MAX_RX_BUFFERS 16 |
+#define AR6000_BUFFER_SIZE 1664 |
+#define AR6000_MAX_AMSDU_RX_BUFFERS 4 |
+#define AR6000_AMSDU_REFILL_THRESHOLD 3 |
+#define AR6000_AMSDU_BUFFER_SIZE (WMI_MAX_AMSDU_RX_DATA_FRAME_LENGTH + 128) |
+#define AR6000_MAX_RX_MESSAGE_SIZE (max(WMI_MAX_NORMAL_RX_DATA_FRAME_LENGTH,WMI_MAX_AMSDU_RX_DATA_FRAME_LENGTH)) |
+ |
+#define AR6000_TX_TIMEOUT 10 |
+#define AR6000_ETH_ADDR_LEN 6 |
+#define AR6000_MAX_ENDPOINTS 4 |
+#define MAX_NODE_NUM 15 |
+/* MAX_HI_COOKIE_NUM are reserved for high priority traffic */ |
+#define MAX_DEF_COOKIE_NUM 150 |
+#define MAX_HI_COOKIE_NUM 15 /* 10% of MAX_COOKIE_NUM */ |
+#define MAX_COOKIE_NUM (MAX_DEF_COOKIE_NUM + MAX_HI_COOKIE_NUM) |
+ |
+/* MAX_DEFAULT_SEND_QUEUE_DEPTH is used to set the default queue depth for the |
+ * WMM send queues. If a queue exceeds this depth htc will query back to the |
+ * OS specific layer by calling EpSendFull(). This gives the OS layer the |
+ * opportunity to drop the packet if desired. Therefore changing |
+ * MAX_DEFAULT_SEND_QUEUE_DEPTH does not affect resource utilization but |
+ * does impact the threshold used to identify if a packet should be |
+ * dropped. */ |
+#define MAX_DEFAULT_SEND_QUEUE_DEPTH (MAX_DEF_COOKIE_NUM / WMM_NUM_AC) |
+ |
+#define AR6000_HB_CHALLENGE_RESP_FREQ_DEFAULT 1 |
+#define AR6000_HB_CHALLENGE_RESP_MISS_THRES_DEFAULT 1 |
+#define A_DISCONNECT_TIMER_INTERVAL 10 * 1000 |
+ |
+enum { |
+ DRV_HB_CHALLENGE = 0, |
+ APP_HB_CHALLENGE |
+}; |
+ |
+enum { |
+ WLAN_INIT_MODE_NONE = 0, |
+ WLAN_INIT_MODE_USR, |
+ WLAN_INIT_MODE_UDEV, |
+ WLAN_INIT_MODE_DRV |
+}; |
+ |
+#define AR6003_HW10_CONFIG "AR6003_HW10_CONFIG" |
+ |
+#ifdef INIT_MODE_DRV_ENABLED |
+#ifdef AR6003 |
+#ifdef HW10 |
+#define DATA_DOWNLOAD_ADDRESS 0x542800 |
+#define PATCH_DOWNLOAD_ADDRESS 0x57ea6c |
+#define AR6K_OTP_DATA_FILE "ath6k/AR6003/hw1.0/otp.data" |
+#define AR6K_OTP_BIN_FILE "ath6k/AR6003/hw1.0/otp.bin" |
+#define AR6K_FIRMWARE_FILE "ath6k/AR6003/hw1.0/athwlan.bin.z77" |
+#define AR6K_PATCH_FILE "ath6k/AR6003/hw1.0/data.patch.bin" |
+#ifdef AR600x_SD31_XXX |
+#define AR6K_BOARD_DATA_FILE "ath6k/AR6003/hw1.0/bdata.SD31.bin" |
+#elif defined(AR600x_SD32_XXX) |
+#define AR6K_BOARD_DATA_FILE "ath6k/AR6003/hw1.0/bdata.SD32.bin" |
+#elif defined(AR600x_WB31_XXX) |
+#define AR6K_BOARD_DATA_FILE "ath6k/AR6003/hw1.0/bdata.WB31.bin" |
+#elif defined(AR600x_CUSTOM_XXX) |
+#define AR6K_BOARD_DATA_FILE "ath6k/AR6003/hw1.0/bdata.CUSTOM.bin" |
+#else |
+#error Board Data File Not Specified |
+#endif /* Board Data File */ |
+#elif defined(HW20) |
+#error Chip Revision Not Supported |
+#else |
+#error Chip Revision Not Supported |
+#endif /* Chip Revision */ |
+#else |
+#error Chip Generation Not Supported |
+#endif /* Chip Generation */ |
+#endif /* INIT_MODE_DRV_ENABLED */ |
+ |
+/* HTC RAW streams */ |
+typedef enum _HTC_RAW_STREAM_ID { |
+ HTC_RAW_STREAM_NOT_MAPPED = -1, |
+ HTC_RAW_STREAM_0 = 0, |
+ HTC_RAW_STREAM_1 = 1, |
+ HTC_RAW_STREAM_2 = 2, |
+ HTC_RAW_STREAM_3 = 3, |
+ HTC_RAW_STREAM_NUM_MAX |
+} HTC_RAW_STREAM_ID; |
+ |
+#define RAW_HTC_READ_BUFFERS_NUM 4 |
+#define RAW_HTC_WRITE_BUFFERS_NUM 4 |
+ |
+#define HTC_RAW_BUFFER_SIZE 1664 |
+ |
+typedef struct { |
+ int currPtr; |
+ int length; |
+ unsigned char data[HTC_RAW_BUFFER_SIZE]; |
+ HTC_PACKET HTCPacket; |
+} raw_htc_buffer; |
+ |
+#ifdef CONFIG_HOST_TCMD_SUPPORT |
+/* |
+ * add TCMD_MODE besides wmi and bypasswmi |
+ * in TCMD_MODE, only few TCMD releated wmi commands |
+ * counld be hanlder |
+ */ |
+enum { |
+ AR6000_WMI_MODE = 0, |
+ AR6000_BYPASS_MODE, |
+ AR6000_TCMD_MODE, |
+ AR6000_WLAN_MODE |
+}; |
+#endif /* CONFIG_HOST_TCMD_SUPPORT */ |
+ |
+struct ar_wep_key { |
+ A_UINT8 arKeyIndex; |
+ A_UINT8 arKeyLen; |
+ A_UINT8 arKey[64]; |
+} ; |
+ |
+#ifdef CONFIG_CFG80211 |
+struct ar_key { |
+ A_UINT8 key[WLAN_MAX_KEY_LEN]; |
+ A_UINT8 key_len; |
+ A_UINT8 seq[IW_ENCODE_SEQ_MAX_SIZE]; |
+ A_UINT8 seq_len; |
+ A_UINT32 cipher; |
+}; |
+#endif /* CONFIG_CFG80211 */ |
+ |
+ |
+struct ar_node_mapping { |
+ A_UINT8 macAddress[6]; |
+ A_UINT8 epId; |
+ A_UINT8 txPending; |
+}; |
+ |
+struct ar_cookie { |
+ A_UINT32 arc_bp[2]; /* Must be first field */ |
+ HTC_PACKET HtcPkt; /* HTC packet wrapper */ |
+ struct ar_cookie *arc_list_next; |
+}; |
+ |
+struct ar_hb_chlng_resp { |
+ A_TIMER timer; |
+ A_UINT32 frequency; |
+ A_UINT32 seqNum; |
+ A_BOOL outstanding; |
+ A_UINT8 missCnt; |
+ A_UINT8 missThres; |
+}; |
+ |
+/* Per STA data, used in AP mode */ |
+/*TODO: All this should move to OS independent dir */ |
+ |
+#define STA_PWR_MGMT_MASK 0x1 |
+#define STA_PWR_MGMT_SHIFT 0x0 |
+#define STA_PWR_MGMT_AWAKE 0x0 |
+#define STA_PWR_MGMT_SLEEP 0x1 |
+ |
+#define STA_SET_PWR_SLEEP(sta) (sta->flags |= (STA_PWR_MGMT_MASK << STA_PWR_MGMT_SHIFT)) |
+#define STA_CLR_PWR_SLEEP(sta) (sta->flags &= ~(STA_PWR_MGMT_MASK << STA_PWR_MGMT_SHIFT)) |
+#define STA_IS_PWR_SLEEP(sta) ((sta->flags >> STA_PWR_MGMT_SHIFT) & STA_PWR_MGMT_MASK) |
+ |
+#define STA_PS_POLLED_MASK 0x1 |
+#define STA_PS_POLLED_SHIFT 0x1 |
+#define STA_SET_PS_POLLED(sta) (sta->flags |= (STA_PS_POLLED_MASK << STA_PS_POLLED_SHIFT)) |
+#define STA_CLR_PS_POLLED(sta) (sta->flags &= ~(STA_PS_POLLED_MASK << STA_PS_POLLED_SHIFT)) |
+#define STA_IS_PS_POLLED(sta) (sta->flags & (STA_PS_POLLED_MASK << STA_PS_POLLED_SHIFT)) |
+ |
+typedef struct { |
+ A_UINT16 flags; |
+ A_UINT8 mac[ATH_MAC_LEN]; |
+ A_UINT8 aid; |
+ A_UINT8 keymgmt; |
+ A_UINT8 ucipher; |
+ A_UINT8 auth; |
+ A_UINT8 wpa_ie[IEEE80211_MAX_IE]; |
+ A_NETBUF_QUEUE_T psq; /* power save q */ |
+ A_MUTEX_T psqLock; |
+} sta_t; |
+ |
+typedef struct ar6_softc { |
+ struct net_device *arNetDev; /* net_device pointer */ |
+ void *arWmi; |
+ int arTxPending[ENDPOINT_MAX]; |
+ int arTotalTxDataPending; |
+ A_UINT8 arNumDataEndPts; |
+ A_BOOL arWmiEnabled; |
+ A_BOOL arWmiReady; |
+ A_BOOL arConnected; |
+ HTC_HANDLE arHtcTarget; |
+ void *arHifDevice; |
+ spinlock_t arLock; |
+ struct semaphore arSem; |
+ int arSsidLen; |
+ u_char arSsid[32]; |
+ A_UINT8 arNextMode; |
+ A_UINT8 arNetworkType; |
+ A_UINT8 arDot11AuthMode; |
+ A_UINT8 arAuthMode; |
+ A_UINT8 arPairwiseCrypto; |
+ A_UINT8 arPairwiseCryptoLen; |
+ A_UINT8 arGroupCrypto; |
+ A_UINT8 arGroupCryptoLen; |
+ A_UINT8 arDefTxKeyIndex; |
+ struct ar_wep_key arWepKeyList[WMI_MAX_KEY_INDEX + 1]; |
+ A_UINT8 arBssid[6]; |
+ A_UINT8 arReqBssid[6]; |
+ A_UINT16 arChannelHint; |
+ A_UINT16 arBssChannel; |
+ A_UINT16 arListenInterval; |
+ struct ar6000_version arVersion; |
+ A_UINT32 arTargetType; |
+ A_INT8 arRssi; |
+ A_UINT8 arTxPwr; |
+ A_BOOL arTxPwrSet; |
+ A_INT32 arBitRate; |
+ struct net_device_stats arNetStats; |
+ struct iw_statistics arIwStats; |
+ A_INT8 arNumChannels; |
+ A_UINT16 arChannelList[32]; |
+ A_UINT32 arRegCode; |
+ A_BOOL statsUpdatePending; |
+ TARGET_STATS arTargetStats; |
+ A_INT8 arMaxRetries; |
+ A_UINT8 arPhyCapability; |
+#ifdef CONFIG_HOST_TCMD_SUPPORT |
+ A_UINT8 tcmdRxReport; |
+ A_UINT32 tcmdRxTotalPkt; |
+ A_INT32 tcmdRxRssi; |
+ A_UINT32 tcmdPm; |
+ A_UINT32 arTargetMode; |
+ A_UINT32 tcmdRxcrcErrPkt; |
+ A_UINT32 tcmdRxsecErrPkt; |
+ A_UINT16 tcmdRateCnt[TCMD_MAX_RATES]; |
+ A_UINT16 tcmdRateCntShortGuard[TCMD_MAX_RATES]; |
+#endif |
+ AR6000_WLAN_STATE arWlanState; |
+ struct ar_node_mapping arNodeMap[MAX_NODE_NUM]; |
+ A_UINT8 arIbssPsEnable; |
+ A_UINT8 arNodeNum; |
+ A_UINT8 arNexEpId; |
+ struct ar_cookie *arCookieList; |
+ A_UINT32 arCookieCount; |
+ A_UINT32 arRateMask; |
+ A_UINT8 arSkipScan; |
+ A_UINT16 arBeaconInterval; |
+ A_BOOL arConnectPending; |
+ A_BOOL arWmmEnabled; |
+ struct ar_hb_chlng_resp arHBChallengeResp; |
+ A_UINT8 arKeepaliveConfigured; |
+ A_UINT32 arMgmtFilter; |
+ HTC_ENDPOINT_ID arAc2EpMapping[WMM_NUM_AC]; |
+ A_BOOL arAcStreamActive[WMM_NUM_AC]; |
+ A_UINT8 arAcStreamPriMap[WMM_NUM_AC]; |
+ A_UINT8 arHiAcStreamActivePri; |
+ A_UINT8 arEp2AcMapping[ENDPOINT_MAX]; |
+ HTC_ENDPOINT_ID arControlEp; |
+#ifdef HTC_RAW_INTERFACE |
+ HTC_ENDPOINT_ID arRaw2EpMapping[HTC_RAW_STREAM_NUM_MAX]; |
+ HTC_RAW_STREAM_ID arEp2RawMapping[ENDPOINT_MAX]; |
+ struct semaphore raw_htc_read_sem[HTC_RAW_STREAM_NUM_MAX]; |
+ struct semaphore raw_htc_write_sem[HTC_RAW_STREAM_NUM_MAX]; |
+ wait_queue_head_t raw_htc_read_queue[HTC_RAW_STREAM_NUM_MAX]; |
+ wait_queue_head_t raw_htc_write_queue[HTC_RAW_STREAM_NUM_MAX]; |
+ raw_htc_buffer raw_htc_read_buffer[HTC_RAW_STREAM_NUM_MAX][RAW_HTC_READ_BUFFERS_NUM]; |
+ raw_htc_buffer raw_htc_write_buffer[HTC_RAW_STREAM_NUM_MAX][RAW_HTC_WRITE_BUFFERS_NUM]; |
+ A_BOOL write_buffer_available[HTC_RAW_STREAM_NUM_MAX]; |
+ A_BOOL read_buffer_available[HTC_RAW_STREAM_NUM_MAX]; |
+#endif |
+ A_BOOL arNetQueueStopped; |
+ A_BOOL arRawIfInit; |
+ int arDeviceIndex; |
+ COMMON_CREDIT_STATE_INFO arCreditStateInfo; |
+ A_BOOL arWMIControlEpFull; |
+ A_BOOL dbgLogFetchInProgress; |
+ A_UCHAR log_buffer[DBGLOG_HOST_LOG_BUFFER_SIZE]; |
+ A_UINT32 log_cnt; |
+ A_UINT32 dbglog_init_done; |
+ A_UINT32 arConnectCtrlFlags; |
+#ifdef USER_KEYS |
+ A_INT32 user_savedkeys_stat; |
+ A_UINT32 user_key_ctrl; |
+ struct USER_SAVEDKEYS user_saved_keys; |
+#endif |
+ USER_RSSI_THOLD rssi_map[12]; |
+ A_UINT8 arUserBssFilter; |
+ A_UINT16 ap_profile_flag; /* AP mode */ |
+ WMI_AP_ACL g_acl; /* AP mode */ |
+ sta_t sta_list[AP_MAX_NUM_STA]; /* AP mode */ |
+ A_UINT8 sta_list_index; /* AP mode */ |
+ struct ieee80211req_key ap_mode_bkey; /* AP mode */ |
+ A_NETBUF_QUEUE_T mcastpsq; /* power save q for Mcast frames */ |
+ A_MUTEX_T mcastpsqLock; |
+ A_BOOL DTIMExpired; /* flag to indicate DTIM expired */ |
+ A_UINT8 intra_bss; /* enable/disable intra bss data forward */ |
+ void *aggr_cntxt; |
+#ifndef EXPORT_HCI_BRIDGE_INTERFACE |
+ void *hcidev_info; |
+#endif |
+ WMI_AP_MODE_STAT arAPStats; |
+ A_UINT8 ap_hidden_ssid; |
+ A_UINT8 ap_country_code[3]; |
+ A_UINT8 ap_wmode; |
+ A_UINT8 ap_dtim_period; |
+ A_UINT16 ap_beacon_interval; |
+ A_UINT16 arRTS; |
+ A_UINT16 arACS; /* AP mode - Auto Channel Selection */ |
+ HTC_PACKET_QUEUE amsdu_rx_buffer_queue; |
+ A_BOOL bIsDestroyProgress; /* flag to indicate ar6k destroy is in progress */ |
+ A_TIMER disconnect_timer; |
+ A_UINT8 rxMetaVersion; |
+#ifdef WAPI_ENABLE |
+ A_UINT8 arWapiEnable; |
+#endif |
+ WMI_BTCOEX_CONFIG_EVENT arBtcoexConfig; |
+ WMI_BTCOEX_STATS_EVENT arBtcoexStats; |
+ A_INT32 (*exitCallback)(void *config); /* generic callback at AR6K exit */ |
+ HIF_DEVICE_OS_DEVICE_INFO osDevInfo; |
+#ifdef CONFIG_CFG80211 |
+ struct wireless_dev *wdev; |
+ struct cfg80211_scan_request *scan_request; |
+ struct ar_key keys[WMI_MAX_KEY_INDEX + 1]; |
+#endif /* CONFIG_CFG80211 */ |
+} AR_SOFTC_T; |
+ |
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0) |
+/* Looks like we need this for 2.4 kernels */ |
+static inline void *ar6k_priv(struct net_device *dev) |
+{ |
+ return(dev->priv); |
+} |
+#else |
+#ifdef CONFIG_CFG80211 |
+static inline void *ar6k_priv(struct net_device *dev) |
+{ |
+ return (wdev_priv(dev->ieee80211_ptr)); |
+} |
+#else |
+#define ar6k_priv netdev_priv |
+#endif /* CONFIG_CFG80211 */ |
+#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0) */ |
+ |
+#define arAc2EndpointID(ar,ac) (ar)->arAc2EpMapping[(ac)] |
+#define arSetAc2EndpointIDMap(ar,ac,ep) \ |
+{ (ar)->arAc2EpMapping[(ac)] = (ep); \ |
+ (ar)->arEp2AcMapping[(ep)] = (ac); } |
+#define arEndpoint2Ac(ar,ep) (ar)->arEp2AcMapping[(ep)] |
+ |
+#define arRawIfEnabled(ar) (ar)->arRawIfInit |
+#define arRawStream2EndpointID(ar,raw) (ar)->arRaw2EpMapping[(raw)] |
+#define arSetRawStream2EndpointIDMap(ar,raw,ep) \ |
+{ (ar)->arRaw2EpMapping[(raw)] = (ep); \ |
+ (ar)->arEp2RawMapping[(ep)] = (raw); } |
+#define arEndpoint2RawStreamID(ar,ep) (ar)->arEp2RawMapping[(ep)] |
+ |
+struct ar_giwscan_param { |
+ char *current_ev; |
+ char *end_buf; |
+ A_UINT32 bytes_needed; |
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27) |
+ struct iw_request_info *info; |
+#endif |
+}; |
+ |
+#define AR6000_STAT_INC(ar, stat) (ar->arNetStats.stat++) |
+ |
+#define AR6000_SPIN_LOCK(lock, param) do { \ |
+ if (irqs_disabled()) { \ |
+ AR_DEBUG_PRINTF(ATH_DEBUG_TRC,("IRQs disabled:AR6000_LOCK\n")); \ |
+ } \ |
+ spin_lock_bh(lock); \ |
+} while (0) |
+ |
+#define AR6000_SPIN_UNLOCK(lock, param) do { \ |
+ if (irqs_disabled()) { \ |
+ AR_DEBUG_PRINTF(ATH_DEBUG_TRC,("IRQs disabled: AR6000_UNLOCK\n")); \ |
+ } \ |
+ spin_unlock_bh(lock); \ |
+} while (0) |
+ |
+int ar6000_ioctl(struct net_device *dev, struct ifreq *rq, int cmd); |
+int ar6000_ioctl_dispatcher(struct net_device *dev, struct ifreq *rq, int cmd); |
+void ar6000_gpio_init(void); |
+void ar6000_init_profile_info(AR_SOFTC_T *ar); |
+void ar6000_install_static_wep_keys(AR_SOFTC_T *ar); |
+int ar6000_init(struct net_device *dev); |
+int ar6000_dbglog_get_debug_logs(AR_SOFTC_T *ar); |
+void ar6000_TxDataCleanup(AR_SOFTC_T *ar); |
+int ar6000_acl_data_tx(struct sk_buff *skb, struct net_device *dev); |
+ |
+#ifdef HTC_RAW_INTERFACE |
+ |
+#ifndef __user |
+#define __user |
+#endif |
+ |
+int ar6000_htc_raw_open(AR_SOFTC_T *ar); |
+int ar6000_htc_raw_close(AR_SOFTC_T *ar); |
+ssize_t ar6000_htc_raw_read(AR_SOFTC_T *ar, |
+ HTC_RAW_STREAM_ID StreamID, |
+ char __user *buffer, size_t count); |
+ssize_t ar6000_htc_raw_write(AR_SOFTC_T *ar, |
+ HTC_RAW_STREAM_ID StreamID, |
+ char __user *buffer, size_t count); |
+ |
+#endif /* HTC_RAW_INTERFACE */ |
+ |
+/* AP mode */ |
+/*TODO: These routines should be moved to a file that is common across OS */ |
+sta_t * |
+ieee80211_find_conn(AR_SOFTC_T *ar, A_UINT8 *node_addr); |
+ |
+sta_t * |
+ieee80211_find_conn_for_aid(AR_SOFTC_T *ar, A_UINT8 aid); |
+ |
+A_UINT8 |
+remove_sta(AR_SOFTC_T *ar, A_UINT8 *mac, A_UINT16 reason); |
+ |
+/* HCI support */ |
+ |
+#ifndef EXPORT_HCI_BRIDGE_INTERFACE |
+A_STATUS ar6000_setup_hci(AR_SOFTC_T *ar); |
+void ar6000_cleanup_hci(AR_SOFTC_T *ar); |
+void ar6000_set_default_ar3kconfig(AR_SOFTC_T *ar, void *ar3kconfig); |
+ |
+/* HCI bridge testing */ |
+A_STATUS hci_test_send(AR_SOFTC_T *ar, struct sk_buff *skb); |
+#endif |
+ |
+ATH_DEBUG_DECLARE_EXTERN(htc); |
+ATH_DEBUG_DECLARE_EXTERN(wmi); |
+ATH_DEBUG_DECLARE_EXTERN(bmi); |
+ATH_DEBUG_DECLARE_EXTERN(hif); |
+ATH_DEBUG_DECLARE_EXTERN(wlan); |
+ATH_DEBUG_DECLARE_EXTERN(misc); |
+ |
+extern A_UINT8 bcast_mac[]; |
+extern A_UINT8 null_mac[]; |
+ |
+#ifdef __cplusplus |
+} |
+#endif |
+ |
+#endif /* _AR6000_H_ */ |