summaryrefslogtreecommitdiffstats
path: root/carl9170fw/include
diff options
context:
space:
mode:
Diffstat (limited to 'carl9170fw/include')
-rw-r--r--carl9170fw/include/linux/ch9.h803
-rw-r--r--carl9170fw/include/linux/compiler.h107
-rw-r--r--carl9170fw/include/linux/ieee80211.h1918
-rw-r--r--carl9170fw/include/linux/types.h61
-rw-r--r--carl9170fw/include/shared/eeprom.h216
-rw-r--r--carl9170fw/include/shared/fwcmd.h318
-rw-r--r--carl9170fw/include/shared/fwdesc.h277
-rw-r--r--carl9170fw/include/shared/hw.h817
-rw-r--r--carl9170fw/include/shared/phy.h564
-rw-r--r--carl9170fw/include/shared/version.h7
-rw-r--r--carl9170fw/include/shared/wlan.h435
11 files changed, 0 insertions, 5523 deletions
diff --git a/carl9170fw/include/linux/ch9.h b/carl9170fw/include/linux/ch9.h
deleted file mode 100644
index 94e01bb..0000000
--- a/carl9170fw/include/linux/ch9.h
+++ /dev/null
@@ -1,803 +0,0 @@
-/*
- * This file holds USB constants and structures that are needed for
- * USB device APIs. These are used by the USB device model, which is
- * defined in chapter 9 of the USB 2.0 specification and in the
- * Wireless USB 1.0 (spread around). Linux has several APIs in C that
- * need these:
- *
- * - the master/host side Linux-USB kernel driver API;
- * - the "usbfs" user space API; and
- * - the Linux "gadget" slave/device/peripheral side driver API.
- *
- * USB 2.0 adds an additional "On The Go" (OTG) mode, which lets systems
- * act either as a USB master/host or as a USB slave/device. That means
- * the master and slave side APIs benefit from working well together.
- *
- * There's also "Wireless USB", using low power short range radios for
- * peripheral interconnection but otherwise building on the USB framework.
- *
- * Note all descriptors are declared '__attribute__((packed))' so that:
- *
- * [a] they never get padded, either internally (USB spec writers
- * probably handled that) or externally;
- *
- * [b] so that accessing bigger-than-a-bytes fields will never
- * generate bus errors on any platform, even when the location of
- * its descriptor inside a bundle isn't "naturally aligned", and
- *
- * [c] for consistency, removing all doubt even when it appears to
- * someone that the two other points are non-issues for that
- * particular descriptor type.
- */
-
-#ifndef __LINUX_USB_CH9_H
-#define __LINUX_USB_CH9_H
-
-#include <linux/types.h> /* __u8 etc */
-
-/*-------------------------------------------------------------------------*/
-
-/* CONTROL REQUEST SUPPORT */
-
-/*
- * USB directions
- *
- * This bit flag is used in endpoint descriptors' bEndpointAddress field.
- * It's also one of three fields in control requests bRequestType.
- */
-#define USB_DIR_MASK 0x80
-#define USB_DIR_OUT 0 /* to device */
-#define USB_DIR_IN 0x80 /* to host */
-
-/*
- * USB types, the second of three bRequestType fields
- */
-#define USB_TYPE_MASK (0x03 << 5)
-#define USB_TYPE_STANDARD (0x00 << 5)
-#define USB_TYPE_CLASS (0x01 << 5)
-#define USB_TYPE_VENDOR (0x02 << 5)
-#define USB_TYPE_RESERVED (0x03 << 5)
-
-/*
- * USB recipients, the third of three bRequestType fields
- */
-#define USB_RECIP_MASK 0x1f
-#define USB_RECIP_DEVICE 0x00
-#define USB_RECIP_INTERFACE 0x01
-#define USB_RECIP_ENDPOINT 0x02
-#define USB_RECIP_OTHER 0x03
-/* From Wireless USB 1.0 */
-#define USB_RECIP_PORT 0x04
-#define USB_RECIP_RPIPE 0x05
-
-/*
- * Standard requests, for the bRequest field of a SETUP packet.
- *
- * These are qualified by the bRequestType field, so that for example
- * TYPE_CLASS or TYPE_VENDOR specific feature flags could be retrieved
- * by a GET_STATUS request.
- */
-#define USB_REQ_GET_STATUS 0x00
-#define USB_REQ_CLEAR_FEATURE 0x01
-#define USB_REQ_SET_FEATURE 0x03
-#define USB_REQ_SET_ADDRESS 0x05
-#define USB_REQ_GET_DESCRIPTOR 0x06
-#define USB_REQ_SET_DESCRIPTOR 0x07
-#define USB_REQ_GET_CONFIGURATION 0x08
-#define USB_REQ_SET_CONFIGURATION 0x09
-#define USB_REQ_GET_INTERFACE 0x0A
-#define USB_REQ_SET_INTERFACE 0x0B
-#define USB_REQ_SYNCH_FRAME 0x0C
-
-#define USB_REQ_SET_ENCRYPTION 0x0D /* Wireless USB */
-#define USB_REQ_GET_ENCRYPTION 0x0E
-#define USB_REQ_RPIPE_ABORT 0x0E
-#define USB_REQ_SET_HANDSHAKE 0x0F
-#define USB_REQ_RPIPE_RESET 0x0F
-#define USB_REQ_GET_HANDSHAKE 0x10
-#define USB_REQ_SET_CONNECTION 0x11
-#define USB_REQ_SET_SECURITY_DATA 0x12
-#define USB_REQ_GET_SECURITY_DATA 0x13
-#define USB_REQ_SET_WUSB_DATA 0x14
-#define USB_REQ_LOOPBACK_DATA_WRITE 0x15
-#define USB_REQ_LOOPBACK_DATA_READ 0x16
-#define USB_REQ_SET_INTERFACE_DS 0x17
-
-/* The Link Power Management (LPM) ECN defines USB_REQ_TEST_AND_SET command,
- * used by hubs to put ports into a new L1 suspend state, except that it
- * forgot to define its number ...
- */
-
-/*
- * USB feature flags are written using USB_REQ_{CLEAR,SET}_FEATURE, and
- * are read as a bit array returned by USB_REQ_GET_STATUS. (So there
- * are at most sixteen features of each type.) Hubs may also support a
- * new USB_REQ_TEST_AND_SET_FEATURE to put ports into L1 suspend.
- */
-#define USB_DEVICE_SELF_POWERED 0 /* (read only) */
-#define USB_DEVICE_REMOTE_WAKEUP 1 /* dev may initiate wakeup */
-#define USB_DEVICE_TEST_MODE 2 /* (wired high speed only) */
-#define USB_DEVICE_BATTERY 2 /* (wireless) */
-#define USB_DEVICE_B_HNP_ENABLE 3 /* (otg) dev may initiate HNP */
-#define USB_DEVICE_WUSB_DEVICE 3 /* (wireless)*/
-#define USB_DEVICE_A_HNP_SUPPORT 4 /* (otg) RH port supports HNP */
-#define USB_DEVICE_A_ALT_HNP_SUPPORT 5 /* (otg) other RH port does */
-#define USB_DEVICE_DEBUG_MODE 6 /* (special devices only) */
-
-#define USB_ENDPOINT_HALT 0 /* IN/OUT will STALL */
-
-
-/**
- * struct usb_ctrlrequest - SETUP data for a USB device control request
- * @bRequestType: matches the USB bmRequestType field
- * @bRequest: matches the USB bRequest field
- * @wValue: matches the USB wValue field (le16 byte order)
- * @wIndex: matches the USB wIndex field (le16 byte order)
- * @wLength: matches the USB wLength field (le16 byte order)
- *
- * This structure is used to send control requests to a USB device. It matches
- * the different fields of the USB 2.0 Spec section 9.3, table 9-2. See the
- * USB spec for a fuller description of the different fields, and what they are
- * used for.
- *
- * Note that the driver for any interface can issue control requests.
- * For most devices, interfaces don't coordinate with each other, so
- * such requests may be made at any time.
- */
-struct usb_ctrlrequest {
- __u8 bRequestType;
- __u8 bRequest;
- __le16 wValue;
- __le16 wIndex;
- __le16 wLength;
-} __attribute__ ((packed));
-
-/*-------------------------------------------------------------------------*/
-
-/*
- * STANDARD DESCRIPTORS ... as returned by GET_DESCRIPTOR, or
- * (rarely) accepted by SET_DESCRIPTOR.
- *
- * Note that all multi-byte values here are encoded in little endian
- * byte order "on the wire". Within the kernel and when exposed
- * through the Linux-USB APIs, they are not converted to cpu byte
- * order; it is the responsibility of the client code to do this.
- * The single exception is when device and configuration descriptors (but
- * not other descriptors) are read from usbfs (i.e. /proc/bus/usb/BBB/DDD);
- * in this case the fields are converted to host endianness by the kernel.
- */
-
-/*
- * Descriptor types ... USB 2.0 spec table 9.5
- */
-#define USB_DT_DEVICE 0x01
-#define USB_DT_CONFIG 0x02
-#define USB_DT_STRING 0x03
-#define USB_DT_INTERFACE 0x04
-#define USB_DT_ENDPOINT 0x05
-#define USB_DT_DEVICE_QUALIFIER 0x06
-#define USB_DT_OTHER_SPEED_CONFIG 0x07
-#define USB_DT_INTERFACE_POWER 0x08
-/* these are from a minor usb 2.0 revision (ECN) */
-#define USB_DT_OTG 0x09
-#define USB_DT_DEBUG 0x0a
-#define USB_DT_INTERFACE_ASSOCIATION 0x0b
-/* these are from the Wireless USB spec */
-#define USB_DT_SECURITY 0x0c
-#define USB_DT_KEY 0x0d
-#define USB_DT_ENCRYPTION_TYPE 0x0e
-#define USB_DT_BOS 0x0f
-#define USB_DT_DEVICE_CAPABILITY 0x10
-#define USB_DT_WIRELESS_ENDPOINT_COMP 0x11
-#define USB_DT_WIRE_ADAPTER 0x21
-#define USB_DT_RPIPE 0x22
-#define USB_DT_CS_RADIO_CONTROL 0x23
-/* From the USB 3.0 spec */
-#define USB_DT_SS_ENDPOINT_COMP 0x30
-
-/* Conventional codes for class-specific descriptors. The convention is
- * defined in the USB "Common Class" Spec (3.11). Individual class specs
- * are authoritative for their usage, not the "common class" writeup.
- */
-#define USB_DT_CS_DEVICE (USB_TYPE_CLASS | USB_DT_DEVICE)
-#define USB_DT_CS_CONFIG (USB_TYPE_CLASS | USB_DT_CONFIG)
-#define USB_DT_CS_STRING (USB_TYPE_CLASS | USB_DT_STRING)
-#define USB_DT_CS_INTERFACE (USB_TYPE_CLASS | USB_DT_INTERFACE)
-#define USB_DT_CS_ENDPOINT (USB_TYPE_CLASS | USB_DT_ENDPOINT)
-
-/* All standard descriptors have these 2 fields at the beginning */
-struct usb_descriptor_header {
- __u8 bLength;
- __u8 bDescriptorType;
-} __attribute__ ((packed));
-
-
-/*-------------------------------------------------------------------------*/
-
-/* USB_DT_DEVICE: Device descriptor */
-struct usb_device_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
-
- __le16 bcdUSB;
- __u8 bDeviceClass;
- __u8 bDeviceSubClass;
- __u8 bDeviceProtocol;
- __u8 bMaxPacketSize0;
- __le16 idVendor;
- __le16 idProduct;
- __le16 bcdDevice;
- __u8 iManufacturer;
- __u8 iProduct;
- __u8 iSerialNumber;
- __u8 bNumConfigurations;
-} __attribute__ ((packed));
-
-#define USB_DT_DEVICE_SIZE 18
-
-
-/*
- * Device and/or Interface Class codes
- * as found in bDeviceClass or bInterfaceClass
- * and defined by www.usb.org documents
- */
-#define USB_CLASS_PER_INTERFACE 0 /* for DeviceClass */
-#define USB_CLASS_AUDIO 1
-#define USB_CLASS_COMM 2
-#define USB_CLASS_HID 3
-#define USB_CLASS_PHYSICAL 5
-#define USB_CLASS_STILL_IMAGE 6
-#define USB_CLASS_PRINTER 7
-#define USB_CLASS_MASS_STORAGE 8
-#define USB_CLASS_HUB 9
-#define USB_CLASS_CDC_DATA 0x0a
-#define USB_CLASS_CSCID 0x0b /* chip+ smart card */
-#define USB_CLASS_CONTENT_SEC 0x0d /* content security */
-#define USB_CLASS_VIDEO 0x0e
-#define USB_CLASS_WIRELESS_CONTROLLER 0xe0
-#define USB_CLASS_MISC 0xef
-#define USB_CLASS_APP_SPEC 0xfe
-#define USB_CLASS_VENDOR_SPEC 0xff
-
-#define USB_SUBCLASS_VENDOR_SPEC 0xff
-
-/*-------------------------------------------------------------------------*/
-
-/* USB_DT_CONFIG: Configuration descriptor information.
- *
- * USB_DT_OTHER_SPEED_CONFIG is the same descriptor, except that the
- * descriptor type is different. Highspeed-capable devices can look
- * different depending on what speed they're currently running. Only
- * devices with a USB_DT_DEVICE_QUALIFIER have any OTHER_SPEED_CONFIG
- * descriptors.
- */
-struct usb_config_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
-
- __le16 wTotalLength;
- __u8 bNumInterfaces;
- __u8 bConfigurationValue;
- __u8 iConfiguration;
- __u8 bmAttributes;
- __u8 bMaxPower;
-} __attribute__ ((packed));
-
-#define USB_DT_CONFIG_SIZE 9
-
-/* from config descriptor bmAttributes */
-#define USB_CONFIG_ATT_ONE (1 << 7) /* must be set */
-#define USB_CONFIG_ATT_SELFPOWER (1 << 6) /* self powered */
-#define USB_CONFIG_ATT_WAKEUP (1 << 5) /* can wakeup */
-#define USB_CONFIG_ATT_BATTERY (1 << 4) /* battery powered */
-
-/*-------------------------------------------------------------------------*/
-
-/* USB_DT_STRING: String descriptor */
-struct usb_string_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
-
- __le16 wData[1]; /* UTF-16LE encoded */
-} __attribute__ ((packed));
-
-/* note that "string" zero is special, it holds language codes that
- * the device supports, not Unicode characters.
- */
-
-/*-------------------------------------------------------------------------*/
-
-/* USB_DT_INTERFACE: Interface descriptor */
-struct usb_interface_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
-
- __u8 bInterfaceNumber;
- __u8 bAlternateSetting;
- __u8 bNumEndpoints;
- __u8 bInterfaceClass;
- __u8 bInterfaceSubClass;
- __u8 bInterfaceProtocol;
- __u8 iInterface;
-} __attribute__ ((packed));
-
-#define USB_DT_INTERFACE_SIZE 9
-
-/*-------------------------------------------------------------------------*/
-
-/* USB_DT_ENDPOINT: Endpoint descriptor */
-struct usb_endpoint_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
-
- __u8 bEndpointAddress;
- __u8 bmAttributes;
- __le16 wMaxPacketSize;
- __u8 bInterval;
-} __attribute__ ((packed));
-
-#define USB_DT_ENDPOINT_SIZE 7
-#define USB_DT_ENDPOINT_AUDIO_SIZE 9 /* Audio extension */
-
-
-/*
- * Endpoints
- */
-#define USB_ENDPOINT_NUMBER_MASK 0x0f /* in bEndpointAddress */
-#define USB_ENDPOINT_DIR_MASK 0x80
-
-#define USB_ENDPOINT_SYNCTYPE 0x0c
-#define USB_ENDPOINT_SYNC_NONE (0 << 2)
-#define USB_ENDPOINT_SYNC_ASYNC (1 << 2)
-#define USB_ENDPOINT_SYNC_ADAPTIVE (2 << 2)
-#define USB_ENDPOINT_SYNC_SYNC (3 << 2)
-
-#define USB_ENDPOINT_XFERTYPE_MASK 0x03 /* in bmAttributes */
-#define USB_ENDPOINT_XFER_CONTROL 0
-#define USB_ENDPOINT_XFER_ISOC 1
-#define USB_ENDPOINT_XFER_BULK 2
-#define USB_ENDPOINT_XFER_INT 3
-#define USB_ENDPOINT_MAX_ADJUSTABLE 0x80
-
-/*-------------------------------------------------------------------------*/
-
-/**
- * usb_endpoint_num - get the endpoint's number
- * @epd: endpoint to be checked
- *
- * Returns @epd's number: 0 to 15.
- */
-static inline int usb_endpoint_num(const struct usb_endpoint_descriptor *epd)
-{
- return epd->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK;
-}
-
-/**
- * usb_endpoint_type - get the endpoint's transfer type
- * @epd: endpoint to be checked
- *
- * Returns one of USB_ENDPOINT_XFER_{CONTROL, ISOC, BULK, INT} according
- * to @epd's transfer type.
- */
-static inline int usb_endpoint_type(const struct usb_endpoint_descriptor *epd)
-{
- return epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK;
-}
-
-/**
- * usb_endpoint_dir_in - check if the endpoint has IN direction
- * @epd: endpoint to be checked
- *
- * Returns true if the endpoint is of type IN, otherwise it returns false.
- */
-static inline int usb_endpoint_dir_in(const struct usb_endpoint_descriptor *epd)
-{
- return ((epd->bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_IN);
-}
-
-/**
- * usb_endpoint_dir_out - check if the endpoint has OUT direction
- * @epd: endpoint to be checked
- *
- * Returns true if the endpoint is of type OUT, otherwise it returns false.
- */
-static inline int usb_endpoint_dir_out(
- const struct usb_endpoint_descriptor *epd)
-{
- return ((epd->bEndpointAddress & USB_ENDPOINT_DIR_MASK) == USB_DIR_OUT);
-}
-
-/**
- * usb_endpoint_xfer_bulk - check if the endpoint has bulk transfer type
- * @epd: endpoint to be checked
- *
- * Returns true if the endpoint is of type bulk, otherwise it returns false.
- */
-static inline int usb_endpoint_xfer_bulk(
- const struct usb_endpoint_descriptor *epd)
-{
- return ((epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) ==
- USB_ENDPOINT_XFER_BULK);
-}
-
-/**
- * usb_endpoint_xfer_control - check if the endpoint has control transfer type
- * @epd: endpoint to be checked
- *
- * Returns true if the endpoint is of type control, otherwise it returns false.
- */
-static inline int usb_endpoint_xfer_control(
- const struct usb_endpoint_descriptor *epd)
-{
- return ((epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) ==
- USB_ENDPOINT_XFER_CONTROL);
-}
-
-/**
- * usb_endpoint_xfer_int - check if the endpoint has interrupt transfer type
- * @epd: endpoint to be checked
- *
- * Returns true if the endpoint is of type interrupt, otherwise it returns
- * false.
- */
-static inline int usb_endpoint_xfer_int(
- const struct usb_endpoint_descriptor *epd)
-{
- return ((epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) ==
- USB_ENDPOINT_XFER_INT);
-}
-
-/**
- * usb_endpoint_xfer_isoc - check if the endpoint has isochronous transfer type
- * @epd: endpoint to be checked
- *
- * Returns true if the endpoint is of type isochronous, otherwise it returns
- * false.
- */
-static inline int usb_endpoint_xfer_isoc(
- const struct usb_endpoint_descriptor *epd)
-{
- return (epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) ==
- USB_ENDPOINT_XFER_ISOC;
-}
-
-/**
- * usb_endpoint_is_bulk_in - check if the endpoint is bulk IN
- * @epd: endpoint to be checked
- *
- * Returns true if the endpoint has bulk transfer type and IN direction,
- * otherwise it returns false.
- */
-static inline int usb_endpoint_is_bulk_in(
- const struct usb_endpoint_descriptor *epd)
-{
- return usb_endpoint_xfer_bulk(epd) && usb_endpoint_dir_in(epd);
-}
-
-/**
- * usb_endpoint_is_bulk_out - check if the endpoint is bulk OUT
- * @epd: endpoint to be checked
- *
- * Returns true if the endpoint has bulk transfer type and OUT direction,
- * otherwise it returns false.
- */
-static inline int usb_endpoint_is_bulk_out(
- const struct usb_endpoint_descriptor *epd)
-{
- return usb_endpoint_xfer_bulk(epd) && usb_endpoint_dir_out(epd);
-}
-
-/**
- * usb_endpoint_is_int_in - check if the endpoint is interrupt IN
- * @epd: endpoint to be checked
- *
- * Returns true if the endpoint has interrupt transfer type and IN direction,
- * otherwise it returns false.
- */
-static inline int usb_endpoint_is_int_in(
- const struct usb_endpoint_descriptor *epd)
-{
- return usb_endpoint_xfer_int(epd) && usb_endpoint_dir_in(epd);
-}
-
-/**
- * usb_endpoint_is_int_out - check if the endpoint is interrupt OUT
- * @epd: endpoint to be checked
- *
- * Returns true if the endpoint has interrupt transfer type and OUT direction,
- * otherwise it returns false.
- */
-static inline int usb_endpoint_is_int_out(
- const struct usb_endpoint_descriptor *epd)
-{
- return usb_endpoint_xfer_int(epd) && usb_endpoint_dir_out(epd);
-}
-
-/**
- * usb_endpoint_is_isoc_in - check if the endpoint is isochronous IN
- * @epd: endpoint to be checked
- *
- * Returns true if the endpoint has isochronous transfer type and IN direction,
- * otherwise it returns false.
- */
-static inline int usb_endpoint_is_isoc_in(
- const struct usb_endpoint_descriptor *epd)
-{
- return usb_endpoint_xfer_isoc(epd) && usb_endpoint_dir_in(epd);
-}
-
-/**
- * usb_endpoint_is_isoc_out - check if the endpoint is isochronous OUT
- * @epd: endpoint to be checked
- *
- * Returns true if the endpoint has isochronous transfer type and OUT direction,
- * otherwise it returns false.
- */
-static inline int usb_endpoint_is_isoc_out(
- const struct usb_endpoint_descriptor *epd)
-{
- return usb_endpoint_xfer_isoc(epd) && usb_endpoint_dir_out(epd);
-}
-
-/*-------------------------------------------------------------------------*/
-
-/* USB_DT_SS_ENDPOINT_COMP: SuperSpeed Endpoint Companion descriptor */
-struct usb_ss_ep_comp_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
-
- __u8 bMaxBurst;
- __u8 bmAttributes;
- __le16 wBytesPerInterval;
-} __attribute__ ((packed));
-
-#define USB_DT_SS_EP_COMP_SIZE 6
-
-/*-------------------------------------------------------------------------*/
-
-/* USB_DT_DEVICE_QUALIFIER: Device Qualifier descriptor */
-struct usb_qualifier_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
-
- __le16 bcdUSB;
- __u8 bDeviceClass;
- __u8 bDeviceSubClass;
- __u8 bDeviceProtocol;
- __u8 bMaxPacketSize0;
- __u8 bNumConfigurations;
- __u8 bRESERVED;
-} __attribute__ ((packed));
-
-
-/*-------------------------------------------------------------------------*/
-
-/* USB_DT_OTG (from OTG 1.0a supplement) */
-struct usb_otg_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
-
- __u8 bmAttributes; /* support for HNP, SRP, etc */
-} __attribute__ ((packed));
-
-/* from usb_otg_descriptor.bmAttributes */
-#define USB_OTG_SRP (1 << 0)
-#define USB_OTG_HNP (1 << 1) /* swap host/device roles */
-
-/*-------------------------------------------------------------------------*/
-
-/* USB_DT_DEBUG: for special highspeed devices, replacing serial console */
-struct usb_debug_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
-
- /* bulk endpoints with 8 byte maxpacket */
- __u8 bDebugInEndpoint;
- __u8 bDebugOutEndpoint;
-} __attribute__((packed));
-
-/*-------------------------------------------------------------------------*/
-
-/* USB_DT_INTERFACE_ASSOCIATION: groups interfaces */
-struct usb_interface_assoc_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
-
- __u8 bFirstInterface;
- __u8 bInterfaceCount;
- __u8 bFunctionClass;
- __u8 bFunctionSubClass;
- __u8 bFunctionProtocol;
- __u8 iFunction;
-} __attribute__ ((packed));
-
-
-/*-------------------------------------------------------------------------*/
-
-/* USB_DT_SECURITY: group of wireless security descriptors, including
- * encryption types available for setting up a CC/association.
- */
-struct usb_security_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
-
- __le16 wTotalLength;
- __u8 bNumEncryptionTypes;
-} __attribute__((packed));
-
-/*-------------------------------------------------------------------------*/
-
-/* USB_DT_KEY: used with {GET,SET}_SECURITY_DATA; only public keys
- * may be retrieved.
- */
-struct usb_key_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
-
- __u8 tTKID[3];
- __u8 bReserved;
- __u8 bKeyData[0];
-} __attribute__((packed));
-
-/*-------------------------------------------------------------------------*/
-
-/* USB_DT_ENCRYPTION_TYPE: bundled in DT_SECURITY groups */
-struct usb_encryption_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
-
- __u8 bEncryptionType;
-#define USB_ENC_TYPE_UNSECURE 0
-#define USB_ENC_TYPE_WIRED 1 /* non-wireless mode */
-#define USB_ENC_TYPE_CCM_1 2 /* aes128/cbc session */
-#define USB_ENC_TYPE_RSA_1 3 /* rsa3072/sha1 auth */
- __u8 bEncryptionValue; /* use in SET_ENCRYPTION */
- __u8 bAuthKeyIndex;
-} __attribute__((packed));
-
-
-/*-------------------------------------------------------------------------*/
-
-/* USB_DT_BOS: group of device-level capabilities */
-struct usb_bos_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
-
- __le16 wTotalLength;
- __u8 bNumDeviceCaps;
-} __attribute__((packed));
-
-/*-------------------------------------------------------------------------*/
-
-/* USB_DT_DEVICE_CAPABILITY: grouped with BOS */
-struct usb_dev_cap_header {
- __u8 bLength;
- __u8 bDescriptorType;
- __u8 bDevCapabilityType;
-} __attribute__((packed));
-
-#define USB_CAP_TYPE_WIRELESS_USB 1
-
-struct usb_wireless_cap_descriptor { /* Ultra Wide Band */
- __u8 bLength;
- __u8 bDescriptorType;
- __u8 bDevCapabilityType;
-
- __u8 bmAttributes;
-#define USB_WIRELESS_P2P_DRD (1 << 1)
-#define USB_WIRELESS_BEACON_MASK (3 << 2)
-#define USB_WIRELESS_BEACON_SELF (1 << 2)
-#define USB_WIRELESS_BEACON_DIRECTED (2 << 2)
-#define USB_WIRELESS_BEACON_NONE (3 << 2)
- __le16 wPHYRates; /* bit rates, Mbps */
-#define USB_WIRELESS_PHY_53 (1 << 0) /* always set */
-#define USB_WIRELESS_PHY_80 (1 << 1)
-#define USB_WIRELESS_PHY_107 (1 << 2) /* always set */
-#define USB_WIRELESS_PHY_160 (1 << 3)
-#define USB_WIRELESS_PHY_200 (1 << 4) /* always set */
-#define USB_WIRELESS_PHY_320 (1 << 5)
-#define USB_WIRELESS_PHY_400 (1 << 6)
-#define USB_WIRELESS_PHY_480 (1 << 7)
- __u8 bmTFITXPowerInfo; /* TFI power levels */
- __u8 bmFFITXPowerInfo; /* FFI power levels */
- __le16 bmBandGroup;
- __u8 bReserved;
-} __attribute__((packed));
-
-#define USB_CAP_TYPE_EXT 2
-
-struct usb_ext_cap_descriptor { /* Link Power Management */
- __u8 bLength;
- __u8 bDescriptorType;
- __u8 bDevCapabilityType;
- __u8 bmAttributes;
-#define USB_LPM_SUPPORT (1 << 1) /* supports LPM */
-} __attribute__((packed));
-
-/*-------------------------------------------------------------------------*/
-
-/* USB_DT_WIRELESS_ENDPOINT_COMP: companion descriptor associated with
- * each endpoint descriptor for a wireless device
- */
-struct usb_wireless_ep_comp_descriptor {
- __u8 bLength;
- __u8 bDescriptorType;
-
- __u8 bMaxBurst;
- __u8 bMaxSequence;
- __le16 wMaxStreamDelay;
- __le16 wOverTheAirPacketSize;
- __u8 bOverTheAirInterval;
- __u8 bmCompAttributes;
-#define USB_ENDPOINT_SWITCH_MASK 0x03 /* in bmCompAttributes */
-#define USB_ENDPOINT_SWITCH_NO 0
-#define USB_ENDPOINT_SWITCH_SWITCH 1
-#define USB_ENDPOINT_SWITCH_SCALE 2
-} __attribute__((packed));
-
-/*-------------------------------------------------------------------------*/
-
-/* USB_REQ_SET_HANDSHAKE is a four-way handshake used between a wireless
- * host and a device for connection set up, mutual authentication, and
- * exchanging short lived session keys. The handshake depends on a CC.
- */
-struct usb_handshake {
- __u8 bMessageNumber;
- __u8 bStatus;
- __u8 tTKID[3];
- __u8 bReserved;
- __u8 CDID[16];
- __u8 nonce[16];
- __u8 MIC[8];
-} __attribute__((packed));
-
-/*-------------------------------------------------------------------------*/
-
-/* USB_REQ_SET_CONNECTION modifies or revokes a connection context (CC).
- * A CC may also be set up using non-wireless secure channels (including
- * wired USB!), and some devices may support CCs with multiple hosts.
- */
-struct usb_connection_context {
- __u8 CHID[16]; /* persistent host id */
- __u8 CDID[16]; /* device id (unique w/in host context) */
- __u8 CK[16]; /* connection key */
-} __attribute__((packed));
-
-/*-------------------------------------------------------------------------*/
-
-/* USB 2.0 defines three speeds, here's how Linux identifies them */
-
-enum usb_device_speed {
- USB_SPEED_UNKNOWN = 0, /* enumerating */
- USB_SPEED_LOW, USB_SPEED_FULL, /* usb 1.1 */
- USB_SPEED_HIGH, /* usb 2.0 */
- USB_SPEED_WIRELESS, /* wireless (usb 2.5) */
- USB_SPEED_SUPER, /* usb 3.0 */
-};
-
-enum usb_device_state {
- /* NOTATTACHED isn't in the USB spec, and this state acts
- * the same as ATTACHED ... but it's clearer this way.
- */
- USB_STATE_NOTATTACHED = 0,
-
- /* chapter 9 and authentication (wireless) device states */
- USB_STATE_ATTACHED,
- USB_STATE_POWERED, /* wired */
- USB_STATE_RECONNECTING, /* auth */
- USB_STATE_UNAUTHENTICATED, /* auth */
- USB_STATE_DEFAULT, /* limited function */
- USB_STATE_ADDRESS,
- USB_STATE_CONFIGURED, /* most functions */
-
- USB_STATE_SUSPENDED
-
- /* NOTE: there are actually four different SUSPENDED
- * states, returning to POWERED, DEFAULT, ADDRESS, or
- * CONFIGURED respectively when SOF tokens flow again.
- * At this level there's no difference between L1 and L2
- * suspend states. (L2 being original USB 1.1 suspend.)
- */
-};
-
-#endif /* __LINUX_USB_CH9_H */
diff --git a/carl9170fw/include/linux/compiler.h b/carl9170fw/include/linux/compiler.h
deleted file mode 100644
index d331f3c..0000000
--- a/carl9170fw/include/linux/compiler.h
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#ifndef __SHARED_COMPILER_H
-#define __SHARED_COMPILER_H
-
-#define __noinline __attribute__((noinline))
-#define __noreturn __attribute__((noreturn))
-#define __inline __attribute__((always_inline))
-#define __hot __attribute__((hot))
-#define __cold __attribute__((cold))
-#define __unused __attribute__((unused))
-#define __force __attribute__((force))
-#define __section(s) __attribute__((section("." # s)))
-#define __aligned(a) __attribute__((aligned(a)))
-#define __packed __attribute__((packed))
-
-#define BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2*!!(condition)]))
-#define BUILD_BUG_ON_ZERO(e) (sizeof(char[1 - 2 * !!(e)]) - 1)
-
-#define ALIGN(x, a) __ALIGN_MASK(x, (typeof(x))(a) - 1)
-#define __ALIGN_MASK(x, mask) (((x) + (mask)) & ~(mask))
-
-#define __roundup(x, y) ((((x) + ((y) - 1)) / (y)) * (y))
-
-#define __must_be_array(a) \
- BUILD_BUG_ON_ZERO(__builtin_types_compatible_p(typeof(a), typeof(&a[0])))
-#define ARRAY_SIZE(arr) (sizeof((arr)) / sizeof((arr)[0]) + __must_be_array(arr))
-
-#define BIT(b) (1 << (b))
-#define MASK(w) (BIT(w) - 1)
-
-#undef offsetof
-#ifdef __compiler_offsetof
-# define offsetof(TYPE, MEMBER) __compiler_offsetof(TYPE, MEMBER)
-#else
-# define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
-#endif
-
-#define likely(x) __builtin_expect(!!(x), 1)
-#define unlikely(x) __builtin_expect(!!(x), 0)
-
-#define min(x, y) ({ \
- typeof(x) _min1 = (x); \
- typeof(y) _min2 = (y); \
- (void) (&_min1 == &_min2); \
- _min1 < _min2 ? _min1 : _min2; })
-
-#define max(x, y) ({ \
- typeof(x) _max1 = (x); \
- typeof(y) _max2 = (y); \
- (void) (&_max1 == &_max2); \
- _max1 > _max2 ? _max1 : _max2; })
-
-#define min_t(type, x, y) ({ \
- type __min1 = (x); \
- type __min2 = (y); \
- __min1 < __min2 ? __min1 : __min2; })
-
-#define max_t(type, x, y) ({ \
- type __max1 = (x); \
- type __max2 = (y); \
- __max1 > __max2 ? __max1 : __max2; })
-
-
-#define container_of(ptr, type, member) ({ \
- const typeof(((type *)0)->member) * __mptr = (ptr); \
- (type *)(((unsigned long)__mptr - offsetof(type, member))); })
-
-#define MAX_ERRNO 4095
-
-#define IS_ERR_VALUE(x) unlikely((x) >= (unsigned long)-MAX_ERRNO)
-
-static inline void *ERR_PTR(long errornr)
-{
- return (void *) errornr;
-}
-
-static inline long PTR_ERR(const void *ptr)
-{
- return (long) ptr;
-}
-
-static inline long IS_ERR(const void *ptr)
-{
- return IS_ERR_VALUE((unsigned long)ptr);
-}
-
-static inline long IS_ERR_OR_NULL(const void *ptr)
-{
- return !ptr || IS_ERR_VALUE((unsigned long)ptr);
-}
-
-#endif /* __SHARED_COMPILER_H */
diff --git a/carl9170fw/include/linux/ieee80211.h b/carl9170fw/include/linux/ieee80211.h
deleted file mode 100644
index e4448ca..0000000
--- a/carl9170fw/include/linux/ieee80211.h
+++ /dev/null
@@ -1,1918 +0,0 @@
-/*
- * IEEE 802.11 defines
- *
- * Copyright (c) 2001-2002, SSH Communications Security Corp and Jouni Malinen
- * <jkmaline@cc.hut.fi>
- * Copyright (c) 2002-2003, Jouni Malinen <jkmaline@cc.hut.fi>
- * Copyright (c) 2005, Devicescape Software, Inc.
- * Copyright (c) 2006, Michael Wu <flamingice@sourmilk.net>
- *
- * 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.
- */
-
-#ifndef __LINUX_IEEE80211_H
-#define __LINUX_IEEE80211_H
-
-/*
- * DS bit usage
- *
- * TA = transmitter address
- * RA = receiver address
- * DA = destination address
- * SA = source address
- *
- * ToDS FromDS A1(RA) A2(TA) A3 A4 Use
- * -----------------------------------------------------------------
- * 0 0 DA SA BSSID - IBSS/DLS
- * 0 1 DA BSSID SA - AP -> STA
- * 1 0 BSSID SA DA - AP <- STA
- * 1 1 RA TA DA SA unspecified (WDS)
- */
-
-#define FCS_LEN 4
-
-#define IEEE80211_FCTL_VERS 0x0003
-#define IEEE80211_FCTL_FTYPE 0x000c
-#define IEEE80211_FCTL_STYPE 0x00f0
-#define IEEE80211_FCTL_TODS 0x0100
-#define IEEE80211_FCTL_FROMDS 0x0200
-#define IEEE80211_FCTL_MOREFRAGS 0x0400
-#define IEEE80211_FCTL_RETRY 0x0800
-#define IEEE80211_FCTL_PM 0x1000
-#define IEEE80211_FCTL_MOREDATA 0x2000
-#define IEEE80211_FCTL_PROTECTED 0x4000
-#define IEEE80211_FCTL_ORDER 0x8000
-
-#define IEEE80211_SCTL_FRAG 0x000F
-#define IEEE80211_SCTL_SEQ 0xFFF0
-
-#define IEEE80211_FTYPE_MGMT 0x0000
-#define IEEE80211_FTYPE_CTL 0x0004
-#define IEEE80211_FTYPE_DATA 0x0008
-
-/* management */
-#define IEEE80211_STYPE_ASSOC_REQ 0x0000
-#define IEEE80211_STYPE_ASSOC_RESP 0x0010
-#define IEEE80211_STYPE_REASSOC_REQ 0x0020
-#define IEEE80211_STYPE_REASSOC_RESP 0x0030
-#define IEEE80211_STYPE_PROBE_REQ 0x0040
-#define IEEE80211_STYPE_PROBE_RESP 0x0050
-#define IEEE80211_STYPE_BEACON 0x0080
-#define IEEE80211_STYPE_ATIM 0x0090
-#define IEEE80211_STYPE_DISASSOC 0x00A0
-#define IEEE80211_STYPE_AUTH 0x00B0
-#define IEEE80211_STYPE_DEAUTH 0x00C0
-#define IEEE80211_STYPE_ACTION 0x00D0
-
-/* control */
-#define IEEE80211_STYPE_BACK_REQ 0x0080
-#define IEEE80211_STYPE_BACK 0x0090
-#define IEEE80211_STYPE_PSPOLL 0x00A0
-#define IEEE80211_STYPE_RTS 0x00B0
-#define IEEE80211_STYPE_CTS 0x00C0
-#define IEEE80211_STYPE_ACK 0x00D0
-#define IEEE80211_STYPE_CFEND 0x00E0
-#define IEEE80211_STYPE_CFENDACK 0x00F0
-
-/* data */
-#define IEEE80211_STYPE_DATA 0x0000
-#define IEEE80211_STYPE_DATA_CFACK 0x0010
-#define IEEE80211_STYPE_DATA_CFPOLL 0x0020
-#define IEEE80211_STYPE_DATA_CFACKPOLL 0x0030
-#define IEEE80211_STYPE_NULLFUNC 0x0040
-#define IEEE80211_STYPE_CFACK 0x0050
-#define IEEE80211_STYPE_CFPOLL 0x0060
-#define IEEE80211_STYPE_CFACKPOLL 0x0070
-#define IEEE80211_STYPE_QOS_DATA 0x0080
-#define IEEE80211_STYPE_QOS_DATA_CFACK 0x0090
-#define IEEE80211_STYPE_QOS_DATA_CFPOLL 0x00A0
-#define IEEE80211_STYPE_QOS_DATA_CFACKPOLL 0x00B0
-#define IEEE80211_STYPE_QOS_NULLFUNC 0x00C0
-#define IEEE80211_STYPE_QOS_CFACK 0x00D0
-#define IEEE80211_STYPE_QOS_CFPOLL 0x00E0
-#define IEEE80211_STYPE_QOS_CFACKPOLL 0x00F0
-
-
-/* miscellaneous IEEE 802.11 constants */
-#define IEEE80211_MAX_FRAG_THRESHOLD 2352
-#define IEEE80211_MAX_RTS_THRESHOLD 2353
-#define IEEE80211_MAX_AID 2007
-#define IEEE80211_MAX_TIM_LEN 251
-/* Maximum size for the MA-UNITDATA primitive, 802.11 standard section
- 6.2.1.1.2.
-
- 802.11e clarifies the figure in section 7.1.2. The frame body is
- up to 2304 octets long (maximum MSDU size) plus any crypt overhead. */
-#define IEEE80211_MAX_DATA_LEN 2304
-/* 30 byte 4 addr hdr, 2 byte QoS, 2304 byte MSDU, 12 byte crypt, 4 byte FCS */
-#define IEEE80211_MAX_FRAME_LEN 2352
-
-#define IEEE80211_MAX_SSID_LEN 32
-
-#define IEEE80211_MAX_MESH_ID_LEN 32
-
-#define IEEE80211_QOS_CTL_LEN 2
-/* 1d tag mask */
-#define IEEE80211_QOS_CTL_TAG1D_MASK 0x0007
-/* TID mask */
-#define IEEE80211_QOS_CTL_TID_MASK 0x000f
-/* EOSP */
-#define IEEE80211_QOS_CTL_EOSP 0x0010
-/* ACK policy */
-#define IEEE80211_QOS_CTL_ACK_POLICY_NORMAL 0x0000
-#define IEEE80211_QOS_CTL_ACK_POLICY_NOACK 0x0020
-#define IEEE80211_QOS_CTL_ACK_POLICY_NO_EXPL 0x0040
-#define IEEE80211_QOS_CTL_ACK_POLICY_BLOCKACK 0x0060
-#define IEEE80211_QOS_CTL_ACK_POLICY_MASK 0x0060
-/* A-MSDU 802.11n */
-#define IEEE80211_QOS_CTL_A_MSDU_PRESENT 0x0080
-/* Mesh Control 802.11s */
-#define IEEE80211_QOS_CTL_MESH_CONTROL_PRESENT 0x0100
-
-/* U-APSD queue for WMM IEs sent by AP */
-#define IEEE80211_WMM_IE_AP_QOSINFO_UAPSD (1<<7)
-#define IEEE80211_WMM_IE_AP_QOSINFO_PARAM_SET_CNT_MASK 0x0f
-
-/* U-APSD queues for WMM IEs sent by STA */
-#define IEEE80211_WMM_IE_STA_QOSINFO_AC_VO (1<<0)
-#define IEEE80211_WMM_IE_STA_QOSINFO_AC_VI (1<<1)
-#define IEEE80211_WMM_IE_STA_QOSINFO_AC_BK (1<<2)
-#define IEEE80211_WMM_IE_STA_QOSINFO_AC_BE (1<<3)
-#define IEEE80211_WMM_IE_STA_QOSINFO_AC_MASK 0x0f
-
-/* U-APSD max SP length for WMM IEs sent by STA */
-#define IEEE80211_WMM_IE_STA_QOSINFO_SP_ALL 0x00
-#define IEEE80211_WMM_IE_STA_QOSINFO_SP_2 0x01
-#define IEEE80211_WMM_IE_STA_QOSINFO_SP_4 0x02
-#define IEEE80211_WMM_IE_STA_QOSINFO_SP_6 0x03
-#define IEEE80211_WMM_IE_STA_QOSINFO_SP_MASK 0x03
-#define IEEE80211_WMM_IE_STA_QOSINFO_SP_SHIFT 5
-
-#define IEEE80211_HT_CTL_LEN 4
-
-struct ieee80211_hdr {
- __le16 frame_control;
- __le16 duration_id;
- u8 addr1[6];
- u8 addr2[6];
- u8 addr3[6];
- __le16 seq_ctrl;
- u8 addr4[6];
-} __attribute__ ((packed));
-
-struct ieee80211_hdr_3addr {
- __le16 frame_control;
- __le16 duration_id;
- u8 addr1[6];
- u8 addr2[6];
- u8 addr3[6];
- __le16 seq_ctrl;
-} __attribute__ ((packed));
-
-struct ieee80211_qos_hdr {
- __le16 frame_control;
- __le16 duration_id;
- u8 addr1[6];
- u8 addr2[6];
- u8 addr3[6];
- __le16 seq_ctrl;
- __le16 qos_ctrl;
-} __attribute__ ((packed));
-
-/**
- * ieee80211_has_tods - check if IEEE80211_FCTL_TODS is set
- * @fc: frame control bytes in little-endian byteorder
- */
-static inline int ieee80211_has_tods(__le16 fc)
-{
- return (fc & cpu_to_le16(IEEE80211_FCTL_TODS)) != 0;
-}
-
-/**
- * ieee80211_has_fromds - check if IEEE80211_FCTL_FROMDS is set
- * @fc: frame control bytes in little-endian byteorder
- */
-static inline int ieee80211_has_fromds(__le16 fc)
-{
- return (fc & cpu_to_le16(IEEE80211_FCTL_FROMDS)) != 0;
-}
-
-/**
- * ieee80211_has_a4 - check if IEEE80211_FCTL_TODS and IEEE80211_FCTL_FROMDS are set
- * @fc: frame control bytes in little-endian byteorder
- */
-static inline int ieee80211_has_a4(__le16 fc)
-{
- __le16 tmp = cpu_to_le16(IEEE80211_FCTL_TODS | IEEE80211_FCTL_FROMDS);
- return (fc & tmp) == tmp;
-}
-
-/**
- * ieee80211_has_morefrags - check if IEEE80211_FCTL_MOREFRAGS is set
- * @fc: frame control bytes in little-endian byteorder
- */
-static inline int ieee80211_has_morefrags(__le16 fc)
-{
- return (fc & cpu_to_le16(IEEE80211_FCTL_MOREFRAGS)) != 0;
-}
-
-/**
- * ieee80211_has_retry - check if IEEE80211_FCTL_RETRY is set
- * @fc: frame control bytes in little-endian byteorder
- */
-static inline int ieee80211_has_retry(__le16 fc)
-{
- return (fc & cpu_to_le16(IEEE80211_FCTL_RETRY)) != 0;
-}
-
-/**
- * ieee80211_has_pm - check if IEEE80211_FCTL_PM is set
- * @fc: frame control bytes in little-endian byteorder
- */
-static inline int ieee80211_has_pm(__le16 fc)
-{
- return (fc & cpu_to_le16(IEEE80211_FCTL_PM)) != 0;
-}
-
-/**
- * ieee80211_has_moredata - check if IEEE80211_FCTL_MOREDATA is set
- * @fc: frame control bytes in little-endian byteorder
- */
-static inline int ieee80211_has_moredata(__le16 fc)
-{
- return (fc & cpu_to_le16(IEEE80211_FCTL_MOREDATA)) != 0;
-}
-
-/**
- * ieee80211_has_protected - check if IEEE80211_FCTL_PROTECTED is set
- * @fc: frame control bytes in little-endian byteorder
- */
-static inline int ieee80211_has_protected(__le16 fc)
-{
- return (fc & cpu_to_le16(IEEE80211_FCTL_PROTECTED)) != 0;
-}
-
-/**
- * ieee80211_has_order - check if IEEE80211_FCTL_ORDER is set
- * @fc: frame control bytes in little-endian byteorder
- */
-static inline int ieee80211_has_order(__le16 fc)
-{
- return (fc & cpu_to_le16(IEEE80211_FCTL_ORDER)) != 0;
-}
-
-/**
- * ieee80211_is_mgmt - check if type is IEEE80211_FTYPE_MGMT
- * @fc: frame control bytes in little-endian byteorder
- */
-static inline int ieee80211_is_mgmt(__le16 fc)
-{
- return (fc & cpu_to_le16(IEEE80211_FCTL_FTYPE)) ==
- cpu_to_le16(IEEE80211_FTYPE_MGMT);
-}
-
-/**
- * ieee80211_is_ctl - check if type is IEEE80211_FTYPE_CTL
- * @fc: frame control bytes in little-endian byteorder
- */
-static inline int ieee80211_is_ctl(__le16 fc)
-{
- return (fc & cpu_to_le16(IEEE80211_FCTL_FTYPE)) ==
- cpu_to_le16(IEEE80211_FTYPE_CTL);
-}
-
-/**
- * ieee80211_is_data - check if type is IEEE80211_FTYPE_DATA
- * @fc: frame control bytes in little-endian byteorder
- */
-static inline int ieee80211_is_data(__le16 fc)
-{
- return (fc & cpu_to_le16(IEEE80211_FCTL_FTYPE)) ==
- cpu_to_le16(IEEE80211_FTYPE_DATA);
-}
-
-/**
- * ieee80211_is_data_qos - check if type is IEEE80211_FTYPE_DATA and IEEE80211_STYPE_QOS_DATA is set
- * @fc: frame control bytes in little-endian byteorder
- */
-static inline int ieee80211_is_data_qos(__le16 fc)
-{
- /*
- * mask with QOS_DATA rather than IEEE80211_FCTL_STYPE as we just need
- * to check the one bit
- */
- return (fc & cpu_to_le16(IEEE80211_FCTL_FTYPE | IEEE80211_STYPE_QOS_DATA)) ==
- cpu_to_le16(IEEE80211_FTYPE_DATA | IEEE80211_STYPE_QOS_DATA);
-}
-
-/**
- * ieee80211_is_data_present - check if type is IEEE80211_FTYPE_DATA and has data
- * @fc: frame control bytes in little-endian byteorder
- */
-static inline int ieee80211_is_data_present(__le16 fc)
-{
- /*
- * mask with 0x40 and test that that bit is clear to only return true
- * for the data-containing substypes.
- */
- return (fc & cpu_to_le16(IEEE80211_FCTL_FTYPE | 0x40)) ==
- cpu_to_le16(IEEE80211_FTYPE_DATA);
-}
-
-/**
- * ieee80211_is_assoc_req - check if IEEE80211_FTYPE_MGMT && IEEE80211_STYPE_ASSOC_REQ
- * @fc: frame control bytes in little-endian byteorder
- */
-static inline int ieee80211_is_assoc_req(__le16 fc)
-{
- return (fc & cpu_to_le16(IEEE80211_FCTL_FTYPE | IEEE80211_FCTL_STYPE)) ==
- cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_ASSOC_REQ);
-}
-
-/**
- * ieee80211_is_assoc_resp - check if IEEE80211_FTYPE_MGMT && IEEE80211_STYPE_ASSOC_RESP
- * @fc: frame control bytes in little-endian byteorder
- */
-static inline int ieee80211_is_assoc_resp(__le16 fc)
-{
- return (fc & cpu_to_le16(IEEE80211_FCTL_FTYPE | IEEE80211_FCTL_STYPE)) ==
- cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_ASSOC_RESP);
-}
-
-/**
- * ieee80211_is_reassoc_req - check if IEEE80211_FTYPE_MGMT && IEEE80211_STYPE_REASSOC_REQ
- * @fc: frame control bytes in little-endian byteorder
- */
-static inline int ieee80211_is_reassoc_req(__le16 fc)
-{
- return (fc & cpu_to_le16(IEEE80211_FCTL_FTYPE | IEEE80211_FCTL_STYPE)) ==
- cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_REASSOC_REQ);
-}
-
-/**
- * ieee80211_is_reassoc_resp - check if IEEE80211_FTYPE_MGMT && IEEE80211_STYPE_REASSOC_RESP
- * @fc: frame control bytes in little-endian byteorder
- */
-static inline int ieee80211_is_reassoc_resp(__le16 fc)
-{
- return (fc & cpu_to_le16(IEEE80211_FCTL_FTYPE | IEEE80211_FCTL_STYPE)) ==
- cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_REASSOC_RESP);
-}
-
-/**
- * ieee80211_is_probe_req - check if IEEE80211_FTYPE_MGMT && IEEE80211_STYPE_PROBE_REQ
- * @fc: frame control bytes in little-endian byteorder
- */
-static inline int ieee80211_is_probe_req(__le16 fc)
-{
- return (fc & cpu_to_le16(IEEE80211_FCTL_FTYPE | IEEE80211_FCTL_STYPE)) ==
- cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_PROBE_REQ);
-}
-
-/**
- * ieee80211_is_probe_resp - check if IEEE80211_FTYPE_MGMT && IEEE80211_STYPE_PROBE_RESP
- * @fc: frame control bytes in little-endian byteorder
- */
-static inline int ieee80211_is_probe_resp(__le16 fc)
-{
- return (fc & cpu_to_le16(IEEE80211_FCTL_FTYPE | IEEE80211_FCTL_STYPE)) ==
- cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_PROBE_RESP);
-}
-
-/**
- * ieee80211_is_beacon - check if IEEE80211_FTYPE_MGMT && IEEE80211_STYPE_BEACON
- * @fc: frame control bytes in little-endian byteorder
- */
-static inline int ieee80211_is_beacon(__le16 fc)
-{
- return (fc & cpu_to_le16(IEEE80211_FCTL_FTYPE | IEEE80211_FCTL_STYPE)) ==
- cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_BEACON);
-}
-
-/**
- * ieee80211_is_atim - check if IEEE80211_FTYPE_MGMT && IEEE80211_STYPE_ATIM
- * @fc: frame control bytes in little-endian byteorder
- */
-static inline int ieee80211_is_atim(__le16 fc)
-{
- return (fc & cpu_to_le16(IEEE80211_FCTL_FTYPE | IEEE80211_FCTL_STYPE)) ==
- cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_ATIM);
-}
-
-/**
- * ieee80211_is_disassoc - check if IEEE80211_FTYPE_MGMT && IEEE80211_STYPE_DISASSOC
- * @fc: frame control bytes in little-endian byteorder
- */
-static inline int ieee80211_is_disassoc(__le16 fc)
-{
- return (fc & cpu_to_le16(IEEE80211_FCTL_FTYPE | IEEE80211_FCTL_STYPE)) ==
- cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_DISASSOC);
-}
-
-/**
- * ieee80211_is_auth - check if IEEE80211_FTYPE_MGMT && IEEE80211_STYPE_AUTH
- * @fc: frame control bytes in little-endian byteorder
- */
-static inline int ieee80211_is_auth(__le16 fc)
-{
- return (fc & cpu_to_le16(IEEE80211_FCTL_FTYPE | IEEE80211_FCTL_STYPE)) ==
- cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_AUTH);
-}
-
-/**
- * ieee80211_is_deauth - check if IEEE80211_FTYPE_MGMT && IEEE80211_STYPE_DEAUTH
- * @fc: frame control bytes in little-endian byteorder
- */
-static inline int ieee80211_is_deauth(__le16 fc)
-{
- return (fc & cpu_to_le16(IEEE80211_FCTL_FTYPE | IEEE80211_FCTL_STYPE)) ==
- cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_DEAUTH);
-}
-
-/**
- * ieee80211_is_action - check if IEEE80211_FTYPE_MGMT && IEEE80211_STYPE_ACTION
- * @fc: frame control bytes in little-endian byteorder
- */
-static inline int ieee80211_is_action(__le16 fc)
-{
- return (fc & cpu_to_le16(IEEE80211_FCTL_FTYPE | IEEE80211_FCTL_STYPE)) ==
- cpu_to_le16(IEEE80211_FTYPE_MGMT | IEEE80211_STYPE_ACTION);
-}
-
-/**
- * ieee80211_is_back_req - check if IEEE80211_FTYPE_CTL && IEEE80211_STYPE_BACK_REQ
- * @fc: frame control bytes in little-endian byteorder
- */
-static inline int ieee80211_is_back_req(__le16 fc)
-{
- return (fc & cpu_to_le16(IEEE80211_FCTL_FTYPE | IEEE80211_FCTL_STYPE)) ==
- cpu_to_le16(IEEE80211_FTYPE_CTL | IEEE80211_STYPE_BACK_REQ);
-}
-
-/**
- * ieee80211_is_back - check if IEEE80211_FTYPE_CTL && IEEE80211_STYPE_BACK
- * @fc: frame control bytes in little-endian byteorder
- */
-static inline int ieee80211_is_back(__le16 fc)
-{
- return (fc & cpu_to_le16(IEEE80211_FCTL_FTYPE | IEEE80211_FCTL_STYPE)) ==
- cpu_to_le16(IEEE80211_FTYPE_CTL | IEEE80211_STYPE_BACK);
-}
-
-/**
- * ieee80211_is_pspoll - check if IEEE80211_FTYPE_CTL && IEEE80211_STYPE_PSPOLL
- * @fc: frame control bytes in little-endian byteorder
- */
-static inline int ieee80211_is_pspoll(__le16 fc)
-{
- return (fc & cpu_to_le16(IEEE80211_FCTL_FTYPE | IEEE80211_FCTL_STYPE)) ==
- cpu_to_le16(IEEE80211_FTYPE_CTL | IEEE80211_STYPE_PSPOLL);
-}
-
-/**
- * ieee80211_is_rts - check if IEEE80211_FTYPE_CTL && IEEE80211_STYPE_RTS
- * @fc: frame control bytes in little-endian byteorder
- */
-static inline int ieee80211_is_rts(__le16 fc)
-{
- return (fc & cpu_to_le16(IEEE80211_FCTL_FTYPE | IEEE80211_FCTL_STYPE)) ==
- cpu_to_le16(IEEE80211_FTYPE_CTL | IEEE80211_STYPE_RTS);
-}
-
-/**
- * ieee80211_is_cts - check if IEEE80211_FTYPE_CTL && IEEE80211_STYPE_CTS
- * @fc: frame control bytes in little-endian byteorder
- */
-static inline int ieee80211_is_cts(__le16 fc)
-{
- return (fc & cpu_to_le16(IEEE80211_FCTL_FTYPE | IEEE80211_FCTL_STYPE)) ==
- cpu_to_le16(IEEE80211_FTYPE_CTL | IEEE80211_STYPE_CTS);
-}
-
-/**
- * ieee80211_is_ack - check if IEEE80211_FTYPE_CTL && IEEE80211_STYPE_ACK
- * @fc: frame control bytes in little-endian byteorder
- */
-static inline int ieee80211_is_ack(__le16 fc)
-{
- return (fc & cpu_to_le16(IEEE80211_FCTL_FTYPE | IEEE80211_FCTL_STYPE)) ==
- cpu_to_le16(IEEE80211_FTYPE_CTL | IEEE80211_STYPE_ACK);
-}
-
-/**
- * ieee80211_is_cfend - check if IEEE80211_FTYPE_CTL && IEEE80211_STYPE_CFEND
- * @fc: frame control bytes in little-endian byteorder
- */
-static inline int ieee80211_is_cfend(__le16 fc)
-{
- return (fc & cpu_to_le16(IEEE80211_FCTL_FTYPE | IEEE80211_FCTL_STYPE)) ==
- cpu_to_le16(IEEE80211_FTYPE_CTL | IEEE80211_STYPE_CFEND);
-}
-
-/**
- * ieee80211_is_cfendack - check if IEEE80211_FTYPE_CTL && IEEE80211_STYPE_CFENDACK
- * @fc: frame control bytes in little-endian byteorder
- */
-static inline int ieee80211_is_cfendack(__le16 fc)
-{
- return (fc & cpu_to_le16(IEEE80211_FCTL_FTYPE | IEEE80211_FCTL_STYPE)) ==
- cpu_to_le16(IEEE80211_FTYPE_CTL | IEEE80211_STYPE_CFENDACK);
-}
-
-/**
- * ieee80211_is_nullfunc - check if frame is a regular (non-QoS) nullfunc frame
- * @fc: frame control bytes in little-endian byteorder
- */
-static inline int ieee80211_is_nullfunc(__le16 fc)
-{
- return (fc & cpu_to_le16(IEEE80211_FCTL_FTYPE | IEEE80211_FCTL_STYPE)) ==
- cpu_to_le16(IEEE80211_FTYPE_DATA | IEEE80211_STYPE_NULLFUNC);
-}
-
-/**
- * ieee80211_is_qos_nullfunc - check if frame is a QoS nullfunc frame
- * @fc: frame control bytes in little-endian byteorder
- */
-static inline int ieee80211_is_qos_nullfunc(__le16 fc)
-{
- return (fc & cpu_to_le16(IEEE80211_FCTL_FTYPE | IEEE80211_FCTL_STYPE)) ==
- cpu_to_le16(IEEE80211_FTYPE_DATA | IEEE80211_STYPE_QOS_NULLFUNC);
-}
-
-static inline unsigned int ieee80211_hdrlen(__le16 fc)
-{
- unsigned int hdrlen = 24;
-
- if (ieee80211_has_a4(fc))
- hdrlen = 30;
-
- if (ieee80211_is_data_qos(fc)) {
- hdrlen += IEEE80211_QOS_CTL_LEN;
- if (ieee80211_has_order(fc))
- hdrlen += IEEE80211_HT_CTL_LEN;
- }
-
- return hdrlen;
-}
-
-/**
- * ieee80211_is_first_frag - check if IEEE80211_SCTL_FRAG is not set
- * @seq_ctrl: frame sequence control bytes in little-endian byteorder
- */
-static inline int ieee80211_is_first_frag(__le16 seq_ctrl)
-{
- return (seq_ctrl & cpu_to_le16(IEEE80211_SCTL_FRAG)) == 0;
-}
-
-struct ieee80211s_hdr {
- u8 flags;
- u8 ttl;
- __le32 seqnum;
- u8 eaddr1[6];
- u8 eaddr2[6];
-} __attribute__ ((packed));
-
-/* Mesh flags */
-#define MESH_FLAGS_AE_A4 0x1
-#define MESH_FLAGS_AE_A5_A6 0x2
-#define MESH_FLAGS_AE 0x3
-#define MESH_FLAGS_PS_DEEP 0x4
-
-/**
- * struct ieee80211_quiet_ie
- *
- * This structure refers to "Quiet information element"
- */
-struct ieee80211_quiet_ie {
- u8 count;
- u8 period;
- __le16 duration;
- __le16 offset;
-} __attribute__ ((packed));
-
-/**
- * struct ieee80211_msrment_ie
- *
- * This structure refers to "Measurement Request/Report information element"
- */
-struct ieee80211_msrment_ie {
- u8 token;
- u8 mode;
- u8 type;
- u8 request[0];
-} __attribute__ ((packed));
-
-/**
- * struct ieee80211_channel_sw_ie
- *
- * This structure refers to "Channel Switch Announcement information element"
- */
-struct ieee80211_channel_sw_ie {
- u8 mode;
- u8 new_ch_num;
- u8 count;
-} __attribute__ ((packed));
-
-/**
- * struct ieee80211_tim
- *
- * This structure refers to "Traffic Indication Map information element"
- */
-struct ieee80211_tim_ie {
- u8 dtim_count;
- u8 dtim_period;
- u8 bitmap_ctrl;
- /* variable size: 1 - 251 bytes */
- u8 virtual_map[1];
-} __attribute__ ((packed));
-
-/**
- * struct ieee80211_meshconf_ie
- *
- * This structure refers to "Mesh Configuration information element"
- */
-struct ieee80211_meshconf_ie {
- u8 meshconf_psel;
- u8 meshconf_pmetric;
- u8 meshconf_congest;
- u8 meshconf_synch;
- u8 meshconf_auth;
- u8 meshconf_form;
- u8 meshconf_cap;
-} __attribute__ ((packed));
-
-/**
- * struct ieee80211_rann_ie
- *
- * This structure refers to "Root Announcement information element"
- */
-struct ieee80211_rann_ie {
- u8 rann_flags;
- u8 rann_hopcount;
- u8 rann_ttl;
- u8 rann_addr[6];
- __le32 rann_seq;
- __le32 rann_interval;
- __le32 rann_metric;
-} __attribute__ ((packed));
-
-enum ieee80211_rann_flags {
- RANN_FLAG_IS_GATE = 1 << 0,
-};
-
-#define WLAN_SA_QUERY_TR_ID_LEN 2
-
-struct ieee80211_mgmt {
- __le16 frame_control;
- __le16 duration;
- u8 da[6];
- u8 sa[6];
- u8 bssid[6];
- __le16 seq_ctrl;
- union {
- struct {
- __le16 auth_alg;
- __le16 auth_transaction;
- __le16 status_code;
- /* possibly followed by Challenge text */
- u8 variable[0];
- } __attribute__ ((packed)) auth;
- struct {
- __le16 reason_code;
- } __attribute__ ((packed)) deauth;
- struct {
- __le16 capab_info;
- __le16 listen_interval;
- /* followed by SSID and Supported rates */
- u8 variable[0];
- } __attribute__ ((packed)) assoc_req;
- struct {
- __le16 capab_info;
- __le16 status_code;
- __le16 aid;
- /* followed by Supported rates */
- u8 variable[0];
- } __attribute__ ((packed)) assoc_resp, reassoc_resp;
- struct {
- __le16 capab_info;
- __le16 listen_interval;
- u8 current_ap[6];
- /* followed by SSID and Supported rates */
- u8 variable[0];
- } __attribute__ ((packed)) reassoc_req;
- struct {
- __le16 reason_code;
- } __attribute__ ((packed)) disassoc;
- struct {
- __le64 timestamp;
- __le16 beacon_int;
- __le16 capab_info;
- /* followed by some of SSID, Supported rates,
- * FH Params, DS Params, CF Params, IBSS Params, TIM */
- u8 variable[0];
- } __attribute__ ((packed)) beacon;
- struct {
- /* only variable items: SSID, Supported rates */
- u8 variable[0];
- } __attribute__ ((packed)) probe_req;
- struct {
- __le64 timestamp;
- __le16 beacon_int;
- __le16 capab_info;
- /* followed by some of SSID, Supported rates,
- * FH Params, DS Params, CF Params, IBSS Params */
- u8 variable[0];
- } __attribute__ ((packed)) probe_resp;
- struct {
- u8 category;
- union {
- struct {
- u8 action_code;
- u8 dialog_token;
- u8 status_code;
- u8 variable[0];
- } __attribute__ ((packed)) wme_action;
- struct{
- u8 action_code;
- u8 element_id;
- u8 length;
- struct ieee80211_channel_sw_ie sw_elem;
- } __attribute__((packed)) chan_switch;
- struct{
- u8 action_code;
- u8 dialog_token;
- u8 element_id;
- u8 length;
- struct ieee80211_msrment_ie msr_elem;
- } __attribute__((packed)) measurement;
- struct{
- u8 action_code;
- u8 dialog_token;
- __le16 capab;
- __le16 timeout;
- __le16 start_seq_num;
- } __attribute__((packed)) addba_req;
- struct{
- u8 action_code;
- u8 dialog_token;
- __le16 status;
- __le16 capab;
- __le16 timeout;
- } __attribute__((packed)) addba_resp;
- struct{
- u8 action_code;
- __le16 params;
- __le16 reason_code;
- } __attribute__((packed)) delba;
- struct {
- u8 action_code;
- u8 variable[0];
- } __attribute__((packed)) self_prot;
- struct{
- u8 action_code;
- u8 variable[0];
- } __attribute__((packed)) mesh_action;
- struct {
- u8 action;
- u8 trans_id[WLAN_SA_QUERY_TR_ID_LEN];
- } __attribute__ ((packed)) sa_query;
- struct {
- u8 action;
- u8 smps_control;
- } __attribute__ ((packed)) ht_smps;
- struct {
- u8 action_code;
- u8 dialog_token;
- __le16 capability;
- u8 variable[0];
- } __packed tdls_discover_resp;
- } u;
- } __attribute__ ((packed)) action;
- } u;
-} __attribute__ ((packed));
-
-/* Supported Rates value encodings in 802.11n-2009 7.3.2.2 */
-#define BSS_MEMBERSHIP_SELECTOR_HT_PHY 127
-
-/* mgmt header + 1 byte category code */
-#define IEEE80211_MIN_ACTION_SIZE offsetof(struct ieee80211_mgmt, u.action.u)
-
-
-/* Management MIC information element (IEEE 802.11w) */
-struct ieee80211_mmie {
- u8 element_id;
- u8 length;
- __le16 key_id;
- u8 sequence_number[6];
- u8 mic[8];
-} __attribute__ ((packed));
-
-struct ieee80211_vendor_ie {
- u8 element_id;
- u8 len;
- u8 oui[3];
- u8 oui_type;
-} __packed;
-
-/* Control frames */
-struct ieee80211_rts {
- __le16 frame_control;
- __le16 duration;
- u8 ra[6];
- u8 ta[6];
-} __attribute__ ((packed));
-
-struct ieee80211_cts {
- __le16 frame_control;
- __le16 duration;
- u8 ra[6];
-} __attribute__ ((packed));
-
-struct ieee80211_pspoll {
- __le16 frame_control;
- __le16 aid;
- u8 bssid[6];
- u8 ta[6];
-} __attribute__ ((packed));
-
-/* TDLS */
-
-/* Link-id information element */
-struct ieee80211_tdls_lnkie {
- u8 ie_type; /* Link Identifier IE */
- u8 ie_len;
- u8 bssid[6];
- u8 init_sta[6];
- u8 resp_sta[6];
-} __packed;
-
-struct ieee80211_tdls_data {
- u8 da[6];
- u8 sa[6];
- __be16 ether_type;
- u8 payload_type;
- u8 category;
- u8 action_code;
- union {
- struct {
- u8 dialog_token;
- __le16 capability;
- u8 variable[0];
- } __packed setup_req;
- struct {
- __le16 status_code;
- u8 dialog_token;
- __le16 capability;
- u8 variable[0];
- } __packed setup_resp;
- struct {
- __le16 status_code;
- u8 dialog_token;
- u8 variable[0];
- } __packed setup_cfm;
- struct {
- __le16 reason_code;
- u8 variable[0];
- } __packed teardown;
- struct {
- u8 dialog_token;
- u8 variable[0];
- } __packed discover_req;
- } u;
-} __packed;
-
-/**
- * struct ieee80211_bar - HT Block Ack Request
- *
- * This structure refers to "HT BlockAckReq" as
- * described in 802.11n draft section 7.2.1.7.1
- */
-struct ieee80211_bar {
- __le16 frame_control;
- __le16 duration;
- __u8 ra[6];
- __u8 ta[6];
- __le16 control;
- __le16 start_seq_num;
-} __attribute__((packed)) __aligned(4);
-
-/* 802.11 BA(R) control masks */
-#define IEEE80211_BAR_CTRL_ACK_POLICY_NORMAL 0x0000
-#define IEEE80211_BAR_CTRL_MULTI_TID 0x0002
-#define IEEE80211_BAR_CTRL_CBMTID_COMPRESSED_BA 0x0004
-#define IEEE80211_BAR_CTRL_TID_INFO_MASK 0xf000
-#define IEEE80211_BAR_CTRL_TID_INFO_SHIFT 12
-
-/**
- * struct ieee80211_ba - HT Block Ack
- *
- * This structure refers to "HT BlockAck" as
- * described in 802.11n draft section 7.2.1.8.1
- */
-struct ieee80211_ba {
- __le16 frame_control;
- __le16 duration;
- u8 ra[6];
- u8 ta[6];
- __le16 control;
-
- __le16 start_seq_num;
- u8 bitmap[8];
-} __attribute__((packed));
-
-#define IEEE80211_HT_MCS_MASK_LEN 10
-
-/**
- * struct ieee80211_mcs_info - MCS information
- * @rx_mask: RX mask
- * @rx_highest: highest supported RX rate. If set represents
- * the highest supported RX data rate in units of 1 Mbps.
- * If this field is 0 this value should not be used to
- * consider the highest RX data rate supported.
- * @tx_params: TX parameters
- */
-struct ieee80211_mcs_info {
- u8 rx_mask[IEEE80211_HT_MCS_MASK_LEN];
- __le16 rx_highest;
- u8 tx_params;
- u8 reserved[3];
-} __attribute__((packed));
-
-/* 802.11n HT capability MSC set */
-#define IEEE80211_HT_MCS_RX_HIGHEST_MASK 0x3ff
-#define IEEE80211_HT_MCS_TX_DEFINED 0x01
-#define IEEE80211_HT_MCS_TX_RX_DIFF 0x02
-/* value 0 == 1 stream etc */
-#define IEEE80211_HT_MCS_TX_MAX_STREAMS_MASK 0x0C
-#define IEEE80211_HT_MCS_TX_MAX_STREAMS_SHIFT 2
-#define IEEE80211_HT_MCS_TX_MAX_STREAMS 4
-#define IEEE80211_HT_MCS_TX_UNEQUAL_MODULATION 0x10
-
-/*
- * 802.11n D5.0 20.3.5 / 20.6 says:
- * - indices 0 to 7 and 32 are single spatial stream
- * - 8 to 31 are multiple spatial streams using equal modulation
- * [8..15 for two streams, 16..23 for three and 24..31 for four]
- * - remainder are multiple spatial streams using unequal modulation
- */
-#define IEEE80211_HT_MCS_UNEQUAL_MODULATION_START 33
-#define IEEE80211_HT_MCS_UNEQUAL_MODULATION_START_BYTE \
- (IEEE80211_HT_MCS_UNEQUAL_MODULATION_START / 8)
-
-/**
- * struct ieee80211_ht_cap - HT capabilities
- *
- * This structure is the "HT capabilities element" as
- * described in 802.11n D5.0 7.3.2.57
- */
-struct ieee80211_ht_cap {
- __le16 cap_info;
- u8 ampdu_params_info;
-
- /* 16 bytes MCS information */
- struct ieee80211_mcs_info mcs;
-
- __le16 extended_ht_cap_info;
- __le32 tx_BF_cap_info;
- u8 antenna_selection_info;
-} __attribute__ ((packed));
-
-/* 802.11n HT capabilities masks (for cap_info) */
-#define IEEE80211_HT_CAP_LDPC_CODING 0x0001
-#define IEEE80211_HT_CAP_SUP_WIDTH_20_40 0x0002
-#define IEEE80211_HT_CAP_SM_PS 0x000C
-#define IEEE80211_HT_CAP_SM_PS_SHIFT 2
-#define IEEE80211_HT_CAP_GRN_FLD 0x0010
-#define IEEE80211_HT_CAP_SGI_20 0x0020
-#define IEEE80211_HT_CAP_SGI_40 0x0040
-#define IEEE80211_HT_CAP_TX_STBC 0x0080
-#define IEEE80211_HT_CAP_RX_STBC 0x0300
-#define IEEE80211_HT_CAP_RX_STBC_SHIFT 8
-#define IEEE80211_HT_CAP_DELAY_BA 0x0400
-#define IEEE80211_HT_CAP_MAX_AMSDU 0x0800
-#define IEEE80211_HT_CAP_DSSSCCK40 0x1000
-#define IEEE80211_HT_CAP_RESERVED 0x2000
-#define IEEE80211_HT_CAP_40MHZ_INTOLERANT 0x4000
-#define IEEE80211_HT_CAP_LSIG_TXOP_PROT 0x8000
-
-/* 802.11n HT extended capabilities masks (for extended_ht_cap_info) */
-#define IEEE80211_HT_EXT_CAP_PCO 0x0001
-#define IEEE80211_HT_EXT_CAP_PCO_TIME 0x0006
-#define IEEE80211_HT_EXT_CAP_PCO_TIME_SHIFT 1
-#define IEEE80211_HT_EXT_CAP_MCS_FB 0x0300
-#define IEEE80211_HT_EXT_CAP_MCS_FB_SHIFT 8
-#define IEEE80211_HT_EXT_CAP_HTC_SUP 0x0400
-#define IEEE80211_HT_EXT_CAP_RD_RESPONDER 0x0800
-
-/* 802.11n HT capability AMPDU settings (for ampdu_params_info) */
-#define IEEE80211_HT_AMPDU_PARM_FACTOR 0x03
-#define IEEE80211_HT_AMPDU_PARM_DENSITY 0x1C
-#define IEEE80211_HT_AMPDU_PARM_DENSITY_SHIFT 2
-
-/*
- * Maximum length of AMPDU that the STA can receive.
- * Length = 2 ^ (13 + max_ampdu_length_exp) - 1 (octets)
- */
-enum ieee80211_max_ampdu_length_exp {
- IEEE80211_HT_MAX_AMPDU_8K = 0,
- IEEE80211_HT_MAX_AMPDU_16K = 1,
- IEEE80211_HT_MAX_AMPDU_32K = 2,
- IEEE80211_HT_MAX_AMPDU_64K = 3
-};
-
-#define IEEE80211_HT_MAX_AMPDU_FACTOR 13
-
-/* Minimum MPDU start spacing */
-enum ieee80211_min_mpdu_spacing {
- IEEE80211_HT_MPDU_DENSITY_NONE = 0, /* No restriction */
- IEEE80211_HT_MPDU_DENSITY_0_25 = 1, /* 1/4 usec */
- IEEE80211_HT_MPDU_DENSITY_0_5 = 2, /* 1/2 usec */
- IEEE80211_HT_MPDU_DENSITY_1 = 3, /* 1 usec */
- IEEE80211_HT_MPDU_DENSITY_2 = 4, /* 2 usec */
- IEEE80211_HT_MPDU_DENSITY_4 = 5, /* 4 usec */
- IEEE80211_HT_MPDU_DENSITY_8 = 6, /* 8 usec */
- IEEE80211_HT_MPDU_DENSITY_16 = 7 /* 16 usec */
-};
-
-/**
- * struct ieee80211_ht_operation - HT operation IE
- *
- * This structure is the "HT operation element" as
- * described in 802.11n-2009 7.3.2.57
- */
-struct ieee80211_ht_operation {
- u8 primary_chan;
- u8 ht_param;
- __le16 operation_mode;
- __le16 stbc_param;
- u8 basic_set[16];
-} __attribute__ ((packed));
-
-/* for ht_param */
-#define IEEE80211_HT_PARAM_CHA_SEC_OFFSET 0x03
-#define IEEE80211_HT_PARAM_CHA_SEC_NONE 0x00
-#define IEEE80211_HT_PARAM_CHA_SEC_ABOVE 0x01
-#define IEEE80211_HT_PARAM_CHA_SEC_BELOW 0x03
-#define IEEE80211_HT_PARAM_CHAN_WIDTH_ANY 0x04
-#define IEEE80211_HT_PARAM_RIFS_MODE 0x08
-
-/* for operation_mode */
-#define IEEE80211_HT_OP_MODE_PROTECTION 0x0003
-#define IEEE80211_HT_OP_MODE_PROTECTION_NONE 0
-#define IEEE80211_HT_OP_MODE_PROTECTION_NONMEMBER 1
-#define IEEE80211_HT_OP_MODE_PROTECTION_20MHZ 2
-#define IEEE80211_HT_OP_MODE_PROTECTION_NONHT_MIXED 3
-#define IEEE80211_HT_OP_MODE_NON_GF_STA_PRSNT 0x0004
-#define IEEE80211_HT_OP_MODE_NON_HT_STA_PRSNT 0x0010
-
-/* for stbc_param */
-#define IEEE80211_HT_STBC_PARAM_DUAL_BEACON 0x0040
-#define IEEE80211_HT_STBC_PARAM_DUAL_CTS_PROT 0x0080
-#define IEEE80211_HT_STBC_PARAM_STBC_BEACON 0x0100
-#define IEEE80211_HT_STBC_PARAM_LSIG_TXOP_FULLPROT 0x0200
-#define IEEE80211_HT_STBC_PARAM_PCO_ACTIVE 0x0400
-#define IEEE80211_HT_STBC_PARAM_PCO_PHASE 0x0800
-
-
-/* block-ack parameters */
-#define IEEE80211_ADDBA_PARAM_POLICY_MASK 0x0002
-#define IEEE80211_ADDBA_PARAM_TID_MASK 0x003C
-#define IEEE80211_ADDBA_PARAM_BUF_SIZE_MASK 0xFFC0
-#define IEEE80211_DELBA_PARAM_TID_MASK 0xF000
-#define IEEE80211_DELBA_PARAM_INITIATOR_MASK 0x0800
-
-/*
- * A-PMDU buffer sizes
- * According to IEEE802.11n spec size varies from 8K to 64K (in powers of 2)
- */
-#define IEEE80211_MIN_AMPDU_BUF 0x8
-#define IEEE80211_MAX_AMPDU_BUF 0x40
-
-
-/* Spatial Multiplexing Power Save Modes (for capability) */
-#define WLAN_HT_CAP_SM_PS_STATIC 0
-#define WLAN_HT_CAP_SM_PS_DYNAMIC 1
-#define WLAN_HT_CAP_SM_PS_INVALID 2
-#define WLAN_HT_CAP_SM_PS_DISABLED 3
-
-/* for SM power control field lower two bits */
-#define WLAN_HT_SMPS_CONTROL_DISABLED 0
-#define WLAN_HT_SMPS_CONTROL_STATIC 1
-#define WLAN_HT_SMPS_CONTROL_DYNAMIC 3
-
-/* Authentication algorithms */
-#define WLAN_AUTH_OPEN 0
-#define WLAN_AUTH_SHARED_KEY 1
-#define WLAN_AUTH_FT 2
-#define WLAN_AUTH_SAE 3
-#define WLAN_AUTH_LEAP 128
-
-#define WLAN_AUTH_CHALLENGE_LEN 128
-
-#define WLAN_CAPABILITY_ESS (1<<0)
-#define WLAN_CAPABILITY_IBSS (1<<1)
-
-/*
- * A mesh STA sets the ESS and IBSS capability bits to zero.
- * however, this holds true for p2p probe responses (in the p2p_find
- * phase) as well.
- */
-#define WLAN_CAPABILITY_IS_STA_BSS(cap) \
- (!((cap) & (WLAN_CAPABILITY_ESS | WLAN_CAPABILITY_IBSS)))
-
-#define WLAN_CAPABILITY_CF_POLLABLE (1<<2)
-#define WLAN_CAPABILITY_CF_POLL_REQUEST (1<<3)
-#define WLAN_CAPABILITY_PRIVACY (1<<4)
-#define WLAN_CAPABILITY_SHORT_PREAMBLE (1<<5)
-#define WLAN_CAPABILITY_PBCC (1<<6)
-#define WLAN_CAPABILITY_CHANNEL_AGILITY (1<<7)
-
-/* 802.11h */
-#define WLAN_CAPABILITY_SPECTRUM_MGMT (1<<8)
-#define WLAN_CAPABILITY_QOS (1<<9)
-#define WLAN_CAPABILITY_SHORT_SLOT_TIME (1<<10)
-#define WLAN_CAPABILITY_DSSS_OFDM (1<<13)
-/* measurement */
-#define IEEE80211_SPCT_MSR_RPRT_MODE_LATE (1<<0)
-#define IEEE80211_SPCT_MSR_RPRT_MODE_INCAPABLE (1<<1)
-#define IEEE80211_SPCT_MSR_RPRT_MODE_REFUSED (1<<2)
-
-#define IEEE80211_SPCT_MSR_RPRT_TYPE_BASIC 0
-#define IEEE80211_SPCT_MSR_RPRT_TYPE_CCA 1
-#define IEEE80211_SPCT_MSR_RPRT_TYPE_RPI 2
-
-
-/* 802.11g ERP information element */
-#define WLAN_ERP_NON_ERP_PRESENT (1<<0)
-#define WLAN_ERP_USE_PROTECTION (1<<1)
-#define WLAN_ERP_BARKER_PREAMBLE (1<<2)
-
-/* WLAN_ERP_BARKER_PREAMBLE values */
-enum {
- WLAN_ERP_PREAMBLE_SHORT = 0,
- WLAN_ERP_PREAMBLE_LONG = 1,
-};
-
-/* Status codes */
-enum ieee80211_statuscode {
- WLAN_STATUS_SUCCESS = 0,
- WLAN_STATUS_UNSPECIFIED_FAILURE = 1,
- WLAN_STATUS_CAPS_UNSUPPORTED = 10,
- WLAN_STATUS_REASSOC_NO_ASSOC = 11,
- WLAN_STATUS_ASSOC_DENIED_UNSPEC = 12,
- WLAN_STATUS_NOT_SUPPORTED_AUTH_ALG = 13,
- WLAN_STATUS_UNKNOWN_AUTH_TRANSACTION = 14,
- WLAN_STATUS_CHALLENGE_FAIL = 15,
- WLAN_STATUS_AUTH_TIMEOUT = 16,
- WLAN_STATUS_AP_UNABLE_TO_HANDLE_NEW_STA = 17,
- WLAN_STATUS_ASSOC_DENIED_RATES = 18,
- /* 802.11b */
- WLAN_STATUS_ASSOC_DENIED_NOSHORTPREAMBLE = 19,
- WLAN_STATUS_ASSOC_DENIED_NOPBCC = 20,
- WLAN_STATUS_ASSOC_DENIED_NOAGILITY = 21,
- /* 802.11h */
- WLAN_STATUS_ASSOC_DENIED_NOSPECTRUM = 22,
- WLAN_STATUS_ASSOC_REJECTED_BAD_POWER = 23,
- WLAN_STATUS_ASSOC_REJECTED_BAD_SUPP_CHAN = 24,
- /* 802.11g */
- WLAN_STATUS_ASSOC_DENIED_NOSHORTTIME = 25,
- WLAN_STATUS_ASSOC_DENIED_NODSSSOFDM = 26,
- /* 802.11w */
- WLAN_STATUS_ASSOC_REJECTED_TEMPORARILY = 30,
- WLAN_STATUS_ROBUST_MGMT_FRAME_POLICY_VIOLATION = 31,
- /* 802.11i */
- WLAN_STATUS_INVALID_IE = 40,
- WLAN_STATUS_INVALID_GROUP_CIPHER = 41,
- WLAN_STATUS_INVALID_PAIRWISE_CIPHER = 42,
- WLAN_STATUS_INVALID_AKMP = 43,
- WLAN_STATUS_UNSUPP_RSN_VERSION = 44,
- WLAN_STATUS_INVALID_RSN_IE_CAP = 45,
- WLAN_STATUS_CIPHER_SUITE_REJECTED = 46,
- /* 802.11e */
- WLAN_STATUS_UNSPECIFIED_QOS = 32,
- WLAN_STATUS_ASSOC_DENIED_NOBANDWIDTH = 33,
- WLAN_STATUS_ASSOC_DENIED_LOWACK = 34,
- WLAN_STATUS_ASSOC_DENIED_UNSUPP_QOS = 35,
- WLAN_STATUS_REQUEST_DECLINED = 37,
- WLAN_STATUS_INVALID_QOS_PARAM = 38,
- WLAN_STATUS_CHANGE_TSPEC = 39,
- WLAN_STATUS_WAIT_TS_DELAY = 47,
- WLAN_STATUS_NO_DIRECT_LINK = 48,
- WLAN_STATUS_STA_NOT_PRESENT = 49,
- WLAN_STATUS_STA_NOT_QSTA = 50,
- /* 802.11s */
- WLAN_STATUS_ANTI_CLOG_REQUIRED = 76,
- WLAN_STATUS_FCG_NOT_SUPP = 78,
- WLAN_STATUS_STA_NO_TBTT = 78,
-};
-
-
-/* Reason codes */
-enum ieee80211_reasoncode {
- WLAN_REASON_UNSPECIFIED = 1,
- WLAN_REASON_PREV_AUTH_NOT_VALID = 2,
- WLAN_REASON_DEAUTH_LEAVING = 3,
- WLAN_REASON_DISASSOC_DUE_TO_INACTIVITY = 4,
- WLAN_REASON_DISASSOC_AP_BUSY = 5,
- WLAN_REASON_CLASS2_FRAME_FROM_NONAUTH_STA = 6,
- WLAN_REASON_CLASS3_FRAME_FROM_NONASSOC_STA = 7,
- WLAN_REASON_DISASSOC_STA_HAS_LEFT = 8,
- WLAN_REASON_STA_REQ_ASSOC_WITHOUT_AUTH = 9,
- /* 802.11h */
- WLAN_REASON_DISASSOC_BAD_POWER = 10,
- WLAN_REASON_DISASSOC_BAD_SUPP_CHAN = 11,
- /* 802.11i */
- WLAN_REASON_INVALID_IE = 13,
- WLAN_REASON_MIC_FAILURE = 14,
- WLAN_REASON_4WAY_HANDSHAKE_TIMEOUT = 15,
- WLAN_REASON_GROUP_KEY_HANDSHAKE_TIMEOUT = 16,
- WLAN_REASON_IE_DIFFERENT = 17,
- WLAN_REASON_INVALID_GROUP_CIPHER = 18,
- WLAN_REASON_INVALID_PAIRWISE_CIPHER = 19,
- WLAN_REASON_INVALID_AKMP = 20,
- WLAN_REASON_UNSUPP_RSN_VERSION = 21,
- WLAN_REASON_INVALID_RSN_IE_CAP = 22,
- WLAN_REASON_IEEE8021X_FAILED = 23,
- WLAN_REASON_CIPHER_SUITE_REJECTED = 24,
- /* 802.11e */
- WLAN_REASON_DISASSOC_UNSPECIFIED_QOS = 32,
- WLAN_REASON_DISASSOC_QAP_NO_BANDWIDTH = 33,
- WLAN_REASON_DISASSOC_LOW_ACK = 34,
- WLAN_REASON_DISASSOC_QAP_EXCEED_TXOP = 35,
- WLAN_REASON_QSTA_LEAVE_QBSS = 36,
- WLAN_REASON_QSTA_NOT_USE = 37,
- WLAN_REASON_QSTA_REQUIRE_SETUP = 38,
- WLAN_REASON_QSTA_TIMEOUT = 39,
- WLAN_REASON_QSTA_CIPHER_NOT_SUPP = 45,
- /* 802.11s */
- WLAN_REASON_MESH_PEER_CANCELED = 52,
- WLAN_REASON_MESH_MAX_PEERS = 53,
- WLAN_REASON_MESH_CONFIG = 54,
- WLAN_REASON_MESH_CLOSE = 55,
- WLAN_REASON_MESH_MAX_RETRIES = 56,
- WLAN_REASON_MESH_CONFIRM_TIMEOUT = 57,
- WLAN_REASON_MESH_INVALID_GTK = 58,
- WLAN_REASON_MESH_INCONSISTENT_PARAM = 59,
- WLAN_REASON_MESH_INVALID_SECURITY = 60,
- WLAN_REASON_MESH_PATH_ERROR = 61,
- WLAN_REASON_MESH_PATH_NOFORWARD = 62,
- WLAN_REASON_MESH_PATH_DEST_UNREACHABLE = 63,
- WLAN_REASON_MAC_EXISTS_IN_MBSS = 64,
- WLAN_REASON_MESH_CHAN_REGULATORY = 65,
- WLAN_REASON_MESH_CHAN = 66,
-};
-
-
-/* Information Element IDs */
-enum ieee80211_eid {
- WLAN_EID_SSID = 0,
- WLAN_EID_SUPP_RATES = 1,
- WLAN_EID_FH_PARAMS = 2,
- WLAN_EID_DS_PARAMS = 3,
- WLAN_EID_CF_PARAMS = 4,
- WLAN_EID_TIM = 5,
- WLAN_EID_IBSS_PARAMS = 6,
- WLAN_EID_CHALLENGE = 16,
-
- WLAN_EID_COUNTRY = 7,
- WLAN_EID_HP_PARAMS = 8,
- WLAN_EID_HP_TABLE = 9,
- WLAN_EID_REQUEST = 10,
-
- WLAN_EID_QBSS_LOAD = 11,
- WLAN_EID_EDCA_PARAM_SET = 12,
- WLAN_EID_TSPEC = 13,
- WLAN_EID_TCLAS = 14,
- WLAN_EID_SCHEDULE = 15,
- WLAN_EID_TS_DELAY = 43,
- WLAN_EID_TCLAS_PROCESSING = 44,
- WLAN_EID_QOS_CAPA = 46,
- /* 802.11z */
- WLAN_EID_LINK_ID = 101,
- /* 802.11s */
- WLAN_EID_MESH_CONFIG = 113,
- WLAN_EID_MESH_ID = 114,
- WLAN_EID_LINK_METRIC_REPORT = 115,
- WLAN_EID_CONGESTION_NOTIFICATION = 116,
- WLAN_EID_PEER_MGMT = 117,
- WLAN_EID_CHAN_SWITCH_PARAM = 118,
- WLAN_EID_MESH_AWAKE_WINDOW = 119,
- WLAN_EID_BEACON_TIMING = 120,
- WLAN_EID_MCCAOP_SETUP_REQ = 121,
- WLAN_EID_MCCAOP_SETUP_RESP = 122,
- WLAN_EID_MCCAOP_ADVERT = 123,
- WLAN_EID_MCCAOP_TEARDOWN = 124,
- WLAN_EID_GANN = 125,
- WLAN_EID_RANN = 126,
- WLAN_EID_PREQ = 130,
- WLAN_EID_PREP = 131,
- WLAN_EID_PERR = 132,
- WLAN_EID_PXU = 137,
- WLAN_EID_PXUC = 138,
- WLAN_EID_AUTH_MESH_PEER_EXCH = 139,
- WLAN_EID_MIC = 140,
-
- WLAN_EID_PWR_CONSTRAINT = 32,
- WLAN_EID_PWR_CAPABILITY = 33,
- WLAN_EID_TPC_REQUEST = 34,
- WLAN_EID_TPC_REPORT = 35,
- WLAN_EID_SUPPORTED_CHANNELS = 36,
- WLAN_EID_CHANNEL_SWITCH = 37,
- WLAN_EID_MEASURE_REQUEST = 38,
- WLAN_EID_MEASURE_REPORT = 39,
- WLAN_EID_QUIET = 40,
- WLAN_EID_IBSS_DFS = 41,
-
- WLAN_EID_ERP_INFO = 42,
- WLAN_EID_EXT_SUPP_RATES = 50,
-
- WLAN_EID_HT_CAPABILITY = 45,
- WLAN_EID_HT_OPERATION = 61,
-
- WLAN_EID_RSN = 48,
- WLAN_EID_MMIE = 76,
- WLAN_EID_WPA = 221,
- WLAN_EID_GENERIC = 221,
- WLAN_EID_VENDOR_SPECIFIC = 221,
- WLAN_EID_QOS_PARAMETER = 222,
-
- WLAN_EID_AP_CHAN_REPORT = 51,
- WLAN_EID_NEIGHBOR_REPORT = 52,
- WLAN_EID_RCPI = 53,
- WLAN_EID_BSS_AVG_ACCESS_DELAY = 63,
- WLAN_EID_ANTENNA_INFO = 64,
- WLAN_EID_RSNI = 65,
- WLAN_EID_MEASUREMENT_PILOT_TX_INFO = 66,
- WLAN_EID_BSS_AVAILABLE_CAPACITY = 67,
- WLAN_EID_BSS_AC_ACCESS_DELAY = 68,
- WLAN_EID_RRM_ENABLED_CAPABILITIES = 70,
- WLAN_EID_MULTIPLE_BSSID = 71,
- WLAN_EID_BSS_COEX_2040 = 72,
- WLAN_EID_OVERLAP_BSS_SCAN_PARAM = 74,
- WLAN_EID_EXT_CAPABILITY = 127,
-
- WLAN_EID_MOBILITY_DOMAIN = 54,
- WLAN_EID_FAST_BSS_TRANSITION = 55,
- WLAN_EID_TIMEOUT_INTERVAL = 56,
- WLAN_EID_RIC_DATA = 57,
- WLAN_EID_RIC_DESCRIPTOR = 75,
-
- WLAN_EID_DSE_REGISTERED_LOCATION = 58,
- WLAN_EID_SUPPORTED_REGULATORY_CLASSES = 59,
- WLAN_EID_EXT_CHANSWITCH_ANN = 60,
-};
-
-/* Action category code */
-enum ieee80211_category {
- WLAN_CATEGORY_SPECTRUM_MGMT = 0,
- WLAN_CATEGORY_QOS = 1,
- WLAN_CATEGORY_DLS = 2,
- WLAN_CATEGORY_BACK = 3,
- WLAN_CATEGORY_PUBLIC = 4,
- WLAN_CATEGORY_HT = 7,
- WLAN_CATEGORY_SA_QUERY = 8,
- WLAN_CATEGORY_PROTECTED_DUAL_OF_ACTION = 9,
- WLAN_CATEGORY_TDLS = 12,
- WLAN_CATEGORY_MESH_ACTION = 13,
- WLAN_CATEGORY_MULTIHOP_ACTION = 14,
- WLAN_CATEGORY_SELF_PROTECTED = 15,
- WLAN_CATEGORY_WMM = 17,
- WLAN_CATEGORY_VENDOR_SPECIFIC_PROTECTED = 126,
- WLAN_CATEGORY_VENDOR_SPECIFIC = 127,
-};
-
-/* SPECTRUM_MGMT action code */
-enum ieee80211_spectrum_mgmt_actioncode {
- WLAN_ACTION_SPCT_MSR_REQ = 0,
- WLAN_ACTION_SPCT_MSR_RPRT = 1,
- WLAN_ACTION_SPCT_TPC_REQ = 2,
- WLAN_ACTION_SPCT_TPC_RPRT = 3,
- WLAN_ACTION_SPCT_CHL_SWITCH = 4,
-};
-
-/* HT action codes */
-enum ieee80211_ht_actioncode {
- WLAN_HT_ACTION_NOTIFY_CHANWIDTH = 0,
- WLAN_HT_ACTION_SMPS = 1,
- WLAN_HT_ACTION_PSMP = 2,
- WLAN_HT_ACTION_PCO_PHASE = 3,
- WLAN_HT_ACTION_CSI = 4,
- WLAN_HT_ACTION_NONCOMPRESSED_BF = 5,
- WLAN_HT_ACTION_COMPRESSED_BF = 6,
- WLAN_HT_ACTION_ASEL_IDX_FEEDBACK = 7,
-};
-
-/* Self Protected Action codes */
-enum ieee80211_self_protected_actioncode {
- WLAN_SP_RESERVED = 0,
- WLAN_SP_MESH_PEERING_OPEN = 1,
- WLAN_SP_MESH_PEERING_CONFIRM = 2,
- WLAN_SP_MESH_PEERING_CLOSE = 3,
- WLAN_SP_MGK_INFORM = 4,
- WLAN_SP_MGK_ACK = 5,
-};
-
-/* Mesh action codes */
-enum ieee80211_mesh_actioncode {
- WLAN_MESH_ACTION_LINK_METRIC_REPORT,
- WLAN_MESH_ACTION_HWMP_PATH_SELECTION,
- WLAN_MESH_ACTION_GATE_ANNOUNCEMENT,
- WLAN_MESH_ACTION_CONGESTION_CONTROL_NOTIFICATION,
- WLAN_MESH_ACTION_MCCA_SETUP_REQUEST,
- WLAN_MESH_ACTION_MCCA_SETUP_REPLY,
- WLAN_MESH_ACTION_MCCA_ADVERTISEMENT_REQUEST,
- WLAN_MESH_ACTION_MCCA_ADVERTISEMENT,
- WLAN_MESH_ACTION_MCCA_TEARDOWN,
- WLAN_MESH_ACTION_TBTT_ADJUSTMENT_REQUEST,
- WLAN_MESH_ACTION_TBTT_ADJUSTMENT_RESPONSE,
-};
-
-/* Security key length */
-enum ieee80211_key_len {
- WLAN_KEY_LEN_WEP40 = 5,
- WLAN_KEY_LEN_WEP104 = 13,
- WLAN_KEY_LEN_CCMP = 16,
- WLAN_KEY_LEN_TKIP = 32,
- WLAN_KEY_LEN_AES_CMAC = 16,
-};
-
-/* Public action codes */
-enum ieee80211_pub_actioncode {
- WLAN_PUB_ACTION_TDLS_DISCOVER_RES = 14,
-};
-
-/* TDLS action codes */
-enum ieee80211_tdls_actioncode {
- WLAN_TDLS_SETUP_REQUEST = 0,
- WLAN_TDLS_SETUP_RESPONSE = 1,
- WLAN_TDLS_SETUP_CONFIRM = 2,
- WLAN_TDLS_TEARDOWN = 3,
- WLAN_TDLS_PEER_TRAFFIC_INDICATION = 4,
- WLAN_TDLS_CHANNEL_SWITCH_REQUEST = 5,
- WLAN_TDLS_CHANNEL_SWITCH_RESPONSE = 6,
- WLAN_TDLS_PEER_PSM_REQUEST = 7,
- WLAN_TDLS_PEER_PSM_RESPONSE = 8,
- WLAN_TDLS_PEER_TRAFFIC_RESPONSE = 9,
- WLAN_TDLS_DISCOVERY_REQUEST = 10,
-};
-
-/*
- * TDLS capabililites to be enabled in the 5th byte of the
- * @WLAN_EID_EXT_CAPABILITY information element
- */
-#define WLAN_EXT_CAPA5_TDLS_ENABLED BIT(5)
-#define WLAN_EXT_CAPA5_TDLS_PROHIBITED BIT(6)
-
-/* TDLS specific payload type in the LLC/SNAP header */
-#define WLAN_TDLS_SNAP_RFTYPE 0x2
-
-/**
- * enum - mesh synchronization method identifier
- *
- * @IEEE80211_SYNC_METHOD_NEIGHBOR_OFFSET: the default synchronization method
- * @IEEE80211_SYNC_METHOD_VENDOR: a vendor specific synchronization method
- * that will be specified in a vendor specific information element
- */
-enum {
- IEEE80211_SYNC_METHOD_NEIGHBOR_OFFSET = 1,
- IEEE80211_SYNC_METHOD_VENDOR = 255,
-};
-
-/**
- * enum - mesh path selection protocol identifier
- *
- * @IEEE80211_PATH_PROTOCOL_HWMP: the default path selection protocol
- * @IEEE80211_PATH_PROTOCOL_VENDOR: a vendor specific protocol that will
- * be specified in a vendor specific information element
- */
-enum {
- IEEE80211_PATH_PROTOCOL_HWMP = 1,
- IEEE80211_PATH_PROTOCOL_VENDOR = 255,
-};
-
-/**
- * enum - mesh path selection metric identifier
- *
- * @IEEE80211_PATH_METRIC_AIRTIME: the default path selection metric
- * @IEEE80211_PATH_METRIC_VENDOR: a vendor specific metric that will be
- * specified in a vendor specific information element
- */
-enum {
- IEEE80211_PATH_METRIC_AIRTIME = 1,
- IEEE80211_PATH_METRIC_VENDOR = 255,
-};
-
-
-/*
- * IEEE 802.11-2007 7.3.2.9 Country information element
- *
- * Minimum length is 8 octets, ie len must be evenly
- * divisible by 2
- */
-
-/* Although the spec says 8 I'm seeing 6 in practice */
-#define IEEE80211_COUNTRY_IE_MIN_LEN 6
-
-/* The Country String field of the element shall be 3 octets in length */
-#define IEEE80211_COUNTRY_STRING_LEN 3
-
-/*
- * For regulatory extension stuff see IEEE 802.11-2007
- * Annex I (page 1141) and Annex J (page 1147). Also
- * review 7.3.2.9.
- *
- * When dot11RegulatoryClassesRequired is true and the
- * first_channel/reg_extension_id is >= 201 then the IE
- * compromises of the 'ext' struct represented below:
- *
- * - Regulatory extension ID - when generating IE this just needs
- * to be monotonically increasing for each triplet passed in
- * the IE
- * - Regulatory class - index into set of rules
- * - Coverage class - index into air propagation time (Table 7-27),
- * in microseconds, you can compute the air propagation time from
- * the index by multiplying by 3, so index 10 yields a propagation
- * of 10 us. Valid values are 0-31, values 32-255 are not defined
- * yet. A value of 0 inicates air propagation of <= 1 us.
- *
- * See also Table I.2 for Emission limit sets and table
- * I.3 for Behavior limit sets. Table J.1 indicates how to map
- * a reg_class to an emission limit set and behavior limit set.
- */
-#define IEEE80211_COUNTRY_EXTENSION_ID 201
-
-/*
- * Channels numbers in the IE must be monotonically increasing
- * if dot11RegulatoryClassesRequired is not true.
- *
- * If dot11RegulatoryClassesRequired is true consecutive
- * subband triplets following a regulatory triplet shall
- * have monotonically increasing first_channel number fields.
- *
- * Channel numbers shall not overlap.
- *
- * Note that max_power is signed.
- */
-struct ieee80211_country_ie_triplet {
- union {
- struct {
- u8 first_channel;
- u8 num_channels;
- s8 max_power;
- } __attribute__ ((packed)) chans;
- struct {
- u8 reg_extension_id;
- u8 reg_class;
- u8 coverage_class;
- } __attribute__ ((packed)) ext;
- };
-} __attribute__ ((packed));
-
-enum ieee80211_timeout_interval_type {
- WLAN_TIMEOUT_REASSOC_DEADLINE = 1 /* 802.11r */,
- WLAN_TIMEOUT_KEY_LIFETIME = 2 /* 802.11r */,
- WLAN_TIMEOUT_ASSOC_COMEBACK = 3 /* 802.11w */,
-};
-
-/* BACK action code */
-enum ieee80211_back_actioncode {
- WLAN_ACTION_ADDBA_REQ = 0,
- WLAN_ACTION_ADDBA_RESP = 1,
- WLAN_ACTION_DELBA = 2,
-};
-
-/* BACK (block-ack) parties */
-enum ieee80211_back_parties {
- WLAN_BACK_RECIPIENT = 0,
- WLAN_BACK_INITIATOR = 1,
-};
-
-/* SA Query action */
-enum ieee80211_sa_query_action {
- WLAN_ACTION_SA_QUERY_REQUEST = 0,
- WLAN_ACTION_SA_QUERY_RESPONSE = 1,
-};
-
-
-/* cipher suite selectors */
-#define WLAN_CIPHER_SUITE_USE_GROUP 0x000FAC00
-#define WLAN_CIPHER_SUITE_WEP40 0x000FAC01
-#define WLAN_CIPHER_SUITE_TKIP 0x000FAC02
-/* reserved: 0x000FAC03 */
-#define WLAN_CIPHER_SUITE_CCMP 0x000FAC04
-#define WLAN_CIPHER_SUITE_WEP104 0x000FAC05
-#define WLAN_CIPHER_SUITE_AES_CMAC 0x000FAC06
-
-#define WLAN_CIPHER_SUITE_SMS4 0x00147201
-
-/* AKM suite selectors */
-#define WLAN_AKM_SUITE_8021X 0x000FAC01
-#define WLAN_AKM_SUITE_PSK 0x000FAC02
-#define WLAN_AKM_SUITE_SAE 0x000FAC08
-#define WLAN_AKM_SUITE_FT_OVER_SAE 0x000FAC09
-
-#define WLAN_MAX_KEY_LEN 32
-
-#define WLAN_PMKID_LEN 16
-
-#define WLAN_OUI_WFA 0x506f9a
-#define WLAN_OUI_TYPE_WFA_P2P 9
-
-/*
- * WMM/802.11e Tspec Element
- */
-#define IEEE80211_WMM_IE_TSPEC_TID_MASK 0x0F
-#define IEEE80211_WMM_IE_TSPEC_TID_SHIFT 1
-
-enum ieee80211_tspec_status_code {
- IEEE80211_TSPEC_STATUS_ADMISS_ACCEPTED = 0,
- IEEE80211_TSPEC_STATUS_ADDTS_INVAL_PARAMS = 0x1,
-};
-
-struct ieee80211_tspec_ie {
- u8 element_id;
- u8 len;
- u8 oui[3];
- u8 oui_type;
- u8 oui_subtype;
- u8 version;
- __le16 tsinfo;
- u8 tsinfo_resvd;
- __le16 nominal_msdu;
- __le16 max_msdu;
- __le32 min_service_int;
- __le32 max_service_int;
- __le32 inactivity_int;
- __le32 suspension_int;
- __le32 service_start_time;
- __le32 min_data_rate;
- __le32 mean_data_rate;
- __le32 peak_data_rate;
- __le32 max_burst_size;
- __le32 delay_bound;
- __le32 min_phy_rate;
- __le16 sba;
- __le16 medium_time;
-} __packed;
-
-/**
- * ieee80211_get_qos_ctl - get pointer to qos control bytes
- * @hdr: the frame
- *
- * The qos ctrl bytes come after the frame_control, duration, seq_num
- * and 3 or 4 addresses of length ETH_ALEN.
- * 3 addr: 2 + 2 + 2 + 3*6 = 24
- * 4 addr: 2 + 2 + 2 + 4*6 = 30
- */
-static inline u8 *ieee80211_get_qos_ctl(struct ieee80211_hdr *hdr)
-{
- if (ieee80211_has_a4(hdr->frame_control))
- return (u8 *)hdr + 30;
- else
- return (u8 *)hdr + 24;
-}
-
-/**
- * ieee80211_get_SA - get pointer to SA
- * @hdr: the frame
- *
- * Given an 802.11 frame, this function returns the offset
- * to the source address (SA). It does not verify that the
- * header is long enough to contain the address, and the
- * header must be long enough to contain the frame control
- * field.
- */
-static inline u8 *ieee80211_get_SA(struct ieee80211_hdr *hdr)
-{
- if (ieee80211_has_a4(hdr->frame_control))
- return hdr->addr4;
- if (ieee80211_has_fromds(hdr->frame_control))
- return hdr->addr3;
- return hdr->addr2;
-}
-
-/**
- * ieee80211_get_DA - get pointer to DA
- * @hdr: the frame
- *
- * Given an 802.11 frame, this function returns the offset
- * to the destination address (DA). It does not verify that
- * the header is long enough to contain the address, and the
- * header must be long enough to contain the frame control
- * field.
- */
-static inline u8 *ieee80211_get_DA(struct ieee80211_hdr *hdr)
-{
- if (ieee80211_has_tods(hdr->frame_control))
- return hdr->addr3;
- else
- return hdr->addr1;
-}
-
-/**
- * ieee80211_is_robust_mgmt_frame - check if frame is a robust management frame
- * @hdr: the frame (buffer must include at least the first octet of payload)
- */
-static inline bool ieee80211_is_robust_mgmt_frame(struct ieee80211_hdr *hdr)
-{
- if (ieee80211_is_disassoc(hdr->frame_control) ||
- ieee80211_is_deauth(hdr->frame_control))
- return true;
-
- if (ieee80211_is_action(hdr->frame_control)) {
- u8 *category;
-
- /*
- * Action frames, excluding Public Action frames, are Robust
- * Management Frames. However, if we are looking at a Protected
- * frame, skip the check since the data may be encrypted and
- * the frame has already been found to be a Robust Management
- * Frame (by the other end).
- */
- if (ieee80211_has_protected(hdr->frame_control))
- return true;
- category = ((u8 *) hdr) + 24;
- return *category != WLAN_CATEGORY_PUBLIC &&
- *category != WLAN_CATEGORY_HT &&
- *category != WLAN_CATEGORY_SELF_PROTECTED &&
- *category != WLAN_CATEGORY_VENDOR_SPECIFIC;
- }
-
- return false;
-}
-
-/**
- * ieee80211_is_public_action - check if frame is a public action frame
- * @hdr: the frame
- * @len: length of the frame
- */
-static inline bool ieee80211_is_public_action(struct ieee80211_hdr *hdr,
- size_t len)
-{
- struct ieee80211_mgmt *mgmt = (void *)hdr;
-
- if (len < IEEE80211_MIN_ACTION_SIZE)
- return false;
- if (!ieee80211_is_action(hdr->frame_control))
- return false;
- return mgmt->u.action.category == WLAN_CATEGORY_PUBLIC;
-}
-
-/**
- * ieee80211_fhss_chan_to_freq - get channel frequency
- * @channel: the FHSS channel
- *
- * Convert IEEE802.11 FHSS channel to frequency (MHz)
- * Ref IEEE 802.11-2007 section 14.6
- */
-static inline int ieee80211_fhss_chan_to_freq(int channel)
-{
- if ((channel > 1) && (channel < 96))
- return channel + 2400;
- else
- return -1;
-}
-
-/**
- * ieee80211_freq_to_fhss_chan - get channel
- * @freq: the channels frequency
- *
- * Convert frequency (MHz) to IEEE802.11 FHSS channel
- * Ref IEEE 802.11-2007 section 14.6
- */
-static inline int ieee80211_freq_to_fhss_chan(int freq)
-{
- if ((freq > 2401) && (freq < 2496))
- return freq - 2400;
- else
- return -1;
-}
-
-/**
- * ieee80211_dsss_chan_to_freq - get channel center frequency
- * @channel: the DSSS channel
- *
- * Convert IEEE802.11 DSSS channel to the center frequency (MHz).
- * Ref IEEE 802.11-2007 section 15.6
- */
-static inline int ieee80211_dsss_chan_to_freq(int channel)
-{
- if ((channel > 0) && (channel < 14))
- return 2407 + (channel * 5);
- else if (channel == 14)
- return 2484;
- else
- return -1;
-}
-
-/**
- * ieee80211_freq_to_dsss_chan - get channel
- * @freq: the frequency
- *
- * Convert frequency (MHz) to IEEE802.11 DSSS channel
- * Ref IEEE 802.11-2007 section 15.6
- *
- * This routine selects the channel with the closest center frequency.
- */
-static inline int ieee80211_freq_to_dsss_chan(int freq)
-{
- if ((freq >= 2410) && (freq < 2475))
- return (freq - 2405) / 5;
- else if ((freq >= 2482) && (freq < 2487))
- return 14;
- else
- return -1;
-}
-
-/* Convert IEEE802.11 HR DSSS channel to frequency (MHz) and back
- * Ref IEEE 802.11-2007 section 18.4.6.2
- *
- * The channels and frequencies are the same as those defined for DSSS
- */
-#define ieee80211_hr_chan_to_freq(chan) ieee80211_dsss_chan_to_freq(chan)
-#define ieee80211_freq_to_hr_chan(freq) ieee80211_freq_to_dsss_chan(freq)
-
-/* Convert IEEE802.11 ERP channel to frequency (MHz) and back
- * Ref IEEE 802.11-2007 section 19.4.2
- */
-#define ieee80211_erp_chan_to_freq(chan) ieee80211_hr_chan_to_freq(chan)
-#define ieee80211_freq_to_erp_chan(freq) ieee80211_freq_to_hr_chan(freq)
-
-/**
- * ieee80211_ofdm_chan_to_freq - get channel center frequency
- * @s_freq: starting frequency == (dotChannelStartingFactor/2) MHz
- * @channel: the OFDM channel
- *
- * Convert IEEE802.11 OFDM channel to center frequency (MHz)
- * Ref IEEE 802.11-2007 section 17.3.8.3.2
- */
-static inline int ieee80211_ofdm_chan_to_freq(int s_freq, int channel)
-{
- if ((channel > 0) && (channel <= 200) &&
- (s_freq >= 4000))
- return s_freq + (channel * 5);
- else
- return -1;
-}
-
-/**
- * ieee80211_freq_to_ofdm_channel - get channel
- * @s_freq: starting frequency == (dotChannelStartingFactor/2) MHz
- * @freq: the frequency
- *
- * Convert frequency (MHz) to IEEE802.11 OFDM channel
- * Ref IEEE 802.11-2007 section 17.3.8.3.2
- *
- * This routine selects the channel with the closest center frequency.
- */
-static inline int ieee80211_freq_to_ofdm_chan(int s_freq, int freq)
-{
- if ((freq > (s_freq + 2)) && (freq <= (s_freq + 1202)) &&
- (s_freq >= 4000))
- return (freq + 2 - s_freq) / 5;
- else
- return -1;
-}
-
-/**
- * ieee80211_tu_to_usec - convert time units (TU) to microseconds
- * @tu: the TUs
- */
-static inline unsigned long ieee80211_tu_to_usec(unsigned long tu)
-{
- return 1024 * tu;
-}
-
-/**
- * ieee80211_check_tim - check if AID bit is set in TIM
- * @tim: the TIM IE
- * @tim_len: length of the TIM IE
- * @aid: the AID to look for
- */
-static inline bool ieee80211_check_tim(struct ieee80211_tim_ie *tim,
- u8 tim_len, u16 aid)
-{
- u8 mask;
- u8 indexn0, indexn1, indexn2;
-
- if (unlikely(!tim || tim_len < sizeof(*tim)))
- return false;
-
- aid &= 0x3fff;
- indexn0 = aid / 8;
- mask = 1 << (aid & 7);
-
- indexn1 = tim->bitmap_ctrl & 0xfe;
- indexn2 = tim_len + indexn1 - 4;
-
- if (indexn0 < indexn1 || indexn0 > indexn2)
- return false;
-
- indexn0 -= indexn1;
-
- return !!(tim->virtual_map[indexn0] & mask);
-}
-
-#endif /* __LINUX_IEEE80211_H */
diff --git a/carl9170fw/include/linux/types.h b/carl9170fw/include/linux/types.h
deleted file mode 100644
index 3f45f0f..0000000
--- a/carl9170fw/include/linux/types.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#ifndef __LINUX_TYPES_H
-#define __LINUX_TYPES_H
-
-#include <stdint.h>
-#include <stdbool.h>
-#include <stdlib.h>
-#include <sys/param.h>
-
-#if BYTE_ORDER == BIG_ENDIAN
-#error "big endian is not supported by target"
-#endif
-
-typedef uint16_t __le16;
-typedef uint32_t __le32;
-typedef uint64_t __le64;
-
-typedef uint8_t u8;
-typedef uint8_t __u8;
-typedef uint16_t u16;
-typedef uint16_t __u16;
-typedef uint32_t u32;
-typedef uint32_t __u32;
-typedef uint64_t u64;
-typedef uint64_t __u64;
-typedef int8_t s8;
-typedef int8_t __s8;
-typedef int16_t s16;
-typedef int16_t __s16;
-typedef int32_t s32;
-typedef int32_t __s32;
-typedef int64_t s64;
-typedef int64_t __s64;
-
-#define cpu_to_le16(x) ((__le16)(uint16_t)(x))
-#define le16_to_cpu(x) ((uint16_t)(__le16)(x))
-#define cpu_to_le32(x) ((__le32)(uint32_t)(x))
-#define le32_to_cpu(x) ((uint32_t)(__le32)(x))
-#define cpu_to_le64(x) ((__le64)(uint64_t)(x))
-#define le64_to_cpu(x) ((uint64_t)(__le64)(x))
-
-typedef uint16_t __be16;
-typedef uint32_t __be32;
-typedef uint64_t __be64;
-
-#endif /* __LINUX_TYPES_H */
diff --git a/carl9170fw/include/shared/eeprom.h b/carl9170fw/include/shared/eeprom.h
deleted file mode 100644
index 7cff40a..0000000
--- a/carl9170fw/include/shared/eeprom.h
+++ /dev/null
@@ -1,216 +0,0 @@
-/*
- * Shared Atheros AR9170 Header
- *
- * EEPROM layout
- *
- * Copyright 2008, Johannes Berg <johannes@sipsolutions.net>
- *
- * 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; see the file COPYING. If not, see
- * http://www.gnu.org/licenses/.
- *
- * This file incorporates work covered by the following copyright and
- * permission notice:
- * Copyright (c) 2007-2008 Atheros Communications, Inc.
- *
- * 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.
- */
-#ifndef __CARL9170_SHARED_EEPROM_H
-#define __CARL9170_SHARED_EEPROM_H
-
-#define AR9170_EEPROM_START 0x1600
-
-#define AR5416_MAX_CHAINS 2
-#define AR5416_MODAL_SPURS 5
-
-struct ar9170_eeprom_modal {
- __le32 antCtrlChain[AR5416_MAX_CHAINS];
- __le32 antCtrlCommon;
- s8 antennaGainCh[AR5416_MAX_CHAINS];
- u8 switchSettling;
- u8 txRxAttenCh[AR5416_MAX_CHAINS];
- u8 rxTxMarginCh[AR5416_MAX_CHAINS];
- s8 adcDesiredSize;
- s8 pgaDesiredSize;
- u8 xlnaGainCh[AR5416_MAX_CHAINS];
- u8 txEndToXpaOff;
- u8 txEndToRxOn;
- u8 txFrameToXpaOn;
- u8 thresh62;
- s8 noiseFloorThreshCh[AR5416_MAX_CHAINS];
- u8 xpdGain;
- u8 xpd;
- s8 iqCalICh[AR5416_MAX_CHAINS];
- s8 iqCalQCh[AR5416_MAX_CHAINS];
- u8 pdGainOverlap;
- u8 ob;
- u8 db;
- u8 xpaBiasLvl;
- u8 pwrDecreaseFor2Chain;
- u8 pwrDecreaseFor3Chain;
- u8 txFrameToDataStart;
- u8 txFrameToPaOn;
- u8 ht40PowerIncForPdadc;
- u8 bswAtten[AR5416_MAX_CHAINS];
- u8 bswMargin[AR5416_MAX_CHAINS];
- u8 swSettleHt40;
- u8 reserved[22];
- struct spur_channel {
- __le16 spurChan;
- u8 spurRangeLow;
- u8 spurRangeHigh;
- } __packed spur_channels[AR5416_MODAL_SPURS];
-} __packed;
-
-#define AR5416_NUM_PD_GAINS 4
-#define AR5416_PD_GAIN_ICEPTS 5
-
-struct ar9170_calibration_data_per_freq {
- u8 pwr_pdg[AR5416_NUM_PD_GAINS][AR5416_PD_GAIN_ICEPTS];
- u8 vpd_pdg[AR5416_NUM_PD_GAINS][AR5416_PD_GAIN_ICEPTS];
-} __packed;
-
-#define AR5416_NUM_5G_CAL_PIERS 8
-#define AR5416_NUM_2G_CAL_PIERS 4
-
-#define AR5416_NUM_5G_TARGET_PWRS 8
-#define AR5416_NUM_2G_CCK_TARGET_PWRS 3
-#define AR5416_NUM_2G_OFDM_TARGET_PWRS 4
-#define AR5416_MAX_NUM_TGT_PWRS 8
-
-struct ar9170_calibration_target_power_legacy {
- u8 freq;
- u8 power[4];
-} __packed;
-
-struct ar9170_calibration_target_power_ht {
- u8 freq;
- u8 power[8];
-} __packed;
-
-#define AR5416_NUM_CTLS 24
-
-struct ar9170_calctl_edges {
- u8 channel;
-#define AR9170_CALCTL_EDGE_FLAGS 0xC0
- u8 power_flags;
-} __packed;
-
-#define AR5416_NUM_BAND_EDGES 8
-
-struct ar9170_calctl_data {
- struct ar9170_calctl_edges
- control_edges[AR5416_MAX_CHAINS][AR5416_NUM_BAND_EDGES];
-} __packed;
-
-struct ar9170_eeprom {
- __le16 length;
- __le16 checksum;
- __le16 version;
- u8 operating_flags;
-#define AR9170_OPFLAG_5GHZ 1
-#define AR9170_OPFLAG_2GHZ 2
- u8 misc;
- __le16 reg_domain[2];
- u8 mac_address[6];
- u8 rx_mask;
- u8 tx_mask;
- __le16 rf_silent;
- __le16 bluetooth_options;
- __le16 device_capabilities;
- __le32 build_number;
- u8 deviceType;
- u8 reserved[33];
-
- u8 customer_data[64];
-
- struct ar9170_eeprom_modal
- modal_header[2];
-
- u8 cal_freq_pier_5G[AR5416_NUM_5G_CAL_PIERS];
- u8 cal_freq_pier_2G[AR5416_NUM_2G_CAL_PIERS];
-
- struct ar9170_calibration_data_per_freq
- cal_pier_data_5G[AR5416_MAX_CHAINS][AR5416_NUM_5G_CAL_PIERS],
- cal_pier_data_2G[AR5416_MAX_CHAINS][AR5416_NUM_2G_CAL_PIERS];
-
- /* power calibration data */
- struct ar9170_calibration_target_power_legacy
- cal_tgt_pwr_5G[AR5416_NUM_5G_TARGET_PWRS];
- struct ar9170_calibration_target_power_ht
- cal_tgt_pwr_5G_ht20[AR5416_NUM_5G_TARGET_PWRS],
- cal_tgt_pwr_5G_ht40[AR5416_NUM_5G_TARGET_PWRS];
-
- struct ar9170_calibration_target_power_legacy
- cal_tgt_pwr_2G_cck[AR5416_NUM_2G_CCK_TARGET_PWRS],
- cal_tgt_pwr_2G_ofdm[AR5416_NUM_2G_OFDM_TARGET_PWRS];
- struct ar9170_calibration_target_power_ht
- cal_tgt_pwr_2G_ht20[AR5416_NUM_2G_OFDM_TARGET_PWRS],
- cal_tgt_pwr_2G_ht40[AR5416_NUM_2G_OFDM_TARGET_PWRS];
-
- /* conformance testing limits */
- u8 ctl_index[AR5416_NUM_CTLS];
- struct ar9170_calctl_data
- ctl_data[AR5416_NUM_CTLS];
-
- u8 pad;
- __le16 subsystem_id;
-} __packed;
-
-#define AR9170_LED_MODE_POWER_ON 0x0001
-#define AR9170_LED_MODE_RESERVED 0x0002
-#define AR9170_LED_MODE_DISABLE_STATE 0x0004
-#define AR9170_LED_MODE_OFF_IN_PSM 0x0008
-
-/* AR9170_LED_MODE BIT is set */
-#define AR9170_LED_MODE_FREQUENCY_S 4
-#define AR9170_LED_MODE_FREQUENCY 0x0030
-#define AR9170_LED_MODE_FREQUENCY_1HZ 0x0000
-#define AR9170_LED_MODE_FREQUENCY_0_5HZ 0x0010
-#define AR9170_LED_MODE_FREQUENCY_0_25HZ 0x0020
-#define AR9170_LED_MODE_FREQUENCY_0_125HZ 0x0030
-
-/* AR9170_LED_MODE BIT is not set */
-#define AR9170_LED_MODE_CONN_STATE_S 4
-#define AR9170_LED_MODE_CONN_STATE 0x0030
-#define AR9170_LED_MODE_CONN_STATE_FORCE_OFF 0x0000
-#define AR9170_LED_MODE_CONN_STATE_FORCE_ON 0x0010
-/* Idle off / Active on */
-#define AR9170_LED_MODE_CONN_STATE_IOFF_AON 0x0020
-/* Idle on / Active off */
-#define AR9170_LED_MODE_CONN_STATE_ION_AOFF 0x0010
-
-#define AR9170_LED_MODE_MODE 0x0040
-#define AR9170_LED_MODE_RESERVED2 0x0080
-
-#define AR9170_LED_MODE_TON_SCAN_S 8
-#define AR9170_LED_MODE_TON_SCAN 0x0f00
-
-#define AR9170_LED_MODE_TOFF_SCAN_S 12
-#define AR9170_LED_MODE_TOFF_SCAN 0xf000
-
-struct ar9170_led_mode {
- __le16 led;
-};
-
-#endif /* __CARL9170_SHARED_EEPROM_H */
diff --git a/carl9170fw/include/shared/fwcmd.h b/carl9170fw/include/shared/fwcmd.h
deleted file mode 100644
index 9443c80..0000000
--- a/carl9170fw/include/shared/fwcmd.h
+++ /dev/null
@@ -1,318 +0,0 @@
-/*
- * Shared Atheros AR9170 Header
- *
- * Firmware command interface definitions
- *
- * Copyright 2008, Johannes Berg <johannes@sipsolutions.net>
- * Copyright 2009-2011 Christian Lamparter <chunkeey@googlemail.com>
- *
- * 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.
- *
- * 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; see the file COPYING. If not, see
- * http://www.gnu.org/licenses/.
- *
- * This file incorporates work covered by the following copyright and
- * permission notice:
- * Copyright (c) 2007-2008 Atheros Communications, Inc.
- *
- * 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.
- */
-
-#ifndef __CARL9170_SHARED_FWCMD_H
-#define __CARL9170_SHARED_FWCMD_H
-
-#define CARL9170_MAX_CMD_LEN 64
-#define CARL9170_MAX_CMD_PAYLOAD_LEN 60
-
-#define CARL9170FW_API_MIN_VER 1
-#define CARL9170FW_API_MAX_VER 1
-
-enum carl9170_cmd_oids {
- CARL9170_CMD_RREG = 0x00,
- CARL9170_CMD_WREG = 0x01,
- CARL9170_CMD_ECHO = 0x02,
- CARL9170_CMD_SWRST = 0x03,
- CARL9170_CMD_REBOOT = 0x04,
- CARL9170_CMD_BCN_CTRL = 0x05,
- CARL9170_CMD_READ_TSF = 0x06,
- CARL9170_CMD_RX_FILTER = 0x07,
- CARL9170_CMD_WOL = 0x08,
- CARL9170_CMD_TALLY = 0x09,
-
- /* CAM */
- CARL9170_CMD_EKEY = 0x10,
- CARL9170_CMD_DKEY = 0x11,
-
- /* RF / PHY */
- CARL9170_CMD_FREQUENCY = 0x20,
- CARL9170_CMD_RF_INIT = 0x21,
- CARL9170_CMD_SYNTH = 0x22,
- CARL9170_CMD_FREQ_START = 0x23,
- CARL9170_CMD_PSM = 0x24,
-
- /* Asychronous command flag */
- CARL9170_CMD_ASYNC_FLAG = 0x40,
- CARL9170_CMD_WREG_ASYNC = (CARL9170_CMD_WREG |
- CARL9170_CMD_ASYNC_FLAG),
- CARL9170_CMD_REBOOT_ASYNC = (CARL9170_CMD_REBOOT |
- CARL9170_CMD_ASYNC_FLAG),
- CARL9170_CMD_BCN_CTRL_ASYNC = (CARL9170_CMD_BCN_CTRL |
- CARL9170_CMD_ASYNC_FLAG),
- CARL9170_CMD_PSM_ASYNC = (CARL9170_CMD_PSM |
- CARL9170_CMD_ASYNC_FLAG),
-
- /* responses and traps */
- CARL9170_RSP_FLAG = 0xc0,
- CARL9170_RSP_PRETBTT = 0xc0,
- CARL9170_RSP_TXCOMP = 0xc1,
- CARL9170_RSP_BEACON_CONFIG = 0xc2,
- CARL9170_RSP_ATIM = 0xc3,
- CARL9170_RSP_WATCHDOG = 0xc6,
- CARL9170_RSP_TEXT = 0xca,
- CARL9170_RSP_HEXDUMP = 0xcc,
- CARL9170_RSP_RADAR = 0xcd,
- CARL9170_RSP_GPIO = 0xce,
- CARL9170_RSP_BOOT = 0xcf,
-};
-
-struct carl9170_set_key_cmd {
- __le16 user;
- __le16 keyId;
- __le16 type;
- u8 macAddr[6];
- u32 key[4];
-} __packed __aligned(4);
-#define CARL9170_SET_KEY_CMD_SIZE 28
-
-struct carl9170_disable_key_cmd {
- __le16 user;
- __le16 padding;
-} __packed __aligned(4);
-#define CARL9170_DISABLE_KEY_CMD_SIZE 4
-
-struct carl9170_u32_list {
- u32 vals[0];
-} __packed;
-
-struct carl9170_reg_list {
- __le32 regs[0];
-} __packed;
-
-struct carl9170_write_reg {
- struct {
- __le32 addr;
- __le32 val;
- } regs[0] __packed;
-} __packed;
-
-#define CARL9170FW_PHY_HT_ENABLE 0x4
-#define CARL9170FW_PHY_HT_DYN2040 0x8
-#define CARL9170FW_PHY_HT_EXT_CHAN_OFF 0x3
-#define CARL9170FW_PHY_HT_EXT_CHAN_OFF_S 2
-
-struct carl9170_rf_init {
- __le32 freq;
- u8 ht_settings;
- u8 padding2[3];
- __le32 delta_slope_coeff_exp;
- __le32 delta_slope_coeff_man;
- __le32 delta_slope_coeff_exp_shgi;
- __le32 delta_slope_coeff_man_shgi;
- __le32 finiteLoopCount;
-} __packed;
-#define CARL9170_RF_INIT_SIZE 28
-
-struct carl9170_rf_init_result {
- __le32 ret; /* AR9170_PHY_REG_AGC_CONTROL */
-} __packed;
-#define CARL9170_RF_INIT_RESULT_SIZE 4
-
-#define CARL9170_PSM_SLEEP 0x1000
-#define CARL9170_PSM_SOFTWARE 0
-#define CARL9170_PSM_WAKE 0 /* internally used. */
-#define CARL9170_PSM_COUNTER 0xfff
-#define CARL9170_PSM_COUNTER_S 0
-
-struct carl9170_psm {
- __le32 state;
-} __packed;
-#define CARL9170_PSM_SIZE 4
-
-struct carl9170_rx_filter_cmd {
- __le32 rx_filter;
-} __packed;
-#define CARL9170_RX_FILTER_CMD_SIZE 4
-
-#define CARL9170_RX_FILTER_BAD 0x01
-#define CARL9170_RX_FILTER_OTHER_RA 0x02
-#define CARL9170_RX_FILTER_DECRY_FAIL 0x04
-#define CARL9170_RX_FILTER_CTL_OTHER 0x08
-#define CARL9170_RX_FILTER_CTL_PSPOLL 0x10
-#define CARL9170_RX_FILTER_CTL_BACKR 0x20
-#define CARL9170_RX_FILTER_MGMT 0x40
-#define CARL9170_RX_FILTER_DATA 0x80
-#define CARL9170_RX_FILTER_EVERYTHING (~0)
-
-struct carl9170_bcn_ctrl_cmd {
- __le32 vif_id;
- __le32 mode;
- __le32 bcn_addr;
- __le32 bcn_len;
-} __packed;
-#define CARL9170_BCN_CTRL_CMD_SIZE 16
-
-#define CARL9170_BCN_CTRL_DRAIN 0
-#define CARL9170_BCN_CTRL_CAB_TRIGGER 1
-
-struct carl9170_wol_cmd {
- __le32 flags;
- u8 mac[6];
- u8 bssid[6];
- __le32 null_interval;
- __le32 free_for_use2;
- __le32 mask;
- u8 pattern[32];
-} __packed;
-
-#define CARL9170_WOL_CMD_SIZE 60
-
-#define CARL9170_WOL_DISCONNECT 1
-#define CARL9170_WOL_MAGIC_PKT 2
-
-struct carl9170_cmd_head {
- union {
- struct {
- u8 len;
- u8 cmd;
- u8 seq;
- u8 ext;
- } __packed;
-
- u32 hdr_data;
- } __packed;
-} __packed;
-
-struct carl9170_cmd {
- struct carl9170_cmd_head hdr;
- union {
- struct carl9170_set_key_cmd setkey;
- struct carl9170_disable_key_cmd disablekey;
- struct carl9170_u32_list echo;
- struct carl9170_reg_list rreg;
- struct carl9170_write_reg wreg;
- struct carl9170_rf_init rf_init;
- struct carl9170_psm psm;
- struct carl9170_wol_cmd wol;
- struct carl9170_bcn_ctrl_cmd bcn_ctrl;
- struct carl9170_rx_filter_cmd rx_filter;
- u8 data[CARL9170_MAX_CMD_PAYLOAD_LEN];
- } __packed;
-} __packed __aligned(4);
-
-#define CARL9170_TX_STATUS_QUEUE 3
-#define CARL9170_TX_STATUS_QUEUE_S 0
-#define CARL9170_TX_STATUS_RIX_S 2
-#define CARL9170_TX_STATUS_RIX (3 << CARL9170_TX_STATUS_RIX_S)
-#define CARL9170_TX_STATUS_TRIES_S 4
-#define CARL9170_TX_STATUS_TRIES (7 << CARL9170_TX_STATUS_TRIES_S)
-#define CARL9170_TX_STATUS_SUCCESS 0x80
-
-#ifdef __CARL9170FW__
-/*
- * NOTE:
- * Both structs [carl9170_tx_status and _carl9170_tx_status]
- * need to be "bit for bit" in sync.
- */
-struct carl9170_tx_status {
- /*
- * Beware of compiler bugs in all gcc pre 4.4!
- */
-
- u8 cookie;
- u8 queue:2;
- u8 rix:2;
- u8 tries:3;
- u8 success:1;
-} __packed;
-#endif /* __CARL9170FW__ */
-
-struct _carl9170_tx_status {
- /*
- * This version should be immune to all alignment bugs.
- */
-
- u8 cookie;
- u8 info;
-} __packed;
-#define CARL9170_TX_STATUS_SIZE 2
-
-#define CARL9170_RSP_TX_STATUS_NUM (CARL9170_MAX_CMD_PAYLOAD_LEN / \
- sizeof(struct _carl9170_tx_status))
-
-#define CARL9170_TX_MAX_RATE_TRIES 7
-
-#define CARL9170_TX_MAX_RATES 4
-#define CARL9170_TX_MAX_RETRY_RATES (CARL9170_TX_MAX_RATES - 1)
-#define CARL9170_ERR_MAGIC "ERR:"
-#define CARL9170_BUG_MAGIC "BUG:"
-
-struct carl9170_gpio {
- __le32 gpio;
-} __packed;
-#define CARL9170_GPIO_SIZE 4
-
-struct carl9170_tsf_rsp {
- union {
- __le32 tsf[2];
- __le64 tsf_64;
- } __packed;
-} __packed;
-#define CARL9170_TSF_RSP_SIZE 8
-
-struct carl9170_tally_rsp {
- __le32 active;
- __le32 cca;
- __le32 tx_time;
- __le32 rx_total;
- __le32 rx_overrun;
- __le32 tick;
-} __packed;
-
-struct carl9170_rsp {
- struct carl9170_cmd_head hdr;
-
- union {
- struct carl9170_rf_init_result rf_init_res;
- struct carl9170_u32_list rreg_res;
- struct carl9170_u32_list echo;
-#ifdef __CARL9170FW__
- struct carl9170_tx_status tx_status[0];
-#endif /* __CARL9170FW__ */
- struct _carl9170_tx_status _tx_status[0];
- struct carl9170_gpio gpio;
- struct carl9170_tsf_rsp tsf;
- struct carl9170_psm psm;
- struct carl9170_tally_rsp tally;
- u8 data[CARL9170_MAX_CMD_PAYLOAD_LEN];
- } __packed;
-} __packed __aligned(4);
-
-#endif /* __CARL9170_SHARED_FWCMD_H */
diff --git a/carl9170fw/include/shared/fwdesc.h b/carl9170fw/include/shared/fwdesc.h
deleted file mode 100644
index 66848d4..0000000
--- a/carl9170fw/include/shared/fwdesc.h
+++ /dev/null
@@ -1,277 +0,0 @@
-/*
- * Shared CARL9170 Header
- *
- * Firmware descriptor format
- *
- * Copyright 2009-2011 Christian Lamparter <chunkeey@googlemail.com>
- *
- * 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.
- *
- * 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; see the file COPYING. If not, see
- * http://www.gnu.org/licenses/.
- */
-
-#ifndef __CARL9170_SHARED_FWDESC_H
-#define __CARL9170_SHARED_FWDESC_H
-
-/* NOTE: Don't mess with the order of the flags! */
-enum carl9170fw_feature_list {
- /* Always set */
- CARL9170FW_DUMMY_FEATURE,
-
- /*
- * Indicates that this image has special boot block which prevents
- * legacy drivers to drive the firmware.
- */
- CARL9170FW_MINIBOOT,
-
- /* usb registers are initialized by the firmware */
- CARL9170FW_USB_INIT_FIRMWARE,
-
- /* command traps & notifications are send through EP2 */
- CARL9170FW_USB_RESP_EP2,
-
- /* usb download (app -> fw) stream */
- CARL9170FW_USB_DOWN_STREAM,
-
- /* usb upload (fw -> app) stream */
- CARL9170FW_USB_UP_STREAM,
-
- /* unusable - reserved to flag non-functional debug firmwares */
- CARL9170FW_UNUSABLE,
-
- /* AR9170_CMD_RF_INIT, AR9170_CMD_FREQ_START, AR9170_CMD_FREQUENCY */
- CARL9170FW_COMMAND_PHY,
-
- /* AR9170_CMD_EKEY, AR9170_CMD_DKEY */
- CARL9170FW_COMMAND_CAM,
-
- /* Firmware has a software Content After Beacon Queueing mechanism */
- CARL9170FW_WLANTX_CAB,
-
- /* The firmware is capable of responding to incoming BAR frames */
- CARL9170FW_HANDLE_BACK_REQ,
-
- /* GPIO Interrupt | CARL9170_RSP_GPIO */
- CARL9170FW_GPIO_INTERRUPT,
-
- /* Firmware PSM support | CARL9170_CMD_PSM */
- CARL9170FW_PSM,
-
- /* Firmware RX filter | CARL9170_CMD_RX_FILTER */
- CARL9170FW_RX_FILTER,
-
- /* Wake up on WLAN */
- CARL9170FW_WOL,
-
- /* Firmware supports PSM in the 5GHZ Band */
- CARL9170FW_FIXED_5GHZ_PSM,
-
- /* HW (ANI, CCA, MIB) tally counters */
- CARL9170FW_HW_COUNTERS,
-
- /* Firmware will pass BA when BARs are queued */
- CARL9170FW_RX_BA_FILTER,
-
- /* KEEP LAST */
- __CARL9170FW_FEATURE_NUM
-};
-
-#define OTUS_MAGIC "OTAR"
-#define MOTD_MAGIC "MOTD"
-#define FIX_MAGIC "FIX\0"
-#define DBG_MAGIC "DBG\0"
-#define CHK_MAGIC "CHK\0"
-#define TXSQ_MAGIC "TXSQ"
-#define WOL_MAGIC "WOL\0"
-#define LAST_MAGIC "LAST"
-
-#define CARL9170FW_SET_DAY(d) (((d) - 1) % 31)
-#define CARL9170FW_SET_MONTH(m) ((((m) - 1) % 12) * 31)
-#define CARL9170FW_SET_YEAR(y) (((y) - 10) * 372)
-
-#define CARL9170FW_GET_DAY(d) (((d) % 31) + 1)
-#define CARL9170FW_GET_MONTH(m) ((((m) / 31) % 12) + 1)
-#define CARL9170FW_GET_YEAR(y) ((y) / 372 + 10)
-
-#define CARL9170FW_MAGIC_SIZE 4
-
-struct carl9170fw_desc_head {
- u8 magic[CARL9170FW_MAGIC_SIZE];
- __le16 length;
- u8 min_ver;
- u8 cur_ver;
-} __packed;
-#define CARL9170FW_DESC_HEAD_SIZE \
- (sizeof(struct carl9170fw_desc_head))
-
-#define CARL9170FW_OTUS_DESC_MIN_VER 6
-#define CARL9170FW_OTUS_DESC_CUR_VER 7
-struct carl9170fw_otus_desc {
- struct carl9170fw_desc_head head;
- __le32 feature_set;
- __le32 fw_address;
- __le32 bcn_addr;
- __le16 bcn_len;
- __le16 miniboot_size;
- __le16 tx_frag_len;
- __le16 rx_max_frame_len;
- u8 tx_descs;
- u8 cmd_bufs;
- u8 api_ver;
- u8 vif_num;
-} __packed;
-#define CARL9170FW_OTUS_DESC_SIZE \
- (sizeof(struct carl9170fw_otus_desc))
-
-#define CARL9170FW_MOTD_STRING_LEN 24
-#define CARL9170FW_MOTD_RELEASE_LEN 20
-#define CARL9170FW_MOTD_DESC_MIN_VER 1
-#define CARL9170FW_MOTD_DESC_CUR_VER 2
-struct carl9170fw_motd_desc {
- struct carl9170fw_desc_head head;
- __le32 fw_year_month_day;
- char desc[CARL9170FW_MOTD_STRING_LEN];
- char release[CARL9170FW_MOTD_RELEASE_LEN];
-} __packed;
-#define CARL9170FW_MOTD_DESC_SIZE \
- (sizeof(struct carl9170fw_motd_desc))
-
-#define CARL9170FW_FIX_DESC_MIN_VER 1
-#define CARL9170FW_FIX_DESC_CUR_VER 2
-struct carl9170fw_fix_entry {
- __le32 address;
- __le32 mask;
- __le32 value;
-} __packed;
-
-struct carl9170fw_fix_desc {
- struct carl9170fw_desc_head head;
- struct carl9170fw_fix_entry data[0];
-} __packed;
-#define CARL9170FW_FIX_DESC_SIZE \
- (sizeof(struct carl9170fw_fix_desc))
-
-#define CARL9170FW_DBG_DESC_MIN_VER 1
-#define CARL9170FW_DBG_DESC_CUR_VER 3
-struct carl9170fw_dbg_desc {
- struct carl9170fw_desc_head head;
-
- __le32 bogoclock_addr;
- __le32 counter_addr;
- __le32 rx_total_addr;
- __le32 rx_overrun_addr;
- __le32 rx_filter;
-
- /* Put your debugging definitions here */
-} __packed;
-#define CARL9170FW_DBG_DESC_SIZE \
- (sizeof(struct carl9170fw_dbg_desc))
-
-#define CARL9170FW_CHK_DESC_MIN_VER 1
-#define CARL9170FW_CHK_DESC_CUR_VER 2
-struct carl9170fw_chk_desc {
- struct carl9170fw_desc_head head;
- __le32 fw_crc32;
- __le32 hdr_crc32;
-} __packed;
-#define CARL9170FW_CHK_DESC_SIZE \
- (sizeof(struct carl9170fw_chk_desc))
-
-#define CARL9170FW_TXSQ_DESC_MIN_VER 1
-#define CARL9170FW_TXSQ_DESC_CUR_VER 1
-struct carl9170fw_txsq_desc {
- struct carl9170fw_desc_head head;
-
- __le32 seq_table_addr;
-} __packed;
-#define CARL9170FW_TXSQ_DESC_SIZE \
- (sizeof(struct carl9170fw_txsq_desc))
-
-#define CARL9170FW_WOL_DESC_MIN_VER 1
-#define CARL9170FW_WOL_DESC_CUR_VER 1
-struct carl9170fw_wol_desc {
- struct carl9170fw_desc_head head;
-
- __le32 supported_triggers; /* CARL9170_WOL_ */
-} __packed;
-#define CARL9170FW_WOL_DESC_SIZE \
- (sizeof(struct carl9170fw_wol_desc))
-
-#define CARL9170FW_LAST_DESC_MIN_VER 1
-#define CARL9170FW_LAST_DESC_CUR_VER 2
-struct carl9170fw_last_desc {
- struct carl9170fw_desc_head head;
-} __packed;
-#define CARL9170FW_LAST_DESC_SIZE \
- (sizeof(struct carl9170fw_fix_desc))
-
-#define CARL9170FW_DESC_MAX_LENGTH 8192
-
-#define CARL9170FW_FILL_DESC(_magic, _length, _min_ver, _cur_ver) \
- .head = { \
- .magic = _magic, \
- .length = cpu_to_le16(_length), \
- .min_ver = _min_ver, \
- .cur_ver = _cur_ver, \
- }
-
-static inline void carl9170fw_fill_desc(struct carl9170fw_desc_head *head,
- u8 magic[CARL9170FW_MAGIC_SIZE],
- __le16 length, u8 min_ver, u8 cur_ver)
-{
- head->magic[0] = magic[0];
- head->magic[1] = magic[1];
- head->magic[2] = magic[2];
- head->magic[3] = magic[3];
-
- head->length = length;
- head->min_ver = min_ver;
- head->cur_ver = cur_ver;
-}
-
-#define carl9170fw_for_each_hdr(desc, fw_desc) \
- for (desc = fw_desc; \
- memcmp(desc->magic, LAST_MAGIC, CARL9170FW_MAGIC_SIZE) && \
- le16_to_cpu(desc->length) >= CARL9170FW_DESC_HEAD_SIZE && \
- le16_to_cpu(desc->length) < CARL9170FW_DESC_MAX_LENGTH; \
- desc = (void *)((unsigned long)desc + le16_to_cpu(desc->length)))
-
-#define CHECK_HDR_VERSION(head, _min_ver) \
- (((head)->cur_ver < _min_ver) || ((head)->min_ver > _min_ver)) \
-
-static inline bool carl9170fw_supports(__le32 list, u8 feature)
-{
- return le32_to_cpu(list) & BIT(feature);
-}
-
-static inline bool carl9170fw_desc_cmp(const struct carl9170fw_desc_head *head,
- const u8 descid[CARL9170FW_MAGIC_SIZE],
- u16 min_len, u8 compatible_revision)
-{
- if (descid[0] == head->magic[0] && descid[1] == head->magic[1] &&
- descid[2] == head->magic[2] && descid[3] == head->magic[3] &&
- !CHECK_HDR_VERSION(head, compatible_revision) &&
- (le16_to_cpu(head->length) >= min_len))
- return true;
-
- return false;
-}
-
-#define CARL9170FW_MIN_SIZE 32
-#define CARL9170FW_MAX_SIZE 16384
-
-static inline bool carl9170fw_size_check(unsigned int len)
-{
- return (len <= CARL9170FW_MAX_SIZE && len >= CARL9170FW_MIN_SIZE);
-}
-
-#endif /* __CARL9170_SHARED_FWDESC_H */
diff --git a/carl9170fw/include/shared/hw.h b/carl9170fw/include/shared/hw.h
deleted file mode 100644
index fa834c1..0000000
--- a/carl9170fw/include/shared/hw.h
+++ /dev/null
@@ -1,817 +0,0 @@
-/*
- * Shared Atheros AR9170 Header
- *
- * Register map, hardware-specific definitions
- *
- * Copyright 2008, Johannes Berg <johannes@sipsolutions.net>
- * Copyright 2009-2011 Christian Lamparter <chunkeey@googlemail.com>
- *
- * 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.
- *
- * 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; see the file COPYING. If not, see
- * http://www.gnu.org/licenses/.
- *
- * This file incorporates work covered by the following copyright and
- * permission notice:
- * Copyright (c) 2007-2008 Atheros Communications, Inc.
- *
- * 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.
- */
-
-#ifndef __CARL9170_SHARED_HW_H
-#define __CARL9170_SHARED_HW_H
-
-/* High Speed UART */
-#define AR9170_UART_REG_BASE 0x1c0000
-
-/* Definitions of interrupt registers */
-#define AR9170_UART_REG_RX_BUFFER (AR9170_UART_REG_BASE + 0x000)
-#define AR9170_UART_REG_TX_HOLDING (AR9170_UART_REG_BASE + 0x004)
-#define AR9170_UART_REG_FIFO_CONTROL (AR9170_UART_REG_BASE + 0x010)
-#define AR9170_UART_FIFO_CTRL_RESET_RX_FIFO 0x02
-#define AR9170_UART_FIFO_CTRL_RESET_TX_FIFO 0x04
-
-#define AR9170_UART_REG_LINE_CONTROL (AR9170_UART_REG_BASE + 0x014)
-#define AR9170_UART_REG_MODEM_CONTROL (AR9170_UART_REG_BASE + 0x018)
-#define AR9170_UART_MODEM_CTRL_DTR_BIT 0x01
-#define AR9170_UART_MODEM_CTRL_RTS_BIT 0x02
-#define AR9170_UART_MODEM_CTRL_INTERNAL_LOOP_BACK 0x10
-#define AR9170_UART_MODEM_CTRL_AUTO_RTS 0x20
-#define AR9170_UART_MODEM_CTRL_AUTO_CTR 0x40
-
-#define AR9170_UART_REG_LINE_STATUS (AR9170_UART_REG_BASE + 0x01c)
-#define AR9170_UART_LINE_STS_RX_DATA_READY 0x01
-#define AR9170_UART_LINE_STS_RX_BUFFER_OVERRUN 0x02
-#define AR9170_UART_LINE_STS_RX_BREAK_IND 0x10
-#define AR9170_UART_LINE_STS_TX_FIFO_NEAR_EMPTY 0x20
-#define AR9170_UART_LINE_STS_TRANSMITTER_EMPTY 0x40
-
-#define AR9170_UART_REG_MODEM_STATUS (AR9170_UART_REG_BASE + 0x020)
-#define AR9170_UART_MODEM_STS_CTS_CHANGE 0x01
-#define AR9170_UART_MODEM_STS_DSR_CHANGE 0x02
-#define AR9170_UART_MODEM_STS_DCD_CHANGE 0x08
-#define AR9170_UART_MODEM_STS_CTS_COMPL 0x10
-#define AR9170_UART_MODEM_STS_DSR_COMPL 0x20
-#define AR9170_UART_MODEM_STS_DCD_COMPL 0x80
-
-#define AR9170_UART_REG_SCRATCH (AR9170_UART_REG_BASE + 0x024)
-#define AR9170_UART_REG_DIVISOR_LSB (AR9170_UART_REG_BASE + 0x028)
-#define AR9170_UART_REG_DIVISOR_MSB (AR9170_UART_REG_BASE + 0x02c)
-#define AR9170_UART_REG_WORD_RX_BUFFER (AR9170_UART_REG_BASE + 0x034)
-#define AR9170_UART_REG_WORD_TX_HOLDING (AR9170_UART_REG_BASE + 0x038)
-#define AR9170_UART_REG_FIFO_COUNT (AR9170_UART_REG_BASE + 0x03c)
-#define AR9170_UART_REG_REMAINDER (AR9170_UART_REG_BASE + 0x04c)
-
-/* Timer */
-#define AR9170_TIMER_REG_BASE 0x1c1000
-
-#define AR9170_TIMER_REG_WATCH_DOG (AR9170_TIMER_REG_BASE + 0x000)
-#define AR9170_TIMER_REG_TIMER0 (AR9170_TIMER_REG_BASE + 0x010)
-#define AR9170_TIMER_REG_TIMER1 (AR9170_TIMER_REG_BASE + 0x014)
-#define AR9170_TIMER_REG_TIMER2 (AR9170_TIMER_REG_BASE + 0x018)
-#define AR9170_TIMER_REG_TIMER3 (AR9170_TIMER_REG_BASE + 0x01c)
-#define AR9170_TIMER_REG_TIMER4 (AR9170_TIMER_REG_BASE + 0x020)
-#define AR9170_TIMER_REG_CONTROL (AR9170_TIMER_REG_BASE + 0x024)
-#define AR9170_TIMER_CTRL_DISABLE_CLOCK 0x100
-
-#define AR9170_TIMER_REG_INTERRUPT (AR9170_TIMER_REG_BASE + 0x028)
-#define AR9170_TIMER_INT_TIMER0 0x001
-#define AR9170_TIMER_INT_TIMER1 0x002
-#define AR9170_TIMER_INT_TIMER2 0x004
-#define AR9170_TIMER_INT_TIMER3 0x008
-#define AR9170_TIMER_INT_TIMER4 0x010
-#define AR9170_TIMER_INT_TICK_TIMER 0x100
-
-#define AR9170_TIMER_REG_TICK_TIMER (AR9170_TIMER_REG_BASE + 0x030)
-#define AR9170_TIMER_REG_CLOCK_LOW (AR9170_TIMER_REG_BASE + 0x040)
-#define AR9170_TIMER_REG_CLOCK_HIGH (AR9170_TIMER_REG_BASE + 0x044)
-
-#define AR9170_MAC_REG_BASE 0x1c3000
-
-#define AR9170_MAC_REG_POWER_STATE_CTRL (AR9170_MAC_REG_BASE + 0x500)
-#define AR9170_MAC_POWER_STATE_CTRL_RESET 0x20
-
-#define AR9170_MAC_REG_MAC_POWER_STATE_CTRL (AR9170_MAC_REG_BASE + 0x50c)
-
-#define AR9170_MAC_REG_INT_CTRL (AR9170_MAC_REG_BASE + 0x510)
-#define AR9170_MAC_INT_TXC BIT(0)
-#define AR9170_MAC_INT_RXC BIT(1)
-#define AR9170_MAC_INT_RETRY_FAIL BIT(2)
-#define AR9170_MAC_INT_WAKEUP BIT(3)
-#define AR9170_MAC_INT_ATIM BIT(4)
-#define AR9170_MAC_INT_DTIM BIT(5)
-#define AR9170_MAC_INT_CFG_BCN BIT(6)
-#define AR9170_MAC_INT_ABORT BIT(7)
-#define AR9170_MAC_INT_QOS BIT(8)
-#define AR9170_MAC_INT_MIMO_PS BIT(9)
-#define AR9170_MAC_INT_KEY_GEN BIT(10)
-#define AR9170_MAC_INT_DECRY_NOUSER BIT(11)
-#define AR9170_MAC_INT_RADAR BIT(12)
-#define AR9170_MAC_INT_QUIET_FRAME BIT(13)
-#define AR9170_MAC_INT_PRETBTT BIT(14)
-
-#define AR9170_MAC_REG_TSF_L (AR9170_MAC_REG_BASE + 0x514)
-#define AR9170_MAC_REG_TSF_H (AR9170_MAC_REG_BASE + 0x518)
-
-#define AR9170_MAC_REG_ATIM_WINDOW (AR9170_MAC_REG_BASE + 0x51c)
-#define AR9170_MAC_ATIM_PERIOD_S 0
-#define AR9170_MAC_ATIM_PERIOD 0x0000ffff
-
-#define AR9170_MAC_REG_BCN_PERIOD (AR9170_MAC_REG_BASE + 0x520)
-#define AR9170_MAC_BCN_PERIOD_S 0
-#define AR9170_MAC_BCN_PERIOD 0x0000ffff
-#define AR9170_MAC_BCN_DTIM_S 16
-#define AR9170_MAC_BCN_DTIM 0x00ff0000
-#define AR9170_MAC_BCN_AP_MODE BIT(24)
-#define AR9170_MAC_BCN_IBSS_MODE BIT(25)
-#define AR9170_MAC_BCN_PWR_MGT BIT(26)
-#define AR9170_MAC_BCN_STA_PS BIT(27)
-
-#define AR9170_MAC_REG_PRETBTT (AR9170_MAC_REG_BASE + 0x524)
-#define AR9170_MAC_PRETBTT_S 0
-#define AR9170_MAC_PRETBTT 0x0000ffff
-#define AR9170_MAC_PRETBTT2_S 16
-#define AR9170_MAC_PRETBTT2 0xffff0000
-
-#define AR9170_MAC_REG_MAC_ADDR_L (AR9170_MAC_REG_BASE + 0x610)
-#define AR9170_MAC_REG_MAC_ADDR_H (AR9170_MAC_REG_BASE + 0x614)
-#define AR9170_MAC_REG_BSSID_L (AR9170_MAC_REG_BASE + 0x618)
-#define AR9170_MAC_REG_BSSID_H (AR9170_MAC_REG_BASE + 0x61c)
-
-#define AR9170_MAC_REG_GROUP_HASH_TBL_L (AR9170_MAC_REG_BASE + 0x624)
-#define AR9170_MAC_REG_GROUP_HASH_TBL_H (AR9170_MAC_REG_BASE + 0x628)
-
-#define AR9170_MAC_REG_RX_TIMEOUT (AR9170_MAC_REG_BASE + 0x62c)
-
-#define AR9170_MAC_REG_BASIC_RATE (AR9170_MAC_REG_BASE + 0x630)
-#define AR9170_MAC_REG_MANDATORY_RATE (AR9170_MAC_REG_BASE + 0x634)
-#define AR9170_MAC_REG_RTS_CTS_RATE (AR9170_MAC_REG_BASE + 0x638)
-#define AR9170_MAC_REG_BACKOFF_PROTECT (AR9170_MAC_REG_BASE + 0x63c)
-#define AR9170_MAC_REG_RX_THRESHOLD (AR9170_MAC_REG_BASE + 0x640)
-#define AR9170_MAC_REG_AFTER_PNP (AR9170_MAC_REG_BASE + 0x648)
-#define AR9170_MAC_REG_RX_PE_DELAY (AR9170_MAC_REG_BASE + 0x64c)
-
-#define AR9170_MAC_REG_DYNAMIC_SIFS_ACK (AR9170_MAC_REG_BASE + 0x658)
-#define AR9170_MAC_REG_SNIFFER (AR9170_MAC_REG_BASE + 0x674)
-#define AR9170_MAC_SNIFFER_ENABLE_PROMISC BIT(0)
-#define AR9170_MAC_SNIFFER_DEFAULTS 0x02000000
-#define AR9170_MAC_REG_ENCRYPTION (AR9170_MAC_REG_BASE + 0x678)
-#define AR9170_MAC_ENCRYPTION_MGMT_RX_SOFTWARE BIT(2)
-#define AR9170_MAC_ENCRYPTION_RX_SOFTWARE BIT(3)
-#define AR9170_MAC_ENCRYPTION_DEFAULTS 0x70
-
-#define AR9170_MAC_REG_MISC_680 (AR9170_MAC_REG_BASE + 0x680)
-#define AR9170_MAC_REG_MISC_684 (AR9170_MAC_REG_BASE + 0x684)
-#define AR9170_MAC_REG_TX_UNDERRUN (AR9170_MAC_REG_BASE + 0x688)
-
-#define AR9170_MAC_REG_FRAMETYPE_FILTER (AR9170_MAC_REG_BASE + 0x68c)
-#define AR9170_MAC_FTF_ASSOC_REQ BIT(0)
-#define AR9170_MAC_FTF_ASSOC_RESP BIT(1)
-#define AR9170_MAC_FTF_REASSOC_REQ BIT(2)
-#define AR9170_MAC_FTF_REASSOC_RESP BIT(3)
-#define AR9170_MAC_FTF_PRB_REQ BIT(4)
-#define AR9170_MAC_FTF_PRB_RESP BIT(5)
-#define AR9170_MAC_FTF_BIT6 BIT(6)
-#define AR9170_MAC_FTF_BIT7 BIT(7)
-#define AR9170_MAC_FTF_BEACON BIT(8)
-#define AR9170_MAC_FTF_ATIM BIT(9)
-#define AR9170_MAC_FTF_DEASSOC BIT(10)
-#define AR9170_MAC_FTF_AUTH BIT(11)
-#define AR9170_MAC_FTF_DEAUTH BIT(12)
-#define AR9170_MAC_FTF_BIT13 BIT(13)
-#define AR9170_MAC_FTF_BIT14 BIT(14)
-#define AR9170_MAC_FTF_BIT15 BIT(15)
-#define AR9170_MAC_FTF_BAR BIT(24)
-#define AR9170_MAC_FTF_BA BIT(25)
-#define AR9170_MAC_FTF_PSPOLL BIT(26)
-#define AR9170_MAC_FTF_RTS BIT(27)
-#define AR9170_MAC_FTF_CTS BIT(28)
-#define AR9170_MAC_FTF_ACK BIT(29)
-#define AR9170_MAC_FTF_CFE BIT(30)
-#define AR9170_MAC_FTF_CFE_ACK BIT(31)
-#define AR9170_MAC_FTF_DEFAULTS 0x0500ffff
-#define AR9170_MAC_FTF_MONITOR 0xff00ffff
-
-#define AR9170_MAC_REG_ACK_EXTENSION (AR9170_MAC_REG_BASE + 0x690)
-#define AR9170_MAC_REG_ACK_TPC (AR9170_MAC_REG_BASE + 0x694)
-#define AR9170_MAC_REG_EIFS_AND_SIFS (AR9170_MAC_REG_BASE + 0x698)
-#define AR9170_MAC_REG_RX_TIMEOUT_COUNT (AR9170_MAC_REG_BASE + 0x69c)
-#define AR9170_MAC_REG_RX_TOTAL (AR9170_MAC_REG_BASE + 0x6a0)
-#define AR9170_MAC_REG_RX_CRC32 (AR9170_MAC_REG_BASE + 0x6a4)
-#define AR9170_MAC_REG_RX_CRC16 (AR9170_MAC_REG_BASE + 0x6a8)
-#define AR9170_MAC_REG_RX_ERR_DECRYPTION_UNI (AR9170_MAC_REG_BASE + 0x6ac)
-#define AR9170_MAC_REG_RX_OVERRUN (AR9170_MAC_REG_BASE + 0x6b0)
-#define AR9170_MAC_REG_RX_ERR_DECRYPTION_MUL (AR9170_MAC_REG_BASE + 0x6bc)
-#define AR9170_MAC_REG_TX_BLOCKACKS (AR9170_MAC_REG_BASE + 0x6c0)
-#define AR9170_MAC_REG_NAV_COUNT (AR9170_MAC_REG_BASE + 0x6c4)
-#define AR9170_MAC_REG_BACKOFF_STATUS (AR9170_MAC_REG_BASE + 0x6c8)
-#define AR9170_MAC_BACKOFF_CCA BIT(24)
-#define AR9170_MAC_BACKOFF_TX_PEX BIT(25)
-#define AR9170_MAC_BACKOFF_RX_PE BIT(26)
-#define AR9170_MAC_BACKOFF_MD_READY BIT(27)
-#define AR9170_MAC_BACKOFF_TX_PE BIT(28)
-
-#define AR9170_MAC_REG_TX_RETRY (AR9170_MAC_REG_BASE + 0x6cc)
-
-#define AR9170_MAC_REG_TX_COMPLETE (AR9170_MAC_REG_BASE + 0x6d4)
-
-#define AR9170_MAC_REG_CHANNEL_BUSY (AR9170_MAC_REG_BASE + 0x6e8)
-#define AR9170_MAC_REG_EXT_BUSY (AR9170_MAC_REG_BASE + 0x6ec)
-
-#define AR9170_MAC_REG_SLOT_TIME (AR9170_MAC_REG_BASE + 0x6f0)
-#define AR9170_MAC_REG_TX_TOTAL (AR9170_MAC_REG_BASE + 0x6f4)
-#define AR9170_MAC_REG_ACK_FC (AR9170_MAC_REG_BASE + 0x6f8)
-
-#define AR9170_MAC_REG_CAM_MODE (AR9170_MAC_REG_BASE + 0x700)
-#define AR9170_MAC_CAM_IBSS 0xe0
-#define AR9170_MAC_CAM_AP 0xa1
-#define AR9170_MAC_CAM_STA 0x2
-#define AR9170_MAC_CAM_AP_WDS 0x3
-#define AR9170_MAC_CAM_DEFAULTS (0xf << 24)
-#define AR9170_MAC_CAM_HOST_PENDING 0x80000000
-
-#define AR9170_MAC_REG_CAM_ROLL_CALL_TBL_L (AR9170_MAC_REG_BASE + 0x704)
-#define AR9170_MAC_REG_CAM_ROLL_CALL_TBL_H (AR9170_MAC_REG_BASE + 0x708)
-
-#define AR9170_MAC_REG_CAM_ADDR (AR9170_MAC_REG_BASE + 0x70c)
-#define AR9170_MAC_CAM_ADDR_WRITE 0x80000000
-#define AR9170_MAC_REG_CAM_DATA0 (AR9170_MAC_REG_BASE + 0x720)
-#define AR9170_MAC_REG_CAM_DATA1 (AR9170_MAC_REG_BASE + 0x724)
-#define AR9170_MAC_REG_CAM_DATA2 (AR9170_MAC_REG_BASE + 0x728)
-#define AR9170_MAC_REG_CAM_DATA3 (AR9170_MAC_REG_BASE + 0x72c)
-
-#define AR9170_MAC_REG_CAM_DBG0 (AR9170_MAC_REG_BASE + 0x730)
-#define AR9170_MAC_REG_CAM_DBG1 (AR9170_MAC_REG_BASE + 0x734)
-#define AR9170_MAC_REG_CAM_DBG2 (AR9170_MAC_REG_BASE + 0x738)
-#define AR9170_MAC_REG_CAM_STATE (AR9170_MAC_REG_BASE + 0x73c)
-#define AR9170_MAC_CAM_STATE_READ_PENDING 0x40000000
-#define AR9170_MAC_CAM_STATE_WRITE_PENDING 0x80000000
-
-#define AR9170_MAC_REG_CAM_TXKEY (AR9170_MAC_REG_BASE + 0x740)
-#define AR9170_MAC_REG_CAM_RXKEY (AR9170_MAC_REG_BASE + 0x750)
-
-#define AR9170_MAC_REG_CAM_TX_ENC_TYPE (AR9170_MAC_REG_BASE + 0x760)
-#define AR9170_MAC_REG_CAM_RX_ENC_TYPE (AR9170_MAC_REG_BASE + 0x770)
-#define AR9170_MAC_REG_CAM_TX_SERACH_HIT (AR9170_MAC_REG_BASE + 0x780)
-#define AR9170_MAC_REG_CAM_RX_SERACH_HIT (AR9170_MAC_REG_BASE + 0x790)
-
-#define AR9170_MAC_REG_AC0_CW (AR9170_MAC_REG_BASE + 0xb00)
-#define AR9170_MAC_REG_AC1_CW (AR9170_MAC_REG_BASE + 0xb04)
-#define AR9170_MAC_REG_AC2_CW (AR9170_MAC_REG_BASE + 0xb08)
-#define AR9170_MAC_REG_AC3_CW (AR9170_MAC_REG_BASE + 0xb0c)
-#define AR9170_MAC_REG_AC4_CW (AR9170_MAC_REG_BASE + 0xb10)
-#define AR9170_MAC_REG_AC2_AC1_AC0_AIFS (AR9170_MAC_REG_BASE + 0xb14)
-#define AR9170_MAC_REG_AC4_AC3_AC2_AIFS (AR9170_MAC_REG_BASE + 0xb18)
-#define AR9170_MAC_REG_TXOP_ACK_EXTENSION (AR9170_MAC_REG_BASE + 0xb1c)
-#define AR9170_MAC_REG_TXOP_ACK_INTERVAL (AR9170_MAC_REG_BASE + 0xb20)
-#define AR9170_MAC_REG_CONTENTION_POINT (AR9170_MAC_REG_BASE + 0xb24)
-#define AR9170_MAC_REG_RETRY_MAX (AR9170_MAC_REG_BASE + 0xb28)
-#define AR9170_MAC_REG_TID_CFACK_CFEND_RATE (AR9170_MAC_REG_BASE + 0xb2c)
-#define AR9170_MAC_REG_TXOP_NOT_ENOUGH_IND (AR9170_MAC_REG_BASE + 0xb30)
-#define AR9170_MAC_REG_TKIP_TSC (AR9170_MAC_REG_BASE + 0xb34)
-#define AR9170_MAC_REG_TXOP_DURATION (AR9170_MAC_REG_BASE + 0xb38)
-#define AR9170_MAC_REG_TX_QOS_THRESHOLD (AR9170_MAC_REG_BASE + 0xb3c)
-#define AR9170_MAC_REG_QOS_PRIORITY_VIRTUAL_CCA (AR9170_MAC_REG_BASE + 0xb40)
-#define AR9170_MAC_VIRTUAL_CCA_Q0 BIT(15)
-#define AR9170_MAC_VIRTUAL_CCA_Q1 BIT(16)
-#define AR9170_MAC_VIRTUAL_CCA_Q2 BIT(17)
-#define AR9170_MAC_VIRTUAL_CCA_Q3 BIT(18)
-#define AR9170_MAC_VIRTUAL_CCA_Q4 BIT(19)
-#define AR9170_MAC_VIRTUAL_CCA_ALL (0xf8000)
-
-#define AR9170_MAC_REG_AC1_AC0_TXOP (AR9170_MAC_REG_BASE + 0xb44)
-#define AR9170_MAC_REG_AC3_AC2_TXOP (AR9170_MAC_REG_BASE + 0xb48)
-
-#define AR9170_MAC_REG_AMPDU_COUNT (AR9170_MAC_REG_BASE + 0xb88)
-#define AR9170_MAC_REG_MPDU_COUNT (AR9170_MAC_REG_BASE + 0xb8c)
-
-#define AR9170_MAC_REG_AMPDU_FACTOR (AR9170_MAC_REG_BASE + 0xb9c)
-#define AR9170_MAC_AMPDU_FACTOR 0x7f0000
-#define AR9170_MAC_AMPDU_FACTOR_S 16
-#define AR9170_MAC_REG_AMPDU_DENSITY (AR9170_MAC_REG_BASE + 0xba0)
-#define AR9170_MAC_AMPDU_DENSITY 0x7
-#define AR9170_MAC_AMPDU_DENSITY_S 0
-
-#define AR9170_MAC_REG_FCS_SELECT (AR9170_MAC_REG_BASE + 0xbb0)
-#define AR9170_MAC_FCS_SWFCS 0x1
-#define AR9170_MAC_FCS_FIFO_PROT 0x4
-
-#define AR9170_MAC_REG_RTS_CTS_TPC (AR9170_MAC_REG_BASE + 0xbb4)
-#define AR9170_MAC_REG_CFEND_QOSNULL_TPC (AR9170_MAC_REG_BASE + 0xbb8)
-
-#define AR9170_MAC_REG_ACK_TABLE (AR9170_MAC_REG_BASE + 0xc00)
-#define AR9170_MAC_REG_RX_CONTROL (AR9170_MAC_REG_BASE + 0xc40)
-#define AR9170_MAC_RX_CTRL_DEAGG 0x1
-#define AR9170_MAC_RX_CTRL_SHORT_FILTER 0x2
-#define AR9170_MAC_RX_CTRL_SA_DA_SEARCH 0x20
-#define AR9170_MAC_RX_CTRL_PASS_TO_HOST BIT(28)
-#define AR9170_MAC_RX_CTRL_ACK_IN_SNIFFER BIT(30)
-
-#define AR9170_MAC_REG_RX_CONTROL_1 (AR9170_MAC_REG_BASE + 0xc44)
-
-#define AR9170_MAC_REG_AMPDU_RX_THRESH (AR9170_MAC_REG_BASE + 0xc50)
-
-#define AR9170_MAC_REG_RX_MPDU (AR9170_MAC_REG_BASE + 0xca0)
-#define AR9170_MAC_REG_RX_DROPPED_MPDU (AR9170_MAC_REG_BASE + 0xca4)
-#define AR9170_MAC_REG_RX_DEL_MPDU (AR9170_MAC_REG_BASE + 0xca8)
-#define AR9170_MAC_REG_RX_PHY_MISC_ERROR (AR9170_MAC_REG_BASE + 0xcac)
-#define AR9170_MAC_REG_RX_PHY_XR_ERROR (AR9170_MAC_REG_BASE + 0xcb0)
-#define AR9170_MAC_REG_RX_PHY_OFDM_ERROR (AR9170_MAC_REG_BASE + 0xcb4)
-#define AR9170_MAC_REG_RX_PHY_CCK_ERROR (AR9170_MAC_REG_BASE + 0xcb8)
-#define AR9170_MAC_REG_RX_PHY_HT_ERROR (AR9170_MAC_REG_BASE + 0xcbc)
-#define AR9170_MAC_REG_RX_PHY_TOTAL (AR9170_MAC_REG_BASE + 0xcc0)
-
-#define AR9170_MAC_REG_DMA_TXQ_ADDR (AR9170_MAC_REG_BASE + 0xd00)
-#define AR9170_MAC_REG_DMA_TXQ_CURR_ADDR (AR9170_MAC_REG_BASE + 0xd04)
-#define AR9170_MAC_REG_DMA_TXQ0_ADDR (AR9170_MAC_REG_BASE + 0xd00)
-#define AR9170_MAC_REG_DMA_TXQ0_CURR_ADDR (AR9170_MAC_REG_BASE + 0xd04)
-#define AR9170_MAC_REG_DMA_TXQ1_ADDR (AR9170_MAC_REG_BASE + 0xd08)
-#define AR9170_MAC_REG_DMA_TXQ1_CURR_ADDR (AR9170_MAC_REG_BASE + 0xd0c)
-#define AR9170_MAC_REG_DMA_TXQ2_ADDR (AR9170_MAC_REG_BASE + 0xd10)
-#define AR9170_MAC_REG_DMA_TXQ2_CURR_ADDR (AR9170_MAC_REG_BASE + 0xd14)
-#define AR9170_MAC_REG_DMA_TXQ3_ADDR (AR9170_MAC_REG_BASE + 0xd18)
-#define AR9170_MAC_REG_DMA_TXQ3_CURR_ADDR (AR9170_MAC_REG_BASE + 0xd1c)
-#define AR9170_MAC_REG_DMA_TXQ4_ADDR (AR9170_MAC_REG_BASE + 0xd20)
-#define AR9170_MAC_REG_DMA_TXQ4_CURR_ADDR (AR9170_MAC_REG_BASE + 0xd24)
-#define AR9170_MAC_REG_DMA_RXQ_ADDR (AR9170_MAC_REG_BASE + 0xd28)
-#define AR9170_MAC_REG_DMA_RXQ_CURR_ADDR (AR9170_MAC_REG_BASE + 0xd2c)
-
-#define AR9170_MAC_REG_DMA_TRIGGER (AR9170_MAC_REG_BASE + 0xd30)
-#define AR9170_DMA_TRIGGER_TXQ0 BIT(0)
-#define AR9170_DMA_TRIGGER_TXQ1 BIT(1)
-#define AR9170_DMA_TRIGGER_TXQ2 BIT(2)
-#define AR9170_DMA_TRIGGER_TXQ3 BIT(3)
-#define AR9170_DMA_TRIGGER_TXQ4 BIT(4)
-#define AR9170_DMA_TRIGGER_RXQ BIT(8)
-
-#define AR9170_MAC_REG_DMA_WLAN_STATUS (AR9170_MAC_REG_BASE + 0xd38)
-#define AR9170_MAC_REG_DMA_STATUS (AR9170_MAC_REG_BASE + 0xd3c)
-#define AR9170_MAC_REG_DMA_TXQ_LAST_ADDR (AR9170_MAC_REG_BASE + 0xd40)
-#define AR9170_MAC_REG_DMA_TXQ0_LAST_ADDR (AR9170_MAC_REG_BASE + 0xd40)
-#define AR9170_MAC_REG_DMA_TXQ1_LAST_ADDR (AR9170_MAC_REG_BASE + 0xd44)
-#define AR9170_MAC_REG_DMA_TXQ2_LAST_ADDR (AR9170_MAC_REG_BASE + 0xd48)
-#define AR9170_MAC_REG_DMA_TXQ3_LAST_ADDR (AR9170_MAC_REG_BASE + 0xd4c)
-#define AR9170_MAC_REG_DMA_TXQ4_LAST_ADDR (AR9170_MAC_REG_BASE + 0xd50)
-#define AR9170_MAC_REG_DMA_TXQ0Q1_LEN (AR9170_MAC_REG_BASE + 0xd54)
-#define AR9170_MAC_REG_DMA_TXQ2Q3_LEN (AR9170_MAC_REG_BASE + 0xd58)
-#define AR9170_MAC_REG_DMA_TXQ4_LEN (AR9170_MAC_REG_BASE + 0xd5c)
-
-#define AR9170_MAC_REG_DMA_TXQX_LAST_ADDR (AR9170_MAC_REG_BASE + 0xd74)
-#define AR9170_MAC_REG_DMA_TXQX_FAIL_ADDR (AR9170_MAC_REG_BASE + 0xd78)
-#define AR9170_MAC_REG_TXRX_MPI (AR9170_MAC_REG_BASE + 0xd7c)
-#define AR9170_MAC_TXRX_MPI_TX_MPI_MASK 0x0000000f
-#define AR9170_MAC_TXRX_MPI_TX_TO_MASK 0x0000fff0
-#define AR9170_MAC_TXRX_MPI_RX_MPI_MASK 0x000f0000
-#define AR9170_MAC_TXRX_MPI_RX_TO_MASK 0xfff00000
-
-#define AR9170_MAC_REG_BCN_ADDR (AR9170_MAC_REG_BASE + 0xd84)
-#define AR9170_MAC_REG_BCN_LENGTH (AR9170_MAC_REG_BASE + 0xd88)
-#define AR9170_MAC_BCN_LENGTH_MAX 256
-
-#define AR9170_MAC_REG_BCN_STATUS (AR9170_MAC_REG_BASE + 0xd8c)
-
-#define AR9170_MAC_REG_BCN_PLCP (AR9170_MAC_REG_BASE + 0xd90)
-#define AR9170_MAC_REG_BCN_CTRL (AR9170_MAC_REG_BASE + 0xd94)
-#define AR9170_BCN_CTRL_READY 0x01
-#define AR9170_BCN_CTRL_LOCK 0x02
-
-#define AR9170_MAC_REG_BCN_CURR_ADDR (AR9170_MAC_REG_BASE + 0xd98)
-#define AR9170_MAC_REG_BCN_COUNT (AR9170_MAC_REG_BASE + 0xd9c)
-#define AR9170_MAC_REG_BCN_HT1 (AR9170_MAC_REG_BASE + 0xda0)
-#define AR9170_MAC_BCN_HT1_HT_EN BIT(0)
-#define AR9170_MAC_BCN_HT1_GF_PMB BIT(1)
-#define AR9170_MAC_BCN_HT1_SP_EXP BIT(2)
-#define AR9170_MAC_BCN_HT1_TX_BF BIT(3)
-#define AR9170_MAC_BCN_HT1_PWR_CTRL_S 4
-#define AR9170_MAC_BCN_HT1_PWR_CTRL 0x70
-#define AR9170_MAC_BCN_HT1_TX_ANT1 BIT(7)
-#define AR9170_MAC_BCN_HT1_TX_ANT0 BIT(8)
-#define AR9170_MAC_BCN_HT1_NUM_LFT_S 9
-#define AR9170_MAC_BCN_HT1_NUM_LFT 0x600
-#define AR9170_MAC_BCN_HT1_BWC_20M_EXT BIT(16)
-#define AR9170_MAC_BCN_HT1_BWC_40M_SHARED BIT(17)
-#define AR9170_MAC_BCN_HT1_BWC_40M_DUP (BIT(16) | BIT(17))
-#define AR9170_MAC_BCN_HT1_BF_MCS_S 18
-#define AR9170_MAC_BCN_HT1_BF_MCS 0x1c0000
-#define AR9170_MAC_BCN_HT1_TPC_S 21
-#define AR9170_MAC_BCN_HT1_TPC 0x7e00000
-#define AR9170_MAC_BCN_HT1_CHAIN_MASK_S 27
-#define AR9170_MAC_BCN_HT1_CHAIN_MASK 0x38000000
-
-#define AR9170_MAC_REG_BCN_HT2 (AR9170_MAC_REG_BASE + 0xda4)
-#define AR9170_MAC_BCN_HT2_MCS_S 0
-#define AR9170_MAC_BCN_HT2_MCS 0x7f
-#define AR9170_MAC_BCN_HT2_BW40 BIT(8)
-#define AR9170_MAC_BCN_HT2_SMOOTHING BIT(9)
-#define AR9170_MAC_BCN_HT2_SS BIT(10)
-#define AR9170_MAC_BCN_HT2_NSS BIT(11)
-#define AR9170_MAC_BCN_HT2_STBC_S 12
-#define AR9170_MAC_BCN_HT2_STBC 0x3000
-#define AR9170_MAC_BCN_HT2_ADV_COD BIT(14)
-#define AR9170_MAC_BCN_HT2_SGI BIT(15)
-#define AR9170_MAC_BCN_HT2_LEN_S 16
-#define AR9170_MAC_BCN_HT2_LEN 0xffff0000
-
-#define AR9170_MAC_REG_DMA_TXQX_ADDR_CURR (AR9170_MAC_REG_BASE + 0xdc0)
-
-/* Random number generator */
-#define AR9170_RAND_REG_BASE 0x1d0000
-
-#define AR9170_RAND_REG_NUM (AR9170_RAND_REG_BASE + 0x000)
-#define AR9170_RAND_REG_MODE (AR9170_RAND_REG_BASE + 0x004)
-#define AR9170_RAND_MODE_MANUAL 0x000
-#define AR9170_RAND_MODE_FREE 0x001
-
-/* GPIO */
-#define AR9170_GPIO_REG_BASE 0x1d0100
-#define AR9170_GPIO_REG_PORT_TYPE (AR9170_GPIO_REG_BASE + 0x000)
-#define AR9170_GPIO_REG_PORT_DATA (AR9170_GPIO_REG_BASE + 0x004)
-#define AR9170_GPIO_PORT_LED_0 1
-#define AR9170_GPIO_PORT_LED_1 2
-/* WPS Button GPIO for TP-Link TL-WN821N */
-#define AR9170_GPIO_PORT_WPS_BUTTON_PRESSED 4
-
-/* Memory Controller */
-#define AR9170_MC_REG_BASE 0x1d1000
-
-#define AR9170_MC_REG_FLASH_WAIT_STATE (AR9170_MC_REG_BASE + 0x000)
-#define AR9170_MC_REG_SEEPROM_WP0 (AR9170_MC_REG_BASE + 0x400)
-#define AR9170_MC_REG_SEEPROM_WP1 (AR9170_MC_REG_BASE + 0x404)
-#define AR9170_MC_REG_SEEPROM_WP2 (AR9170_MC_REG_BASE + 0x408)
-
-/* Interrupt Controller */
-#define AR9170_MAX_INT_SRC 9
-#define AR9170_INT_REG_BASE 0x1d2000
-
-#define AR9170_INT_REG_FLAG (AR9170_INT_REG_BASE + 0x000)
-#define AR9170_INT_REG_FIQ_MASK (AR9170_INT_REG_BASE + 0x004)
-#define AR9170_INT_REG_IRQ_MASK (AR9170_INT_REG_BASE + 0x008)
-/* INT_REG_FLAG, INT_REG_FIQ_MASK and INT_REG_IRQ_MASK */
-#define AR9170_INT_FLAG_WLAN 0x001
-#define AR9170_INT_FLAG_PTAB_BIT 0x002
-#define AR9170_INT_FLAG_SE_BIT 0x004
-#define AR9170_INT_FLAG_UART_BIT 0x008
-#define AR9170_INT_FLAG_TIMER_BIT 0x010
-#define AR9170_INT_FLAG_EXT_BIT 0x020
-#define AR9170_INT_FLAG_SW_BIT 0x040
-#define AR9170_INT_FLAG_USB_BIT 0x080
-#define AR9170_INT_FLAG_ETHERNET_BIT 0x100
-
-#define AR9170_INT_REG_PRIORITY1 (AR9170_INT_REG_BASE + 0x00c)
-#define AR9170_INT_REG_PRIORITY2 (AR9170_INT_REG_BASE + 0x010)
-#define AR9170_INT_REG_PRIORITY3 (AR9170_INT_REG_BASE + 0x014)
-#define AR9170_INT_REG_EXT_INT_CONTROL (AR9170_INT_REG_BASE + 0x018)
-#define AR9170_INT_REG_SW_INT_CONTROL (AR9170_INT_REG_BASE + 0x01c)
-#define AR9170_INT_SW_INT_ENABLE 0x1
-
-#define AR9170_INT_REG_FIQ_ENCODE (AR9170_INT_REG_BASE + 0x020)
-#define AR9170_INT_INT_IRQ_ENCODE (AR9170_INT_REG_BASE + 0x024)
-
-/* Power Management */
-#define AR9170_PWR_REG_BASE 0x1d4000
-
-#define AR9170_PWR_REG_POWER_STATE (AR9170_PWR_REG_BASE + 0x000)
-
-#define AR9170_PWR_REG_RESET (AR9170_PWR_REG_BASE + 0x004)
-#define AR9170_PWR_RESET_COMMIT_RESET_MASK BIT(0)
-#define AR9170_PWR_RESET_WLAN_MASK BIT(1)
-#define AR9170_PWR_RESET_DMA_MASK BIT(2)
-#define AR9170_PWR_RESET_BRIDGE_MASK BIT(3)
-#define AR9170_PWR_RESET_AHB_MASK BIT(9)
-#define AR9170_PWR_RESET_BB_WARM_RESET BIT(10)
-#define AR9170_PWR_RESET_BB_COLD_RESET BIT(11)
-#define AR9170_PWR_RESET_ADDA_CLK_COLD_RESET BIT(12)
-#define AR9170_PWR_RESET_PLL BIT(13)
-#define AR9170_PWR_RESET_USB_PLL BIT(14)
-
-#define AR9170_PWR_REG_CLOCK_SEL (AR9170_PWR_REG_BASE + 0x008)
-#define AR9170_PWR_CLK_AHB_40MHZ 0
-#define AR9170_PWR_CLK_AHB_20_22MHZ 1
-#define AR9170_PWR_CLK_AHB_40_44MHZ 2
-#define AR9170_PWR_CLK_AHB_80_88MHZ 3
-#define AR9170_PWR_CLK_DAC_160_INV_DLY 0x70
-
-#define AR9170_PWR_REG_CHIP_REVISION (AR9170_PWR_REG_BASE + 0x010)
-#define AR9170_PWR_REG_PLL_ADDAC (AR9170_PWR_REG_BASE + 0x014)
-#define AR9170_PWR_PLL_ADDAC_DIV_S 2
-#define AR9170_PWR_PLL_ADDAC_DIV 0xffc
-#define AR9170_PWR_REG_WATCH_DOG_MAGIC (AR9170_PWR_REG_BASE + 0x020)
-
-/* Faraday USB Controller */
-#define AR9170_USB_REG_BASE 0x1e1000
-
-#define AR9170_USB_REG_MAIN_CTRL (AR9170_USB_REG_BASE + 0x000)
-#define AR9170_USB_MAIN_CTRL_REMOTE_WAKEUP BIT(0)
-#define AR9170_USB_MAIN_CTRL_ENABLE_GLOBAL_INT BIT(2)
-#define AR9170_USB_MAIN_CTRL_GO_TO_SUSPEND BIT(3)
-#define AR9170_USB_MAIN_CTRL_RESET BIT(4)
-#define AR9170_USB_MAIN_CTRL_CHIP_ENABLE BIT(5)
-#define AR9170_USB_MAIN_CTRL_HIGHSPEED BIT(6)
-
-#define AR9170_USB_REG_DEVICE_ADDRESS (AR9170_USB_REG_BASE + 0x001)
-#define AR9170_USB_DEVICE_ADDRESS_CONFIGURE BIT(7)
-
-#define AR9170_USB_REG_TEST (AR9170_USB_REG_BASE + 0x002)
-#define AR9170_USB_REG_PHY_TEST_SELECT (AR9170_USB_REG_BASE + 0x008)
-#define AR9170_USB_REG_CX_CONFIG_STATUS (AR9170_USB_REG_BASE + 0x00b)
-#define AR9170_USB_REG_EP0_DATA (AR9170_USB_REG_BASE + 0x00c)
-#define AR9170_USB_REG_EP0_DATA1 (AR9170_USB_REG_BASE + 0x00c)
-#define AR9170_USB_REG_EP0_DATA2 (AR9170_USB_REG_BASE + 0x00d)
-
-#define AR9170_USB_REG_INTR_MASK_BYTE_0 (AR9170_USB_REG_BASE + 0x011)
-#define AR9170_USB_REG_INTR_MASK_BYTE_1 (AR9170_USB_REG_BASE + 0x012)
-#define AR9170_USB_REG_INTR_MASK_BYTE_2 (AR9170_USB_REG_BASE + 0x013)
-#define AR9170_USB_REG_INTR_MASK_BYTE_3 (AR9170_USB_REG_BASE + 0x014)
-#define AR9170_USB_REG_INTR_MASK_BYTE_4 (AR9170_USB_REG_BASE + 0x015)
-#define AR9170_USB_INTR_DISABLE_OUT_INT (BIT(7) | BIT(6))
-
-#define AR9170_USB_REG_INTR_MASK_BYTE_5 (AR9170_USB_REG_BASE + 0x016)
-#define AR9170_USB_REG_INTR_MASK_BYTE_6 (AR9170_USB_REG_BASE + 0x017)
-#define AR9170_USB_INTR_DISABLE_IN_INT BIT(6)
-
-#define AR9170_USB_REG_INTR_MASK_BYTE_7 (AR9170_USB_REG_BASE + 0x018)
-
-#define AR9170_USB_REG_INTR_GROUP (AR9170_USB_REG_BASE + 0x020)
-
-#define AR9170_USB_REG_INTR_SOURCE_0 (AR9170_USB_REG_BASE + 0x021)
-#define AR9170_USB_INTR_SRC0_SETUP BIT(0)
-#define AR9170_USB_INTR_SRC0_IN BIT(1)
-#define AR9170_USB_INTR_SRC0_OUT BIT(2)
-#define AR9170_USB_INTR_SRC0_FAIL BIT(3) /* ??? */
-#define AR9170_USB_INTR_SRC0_END BIT(4) /* ??? */
-#define AR9170_USB_INTR_SRC0_ABORT BIT(7)
-
-#define AR9170_USB_REG_INTR_SOURCE_1 (AR9170_USB_REG_BASE + 0x022)
-#define AR9170_USB_REG_INTR_SOURCE_2 (AR9170_USB_REG_BASE + 0x023)
-#define AR9170_USB_REG_INTR_SOURCE_3 (AR9170_USB_REG_BASE + 0x024)
-#define AR9170_USB_REG_INTR_SOURCE_4 (AR9170_USB_REG_BASE + 0x025)
-#define AR9170_USB_REG_INTR_SOURCE_5 (AR9170_USB_REG_BASE + 0x026)
-#define AR9170_USB_REG_INTR_SOURCE_6 (AR9170_USB_REG_BASE + 0x027)
-#define AR9170_USB_REG_INTR_SOURCE_7 (AR9170_USB_REG_BASE + 0x028)
-#define AR9170_USB_INTR_SRC7_USB_RESET BIT(1)
-#define AR9170_USB_INTR_SRC7_USB_SUSPEND BIT(2)
-#define AR9170_USB_INTR_SRC7_USB_RESUME BIT(3)
-#define AR9170_USB_INTR_SRC7_ISO_SEQ_ERR BIT(4)
-#define AR9170_USB_INTR_SRC7_ISO_SEQ_ABORT BIT(5)
-#define AR9170_USB_INTR_SRC7_TX0BYTE BIT(6)
-#define AR9170_USB_INTR_SRC7_RX0BYTE BIT(7)
-
-#define AR9170_USB_REG_IDLE_COUNT (AR9170_USB_REG_BASE + 0x02f)
-
-#define AR9170_USB_REG_EP_MAP (AR9170_USB_REG_BASE + 0x030)
-#define AR9170_USB_REG_EP1_MAP (AR9170_USB_REG_BASE + 0x030)
-#define AR9170_USB_REG_EP2_MAP (AR9170_USB_REG_BASE + 0x031)
-#define AR9170_USB_REG_EP3_MAP (AR9170_USB_REG_BASE + 0x032)
-#define AR9170_USB_REG_EP4_MAP (AR9170_USB_REG_BASE + 0x033)
-#define AR9170_USB_REG_EP5_MAP (AR9170_USB_REG_BASE + 0x034)
-#define AR9170_USB_REG_EP6_MAP (AR9170_USB_REG_BASE + 0x035)
-#define AR9170_USB_REG_EP7_MAP (AR9170_USB_REG_BASE + 0x036)
-#define AR9170_USB_REG_EP8_MAP (AR9170_USB_REG_BASE + 0x037)
-#define AR9170_USB_REG_EP9_MAP (AR9170_USB_REG_BASE + 0x038)
-#define AR9170_USB_REG_EP10_MAP (AR9170_USB_REG_BASE + 0x039)
-
-#define AR9170_USB_REG_EP_IN_MAX_SIZE_HIGH (AR9170_USB_REG_BASE + 0x03f)
-#define AR9170_USB_EP_IN_TOGGLE 0x10
-
-#define AR9170_USB_REG_EP_IN_MAX_SIZE_LOW (AR9170_USB_REG_BASE + 0x03e)
-
-#define AR9170_USB_REG_EP_OUT_MAX_SIZE_HIGH (AR9170_USB_REG_BASE + 0x05f)
-#define AR9170_USB_EP_OUT_TOGGLE 0x10
-
-#define AR9170_USB_REG_EP_OUT_MAX_SIZE_LOW (AR9170_USB_REG_BASE + 0x05e)
-
-#define AR9170_USB_REG_EP3_BYTE_COUNT_HIGH (AR9170_USB_REG_BASE + 0x0ae)
-#define AR9170_USB_REG_EP3_BYTE_COUNT_LOW (AR9170_USB_REG_BASE + 0x0be)
-#define AR9170_USB_REG_EP4_BYTE_COUNT_HIGH (AR9170_USB_REG_BASE + 0x0af)
-#define AR9170_USB_REG_EP4_BYTE_COUNT_LOW (AR9170_USB_REG_BASE + 0x0bf)
-
-#define AR9170_USB_REG_FIFO_MAP (AR9170_USB_REG_BASE + 0x080)
-#define AR9170_USB_REG_FIFO0_MAP (AR9170_USB_REG_BASE + 0x080)
-#define AR9170_USB_REG_FIFO1_MAP (AR9170_USB_REG_BASE + 0x081)
-#define AR9170_USB_REG_FIFO2_MAP (AR9170_USB_REG_BASE + 0x082)
-#define AR9170_USB_REG_FIFO3_MAP (AR9170_USB_REG_BASE + 0x083)
-#define AR9170_USB_REG_FIFO4_MAP (AR9170_USB_REG_BASE + 0x084)
-#define AR9170_USB_REG_FIFO5_MAP (AR9170_USB_REG_BASE + 0x085)
-#define AR9170_USB_REG_FIFO6_MAP (AR9170_USB_REG_BASE + 0x086)
-#define AR9170_USB_REG_FIFO7_MAP (AR9170_USB_REG_BASE + 0x087)
-#define AR9170_USB_REG_FIFO8_MAP (AR9170_USB_REG_BASE + 0x088)
-#define AR9170_USB_REG_FIFO9_MAP (AR9170_USB_REG_BASE + 0x089)
-
-#define AR9170_USB_REG_FIFO_CONFIG (AR9170_USB_REG_BASE + 0x090)
-#define AR9170_USB_REG_FIFO0_CONFIG (AR9170_USB_REG_BASE + 0x090)
-#define AR9170_USB_REG_FIFO1_CONFIG (AR9170_USB_REG_BASE + 0x091)
-#define AR9170_USB_REG_FIFO2_CONFIG (AR9170_USB_REG_BASE + 0x092)
-#define AR9170_USB_REG_FIFO3_CONFIG (AR9170_USB_REG_BASE + 0x093)
-#define AR9170_USB_REG_FIFO4_CONFIG (AR9170_USB_REG_BASE + 0x094)
-#define AR9170_USB_REG_FIFO5_CONFIG (AR9170_USB_REG_BASE + 0x095)
-#define AR9170_USB_REG_FIFO6_CONFIG (AR9170_USB_REG_BASE + 0x096)
-#define AR9170_USB_REG_FIFO7_CONFIG (AR9170_USB_REG_BASE + 0x097)
-#define AR9170_USB_REG_FIFO8_CONFIG (AR9170_USB_REG_BASE + 0x098)
-#define AR9170_USB_REG_FIFO9_CONFIG (AR9170_USB_REG_BASE + 0x099)
-
-#define AR9170_USB_REG_EP3_DATA (AR9170_USB_REG_BASE + 0x0f8)
-#define AR9170_USB_REG_EP4_DATA (AR9170_USB_REG_BASE + 0x0fc)
-
-#define AR9170_USB_REG_FIFO_SIZE (AR9170_USB_REG_BASE + 0x100)
-#define AR9170_USB_REG_DMA_CTL (AR9170_USB_REG_BASE + 0x108)
-#define AR9170_USB_DMA_CTL_ENABLE_TO_DEVICE BIT(0)
-#define AR9170_USB_DMA_CTL_ENABLE_FROM_DEVICE BIT(1)
-#define AR9170_USB_DMA_CTL_HIGH_SPEED BIT(2)
-#define AR9170_USB_DMA_CTL_UP_PACKET_MODE BIT(3)
-#define AR9170_USB_DMA_CTL_UP_STREAM_S 4
-#define AR9170_USB_DMA_CTL_UP_STREAM (BIT(4) | BIT(5))
-#define AR9170_USB_DMA_CTL_UP_STREAM_4K (0)
-#define AR9170_USB_DMA_CTL_UP_STREAM_8K BIT(4)
-#define AR9170_USB_DMA_CTL_UP_STREAM_16K BIT(5)
-#define AR9170_USB_DMA_CTL_UP_STREAM_32K (BIT(4) | BIT(5))
-#define AR9170_USB_DMA_CTL_DOWN_STREAM BIT(6)
-
-#define AR9170_USB_REG_DMA_STATUS (AR9170_USB_REG_BASE + 0x10c)
-#define AR9170_USB_DMA_STATUS_UP_IDLE BIT(8)
-#define AR9170_USB_DMA_STATUS_DN_IDLE BIT(16)
-
-#define AR9170_USB_REG_MAX_AGG_UPLOAD (AR9170_USB_REG_BASE + 0x110)
-#define AR9170_USB_REG_UPLOAD_TIME_CTL (AR9170_USB_REG_BASE + 0x114)
-
-#define AR9170_USB_REG_WAKE_UP (AR9170_USB_REG_BASE + 0x120)
-#define AR9170_USB_WAKE_UP_WAKE BIT(0)
-
-#define AR9170_USB_REG_CBUS_CTRL (AR9170_USB_REG_BASE + 0x1f0)
-#define AR9170_USB_CBUS_CTRL_BUFFER_END (BIT(1))
-
-/* PCI/USB to AHB Bridge */
-#define AR9170_PTA_REG_BASE 0x1e2000
-
-#define AR9170_PTA_REG_CMD (AR9170_PTA_REG_BASE + 0x000)
-#define AR9170_PTA_REG_PARAM1 (AR9170_PTA_REG_BASE + 0x004)
-#define AR9170_PTA_REG_PARAM2 (AR9170_PTA_REG_BASE + 0x008)
-#define AR9170_PTA_REG_PARAM3 (AR9170_PTA_REG_BASE + 0x00c)
-#define AR9170_PTA_REG_RSP (AR9170_PTA_REG_BASE + 0x010)
-#define AR9170_PTA_REG_STATUS1 (AR9170_PTA_REG_BASE + 0x014)
-#define AR9170_PTA_REG_STATUS2 (AR9170_PTA_REG_BASE + 0x018)
-#define AR9170_PTA_REG_STATUS3 (AR9170_PTA_REG_BASE + 0x01c)
-#define AR9170_PTA_REG_AHB_INT_FLAG (AR9170_PTA_REG_BASE + 0x020)
-#define AR9170_PTA_REG_AHB_INT_MASK (AR9170_PTA_REG_BASE + 0x024)
-#define AR9170_PTA_REG_AHB_INT_ACK (AR9170_PTA_REG_BASE + 0x028)
-#define AR9170_PTA_REG_AHB_SCRATCH1 (AR9170_PTA_REG_BASE + 0x030)
-#define AR9170_PTA_REG_AHB_SCRATCH2 (AR9170_PTA_REG_BASE + 0x034)
-#define AR9170_PTA_REG_AHB_SCRATCH3 (AR9170_PTA_REG_BASE + 0x038)
-#define AR9170_PTA_REG_AHB_SCRATCH4 (AR9170_PTA_REG_BASE + 0x03c)
-
-#define AR9170_PTA_REG_SHARE_MEM_CTRL (AR9170_PTA_REG_BASE + 0x124)
-
-/*
- * PCI to AHB Bridge
- */
-
-#define AR9170_PTA_REG_INT_FLAG (AR9170_PTA_REG_BASE + 0x100)
-#define AR9170_PTA_INT_FLAG_DN 0x01
-#define AR9170_PTA_INT_FLAG_UP 0x02
-#define AR9170_PTA_INT_FLAG_CMD 0x04
-
-#define AR9170_PTA_REG_INT_MASK (AR9170_PTA_REG_BASE + 0x104)
-#define AR9170_PTA_REG_DN_DMA_ADDRL (AR9170_PTA_REG_BASE + 0x108)
-#define AR9170_PTA_REG_DN_DMA_ADDRH (AR9170_PTA_REG_BASE + 0x10c)
-#define AR9170_PTA_REG_UP_DMA_ADDRL (AR9170_PTA_REG_BASE + 0x110)
-#define AR9170_PTA_REG_UP_DMA_ADDRH (AR9170_PTA_REG_BASE + 0x114)
-#define AR9170_PTA_REG_DN_PEND_TIME (AR9170_PTA_REG_BASE + 0x118)
-#define AR9170_PTA_REG_UP_PEND_TIME (AR9170_PTA_REG_BASE + 0x11c)
-#define AR9170_PTA_REG_CONTROL (AR9170_PTA_REG_BASE + 0x120)
-#define AR9170_PTA_CTRL_4_BEAT_BURST 0x00
-#define AR9170_PTA_CTRL_8_BEAT_BURST 0x01
-#define AR9170_PTA_CTRL_16_BEAT_BURST 0x02
-#define AR9170_PTA_CTRL_LOOPBACK_MODE 0x10
-
-#define AR9170_PTA_REG_MEM_CTRL (AR9170_PTA_REG_BASE + 0x124)
-#define AR9170_PTA_REG_MEM_ADDR (AR9170_PTA_REG_BASE + 0x128)
-#define AR9170_PTA_REG_DN_DMA_TRIGGER (AR9170_PTA_REG_BASE + 0x12c)
-#define AR9170_PTA_REG_UP_DMA_TRIGGER (AR9170_PTA_REG_BASE + 0x130)
-#define AR9170_PTA_REG_DMA_STATUS (AR9170_PTA_REG_BASE + 0x134)
-#define AR9170_PTA_REG_DN_CURR_ADDRL (AR9170_PTA_REG_BASE + 0x138)
-#define AR9170_PTA_REG_DN_CURR_ADDRH (AR9170_PTA_REG_BASE + 0x13c)
-#define AR9170_PTA_REG_UP_CURR_ADDRL (AR9170_PTA_REG_BASE + 0x140)
-#define AR9170_PTA_REG_UP_CURR_ADDRH (AR9170_PTA_REG_BASE + 0x144)
-#define AR9170_PTA_REG_DMA_MODE_CTRL (AR9170_PTA_REG_BASE + 0x148)
-#define AR9170_PTA_DMA_MODE_CTRL_RESET BIT(0)
-#define AR9170_PTA_DMA_MODE_CTRL_DISABLE_USB BIT(1)
-
-/* Protocol Controller Module */
-#define AR9170_MAC_REG_PC_REG_BASE (AR9170_MAC_REG_BASE + 0xe00)
-
-
-#define AR9170_NUM_LEDS 2
-
-/* CAM */
-#define AR9170_CAM_MAX_USER 64
-#define AR9170_CAM_MAX_KEY_LENGTH 16
-
-#define AR9170_SRAM_OFFSET 0x100000
-#define AR9170_SRAM_SIZE 0x18000
-
-#define AR9170_PRAM_OFFSET 0x200000
-#define AR9170_PRAM_SIZE 0x8000
-
-enum cpu_clock {
- AHB_STATIC_40MHZ = 0,
- AHB_GMODE_22MHZ = 1,
- AHB_AMODE_20MHZ = 1,
- AHB_GMODE_44MHZ = 2,
- AHB_AMODE_40MHZ = 2,
- AHB_GMODE_88MHZ = 3,
- AHB_AMODE_80MHZ = 3
-};
-
-/* USB endpoints */
-enum ar9170_usb_ep {
- /*
- * Control EP is always EP 0 (USB SPEC)
- *
- * The weird thing is: the original firmware has a few
- * comments that suggest that the actual EP numbers
- * are in the 1 to 10 range?!
- */
- AR9170_USB_EP_CTRL = 0,
-
- AR9170_USB_EP_TX,
- AR9170_USB_EP_RX,
- AR9170_USB_EP_IRQ,
- AR9170_USB_EP_CMD,
- AR9170_USB_NUM_EXTRA_EP = 4,
-
- __AR9170_USB_NUM_EP,
-
- __AR9170_USB_NUM_MAX_EP = 10
-};
-
-enum ar9170_usb_fifo {
- __AR9170_USB_NUM_MAX_FIFO = 10
-};
-
-enum ar9170_tx_queues {
- AR9170_TXQ0 = 0,
- AR9170_TXQ1,
- AR9170_TXQ2,
- AR9170_TXQ3,
- AR9170_TXQ_SPECIAL,
-
- /* keep last */
- __AR9170_NUM_TX_QUEUES = 5
-};
-
-#define AR9170_TX_STREAM_TAG 0x697e
-#define AR9170_RX_STREAM_TAG 0x4e00
-#define AR9170_RX_STREAM_MAX_SIZE 0xffff
-
-struct ar9170_stream {
- __le16 length;
- __le16 tag;
-
- u8 payload[0];
-} __packed __aligned(4);
-#define AR9170_STREAM_LEN 4
-
-#define AR9170_MAX_ACKTABLE_ENTRIES 8
-#define AR9170_MAX_VIRTUAL_MAC 7
-
-#define AR9170_USB_EP_CTRL_MAX 64
-#define AR9170_USB_EP_TX_MAX 512
-#define AR9170_USB_EP_RX_MAX 512
-#define AR9170_USB_EP_IRQ_MAX 64
-#define AR9170_USB_EP_CMD_MAX 64
-
-/* Trigger PRETBTT interrupt 6 Kus earlier */
-#define CARL9170_PRETBTT_KUS 6
-
-#define AR5416_MAX_RATE_POWER 63
-
-#define SET_VAL(reg, value, newvalue) \
- (value = ((value) & ~reg) | (((newvalue) << reg##_S) & reg))
-
-#define SET_CONSTVAL(reg, newvalue) \
- (((newvalue) << reg##_S) & reg)
-
-#define MOD_VAL(reg, value, newvalue) \
- (((value) & ~reg) | (((newvalue) << reg##_S) & reg))
-
-#define GET_VAL(reg, value) \
- (((value) & reg) >> reg##_S)
-
-#endif /* __CARL9170_SHARED_HW_H */
diff --git a/carl9170fw/include/shared/phy.h b/carl9170fw/include/shared/phy.h
deleted file mode 100644
index 024fb42..0000000
--- a/carl9170fw/include/shared/phy.h
+++ /dev/null
@@ -1,564 +0,0 @@
-/*
- * Shared Atheros AR9170 Header
- *
- * PHY register map
- *
- * Copyright (c) 2008-2009 Atheros Communications Inc.
- *
- * 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.
- */
-
-#ifndef __CARL9170_SHARED_PHY_H
-#define __CARL9170_SHARED_PHY_H
-
-#define AR9170_PHY_REG_BASE (0x1bc000 + 0x9800)
-#define AR9170_PHY_REG(_n) (AR9170_PHY_REG_BASE + \
- ((_n) << 2))
-
-#define AR9170_PHY_REG_TEST (AR9170_PHY_REG_BASE + 0x0000)
-#define AR9170_PHY_TEST_AGC_CLR 0x10000000
-#define AR9170_PHY_TEST_RFSILENT_BB 0x00002000
-
-#define AR9170_PHY_REG_TURBO (AR9170_PHY_REG_BASE + 0x0004)
-#define AR9170_PHY_TURBO_FC_TURBO_MODE 0x00000001
-#define AR9170_PHY_TURBO_FC_TURBO_SHORT 0x00000002
-#define AR9170_PHY_TURBO_FC_DYN2040_EN 0x00000004
-#define AR9170_PHY_TURBO_FC_DYN2040_PRI_ONLY 0x00000008
-#define AR9170_PHY_TURBO_FC_DYN2040_PRI_CH 0x00000010
-/* For 25 MHz channel spacing -- not used but supported by hw */
-#define AR9170_PHY_TURBO_FC_DYN2040_EXT_CH 0x00000020
-#define AR9170_PHY_TURBO_FC_HT_EN 0x00000040
-#define AR9170_PHY_TURBO_FC_SHORT_GI_40 0x00000080
-#define AR9170_PHY_TURBO_FC_WALSH 0x00000100
-#define AR9170_PHY_TURBO_FC_SINGLE_HT_LTF1 0x00000200
-#define AR9170_PHY_TURBO_FC_ENABLE_DAC_FIFO 0x00000800
-
-#define AR9170_PHY_REG_TEST2 (AR9170_PHY_REG_BASE + 0x0008)
-
-#define AR9170_PHY_REG_TIMING2 (AR9170_PHY_REG_BASE + 0x0010)
-#define AR9170_PHY_TIMING2_USE_FORCE 0x00001000
-#define AR9170_PHY_TIMING2_FORCE 0x00000fff
-#define AR9170_PHY_TIMING2_FORCE_S 0
-
-#define AR9170_PHY_REG_TIMING3 (AR9170_PHY_REG_BASE + 0x0014)
-#define AR9170_PHY_TIMING3_DSC_EXP 0x0001e000
-#define AR9170_PHY_TIMING3_DSC_EXP_S 13
-#define AR9170_PHY_TIMING3_DSC_MAN 0xfffe0000
-#define AR9170_PHY_TIMING3_DSC_MAN_S 17
-
-#define AR9170_PHY_REG_CHIP_ID (AR9170_PHY_REG_BASE + 0x0018)
-#define AR9170_PHY_CHIP_ID_REV_0 0x80
-#define AR9170_PHY_CHIP_ID_REV_1 0x81
-#define AR9170_PHY_CHIP_ID_9160_REV_0 0xb0
-
-#define AR9170_PHY_REG_ACTIVE (AR9170_PHY_REG_BASE + 0x001c)
-#define AR9170_PHY_ACTIVE_EN 0x00000001
-#define AR9170_PHY_ACTIVE_DIS 0x00000000
-
-#define AR9170_PHY_REG_RF_CTL2 (AR9170_PHY_REG_BASE + 0x0024)
-#define AR9170_PHY_RF_CTL2_TX_END_DATA_START 0x000000ff
-#define AR9170_PHY_RF_CTL2_TX_END_DATA_START_S 0
-#define AR9170_PHY_RF_CTL2_TX_END_PA_ON 0x0000ff00
-#define AR9170_PHY_RF_CTL2_TX_END_PA_ON_S 8
-
-#define AR9170_PHY_REG_RF_CTL3 (AR9170_PHY_REG_BASE + 0x0028)
-#define AR9170_PHY_RF_CTL3_TX_END_TO_A2_RX_ON 0x00ff0000
-#define AR9170_PHY_RF_CTL3_TX_END_TO_A2_RX_ON_S 16
-
-#define AR9170_PHY_REG_ADC_CTL (AR9170_PHY_REG_BASE + 0x002c)
-#define AR9170_PHY_ADC_CTL_OFF_INBUFGAIN 0x00000003
-#define AR9170_PHY_ADC_CTL_OFF_INBUFGAIN_S 0
-#define AR9170_PHY_ADC_CTL_OFF_PWDDAC 0x00002000
-#define AR9170_PHY_ADC_CTL_OFF_PWDBANDGAP 0x00004000
-#define AR9170_PHY_ADC_CTL_OFF_PWDADC 0x00008000
-#define AR9170_PHY_ADC_CTL_ON_INBUFGAIN 0x00030000
-#define AR9170_PHY_ADC_CTL_ON_INBUFGAIN_S 16
-
-#define AR9170_PHY_REG_ADC_SERIAL_CTL (AR9170_PHY_REG_BASE + 0x0030)
-#define AR9170_PHY_ADC_SCTL_SEL_INTERNAL_ADDAC 0x00000000
-#define AR9170_PHY_ADC_SCTL_SEL_EXTERNAL_RADIO 0x00000001
-
-#define AR9170_PHY_REG_RF_CTL4 (AR9170_PHY_REG_BASE + 0x0034)
-#define AR9170_PHY_RF_CTL4_TX_END_XPAB_OFF 0xff000000
-#define AR9170_PHY_RF_CTL4_TX_END_XPAB_OFF_S 24
-#define AR9170_PHY_RF_CTL4_TX_END_XPAA_OFF 0x00ff0000
-#define AR9170_PHY_RF_CTL4_TX_END_XPAA_OFF_S 16
-#define AR9170_PHY_RF_CTL4_FRAME_XPAB_ON 0x0000ff00
-#define AR9170_PHY_RF_CTL4_FRAME_XPAB_ON_S 8
-#define AR9170_PHY_RF_CTL4_FRAME_XPAA_ON 0x000000ff
-#define AR9170_PHY_RF_CTL4_FRAME_XPAA_ON_S 0
-
-#define AR9170_PHY_REG_TSTDAC_CONST (AR9170_PHY_REG_BASE + 0x003c)
-
-#define AR9170_PHY_REG_SETTLING (AR9170_PHY_REG_BASE + 0x0044)
-#define AR9170_PHY_SETTLING_SWITCH 0x00003f80
-#define AR9170_PHY_SETTLING_SWITCH_S 7
-
-#define AR9170_PHY_REG_RXGAIN (AR9170_PHY_REG_BASE + 0x0048)
-#define AR9170_PHY_REG_RXGAIN_CHAIN_2 (AR9170_PHY_REG_BASE + 0x2048)
-#define AR9170_PHY_RXGAIN_TXRX_ATTEN 0x0003f000
-#define AR9170_PHY_RXGAIN_TXRX_ATTEN_S 12
-#define AR9170_PHY_RXGAIN_TXRX_RF_MAX 0x007c0000
-#define AR9170_PHY_RXGAIN_TXRX_RF_MAX_S 18
-
-#define AR9170_PHY_REG_DESIRED_SZ (AR9170_PHY_REG_BASE + 0x0050)
-#define AR9170_PHY_DESIRED_SZ_ADC 0x000000ff
-#define AR9170_PHY_DESIRED_SZ_ADC_S 0
-#define AR9170_PHY_DESIRED_SZ_PGA 0x0000ff00
-#define AR9170_PHY_DESIRED_SZ_PGA_S 8
-#define AR9170_PHY_DESIRED_SZ_TOT_DES 0x0ff00000
-#define AR9170_PHY_DESIRED_SZ_TOT_DES_S 20
-
-#define AR9170_PHY_REG_FIND_SIG (AR9170_PHY_REG_BASE + 0x0058)
-#define AR9170_PHY_FIND_SIG_FIRSTEP 0x0003f000
-#define AR9170_PHY_FIND_SIG_FIRSTEP_S 12
-#define AR9170_PHY_FIND_SIG_FIRPWR 0x03fc0000
-#define AR9170_PHY_FIND_SIG_FIRPWR_S 18
-
-#define AR9170_PHY_REG_AGC_CTL1 (AR9170_PHY_REG_BASE + 0x005c)
-#define AR9170_PHY_AGC_CTL1_COARSE_LOW 0x00007f80
-#define AR9170_PHY_AGC_CTL1_COARSE_LOW_S 7
-#define AR9170_PHY_AGC_CTL1_COARSE_HIGH 0x003f8000
-#define AR9170_PHY_AGC_CTL1_COARSE_HIGH_S 15
-
-#define AR9170_PHY_REG_AGC_CONTROL (AR9170_PHY_REG_BASE + 0x0060)
-#define AR9170_PHY_AGC_CONTROL_CAL 0x00000001
-#define AR9170_PHY_AGC_CONTROL_NF 0x00000002
-#define AR9170_PHY_AGC_CONTROL_ENABLE_NF 0x00008000
-#define AR9170_PHY_AGC_CONTROL_FLTR_CAL 0x00010000
-#define AR9170_PHY_AGC_CONTROL_NO_UPDATE_NF 0x00020000
-
-#define AR9170_PHY_REG_CCA (AR9170_PHY_REG_BASE + 0x0064)
-#define AR9170_PHY_CCA_MIN_PWR 0x0ff80000
-#define AR9170_PHY_CCA_MIN_PWR_S 19
-#define AR9170_PHY_CCA_THRESH62 0x0007f000
-#define AR9170_PHY_CCA_THRESH62_S 12
-
-#define AR9170_PHY_REG_SFCORR (AR9170_PHY_REG_BASE + 0x0068)
-#define AR9170_PHY_SFCORR_M2COUNT_THR 0x0000001f
-#define AR9170_PHY_SFCORR_M2COUNT_THR_S 0
-#define AR9170_PHY_SFCORR_M1_THRESH 0x00fe0000
-#define AR9170_PHY_SFCORR_M1_THRESH_S 17
-#define AR9170_PHY_SFCORR_M2_THRESH 0x7f000000
-#define AR9170_PHY_SFCORR_M2_THRESH_S 24
-
-#define AR9170_PHY_REG_SFCORR_LOW (AR9170_PHY_REG_BASE + 0x006c)
-#define AR9170_PHY_SFCORR_LOW_USE_SELF_CORR_LOW 0x00000001
-#define AR9170_PHY_SFCORR_LOW_M2COUNT_THR_LOW 0x00003f00
-#define AR9170_PHY_SFCORR_LOW_M2COUNT_THR_LOW_S 8
-#define AR9170_PHY_SFCORR_LOW_M1_THRESH_LOW 0x001fc000
-#define AR9170_PHY_SFCORR_LOW_M1_THRESH_LOW_S 14
-#define AR9170_PHY_SFCORR_LOW_M2_THRESH_LOW 0x0fe00000
-#define AR9170_PHY_SFCORR_LOW_M2_THRESH_LOW_S 21
-
-#define AR9170_PHY_REG_SLEEP_CTR_CONTROL (AR9170_PHY_REG_BASE + 0x0070)
-#define AR9170_PHY_REG_SLEEP_CTR_LIMIT (AR9170_PHY_REG_BASE + 0x0074)
-#define AR9170_PHY_REG_SLEEP_SCAL (AR9170_PHY_REG_BASE + 0x0078)
-
-#define AR9170_PHY_REG_PLL_CTL (AR9170_PHY_REG_BASE + 0x007c)
-#define AR9170_PHY_PLL_CTL_40 0xaa
-#define AR9170_PHY_PLL_CTL_40_5413 0x04
-#define AR9170_PHY_PLL_CTL_44 0xab
-#define AR9170_PHY_PLL_CTL_44_2133 0xeb
-#define AR9170_PHY_PLL_CTL_40_2133 0xea
-
-#define AR9170_PHY_REG_BIN_MASK_1 (AR9170_PHY_REG_BASE + 0x0100)
-#define AR9170_PHY_REG_BIN_MASK_2 (AR9170_PHY_REG_BASE + 0x0104)
-#define AR9170_PHY_REG_BIN_MASK_3 (AR9170_PHY_REG_BASE + 0x0108)
-#define AR9170_PHY_REG_MASK_CTL (AR9170_PHY_REG_BASE + 0x010c)
-
-/* analogue power on time (100ns) */
-#define AR9170_PHY_REG_RX_DELAY (AR9170_PHY_REG_BASE + 0x0114)
-#define AR9170_PHY_REG_SEARCH_START_DELAY (AR9170_PHY_REG_BASE + 0x0118)
-#define AR9170_PHY_RX_DELAY_DELAY 0x00003fff
-
-#define AR9170_PHY_REG_TIMING_CTRL4(_i) (AR9170_PHY_REG_BASE + \
- (0x0120 + ((_i) << 12)))
-#define AR9170_PHY_TIMING_CTRL4_IQCORR_Q_Q_COFF 0x01f
-#define AR9170_PHY_TIMING_CTRL4_IQCORR_Q_Q_COFF_S 0
-#define AR9170_PHY_TIMING_CTRL4_IQCORR_Q_I_COFF 0x7e0
-#define AR9170_PHY_TIMING_CTRL4_IQCORR_Q_I_COFF_S 5
-#define AR9170_PHY_TIMING_CTRL4_IQCORR_ENABLE 0x800
-#define AR9170_PHY_TIMING_CTRL4_IQCAL_LOG_COUNT_MAX 0xf000
-#define AR9170_PHY_TIMING_CTRL4_IQCAL_LOG_COUNT_MAX_S 12
-#define AR9170_PHY_TIMING_CTRL4_DO_IQCAL 0x10000
-#define AR9170_PHY_TIMING_CTRL4_ENABLE_SPUR_RSSI 0x80000000
-#define AR9170_PHY_TIMING_CTRL4_ENABLE_SPUR_FILTER 0x40000000
-#define AR9170_PHY_TIMING_CTRL4_ENABLE_CHAN_MASK 0x20000000
-#define AR9170_PHY_TIMING_CTRL4_ENABLE_PILOT_MASK 0x10000000
-
-#define AR9170_PHY_REG_TIMING5 (AR9170_PHY_REG_BASE + 0x0124)
-#define AR9170_PHY_TIMING5_CYCPWR_THR1 0x000000fe
-#define AR9170_PHY_TIMING5_CYCPWR_THR1_S 1
-
-#define AR9170_PHY_REG_POWER_TX_RATE1 (AR9170_PHY_REG_BASE + 0x0134)
-#define AR9170_PHY_REG_POWER_TX_RATE2 (AR9170_PHY_REG_BASE + 0x0138)
-#define AR9170_PHY_REG_POWER_TX_RATE_MAX (AR9170_PHY_REG_BASE + 0x013c)
-#define AR9170_PHY_POWER_TX_RATE_MAX_TPC_ENABLE 0x00000040
-
-#define AR9170_PHY_REG_FRAME_CTL (AR9170_PHY_REG_BASE + 0x0144)
-#define AR9170_PHY_FRAME_CTL_TX_CLIP 0x00000038
-#define AR9170_PHY_FRAME_CTL_TX_CLIP_S 3
-
-#define AR9170_PHY_REG_SPUR_REG (AR9170_PHY_REG_BASE + 0x014c)
-#define AR9170_PHY_SPUR_REG_MASK_RATE_CNTL (0xff << 18)
-#define AR9170_PHY_SPUR_REG_MASK_RATE_CNTL_S 18
-#define AR9170_PHY_SPUR_REG_ENABLE_MASK_PPM 0x20000
-#define AR9170_PHY_SPUR_REG_MASK_RATE_SELECT (0xff << 9)
-#define AR9170_PHY_SPUR_REG_MASK_RATE_SELECT_S 9
-#define AR9170_PHY_SPUR_REG_ENABLE_VIT_SPUR_RSSI 0x100
-#define AR9170_PHY_SPUR_REG_SPUR_RSSI_THRESH 0x7f
-#define AR9170_PHY_SPUR_REG_SPUR_RSSI_THRESH_S 0
-
-#define AR9170_PHY_REG_RADAR_EXT (AR9170_PHY_REG_BASE + 0x0140)
-#define AR9170_PHY_RADAR_EXT_ENA 0x00004000
-
-#define AR9170_PHY_REG_RADAR_0 (AR9170_PHY_REG_BASE + 0x0154)
-#define AR9170_PHY_RADAR_0_ENA 0x00000001
-#define AR9170_PHY_RADAR_0_FFT_ENA 0x80000000
-/* inband pulse threshold */
-#define AR9170_PHY_RADAR_0_INBAND 0x0000003e
-#define AR9170_PHY_RADAR_0_INBAND_S 1
-/* pulse RSSI threshold */
-#define AR9170_PHY_RADAR_0_PRSSI 0x00000fc0
-#define AR9170_PHY_RADAR_0_PRSSI_S 6
-/* pulse height threshold */
-#define AR9170_PHY_RADAR_0_HEIGHT 0x0003f000
-#define AR9170_PHY_RADAR_0_HEIGHT_S 12
-/* radar RSSI threshold */
-#define AR9170_PHY_RADAR_0_RRSSI 0x00fc0000
-#define AR9170_PHY_RADAR_0_RRSSI_S 18
-/* radar firepower threshold */
-#define AR9170_PHY_RADAR_0_FIRPWR 0x7f000000
-#define AR9170_PHY_RADAR_0_FIRPWR_S 24
-
-#define AR9170_PHY_REG_RADAR_1 (AR9170_PHY_REG_BASE + 0x0158)
-#define AR9170_PHY_RADAR_1_RELPWR_ENA 0x00800000
-#define AR9170_PHY_RADAR_1_USE_FIR128 0x00400000
-#define AR9170_PHY_RADAR_1_RELPWR_THRESH 0x003f0000
-#define AR9170_PHY_RADAR_1_RELPWR_THRESH_S 16
-#define AR9170_PHY_RADAR_1_BLOCK_CHECK 0x00008000
-#define AR9170_PHY_RADAR_1_MAX_RRSSI 0x00004000
-#define AR9170_PHY_RADAR_1_RELSTEP_CHECK 0x00002000
-#define AR9170_PHY_RADAR_1_RELSTEP_THRESH 0x00001f00
-#define AR9170_PHY_RADAR_1_RELSTEP_THRESH_S 8
-#define AR9170_PHY_RADAR_1_MAXLEN 0x000000ff
-#define AR9170_PHY_RADAR_1_MAXLEN_S 0
-
-#define AR9170_PHY_REG_SWITCH_CHAIN_0 (AR9170_PHY_REG_BASE + 0x0160)
-#define AR9170_PHY_REG_SWITCH_CHAIN_2 (AR9170_PHY_REG_BASE + 0x2160)
-
-#define AR9170_PHY_REG_SWITCH_COM (AR9170_PHY_REG_BASE + 0x0164)
-
-#define AR9170_PHY_REG_CCA_THRESHOLD (AR9170_PHY_REG_BASE + 0x0168)
-
-#define AR9170_PHY_REG_SIGMA_DELTA (AR9170_PHY_REG_BASE + 0x016c)
-#define AR9170_PHY_SIGMA_DELTA_ADC_SEL 0x00000003
-#define AR9170_PHY_SIGMA_DELTA_ADC_SEL_S 0
-#define AR9170_PHY_SIGMA_DELTA_FILT2 0x000000f8
-#define AR9170_PHY_SIGMA_DELTA_FILT2_S 3
-#define AR9170_PHY_SIGMA_DELTA_FILT1 0x00001f00
-#define AR9170_PHY_SIGMA_DELTA_FILT1_S 8
-#define AR9170_PHY_SIGMA_DELTA_ADC_CLIP 0x01ffe000
-#define AR9170_PHY_SIGMA_DELTA_ADC_CLIP_S 13
-
-#define AR9170_PHY_REG_RESTART (AR9170_PHY_REG_BASE + 0x0170)
-#define AR9170_PHY_RESTART_DIV_GC 0x001c0000
-#define AR9170_PHY_RESTART_DIV_GC_S 18
-
-#define AR9170_PHY_REG_RFBUS_REQ (AR9170_PHY_REG_BASE + 0x017c)
-#define AR9170_PHY_RFBUS_REQ_EN 0x00000001
-
-#define AR9170_PHY_REG_TIMING7 (AR9170_PHY_REG_BASE + 0x0180)
-#define AR9170_PHY_REG_TIMING8 (AR9170_PHY_REG_BASE + 0x0184)
-#define AR9170_PHY_TIMING8_PILOT_MASK_2 0x000fffff
-#define AR9170_PHY_TIMING8_PILOT_MASK_2_S 0
-
-#define AR9170_PHY_REG_BIN_MASK2_1 (AR9170_PHY_REG_BASE + 0x0188)
-#define AR9170_PHY_REG_BIN_MASK2_2 (AR9170_PHY_REG_BASE + 0x018c)
-#define AR9170_PHY_REG_BIN_MASK2_3 (AR9170_PHY_REG_BASE + 0x0190)
-#define AR9170_PHY_REG_BIN_MASK2_4 (AR9170_PHY_REG_BASE + 0x0194)
-#define AR9170_PHY_BIN_MASK2_4_MASK_4 0x00003fff
-#define AR9170_PHY_BIN_MASK2_4_MASK_4_S 0
-
-#define AR9170_PHY_REG_TIMING9 (AR9170_PHY_REG_BASE + 0x0198)
-#define AR9170_PHY_REG_TIMING10 (AR9170_PHY_REG_BASE + 0x019c)
-#define AR9170_PHY_TIMING10_PILOT_MASK_2 0x000fffff
-#define AR9170_PHY_TIMING10_PILOT_MASK_2_S 0
-
-#define AR9170_PHY_REG_TIMING11 (AR9170_PHY_REG_BASE + 0x01a0)
-#define AR9170_PHY_TIMING11_SPUR_DELTA_PHASE 0x000fffff
-#define AR9170_PHY_TIMING11_SPUR_DELTA_PHASE_S 0
-#define AR9170_PHY_TIMING11_SPUR_FREQ_SD 0x3ff00000
-#define AR9170_PHY_TIMING11_SPUR_FREQ_SD_S 20
-#define AR9170_PHY_TIMING11_USE_SPUR_IN_AGC 0x40000000
-#define AR9170_PHY_TIMING11_USE_SPUR_IN_SELFCOR 0x80000000
-
-#define AR9170_PHY_REG_RX_CHAINMASK (AR9170_PHY_REG_BASE + 0x01a4)
-#define AR9170_PHY_REG_NEW_ADC_DC_GAIN_CORR(_i) (AR9170_PHY_REG_BASE + \
- 0x01b4 + ((_i) << 12))
-#define AR9170_PHY_NEW_ADC_GAIN_CORR_ENABLE 0x40000000
-#define AR9170_PHY_NEW_ADC_DC_OFFSET_CORR_ENABLE 0x80000000
-
-#define AR9170_PHY_REG_MULTICHAIN_GAIN_CTL (AR9170_PHY_REG_BASE + 0x01ac)
-#define AR9170_PHY_9285_ANT_DIV_CTL_ALL 0x7f000000
-#define AR9170_PHY_9285_ANT_DIV_CTL 0x01000000
-#define AR9170_PHY_9285_ANT_DIV_CTL_S 24
-#define AR9170_PHY_9285_ANT_DIV_ALT_LNACONF 0x06000000
-#define AR9170_PHY_9285_ANT_DIV_ALT_LNACONF_S 25
-#define AR9170_PHY_9285_ANT_DIV_MAIN_LNACONF 0x18000000
-#define AR9170_PHY_9285_ANT_DIV_MAIN_LNACONF_S 27
-#define AR9170_PHY_9285_ANT_DIV_ALT_GAINTB 0x20000000
-#define AR9170_PHY_9285_ANT_DIV_ALT_GAINTB_S 29
-#define AR9170_PHY_9285_ANT_DIV_MAIN_GAINTB 0x40000000
-#define AR9170_PHY_9285_ANT_DIV_MAIN_GAINTB_S 30
-#define AR9170_PHY_9285_ANT_DIV_LNA1 2
-#define AR9170_PHY_9285_ANT_DIV_LNA2 1
-#define AR9170_PHY_9285_ANT_DIV_LNA1_PLUS_LNA2 3
-#define AR9170_PHY_9285_ANT_DIV_LNA1_MINUS_LNA2 0
-#define AR9170_PHY_9285_ANT_DIV_GAINTB_0 0
-#define AR9170_PHY_9285_ANT_DIV_GAINTB_1 1
-
-#define AR9170_PHY_REG_EXT_CCA0 (AR9170_PHY_REG_BASE + 0x01b8)
-#define AR9170_PHY_REG_EXT_CCA0_THRESH62 0x000000ff
-#define AR9170_PHY_REG_EXT_CCA0_THRESH62_S 0
-
-#define AR9170_PHY_REG_EXT_CCA (AR9170_PHY_REG_BASE + 0x01bc)
-#define AR9170_PHY_EXT_CCA_CYCPWR_THR1 0x0000fe00
-#define AR9170_PHY_EXT_CCA_CYCPWR_THR1_S 9
-#define AR9170_PHY_EXT_CCA_THRESH62 0x007f0000
-#define AR9170_PHY_EXT_CCA_THRESH62_S 16
-#define AR9170_PHY_EXT_CCA_MIN_PWR 0xff800000
-#define AR9170_PHY_EXT_CCA_MIN_PWR_S 23
-
-#define AR9170_PHY_REG_SFCORR_EXT (AR9170_PHY_REG_BASE + 0x01c0)
-#define AR9170_PHY_SFCORR_EXT_M1_THRESH 0x0000007f
-#define AR9170_PHY_SFCORR_EXT_M1_THRESH_S 0
-#define AR9170_PHY_SFCORR_EXT_M2_THRESH 0x00003f80
-#define AR9170_PHY_SFCORR_EXT_M2_THRESH_S 7
-#define AR9170_PHY_SFCORR_EXT_M1_THRESH_LOW 0x001fc000
-#define AR9170_PHY_SFCORR_EXT_M1_THRESH_LOW_S 14
-#define AR9170_PHY_SFCORR_EXT_M2_THRESH_LOW 0x0fe00000
-#define AR9170_PHY_SFCORR_EXT_M2_THRESH_LOW_S 21
-#define AR9170_PHY_SFCORR_SPUR_SUBCHNL_SD_S 28
-
-#define AR9170_PHY_REG_HALFGI (AR9170_PHY_REG_BASE + 0x01d0)
-#define AR9170_PHY_HALFGI_DSC_MAN 0x0007fff0
-#define AR9170_PHY_HALFGI_DSC_MAN_S 4
-#define AR9170_PHY_HALFGI_DSC_EXP 0x0000000f
-#define AR9170_PHY_HALFGI_DSC_EXP_S 0
-
-#define AR9170_PHY_REG_CHANNEL_MASK_01_30 (AR9170_PHY_REG_BASE + 0x01d4)
-#define AR9170_PHY_REG_CHANNEL_MASK_31_60 (AR9170_PHY_REG_BASE + 0x01d8)
-
-#define AR9170_PHY_REG_CHAN_INFO_MEMORY (AR9170_PHY_REG_BASE + 0x01dc)
-#define AR9170_PHY_CHAN_INFO_MEMORY_CAPTURE_MASK 0x0001
-
-#define AR9170_PHY_REG_HEAVY_CLIP_ENABLE (AR9170_PHY_REG_BASE + 0x01e0)
-#define AR9170_PHY_REG_HEAVY_CLIP_FACTOR_RIFS (AR9170_PHY_REG_BASE + 0x01ec)
-#define AR9170_PHY_RIFS_INIT_DELAY 0x03ff0000
-
-#define AR9170_PHY_REG_CALMODE (AR9170_PHY_REG_BASE + 0x01f0)
-#define AR9170_PHY_CALMODE_IQ 0x00000000
-#define AR9170_PHY_CALMODE_ADC_GAIN 0x00000001
-#define AR9170_PHY_CALMODE_ADC_DC_PER 0x00000002
-#define AR9170_PHY_CALMODE_ADC_DC_INIT 0x00000003
-
-#define AR9170_PHY_REG_REFCLKDLY (AR9170_PHY_REG_BASE + 0x01f4)
-#define AR9170_PHY_REG_REFCLKPD (AR9170_PHY_REG_BASE + 0x01f8)
-
-
-#define AR9170_PHY_REG_CAL_MEAS_0(_i) (AR9170_PHY_REG_BASE + \
- 0x0410 + ((_i) << 12))
-#define AR9170_PHY_REG_CAL_MEAS_1(_i) (AR9170_PHY_REG_BASE + \
- 0x0414 \ + ((_i) << 12))
-#define AR9170_PHY_REG_CAL_MEAS_2(_i) (AR9170_PHY_REG_BASE + \
- 0x0418 + ((_i) << 12))
-#define AR9170_PHY_REG_CAL_MEAS_3(_i) (AR9170_PHY_REG_BASE + \
- 0x041c + ((_i) << 12))
-
-#define AR9170_PHY_REG_CURRENT_RSSI (AR9170_PHY_REG_BASE + 0x041c)
-
-#define AR9170_PHY_REG_RFBUS_GRANT (AR9170_PHY_REG_BASE + 0x0420)
-#define AR9170_PHY_RFBUS_GRANT_EN 0x00000001
-
-#define AR9170_PHY_REG_CHAN_INFO_GAIN_DIFF (AR9170_PHY_REG_BASE + 0x04f4)
-#define AR9170_PHY_CHAN_INFO_GAIN_DIFF_UPPER_LIMIT 320
-
-#define AR9170_PHY_REG_CHAN_INFO_GAIN (AR9170_PHY_REG_BASE + 0x04fc)
-
-#define AR9170_PHY_REG_MODE (AR9170_PHY_REG_BASE + 0x0a00)
-#define AR9170_PHY_MODE_ASYNCFIFO 0x80
-#define AR9170_PHY_MODE_AR2133 0x08
-#define AR9170_PHY_MODE_AR5111 0x00
-#define AR9170_PHY_MODE_AR5112 0x08
-#define AR9170_PHY_MODE_DYNAMIC 0x04
-#define AR9170_PHY_MODE_RF2GHZ 0x02
-#define AR9170_PHY_MODE_RF5GHZ 0x00
-#define AR9170_PHY_MODE_CCK 0x01
-#define AR9170_PHY_MODE_OFDM 0x00
-#define AR9170_PHY_MODE_DYN_CCK_DISABLE 0x100
-
-#define AR9170_PHY_REG_CCK_TX_CTRL (AR9170_PHY_REG_BASE + 0x0a04)
-#define AR9170_PHY_CCK_TX_CTRL_JAPAN 0x00000010
-#define AR9170_PHY_CCK_TX_CTRL_TX_DAC_SCALE_CCK 0x0000000c
-#define AR9170_PHY_CCK_TX_CTRL_TX_DAC_SCALE_CCK_S 2
-
-#define AR9170_PHY_REG_CCK_DETECT (AR9170_PHY_REG_BASE + 0x0a08)
-#define AR9170_PHY_CCK_DETECT_WEAK_SIG_THR_CCK 0x0000003f
-#define AR9170_PHY_CCK_DETECT_WEAK_SIG_THR_CCK_S 0
-/* [12:6] settling time for antenna switch */
-#define AR9170_PHY_CCK_DETECT_ANT_SWITCH_TIME 0x00001fc0
-#define AR9170_PHY_CCK_DETECT_ANT_SWITCH_TIME_S 6
-#define AR9170_PHY_CCK_DETECT_BB_ENABLE_ANT_FAST_DIV 0x2000
-#define AR9170_PHY_CCK_DETECT_BB_ENABLE_ANT_FAST_DIV_S 13
-
-#define AR9170_PHY_REG_GAIN_2GHZ (AR9170_PHY_REG_BASE + 0x0a0c)
-#define AR9170_PHY_REG_GAIN_2GHZ_CHAIN_2 (AR9170_PHY_REG_BASE + 0x2a0c)
-#define AR9170_PHY_GAIN_2GHZ_RXTX_MARGIN 0x00fc0000
-#define AR9170_PHY_GAIN_2GHZ_RXTX_MARGIN_S 18
-#define AR9170_PHY_GAIN_2GHZ_BSW_MARGIN 0x00003c00
-#define AR9170_PHY_GAIN_2GHZ_BSW_MARGIN_S 10
-#define AR9170_PHY_GAIN_2GHZ_BSW_ATTEN 0x0000001f
-#define AR9170_PHY_GAIN_2GHZ_BSW_ATTEN_S 0
-#define AR9170_PHY_GAIN_2GHZ_XATTEN2_MARGIN 0x003e0000
-#define AR9170_PHY_GAIN_2GHZ_XATTEN2_MARGIN_S 17
-#define AR9170_PHY_GAIN_2GHZ_XATTEN1_MARGIN 0x0001f000
-#define AR9170_PHY_GAIN_2GHZ_XATTEN1_MARGIN_S 12
-#define AR9170_PHY_GAIN_2GHZ_XATTEN2_DB 0x00000fc0
-#define AR9170_PHY_GAIN_2GHZ_XATTEN2_DB_S 6
-#define AR9170_PHY_GAIN_2GHZ_XATTEN1_DB 0x0000003f
-#define AR9170_PHY_GAIN_2GHZ_XATTEN1_DB_S 0
-
-#define AR9170_PHY_REG_CCK_RXCTRL4 (AR9170_PHY_REG_BASE + 0x0a1c)
-#define AR9170_PHY_CCK_RXCTRL4_FREQ_EST_SHORT 0x01f80000
-#define AR9170_PHY_CCK_RXCTRL4_FREQ_EST_SHORT_S 19
-
-#define AR9170_PHY_REG_DAG_CTRLCCK (AR9170_PHY_REG_BASE + 0x0a28)
-#define AR9170_REG_DAG_CTRLCCK_EN_RSSI_THR 0x00000200
-#define AR9170_REG_DAG_CTRLCCK_RSSI_THR 0x0001fc00
-#define AR9170_REG_DAG_CTRLCCK_RSSI_THR_S 10
-
-#define AR9170_PHY_REG_FORCE_CLKEN_CCK (AR9170_PHY_REG_BASE + 0x0a2c)
-#define AR9170_FORCE_CLKEN_CCK_MRC_MUX 0x00000040
-
-#define AR9170_PHY_REG_POWER_TX_RATE3 (AR9170_PHY_REG_BASE + 0x0a34)
-#define AR9170_PHY_REG_POWER_TX_RATE4 (AR9170_PHY_REG_BASE + 0x0a38)
-
-#define AR9170_PHY_REG_SCRM_SEQ_XR (AR9170_PHY_REG_BASE + 0x0a3c)
-#define AR9170_PHY_REG_HEADER_DETECT_XR (AR9170_PHY_REG_BASE + 0x0a40)
-#define AR9170_PHY_REG_CHIRP_DETECTED_XR (AR9170_PHY_REG_BASE + 0x0a44)
-#define AR9170_PHY_REG_BLUETOOTH (AR9170_PHY_REG_BASE + 0x0a54)
-
-#define AR9170_PHY_REG_TPCRG1 (AR9170_PHY_REG_BASE + 0x0a58)
-#define AR9170_PHY_TPCRG1_NUM_PD_GAIN 0x0000c000
-#define AR9170_PHY_TPCRG1_NUM_PD_GAIN_S 14
-#define AR9170_PHY_TPCRG1_PD_GAIN_1 0x00030000
-#define AR9170_PHY_TPCRG1_PD_GAIN_1_S 16
-#define AR9170_PHY_TPCRG1_PD_GAIN_2 0x000c0000
-#define AR9170_PHY_TPCRG1_PD_GAIN_2_S 18
-#define AR9170_PHY_TPCRG1_PD_GAIN_3 0x00300000
-#define AR9170_PHY_TPCRG1_PD_GAIN_3_S 20
-#define AR9170_PHY_TPCRG1_PD_CAL_ENABLE 0x00400000
-#define AR9170_PHY_TPCRG1_PD_CAL_ENABLE_S 22
-
-#define AR9170_PHY_REG_TX_PWRCTRL4 (AR9170_PHY_REG_BASE + 0x0a64)
-#define AR9170_PHY_TX_PWRCTRL_PD_AVG_VALID 0x00000001
-#define AR9170_PHY_TX_PWRCTRL_PD_AVG_VALID_S 0
-#define AR9170_PHY_TX_PWRCTRL_PD_AVG_OUT 0x000001fe
-#define AR9170_PHY_TX_PWRCTRL_PD_AVG_OUT_S 1
-
-#define AR9170_PHY_REG_ANALOG_SWAP (AR9170_PHY_REG_BASE + 0x0a68)
-#define AR9170_PHY_ANALOG_SWAP_AB 0x0001
-#define AR9170_PHY_ANALOG_SWAP_ALT_CHAIN 0x00000040
-
-#define AR9170_PHY_REG_TPCRG5 (AR9170_PHY_REG_BASE + 0x0a6c)
-#define AR9170_PHY_TPCRG5_PD_GAIN_OVERLAP 0x0000000f
-#define AR9170_PHY_TPCRG5_PD_GAIN_OVERLAP_S 0
-#define AR9170_PHY_TPCRG5_PD_GAIN_BOUNDARY_1 0x000003f0
-#define AR9170_PHY_TPCRG5_PD_GAIN_BOUNDARY_1_S 4
-#define AR9170_PHY_TPCRG5_PD_GAIN_BOUNDARY_2 0x0000fc00
-#define AR9170_PHY_TPCRG5_PD_GAIN_BOUNDARY_2_S 10
-#define AR9170_PHY_TPCRG5_PD_GAIN_BOUNDARY_3 0x003f0000
-#define AR9170_PHY_TPCRG5_PD_GAIN_BOUNDARY_3_S 16
-#define AR9170_PHY_TPCRG5_PD_GAIN_BOUNDARY_4 0x0fc00000
-#define AR9170_PHY_TPCRG5_PD_GAIN_BOUNDARY_4_S 22
-
-#define AR9170_PHY_REG_TX_PWRCTRL6_0 (AR9170_PHY_REG_BASE + 0x0a70)
-#define AR9170_PHY_REG_TX_PWRCTRL6_1 (AR9170_PHY_REG_BASE + 0x1a70)
-#define AR9170_PHY_TX_PWRCTRL_ERR_EST_MODE 0x03000000
-#define AR9170_PHY_TX_PWRCTRL_ERR_EST_MODE_S 24
-
-#define AR9170_PHY_REG_TX_PWRCTRL7 (AR9170_PHY_REG_BASE + 0x0a74)
-#define AR9170_PHY_TX_PWRCTRL_INIT_TX_GAIN 0x01f80000
-#define AR9170_PHY_TX_PWRCTRL_INIT_TX_GAIN_S 19
-
-#define AR9170_PHY_REG_TX_PWRCTRL9 (AR9170_PHY_REG_BASE + 0x0a7c)
-#define AR9170_PHY_TX_DESIRED_SCALE_CCK 0x00007c00
-#define AR9170_PHY_TX_DESIRED_SCALE_CCK_S 10
-#define AR9170_PHY_TX_PWRCTRL9_RES_DC_REMOVAL 0x80000000
-#define AR9170_PHY_TX_PWRCTRL9_RES_DC_REMOVAL_S 31
-
-#define AR9170_PHY_REG_TX_GAIN_TBL1 (AR9170_PHY_REG_BASE + 0x0b00)
-#define AR9170_PHY_TX_GAIN 0x0007f000
-#define AR9170_PHY_TX_GAIN_S 12
-
-/* Carrier leak calibration control, do it after AGC calibration */
-#define AR9170_PHY_REG_CL_CAL_CTL (AR9170_PHY_REG_BASE + 0x0b58)
-#define AR9170_PHY_CL_CAL_ENABLE 0x00000002
-#define AR9170_PHY_CL_CAL_PARALLEL_CAL_ENABLE 0x00000001
-
-#define AR9170_PHY_REG_POWER_TX_RATE5 (AR9170_PHY_REG_BASE + 0x0b8c)
-#define AR9170_PHY_REG_POWER_TX_RATE6 (AR9170_PHY_REG_BASE + 0x0b90)
-
-#define AR9170_PHY_REG_CH0_TX_PWRCTRL11 (AR9170_PHY_REG_BASE + 0x0b98)
-#define AR9170_PHY_REG_CH1_TX_PWRCTRL11 (AR9170_PHY_REG_BASE + 0x1b98)
-#define AR9170_PHY_TX_CHX_PWRCTRL_OLPC_TEMP_COMP 0x0000fc00
-#define AR9170_PHY_TX_CHX_PWRCTRL_OLPC_TEMP_COMP_S 10
-
-#define AR9170_PHY_REG_CAL_CHAINMASK (AR9170_PHY_REG_BASE + 0x0b9c)
-#define AR9170_PHY_REG_VIT_MASK2_M_46_61 (AR9170_PHY_REG_BASE + 0x0ba0)
-#define AR9170_PHY_REG_MASK2_M_31_45 (AR9170_PHY_REG_BASE + 0x0ba4)
-#define AR9170_PHY_REG_MASK2_M_16_30 (AR9170_PHY_REG_BASE + 0x0ba8)
-#define AR9170_PHY_REG_MASK2_M_00_15 (AR9170_PHY_REG_BASE + 0x0bac)
-#define AR9170_PHY_REG_PILOT_MASK_01_30 (AR9170_PHY_REG_BASE + 0x0bb0)
-#define AR9170_PHY_REG_PILOT_MASK_31_60 (AR9170_PHY_REG_BASE + 0x0bb4)
-#define AR9170_PHY_REG_MASK2_P_15_01 (AR9170_PHY_REG_BASE + 0x0bb8)
-#define AR9170_PHY_REG_MASK2_P_30_16 (AR9170_PHY_REG_BASE + 0x0bbc)
-#define AR9170_PHY_REG_MASK2_P_45_31 (AR9170_PHY_REG_BASE + 0x0bc0)
-#define AR9170_PHY_REG_MASK2_P_61_45 (AR9170_PHY_REG_BASE + 0x0bc4)
-#define AR9170_PHY_REG_POWER_TX_SUB (AR9170_PHY_REG_BASE + 0x0bc8)
-#define AR9170_PHY_REG_POWER_TX_RATE7 (AR9170_PHY_REG_BASE + 0x0bcc)
-#define AR9170_PHY_REG_POWER_TX_RATE8 (AR9170_PHY_REG_BASE + 0x0bd0)
-#define AR9170_PHY_REG_POWER_TX_RATE9 (AR9170_PHY_REG_BASE + 0x0bd4)
-#define AR9170_PHY_REG_XPA_CFG (AR9170_PHY_REG_BASE + 0x0bd8)
-#define AR9170_PHY_FORCE_XPA_CFG 0x000000001
-#define AR9170_PHY_FORCE_XPA_CFG_S 0
-
-#define AR9170_PHY_REG_CH1_CCA (AR9170_PHY_REG_BASE + 0x1064)
-#define AR9170_PHY_CH1_CCA_MIN_PWR 0x0ff80000
-#define AR9170_PHY_CH1_CCA_MIN_PWR_S 19
-
-#define AR9170_PHY_REG_CH2_CCA (AR9170_PHY_REG_BASE + 0x2064)
-#define AR9170_PHY_CH2_CCA_MIN_PWR 0x0ff80000
-#define AR9170_PHY_CH2_CCA_MIN_PWR_S 19
-
-#define AR9170_PHY_REG_CH1_EXT_CCA (AR9170_PHY_REG_BASE + 0x11bc)
-#define AR9170_PHY_CH1_EXT_CCA_MIN_PWR 0xff800000
-#define AR9170_PHY_CH1_EXT_CCA_MIN_PWR_S 23
-
-#define AR9170_PHY_REG_CH2_EXT_CCA (AR9170_PHY_REG_BASE + 0x21bc)
-#define AR9170_PHY_CH2_EXT_CCA_MIN_PWR 0xff800000
-#define AR9170_PHY_CH2_EXT_CCA_MIN_PWR_S 23
-
-#endif /* __CARL9170_SHARED_PHY_H */
diff --git a/carl9170fw/include/shared/version.h b/carl9170fw/include/shared/version.h
deleted file mode 100644
index 2ec3e91..0000000
--- a/carl9170fw/include/shared/version.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifndef __CARL9170_SHARED_VERSION_H
-#define __CARL9170_SHARED_VERSION_H
-#define CARL9170FW_VERSION_YEAR 12
-#define CARL9170FW_VERSION_MONTH 7
-#define CARL9170FW_VERSION_DAY 7
-#define CARL9170FW_VERSION_GIT "1.9.6"
-#endif /* __CARL9170_SHARED_VERSION_H */
diff --git a/carl9170fw/include/shared/wlan.h b/carl9170fw/include/shared/wlan.h
deleted file mode 100644
index ea17995..0000000
--- a/carl9170fw/include/shared/wlan.h
+++ /dev/null
@@ -1,435 +0,0 @@
-/*
- * Shared Atheros AR9170 Header
- *
- * RX/TX meta descriptor format
- *
- * Copyright 2008, Johannes Berg <johannes@sipsolutions.net>
- * Copyright 2009-2011 Christian Lamparter <chunkeey@googlemail.com>
- *
- * 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.
- *
- * 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; see the file COPYING. If not, see
- * http://www.gnu.org/licenses/.
- *
- * This file incorporates work covered by the following copyright and
- * permission notice:
- * Copyright (c) 2007-2008 Atheros Communications, Inc.
- *
- * 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.
- */
-
-#ifndef __CARL9170_SHARED_WLAN_H
-#define __CARL9170_SHARED_WLAN_H
-
-#include "fwcmd.h"
-
-#define AR9170_RX_PHY_RATE_CCK_1M 0x0a
-#define AR9170_RX_PHY_RATE_CCK_2M 0x14
-#define AR9170_RX_PHY_RATE_CCK_5M 0x37
-#define AR9170_RX_PHY_RATE_CCK_11M 0x6e
-
-#define AR9170_ENC_ALG_NONE 0x0
-#define AR9170_ENC_ALG_WEP64 0x1
-#define AR9170_ENC_ALG_TKIP 0x2
-#define AR9170_ENC_ALG_AESCCMP 0x4
-#define AR9170_ENC_ALG_WEP128 0x5
-#define AR9170_ENC_ALG_WEP256 0x6
-#define AR9170_ENC_ALG_CENC 0x7
-
-#define AR9170_RX_ENC_SOFTWARE 0x8
-
-#define AR9170_RX_STATUS_MODULATION 0x03
-#define AR9170_RX_STATUS_MODULATION_S 0
-#define AR9170_RX_STATUS_MODULATION_CCK 0x00
-#define AR9170_RX_STATUS_MODULATION_OFDM 0x01
-#define AR9170_RX_STATUS_MODULATION_HT 0x02
-#define AR9170_RX_STATUS_MODULATION_DUPOFDM 0x03
-
-/* depends on modulation */
-#define AR9170_RX_STATUS_SHORT_PREAMBLE 0x08
-#define AR9170_RX_STATUS_GREENFIELD 0x08
-
-#define AR9170_RX_STATUS_MPDU 0x30
-#define AR9170_RX_STATUS_MPDU_S 4
-#define AR9170_RX_STATUS_MPDU_SINGLE 0x00
-#define AR9170_RX_STATUS_MPDU_FIRST 0x20
-#define AR9170_RX_STATUS_MPDU_MIDDLE 0x30
-#define AR9170_RX_STATUS_MPDU_LAST 0x10
-
-#define AR9170_RX_STATUS_CONT_AGGR 0x40
-#define AR9170_RX_STATUS_TOTAL_ERROR 0x80
-
-#define AR9170_RX_ERROR_RXTO 0x01
-#define AR9170_RX_ERROR_OVERRUN 0x02
-#define AR9170_RX_ERROR_DECRYPT 0x04
-#define AR9170_RX_ERROR_FCS 0x08
-#define AR9170_RX_ERROR_WRONG_RA 0x10
-#define AR9170_RX_ERROR_PLCP 0x20
-#define AR9170_RX_ERROR_MMIC 0x40
-
-/* these are either-or */
-#define AR9170_TX_MAC_PROT_RTS 0x0001
-#define AR9170_TX_MAC_PROT_CTS 0x0002
-#define AR9170_TX_MAC_PROT 0x0003
-
-#define AR9170_TX_MAC_NO_ACK 0x0004
-/* if unset, MAC will only do SIFS space before frame */
-#define AR9170_TX_MAC_BACKOFF 0x0008
-#define AR9170_TX_MAC_BURST 0x0010
-#define AR9170_TX_MAC_AGGR 0x0020
-
-/* encryption is a two-bit field */
-#define AR9170_TX_MAC_ENCR_NONE 0x0000
-#define AR9170_TX_MAC_ENCR_RC4 0x0040
-#define AR9170_TX_MAC_ENCR_CENC 0x0080
-#define AR9170_TX_MAC_ENCR_AES 0x00c0
-
-#define AR9170_TX_MAC_MMIC 0x0100
-#define AR9170_TX_MAC_HW_DURATION 0x0200
-#define AR9170_TX_MAC_QOS_S 10
-#define AR9170_TX_MAC_QOS 0x0c00
-#define AR9170_TX_MAC_DISABLE_TXOP 0x1000
-#define AR9170_TX_MAC_TXOP_RIFS 0x2000
-#define AR9170_TX_MAC_IMM_BA 0x4000
-
-/* either-or */
-#define AR9170_TX_PHY_MOD_CCK 0x00000000
-#define AR9170_TX_PHY_MOD_OFDM 0x00000001
-#define AR9170_TX_PHY_MOD_HT 0x00000002
-
-/* depends on modulation */
-#define AR9170_TX_PHY_SHORT_PREAMBLE 0x00000004
-#define AR9170_TX_PHY_GREENFIELD 0x00000004
-
-#define AR9170_TX_PHY_BW_S 3
-#define AR9170_TX_PHY_BW (3 << AR9170_TX_PHY_BW_SHIFT)
-#define AR9170_TX_PHY_BW_20MHZ 0
-#define AR9170_TX_PHY_BW_40MHZ 2
-#define AR9170_TX_PHY_BW_40MHZ_DUP 3
-
-#define AR9170_TX_PHY_TX_HEAVY_CLIP_S 6
-#define AR9170_TX_PHY_TX_HEAVY_CLIP (7 << \
- AR9170_TX_PHY_TX_HEAVY_CLIP_S)
-
-#define AR9170_TX_PHY_TX_PWR_S 9
-#define AR9170_TX_PHY_TX_PWR (0x3f << \
- AR9170_TX_PHY_TX_PWR_S)
-
-#define AR9170_TX_PHY_TXCHAIN_S 15
-#define AR9170_TX_PHY_TXCHAIN (7 << \
- AR9170_TX_PHY_TXCHAIN_S)
-#define AR9170_TX_PHY_TXCHAIN_1 1
-/* use for cck, ofdm 6/9/12/18/24 and HT if capable */
-#define AR9170_TX_PHY_TXCHAIN_2 5
-
-#define AR9170_TX_PHY_MCS_S 18
-#define AR9170_TX_PHY_MCS (0x7f << \
- AR9170_TX_PHY_MCS_S)
-
-#define AR9170_TX_PHY_RATE_CCK_1M 0x0
-#define AR9170_TX_PHY_RATE_CCK_2M 0x1
-#define AR9170_TX_PHY_RATE_CCK_5M 0x2
-#define AR9170_TX_PHY_RATE_CCK_11M 0x3
-
-/* same as AR9170_RX_PHY_RATE */
-#define AR9170_TXRX_PHY_RATE_OFDM_6M 0xb
-#define AR9170_TXRX_PHY_RATE_OFDM_9M 0xf
-#define AR9170_TXRX_PHY_RATE_OFDM_12M 0xa
-#define AR9170_TXRX_PHY_RATE_OFDM_18M 0xe
-#define AR9170_TXRX_PHY_RATE_OFDM_24M 0x9
-#define AR9170_TXRX_PHY_RATE_OFDM_36M 0xd
-#define AR9170_TXRX_PHY_RATE_OFDM_48M 0x8
-#define AR9170_TXRX_PHY_RATE_OFDM_54M 0xc
-
-#define AR9170_TXRX_PHY_RATE_HT_MCS0 0x0
-#define AR9170_TXRX_PHY_RATE_HT_MCS1 0x1
-#define AR9170_TXRX_PHY_RATE_HT_MCS2 0x2
-#define AR9170_TXRX_PHY_RATE_HT_MCS3 0x3
-#define AR9170_TXRX_PHY_RATE_HT_MCS4 0x4
-#define AR9170_TXRX_PHY_RATE_HT_MCS5 0x5
-#define AR9170_TXRX_PHY_RATE_HT_MCS6 0x6
-#define AR9170_TXRX_PHY_RATE_HT_MCS7 0x7
-#define AR9170_TXRX_PHY_RATE_HT_MCS8 0x8
-#define AR9170_TXRX_PHY_RATE_HT_MCS9 0x9
-#define AR9170_TXRX_PHY_RATE_HT_MCS10 0xa
-#define AR9170_TXRX_PHY_RATE_HT_MCS11 0xb
-#define AR9170_TXRX_PHY_RATE_HT_MCS12 0xc
-#define AR9170_TXRX_PHY_RATE_HT_MCS13 0xd
-#define AR9170_TXRX_PHY_RATE_HT_MCS14 0xe
-#define AR9170_TXRX_PHY_RATE_HT_MCS15 0xf
-
-#define AR9170_TX_PHY_SHORT_GI 0x80000000
-
-#ifdef __CARL9170FW__
-struct ar9170_tx_hw_mac_control {
- union {
- struct {
- /*
- * Beware of compiler bugs in all gcc pre 4.4!
- */
-
- u8 erp_prot:2;
- u8 no_ack:1;
- u8 backoff:1;
- u8 burst:1;
- u8 ampdu:1;
-
- u8 enc_mode:2;
-
- u8 hw_mmic:1;
- u8 hw_duration:1;
-
- u8 qos_queue:2;
-
- u8 disable_txop:1;
- u8 txop_rifs:1;
-
- u8 ba_end:1;
- u8 probe:1;
- } __packed;
-
- __le16 set;
- } __packed;
-} __packed;
-
-struct ar9170_tx_hw_phy_control {
- union {
- struct {
- /*
- * Beware of compiler bugs in all gcc pre 4.4!
- */
-
- u8 modulation:2;
- u8 preamble:1;
- u8 bandwidth:2;
- u8:1;
- u8 heavy_clip:3;
- u8 tx_power:6;
- u8 chains:3;
- u8 mcs:7;
- u8:6;
- u8 short_gi:1;
- } __packed;
-
- __le32 set;
- } __packed;
-} __packed;
-
-struct ar9170_tx_rate_info {
- u8 tries:3;
- u8 erp_prot:2;
- u8 ampdu:1;
- u8 free:2; /* free for use (e.g.:RIFS/TXOP/AMPDU) */
-} __packed;
-
-struct carl9170_tx_superdesc {
- __le16 len;
- u8 rix;
- u8 cnt;
- u8 cookie;
- u8 ampdu_density:3;
- u8 ampdu_factor:2;
- u8 ampdu_commit_density:1;
- u8 ampdu_commit_factor:1;
- u8 ampdu_unused_bit:1;
- u8 queue:2;
- u8 assign_seq:1;
- u8 vif_id:3;
- u8 fill_in_tsf:1;
- u8 cab:1;
- u8 padding2;
- struct ar9170_tx_rate_info ri[CARL9170_TX_MAX_RATES];
- struct ar9170_tx_hw_phy_control rr[CARL9170_TX_MAX_RETRY_RATES];
-} __packed;
-
-struct ar9170_tx_hwdesc {
- __le16 length;
- struct ar9170_tx_hw_mac_control mac;
- struct ar9170_tx_hw_phy_control phy;
-} __packed;
-
-struct ar9170_tx_frame {
- struct ar9170_tx_hwdesc hdr;
-
- union {
- struct ieee80211_hdr i3e;
- u8 payload[0];
- } data;
-} __packed;
-
-struct carl9170_tx_superframe {
- struct carl9170_tx_superdesc s;
- struct ar9170_tx_frame f;
-} __packed __aligned(4);
-
-#endif /* __CARL9170FW__ */
-
-struct _ar9170_tx_hwdesc {
- __le16 length;
- __le16 mac_control;
- __le32 phy_control;
-} __packed;
-
-#define CARL9170_TX_SUPER_AMPDU_DENSITY_S 0
-#define CARL9170_TX_SUPER_AMPDU_DENSITY 0x7
-#define CARL9170_TX_SUPER_AMPDU_FACTOR 0x18
-#define CARL9170_TX_SUPER_AMPDU_FACTOR_S 3
-#define CARL9170_TX_SUPER_AMPDU_COMMIT_DENSITY 0x20
-#define CARL9170_TX_SUPER_AMPDU_COMMIT_DENSITY_S 5
-#define CARL9170_TX_SUPER_AMPDU_COMMIT_FACTOR 0x40
-#define CARL9170_TX_SUPER_AMPDU_COMMIT_FACTOR_S 6
-
-#define CARL9170_TX_SUPER_MISC_QUEUE 0x3
-#define CARL9170_TX_SUPER_MISC_QUEUE_S 0
-#define CARL9170_TX_SUPER_MISC_ASSIGN_SEQ 0x4
-#define CARL9170_TX_SUPER_MISC_VIF_ID 0x38
-#define CARL9170_TX_SUPER_MISC_VIF_ID_S 3
-#define CARL9170_TX_SUPER_MISC_FILL_IN_TSF 0x40
-#define CARL9170_TX_SUPER_MISC_CAB 0x80
-
-#define CARL9170_TX_SUPER_RI_TRIES 0x7
-#define CARL9170_TX_SUPER_RI_TRIES_S 0
-#define CARL9170_TX_SUPER_RI_ERP_PROT 0x18
-#define CARL9170_TX_SUPER_RI_ERP_PROT_S 3
-#define CARL9170_TX_SUPER_RI_AMPDU 0x20
-#define CARL9170_TX_SUPER_RI_AMPDU_S 5
-
-struct _carl9170_tx_superdesc {
- __le16 len;
- u8 rix;
- u8 cnt;
- u8 cookie;
- u8 ampdu_settings;
- u8 misc;
- u8 padding;
- u8 ri[CARL9170_TX_MAX_RATES];
- __le32 rr[CARL9170_TX_MAX_RETRY_RATES];
-} __packed;
-
-struct _carl9170_tx_superframe {
- struct _carl9170_tx_superdesc s;
- struct _ar9170_tx_hwdesc f;
- u8 frame_data[0];
-} __packed __aligned(4);
-
-#define CARL9170_TX_SUPERDESC_LEN 24
-#define AR9170_TX_HWDESC_LEN 8
-#define CARL9170_TX_SUPERFRAME_LEN (CARL9170_TX_SUPERDESC_LEN + \
- AR9170_TX_HWDESC_LEN)
-
-struct ar9170_rx_head {
- u8 plcp[12];
-} __packed;
-
-#define AR9170_RX_HEAD_LEN 12
-
-struct ar9170_rx_phystatus {
- union {
- struct {
- u8 rssi_ant0, rssi_ant1, rssi_ant2,
- rssi_ant0x, rssi_ant1x, rssi_ant2x,
- rssi_combined;
- } __packed;
- u8 rssi[7];
- } __packed;
-
- u8 evm_stream0[6], evm_stream1[6];
- u8 phy_err;
-} __packed;
-
-#define AR9170_RX_PHYSTATUS_LEN 20
-
-struct ar9170_rx_macstatus {
- u8 SAidx, DAidx;
- u8 error;
- u8 status;
-} __packed;
-
-#define AR9170_RX_MACSTATUS_LEN 4
-
-struct ar9170_rx_frame_single {
- struct ar9170_rx_head phy_head;
- struct ieee80211_hdr i3e;
- struct ar9170_rx_phystatus phy_tail;
- struct ar9170_rx_macstatus macstatus;
-} __packed;
-
-struct ar9170_rx_frame_head {
- struct ar9170_rx_head phy_head;
- struct ieee80211_hdr i3e;
- struct ar9170_rx_macstatus macstatus;
-} __packed;
-
-struct ar9170_rx_frame_middle {
- struct ieee80211_hdr i3e;
- struct ar9170_rx_macstatus macstatus;
-} __packed;
-
-struct ar9170_rx_frame_tail {
- struct ieee80211_hdr i3e;
- struct ar9170_rx_phystatus phy_tail;
- struct ar9170_rx_macstatus macstatus;
-} __packed;
-
-struct ar9170_rx_frame {
- union {
- struct ar9170_rx_frame_single single;
- struct ar9170_rx_frame_head head;
- struct ar9170_rx_frame_middle middle;
- struct ar9170_rx_frame_tail tail;
- } __packed;
-} __packed;
-
-static inline u8 ar9170_get_decrypt_type(struct ar9170_rx_macstatus *t)
-{
- return (t->SAidx & 0xc0) >> 4 |
- (t->DAidx & 0xc0) >> 6;
-}
-
-/*
- * This is an workaround for several undocumented bugs.
- * Don't mess with the QoS/AC <-> HW Queue map, if you don't
- * know what you are doing.
- *
- * Known problems [hardware]:
- * * The MAC does not aggregate frames on anything other
- * than the first HW queue.
- * * when an AMPDU is placed [in the first hw queue] and
- * additional frames are already queued on a different
- * hw queue, the MAC will ALWAYS freeze.
- *
- * In a nutshell: The hardware can either do QoS or
- * Aggregation but not both at the same time. As a
- * result, this makes the device pretty much useless
- * for any serious 802.11n setup.
- */
-enum ar9170_txq {
- AR9170_TXQ_BK = 0, /* TXQ0 */
- AR9170_TXQ_BE, /* TXQ1 */
- AR9170_TXQ_VI, /* TXQ2 */
- AR9170_TXQ_VO, /* TXQ3 */
-
- __AR9170_NUM_TXQ,
-};
-
-#define AR9170_TXQ_DEPTH 32
-
-#endif /* __CARL9170_SHARED_WLAN_H */