Открываем файл: "/root/firmware/wn822n_v5/rtl8192eu/include/osdep_service_linux.h" в любом текстовом редакторе и строку 299 в комменты:
Код:
__inline static void _init_timer(_timer *ptimer, _nic_hdl nic_hdl, void *pfunc, void *cntx)
{
/* setup_timer(ptimer, pfunc,(u32)cntx); */
ptimer->function = pfunc;
//ptimer->data = (unsigned long)cntx;
init_timer(ptimer);
}
Победа над второй ошибкой "osdep_service_linux.h:300:2", заключается в добавление "EXTRA_CFLAGS += -Wno-implicit-function-declaration" на 17 строку в файл компиляции "Makefile".
Далее встречается ошибка:
Код:
/root/firmware/wn822n_v5/rtl8192eu/os_dep/linux/os_intfs.c:1403: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 = rtw_select_queue,
Открываем файл: "/root/firmware/wn822n_v5/rtl8192eu/os_dep/linux/os_intfs.c" и меняем описание функции, строка 1267:
Код:
static u16 rtw_select_queue(struct net_device *dev, struct sk_buff *skb
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 13, 0)
, void *accel_priv
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0)
, select_queue_fallback_t fallback
#endif
#endif
)
Меняем на:
Код:
#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)
#elif (LINUX_VERSION_CODE>=KERNEL_VERSION(3,14,0))
static u16 rtw_select_queue(struct net_device *dev, struct sk_buff *skb,
void *accel_priv,
select_queue_fallback_t fallback)
#else
static u16 rtw_select_queue(struct net_device *dev, struct sk_buff *skb)
#endif
Хотел написать ман как воткнуть официальные дрова, но потом бросил писанину.
Там дальше надо будет отключить дефолтный драйвер и заставить запускать установленный, вроде бы, точно уже не помню.
Если есть возможность поменять свисток на другой, то лучше не заморачиваться и поменять, так как толку от него мало, если только как второй для подъёма точки доступа.