一、共享网口NCSI的初始化
1.注册ncsi驱动
linux-5.4.11\drivers\net\ethernet\faraday\ftgmac.c
系统起来时,ftgmac100_probe函数,根据dts文件里的ncsi节点是否存在,判断是否需要加载ncsi驱动设备
linux-5.4.11\linux-5.4.11\arch\arm\boot\dts\aspeed-ast2600-evb.dts
所有ncsi驱动相关的代码都在linux-5.4.11\linux-5.4.11\net\ncsi目录下
先介绍几个结构体:
struct ncsi_dev_priv *ndp; 这个是一个总的ncsi驱动设备信息
struct ncsi_channel *hot_channel; /* Channel was ever active */曾经使用过的通道channel 信息
struct ncsi_package *active_package; /* Currently handled package */当前处理的package
struct ncsi_channel *active_channel; /* Currently handled channel */当前处理的channel
struct ncsi_request requests[256]; /* Request table */储存ncsi命令和结果
bool multi_package; /* Enable multiple packages */是否允许多个package
u32 package_whitelist; /* Packages to configure */允许的package,package 白名单
struct ncsi_package *np; 这个是package的信息,package可以理解为支持的ncsi网卡
bool multi_channel; /* Enable multiple channels */是否允许active多个channel
u32 channe