Chinaunix首页 | 论坛 | 博客
  • 博客访问: 435770
  • 博文数量: 99
  • 博客积分: 65
  • 博客等级: 民兵
  • 技术积分: 1012
  • 用 户 组: 普通用户
  • 注册时间: 2012-04-20 16:30
个人简介

linux kernel 工程师

文章分类

全部博文(99)

文章存档

2018年(5)

2017年(12)

2016年(27)

2015年(10)

2014年(43)

2012年(2)

我的朋友

发布时间:2014-02-17 15:41:04

// 如果长时间发送不出去,则报警// netdevice->watchdog_timer的初始化void dev_init_scheduler(struct net_device *dev){ dev->qdisc = &noop_qdisc; netdev_for_each_tx_queue(dev, dev_init_scheduler_queue, &noop_qdisc); if (dev_ingress_queue(dev))  dev_init_scheduler_qu.........【阅读全文】

阅读(2694) | 评论(0) | 转发(0)

发布时间:2014-02-14 10:40:48

dev_kfree_skb_any是一个释放skb的封装函数,它根据是否在irq环境下,决定直接释放skb还是等softirq去释放skbvoid dev_kfree_skb_irq(struct sk_buff *skb){ if (atomic_dec_and_test(&skb->users)) {  struct softnet_data *sd;  unsigned long flags;  local_irq_save(.........【阅读全文】

阅读(3072) | 评论(0) | 转发(0)

发布时间:2014-02-14 10:36:11

工作的环境应当是进程的上下文 _dev_xmit_skb函数主要做两件事情: (1) 如果qdisc为空的,试图直接发送数据包(2)如果qdisc不空,将数据包加入qdisc,并运行qdisc 当设备进入调度队列准备传输时,qdisc_run函数就会选出下一个要传输的帧,而该函数会间接的调用相关联的队列规则dequeue函数,从对了中取出.........【阅读全文】

阅读(3358) | 评论(0) | 转发(0)

发布时间:2014-02-14 10:27:37

static void net_tx_action(struct softirq_action *h){ struct softnet_data *sd = &__get_cpu_var(softnet_data); //1. 释放completion_queue中的skb if (sd->completion_queue) {  struct sk_buff *clist;  local_irq_disable();  clist = sd->completion_.........【阅读全文】

阅读(1507) | 评论(0) | 转发(0)

发布时间:2014-02-14 10:01:18

register_netdevice会初始化netdev的Tx调度discipline, 缺省使用noop_qdiscregister_netdevice --->dev_init_schedulervoid dev_init_scheduler(struct net_device *dev){ dev->qdisc = &noop_qdisc; netdev_for_each_tx_queue(dev, dev_init_scheduler_queue, &noop_qdisc); if (dev_.........【阅读全文】

阅读(3172) | 评论(0) | 转发(0)
给主人留下些什么吧!~~
留言热议
请登录后留言。

登录 注册