~ubuntu-branches/ubuntu/precise/linux-ti-omap4/precise

« back to all changes in this revision

Viewing changes to drivers/net/wireless/ath/ath9k/wmi.h

  • Committer: Bazaar Package Importer
  • Author(s): Paolo Pisati
  • Date: 2011-06-29 15:23:51 UTC
  • mfrom: (26.1.1 natty-proposed)
  • Revision ID: james.westby@ubuntu.com-20110629152351-xs96tm303d95rpbk
Tags: 3.0.0-1200.2
* Rebased against 3.0.0-6.7
* BSP from TI based on 3.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
/*
2
 
 * Copyright (c) 2010 Atheros Communications Inc.
 
2
 * Copyright (c) 2010-2011 Atheros Communications Inc.
3
3
 *
4
4
 * Permission to use, copy, modify, and/or distribute this software for any
5
5
 * purpose with or without fee is hereby granted, provided that the above
17
17
#ifndef WMI_H
18
18
#define WMI_H
19
19
 
20
 
 
21
20
struct wmi_event_txrate {
22
21
        __be32 txrate;
23
22
        struct {
31
30
        __be16 seq_no;
32
31
} __packed;
33
32
 
 
33
struct wmi_fw_version {
 
34
        __be16 major;
 
35
        __be16 minor;
 
36
 
 
37
} __packed;
 
38
 
 
39
struct wmi_event_swba {
 
40
        __be64 tsf;
 
41
        u8 beacon_pending;
 
42
};
 
43
 
 
44
/*
 
45
 * 64 - HTC header - WMI header - 1 / txstatus
 
46
 * And some other hdr. space is also accounted for.
 
47
 * 12 seems to be the magic number.
 
48
 */
 
49
#define HTC_MAX_TX_STATUS 12
 
50
 
 
51
#define ATH9K_HTC_TXSTAT_ACK        BIT(0)
 
52
#define ATH9K_HTC_TXSTAT_FILT       BIT(1)
 
53
#define ATH9K_HTC_TXSTAT_RTC_CTS    BIT(2)
 
54
#define ATH9K_HTC_TXSTAT_MCS        BIT(3)
 
55
#define ATH9K_HTC_TXSTAT_CW40       BIT(4)
 
56
#define ATH9K_HTC_TXSTAT_SGI        BIT(5)
 
57
 
 
58
/*
 
59
 * Legacy rates are indicated as indices.
 
60
 * HT rates are indicated as dot11 numbers.
 
61
 * This allows us to resrict the rate field
 
62
 * to 4 bits.
 
63
 */
 
64
#define ATH9K_HTC_TXSTAT_RATE       0x0f
 
65
#define ATH9K_HTC_TXSTAT_RATE_S     0
 
66
 
 
67
#define ATH9K_HTC_TXSTAT_EPID       0xf0
 
68
#define ATH9K_HTC_TXSTAT_EPID_S     4
 
69
 
 
70
struct __wmi_event_txstatus {
 
71
        u8 cookie;
 
72
        u8 ts_rate; /* Also holds EP ID */
 
73
        u8 ts_flags;
 
74
};
 
75
 
 
76
struct wmi_event_txstatus {
 
77
        u8 cnt;
 
78
        struct __wmi_event_txstatus txstatus[HTC_MAX_TX_STATUS];
 
79
} __packed;
 
80
 
34
81
enum wmi_cmd_id {
35
82
        WMI_ECHO_CMDID = 0x0001,
36
83
        WMI_ACCESS_MEMORY_CMDID,
37
84
 
38
85
        /* Commands to Target */
 
86
        WMI_GET_FW_VERSION,
39
87
        WMI_DISABLE_INTR_CMDID,
40
88
        WMI_ENABLE_INTR_CMDID,
41
 
        WMI_RX_LINK_CMDID,
42
89
        WMI_ATH_INIT_CMDID,
43
90
        WMI_ABORT_TXQ_CMDID,
44
91
        WMI_STOP_TX_DMA_CMDID,
45
 
        WMI_STOP_DMA_RECV_CMDID,
46
92
        WMI_ABORT_TX_DMA_CMDID,
47
93
        WMI_DRAIN_TXQ_CMDID,
48
94
        WMI_DRAIN_TXQ_ALL_CMDID,
50
96
        WMI_STOP_RECV_CMDID,
51
97
        WMI_FLUSH_RECV_CMDID,
52
98
        WMI_SET_MODE_CMDID,
53
 
        WMI_RESET_CMDID,
54
99
        WMI_NODE_CREATE_CMDID,
55
100
        WMI_NODE_REMOVE_CMDID,
56
101
        WMI_VAP_REMOVE_CMDID,
57
102
        WMI_VAP_CREATE_CMDID,
58
 
        WMI_BEACON_UPDATE_CMDID,
59
103
        WMI_REG_READ_CMDID,
60
104
        WMI_REG_WRITE_CMDID,
61
105
        WMI_RC_STATE_CHANGE_CMDID,
62
106
        WMI_RC_RATE_UPDATE_CMDID,
63
 
        WMI_DEBUG_INFO_CMDID,
64
 
        WMI_HOST_ATTACH,
65
107
        WMI_TARGET_IC_UPDATE_CMDID,
66
 
        WMI_TGT_STATS_CMDID,
67
108
        WMI_TX_AGGR_ENABLE_CMDID,
68
109
        WMI_TGT_DETACH_CMDID,
69
 
        WMI_TGT_TXQ_ENABLE_CMDID,
70
 
        WMI_AGGR_LIMIT_CMD = 0x0026,
 
110
        WMI_NODE_UPDATE_CMDID,
 
111
        WMI_INT_STATS_CMDID,
 
112
        WMI_TX_STATS_CMDID,
 
113
        WMI_RX_STATS_CMDID,
 
114
        WMI_BITRATE_MASK_CMDID,
71
115
};
72
116
 
73
117
enum wmi_event_id {
76
120
        WMI_FATAL_EVENTID,
77
121
        WMI_TXTO_EVENTID,
78
122
        WMI_BMISS_EVENTID,
79
 
        WMI_WLAN_TXCOMP_EVENTID,
80
123
        WMI_DELBA_EVENTID,
81
 
        WMI_TXRATE_EVENTID,
 
124
        WMI_TXSTATUS_EVENTID,
82
125
};
83
126
 
84
127
#define MAX_CMD_NUMBER 62
88
131
        __be32 val;
89
132
};
90
133
 
 
134
struct ath9k_htc_tx_event {
 
135
        int count;
 
136
        struct __wmi_event_txstatus txs;
 
137
        struct list_head list;
 
138
};
 
139
 
91
140
struct wmi {
92
141
        struct ath9k_htc_priv *drv_priv;
93
142
        struct htc_target *htc;
95
144
        struct mutex op_mutex;
96
145
        struct completion cmd_wait;
97
146
        enum wmi_cmd_id last_cmd_id;
 
147
        struct sk_buff_head wmi_event_queue;
 
148
        struct tasklet_struct wmi_event_tasklet;
98
149
        u16 tx_seq_id;
99
150
        u8 *cmd_rsp_buf;
100
151
        u32 cmd_rsp_len;
101
152
        bool stopped;
102
153
 
103
 
        u8 beacon_pending;
 
154
        struct list_head pending_tx_events;
 
155
        spinlock_t event_lock;
 
156
 
104
157
        spinlock_t wmi_lock;
105
158
 
106
159
        atomic_t mwrite_cnt;
117
170
                  u8 *cmd_buf, u32 cmd_len,
118
171
                  u8 *rsp_buf, u32 rsp_len,
119
172
                  u32 timeout);
120
 
void ath9k_swba_tasklet(unsigned long data);
 
173
void ath9k_wmi_event_tasklet(unsigned long data);
121
174
void ath9k_fatal_work(struct work_struct *work);
 
175
void ath9k_wmi_event_drain(struct ath9k_htc_priv *priv);
122
176
 
123
177
#define WMI_CMD(_wmi_cmd)                                               \
124
178
        do {                                                            \