aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/hostap/hostap_wlan.h
diff options
context:
space:
mode:
authorJouni Malinen <jkmaline@cc.hut.fi>2005-08-14 22:08:39 -0400
committerJeff Garzik <jgarzik@pobox.com>2005-08-14 23:06:26 -0400
commit5bee720fd7fa5ed4eade96058acd3a684da30932 (patch)
tree916d3c4c880c64ba13edc4f890fa3b021be4ded8 /drivers/net/wireless/hostap/hostap_wlan.h
parent1e4adbdb3f0348dcf4fce92f1acc7c8386982c17 (diff)
[PATCH] hostap: Fix skb->cb use for TX meta data
Old AP mode code for power saving was using skb->cb for couple of flags before the more generic 802.11 TX code started using the same buffer for struct hostap_skb_tx_data. This resulted in the power save code corrupting the magic value in beginning of the buffer and TX code dropping the power saved packets because of this for the case where STAs send PS-Poll frames with PwrMgmt flag set. This patch modifies the power save code to use the same struct hostap_skb_tx_data as rest of the TX path in order to avoid corrupting the data in skb->cb. In addition, this patch reorders fields in the structure and makes them use smaller types in order to make the structure fit in skb->cb on 64-bit hosts. Signed-off-by: Jouni Malinen <jkmaline@cc.hut.fi> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
Diffstat (limited to 'drivers/net/wireless/hostap/hostap_wlan.h')
-rw-r--r--drivers/net/wireless/hostap/hostap_wlan.h17
1 files changed, 11 insertions, 6 deletions
diff --git a/drivers/net/wireless/hostap/hostap_wlan.h b/drivers/net/wireless/hostap/hostap_wlan.h
index a632d45f334d..6f5bea8a5c23 100644
--- a/drivers/net/wireless/hostap/hostap_wlan.h
+++ b/drivers/net/wireless/hostap/hostap_wlan.h
@@ -941,16 +941,21 @@ struct hostap_interface {
941 941
942#define HOSTAP_SKB_TX_DATA_MAGIC 0xf08a36a2 942#define HOSTAP_SKB_TX_DATA_MAGIC 0xf08a36a2
943 943
944/* TX meta data - stored in skb->cb buffer, so this must be not increase over 944/*
945 * 48-byte limit */ 945 * TX meta data - stored in skb->cb buffer, so this must not be increased over
946 * the 40-byte limit
947 */
946struct hostap_skb_tx_data { 948struct hostap_skb_tx_data {
947 unsigned int magic; /* HOSTAP_SKB_TX_DATA_MAGIC */ 949 u32 magic; /* HOSTAP_SKB_TX_DATA_MAGIC */
948 int rate; /* transmit rate */ 950 u8 rate; /* transmit rate */
951#define HOSTAP_TX_FLAGS_WDS BIT(0)
952#define HOSTAP_TX_FLAGS_BUFFERED_FRAME BIT(1)
953#define HOSTAP_TX_FLAGS_ADD_MOREDATA BIT(2)
954 u8 flags; /* HOSTAP_TX_FLAGS_* */
955 u16 tx_cb_idx;
949 struct hostap_interface *iface; 956 struct hostap_interface *iface;
950 unsigned long jiffies; /* queueing timestamp */ 957 unsigned long jiffies; /* queueing timestamp */
951 int wds;
952 unsigned short ethertype; 958 unsigned short ethertype;
953 int tx_cb_idx;
954}; 959};
955 960
956 961