QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2564|回复: 2

net_rx_action及ptype_all的问题

[复制链接]
发表于 2006-6-6 11:53:45 | 显示全部楼层 |阅读模式
BBS 水木清华站 -- 文章阅读 [讨论区: KernelTech]

[分类讨论区] [返回版面] [返回文摘区] [快速返回]
--------------------------------------------------------------------------------
发信人: [email protected] (不变天), 信区: KernelTech
标  题: net_rx_action的问题
发信站: Ncnipc_BBS (Fri Jan 18 17:50:37 2002)
转信站: SMTH!thunews.dhs.org!news.happynet.org!NcnipcBBS

这里一段,看来看去,如果ptype_all里面只有一个packet_type的话,就不执行?
//但是我用module的办法试过了,
//在ptype_all链表只有一个packet_type的时候,
//这个packet_type的func是能够获得skb的,怎么回事?
-----------
            pt_prev = NULL;
            for (ptype = ptype_all; ptype; ptype = ptype->next) {
                if (!ptype->dev || ptype->dev == skb->dev) {
                    if (pt_prev) { //就是这里,第一次的时候显然是NULL呀
                        if (!pt_prev->data) {
                            deliver_to_old_ones(pt_prev, skb, 0);
                        } else {
                            atomic_inc(&skb->users);
                            pt_prev->func(skb,
                                      skb->dev,
                                      pt_prev);
                        }
                    }
                    pt_prev = ptype;
                }
            }
--
※ 来源:·Ncnipc BBS bbs.nipc.org.cn·[FROM: 210.12.224.100]


--------------------------------------------------------------------------------
[分类讨论区] [返回版面] [返回文摘区] [快速返回]
发表于 2006-6-7 12:28:51 | 显示全部楼层
看看 deliver_to_old_ones 函数里面有调用。
回复

使用道具 举报

 楼主| 发表于 2006-6-7 15:40:38 | 显示全部楼层
第一次时候是根本不会进入
if (!pt_prev->data) {
deliver_to_old_ones(pt_prev, skb, 0);
} else {
atomic_inc(&skb->users);
pt_prev->func(skb,
skb->dev,
pt_prev);
}
这段代码的呀
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-22 12:52 , Processed in 0.037249 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表