Chinaunix

标题: 关于qos,关于Qdisc, [打印本页]

作者: drivemyself    时间: 2016-04-20 16:48
标题: 关于qos,关于Qdisc,
小弟正在做一个小驱动,一个网卡的驱动,想使用内核中的qdisc,请问各位大侠,谁使用过qdisc。即,声明一个新的qdisc,不使用用户空间下的tc命令。另有问题:struct Qdisc 中enqueue 与struct Qdisc_ops中的enqueue有什么区别? dev_queue_xmit的时候是调用的谁?感谢感谢!
作者: Godbach    时间: 2016-04-21 11:36
回复 1# drivemyself

命令行 tc 可以用来配置 Qdisc。如果你不用 tc,那就就需要其他的配置方式。

dev_queue_xmit 通常是在 IP 层处理完报文之后调用的。   
作者: drivemyself    时间: 2016-04-21 13:39
回复 2# Godbach

你好,如果我不是用tc 的话 写在驱动里 该怎样新建qdisc,qdisc里面的enqueue 和 qdisc_ops 里面的enqueue有什么区别?

   
作者: Godbach    时间: 2016-04-21 13:46
回复 3# drivemyself

具体我个人没有写过类似代码。不过你可以参考 kernel 总现成的创建 qdisc 的代码。



   
作者: nswcfd    时间: 2016-04-22 10:47
qdisc->enque
作者: nswcfd    时间: 2016-04-22 10:48
实际它的值也是从qdisc-ops上拷贝过来的。
作者: nswcfd    时间: 2016-04-22 10:51
网卡驱动利用qdisc…… 这个有点颠覆三观的感觉…… 不过也不是不可能…… 只是qdisc的实现跟dev耦合的很紧密,楼主大概只需要enque/deque,得自己剥离
作者: drivemyself    时间: 2016-04-23 19:17
回复 7# nswcfd

大侠请留步。。。 我不能够为网卡驱动指定一个我自己的qdisc吗?不过我确实只是想使用enqueue,和 dequeue,另外,你说qdisc->enqueu是从qdisc->ops 拷过来 是怎么个意思?
   
作者: nswcfd    时间: 2016-04-25 16:15
拷贝那句话的意思是,http://lxr.free-electrons.com/source/net/sched/sch_generic.c#L606

qdisc是跟net_device关联的,当然device又跟某个driver关联。
比如说,网络设备eth0,底层驱动是intel e1000e,需要配置的qdisc是pfifo。

tc命令是配置到eth0上的,报文经过pfifo的enque/deque逻辑之后,才进入e1000e驱动的tx逻辑(*)。
看楼主的意思,是想在driver里面(也就是上文*的位置)再做一次enque/deque? <--- 也许完全理解错楼主的意思了。

作者: xuefeihumei    时间: 2016-05-29 17:42
回复 9# nswcfd


大侠虽然理解错了我的意思,但是从大侠给出的提示中,我已经找到解决办法,另外你说的那些也都是非常对的,感谢中!
作者: nswcfd    时间: 2016-05-30 10:26
不客气,恭喜楼主解决了问题,方便的话可以分享一下思路。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2