Skip to content

Commit 181fe4c

Browse files
committed
Add version check to support compatibility
Reviewed kernel versions from 6.8 onward and found that virtio_find_vqs changed in 6.11 and has remained stable since. Introduced conditional logic to detect the running kernel version and select the correct API usage accordingly. This ensures vwifi builds and runs correctly across both pre-6.11 and 6.11+ kernels.
1 parent bdcf635 commit 181fe4c

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

vwifi.c

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include <linux/netlink.h>
1818
#include <net/sock.h>
1919

20+
2021
MODULE_LICENSE("Dual MIT/GPL");
2122
MODULE_AUTHOR("National Cheng Kung University, Taiwan");
2223
MODULE_DESCRIPTION("virtual cfg80211 driver");
@@ -3167,14 +3168,20 @@ static int vwifi_virtio_init_vqs(struct virtio_device *vdev)
31673168
[VWIFI_VQ_TX] = "tx",
31683169
};
31693170

3171+
#if LINUX_VERSION_CODE >= KERNEL_VERSION(6, 11, 0)
31703172
struct virtqueue_info vqs_info[VWIFI_NUM_VQS];
31713173
for (int i = 0; i < VWIFI_NUM_VQS; i++) {
31723174
vqs_info[i].callback = callbacks[i];
31733175
vqs_info[i].name = names[i];
3174-
vqs_info[i].ctx = NULL; // optional
3176+
vqs_info[i].ctx = NULL;
31753177
}
31763178

31773179
return virtio_find_vqs(vdev, VWIFI_NUM_VQS, vwifi_vqs, vqs_info, NULL);
3180+
3181+
#else
3182+
return virtio_find_vqs(vdev, VWIFI_NUM_VQS, vwifi_vqs, callbacks, names,
3183+
NULL);
3184+
#endif
31783185
}
31793186

31803187
static void vwifi_virtio_fill_vq(struct virtqueue *vq, u8 vnet_hdr_len)

0 commit comments

Comments
 (0)