出现“error:initialization of 'void (*) (struct net_device *, unsigned int)' from incompatible pointer type”的报错,如图1所示。
首先去Linux内核代码里查询造成冲突的接口。
在代码里找到该定义,发现要和内核里的类型不冲突,所以选择正确的分支进行编译,如图2所示。
当定义REDHAT8_6时,选择对hinic3_tx_timeout进行正确定义。
#if defined(HAVE_NDO_TX_TIMEOUT_TXQ) || defined(REDHAT8_6) static void hinic3_tx_timeout(struct net_device *netdev, unsigned int txqueue) #else static void hinic3_tx_timeout(struct net_device *netdev) #endif