aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rt2x00/rt2x00.h
diff options
context:
space:
mode:
authorIvo van Doorn <ivdoorn@gmail.com>2008-05-10 07:46:13 -0400
committerJohn W. Linville <linville@tuxdriver.com>2008-05-21 21:47:34 -0400
commit7050ec821c52826b63835dde54ee3d71c7db4262 (patch)
treef8154413b4ed1e8ff01b6dbb1c79240dcce83dc8 /drivers/net/wireless/rt2x00/rt2x00.h
parent4de36fe5abe077a4c65bf0b6a309865aa043e055 (diff)
rt2x00: Split rt2x00lib_write_tx_desc()
Split rt2x00lib_write_tx_desc() up into a TX descriptor initializor and TX descriptor writer. This split is required to properly allow mac80211 to move its tx_control structure into the skb->cb array. The rt2x00queue_create_tx_descriptor() function will read all tx control information and convert it into a rt2x00 TX descriptor information structure. After that function is complete, we have all information we needed from the tx control structure and are free to start writing into the skb->cb array for our own purposes. rt2x00queue_write_tx_descriptor() will be in charge of really sending the TX descriptor to the hardware and kicking the TX queue. Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt2x00.h')
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00.h42
1 files changed, 35 insertions, 7 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h
index 6f7b34fac16c..9c186d79c11c 100644
--- a/drivers/net/wireless/rt2x00/rt2x00.h
+++ b/drivers/net/wireless/rt2x00/rt2x00.h
@@ -927,6 +927,41 @@ static inline u16 get_duration_res(const unsigned int size, const u8 rate)
927} 927}
928 928
929/** 929/**
930 * rt2x00queue_create_tx_descriptor - Create TX descriptor from mac80211 input
931 * @entry: The entry which will be used to transfer the TX frame.
932 * @txdesc: rt2x00 TX descriptor which will be initialized by this function.
933 * @control: mac80211 TX control structure from where we read the information.
934 *
935 * This function will initialize the &struct txentry_desc based on information
936 * from mac80211. This descriptor can then be used by rt2x00lib and the drivers
937 * to correctly initialize the hardware descriptor.
938 * Note that before calling this function the skb->cb array must be untouched
939 * by rt2x00lib. Only after this function completes will it be save to
940 * overwrite the skb->cb information.
941 * The reason for this is that mac80211 writes its own tx information into
942 * the skb->cb array, and this function will use that information to initialize
943 * the &struct txentry_desc structure.
944 */
945void rt2x00queue_create_tx_descriptor(struct queue_entry *entry,
946 struct txentry_desc *txdesc,
947 struct ieee80211_tx_control *control);
948
949/**
950 * rt2x00queue_write_tx_descriptor - Write TX descriptor to hardware
951 * @entry: The entry which will be used to transfer the TX frame.
952 * @txdesc: TX descriptor which will be used to write hardware descriptor
953 *
954 * This function will write a TX descriptor initialized by
955 * &rt2x00queue_create_tx_descriptor to the hardware. After this call
956 * has completed the frame is now owned by the hardware, the hardware
957 * queue will have automatically be kicked unless this frame was generated
958 * by rt2x00lib, in which case the frame is "special" and must be kicked
959 * by the caller.
960 */
961void rt2x00queue_write_tx_descriptor(struct queue_entry *entry,
962 struct txentry_desc *txdesc);
963
964/**
930 * rt2x00queue_get_queue - Convert queue index to queue pointer 965 * rt2x00queue_get_queue - Convert queue index to queue pointer
931 * @rt2x00dev: Pointer to &struct rt2x00_dev. 966 * @rt2x00dev: Pointer to &struct rt2x00_dev.
932 * @queue: rt2x00 queue index (see &enum data_queue_qid). 967 * @queue: rt2x00 queue index (see &enum data_queue_qid).
@@ -964,13 +999,6 @@ void rt2x00lib_rxdone(struct queue_entry *entry,
964 struct rxdone_entry_desc *rxdesc); 999 struct rxdone_entry_desc *rxdesc);
965 1000
966/* 1001/*
967 * TX descriptor initializer
968 */
969void rt2x00lib_write_tx_desc(struct rt2x00_dev *rt2x00dev,
970 struct sk_buff *skb,
971 struct ieee80211_tx_control *control);
972
973/*
974 * mac80211 handlers. 1002 * mac80211 handlers.
975 */ 1003 */
976int rt2x00mac_tx(struct ieee80211_hw *hw, struct sk_buff *skb, 1004int rt2x00mac_tx(struct ieee80211_hw *hw, struct sk_buff *skb,