マスターからスレーブに udp パケットを送信する低遅延アプリケーションに取り組んでいます。マスターは、データをスレーブに直接送信するアクセス ポイントとして機能します。ほとんどの場合、問題なく動作していますが、データが遅れてスレーブに到着することがあります。遅延の考えられる原因を絞り込むために、マスター デバイスで送信されたときにパケットにタイムスタンプを付けたいと考えています。
これを実現するには、パケットが送信された直後にタイムスタンプを取得できるフックが必要です。
http://www.xml.com/ldd/chapter/book/ch14.html#t7によると、パケットが送信された後に割り込みが発生するはずですが、tx 割り込みが処理されている場所を実際に見つけることができません。
これはドライバーです: drivers/net/wireless/bcmdhd/dhd_linux.c
dhd_start_xmit(..)
別のドライバーから呼び出して、パケットを送信します。dhd_start_xmit(..)
呼び出しdhd_sendpkt(..)
、次にdhd_bus_txdata(..)
(bcmdhd/dhdpcie.c で) が呼び出され、データがキューに入れられます。それは基本的に、キューが でスケジュールされた後に何が起こるかを見失うところですdhd_bus_schedule_queue(..)
。
質問
この特定のドライバーでパケットが物理的に送信された直後に何が起こるか知っている人はいますか?コードの一部を教えてくれますか?
もちろん、問題に取り組むための他のアドバイスも大歓迎です。
ありがとう