linux kernel 工程师
全部博文(99)
发布时间:2014-02-14 09:06:34
qdisc_restart--->sch_direct_xmit--->dev_hard_start_xmit(skb, dev, txq)---->rc = ops->ndo_start_xmit(skb, dev);/* * NOTE: Called under qdisc_lock(q) with locally disabled BH. * * __QDISC_STATE_RUNNING guarantees only one CPU can process * this qdisc at a time. qdisc_loc.........【阅读全文】
发布时间:2014-02-14 08:54:33
qdisk_run 是对__qdisc_run的一个封装,仅仅会被NET_TX_SOFTIRQ对应的软中断服务程序net_tx_action调用。在调用__qdisc_run之前设置__QDISC___STATE_RUNNING状态
qdisk running 状态的操作包括设置,清除和查询......【阅读全文】
发布时间:2014-02-13 17:57:30
void __qdisc_run(struct Qdisc *q){ int quota = weight_p; while (qdisc_restart(q)) { // qdisc_restart才是真正的核心 // 如果qdisc_restart返回值大于0,表示队列非空;返回0表示队列空了或者发送失败 /* * Ordered by possible occurrence: Postpone .........【阅读全文】
发布时间:2014-02-11 17:48:28
__netif_receive_skb用来实现驱动与协议栈的结合static int __netif_receive_skb(struct sk_buff *skb){ struct packet_type *ptype, *pt_prev; rx_handler_func_t *rx_handler; struct net_device *orig_dev; struct net_device *null_or_dev; bool deliver_exact = false; in.........【阅读全文】
发布时间:2014-02-11 17:10:29
dev_add_pack用来实现项协议栈增加协议handlerstruct packet_type { __be16 type; /* This is really htons(ether_type). */ //用来与skb->protocol进行匹配 struct net_device *dev; /* NULL is wildcarded here */&.........【阅读全文】