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

Reply via email to