aufrufen Ich bin durch Linux-Netzwerk-Gerätetreiber Code und wollte wissen, ist es möglich, Geräteschicht Code aus Treibercode aufrufen.Ist es möglich, Geräte-Layer-Code von Treibercode in Linux Kernel
--- 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++;
+
+ }
+
In obigem Code, habe ich versucht dev_queque_xmit (SKB) zu nennen, die eine Schnittstelle zu Vorrichtungsschicht ist und angeschlossen mit Code Linux QoS.
Ich machte diese Änderungen in der Hoffnung, dass Paket-Drop aufgrund der Linux-Verkehrssteuerung von ifconfig Stats unter TX Drop-Byte-Feld erfasst wird, aber nicht sicher, diese Änderungen funktionieren würden?
Ist es möglich, Geräteschicht von Treiberschicht so zu rufen, wie ich es versucht habe?
'dev_queue_xmit()' Routine exportiert nach Kernel für Gerätetreiber, ich denke, dass Ihr Code funktionieren sollte. –
Dank Alexey für Ihre Kommentare, Mein Zweifel ist, Pakete auf höherer Ebene fallen gelassen werden noch in der unteren Schicht des Netzwerk-Stack erfasst werden können? –
@Amit Singh Tomar, mit was gefangen? – osgx