ulli-kroll / rtl8821au

rtl8821au/rtl8812au driver for linux
Other
109 stars 22 forks source link

support hostapd? #4

Closed darren closed 8 years ago

darren commented 8 years ago

any plans to support hostapd?

ulli-kroll commented 8 years ago

Hi, sorry for delay ...

I think hostapd must be supported, but the last time I test this by me self was about a year ago.

Currently I starting switch to lib80211 codebase.

brainstorm commented 8 years ago

@Darren, as fas as I've been poking in the hostapd codebase recently, once @ulli-kroll gets that lib80211 port done, the rest is relatively easy :)

brainstorm commented 8 years ago

@ulli-kroll if there's something you need help with so that I don't step on your shoes, happy to help.

My objective: getting 8812AU multi-BSS support for edimax ac1200.

I think your approach is sound, instead of hacking the old Realtek OUTSRC to get it in better shape.

ulli-kroll commented 8 years ago

Hi guys,

The newer RTL8821AU drivers use cfg80211 for STA/AP/Monitor management. The drawback is you can use only one interface type. Sometimes you must disable Network Manager to get Monitor Mode working. See here https://forum.aircrack-ng.org/index.php?topic=1086.0

I don't know if it's possible for https://github.com/gnab/rtl8812au getting to multi BSS support. because this is complete waste of time. lib80211 is the only solution.

For the help :: I think this is difficult, normally I'm 20~60 commits ahead master and I have no time to teach other people.

brainstorm commented 8 years ago

Oh, well, that's unfortunate and I agree lib80211 is the best/cleanest solution ;)

I have some understanding of cfg/nl80211 already, I just wished your 20~60 commits were earlier on master to catchup without fixing/duplicating work:

vagrant@debian:/vagrant/rtl8821au$ make
make ARCH=x86_64 CROSS_COMPILE= -C /lib/modules/3.16.0-4-amd64/build M=/vagrant/rtl8821au  modules
make[1]: Entering directory '/usr/src/linux-headers-3.16.0-4-amd64'
Makefile:10: *** mixed implicit and normal rules: deprecated syntax
make[1]: Entering directory `/usr/src/linux-headers-3.16.0-4-amd64'
  CC [M]  /vagrant/rtl8821au/os_dep/osdep_service.o
In file included from /vagrant/rtl8821au/wifi.h:5:0,
                 from /vagrant/rtl8821au/include/drv_types.h:34,
                 from /vagrant/rtl8821au/os_dep/osdep_service.c:25:
/vagrant/rtl8821au/usb.h:92:12: error: ‘NUM_STA’ undeclared here (not in a function)
  int macid[NUM_STA];
            ^
/vagrant/rtl8821au/usb.h:143:21: error: field ‘ledpriv’ has incomplete type
  struct rtl_led_ctl ledpriv;
                     ^
/vagrant/rtl8821au/usb.h:161:77: warning: ‘struct xmit_buf’ declared inside parameter list [enabled by default]
 u32  _rtlw_usb_transmit(struct rtl_priv *rtlpriv, u32 addr, u32 cnt, struct xmit_buf *pxmitbu);
                                                                             ^
/vagrant/rtl8821au/usb.h:161:77: warning: its scope is only this definition or declaration, which is probably not what you want [enabled by default]
In file included from /vagrant/rtl8821au/include/drv_types.h:34:0,
                 from /vagrant/rtl8821au/os_dep/osdep_service.c:25:
/vagrant/rtl8821au/wifi.h:1509:20: error: ‘P2P_MAX_NOA_NUM’ undeclared here (not in a function)
  u8 noa_count_type[P2P_MAX_NOA_NUM];
                    ^
(...)
ulli-kroll commented 8 years ago

@brainstorm Are your kernel headers missing ?? Or is your kernel build system not in proper state ??

I can (cross)compile this driver on several machines without errors.

For development itself : Currently I'm cleaning rtl8821au/. Next step will be integrate missing part for RTL8813AU hardware (only #defines) After this the development on master will stop and I will begin switching to rtlwifi.

brainstorm commented 8 years ago

Not really, I can successfully build rtl8812au (which is not from your repos but from @gnab).:

root@debian:/vagrant/rtl8812au# make
make ARCH=x86_64 CROSS_COMPILE= -C /lib/modules/3.16.0-4-amd64/build M=/vagrant/rtl8812au  modules
make[1]: Entering directory '/usr/src/linux-headers-3.16.0-4-amd64'
Makefile:10: *** mixed implicit and normal rules: deprecated syntax
make[1]: Entering directory `/usr/src/linux-headers-3.16.0-4-amd64'
  Building modules, stage 2.
  MODPOST 1 modules
make[1]: Leaving directory '/usr/src/linux-headers-3.16.0-4-amd64'

Can you please let me know your versions/config? Here are my currently installed headers and libs:

root@debian:/vagrant/rtl8821au# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 8.4 (jessie)
Release:    8.4
Codename:   jessie

root@debian:/vagrant/rtl8812au# dpkg -l | grep headers
ii  libnl-3-dev                           3.2.24-2                    amd64        development library and headers for libnl-3
ii  libnl-cli-3-dev                       3.2.24-2                    amd64        development library and headers for libnl-cli-3
ii  libnl-genl-3-dev                      3.2.24-2                    amd64        development library and headers for libnl-genl-3
ii  libnl-nf-3-dev                        3.2.24-2                    amd64        development library and headers for libnl-nf-3
ii  libnl-route-3-dev                     3.2.24-2                    amd64        development library and headers for libnl-route-3
ii  linux-headers-3.16.0-4-all            3.16.7-ckt25-2              amd64        All header files for Linux 3.16 (meta-package)
ii  linux-headers-3.16.0-4-all-amd64      3.16.7-ckt25-2              amd64        All header files for Linux 3.16 (meta-package)
ii  linux-headers-3.16.0-4-amd64          3.16.7-ckt25-2              amd64        Header files for Linux 3.16.0-4-amd64
ii  linux-headers-3.16.0-4-common         3.16.7-ckt25-2              amd64        Common header files for Linux 3.16.0-4
ii  linux-headers-4.5.0-0.bpo.2-all       4.5.3-2~bpo8+1              amd64        All header files for Linux 4.5 (meta-package)
ii  linux-headers-4.5.0-0.bpo.2-all-amd64 4.5.3-2~bpo8+1              amd64        All header files for Linux 4.5 (meta-package)
ii  linux-headers-4.5.0-0.bpo.2-amd64     4.5.3-2~bpo8+1              amd64        Header files for Linux 4.5.0-0.bpo.2-amd64
ii  linux-headers-4.5.0-0.bpo.2-common    4.5.3-2~bpo8+1              amd64        Common header files for Linux 4.5.0-0.bpo.2
ii  linux-headers-amd64                   3.16+63                     amd64        Header files for Linux amd64 configuration (meta-package)
ii  linux-libc-dev:amd64                  3.16.7-ckt25-2              amd64        Linux support headers for userspace development

And here's a complete listing from my earlier error:

root@debian:/vagrant/rtl8821au# make
make ARCH=x86_64 CROSS_COMPILE= -C /lib/modules/3.16.0-4-amd64/build M=/vagrant/rtl8821au  modules
make[1]: Entering directory '/usr/src/linux-headers-3.16.0-4-amd64'
Makefile:10: *** mixed implicit and normal rules: deprecated syntax
make[1]: Entering directory `/usr/src/linux-headers-3.16.0-4-amd64'
  CC [M]  /vagrant/rtl8821au/os_dep/osdep_service.o
In file included from /vagrant/rtl8821au/wifi.h:5:0,
                 from /vagrant/rtl8821au/include/drv_types.h:34,
                 from /vagrant/rtl8821au/os_dep/osdep_service.c:25:
/vagrant/rtl8821au/usb.h:92:12: error: ‘NUM_STA’ undeclared here (not in a function)
  int macid[NUM_STA];
            ^
/vagrant/rtl8821au/usb.h:143:21: error: field ‘ledpriv’ has incomplete type
  struct rtl_led_ctl ledpriv;
                     ^
/vagrant/rtl8821au/usb.h:161:77: warning: ‘struct xmit_buf’ declared inside parameter list [enabled by default]
 u32  _rtlw_usb_transmit(struct rtl_priv *rtlpriv, u32 addr, u32 cnt, struct xmit_buf *pxmitbu);
                                                                             ^
/vagrant/rtl8821au/usb.h:161:77: warning: its scope is only this definition or declaration, which is probably not what you want [enabled by default]
In file included from /vagrant/rtl8821au/include/drv_types.h:34:0,
                 from /vagrant/rtl8821au/os_dep/osdep_service.c:25:
/vagrant/rtl8821au/wifi.h:1509:20: error: ‘P2P_MAX_NOA_NUM’ undeclared here (not in a function)
  u8 noa_count_type[P2P_MAX_NOA_NUM];
                    ^
/vagrant/rtl8821au/wifi.h:1662:31: error: ‘PSBBREG_TOTALCNT’ undeclared here (not in a function)
  unsigned long PS_BBRegBackup[PSBBREG_TOTALCNT];
                               ^
/vagrant/rtl8821au/wifi.h:1764:19: error: field ‘mlmepriv’ has incomplete type
  struct mlme_priv mlmepriv;
                   ^
/vagrant/rtl8821au/wifi.h:1765:23: error: field ‘mlmeextpriv’ has incomplete type
  struct mlme_ext_priv mlmeextpriv;
                       ^
/vagrant/rtl8821au/wifi.h:1766:18: error: field ‘cmdpriv’ has incomplete type
  struct cmd_priv cmdpriv;
                  ^
/vagrant/rtl8821au/wifi.h:1767:18: error: field ‘evtpriv’ has incomplete type
  struct evt_priv evtpriv;
                  ^
/vagrant/rtl8821au/wifi.h:1769:19: error: field ‘xmitpriv’ has incomplete type
  struct xmit_priv xmitpriv;
                   ^
/vagrant/rtl8821au/wifi.h:1770:19: error: field ‘recvpriv’ has incomplete type
  struct recv_priv recvpriv;
                   ^
/vagrant/rtl8821au/wifi.h:1771:18: error: field ‘stapriv’ has incomplete type
  struct sta_priv stapriv;
                  ^
/vagrant/rtl8821au/wifi.h:1772:23: error: field ‘securitypriv’ has incomplete type
  struct security_priv securitypriv;
                       ^
/vagrant/rtl8821au/wifi.h:1773:23: error: field ‘registrypriv’ has incomplete type
  struct registry_priv registrypriv;
                       ^
/vagrant/rtl8821au/wifi.h:1801:23: error: field ‘iwstats’ has incomplete type
  struct iw_statistics iwstats;
                       ^
/vagrant/rtl8821au/wifi.h:1922:54: warning: ‘enum led_ctl_mode’ declared inside parameter list [enabled by default]
  void (*led_control) (struct rtl_priv *rtlpriv, enum led_ctl_mode ledcation);
                                                      ^
/vagrant/rtl8821au/wifi.h:1974:60: warning: ‘enum CHANNEL_WIDTH’ declared inside parameter list [enabled by default]
  void (*set_bwmode_handler)(struct rtl_priv *rtlpriv, enum CHANNEL_WIDTH Bandwidth, uint8_t Offset);
                                                            ^
/vagrant/rtl8821au/wifi.h:1976:78: warning: ‘enum CHANNEL_WIDTH’ declared inside parameter list [enabled by default]
  void (*set_chnl_bw_handler)(struct rtl_priv *rtlpriv, uint8_t channel, enum CHANNEL_WIDTH Bandwidth, uint8_t Offset40, uint8_t Offset80);
                                                                              ^
In file included from /vagrant/rtl8821au/include/drv_types.h:34:0,
                 from /vagrant/rtl8821au/os_dep/osdep_service.c:25:
/vagrant/rtl8821au/wifi.h:1982:55: warning: ‘struct xmit_frame’ declared inside parameter list [enabled by default]
  int32_t (*hal_xmit)(struct rtl_priv *rtlpriv, struct xmit_frame *pxmitframe);
                                                       ^
/vagrant/rtl8821au/wifi.h:1983:56: warning: ‘struct xmit_frame’ declared inside parameter list [enabled by default]
  int32_t (*mgnt_xmit)(struct rtl_priv *rtlpriv, struct xmit_frame *pmgntframe);
                                                        ^
/vagrant/rtl8821au/wifi.h:1984:68: warning: ‘struct xmit_frame’ declared inside parameter list [enabled by default]
  int32_t (*hal_xmitframe_enqueue)(struct rtl_priv *rtlpriv, struct xmit_frame *pxmitframe);
                                                                    ^
In file included from /vagrant/rtl8821au/include/drv_types.h:35:0,
                 from /vagrant/rtl8821au/os_dep/osdep_service.c:25:
/vagrant/rtl8821au/include/ieee80211.h:258:32: error: field ‘ht_cap’ has incomplete type
    struct rtw_ieee80211_ht_cap ht_cap;
                                ^
/vagrant/rtl8821au/include/ieee80211.h:283:30: error: field ‘ht_cap’ has incomplete type
  struct rtw_ieee80211_ht_cap ht_cap;
                              ^
In file included from /vagrant/rtl8821au/include/rtw_mlme.h:24:0,
                 from /vagrant/rtl8821au/include/drv_types.h:48,
                 from /vagrant/rtl8821au/os_dep/osdep_service.c:25:
/vagrant/rtl8821au/include/rtw_ht.h:46:30: error: field ‘ht_cap’ has incomplete type
  struct rtw_ieee80211_ht_cap ht_cap;
                              ^
In file included from /vagrant/rtl8821au/include/drv_types.h:48:0,
                 from /vagrant/rtl8821au/os_dep/osdep_service.c:25:
/vagrant/rtl8821au/include/rtw_mlme.h:169:16: error: ‘WLAN_SSID_MAXLEN’ undeclared here (not in a function)
  uint8_t ssid[ WLAN_SSID_MAXLEN ];
                ^
In file included from /vagrant/rtl8821au/include/drv_types.h:48:0,
                 from /vagrant/rtl8821au/os_dep/osdep_service.c:25:
/vagrant/rtl8821au/include/rtw_mlme.h:232:37: error: ‘P2P_MAX_PERSISTENT_GROUP_NUM’ undeclared here (not in a function)
  struct profile_info   profileinfo[ P2P_MAX_PERSISTENT_GROUP_NUM ]; // Store the profile information of persistent group
                                     ^
/vagrant/rtl8821au/include/rtw_mlme.h:238:18: error: field ‘role’ has incomplete type
  enum P2P_ROLE   role;
                  ^
/vagrant/rtl8821au/include/rtw_mlme.h:239:19: error: field ‘pre_p2p_state’ has incomplete type
  enum P2P_STATE   pre_p2p_state;
                   ^
/vagrant/rtl8821au/include/rtw_mlme.h:240:19: error: field ‘p2p_state’ has incomplete type
  enum P2P_STATE   p2p_state;
                   ^
/vagrant/rtl8821au/include/rtw_mlme.h:248:33: error: ‘P2P_WILDCARD_SSID_LEN’ undeclared here (not in a function)
  uint8_t      p2p_wildcard_ssid[P2P_WILDCARD_SSID_LEN];
                                 ^
/vagrant/rtl8821au/include/rtw_mlme.h:253:28: error: ‘WPS_MAX_DEVICE_NAME_LEN’ undeclared here (not in a function)
  uint8_t      device_name[ WPS_MAX_DEVICE_NAME_LEN ]; // Device name for displaying on searching device screen
                            ^
/vagrant/rtl8821au/include/rtw_mlme.h:283:20: error: field ‘ui_got_wps_info’ has incomplete type
  enum P2P_WPSINFO  ui_got_wps_info;   // This field will store the WPS value (PIN value or PBC) that UI had got from the user.
                    ^
In file included from /vagrant/rtl8821au/include/drv_types.h:56:0,
                 from /vagrant/rtl8821au/os_dep/osdep_service.c:25:
/vagrant/rtl8821au/include/rtw_mlme_ext.h:374:24: error: field ‘ADDBA_req’ has incomplete type
  struct ADDBA_request  ADDBA_req;
                        ^
/vagrant/rtl8821au/include/rtw_mlme_ext.h:375:26: error: field ‘WMM_param’ has incomplete type
  struct WMM_para_element WMM_param;
                          ^
/vagrant/rtl8821au/include/rtw_mlme_ext.h:376:25: error: field ‘HT_caps’ has incomplete type
  struct HT_caps_element HT_caps;
                         ^
/vagrant/rtl8821au/include/rtw_mlme_ext.h:377:26: error: field ‘HT_info’ has incomplete type
  struct HT_info_element  HT_info;
                          ^
/usr/src/linux-headers-3.16.0-4-common/scripts/Makefile.build:262: recipe for target '/vagrant/rtl8821au/os_dep/osdep_service.o' failed
make[4]: *** [/vagrant/rtl8821au/os_dep/osdep_service.o] Error 1
/usr/src/linux-headers-3.16.0-4-common/Makefile:1352: recipe for target '_module_/vagrant/rtl8821au' failed
make[3]: *** [_module_/vagrant/rtl8821au] Error 2
Makefile:181: recipe for target 'sub-make' failed
make[2]: *** [sub-make] Error 2
Makefile:8: recipe for target 'all' failed
make[1]: *** [all] Error 2
make[1]: Leaving directory '/usr/src/linux-headers-3.16.0-4-amd64'
Makefile:116: recipe for target 'modules' failed
make: *** [modules] Error 2
ulli-kroll commented 8 years ago

Hi,

so I've done a build test with v3.16 kernels. It will not build and I don't care

Currently I'm transferring my code base against rtlwifi-lib. They will be only smaller fixes to test with the current code base (wireless-ext) So master will get fewer changes.

I can't push out my dev-tree until my transfer is complete build tested and don't crash any machine. tough.