
답변1
Linux 커널 API의 최근 변경으로 인해 이 오류가 발생합니다 netdevice
. 더 구체적으로 이것은 ndo_select_queue
다음과 같이 정의되었습니다.이것5.1에서:
u16 (*ndo_select_queue)(struct net_device *dev, struct sk_buff *skb,
struct net_device *sb_dev,
select_queue_fallback_t fallback);
하지만 다음과 같이 변경되었습니다.이것5.2에서:
u16 (*ndo_select_queue)(struct net_device *dev, struct sk_buff *skb,
struct net_device *sb_dev);
따라서 핸들러도 os_intfs.c
변경되어야 합니다.
빠른 수정으로 단순히 인수를 삭제하면 fallback
빌드가 제대로 작동하는 것 같습니다.
diff --git a/os_dep/linux/os_intfs.c b/os_dep/linux/os_intfs.c
index b183a09..42f32a8 100644
--- a/os_dep/linux/os_intfs.c
+++ b/os_dep/linux/os_intfs.c
@@ -1101,8 +1101,7 @@ unsigned int rtw_classify8021d(struct sk_buff *skb)
#if (LINUX_VERSION_CODE>=KERNEL_VERSION(4,19,0))
static u16 rtw_select_queue(struct net_device *dev, struct sk_buff *skb,
- struct net_device *sb_dev,
- select_queue_fallback_t fallback)
+ struct net_device *sb_dev)
#else
static u16 rtw_select_queue(struct net_device *dev, struct sk_buff *skb
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 13, 0)
여기에 대한 패치도 있습니다:https://github.com/quickreflex/rtl8188eus/issues/28
기본적으로 패치와 소스 코드가 불편하다면 os_dep/linux/os_intfs.c
1103행으로 가서 다음을 바꾸십시오.
static u16 rtw_select_queue(struct net_device *dev, struct sk_buff *skb,
struct net_device *sb_dev,
select_queue_fallback_t fallback)
이것으로:
static u16 rtw_select_queue(struct net_device *dev, struct sk_buff *skb,
struct net_device *sb_dev)