<剛發玩文 才發現有一個LINUX版 所以這邊在重複一下 還請多包涵>
大家好,最近小弟在做一個實驗
遇到了一點瓶頸 想來這邊求救一下
問題如下
目前我需要知道每一個介面卡 輸出佇列的長度
仔細看了 Linux 網路部分的程式碼
發現 ip 層處理完後 會將 skb 交由 dev_queue_xmit 函式處理
dev_queue_xmit 會從接收到的 skb 結構中的 dev 元素了解到輸出裝置
dev 中有一個 Qdisc 裡面就是描寫裝置的Queue
我用了兩塊網卡 一張是有線(eth0) 一張是無線(ath0)
在核心打印出處理封包時 每一個外出裝置佇列的長度
=====[程式碼如下]=======================
struct net_device *dev_ = skb->dev;
struct Qdisc *qdisc;
struct sk_buff_head *list;
qdisc = rcu_dereference(dev_->qdisc);
list = qdisc_priv(qdisc);.........參考enququq程式碼找到的片段
len = (unsigned)list->qlen
====================================
(用dev_->name 可以成功取得 輸出裝置名稱)

發現在有線的部分 長度一直都是0
這個滿合理的 因為我還沒找到一個夠快的封包產生器
只能用ping 下-f 還有下-l 8000
[雖然說 Linux 核心有一個pktgen可以使用
不過目前還沒成功 掛上去後 一直無法用 顯示pg檔找不到 >"<]

另外在無線的部分 不管怎麼做
輸出佇列總是有封包在排隊 似乎不合理
不知道是什麼原因
還請大家多多指教 謝謝!!