diff options
Diffstat (limited to 'drivers/net/wireless/p54/p54.h')
-rw-r--r-- | drivers/net/wireless/p54/p54.h | 23 |
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 | |||
47 | struct p54_hdr { | 50 | struct 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 | |||
57 | struct p54_edcf_queue_param { | 64 | struct 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 | ||
71 | struct 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 | ||
73 | struct p54_common { | 87 | struct 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; |