- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我与客户保持联系时,我会收到每个客户的报告。一段时间后,程序崩溃了,我收到一条错误消息:
skb allocation failed.
我能做什么?
最佳答案
您提供的信息太不完整,无法预测任何事情。但是,网络套接字的主要问题仍然在于缓冲区分配。 skbuffs
是 Linux 内核处理网络数据包的缓冲区。当您与客户端保持连接并接收数据包时,网卡在内部接收数据包,填充到 skbuff 中并传递到网络堆栈。
查看 alloc_skb()
返回的内容。阅读手册页可以知道,如果alloc_skb()
返回NULL,则没有内存可以分配您想要的 block 。这可能是分配失败的情况之一。
顺便说一句,希望你能在中断的基础上驱动整个过程。 alloc_skb()
的手册页显示,
Buffers may only be allocated from interrupts using a gfp_mask of GFP_ATOMIC.
无论内存情况如何,传递数据的最佳选择是中断处理程序。可以在驱动程序加载时创建一个 skb 列表。并且,在中断期间,执行alloc_skb
,如果失败,您始终可以使用预分配的缓冲区之一(如果有的话)来保存数据。为下一次中断发生补充缓冲区。
关于c - Linux skb 分配失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30339520/
当我使用 netfilter API 时, iph = ip_hdr(skb); saddr = iph->saddr; //unsigned long daddr = iph->dad
当我使用内核模块捕获内核中的传出数据包时,我正在使用 kfree_skb() 丢弃该数据包,但它不起作用并且数据包到达其目的地点。我检查 &skb->user 是 1。 change_skb(stru
我想在多个队列中加入一个 skb buff。所以我想到了使用克隆选项。现在我的问题是,如果我在克隆 skb 上执行 kfree_skb,它会释放原始 skb,还是只删除一个引用? 谢谢! 最佳答案 k
我有 net_device,它实现了 ndo_start_xmit 功能。 当 ndo_start_xmit 函数被调用时,我有一个包含 IP 数据包的 skb。我需要公开带有 IP+UDP head
当我与客户保持联系时,我会收到每个客户的报告。一段时间后,程序崩溃了,我收到一条错误消息: skb allocation failed. 我能做什么? 最佳答案 您提供的信息太不完整,无法预测任何事情
我在最新的 linux 内核中经历了数据包传输和数据包接收的过程。我可以看到,skb 中有一个框架,它支持“线性”数据和“分页”数据。 它有一个名为 skb_shared_info 的单独结构来表示页
我有一种情况,我必须只释放 skb 结构本身而不是数据指针。我在我的驱动程序中重用数据指针。请注意,skb 不是克隆。 最佳答案 skb->cloned = 1; atomic_inc(&(skb_s
我发现 skb->users 持有使用这个特定缓冲区的实体数量。 但是既然SKB属于一个特定的套接字,对应于一个特定的进程,它怎么可能有多个用户呢? 最佳答案 sk_buffs 通常代表网络数据包。它
我目前正在编写一个修改数据包有效载荷的内核模块,作为一种学习体验。我已经完成数据包修改,但现在我想在原始数据包之后发送这个新的修改数据包(我不想丢弃原始数据包)。我似乎找不到发送 SKB 进行传输的内
有什么简单的方法可以增加 linux 内核中 SKB 缓冲区的引用计数,以便硬件不会释放它。 我知道使用 skb_clone 引用计数会自动增加,但我想知道在不创建克隆的情况下如何增加 SKB 引用计
我正在研究 8139too.c 驱动程序。对于传输,驱动程序调用 skb_copy_and_csum_dev() 将整个套接字缓冲区复制到一个描述符环中,该环的缓冲区足以容纳整个套接字缓冲区。如果描述
在 Linux 内核的 skb 结构中是否有任何额外的或可用的字段,我可以在处理数据包期间存储我的私有(private)信息?如果有这样一个字段,我该如何分配内存来存储我的数据?基本上我想以微秒分辨率
static unsigned int main_hook(unsigned int hooknum , struct sk_buff *skb , const struct net_device *
我想制作一个内核模块,我可以在其中从我的内核模块发送数据包。问题是我应该如何填充 network_header、传输 header 和 mac header ? 最佳答案 如果你不太关心 mac he
我正在尝试了解嵌入式系统上的 QoS 实现。这是 QoS 的内核级优先级排序吗? 最佳答案 skb->priority 字段用于数据包调度程序和分类器层(如果启用)的 QoS 目的。参见 http:/
我想将 skb 推送到 Linux 网络堆栈的 prerouting 点。有什么办法吗?我使用了 dev_queue_xmit() 和 netif_rx() 函数,但我认为它们不能将 skb 推送到
我正在开发一个内核模块,它通过 netlink 向用户空间发送消息。 创建消息(要发送的消息):skb_out = nlmsg_new(msg_size,0);。 在发送第一条消息之后和发送第二条消息
我正在尝试使用 netfilter Hook 功能从 skbuffs 打印数据。唯一的问题是当我运行这段代码时,我的操作系统卡住并且必须强制关闭。我是内核编码的新手,所以我希望有人能看看这个并解释如何
不久前,我基于 Ashwin Kashyap 的 vnat 模块实现了 ebtables 模块( http://www.research.rutgers.edu/~ashwink/misc_projs
我有一个场景,其中内核构建 SKB,它来到我的 .do_start_xmit Hook ,没有足够的空间用于我的额外 header 。实际上,它发生在先前的 .do_start_xmit Hook 调
我是一名优秀的程序员,十分优秀!