Q.無法抓到 Broadcom NetXtreme BCM5752 Gigabit Ethernet 網路卡?
Error Message:- 主機型號: HP WorkStation XW4300
- 安裝版本: FreeBSD 6.0 Release
安裝完 FreeBSD 6.0 Release 後無法抓到 NetXtreme BCM5752 網卡,只有辦認到網卡公司無法辦認型號。
# pciconf -lv
none3 at pci63:0:0: class=0x020000 card=0x3013103c chip=0x160014e4 rev=0x01 hdr=0x00
vendor = 'Broadcom Corporation'
device = 'Broadcom NetXtreme Gigabit Ethernet'
class = network
subclass = ethernet
Ans:
解決方式有二種如下
- 方法一: 安裝新版本 FreeBSD 6.1-RC2 (已修正此 bug)。
- 方法二: 修改 FreeBSD 6.0 Release 內 dev 檔並重編核心,詳細解決方法請參考 Problem Report kern/88940 : (bge) (patch) bge support for BCM5752 以下為簡述作法。
修改 if_bge.c
# vi /usr/src/sys/dev/bge/if_bge.c
約172行處新增
{ BCOM_VENDORID, BCOM_DEVICEID_BCM5751M,
"Broadcom BCM5751M Gigabit Ethernet" },
{ BCOM_VENDORID, BCOM_DEVICEID_BCM5752, //新增此行
"Broadcom BCM5752 Gigabit Ethernet" }, //新增此行
{ BCOM_VENDORID, BCOM_DEVICEID_BCM5782,
"Broadcom BCM5782 Gigabit Ethernet" },
約2319行處修改
if (sc->bge_asicrev == BGE_ASICREV_BCM5714) //修改前
sc->bge_asicrev = BGE_ASICREV_BCM5750;
if (sc->bge_asicrev == BGE_ASICREV_BCM5714 || //修改後
sc->bge_asicrev == BGE_ASICREV_BCM5752)
sc->bge_asicrev = BGE_ASICREV_BCM5750;
修改 if_bgereg.h
# vi /usr/src/sys/dev/bge/if_bgereg.h
約250行處新增
#define BGE_ASICREV_BCM5750 0x04
#define BGE_ASICREV_BCM5714 0x05
#define BGE_ASICREV_BCM5752 0x06 //新增此行
約1875行處新增
#define BCOM_DEVICEID_BCM5751M 0x167D
#define BCOM_DEVICEID_BCM5752 0x1600 //新增此行
#define BCOM_DEVICEID_BCM5782 0x1696
修改完畢後在重新編譯核心 (make kernel) 後,重新開機便能順利抓到 NetXtreme BCM5752 (bge0) 網卡了。