tomaspinho / rtl8821ce

Other
1.6k stars 409 forks source link

Error on build in ioctl_cfg80211.c ( mgmt_frame_register ) #236

Open makisukurisu opened 3 years ago

makisukurisu commented 3 years ago

Error:

/var/lib/dkms/rtl8821ce/v5.5.2_34066.20200325/build/os_dep/linux/ioctl_cfg80211.c:9653:3: error: ‘struct cfg80211_ops’ has no member named ‘mgmt_frame_register’
  .mgmt_frame_register = cfg80211_rtw_mgmt_frame_register,
   ^~~~~~~~~~~~~~~~~~~
/var/lib/dkms/rtl8821ce/v5.5.2_34066.20200325/build/os_dep/linux/ioctl_cfg80211.c:9653:25: error: initialization of ‘int (*)(struct wiphy *, struct wireless_dev *, u64)’ {aka ‘int (*)(struct wiphy *, struct wir$
  .mgmt_frame_register = cfg80211_rtw_mgmt_frame_register,
                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/var/lib/dkms/rtl8821ce/v5.5.2_34066.20200325/build/os_dep/linux/ioctl_cfg80211.c:9653:25: note: (near initialization for ‘rtw_cfg80211_ops.mgmt_tx_cancel_wait’)
cc1: some warnings being treated as errors
make[2]: *** [scripts/Makefile.build:315: /var/lib/dkms/rtl8821ce/v5.5.2_34066.20200325/build/os_dep/linux/ioctl_cfg80211.o] Error 1

From make.log file (full)

System info:

lspci | grep "Wir"
02:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8821CE 802.11ac PCIe Wireless Network Adapter

OS: CentOs 8 Kernel: 4.18.0-305.10.2.el8_4.x86_64

Additional content: It doesn't seem like anyone had this before, so here I am.

Hope this is easy to fix. Thanks for your work (used this module/driver/repo on other linux distributions)

SatanicRaw commented 3 years ago

Hi. Try this patch https://github.com/aircrack-ng/rtl8812au/compare/v5.6.4.2...CGarces:centos

Atavixion commented 3 years ago

Same error. I applied the patch and get this(updated link after seeing how to report :) )

   SET_CFG80211_REPORT_MGMT(pwdev_priv, IEEE80211_STYPE_PROBE_REQ, reg);
                                                                   ^~~
/var/lib/dkms/rtl8821ce/v5.5.2_34066.20200325/build/include/../os_dep/linux/ioctl_cfg80211.h:249:63: note: in definition of macro ‘SET_CFG80211_REPORT_MGMT’
 #define SET_CFG80211_REPORT_MGMT(w, t, v) (w->report_mgmt |= (v ? BIT(t >> 4) : 0))
                                                               ^
make[2]: *** [scripts/Makefile.build:315: /var/lib/dkms/rtl8821ce/v5.5.2_34066.20200325/build/os_dep/linux/ioctl_cfg80211.o] Error 1
make[2]: *** Waiting for unfinished jobs....
In file included from /var/lib/dkms/rtl8821ce/v5.5.2_34066.20200325/build/include/drv_types.h:30,
                 from /var/lib/dkms/rtl8821ce/v5.5.2_34066.20200325/build/os_dep/linux/rtw_cfgvendor.c:16:
/var/lib/dkms/rtl8821ce/v5.5.2_34066.20200325/build/include/wifi.h:1034: warning: "IEEE80211_MAX_AMPDU_BUF" redefined
 #define IEEE80211_MAX_AMPDU_BUF 0x40

In file included from /var/lib/dkms/rtl8821ce/v5.5.2_34066.20200325/build/include/osdep_service_linux.h:83,
                 from /var/lib/dkms/rtl8821ce/v5.5.2_34066.20200325/build/include/osdep_service.h:50,
                 from /var/lib/dkms/rtl8821ce/v5.5.2_34066.20200325/build/include/drv_types.h:27,
                 from /var/lib/dkms/rtl8821ce/v5.5.2_34066.20200325/build/os_dep/linux/rtw_cfgvendor.c:16:
./include/linux/ieee80211.h:1603: note: this is the location of the previous definition
 #define IEEE80211_MAX_AMPDU_BUF  0x100

In file included from /var/lib/dkms/rtl8821ce/v5.5.2_34066.20200325/build/include/drv_types.h:30,
                 from /var/lib/dkms/rtl8821ce/v5.5.2_34066.20200325/build/os_dep/linux/wifi_regd.c:16:
/var/lib/dkms/rtl8821ce/v5.5.2_34066.20200325/build/include/wifi.h:1034: warning: "IEEE80211_MAX_AMPDU_BUF" redefined
 #define IEEE80211_MAX_AMPDU_BUF 0x40

In file included from /var/lib/dkms/rtl8821ce/v5.5.2_34066.20200325/build/include/osdep_service_linux.h:83,
                 from /var/lib/dkms/rtl8821ce/v5.5.2_34066.20200325/build/include/osdep_service.h:50,
                 from /var/lib/dkms/rtl8821ce/v5.5.2_34066.20200325/build/include/drv_types.h:27,
                 from /var/lib/dkms/rtl8821ce/v5.5.2_34066.20200325/build/os_dep/linux/wifi_regd.c:16:
./include/linux/ieee80211.h:1603: note: this is the location of the previous definition
 #define IEEE80211_MAX_AMPDU_BUF  0x100

make[1]: *** [Makefile:1563: _module_/var/lib/dkms/rtl8821ce/v5.5.2_34066.20200325/build] Error 2
make[1]: Leaving directory '/usr/src/kernels/4.18.0-305.12.1.el8_4.x86_64'
make: *** [Makefile:2244: modules] Error 2

OS: Rocky Linux 8 Kernel: 4.18.0-305.12.1.el8_4x86_64

lleevveell66 commented 3 years ago

Exact same error on Rocky 8.4 (stable) fresh install with 4.18.0-305.3.1.el8_4x86_64 .

lleevveell66 commented 3 years ago

Same on 4.18.0-305.19.1.el8_4.x86_64 .

Got it to compile/install with the following changes:

--- os_dep/linux/ioctl_cfg80211.c       2021-10-06 22:15:09.666241799 -0500
+++ /shared/ioctl_cfg80211.c    2021-10-06 21:58:20.000000000 -0500
@@ -7307,7 +7307,7 @@
 #else
        struct net_device *ndev,
 #endif
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0))
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0)) || RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(8,0)
        struct mgmt_frame_regs *upd)
 #else
        u16 frame_type, bool reg)
@@ -7319,7 +7319,7 @@
 #endif

 /* hardcoded always true, to make it pass compilation */
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0))
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0)) || RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(8,0)
        bool reg = true;
 #endif

@@ -7341,7 +7341,7 @@
        /* Wait QC Verify */
        return;

-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0))
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0)) || RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(8,0)
        switch (upd->interface_stypes) {
 #else
        switch (frame_type) {
@@ -9647,7 +9647,7 @@

 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37)) || defined(COMPAT_KERNEL_RELEASE)
        .mgmt_tx = cfg80211_rtw_mgmt_tx,
-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0))
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 8, 0)) || RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(8,0)
        .update_mgmt_frame_registrations = cfg80211_rtw_mgmt_frame_register,
 #else
        .mgmt_frame_register = cfg80211_rtw_mgmt_frame_register,
lleevveell66 commented 3 years ago

I don't know how to do fancypants branching and pulling and patching and stuff in git, sorry. Basically, edit the file:

os_dep/linux/ioctl_cfg80211.c

And, add:

|| RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(8,0)

To the end of lines:

7310 7322 7344 9650

Atavixion commented 3 years ago

Tried this and it worked :)

I don't know how to do fancypants branching and pulling and patching and stuff in git, sorry. Basically, edit the file:

os_dep/linux/ioctl_cfg80211.c

And, add:

|| RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(8,0)

To the end of lines:

7310 7322 7344 9650