Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(125)

Unified Diff: chromeos/drivers/ath6kl/os/linux/include/ar6000_drv.h

Issue 3579004: ath6kl: Bringing in the upstream version (Closed) Base URL: http://git.chromium.org/git/kernel.git
Patch Set: Created 10 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chromeos/drivers/ath6kl/os/linux/hci_bridge.c ('k') | chromeos/drivers/ath6kl/os/linux/include/ar6k_pal.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
index c23dd888b9aa298556556ad817ceac52029d23b8..e6248830b7ef671e2cbbac44b7e6dad0ac57a059 100644
--- a/chromeos/drivers/ath6kl/os/linux/include/ar6000_drv.h
+++ b/chromeos/drivers/ath6kl/os/linux/include/ar6000_drv.h
@@ -1,51 +1,37 @@
-/*
- *
- * 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;
+//------------------------------------------------------------------------------
+// Copyright (c) 2004-2010 Atheros Communications Inc.
+// All rights reserved.
//
-// 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.
+//
//
+// Permission to use, copy, modify, and/or distribute this software for any
+// purpose with or without fee is hereby granted, provided that the above
+// copyright notice and this permission notice appear in all copies.
//
- *
- */
+// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+//
+//
+//
+// Author(s): ="Atheros"
+//------------------------------------------------------------------------------
#ifndef _AR6000_H_
#define _AR6000_H_
-#include <linux/version.h>
-
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,17)
-#include <linux/config.h>
-#elif LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33)
-#include <linux/autoconf.h>
-#else
-#include <generated/autoconf.h>
-#endif
#include <linux/init.h>
-#include <linux/kernel.h>
#include <linux/sched.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
#include <linux/wireless.h>
#ifdef ATH6K_CONFIG_CFG80211
#include <net/cfg80211.h>
@@ -71,12 +57,8 @@
#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>
@@ -159,8 +141,8 @@ extern "C" {
#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_DEF_COOKIE_NUM 180
+#define MAX_HI_COOKIE_NUM 18 /* 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
@@ -190,6 +172,36 @@ enum {
WLAN_INIT_MODE_DRV
};
+/* Suspend - configuration */
+enum {
+ WLAN_SUSPEND_CUT_PWR = 0,
+ WLAN_SUSPEND_DEEP_SLEEP,
+ WLAN_SUSPEND_WOW,
+ WLAN_SUSPEND_CUT_PWR_IF_BT_OFF
+};
+
+/* WiFi OFF - configuration */
+enum {
+ WLAN_OFF_CUT_PWR = 0,
+ WLAN_OFF_DEEP_SLEEP,
+};
+
+/* WLAN low power state */
+enum {
+ WLAN_POWER_STATE_ON = 0,
+ WLAN_POWER_STATE_CUT_PWR = 1,
+ WLAN_POWER_STATE_DEEP_SLEEP,
+ WLAN_POWER_STATE_WOW
+};
+
+/* WLAN WoW State */
+enum {
+ WLAN_WOW_STATE_NONE = 0,
+ WLAN_WOW_STATE_SUSPENDED,
+ WLAN_WOW_STATE_SUSPENDING
+};
+
+
typedef enum _AR6K_BIN_FILE {
AR6K_OTP_FILE,
AR6K_FIRMWARE_FILE,
@@ -203,6 +215,12 @@ typedef enum _AR6K_BIN_FILE {
#define SETUPHCI_DEFAULT 0
#endif /* SETUPHCI_ENABLED */
+#ifdef SETUPHCIPAL_ENABLED
+#define SETUPHCIPAL_DEFAULT 1
+#else
+#define SETUPHCIPAL_DEFAULT 0
+#endif /* SETUPHCIPAL_ENABLED */
+
#ifdef SETUPBTDEV_ENABLED
#define SETUPBTDEV_DEFAULT 1
#else
@@ -316,6 +334,15 @@ typedef enum _AR6K_BIN_FILE {
#define AR6003_REV2_BOARD_DATA_FILE "ath6k/AR6003/hw2.0/bdata.CUSTOM.bin"
#endif /* Board Data File */
+/* Power states */
+enum {
+ WLAN_PWR_CTRL_UP = 0,
+ WLAN_PWR_CTRL_CUT_PWR,
+ WLAN_PWR_CTRL_DEEP_SLEEP,
+ WLAN_PWR_CTRL_WOW,
+ WLAN_PWR_CTRL_DEEP_SLEEP_DISABLED
+};
+
/* HTC RAW streams */
typedef enum _HTC_RAW_STREAM_ID {
HTC_RAW_STREAM_NOT_MAPPED = -1,
@@ -376,7 +403,7 @@ struct ar_node_mapping {
};
struct ar_cookie {
- A_UINT32 arc_bp[2]; /* Must be first field */
+ unsigned long arc_bp[2]; /* Must be first field */
HTC_PACKET HtcPkt; /* HTC packet wrapper */
struct ar_cookie *arc_list_next;
};
@@ -544,6 +571,7 @@ typedef struct ar6_softc {
#ifndef EXPORT_HCI_BRIDGE_INTERFACE
void *hcidev_info;
#endif
+ void *hcipal_info;
WMI_AP_MODE_STAT arAPStats;
A_UINT8 ap_hidden_ssid;
A_UINT8 ap_country_code[3];
@@ -568,32 +596,67 @@ typedef struct ar6_softc {
struct cfg80211_scan_request *scan_request;
struct ar_key keys[WMI_MAX_KEY_INDEX + 1];
#endif /* ATH6K_CONFIG_CFG80211 */
-#if CONFIG_PM
- A_UINT16 arOsPowerCtrl;
+ A_UINT16 arWlanPowerState;
+ A_BOOL arWlanOff;
+#ifdef CONFIG_PM
A_UINT16 arWowState;
+ A_BOOL arBTOff;
+ A_BOOL arBTSharing;
+ A_UINT16 arSuspendConfig;
+ A_UINT16 arWlanOffConfig;
+ A_UINT16 arWow2Config;
#endif
A_UINT8 scan_triggered;
WMI_SCAN_PARAMS_CMD scParams;
- A_UINT8 mcast_filters[MAC_MAX_FILTERS_PER_LIST][4];
+#define AR_MCAST_FILTER_MAC_ADDR_SIZE 4
+ A_UINT8 mcast_filters[MAC_MAX_FILTERS_PER_LIST][AR_MCAST_FILTER_MAC_ADDR_SIZE];
A_UINT8 bdaddr[6];
+ A_BOOL scanSpecificSsid;
+#ifdef CONFIG_AP_VIRTUAL_ADAPTER_SUPPORT
+ void *arApDev;
+#endif
} AR_SOFTC_T;
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)
-/* Looks like we need this for 2.4 kernels */
+#ifdef CONFIG_AP_VIRTUAL_ADAPTER_SUPPORT
+typedef struct {
+ struct net_device *arNetDev; /* net_device pointer */
+ AR_SOFTC_T *arDev; /* ar device pointer */
+ struct net_device *arStaNetDev; /* net_device pointer */
+} AR_VIRTUAL_INTERFACE_T;
+#endif /* CONFIG_AP_VIRTUAL_ADAPTER_SUPPORT */
+
+#ifdef ATH6K_CONFIG_CFG80211
static inline void *ar6k_priv(struct net_device *dev)
{
- return(dev->priv);
+ return (wdev_priv(dev->ieee80211_ptr));
}
#else
-#ifdef ATH6K_CONFIG_CFG80211
+#ifdef CONFIG_AP_VIRTUAL_ADAPTER_SUPPORT
static inline void *ar6k_priv(struct net_device *dev)
{
- return (wdev_priv(dev->ieee80211_ptr));
+ extern struct net_device *arApNetDev;
+
+ if (arApNetDev == dev) {
+ /* return arDev saved in virtual interface context */
+ AR_VIRTUAL_INTERFACE_T *arVirDev;
+ arVirDev = netdev_priv(dev);
+ return arVirDev->arDev;
+ } else {
+ return netdev_priv(dev);
+ }
}
#else
#define ar6k_priv netdev_priv
+#endif /* CONFIG_AP_VIRTUAL_ADAPTER_SUPPORT */
#endif /* ATH6K_CONFIG_CFG80211 */
-#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0) */
+
+#define SET_HCI_BUS_TYPE(pHciDev, __bus, __type) do { \
+ (pHciDev)->bus = (__bus); \
+ (pHciDev)->dev_type = (__type); \
+} while(0)
+
+#define GET_INODE_FROM_FILEP(filp) \
+ (filp)->f_path.dentry->d_inode
#define arAc2EndpointID(ar,ac) (ar)->arAc2EpMapping[(ac)]
#define arSetAc2EndpointIDMap(ar,ac,ep) \
@@ -612,9 +675,7 @@ 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++)
@@ -642,6 +703,8 @@ 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);
+void ar6000_restart_endpoint(struct net_device *dev);
+void ar6000_stop_endpoint(struct net_device *dev, A_BOOL keepprofile, A_BOOL getdbglogs);
#ifdef HTC_RAW_INTERFACE
« no previous file with comments | « chromeos/drivers/ath6kl/os/linux/hci_bridge.c ('k') | chromeos/drivers/ath6kl/os/linux/include/ar6k_pal.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698