泰山2280v2服务器安装系统,泰山2280V2安装centos8.1编译1822网卡源码报错

2023-05-16

1、问题描述

硬件配置:泰山2280V2、1822网卡

软件OS版本:centos8.1 aarch64、内核4.18.0-147.el8.aarch64

问题描述:

泰山2280V2安装centos8.1系统,内核4.18,编译1822网卡源码时报错如下所示:

使用的网卡源码版本:

SPC102:hinic-1.8.3.3

SPC104:hinic-1.8.3.14

[root@localhost hinic]# make

make -C /lib/modules/`uname -r`/build M=/home/hinic-1.8.3.3/hinic -W  modules

make[1]: Entering directory '/usr/src/kernels/4.18.0-147.el8.aarch64'

CC [M]  /home/hinic-1.8.3.3/hinic/hinic_nic_cfg.o

CC [M]  /home/hinic-1.8.3.3/hinic/hinic_nic_io.o

CC [M]  /home/hinic-1.8.3.3/hinic/hinic_nic_dbg.o

CC [M]  /home/hinic-1.8.3.3/hinic/hinic_hwif.o

CC [M]  /home/hinic-1.8.3.3/hinic/hinic_msix_attr.o

CC [M]  /home/hinic-1.8.3.3/hinic/hinic_eqs.o

CC [M]  /home/hinic-1.8.3.3/hinic/hinic_mbox.o

CC [M]  /home/hinic-1.8.3.3/hinic/hinic_api_cmd.o

CC [M]  /home/hinic-1.8.3.3/hinic/hinic_mgmt.o

CC [M]  /home/hinic-1.8.3.3/hinic/hinic_wq.o

CC [M]  /home/hinic-1.8.3.3/hinic/hinic_cmdq.o

CC [M]  /home/hinic-1.8.3.3/hinic/hinic_hwdev.o

CC [M]  /home/hinic-1.8.3.3/hinic/hinic_cfg.o

CC [M]  /home/hinic-1.8.3.3/hinic/ossl_knl_linux.o

CC [M]  /home/hinic-1.8.3.3/hinic/hinic_sml_counter.o

CC [M]  /home/hinic-1.8.3.3/hinic/hinic_sml_lt.o

CC [M]  /home/hinic-1.8.3.3/hinic/hinic_main.o

/home/hinic-1.8.3.3/hinic/hinic_main.c: In function ‘hinic_select_queue’:

/home/hinic-1.8.3.3/hinic/hinic_main.c:1074:9: error: too few arguments to function ‘fallback’

return fallback(netdev, skb);

^~~~~~~~

/home/hinic-1.8.3.3/hinic/hinic_main.c: At top level:

/home/hinic-1.8.3.3/hinic/hinic_main.c:1958:22: error: initialization of ‘u16 (*)(struct net_device *, struct sk_buff *, struct net_device *, u16 (*)(struct net_device *, struct sk_buff *, struct net_device *))’ {aka ‘short unsigned int (*)(struct net_device *, struct sk_buff *, struct net_device *, short unsigned int (*)(struct net_device *, struct sk_buff *, struct net_device *))’} from incompatible pointer type ‘u16 (*)(struct net_device *, struct sk_buff *, void *, u16 (*)(struct net_device *, struct sk_buff *, struct net_device *))’ {aka ‘short unsigned int (*)(struct net_device *, struct sk_buff *, void *, short unsigned int (*)(struct net_device *, struct sk_buff *, struct net_device *))’} [-Werror=incompatible-pointer-types]

.ndo_select_queue = hinic_select_queue,

^~~~~~~~~~~~~~~~~~

/home/hinic-1.8.3.3/hinic/hinic_main.c:1958:22: note: (near initialization for ‘hinic_netdev_ops.ndo_select_queue’)

/home/hinic-1.8.3.3/hinic/hinic_main.c:2039:22: error: initialization of ‘u16 (*)(struct net_device *, struct sk_buff *, struct net_device *, u16 (*)(struct net_device *, struct sk_buff *, struct net_device *))’ {aka ‘short unsigned int (*)(struct net_device *, struct sk_buff *, struct net_device *, short unsigned int (*)(struct net_device *, struct sk_buff *, struct net_device *))’} from incompatible pointer type ‘u16 (*)(struct net_device *, struct sk_buff *, void *, u16 (*)(struct net_device *, struct sk_buff *, struct net_device *))’ {aka ‘short unsigned int (*)(struct net_device *, struct sk_buff *, void *, short unsigned int (*)(struct net_device *, struct sk_buff *, struct net_device *))’} [-Werror=incompatible-pointer-types]

.ndo_select_queue = hinic_select_queue,

^~~~~~~~~~~~~~~~~~

/home/hinic-1.8.3.3/hinic/hinic_main.c:2039:22: note: (near initialization for ‘hinicvf_netdev_ops.ndo_select_queue’)

/home/hinic-1.8.3.3/hinic/hinic_main.c: In function ‘hinic_select_queue’:

/home/hinic-1.8.3.3/hinic/hinic_main.c:1077:1: warning: control reaches end of non-void function [-Wreturn-type]

}

^

cc1: some warnings being treated as errors

make[2]: *** [scripts/Makefile.build:313: /home/hinic-1.8.3.3/hinic/hinic_main.o] Error 1

make[1]: *** [Makefile:1547: _module_/home/hinic-1.8.3.3/hinic] Error 2

make[1]: Leaving directory '/usr/src/kernels/4.18.0-147.el8.aarch64'

make: *** [Makefile:17: all] Error 2

[root@localhost hinic]#

2、原因分析及解决方法

CentOS8.1系统,虽然内核版本是4.18,但是其中的内核接口使用新内核接口,需要修改源码进行适配。

在SPC102版本上具体的修改点为:

修改ossl_knl­_linux.h文件,从1731行开始

/*****************************************************************************/

#if (KERNEL_VERSION(4, 19, 0) > LINUX_VERSION_CODE)

#else /* >= 4.19 */

#define HAVE_NDO_SELECT_QUEUE_SB_DEV

#endif

修改为:

/*****************************************************************************/

#if (KERNEL_VERSION(4, 19, 0) > LINUX_VERSION_CODE)

#if (RHEL_RELEASE_CODE && (RHEL_RELEASE_VERSION(8, 0) <= RHEL_RELEASE_CODE ))

#define HAVE_NDO_SELECT_QUEUE_SB_DEV

#endif

#else /* >= 4.19 */

#define HAVE_NDO_SELECT_QUEUE_SB_DEV

#endif /* 4.19.0 */

SPC104版本的1822网卡源码修改方法同上。

3、设置驱动开机加载

cp hinic.ko /lib/modules/`uname -r`/updates

depmod `uname -r`

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

泰山2280v2服务器安装系统,泰山2280V2安装centos8.1编译1822网卡源码报错 的相关文章

随机推荐