bcma 与 brcmsmac 有何关系?

bcma 与 brcmsmac 有何关系?

我正在尝试解决无线连接的一些问题,并尝试在此过程中学习一些东西。从这里这里我了解了两种不同的方式来了解我的无线驱动程序。事实是,我得到两个不同的结果:

第一种方法sudo lshw -C network给了我以下内容:

configuration: broadcast=yes driver=brcmsmac

而第二个lspci -knn | grep Net -A2给了我这个:

Kernel driver in use: bcma-pci-bridge

从我的驱动程序列表中,我可以找到brcmsmacbcma

> lsmod | grep brcmsmac
brcmsmac              563061  0 
cordic                 12574  1 brcmsmac
brcmutil               15579  1 brcmsmac
mac80211              652777  1 brcmsmac
cfg80211              498458  2 brcmsmac,mac80211
bcma                   52320  2 brcmsmac

那么,这两个人到底在做什么呢?

答案1

Broadcom 的硬件设计包括标准 PCI/PCIe 接口模块,该模块在其许多产品中都是相同的。然后是 Broadcom 自己的专有接口总线,可以连接一个或多个特定于产品的模块。

bcma模块只是PCI/PCIe接口模块的驱动程序,它将充当PCI/PCIe总线和Broadcom专有总线之间的“桥梁”。加载后,它将识别 Broadcom 总线上的其他模块,并在可能的情况下自动加载它们的驱动程序。

brcmsmac是实际 WiFi 硬件模块的驱动程序。由于该硬件模块实际上并不存在于 PCI(e) 总线上,因此lspci只能显示实际连接到 PCI(e) 总线的部分的驱动程序。

你必须有一个新的命令,比如lsbcma告诉你有关Broadcom总线内容的更多详细信息...据我所知,这样的命令实际上并不存在,但我认为模块bcma输出到dmesg的诊断信息load 可以用于相同的目的,因为 Broadcom 总线通常非常简单。

内核模块brcmutil包含一些可以在不同的 Broadcom WiFi 模块(brcmsmacbrcmhmac)之间共享的代码。

答案2

我和你有同样的问题。就我而言,无线控制器是 Broadcom Corporation BCM4313,制造商和型号为 14e4 和 4727 :

$ lspci -nn -s 03:00 |grep -i net 03:00.0 Network controller [0280]: Broadcom Corporation BCM4313 802.11bgn Wireless Network Adapter [14e4:4727] (rev 01)

1 - 控制器的模块别名是 bcma :

$ cat /lib/modules/$(uname -r)/modules.alias | grep -i 14e4 |grep -i 4727 alias pci:v000014E4d00004727sv*sd*bc*sc*i* bcma

bcma首先加载,负责控制器接口

2 - brmsmac 取决于 bcma

# modinfo brcmsmac |grep depends depends: bcma,mac80211,brcmutil,cfg80211,cordic

它在bcma之后加载,负责无线协议

3 - bcma-pci-bridge 未被识别为驱动程序:

# modinfo bcma-pci-bridge modinfo: ERROR: Module bcma-pci-bridge not found.

所以我的猜测是 bcma-pci-bridge 可能是一个“免费名称”,用于记住控制器需要 2 个驱动程序......

我不是专家,这只是我的猜测

相关内容