<div class="dp-highlighter bg_cpp">
<div class="bar">
<div class="tools">
[cpp]?<a class="ViewSource" title="view plain" href="http://blog.csdn.net/geekcome/article/details/7545855">view plain<a class="CopyToClipboard" title="copy" href="http://blog.csdn.net/geekcome/article/details/7545855">copy
?
- ?
-
- ?
-
- ?
-
- ??
-
- ?ip_queue_xmit(?sock?*sk,??
-
- {??
-
- ????unsigned??*ptr;??
-
- ??????
-
- ?????
-
- ??
-
- ??
-
- ??
-
- ?
-
- ?
-
- ?
-
- ??
-
- ?????
-
- ??
-
- ????(free!=2)??
- id??????=?htons(ip_id_count++);??
- ??????
-
- ??
-
- ?????(sk?==?NULL)??
-
- ??
- free?=?free;??
- ??
-
- ?
-
- ?
-
- ??
-
- ??
-
- ?
-
- ??
-
- ??
-
- ?
-
- ??
-
- ?
-
- ??
-
- ??
-
- ?
-
- ?
-
- ??
-
- ????......................??
-
- ?
-
- ???????
-
- ????????.............................??
-
- ????????((dev->flags&IFF_BROADCAST)?&&?iph->daddr==dev->pa_brdaddr?&&?!(dev->flags&IFF_LOOPBACK))??
-
- ??????????
- flags?&?IFF_UP)??
- ????{??
-
- ?
-
- ??
-
- ?????????(sk?!=?NULL)??
-
- ????????????dev_queue_xmit(skb,?sk->priority);??
-
- ??????????
-
- ????????????dev_queue_xmit(skb,?SOPRI_NORMAL);??
-
- ????}??
-
- ????{??
-
- ?????????(free)??
-
- ????}??
-
四、驱动层(链路层)
在函数中,函数调用会调用具体设备的发送函数来发送数据包
dev->hard_start_xmit(skb,dev);
具体设备的发送函数在网络初始化的时候已经设置了。
这里以8390网卡为例来说明驱动层的工作原理,在net/drivers/8390.c中函数ethdev_init()函数中设置如下: (编辑:应用网_丽江站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|