aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/p54/p54.h
diff options
context:
space:
mode:
authorChristian Lamparter <chunkeey@web.de>2008-10-14 22:07:16 -0400
committerJohn W. Linville <linville@tuxdriver.com>2008-10-31 19:00:33 -0400
commitb92f30d65aeb0502e2ed8beb80c8465578b40002 (patch)
tree7d2669d864df5368377dcad11c1bbf4be266eff5 /drivers/net/wireless/p54/p54.h
parent9de5776ff33a006b864341a6ec8d31f1a3c628cf (diff)
p54: fix memory management
We have to be careful if multiple "control frames" are passed in a very short intervals to the device's firmware. As p54_assign_address always put them into same memory location. To guarantee that this won't happen anymore, we have to treat control frames like normal data frames in the devices own memory management. Signed-off-by: Christian Lamparter <chunkeey@web.de> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/p54/p54.h')
-rw-r--r--drivers/net/wireless/p54/p54.h7
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/net/wireless/p54/p54.h b/drivers/net/wireless/p54/p54.h
index 1dace10feb7e..e9988e78a0c2 100644
--- a/drivers/net/wireless/p54/p54.h
+++ b/drivers/net/wireless/p54/p54.h
@@ -69,8 +69,8 @@ struct p54_common {
69 u32 rx_start; 69 u32 rx_start;
70 u32 rx_end; 70 u32 rx_end;
71 struct sk_buff_head tx_queue; 71 struct sk_buff_head tx_queue;
72 void (*tx)(struct ieee80211_hw *dev, struct p54_control_hdr *data, 72 void (*tx)(struct ieee80211_hw *dev, struct sk_buff *skb,
73 size_t len, int free_on_tx); 73 int free_on_tx);
74 int (*open)(struct ieee80211_hw *dev); 74 int (*open)(struct ieee80211_hw *dev);
75 void (*stop)(struct ieee80211_hw *dev); 75 void (*stop)(struct ieee80211_hw *dev);
76 int mode; 76 int mode;
@@ -102,13 +102,14 @@ struct p54_common {
102 struct ieee80211_low_level_stats stats; 102 struct ieee80211_low_level_stats stats;
103 struct timer_list stats_timer; 103 struct timer_list stats_timer;
104 struct completion stats_comp; 104 struct completion stats_comp;
105 void *cached_stats; 105 struct sk_buff *cached_stats;
106 int noise; 106 int noise;
107 void *eeprom; 107 void *eeprom;
108 struct completion eeprom_comp; 108 struct completion eeprom_comp;
109}; 109};
110 110
111int p54_rx(struct ieee80211_hw *dev, struct sk_buff *skb); 111int p54_rx(struct ieee80211_hw *dev, struct sk_buff *skb);
112void p54_free_skb(struct ieee80211_hw *dev, struct sk_buff *skb);
112int p54_parse_firmware(struct ieee80211_hw *dev, const struct firmware *fw); 113int p54_parse_firmware(struct ieee80211_hw *dev, const struct firmware *fw);
113int p54_read_eeprom(struct ieee80211_hw *dev); 114int p54_read_eeprom(struct ieee80211_hw *dev);
114struct ieee80211_hw *p54_init_common(size_t priv_data_len); 115struct ieee80211_hw *p54_init_common(size_t priv_data_len);