aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/p54/p54.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/p54/p54.h')
-rw-r--r--drivers/net/wireless/p54/p54.h23
1 files changed, 18 insertions, 5 deletions
diff --git a/drivers/net/wireless/p54/p54.h b/drivers/net/wireless/p54/p54.h
index d2dbb9e15d97..ab79e32f0b27 100644
--- a/drivers/net/wireless/p54/p54.h
+++ b/drivers/net/wireless/p54/p54.h
@@ -44,6 +44,9 @@ enum p54_control_frame_types {
44 P54_CONTROL_TYPE_BT_OPTIONS = 35 44 P54_CONTROL_TYPE_BT_OPTIONS = 35
45}; 45};
46 46
47#define P54_HDR_FLAG_CONTROL BIT(15)
48#define P54_HDR_FLAG_CONTROL_OPSET (BIT(15) + BIT(0))
49
47struct p54_hdr { 50struct p54_hdr {
48 __le16 flags; 51 __le16 flags;
49 __le16 len; 52 __le16 len;
@@ -54,6 +57,10 @@ struct p54_hdr {
54 u8 data[0]; 57 u8 data[0];
55} __attribute__ ((packed)); 58} __attribute__ ((packed));
56 59
60#define FREE_AFTER_TX(skb) \
61 ((((struct p54_hdr *) ((struct sk_buff *) skb)->data)-> \
62 flags) == cpu_to_le16(P54_HDR_FLAG_CONTROL_OPSET))
63
57struct p54_edcf_queue_param { 64struct p54_edcf_queue_param {
58 __le16 aifs; 65 __le16 aifs;
59 __le16 cwmin; 66 __le16 cwmin;
@@ -61,6 +68,13 @@ struct p54_edcf_queue_param {
61 __le16 txop; 68 __le16 txop;
62} __attribute__ ((packed)); 69} __attribute__ ((packed));
63 70
71struct p54_rssi_linear_approximation {
72 s16 mul;
73 s16 add;
74 s16 longbow_unkn;
75 s16 longbow_unk2;
76};
77
64#define EEPROM_READBACK_LEN 0x3fc 78#define EEPROM_READBACK_LEN 0x3fc
65 79
66#define ISL38XX_DEV_FIRMWARE_ADDR 0x20000 80#define ISL38XX_DEV_FIRMWARE_ADDR 0x20000
@@ -71,11 +85,11 @@ struct p54_edcf_queue_param {
71#define FW_LM20 0x4c4d3230 85#define FW_LM20 0x4c4d3230
72 86
73struct p54_common { 87struct p54_common {
88 struct ieee80211_hw *hw;
74 u32 rx_start; 89 u32 rx_start;
75 u32 rx_end; 90 u32 rx_end;
76 struct sk_buff_head tx_queue; 91 struct sk_buff_head tx_queue;
77 void (*tx)(struct ieee80211_hw *dev, struct sk_buff *skb, 92 void (*tx)(struct ieee80211_hw *dev, struct sk_buff *skb);
78 int free_on_tx);
79 int (*open)(struct ieee80211_hw *dev); 93 int (*open)(struct ieee80211_hw *dev);
80 void (*stop)(struct ieee80211_hw *dev); 94 void (*stop)(struct ieee80211_hw *dev);
81 int mode; 95 int mode;
@@ -90,6 +104,7 @@ struct p54_common {
90 struct pda_channel_output_limit *output_limit; 104 struct pda_channel_output_limit *output_limit;
91 unsigned int output_limit_len; 105 unsigned int output_limit_len;
92 struct pda_pa_curve_data *curve_data; 106 struct pda_pa_curve_data *curve_data;
107 struct p54_rssi_linear_approximation rssical_db[IEEE80211_NUM_BANDS];
93 unsigned int filter_flags; 108 unsigned int filter_flags;
94 bool use_short_slot; 109 bool use_short_slot;
95 u16 rxhw; 110 u16 rxhw;
@@ -106,9 +121,7 @@ struct p54_common {
106 struct ieee80211_tx_queue_stats tx_stats[8]; 121 struct ieee80211_tx_queue_stats tx_stats[8];
107 struct p54_edcf_queue_param qos_params[8]; 122 struct p54_edcf_queue_param qos_params[8];
108 struct ieee80211_low_level_stats stats; 123 struct ieee80211_low_level_stats stats;
109 struct timer_list stats_timer; 124 struct delayed_work work;
110 struct completion stats_comp;
111 struct sk_buff *cached_stats;
112 struct sk_buff *cached_beacon; 125 struct sk_buff *cached_beacon;
113 int noise; 126 int noise;
114 void *eeprom; 127 void *eeprom;