问题标签 [network-driver]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
usb - 如何从 menuconfig 启用 USB 小工具模式
我正在尝试使用 rndis 模块在我的内核中启用 usb0 接口。这位于 menuconfig 中的小工具驱动程序类别下。我无法在 menuconfig 中找出正确且完整的配置集以启用 rndis 支持。由于小工具驱动程序配置不完整,当我尝试在我的目标(linux 4.19.55 armv7l)上尝试 modprobe g_ether 时,我目前面临一个错误:
udc-core:找不到可用的 UDC - 将 [g_ether] 添加到待处理驱动程序列表
如何修复此错误,以便 usb0 出现在我的目标上
linux - 为了编写 PCI 以太网驱动程序。如何在 PCI 以太网驱动程序中实现 MMAP
在以太网 PCI 设备驱动程序中,如果驱动程序允许应用程序将用户空间缓冲区映射到驱动程序虚拟内存并允许用户在打开设备驱动程序文件后调用 MMAP。那么如何在 PCI ETHERNET 网络设备驱动中实现 MMAP 呢?
我已经查看了 dev_pci 结构。有一些成员因与 MMAP 有关系而被命名,但我无法确定如何使设备驱动程序实现 MMAP。
在 Linux Device Driver 一书中,作者并没有具体将设备驱动中的 Memory Mapping 与 PCI 设备驱动或网络设备驱动联系起来。
关于如何使我的 PCI/网络/以太网设备驱动程序能够处理来自用户空间的 MMAP 调用并将用户映射到我正在寻找的驱动程序虚拟内存的任何帮助,尤其是如何XX___mmap(...)
在设备驱动程序中注册实现功能与 PCI 和网络设备驱动程序。我在设备驱动程序中有 dev_pci 和 net_dev 设备驱动程序。
windows - 如何以编程方式更改 Windows NIC 驱动程序的参数?
我需要编写代码来设置 MTU 大小、RX/TX 队列大小和中断调节模式。您能否建议可以将哪些 API 用于此类目的?
linux-device-driver - .ndo_start_xmit 需要哪些步骤才能工作?
我正在研究在 linux 中制作以太网设备驱动程序。现在,我确认了像 probe、remove、.ndo_open、.ndo_stop 这样的功能可以工作,但我看不到 .ndo_start_xmit 可以工作。我想知道调用 .ndo_start_xmit 需要什么样的步骤。
excel - VBA 其他人正在“NETWORK_DRIVE_EXCELFILE.xlsm”中工作。请稍后再试
我有一个 Excel 宏运行一整天,每 10 分钟将宏工作簿和内容保存到网络驱动器。其他用户应该只能以只读方式打开工作簿,但有时工作簿无法保存。发生这种情况时,会出现一条 Excel 消息,指出“其他人正在使用“NETWORK_DRIVE_EXCELFILE.xlsm”。请稍后再试。” 这怎么可能,有没有办法让宏在发生这种情况时检测到?如果有,我可以为它写一个错误句柄。
linux-device-driver - 发送 12 个数据包后 Ping 不发送,出现错误“ping: sendmsg: No buffer space available”
我为 Xilinx FPGA 开发了一个网络驱动程序。该驱动程序是在 QDMA linux 驱动程序之上开发的。FPGA 卡有两个 25G SFP 端口。我连接了光纤电缆并进行了外部环回连接。我可以在这种模式下连续发送/接收数据。
下一步,我将类似的 NIC 连接到其他服务器,并尝试从一台服务器 ping 到另一台服务器。12 次 ping 后,我收到ping:sendmsg:没有可用的缓冲区空间
如何解决此错误?请帮忙。
请告诉是否需要任何进一步的细节
一些基本细节:第一台服务器的操作系统:Ubuntu 16.04 第二台服务器的操作系统:CentOS 3.10
FPGA 上的硬件 IP 块:QDMA 和 10/25G 以太网子系统(配置为 25G)
-> 插入驱动后,ifconfig中列出的接口配置为“link local”
尝试设置 wmem_max,如https://www.linuxquestions.org/questions/linux-networking-3/sendmsg-no-buffer-space-available-334631/中所述 但没有运气
在此先感谢,阿迪亚
c - 如果在驱动程序中看不到预防性抢占,则认为是关键代码
在用于以太网的 realTek r8169 驱动程序中,它具有轮询中断的轮询功能,这是新 API(NAPI)
从 poll 函数调用的 rtl_rx
poll 或 rtl_rx 都会做任何事情来禁用内核抢占,除了保护从dma_map_page
类似
代码
我的印象是,即使在 NAPI 轮询中断或中断处理程序中,我们也需要禁用抢占。
并且驱动程序的代码中没有任何地方包含像preempt_disable
get_cpu 或信号量这样的调用。所以我想知道内核驱动程序中的关键代码是什么?任何人都可以告诉我这一点并且可以中断被抢占吗?或一般在内核中
或者任何人都可以指出我驱动程序中的特定代码
c - 网络驱动程序中的链接更改是什么意思这意味着 TX 到 RX 因此存在链接更改或者它的速度像数据传输 phydev->speed 还是什么
为什么驱动程序会引发 PHY 中断。这是内核的工作吗,为什么内核的驱动程序部分会引发 PHY 中断
上面的代码在request_irq(pci_irq_vector(pdev, 0), rtl8169_interrupt,
中断上下文中
在 kernel.org 上它说
在上面的陈述中link state changes
可能是什么?这是否意味着在一种状态下它的 TX 和在链路更改为 RX 时?
c - 可以在变量中使用 void 指针来写入和访问内存映射的硬件寄存器吗?
在 r8169_main 驱动程序中,它们具有寄存器变量作为 void 指针..
在本页面
内核通常使用虚拟地址。kmalloc()、vmalloc() 和类似接口返回的任何地址都是虚拟地址,可以存储在 void *.
虚拟内存系统(TLB、页表等)将虚拟地址转换为 CPU 物理地址,存储为“phys_addr_t”或“resource_size_t”。内核将寄存器等设备资源管理为物理地址<-[因此它的寄存器物理地址为什么 rtl8169 驱动程序使用 void * <-Q
所以要处理寄存器,我们使用物理地址可以是phys_addr_t
或 resource_size_t
。但我很困惑为什么在 r8168 以太网驱动程序中他们这样做
带空指针
void 指针通常用于虚拟地址,但寄存器不是虚拟地址。那么使用 void 指针作为寄存器的原因可能是什么
还是因为 void 指针可以包含任何内容。
它的可重用性。它可以指向任何东西并替换任何东西意味着我可以使用 void 指针代替需要 resource_size_t 或 phys_addr_t 的寄存器的物理地址数据类型
无效 __iomem *mmio_addr;
还是因为在内存映射 IO 中,所有寄存器都放置在驱动程序和设备也拥有它的内存区域上。
c - 如果我创建 dma 映射,那么 prefetch 函数会从设备 DMA 映射区域获取数据并填充区域以保存从映射区域读取的内容
我想知道 linux 函数预取是如何工作的
它被定义为
所以在驱动程序中可以找到
所以 rtl 8139 设备有 256 个 Rx 描述符。dma_sync_single_for_cpu 的 addr 参数是我认为可以从设备读取数据并将数据保存在一些临时内存中(这个内存区域是什么?),所以prefetch
我认为只是读取该内存区域并从该内存区域填充 rx_buf。
我希望我能看到__builtin_prefetch(x)
定义但我找不到它所以预取调用发生了什么任何人都可以告诉我这个