wl12xx: Add AP related definitions to HOST-FW interface
authorArik Nemtsov <arik@wizery.com>
Sat, 16 Oct 2010 16:53:48 +0000 (18:53 +0200)
committerLuciano Coelho <coelho@ti.com>
Mon, 24 Jan 2011 20:11:48 +0000 (22:11 +0200)
Change structures in a non-destructive manner. This means no
changes in size or location of existing members used by STA.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
Reviewed-by: Luciano Coelho <coelho@ti.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
drivers/net/wireless/wl12xx/event.h
drivers/net/wireless/wl12xx/rx.h
drivers/net/wireless/wl12xx/tx.h
drivers/net/wireless/wl12xx/wl12xx.h

index fd955f31cec417268e0539ab64ba9911465f96ce..1d5ef670d48019ec86dd840d2200508dfe79e887 100644 (file)
@@ -116,7 +116,12 @@ struct event_mailbox {
        u8 scheduled_scan_status;
        u8 ps_status;
 
-       u8 reserved_5[29];
+       /* AP FW only */
+       u8 hlid_removed;
+       __le16 sta_aging_status;
+       __le16 sta_tx_retry_exceeded;
+
+       u8 reserved_5[24];
 } __packed;
 
 int wl1271_event_unmask(struct wl1271 *wl);
index f695553f31e0eebd5cd95b692e2aaae44aee8cee..8d048b36bbbaaf2d1fdf4c482bc67df6453c0369 100644 (file)
@@ -86,8 +86,9 @@
 /*
  * RX Descriptor status
  *
- * Bits 0-2 - status
- * Bits 3-7 - reserved
+ * Bits 0-2 - error code
+ * Bits 3-5 - process_id tag (AP mode FW)
+ * Bits 6-7 - reserved
  */
 #define WL1271_RX_DESC_STATUS_MASK      0x07
 
@@ -110,7 +111,10 @@ struct wl1271_rx_descriptor {
        u8  snr;
        __le32 timestamp;
        u8  packet_class;
-       u8  process_id;
+       union {
+               u8  process_id; /* STA FW */
+               u8  hlid; /* AP FW */
+       } __packed;
        u8  pad_len;
        u8  reserved;
 } __packed;
index 5ccd22eaf0746bd5a516230454f42e23bc8bbfa2..05722a560d91d12c3d57af28821eed920a3ac380 100644 (file)
@@ -29,6 +29,7 @@
 #define TX_HW_BLOCK_SIZE                 252
 
 #define TX_HW_MGMT_PKT_LIFETIME_TU       2000
+#define TX_HW_AP_MODE_PKT_LIFETIME_TU    8000
 /* The chipset reference driver states, that the "aid" value 1
  * is for infra-BSS, but is still always used */
 #define TX_HW_DEFAULT_AID                1
@@ -77,8 +78,12 @@ struct wl1271_tx_hw_descr {
        u8 id;
        /* The packet TID value (as User-Priority) */
        u8 tid;
-       /* Identifier of the remote STA in IBSS, 1 in infra-BSS */
-       u8 aid;
+       union {
+               /* STA - Identifier of the remote STA in IBSS, 1 in infra-BSS */
+               u8 aid;
+               /* AP - host link ID (HLID) */
+               u8 hlid;
+       } __packed;
        u8 reserved;
 } __packed;
 
index 4bbdb89f1bcbb27baac0a443d7b00dbcf8683a16..2f855443555c0be674f41fe0426cf19a42f9b560 100644 (file)
@@ -195,6 +195,11 @@ struct wl1271_stats {
 #define NUM_TX_QUEUES              4
 #define NUM_RX_PKT_DESC            8
 
+#define AP_MAX_STATIONS            5
+
+/* Broadcast and Global links + links to stations */
+#define AP_MAX_LINKS               (AP_MAX_STATIONS + 2)
+
 /* FW status registers */
 struct wl1271_fw_status {
        __le32 intr;
@@ -205,7 +210,18 @@ struct wl1271_fw_status {
        __le32 rx_pkt_descs[NUM_RX_PKT_DESC];
        __le32 tx_released_blks[NUM_TX_QUEUES];
        __le32 fw_localtime;
-       __le32 padding[2];
+
+       /* Next fields valid only in AP FW */
+
+       /*
+        * A bitmap (where each bit represents a single HLID)
+        * to indicate if the station is in PS mode.
+        */
+       __le32 link_ps_bitmap;
+
+       /* Number of freed MBs per HLID */
+       u8 tx_lnk_free_blks[AP_MAX_LINKS];
+       u8 padding_1[1];
 } __packed;
 
 struct wl1271_rx_mem_pool_addr {