On Tue, Jun 22, 2010 at 3:21 AM, Jin YunYe <yunye...@gmail.com> wrote: > Thanks for your reply, Bob. > > My problem is not exactly compatibility of hardware. Instead, I want > the driver to send out the response as soon as it receives a packet > (when notified by interrupt ath5k_intr() ). > > I am thinking of calling ath5k_tx(struct ieee80211_hw *hw, struct > sk_buff *skb) inside ath5k_tasklet_rx(). However, I have difficulty in > passing the correct skb. > > If I am not wrong, struct sk_buff *skb should point to a complete WLAN > packet. Could anyone please advise on how to prepare such a packet.
You are correct, it is a complete packet. The best advice I can give is to look at the IEEE 802.11 standard for the packet format. Create such a packet in the skb->data (see documentation for dev_alloc_skb, skb_put, etc.) and then you can invoke ath5k_tx(). Note, however, that locking may be tricky; you might want to do all rx/tx processing in the irq with a single lock for this particular task. When you call ath5k_tx, the packet is put on a queue. The queue control unit (QCU) determines when this packet is ready according to a qdisc, and the DCF control unit (DCU) determines when it is actually sent according to 802.11 medium access controls, so things like contention window settings on the queue will have an impact on the delay from hardware to the air. You'll have to read the source to see how those parameters are programmed. The hardware itself handles control frames such as ACK/RTS/CTS, so we don't generate those. -- Bob Copeland %% www.bobcopeland.com _______________________________________________ ath5k-devel mailing list ath5k-devel@lists.ath5k.org https://lists.ath5k.org/mailman/listinfo/ath5k-devel