Я просматриваю код драйвера устройства Linux Networking и хочу знать, возможно ли это код кода устройства вызова из кода драйвера.
--- 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), который является интерфейсом к слою устройства, и он подключился к QoS-коду Linux.
Я сделал эти изменения в надежде, что падение пакета из-за управления трафиком Linux будет зафиксировано с помощью статистики ifconfig в поле tx drop byte, но не уверены, что эти изменения будут работать?
Можно ли вызывать уровень устройства из уровня драйвера таким образом, который я пробовал?