Linux カーネル用の新しい tc キューイング規則を作成したいと考えています。目標は、例えば列に並ぶことです。10 個のパケットを送信してから、それらをすべて送信します (これはネットワークにとってあまり良いことではありませんが、それについて調査したいと思います)。
それで、すでに行われたこと: 私は新しい sched-module (エンキュー、デキュー関数など) のスケルトンを持っています。これも正しくコンパイルされ、正しく動作しています (キューに入れられた 1 つのパケット、1 つのパケットが送信されます - 特別なことは何もありません)。実行中のカーネルと同じソースを使用してubuntu maverickでコンパイルし、モジュールをMakefileとKconfigに入れています。
エンキュー関数が呼び出されるたびに、その後、デキュー関数が qdisc_restart (sch_generic.c 内) によって呼び出され、1 つのパケットのみが送信されることがわかりました。
私の問題は、たとえば収集したように、モジュールからネットワークインターフェイスに複数のパケットを送信するにはどうすればよいかです。10 個のパケットをすべて送信したいのですが?
qdisc_restart (およびロックメカニズム) と同じパラメーターを使用して (sch_generic.c から) sch_direct_xmit 関数を呼び出そうとしましたが、モジュールのコンパイルが失敗しました: 不明なシンボル sch_direct_xmit (ただし、/proc/kallsyms を grep すると、結果)。何が問題なのですか?コードが必要な場合はお知らせください (sched_generic.c と同じ .h を含めました)。
BR クリストフ