我正在浏览 Linux 网络设备驱动程序代码,想知道是否可以从驱动程序代码中调用设备层代码。
--- a/drivers/net/ethernet/realtek/8139too.c
+++ b/drivers/net/ethernet/realtek/8139too.c
@@ -1706,10 +1706,20 @@ static netdev_tx_t rtl8139_start_xmit (struct sk_buff *skb,
unsigned int entry;
unsigned int len = skb->len;
unsigned long flags;
-
+ int ret=0;
/* Calculate the next Tx descriptor entry. */
entry = tp->cur_tx % NUM_TX_DESC;
+
+ ret = dev_queue_xmit(skb);
+
+ if (likely(ret == NET_XMIT_SUCCESS || ret == NET_XMIT_CN)) {}
+
+ else {
+ dev->stats.tx_dropped++;
+
+ }
+
在上面的代码中,我尝试调用 dev_queque_xmit(skb),它是设备层的接口,它与 Linux QoS 代码挂钩。
我进行了这些更改,希望通过 tx drop byte 字段下的 ifconfig stats 捕获由于 Linux 流量控制导致的数据包丢失,但不确定这些更改是否有效?
是否可以以我尝试的这种方式从驱动程序层调用设备层?