As for if this code could work correctly, I doubt so. This change would cause trouble, like:
dev_queue_xmit()
-> enqueue to QoS (I assume you mean Qdisc)
-> rtl8139_start_xmit()
-> dev_queue_xmit() # creating a loop
Currently, no way for "ifconfig" to get to know "number of drop packets(due to QoS)", because "ifconfig" read statistics from /proc/net/dev, and those statistics doesn't contain QoS statistics, but just NIC driver itself.
But you can get to know "number of drop packets(due to QoS)", in other way. In kernel source code, there is:
rtnl_register(PF_UNSPEC, RTM_GETQDISC, tc_get_qdisc, tc_dump_qdisc, NULL); # it fill "gnet_stats_queue", and there is a drop counter internally.
which is to dump Qdisc status, including drop number due to congestion. It is a interface for Advanced user-level admin tool ( not "ifconfig" ) to retrieve more detailed information via rtlink message, in addition of "/proc/net/dev". However, I am not sure what those advanced user-level admin tool are (not familar with them). Maybe "ip" command could ??