Merge remote-tracking branch 'origin/main'
This commit is contained in:
commit
4fe09c965b
41
88x2bu.conf
41
88x2bu.conf
@ -13,6 +13,10 @@ options 88x2bu rtw_drv_log_level=1 rtw_led_ctrl=1 rtw_vht_enable=1 rtw_switch_us
|
|||||||
#
|
#
|
||||||
# Note: To activate USB3 mode, change rtw_switch_usb_mode above to rtw_switch_usb_mode=1
|
# Note: To activate USB3 mode, change rtw_switch_usb_mode above to rtw_switch_usb_mode=1
|
||||||
#
|
#
|
||||||
|
# Note: The above `options` line is a good default for managed mode. Below is
|
||||||
|
# an example for AP mode. Modify as required after reading the documentation:
|
||||||
|
#options 88x2bu rtw_drv_log_level=1 rtw_led_ctrl=1 rtw_vht_enable=2 rtw_power_mgnt=1 rtw_dfs_region_domain=1
|
||||||
|
#
|
||||||
# After editing is complete, save this file (if using nano: Ctrl + x, y, Enter)
|
# After editing is complete, save this file (if using nano: Ctrl + x, y, Enter)
|
||||||
# and reboot to activate the changes.
|
# and reboot to activate the changes.
|
||||||
#
|
#
|
||||||
@ -22,8 +26,8 @@ options 88x2bu rtw_drv_log_level=1 rtw_led_ctrl=1 rtw_vht_enable=1 rtw_switch_us
|
|||||||
#
|
#
|
||||||
# Log options ( rtw_drv_log_level )
|
# Log options ( rtw_drv_log_level )
|
||||||
#
|
#
|
||||||
# 0 = NONE (default)
|
# 0 = NONE
|
||||||
# 1 = ALWAYS
|
# 1 = ALWAYS (default)
|
||||||
# 2 = ERROR
|
# 2 = ERROR
|
||||||
# 3 = WARNING
|
# 3 = WARNING
|
||||||
# 4 = INFO
|
# 4 = INFO
|
||||||
@ -68,6 +72,14 @@ options 88x2bu rtw_drv_log_level=1 rtw_led_ctrl=1 rtw_vht_enable=1 rtw_switch_us
|
|||||||
#
|
#
|
||||||
# -----
|
# -----
|
||||||
#
|
#
|
||||||
|
# USB options: ( rtw_switch_usb_mode )
|
||||||
|
#
|
||||||
|
# 0 = No switch (default)
|
||||||
|
# 1 = Switch from usb 2.0 to usb 3.0
|
||||||
|
# 2 = Switch from usb 3.0 to usb 2.0
|
||||||
|
#
|
||||||
|
# -----
|
||||||
|
#
|
||||||
# DFS Options ( rtw_dfs_region_domain )
|
# DFS Options ( rtw_dfs_region_domain )
|
||||||
#
|
#
|
||||||
# 0 = NONE (default)
|
# 0 = NONE (default)
|
||||||
@ -86,13 +98,6 @@ options 88x2bu rtw_drv_log_level=1 rtw_led_ctrl=1 rtw_vht_enable=1 rtw_switch_us
|
|||||||
#
|
#
|
||||||
# -----
|
# -----
|
||||||
#
|
#
|
||||||
# Select P2P interface in concurrent mode ( rtw_sel_p2p_iface )
|
|
||||||
#
|
|
||||||
# 0 = Sets interface 0 to be p2p interface
|
|
||||||
# 1 = Sets interface 1 to be p2p interface (default)
|
|
||||||
#
|
|
||||||
# -----
|
|
||||||
#
|
|
||||||
# Wireless Mode options ( rtw_wireless_mode )
|
# Wireless Mode options ( rtw_wireless_mode )
|
||||||
#
|
#
|
||||||
# 1 = 2.4GHz 802.11b
|
# 1 = 2.4GHz 802.11b
|
||||||
@ -109,18 +114,18 @@ options 88x2bu rtw_drv_log_level=1 rtw_led_ctrl=1 rtw_vht_enable=1 rtw_switch_us
|
|||||||
#
|
#
|
||||||
# -----
|
# -----
|
||||||
#
|
#
|
||||||
# USB options ( rtw_switch_usb_mode )
|
# Country Code options ( rtw_country_code )
|
||||||
#
|
#
|
||||||
# 0 = No switch (default)
|
# Note: Allows the Country Code to be set in cases where it is unable to
|
||||||
# 1 = Switch from usb 2.0 to usb 3.0
|
# be obtained otherwise.
|
||||||
# 2 = Switch from usb 3.0 to usb 2.0
|
|
||||||
#
|
#
|
||||||
# Note: This driver may need to stay in USB2 mode for AP mode operations
|
# URL: http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
|
||||||
# on some platforms in order to avoid dropping offline. This issue has been
|
|
||||||
# observed on the Raspberry Pi 4B with both the 32 and 64 bit versions of the
|
|
||||||
# Raspberry Pi OS. This problem appears to be specific to the Raspberry Pi 4B
|
|
||||||
# and adapters based on the rtl8812bu chipset.
|
|
||||||
#
|
#
|
||||||
|
# Example for the US: rtw_country_code=US
|
||||||
|
# Example for Panama: rtw_country_code=PA
|
||||||
|
# Example for Norway: rtw_country_code=NO
|
||||||
|
# Example for Kuwait: rtw_country_code=KW
|
||||||
|
# Example for Taiwan: rtw_country_code=TW
|
||||||
#
|
#
|
||||||
# -----
|
# -----
|
||||||
#
|
#
|
||||||
|
|||||||
2
Makefile
2
Makefile
@ -124,7 +124,7 @@ endif
|
|||||||
CONFIG_RTW_DEBUG = y
|
CONFIG_RTW_DEBUG = y
|
||||||
# default log level is _DRV_INFO_ = 4,
|
# default log level is _DRV_INFO_ = 4,
|
||||||
# please refer to "How_to_set_driver_debug_log_level.doc" to set the available level.
|
# please refer to "How_to_set_driver_debug_log_level.doc" to set the available level.
|
||||||
CONFIG_RTW_LOG_LEVEL = 0
|
CONFIG_RTW_LOG_LEVEL = 1
|
||||||
|
|
||||||
# enable /proc/net/rtlxxxx/ debug interfaces
|
# enable /proc/net/rtlxxxx/ debug interfaces
|
||||||
CONFIG_PROC_DEBUG = y
|
CONFIG_PROC_DEBUG = y
|
||||||
|
|||||||
59
README.md
59
README.md
@ -11,18 +11,18 @@ confirm that this is the correct driver for your adapter.
|
|||||||
|
|
||||||
- IEEE 802.11 b/g/n/ac WiFi compliant
|
- IEEE 802.11 b/g/n/ac WiFi compliant
|
||||||
- 802.1x, WEP, WPA TKIP and WPA2 AES/Mixed mode for PSK and TLS (Radius)
|
- 802.1x, WEP, WPA TKIP and WPA2 AES/Mixed mode for PSK and TLS (Radius)
|
||||||
- WPA3 (see FAQ)
|
- WPA3-SAE (Personal) (see FAQ)
|
||||||
- IEEE 802.11b/g/n/ac Client mode
|
- IEEE 802.11b/g/n/ac Client mode
|
||||||
* Supports wireless security for WEP, WPA TKIP and WPA2 AES PSK
|
* Supports wireless security for WEP, WPA TKIP and WPA2 AES PSK
|
||||||
* Supports site survey scan and manual connect
|
* Supports site survey scan and manual connect
|
||||||
* Supports WPA/WPA2 TLS client
|
* Supports WPA/WPA2 TLS client
|
||||||
- Power saving modes
|
- Power saving modes
|
||||||
|
- Miracast
|
||||||
- Wireshark compatible
|
- Wireshark compatible
|
||||||
- Aircrack-ng compatible
|
- Aircrack-ng compatible
|
||||||
- Packet injection
|
- Packet injection
|
||||||
- hostapd compatible
|
- hostapd compatible
|
||||||
- AP mode DFS channel support
|
- AP mode DFS channel support
|
||||||
- Miracast
|
|
||||||
- Supported interface modes
|
- Supported interface modes
|
||||||
* Managed
|
* Managed
|
||||||
* Monitor (see FAQ)
|
* Monitor (see FAQ)
|
||||||
@ -38,6 +38,8 @@ confirm that this is the correct driver for your adapter.
|
|||||||
|
|
||||||
### A FAQ is available at the end of this document.
|
### A FAQ is available at the end of this document.
|
||||||
|
|
||||||
|
### Additional documentation is in the file `88x2bu.conf`.
|
||||||
|
|
||||||
### Compatible CPU Architectures
|
### Compatible CPU Architectures
|
||||||
|
|
||||||
- x86, i686
|
- x86, i686
|
||||||
@ -81,7 +83,7 @@ be provided via PR or message in Issues.
|
|||||||
|
|
||||||
- SkiffOS for Odroid XU4 (ARM 32 bit) (kernel 6.0.7)
|
- SkiffOS for Odroid XU4 (ARM 32 bit) (kernel 6.0.7)
|
||||||
|
|
||||||
- Ubuntu 22.04 (kernel 5.15) and 22.10 (kernel 5.19) (kernel 6.2 rc1)
|
- Ubuntu 22.04 (kernel 5.15) and 22.10 (kernel 5.19) (kernel 6.2)
|
||||||
|
|
||||||
- Void Linux (kernel 5.18)
|
- Void Linux (kernel 5.18)
|
||||||
|
|
||||||
@ -141,9 +143,15 @@ item 2 which will show information about and links to recommended adapters.
|
|||||||
|
|
||||||
### Installation Information
|
### Installation Information
|
||||||
|
|
||||||
Warning: Installing multiple drivers for the same hardware usually does
|
Note: As of Linux kernel 6.2, an in-kernel driver for the chipsets supported by
|
||||||
not end well. If a previous attempt to install this driver failed or if
|
this driver has been included in the Linux kernel. The installation and removal
|
||||||
you have previously installed another driver for chipsets supported by
|
scripts for the driver in this repo automatically deactivate the in-kernel
|
||||||
|
driver on installation and reactivate the in-kernel driver on removal. No
|
||||||
|
special action needs to be taken by users.
|
||||||
|
|
||||||
|
Warning: Installing multiple out-of-kernel drivers for the same hardware
|
||||||
|
usually does not end well. If a previous attempt to install this driver failed
|
||||||
|
or if you have previously installed another driver for chipsets supported by
|
||||||
this driver, you MUST remove anything that the previous attempt
|
this driver, you MUST remove anything that the previous attempt
|
||||||
installed BEFORE attempting to install this driver. This driver can be
|
installed BEFORE attempting to install this driver. This driver can be
|
||||||
removed with the script called `./remove-driver.sh`. Information is
|
removed with the script called `./remove-driver.sh`. Information is
|
||||||
@ -169,7 +177,7 @@ $ sudo ./install-driver.sh
|
|||||||
Temporary internet access is required for installation. There are numerous ways
|
Temporary internet access is required for installation. There are numerous ways
|
||||||
to enable temporary internet access depending on your hardware and situation.
|
to enable temporary internet access depending on your hardware and situation.
|
||||||
[One method is to use tethering from a phone.](https://www.makeuseof.com/tag/how-to-tether-your-smartphone-in-linux).
|
[One method is to use tethering from a phone.](https://www.makeuseof.com/tag/how-to-tether-your-smartphone-in-linux).
|
||||||
Another method is to keep a [WiFi adapter that uses an in-kernel driver](https://github.com/morrownr/USB-WiFi) in your toolkit.
|
Another method is to keep a [WiFi adapter that uses an in-kernel driver](https://github.com/morrownr/USB-WiFi/blob/main/home/USB_WiFi_Adapters_that_are_supported_with_Linux_in-kernel_drivers.md) in your toolkit.
|
||||||
|
|
||||||
You will need to use the terminal interface. The quick way to open a terminal:
|
You will need to use the terminal interface. The quick way to open a terminal:
|
||||||
Ctrl+Alt+T (hold down on the Ctrl and Alt keys then press the T key).
|
Ctrl+Alt+T (hold down on the Ctrl and Alt keys then press the T key).
|
||||||
@ -184,7 +192,7 @@ can be executed as the `root` user. (If the command `sudo echo Yes` returns
|
|||||||
"Yes", with or without having to enter your password, you do have sufficient
|
"Yes", with or without having to enter your password, you do have sufficient
|
||||||
access rights.)
|
access rights.)
|
||||||
|
|
||||||
DKMS is used for the installation if available. DKMS is a system utility
|
DKMS is used for the installation, if available. DKMS is a system utility
|
||||||
which will automatically recompile and reinstall this driver when a new
|
which will automatically recompile and reinstall this driver when a new
|
||||||
kernel is installed. DKMS is provided by and maintained by Dell.
|
kernel is installed. DKMS is provided by and maintained by Dell.
|
||||||
|
|
||||||
@ -212,24 +220,6 @@ install this driver and, after a reboot, the driver is not working, you
|
|||||||
can go into the BIOS and temporarily turn secure boot off to see if
|
can go into the BIOS and temporarily turn secure boot off to see if
|
||||||
secure boot is the problem.
|
secure boot is the problem.
|
||||||
|
|
||||||
Please ensure the ISO 3166-1 alpha-2 Country Code is set in your Linux distro.
|
|
||||||
If it is not set, you will likely have problems accessing some channels, especially
|
|
||||||
5 Ghz and 6 GHz channels. To set your Country Code:
|
|
||||||
|
|
||||||
```
|
|
||||||
sudo iw reg set US
|
|
||||||
```
|
|
||||||
|
|
||||||
If you are not in the US, please use the country code for your country. See:
|
|
||||||
|
|
||||||
ISO 3166-1 alpha-2 codes: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
|
|
||||||
|
|
||||||
To check if your country code is properly set:
|
|
||||||
|
|
||||||
```
|
|
||||||
iw reg get
|
|
||||||
```
|
|
||||||
|
|
||||||
### Installation Steps
|
### Installation Steps
|
||||||
|
|
||||||
Note: The installation instructions are for the novice user. Experienced users are
|
Note: The installation instructions are for the novice user. Experienced users are
|
||||||
@ -238,7 +228,7 @@ on a best effort basis, based on the steps below.
|
|||||||
|
|
||||||
#### Step 1: Open a terminal (e.g. Ctrl+Alt+T)
|
#### Step 1: Open a terminal (e.g. Ctrl+Alt+T)
|
||||||
|
|
||||||
#### Step 2: Update and upgrade system packages (select the option for the OS you are using)
|
#### Step 2: Update and upgrade system packages (select the option for the distro you are using)
|
||||||
|
|
||||||
Note: If your Linux distro does not fall into one of options listed
|
Note: If your Linux distro does not fall into one of options listed
|
||||||
below, you will need to research how to update and upgrade your system
|
below, you will need to research how to update and upgrade your system
|
||||||
@ -574,17 +564,16 @@ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
|
|||||||
|
|
||||||
Question: Is WPA3 supported?
|
Question: Is WPA3 supported?
|
||||||
|
|
||||||
Answer: WPA3-SAE support is in this driver according to Realtek and it
|
Answer: WPA3-SAE is supported. It works well on most modern Linux distros but
|
||||||
works well on some Linux distros but not all. Generally the reason for
|
not all. Generally the reason for WPA3 not working on Linux distros is that the
|
||||||
WPA3 not working on Linux distros is that the distro has an old version
|
distro has an old version of wpa_supplicant or Network Manager. Your options
|
||||||
of wpa_supplicant or Network Manager. Your options are to upgrade to a
|
are to upgrade to a more modern distro (distros released after mid 2022) or
|
||||||
more modern distro (most distros released after mid 2022) or compile and
|
compile and install new versions of wpa_supplicant and/or Network Manager.
|
||||||
install new versions of the wpa_supplicant and Network Manager utilities.
|
|
||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
Question: I bought two rtl8812bu based adapters and am planning to use
|
Question: I bought two usb wifi adapters based on this chipset and am planning
|
||||||
both in the same computer. How do I set that up?
|
to use both in the same computer. How do I set that up?
|
||||||
|
|
||||||
Answer: Realtek drivers do not support more than one adapter with the
|
Answer: Realtek drivers do not support more than one adapter with the
|
||||||
same chipset in the same computer. You can have multiple Realtek based
|
same chipset in the same computer. You can have multiple Realtek based
|
||||||
|
|||||||
@ -1,603 +0,0 @@
|
|||||||
2022-12-26
|
|
||||||
|
|
||||||
Instructions for setting the ISO 3166-1 alpha-2 Country Code in your Linux
|
|
||||||
distro. If it is not set, you may have problems using some channels, especially
|
|
||||||
5 Ghz and 6 GHz channels. To set your Country Code from the command line
|
|
||||||
interface:
|
|
||||||
|
|
||||||
Note: Package "iw" must be installed.
|
|
||||||
|
|
||||||
```
|
|
||||||
sudo iw reg set XX
|
|
||||||
```
|
|
||||||
|
|
||||||
Where XX is the country code for your country. See the list of country codes
|
|
||||||
below.
|
|
||||||
|
|
||||||
To check if your country code is properly set:
|
|
||||||
|
|
||||||
```
|
|
||||||
iw reg get
|
|
||||||
```
|
|
||||||
|
|
||||||
```
|
|
||||||
ISO 3166-1 alpha-2 Country Codes
|
|
||||||
|
|
||||||
Code Name
|
|
||||||
|
|
||||||
AF Afghanistan
|
|
||||||
|
|
||||||
AX Aland Islands
|
|
||||||
|
|
||||||
AL Albania
|
|
||||||
|
|
||||||
DZ Algeria
|
|
||||||
|
|
||||||
AS American Samoa
|
|
||||||
|
|
||||||
AD Andorra
|
|
||||||
|
|
||||||
AO Angola
|
|
||||||
|
|
||||||
AI Anguilla
|
|
||||||
|
|
||||||
AQ Antarctica
|
|
||||||
|
|
||||||
AG Antigua and Barbuda
|
|
||||||
|
|
||||||
Argentina AR
|
|
||||||
|
|
||||||
Armenia AM
|
|
||||||
|
|
||||||
Aruba AW
|
|
||||||
|
|
||||||
Australia AU
|
|
||||||
|
|
||||||
Austria AT
|
|
||||||
|
|
||||||
Azerbaijan AZ
|
|
||||||
|
|
||||||
Bahamas BS
|
|
||||||
|
|
||||||
Bahrain BH
|
|
||||||
|
|
||||||
Bangladesh BD
|
|
||||||
|
|
||||||
Barbados BB
|
|
||||||
|
|
||||||
Belarus BY
|
|
||||||
|
|
||||||
Belgium BE
|
|
||||||
|
|
||||||
Belize BZ
|
|
||||||
|
|
||||||
Benin BJ
|
|
||||||
|
|
||||||
Bermuda BM
|
|
||||||
|
|
||||||
Bhutan BT
|
|
||||||
|
|
||||||
Bolivia BO
|
|
||||||
|
|
||||||
Bonaire, Sint
|
|
||||||
Eustatius and
|
|
||||||
Saba BQ
|
|
||||||
|
|
||||||
Bosnia and
|
|
||||||
Herzegovina BA
|
|
||||||
|
|
||||||
Botswana BW
|
|
||||||
|
|
||||||
Bouvet
|
|
||||||
Island BV
|
|
||||||
|
|
||||||
Brazil BR
|
|
||||||
|
|
||||||
British Indian
|
|
||||||
Ocean
|
|
||||||
Territory IO
|
|
||||||
|
|
||||||
Brunei
|
|
||||||
Darussalam BN
|
|
||||||
|
|
||||||
Bulgaria BG
|
|
||||||
|
|
||||||
Burkina
|
|
||||||
Faso BF
|
|
||||||
|
|
||||||
Burundi BI
|
|
||||||
|
|
||||||
Cambodia KH
|
|
||||||
|
|
||||||
Cameroon CM
|
|
||||||
|
|
||||||
Canada CA
|
|
||||||
|
|
||||||
Cape Verde CV
|
|
||||||
|
|
||||||
Cayman
|
|
||||||
Islands KY
|
|
||||||
|
|
||||||
Central
|
|
||||||
African
|
|
||||||
Republic CF
|
|
||||||
|
|
||||||
Chad TD
|
|
||||||
|
|
||||||
Chile CL
|
|
||||||
|
|
||||||
China CN
|
|
||||||
|
|
||||||
Christmas
|
|
||||||
Island CX
|
|
||||||
|
|
||||||
Cocos
|
|
||||||
(Keeling)
|
|
||||||
Islands CC
|
|
||||||
|
|
||||||
Colombia CO
|
|
||||||
|
|
||||||
Comoros KM
|
|
||||||
|
|
||||||
Congo CG
|
|
||||||
|
|
||||||
Congo CD
|
|
||||||
|
|
||||||
Cook
|
|
||||||
Islands CK
|
|
||||||
|
|
||||||
Costa Rica CR
|
|
||||||
|
|
||||||
Côte
|
|
||||||
d'Ivoire CI
|
|
||||||
|
|
||||||
Croatia HR
|
|
||||||
|
|
||||||
Cuba CU
|
|
||||||
|
|
||||||
Curaçao CW
|
|
||||||
|
|
||||||
Cyprus CY
|
|
||||||
|
|
||||||
Czech
|
|
||||||
Republic CZ
|
|
||||||
|
|
||||||
Denmark DK
|
|
||||||
|
|
||||||
Djibouti DJ
|
|
||||||
|
|
||||||
Dominica DM
|
|
||||||
|
|
||||||
Dominican
|
|
||||||
Republic DO
|
|
||||||
|
|
||||||
Ecuador EC
|
|
||||||
|
|
||||||
Egypt EG
|
|
||||||
|
|
||||||
El Salvador SV
|
|
||||||
|
|
||||||
Equatorial
|
|
||||||
Guinea GQ
|
|
||||||
|
|
||||||
Eritrea ER
|
|
||||||
|
|
||||||
Estonia EE
|
|
||||||
|
|
||||||
Ethiopia ET
|
|
||||||
|
|
||||||
Falkland
|
|
||||||
Islands
|
|
||||||
(Malvinas) FK
|
|
||||||
|
|
||||||
Faroe
|
|
||||||
Islands FO
|
|
||||||
|
|
||||||
Fiji FJ
|
|
||||||
|
|
||||||
Finland FI
|
|
||||||
|
|
||||||
France FR
|
|
||||||
|
|
||||||
French
|
|
||||||
Guiana GF
|
|
||||||
|
|
||||||
French
|
|
||||||
Polynesia PF
|
|
||||||
|
|
||||||
French
|
|
||||||
Southern
|
|
||||||
Territories TF
|
|
||||||
|
|
||||||
Gabon GA
|
|
||||||
|
|
||||||
Gambia GM
|
|
||||||
|
|
||||||
Georgia GE
|
|
||||||
|
|
||||||
Germany DE
|
|
||||||
|
|
||||||
Ghana GH
|
|
||||||
|
|
||||||
Gibraltar GI
|
|
||||||
|
|
||||||
Greece GR
|
|
||||||
|
|
||||||
Greenland GL
|
|
||||||
|
|
||||||
Grenada GD
|
|
||||||
|
|
||||||
Guadeloupe GP
|
|
||||||
|
|
||||||
Guam GU
|
|
||||||
|
|
||||||
Guatemala GT
|
|
||||||
|
|
||||||
Guernsey GG
|
|
||||||
|
|
||||||
Guinea GN
|
|
||||||
|
|
||||||
Guinea-
|
|
||||||
Bissau GW
|
|
||||||
|
|
||||||
Guyana GY
|
|
||||||
|
|
||||||
Haiti HT
|
|
||||||
|
|
||||||
Heard Island
|
|
||||||
and
|
|
||||||
McDonald
|
|
||||||
Islands HM
|
|
||||||
|
|
||||||
Holy See
|
|
||||||
(Vatican City
|
|
||||||
State) VA
|
|
||||||
|
|
||||||
Honduras HN
|
|
||||||
|
|
||||||
Hong Kong HK
|
|
||||||
|
|
||||||
Hungary HU
|
|
||||||
|
|
||||||
Iceland IS
|
|
||||||
|
|
||||||
India IN
|
|
||||||
|
|
||||||
Indonesia ID
|
|
||||||
|
|
||||||
Iran, Islamic
|
|
||||||
Republic of IR
|
|
||||||
|
|
||||||
Iraq IQ
|
|
||||||
|
|
||||||
Ireland IE
|
|
||||||
|
|
||||||
Isle of Man IM
|
|
||||||
|
|
||||||
Israel IL
|
|
||||||
|
|
||||||
Italy IT
|
|
||||||
|
|
||||||
Jamaica JM
|
|
||||||
|
|
||||||
Japan JP
|
|
||||||
|
|
||||||
Jersey JE
|
|
||||||
|
|
||||||
Jordan JO
|
|
||||||
|
|
||||||
Kazakhstan KZ
|
|
||||||
|
|
||||||
Kenya KE
|
|
||||||
|
|
||||||
Kiribati KI
|
|
||||||
|
|
||||||
Korea,
|
|
||||||
Democratic
|
|
||||||
People's
|
|
||||||
Republic of KP
|
|
||||||
|
|
||||||
Korea,
|
|
||||||
Republic of KR
|
|
||||||
|
|
||||||
Kuwait KW
|
|
||||||
|
|
||||||
Kyrgyzstan KG
|
|
||||||
|
|
||||||
Lao People's
|
|
||||||
Democratic
|
|
||||||
Republic LA
|
|
||||||
|
|
||||||
Latvia LV
|
|
||||||
|
|
||||||
Lebanon LB
|
|
||||||
|
|
||||||
Lesotho LS
|
|
||||||
|
|
||||||
Liberia LR
|
|
||||||
|
|
||||||
Libya LY
|
|
||||||
|
|
||||||
LI Liechtenstein
|
|
||||||
|
|
||||||
Lithuania LT
|
|
||||||
|
|
||||||
Luxembourg LU
|
|
||||||
|
|
||||||
Macao MO
|
|
||||||
|
|
||||||
Macedonia,
|
|
||||||
the Former
|
|
||||||
Yugoslav
|
|
||||||
Republic of MK
|
|
||||||
|
|
||||||
Madagascar MG
|
|
||||||
|
|
||||||
Malawi MW
|
|
||||||
|
|
||||||
Malaysia MY
|
|
||||||
|
|
||||||
Maldives MV
|
|
||||||
|
|
||||||
Mali ML
|
|
||||||
|
|
||||||
Malta MT
|
|
||||||
|
|
||||||
Marshall
|
|
||||||
Islands MH
|
|
||||||
|
|
||||||
Martinique MQ
|
|
||||||
|
|
||||||
Mauritania MR
|
|
||||||
|
|
||||||
Mauritius MU
|
|
||||||
|
|
||||||
Mayotte YT
|
|
||||||
|
|
||||||
Mexico MX
|
|
||||||
|
|
||||||
Micronesia,
|
|
||||||
Federated
|
|
||||||
States of FM
|
|
||||||
|
|
||||||
Moldova,
|
|
||||||
Republic of MD
|
|
||||||
|
|
||||||
Monaco MC
|
|
||||||
|
|
||||||
Mongolia MN
|
|
||||||
|
|
||||||
Montenegro ME
|
|
||||||
|
|
||||||
Montserrat MS
|
|
||||||
|
|
||||||
Morocco MA
|
|
||||||
|
|
||||||
Mozambique MZ
|
|
||||||
|
|
||||||
Myanmar MM
|
|
||||||
|
|
||||||
Namibia NA
|
|
||||||
|
|
||||||
Nauru NR
|
|
||||||
|
|
||||||
Nepal NP
|
|
||||||
|
|
||||||
Netherlands NL
|
|
||||||
|
|
||||||
New
|
|
||||||
Caledonia NC
|
|
||||||
|
|
||||||
New Zealand NZ
|
|
||||||
|
|
||||||
Nicaragua NI
|
|
||||||
|
|
||||||
Niger NE
|
|
||||||
|
|
||||||
Nigeria NG
|
|
||||||
|
|
||||||
Niue NU
|
|
||||||
|
|
||||||
NF Norfolk Island
|
|
||||||
|
|
||||||
Northern
|
|
||||||
Mariana
|
|
||||||
Islands MP
|
|
||||||
|
|
||||||
Norway NO
|
|
||||||
|
|
||||||
><
|
|
||||||
|
|
||||||
Oman OM
|
|
||||||
|
|
||||||
Pakistan PK
|
|
||||||
|
|
||||||
Palau PW
|
|
||||||
|
|
||||||
Palestine PS
|
|
||||||
|
|
||||||
Panama PA
|
|
||||||
|
|
||||||
Papua New
|
|
||||||
Guinea PG
|
|
||||||
|
|
||||||
Paraguay PY
|
|
||||||
|
|
||||||
Peru PE
|
|
||||||
|
|
||||||
Philippines PH
|
|
||||||
|
|
||||||
Pitcairn PN
|
|
||||||
|
|
||||||
Poland PL
|
|
||||||
|
|
||||||
Portugal PT
|
|
||||||
|
|
||||||
Puerto Rico PR
|
|
||||||
|
|
||||||
Qatar QA
|
|
||||||
|
|
||||||
Réunion RE
|
|
||||||
|
|
||||||
Romania RO
|
|
||||||
|
|
||||||
Russia RU
|
|
||||||
|
|
||||||
Rwanda RW
|
|
||||||
|
|
||||||
Saint
|
|
||||||
Barthélemy BL
|
|
||||||
|
|
||||||
Saint Helena,
|
|
||||||
Ascension
|
|
||||||
and Tristan
|
|
||||||
da Cunha SH
|
|
||||||
|
|
||||||
Saint Kitts
|
|
||||||
and Nevis KN
|
|
||||||
|
|
||||||
Saint Lucia LC
|
|
||||||
|
|
||||||
MF Saint Martin (French part)
|
|
||||||
|
|
||||||
PM Saint Pierre and Miquelon
|
|
||||||
|
|
||||||
Saint Vincent
|
|
||||||
and the
|
|
||||||
Grenadines VC
|
|
||||||
|
|
||||||
Samoa WS
|
|
||||||
|
|
||||||
San Marino SM
|
|
||||||
|
|
||||||
ST Sao Tome and Principe
|
|
||||||
|
|
||||||
SA Saudi Arabia
|
|
||||||
|
|
||||||
Senegal SN
|
|
||||||
|
|
||||||
Serbia RS
|
|
||||||
|
|
||||||
Seychelles SC
|
|
||||||
|
|
||||||
SL Sierra Leone
|
|
||||||
|
|
||||||
Singapore SG
|
|
||||||
|
|
||||||
SX Sint Maarten (Dutch part)
|
|
||||||
|
|
||||||
Slovakia SK
|
|
||||||
|
|
||||||
Slovenia SI
|
|
||||||
|
|
||||||
Solomon
|
|
||||||
Islands SB
|
|
||||||
|
|
||||||
Somalia SO
|
|
||||||
|
|
||||||
ZA South Africa
|
|
||||||
|
|
||||||
South
|
|
||||||
Georgia and
|
|
||||||
the South
|
|
||||||
Sandwich
|
|
||||||
Islands GS
|
|
||||||
|
|
||||||
South Sudan SS
|
|
||||||
|
|
||||||
Spain ES
|
|
||||||
|
|
||||||
Sri Lanka LK
|
|
||||||
|
|
||||||
Sudan SD
|
|
||||||
|
|
||||||
Suriname SR
|
|
||||||
|
|
||||||
Svalbard and
|
|
||||||
Jan Mayen SJ
|
|
||||||
|
|
||||||
Swaziland SZ
|
|
||||||
|
|
||||||
Sweden SE
|
|
||||||
|
|
||||||
Switzerland CH
|
|
||||||
|
|
||||||
Syrian Arab
|
|
||||||
Republic SY
|
|
||||||
|
|
||||||
Taiwan TW
|
|
||||||
|
|
||||||
Tajikistan TJ
|
|
||||||
|
|
||||||
Tanzania,
|
|
||||||
United
|
|
||||||
Republic of TZ
|
|
||||||
|
|
||||||
Thailand TH
|
|
||||||
|
|
||||||
Timor-Leste TL
|
|
||||||
|
|
||||||
Togo TG
|
|
||||||
|
|
||||||
Tokelau TK
|
|
||||||
|
|
||||||
Tonga TO
|
|
||||||
|
|
||||||
Trinidad and
|
|
||||||
Tobago TT
|
|
||||||
|
|
||||||
Tunisia TN
|
|
||||||
|
|
||||||
Turkey TR
|
|
||||||
|
|
||||||
TM Turkmenistan
|
|
||||||
|
|
||||||
Turks and
|
|
||||||
Caicos
|
|
||||||
Islands TC
|
|
||||||
|
|
||||||
Tuvalu TV
|
|
||||||
|
|
||||||
Uganda UG
|
|
||||||
|
|
||||||
Ukraine UA
|
|
||||||
|
|
||||||
United Arab
|
|
||||||
Emirates AE
|
|
||||||
|
|
||||||
GB United Kingdom
|
|
||||||
|
|
||||||
US United States
|
|
||||||
|
|
||||||
United States
|
|
||||||
Minor
|
|
||||||
Outlying
|
|
||||||
Islands UM
|
|
||||||
|
|
||||||
Uruguay UY
|
|
||||||
|
|
||||||
Uzbekistan UZ
|
|
||||||
|
|
||||||
Vanuatu VU
|
|
||||||
|
|
||||||
Venezuela VE
|
|
||||||
|
|
||||||
Viet Nam VN
|
|
||||||
|
|
||||||
Virgin Islands,
|
|
||||||
British VG
|
|
||||||
|
|
||||||
Virgin Islands,
|
|
||||||
U.S. VI
|
|
||||||
|
|
||||||
WF Wallis and Futuna
|
|
||||||
|
|
||||||
EH Western Sahara
|
|
||||||
|
|
||||||
YE Yemen
|
|
||||||
|
|
||||||
ZM Zambia
|
|
||||||
|
|
||||||
ZW Zimbabwe
|
|
||||||
|
|
||||||
```
|
|
||||||
@ -402,8 +402,10 @@ sint rtw_fill_radiotap_hdr(_adapter *padapter, struct rx_pkt_attrib *a, u8 *buf)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (a->ampdu_eof) {
|
if (a->ampdu_eof) {
|
||||||
|
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0))
|
||||||
tmp_16bit |= cpu_to_le16(IEEE80211_RADIOTAP_AMPDU_EOF_KNOWN);
|
tmp_16bit |= cpu_to_le16(IEEE80211_RADIOTAP_AMPDU_EOF_KNOWN);
|
||||||
tmp_16bit |= cpu_to_le16(IEEE80211_RADIOTAP_AMPDU_EOF);
|
tmp_16bit |= cpu_to_le16(IEEE80211_RADIOTAP_AMPDU_EOF);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
_rtw_memcpy(&hdr_buf[rt_len], &tmp_16bit, 2);
|
_rtw_memcpy(&hdr_buf[rt_len], &tmp_16bit, 2);
|
||||||
|
|||||||
@ -17,6 +17,10 @@
|
|||||||
#ifdef __KERNEL__
|
#ifdef __KERNEL__
|
||||||
#include <linux/if_arp.h>
|
#include <linux/if_arp.h>
|
||||||
#include <net/ip.h>
|
#include <net/ip.h>
|
||||||
|
#include <linux/version.h>
|
||||||
|
#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 15, 0))
|
||||||
|
#include <net/ipx.h>
|
||||||
|
#endif
|
||||||
#include <linux/atalk.h>
|
#include <linux/atalk.h>
|
||||||
#include <linux/udp.h>
|
#include <linux/udp.h>
|
||||||
#include <linux/if_pppox.h>
|
#include <linux/if_pppox.h>
|
||||||
@ -168,7 +172,42 @@ static void __nat25_generate_ipv4_network_addr(unsigned char *networkAddr,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void __nat25_generate_pppoe_network_addr(unsigned char *networkAddr,
|
#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 15, 0))
|
||||||
|
static __inline__ void __nat25_generate_ipx_network_addr_with_node(unsigned char *networkAddr,
|
||||||
|
unsigned int *ipxNetAddr, unsigned char *ipxNodeAddr)
|
||||||
|
{
|
||||||
|
memset(networkAddr, 0, MAX_NETWORK_ADDR_LEN);
|
||||||
|
|
||||||
|
networkAddr[0] = NAT25_IPX;
|
||||||
|
memcpy(networkAddr + 1, (unsigned char *)ipxNetAddr, 4);
|
||||||
|
memcpy(networkAddr + 5, ipxNodeAddr, 6);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static __inline__ void __nat25_generate_ipx_network_addr_with_socket(unsigned char *networkAddr,
|
||||||
|
unsigned int *ipxNetAddr, unsigned short *ipxSocketAddr)
|
||||||
|
{
|
||||||
|
memset(networkAddr, 0, MAX_NETWORK_ADDR_LEN);
|
||||||
|
|
||||||
|
networkAddr[0] = NAT25_IPX;
|
||||||
|
memcpy(networkAddr + 1, (unsigned char *)ipxNetAddr, 4);
|
||||||
|
memcpy(networkAddr + 5, (unsigned char *)ipxSocketAddr, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static __inline__ void __nat25_generate_apple_network_addr(unsigned char *networkAddr,
|
||||||
|
unsigned short *network, unsigned char *node)
|
||||||
|
{
|
||||||
|
memset(networkAddr, 0, MAX_NETWORK_ADDR_LEN);
|
||||||
|
|
||||||
|
networkAddr[0] = NAT25_APPLE;
|
||||||
|
memcpy(networkAddr + 1, (unsigned char *)network, 2);
|
||||||
|
networkAddr[3] = *node;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
static __inline__ void __nat25_generate_pppoe_network_addr(unsigned char *networkAddr,
|
||||||
unsigned char *ac_mac, unsigned short *sid)
|
unsigned char *ac_mac, unsigned short *sid)
|
||||||
{
|
{
|
||||||
memset(networkAddr, 0, MAX_NETWORK_ADDR_LEN);
|
memset(networkAddr, 0, MAX_NETWORK_ADDR_LEN);
|
||||||
@ -296,6 +335,7 @@ static int __nat25_network_hash(unsigned char *networkAddr)
|
|||||||
x = networkAddr[7] ^ networkAddr[8] ^ networkAddr[9] ^ networkAddr[10];
|
x = networkAddr[7] ^ networkAddr[8] ^ networkAddr[9] ^ networkAddr[10];
|
||||||
|
|
||||||
return x & (NAT25_HASH_SIZE - 1);
|
return x & (NAT25_HASH_SIZE - 1);
|
||||||
|
#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 15, 0))
|
||||||
} else if (networkAddr[0] == NAT25_IPX) {
|
} else if (networkAddr[0] == NAT25_IPX) {
|
||||||
unsigned long x;
|
unsigned long x;
|
||||||
|
|
||||||
@ -309,6 +349,7 @@ static int __nat25_network_hash(unsigned char *networkAddr)
|
|||||||
x = networkAddr[1] ^ networkAddr[2] ^ networkAddr[3];
|
x = networkAddr[1] ^ networkAddr[2] ^ networkAddr[3];
|
||||||
|
|
||||||
return x & (NAT25_HASH_SIZE - 1);
|
return x & (NAT25_HASH_SIZE - 1);
|
||||||
|
#endif
|
||||||
} else if (networkAddr[0] == NAT25_PPPOE) {
|
} else if (networkAddr[0] == NAT25_PPPOE) {
|
||||||
unsigned long x;
|
unsigned long x;
|
||||||
|
|
||||||
@ -855,6 +896,229 @@ int nat25_db_handle(_adapter *priv, struct sk_buff *skb, int method)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 15, 0))
|
||||||
|
/*---------------------------------------------------*/
|
||||||
|
/* Handle IPX and Apple Talk frame */
|
||||||
|
/*---------------------------------------------------*/
|
||||||
|
else if ((protocol == __constant_htons(ETH_P_IPX)) ||
|
||||||
|
(protocol == __constant_htons(ETH_P_ATALK)) ||
|
||||||
|
(protocol == __constant_htons(ETH_P_AARP))) {
|
||||||
|
unsigned char ipx_header[2] = {0xFF, 0xFF};
|
||||||
|
struct ipxhdr *ipx = NULL;
|
||||||
|
struct elapaarp *ea = NULL;
|
||||||
|
struct ddpehdr *ddp = NULL;
|
||||||
|
unsigned char *framePtr = skb->data + ETH_HLEN;
|
||||||
|
|
||||||
|
if (protocol == __constant_htons(ETH_P_IPX)) {
|
||||||
|
RTW_INFO("NAT25: Protocol=IPX (Ethernet II)\n");
|
||||||
|
ipx = (struct ipxhdr *)framePtr;
|
||||||
|
} else { /* if(protocol <= __constant_htons(ETH_FRAME_LEN)) */
|
||||||
|
if (!memcmp(ipx_header, framePtr, 2)) {
|
||||||
|
RTW_INFO("NAT25: Protocol=IPX (Ethernet 802.3)\n");
|
||||||
|
ipx = (struct ipxhdr *)framePtr;
|
||||||
|
} else {
|
||||||
|
unsigned char ipx_8022_type = 0xE0;
|
||||||
|
unsigned char snap_8022_type = 0xAA;
|
||||||
|
|
||||||
|
if (*framePtr == snap_8022_type) {
|
||||||
|
unsigned char ipx_snap_id[5] = {0x0, 0x0, 0x0, 0x81, 0x37}; /* IPX SNAP ID */
|
||||||
|
unsigned char aarp_snap_id[5] = {0x00, 0x00, 0x00, 0x80, 0xF3}; /* Apple Talk AARP SNAP ID */
|
||||||
|
unsigned char ddp_snap_id[5] = {0x08, 0x00, 0x07, 0x80, 0x9B}; /* Apple Talk DDP SNAP ID */
|
||||||
|
|
||||||
|
framePtr += 3; /* eliminate the 802.2 header */
|
||||||
|
|
||||||
|
if (!memcmp(ipx_snap_id, framePtr, 5)) {
|
||||||
|
framePtr += 5; /* eliminate the SNAP header */
|
||||||
|
|
||||||
|
RTW_INFO("NAT25: Protocol=IPX (Ethernet SNAP)\n");
|
||||||
|
ipx = (struct ipxhdr *)framePtr;
|
||||||
|
} else if (!memcmp(aarp_snap_id, framePtr, 5)) {
|
||||||
|
framePtr += 5; /* eliminate the SNAP header */
|
||||||
|
|
||||||
|
ea = (struct elapaarp *)framePtr;
|
||||||
|
} else if (!memcmp(ddp_snap_id, framePtr, 5)) {
|
||||||
|
framePtr += 5; /* eliminate the SNAP header */
|
||||||
|
|
||||||
|
ddp = (struct ddpehdr *)framePtr;
|
||||||
|
} else {
|
||||||
|
DEBUG_WARN("NAT25: Protocol=Ethernet SNAP %02x%02x%02x%02x%02x\n", framePtr[0],
|
||||||
|
framePtr[1], framePtr[2], framePtr[3], framePtr[4]);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
} else if (*framePtr == ipx_8022_type) {
|
||||||
|
framePtr += 3; /* eliminate the 802.2 header */
|
||||||
|
|
||||||
|
if (!memcmp(ipx_header, framePtr, 2)) {
|
||||||
|
RTW_INFO("NAT25: Protocol=IPX (Ethernet 802.2)\n");
|
||||||
|
ipx = (struct ipxhdr *)framePtr;
|
||||||
|
} else
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* IPX */
|
||||||
|
if (ipx != NULL) {
|
||||||
|
switch (method) {
|
||||||
|
case NAT25_CHECK:
|
||||||
|
if (!memcmp(skb->data + ETH_ALEN, ipx->ipx_source.node, ETH_ALEN)) {
|
||||||
|
RTW_INFO("NAT25: Check IPX skb_copy\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
case NAT25_INSERT: {
|
||||||
|
RTW_INFO("NAT25: Insert IPX, Dest=%08x,%02x%02x%02x%02x%02x%02x,%04x Source=%08x,%02x%02x%02x%02x%02x%02x,%04x\n",
|
||||||
|
ipx->ipx_dest.net,
|
||||||
|
ipx->ipx_dest.node[0],
|
||||||
|
ipx->ipx_dest.node[1],
|
||||||
|
ipx->ipx_dest.node[2],
|
||||||
|
ipx->ipx_dest.node[3],
|
||||||
|
ipx->ipx_dest.node[4],
|
||||||
|
ipx->ipx_dest.node[5],
|
||||||
|
ipx->ipx_dest.sock,
|
||||||
|
ipx->ipx_source.net,
|
||||||
|
ipx->ipx_source.node[0],
|
||||||
|
ipx->ipx_source.node[1],
|
||||||
|
ipx->ipx_source.node[2],
|
||||||
|
ipx->ipx_source.node[3],
|
||||||
|
ipx->ipx_source.node[4],
|
||||||
|
ipx->ipx_source.node[5],
|
||||||
|
ipx->ipx_source.sock);
|
||||||
|
|
||||||
|
if (!memcmp(skb->data + ETH_ALEN, ipx->ipx_source.node, ETH_ALEN)) {
|
||||||
|
RTW_INFO("NAT25: Use IPX Net, and Socket as network addr\n");
|
||||||
|
|
||||||
|
__nat25_generate_ipx_network_addr_with_socket(networkAddr, &ipx->ipx_source.net, &ipx->ipx_source.sock);
|
||||||
|
|
||||||
|
/* change IPX source node addr to wlan STA address */
|
||||||
|
memcpy(ipx->ipx_source.node, GET_MY_HWADDR(priv), ETH_ALEN);
|
||||||
|
} else
|
||||||
|
__nat25_generate_ipx_network_addr_with_node(networkAddr, &ipx->ipx_source.net, ipx->ipx_source.node);
|
||||||
|
|
||||||
|
__nat25_db_network_insert(priv, skb->data + ETH_ALEN, networkAddr);
|
||||||
|
|
||||||
|
__nat25_db_print(priv);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
case NAT25_LOOKUP: {
|
||||||
|
if (!memcmp(GET_MY_HWADDR(priv), ipx->ipx_dest.node, ETH_ALEN)) {
|
||||||
|
RTW_INFO("NAT25: Lookup IPX, Modify Destination IPX Node addr\n");
|
||||||
|
|
||||||
|
__nat25_generate_ipx_network_addr_with_socket(networkAddr, &ipx->ipx_dest.net, &ipx->ipx_dest.sock);
|
||||||
|
|
||||||
|
__nat25_db_network_lookup_and_replace(priv, skb, networkAddr);
|
||||||
|
|
||||||
|
/* replace IPX destination node addr with Lookup destination MAC addr */
|
||||||
|
memcpy(ipx->ipx_dest.node, skb->data, ETH_ALEN);
|
||||||
|
} else {
|
||||||
|
__nat25_generate_ipx_network_addr_with_node(networkAddr, &ipx->ipx_dest.net, ipx->ipx_dest.node);
|
||||||
|
|
||||||
|
__nat25_db_network_lookup_and_replace(priv, skb, networkAddr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* AARP */
|
||||||
|
else if (ea != NULL) {
|
||||||
|
/* Sanity check fields. */
|
||||||
|
if (ea->hw_len != ETH_ALEN || ea->pa_len != AARP_PA_ALEN) {
|
||||||
|
DEBUG_WARN("NAT25: Appletalk AARP Sanity check fail!\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (method) {
|
||||||
|
case NAT25_CHECK:
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
case NAT25_INSERT: {
|
||||||
|
/* change to AARP source mac address to wlan STA address */
|
||||||
|
memcpy(ea->hw_src, GET_MY_HWADDR(priv), ETH_ALEN);
|
||||||
|
|
||||||
|
RTW_INFO("NAT25: Insert AARP, Source=%d,%d Destination=%d,%d\n",
|
||||||
|
ea->pa_src_net,
|
||||||
|
ea->pa_src_node,
|
||||||
|
ea->pa_dst_net,
|
||||||
|
ea->pa_dst_node);
|
||||||
|
|
||||||
|
__nat25_generate_apple_network_addr(networkAddr, &ea->pa_src_net, &ea->pa_src_node);
|
||||||
|
|
||||||
|
__nat25_db_network_insert(priv, skb->data + ETH_ALEN, networkAddr);
|
||||||
|
|
||||||
|
__nat25_db_print(priv);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
case NAT25_LOOKUP: {
|
||||||
|
RTW_INFO("NAT25: Lookup AARP, Source=%d,%d Destination=%d,%d\n",
|
||||||
|
ea->pa_src_net,
|
||||||
|
ea->pa_src_node,
|
||||||
|
ea->pa_dst_net,
|
||||||
|
ea->pa_dst_node);
|
||||||
|
|
||||||
|
__nat25_generate_apple_network_addr(networkAddr, &ea->pa_dst_net, &ea->pa_dst_node);
|
||||||
|
|
||||||
|
__nat25_db_network_lookup_and_replace(priv, skb, networkAddr);
|
||||||
|
|
||||||
|
/* change to AARP destination mac address to Lookup result */
|
||||||
|
memcpy(ea->hw_dst, skb->data, ETH_ALEN);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* DDP */
|
||||||
|
else if (ddp != NULL) {
|
||||||
|
switch (method) {
|
||||||
|
case NAT25_CHECK:
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
case NAT25_INSERT: {
|
||||||
|
RTW_INFO("NAT25: Insert DDP, Source=%d,%d Destination=%d,%d\n",
|
||||||
|
ddp->deh_snet,
|
||||||
|
ddp->deh_snode,
|
||||||
|
ddp->deh_dnet,
|
||||||
|
ddp->deh_dnode);
|
||||||
|
|
||||||
|
__nat25_generate_apple_network_addr(networkAddr, &ddp->deh_snet, &ddp->deh_snode);
|
||||||
|
|
||||||
|
__nat25_db_network_insert(priv, skb->data + ETH_ALEN, networkAddr);
|
||||||
|
|
||||||
|
__nat25_db_print(priv);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
case NAT25_LOOKUP: {
|
||||||
|
RTW_INFO("NAT25: Lookup DDP, Source=%d,%d Destination=%d,%d\n",
|
||||||
|
ddp->deh_snet,
|
||||||
|
ddp->deh_snode,
|
||||||
|
ddp->deh_dnet,
|
||||||
|
ddp->deh_dnode);
|
||||||
|
|
||||||
|
__nat25_generate_apple_network_addr(networkAddr, &ddp->deh_dnet, &ddp->deh_dnode);
|
||||||
|
|
||||||
|
__nat25_db_network_lookup_and_replace(priv, skb, networkAddr);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*---------------------------------------------------*/
|
/*---------------------------------------------------*/
|
||||||
/* Handle PPPoE frame */
|
/* Handle PPPoE frame */
|
||||||
/*---------------------------------------------------*/
|
/*---------------------------------------------------*/
|
||||||
|
|||||||
@ -16320,6 +16320,12 @@ u8 rtw_set_chbw_hdl(_adapter *padapter, u8 *pbuf)
|
|||||||
}
|
}
|
||||||
|
|
||||||
LeaveAllPowerSaveModeDirect(padapter);
|
LeaveAllPowerSaveModeDirect(padapter);
|
||||||
|
|
||||||
|
#ifdef CONFIG_MONITOR_MODE_XMIT
|
||||||
|
pmlmeext->cur_channel = set_ch_parm->ch;
|
||||||
|
pmlmeext->cur_ch_offset = set_ch_parm->ch_offset;
|
||||||
|
pmlmeext->cur_bwmode = set_ch_parm->bw;
|
||||||
|
#endif /* CONFIG_MONITOR_MODE_XMIT */
|
||||||
|
|
||||||
set_channel_bwmode(padapter, set_ch_parm->ch, set_ch_parm->ch_offset, set_ch_parm->bw);
|
set_channel_bwmode(padapter, set_ch_parm->ch, set_ch_parm->ch_offset, set_ch_parm->bw);
|
||||||
|
|
||||||
|
|||||||
@ -4068,9 +4068,8 @@ int recv_frame_monitor(_adapter *padapter, union recv_frame *rframe)
|
|||||||
|
|
||||||
/* read skb information from recv frame */
|
/* read skb information from recv frame */
|
||||||
pskb = rframe->u.hdr.pkt;
|
pskb = rframe->u.hdr.pkt;
|
||||||
pskb->head = rframe->u.hdr.rx_head;
|
|
||||||
pskb->data = rframe->u.hdr.rx_data;
|
|
||||||
pskb->len = rframe->u.hdr.len;
|
pskb->len = rframe->u.hdr.len;
|
||||||
|
pskb->data = rframe->u.hdr.rx_data;
|
||||||
skb_set_tail_pointer(pskb, rframe->u.hdr.len);
|
skb_set_tail_pointer(pskb, rframe->u.hdr.len);
|
||||||
|
|
||||||
if (ndev->type == ARPHRD_IEEE80211_RADIOTAP) {
|
if (ndev->type == ARPHRD_IEEE80211_RADIOTAP) {
|
||||||
|
|||||||
@ -4899,10 +4899,12 @@ s32 rtw_monitor_xmit_entry(struct sk_buff *skb, struct net_device *ndev)
|
|||||||
if (unlikely(skb->len < rtap_len))
|
if (unlikely(skb->len < rtap_len))
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
|
#ifndef CONFIG_MONITOR_MODE_XMIT
|
||||||
if (rtap_len != 12) {
|
if (rtap_len != 12) {
|
||||||
RTW_INFO("radiotap len (should be 14): %d\n", rtap_len);
|
RTW_INFO("radiotap len (should be 14): %d\n", rtap_len);
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
#endif /* CONFIG_MONITOR_MODE_XMIT */
|
||||||
_rtw_pktfile_read(&pktfile, dummybuf, rtap_len-sizeof(struct ieee80211_radiotap_header));
|
_rtw_pktfile_read(&pktfile, dummybuf, rtap_len-sizeof(struct ieee80211_radiotap_header));
|
||||||
len = len - rtap_len;
|
len = len - rtap_len;
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -26,7 +26,11 @@ int usb_init_recv_priv(_adapter *padapter, u16 ini_in_buf_sz)
|
|||||||
|
|
||||||
#ifdef PLATFORM_LINUX
|
#ifdef PLATFORM_LINUX
|
||||||
tasklet_init(&precvpriv->recv_tasklet,
|
tasklet_init(&precvpriv->recv_tasklet,
|
||||||
(void(*))usb_recv_tasklet,
|
#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 17, 0))
|
||||||
|
(void(*)(unsigned long))usb_recv_tasklet,
|
||||||
|
#else
|
||||||
|
(void *)usb_recv_tasklet,
|
||||||
|
#endif
|
||||||
(unsigned long)padapter);
|
(unsigned long)padapter);
|
||||||
#endif /* PLATFORM_LINUX */
|
#endif /* PLATFORM_LINUX */
|
||||||
|
|
||||||
|
|||||||
@ -1745,6 +1745,22 @@ void BlinkHandler(PLED_USB pLed)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_SW_LED
|
||||||
|
// 1 is normal blinking
|
||||||
|
if (padapter->registrypriv.led_ctrl != 1) {
|
||||||
|
if (padapter->registrypriv.led_ctrl == 0)
|
||||||
|
{
|
||||||
|
// Set LED to off
|
||||||
|
pLed->BlinkingLedState = RTW_LED_OFF;
|
||||||
|
} else {
|
||||||
|
// Set LED to solid for 2 or greater
|
||||||
|
pLed->BlinkingLedState = RTW_LED_ON;
|
||||||
|
}
|
||||||
|
// Skip various switch cases where SwLedBlink*() is called below
|
||||||
|
pLed->CurrLedState = LED_UNKNOWN;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
switch (ledpriv->LedStrategy) {
|
switch (ledpriv->LedStrategy) {
|
||||||
#if CONFIG_RTW_SW_LED_TRX_DA_CLASSIFY
|
#if CONFIG_RTW_SW_LED_TRX_DA_CLASSIFY
|
||||||
case SW_LED_MODE_UC_TRX_ONLY:
|
case SW_LED_MODE_UC_TRX_ONLY:
|
||||||
|
|||||||
@ -89,7 +89,7 @@
|
|||||||
#define PHYDM_SNPRINTF snprintf
|
#define PHYDM_SNPRINTF snprintf
|
||||||
#elif (DM_ODM_SUPPORT_TYPE == ODM_CE)
|
#elif (DM_ODM_SUPPORT_TYPE == ODM_CE)
|
||||||
#undef pr_debug
|
#undef pr_debug
|
||||||
#define pr_debug _RTW_DBG
|
#define pr_debug printk
|
||||||
#define RT_PRINTK(fmt, args...) pr_debug(fmt, ## args)
|
#define RT_PRINTK(fmt, args...) pr_debug(fmt, ## args)
|
||||||
#define RT_DISP(dbgtype, dbgflag, printstr)
|
#define RT_DISP(dbgtype, dbgflag, printstr)
|
||||||
#define RT_TRACE(adapter, comp, drv_level, fmt, args...) \
|
#define RT_TRACE(adapter, comp, drv_level, fmt, args...) \
|
||||||
|
|||||||
@ -57,19 +57,11 @@ static void swledon(PADAPTER padapter, PLED_USB led)
|
|||||||
case LED_PIN_LED1:
|
case LED_PIN_LED1:
|
||||||
case LED_PIN_LED2:
|
case LED_PIN_LED2:
|
||||||
default:
|
default:
|
||||||
if (padapter->registrypriv.led_ctrl == 0) {
|
rtw_halmac_led_switch(adapter_to_dvobj(padapter), 1);
|
||||||
rtw_halmac_led_switch(adapter_to_dvobj(padapter), 0);
|
|
||||||
} else {
|
|
||||||
rtw_halmac_led_switch(adapter_to_dvobj(padapter), 1);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (padapter->registrypriv.led_ctrl == 0) {
|
led->bLedOn = _TRUE;
|
||||||
led->bLedOn = _FALSE;
|
|
||||||
} else {
|
|
||||||
led->bLedOn = _TRUE;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -91,19 +83,11 @@ static void swledoff(PADAPTER padapter, PLED_USB led)
|
|||||||
case LED_PIN_LED1:
|
case LED_PIN_LED1:
|
||||||
case LED_PIN_LED2:
|
case LED_PIN_LED2:
|
||||||
default:
|
default:
|
||||||
if (padapter->registrypriv.led_ctrl <= 1) {
|
rtw_halmac_led_switch(adapter_to_dvobj(padapter), 0);
|
||||||
rtw_halmac_led_switch(adapter_to_dvobj(padapter), 0);
|
|
||||||
} else {
|
|
||||||
rtw_halmac_led_switch(adapter_to_dvobj(padapter), 1);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (padapter->registrypriv.led_ctrl <= 1) {
|
led->bLedOn = _FALSE;
|
||||||
led->bLedOn = _FALSE;
|
|
||||||
} else {
|
|
||||||
led->bLedOn = _TRUE;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@ -878,7 +878,11 @@ s32 rtl8822bu_init_xmit_priv(PADAPTER padapter)
|
|||||||
|
|
||||||
#ifdef PLATFORM_LINUX
|
#ifdef PLATFORM_LINUX
|
||||||
tasklet_init(&pxmitpriv->xmit_tasklet,
|
tasklet_init(&pxmitpriv->xmit_tasklet,
|
||||||
(void(*))rtl8822bu_xmit_tasklet,
|
#if (LINUX_VERSION_CODE < KERNEL_VERSION(5, 17, 0))
|
||||||
|
(void(*)(unsigned long))rtl8822bu_xmit_tasklet,
|
||||||
|
#else
|
||||||
|
(void *)rtl8822bu_xmit_tasklet,
|
||||||
|
#endif
|
||||||
(unsigned long)padapter);
|
(unsigned long)padapter);
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_TX_EARLY_MODE
|
#ifdef CONFIG_TX_EARLY_MODE
|
||||||
|
|||||||
@ -178,7 +178,7 @@
|
|||||||
|
|
||||||
#define CONFIG_RTW_LED
|
#define CONFIG_RTW_LED
|
||||||
#ifdef CONFIG_RTW_LED
|
#ifdef CONFIG_RTW_LED
|
||||||
#define CONFIG_RTW_SW_LED
|
// #define CONFIG_RTW_SW_LED
|
||||||
#ifdef CONFIG_RTW_SW_LED
|
#ifdef CONFIG_RTW_SW_LED
|
||||||
/* #define CONFIG_RTW_LED_HANDLED_BY_CMD_THREAD */
|
/* #define CONFIG_RTW_LED_HANDLED_BY_CMD_THREAD */
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -242,7 +242,7 @@ struct registry_priv {
|
|||||||
#ifdef CONFIG_TX_EARLY_MODE
|
#ifdef CONFIG_TX_EARLY_MODE
|
||||||
u8 early_mode;
|
u8 early_mode;
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_RTW_SW_LED
|
#ifdef CONFIG_SW_LED
|
||||||
u8 led_ctrl;
|
u8 led_ctrl;
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_NARROWBAND_SUPPORTING
|
#ifdef CONFIG_NARROWBAND_SUPPORTING
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
#
|
#
|
||||||
# Supports dkms and non-dkms installations.
|
# Supports dkms and non-dkms installations.
|
||||||
|
|
||||||
# Copyright(c) 2022 Nick Morrow
|
# Copyright(c) 2023 Nick Morrow
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of version 2 of the GNU General Public License as
|
# it under the terms of version 2 of the GNU General Public License as
|
||||||
@ -16,7 +16,7 @@
|
|||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
SCRIPT_NAME="install-driver.sh"
|
SCRIPT_NAME="install-driver.sh"
|
||||||
SCRIPT_VERSION="20221228"
|
SCRIPT_VERSION="20230109"
|
||||||
MODULE_NAME="88x2bu"
|
MODULE_NAME="88x2bu"
|
||||||
DRV_VERSION="5.13.1"
|
DRV_VERSION="5.13.1"
|
||||||
|
|
||||||
@ -115,7 +115,46 @@ do
|
|||||||
done
|
done
|
||||||
|
|
||||||
# displays script name and version
|
# displays script name and version
|
||||||
echo "Script: ${SCRIPT_NAME} version ${SCRIPT_VERSION}"
|
echo ": ${SCRIPT_NAME} v${SCRIPT_VERSION}"
|
||||||
|
|
||||||
|
# information that helps with bug reports
|
||||||
|
|
||||||
|
# display architecture
|
||||||
|
echo ": ${KARCH}"
|
||||||
|
|
||||||
|
# display total memory in system
|
||||||
|
#grep MemTotal /proc/meminfo
|
||||||
|
|
||||||
|
# display kernel version
|
||||||
|
echo ": ${KVER}"
|
||||||
|
|
||||||
|
# display gcc version
|
||||||
|
gcc_ver=$(gcc --version | grep -i gcc)
|
||||||
|
echo ": "${gcc_ver}
|
||||||
|
|
||||||
|
# display dkms version if installed
|
||||||
|
if command -v dkms >/dev/null 2>&1
|
||||||
|
then
|
||||||
|
dkms_ver=$(dkms --version)
|
||||||
|
echo ": "${dkms_ver}
|
||||||
|
fi
|
||||||
|
|
||||||
|
# display secure mode status if mokutil is installed
|
||||||
|
if command -v mokutil >/dev/null 2>&1
|
||||||
|
then
|
||||||
|
sb_state=$(mokutil --sb-state)
|
||||||
|
echo ": "${sb_state}
|
||||||
|
fi
|
||||||
|
|
||||||
|
# display ISO 3166-1 alpha-2 Country Code
|
||||||
|
#a2_country_code=$(iw reg get | grep -i country)
|
||||||
|
#echo "Country: "${a2_country_code}
|
||||||
|
#if [[ $a2_country_code == *"00"* ]];
|
||||||
|
#then
|
||||||
|
# echo "The Country Code may not be properly set."
|
||||||
|
# echo "File alpha-2_Country_Codes is located in the driver directory."
|
||||||
|
# echo "Please read and follow the directions in the file after installation."
|
||||||
|
#fi
|
||||||
|
|
||||||
# check for and remove non-dkms installations
|
# check for and remove non-dkms installations
|
||||||
# standard naming
|
# standard naming
|
||||||
@ -124,6 +163,11 @@ then
|
|||||||
echo "Removing a non-dkms installation: ${MODDESTDIR}${MODULE_NAME}.ko"
|
echo "Removing a non-dkms installation: ${MODDESTDIR}${MODULE_NAME}.ko"
|
||||||
rm -f "${MODDESTDIR}${MODULE_NAME}".ko
|
rm -f "${MODDESTDIR}${MODULE_NAME}".ko
|
||||||
/sbin/depmod -a "${KVER}"
|
/sbin/depmod -a "${KVER}"
|
||||||
|
echo "Removing ${OPTIONS_FILE} from /etc/modprobe.d"
|
||||||
|
rm -f /etc/modprobe.d/${OPTIONS_FILE}
|
||||||
|
echo "Removing source files from /usr/src/${DRV_NAME}-${DRV_VERSION}"
|
||||||
|
rm -rf /usr/src/${DRV_NAME}-${DRV_VERSION}
|
||||||
|
make clean >/dev/null 2>&1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# check for and remove non-dkms installations
|
# check for and remove non-dkms installations
|
||||||
@ -133,6 +177,11 @@ then
|
|||||||
echo "Removing a non-dkms installation: ${MODDESTDIR}rtl${MODULE_NAME}.ko"
|
echo "Removing a non-dkms installation: ${MODDESTDIR}rtl${MODULE_NAME}.ko"
|
||||||
rm -f "${MODDESTDIR}rtl${MODULE_NAME}".ko
|
rm -f "${MODDESTDIR}rtl${MODULE_NAME}".ko
|
||||||
/sbin/depmod -a "${KVER}"
|
/sbin/depmod -a "${KVER}"
|
||||||
|
echo "Removing ${OPTIONS_FILE} from /etc/modprobe.d"
|
||||||
|
rm -f /etc/modprobe.d/${OPTIONS_FILE}
|
||||||
|
echo "Removing source files from /usr/src/${DRV_NAME}-${DRV_VERSION}"
|
||||||
|
rm -rf /usr/src/${DRV_NAME}-${DRV_VERSION}
|
||||||
|
make clean >/dev/null 2>&1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# check for and remove non-dkms installations
|
# check for and remove non-dkms installations
|
||||||
@ -144,17 +193,24 @@ then
|
|||||||
echo "Removing a non-dkms installation: /usr/lib/modules/${KVER}/kernel/drivers/net/wireless/${DRV_NAME}/${MODULE_NAME}.ko.xz"
|
echo "Removing a non-dkms installation: /usr/lib/modules/${KVER}/kernel/drivers/net/wireless/${DRV_NAME}/${MODULE_NAME}.ko.xz"
|
||||||
rm -f "/usr/lib/modules/${KVER}/kernel/drivers/net/wireless/${DRV_NAME}/${MODULE_NAME}".ko.xz
|
rm -f "/usr/lib/modules/${KVER}/kernel/drivers/net/wireless/${DRV_NAME}/${MODULE_NAME}".ko.xz
|
||||||
/sbin/depmod -a "${KVER}"
|
/sbin/depmod -a "${KVER}"
|
||||||
|
echo "Removing ${OPTIONS_FILE} from /etc/modprobe.d"
|
||||||
|
rm -f /etc/modprobe.d/${OPTIONS_FILE}
|
||||||
|
echo "Removing source files from /usr/src/${DRV_NAME}-${DRV_VERSION}"
|
||||||
|
rm -rf /usr/src/${DRV_NAME}-${DRV_VERSION}
|
||||||
|
make clean >/dev/null 2>&1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# check for existing dkms installations of any version of this driver
|
# check for and remove dkms installations
|
||||||
if command -v dkms >/dev/null 2>&1
|
if command -v dkms >/dev/null 2>&1
|
||||||
then
|
then
|
||||||
if dkms status | grep -i ${DRV_NAME}; then
|
if dkms status | grep -i ${DRV_NAME}
|
||||||
echo "The above driver needs to be removed before the installation can be successfull."
|
then
|
||||||
echo "Example: $ sudo dkms remove ${DRV_NAME}/X.X.X.X --all"
|
echo "Removing a dkms installation: ${DRV_NAME}"
|
||||||
echo "Please replace X.X.X.X by the driver version number shown above."
|
dkms remove -m ${DRV_NAME} -v ${DRV_VERSION} --all
|
||||||
echo "Once the driver is removed, please run \"sudo ./${SCRIPT_NAME}\""
|
echo "Removing ${OPTIONS_FILE} from /etc/modprobe.d"
|
||||||
exit 1
|
rm -f /etc/modprobe.d/${OPTIONS_FILE}
|
||||||
|
echo "Removing source files from /usr/src/${DRV_NAME}-${DRV_VERSION}"
|
||||||
|
rm -rf /usr/src/${DRV_NAME}-${DRV_VERSION}
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@ -5108,9 +5108,11 @@ void rtw_cfg80211_indicate_sta_assoc(_adapter *padapter, u8 *pmgmt_frame, uint f
|
|||||||
ie_offset = _REASOCREQ_IE_OFFSET_;
|
ie_offset = _REASOCREQ_IE_OFFSET_;
|
||||||
|
|
||||||
memset(&sinfo, 0, sizeof(sinfo));
|
memset(&sinfo, 0, sizeof(sinfo));
|
||||||
|
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 2, 0))
|
||||||
sinfo.filled = STATION_INFO_ASSOC_REQ_IES;
|
sinfo.filled = STATION_INFO_ASSOC_REQ_IES;
|
||||||
sinfo.assoc_req_ies = pmgmt_frame + WLAN_HDR_A3_LEN + ie_offset;
|
sinfo.assoc_req_ies = pmgmt_frame + WLAN_HDR_A3_LEN + ie_offset;
|
||||||
sinfo.assoc_req_ies_len = frame_len - WLAN_HDR_A3_LEN - ie_offset;
|
sinfo.assoc_req_ies_len = frame_len - WLAN_HDR_A3_LEN - ie_offset;
|
||||||
|
#endif
|
||||||
cfg80211_new_sta(ndev, get_addr2_ptr(pmgmt_frame), &sinfo, GFP_ATOMIC);
|
cfg80211_new_sta(ndev, get_addr2_ptr(pmgmt_frame), &sinfo, GFP_ATOMIC);
|
||||||
}
|
}
|
||||||
#else /* defined(RTW_USE_CFG80211_STA_EVENT) */
|
#else /* defined(RTW_USE_CFG80211_STA_EVENT) */
|
||||||
@ -6208,11 +6210,15 @@ static int cfg80211_rtw_set_channel(struct wiphy *wiphy
|
|||||||
#endif
|
#endif
|
||||||
, struct ieee80211_channel *chan, enum nl80211_channel_type channel_type)
|
, struct ieee80211_channel *chan, enum nl80211_channel_type channel_type)
|
||||||
{
|
{
|
||||||
|
#ifdef CONFIG_WIFI_MONITOR
|
||||||
|
_adapter *padapter = wiphy_to_adapter(wiphy);
|
||||||
|
#else /* CONFIG_WIFI_MONITOR */
|
||||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 35))
|
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 35))
|
||||||
_adapter *padapter = (_adapter *)rtw_netdev_priv(ndev);
|
_adapter *padapter = (_adapter *)rtw_netdev_priv(ndev);
|
||||||
#else
|
#else
|
||||||
_adapter *padapter = wiphy_to_adapter(wiphy);
|
_adapter *padapter = wiphy_to_adapter(wiphy);
|
||||||
#endif
|
#endif
|
||||||
|
#endif /* CONFIG_WIFI_MONITOR */
|
||||||
int chan_target = (u8) ieee80211_frequency_to_channel(chan->center_freq);
|
int chan_target = (u8) ieee80211_frequency_to_channel(chan->center_freq);
|
||||||
int chan_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE;
|
int chan_offset = HAL_PRIME_CHNL_OFFSET_DONT_CARE;
|
||||||
int chan_width = CHANNEL_WIDTH_20;
|
int chan_width = CHANNEL_WIDTH_20;
|
||||||
|
|||||||
@ -142,8 +142,8 @@ int rtw_check_fw_ps = 1;
|
|||||||
int rtw_early_mode = 1;
|
int rtw_early_mode = 1;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_RTW_SW_LED
|
#ifdef CONFIG_SW_LED
|
||||||
int rtw_led_ctrl = 1; /* default led blink */
|
int rtw_led_ctrl = 1; // default to normal blinking
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int rtw_usb_rxagg_mode = 2;/* RX_AGG_DMA=1, RX_AGG_USB=2 */
|
int rtw_usb_rxagg_mode = 2;/* RX_AGG_DMA=1, RX_AGG_USB=2 */
|
||||||
@ -617,9 +617,9 @@ module_param(rtw_pci_aspm_enable, int, 0644);
|
|||||||
module_param(rtw_early_mode, int, 0644);
|
module_param(rtw_early_mode, int, 0644);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_RTW_SW_LED
|
#ifdef CONFIG_SW_LED
|
||||||
module_param(rtw_led_ctrl, int, 0644);
|
module_param(rtw_led_ctrl, int, 0644);
|
||||||
MODULE_PARM_DESC(rtw_led_ctrl,"led control, 0:led off, 1:led blink, 2:led on");
|
MODULE_PARM_DESC(rtw_led_ctrl,"Led Control: 0=Always off, 1=Normal blink, 2=Always on");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_ADAPTOR_INFO_CACHING_FILE
|
#ifdef CONFIG_ADAPTOR_INFO_CACHING_FILE
|
||||||
@ -1318,7 +1318,7 @@ uint loadparam(_adapter *padapter)
|
|||||||
#ifdef CONFIG_TX_EARLY_MODE
|
#ifdef CONFIG_TX_EARLY_MODE
|
||||||
registry_par->early_mode = (u8)rtw_early_mode;
|
registry_par->early_mode = (u8)rtw_early_mode;
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_RTW_SW_LED
|
#ifdef CONFIG_SW_LED
|
||||||
registry_par->led_ctrl = (u8)rtw_led_ctrl;
|
registry_par->led_ctrl = (u8)rtw_led_ctrl;
|
||||||
#endif
|
#endif
|
||||||
registry_par->trx_path_bmp = (u8)rtw_trx_path_bmp;
|
registry_par->trx_path_bmp = (u8)rtw_trx_path_bmp;
|
||||||
@ -3937,7 +3937,7 @@ int _netdev_open(struct net_device *pnetdev)
|
|||||||
#ifdef CONFIG_IOCTL_CFG80211
|
#ifdef CONFIG_IOCTL_CFG80211
|
||||||
rtw_cfg80211_init_wdev_data(padapter);
|
rtw_cfg80211_init_wdev_data(padapter);
|
||||||
#endif
|
#endif
|
||||||
rtw_netif_carrier_on(pnetdev); /* call this func when rtw_joinbss_event_callback return success */
|
/* rtw_netif_carrier_on(pnetdev); */ /* call this func when rtw_joinbss_event_callback return success */
|
||||||
rtw_netif_wake_queue(pnetdev);
|
rtw_netif_wake_queue(pnetdev);
|
||||||
|
|
||||||
#ifdef CONFIG_BR_EXT
|
#ifdef CONFIG_BR_EXT
|
||||||
@ -4058,7 +4058,7 @@ int _netdev_open(struct net_device *pnetdev)
|
|||||||
rtw_set_pwr_state_check_timer(pwrctrlpriv);
|
rtw_set_pwr_state_check_timer(pwrctrlpriv);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
rtw_netif_carrier_on(pnetdev); /* call this func when rtw_joinbss_event_callback return success */
|
/* rtw_netif_carrier_on(pnetdev); */ /* call this func when rtw_joinbss_event_callback return success */
|
||||||
rtw_netif_wake_queue(pnetdev);
|
rtw_netif_wake_queue(pnetdev);
|
||||||
|
|
||||||
#ifdef CONFIG_BR_EXT
|
#ifdef CONFIG_BR_EXT
|
||||||
|
|||||||
@ -353,7 +353,6 @@ _pkt *rtw_os_alloc_msdu_pkt(union recv_frame *prframe, const u8 *da, const u8 *s
|
|||||||
{
|
{
|
||||||
sub_skb = rtw_skb_clone(prframe->u.hdr.pkt);
|
sub_skb = rtw_skb_clone(prframe->u.hdr.pkt);
|
||||||
if (sub_skb) {
|
if (sub_skb) {
|
||||||
sub_skb->head = msdu;
|
|
||||||
sub_skb->data = msdu;
|
sub_skb->data = msdu;
|
||||||
sub_skb->len = msdu_len;
|
sub_skb->len = msdu_len;
|
||||||
skb_set_tail_pointer(sub_skb, msdu_len);
|
skb_set_tail_pointer(sub_skb, msdu_len);
|
||||||
@ -619,9 +618,8 @@ void rtw_hostapd_mlme_rx(_adapter *padapter, union recv_frame *precv_frame)
|
|||||||
if (skb == NULL)
|
if (skb == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
skb->head = precv_frame->u.hdr.rx_head;
|
|
||||||
skb->data = precv_frame->u.hdr.rx_data;
|
skb->data = precv_frame->u.hdr.rx_data;
|
||||||
skb_set_tail_pointer(skb, precv_frame->u.hdr.rx_tail - precv_frame->u.hdr.rx_data);
|
skb->tail = precv_frame->u.hdr.rx_tail;
|
||||||
skb->len = precv_frame->u.hdr.len;
|
skb->len = precv_frame->u.hdr.len;
|
||||||
|
|
||||||
/* pskb_copy = rtw_skb_copy(skb);
|
/* pskb_copy = rtw_skb_copy(skb);
|
||||||
@ -663,7 +661,6 @@ int rtw_recv_monitor(_adapter *padapter, union recv_frame *precv_frame)
|
|||||||
goto _recv_drop;
|
goto _recv_drop;
|
||||||
}
|
}
|
||||||
|
|
||||||
skb->head = precv_frame->u.hdr.rx_head;
|
|
||||||
skb->data = precv_frame->u.hdr.rx_data;
|
skb->data = precv_frame->u.hdr.rx_data;
|
||||||
skb_set_tail_pointer(skb, precv_frame->u.hdr.len);
|
skb_set_tail_pointer(skb, precv_frame->u.hdr.len);
|
||||||
skb->len = precv_frame->u.hdr.len;
|
skb->len = precv_frame->u.hdr.len;
|
||||||
@ -688,7 +685,6 @@ inline void rtw_rframe_set_os_pkt(union recv_frame *rframe)
|
|||||||
{
|
{
|
||||||
_pkt *skb = rframe->u.hdr.pkt;
|
_pkt *skb = rframe->u.hdr.pkt;
|
||||||
|
|
||||||
skb->head = rframe->u.hdr.rx_head;
|
|
||||||
skb->data = rframe->u.hdr.rx_data;
|
skb->data = rframe->u.hdr.rx_data;
|
||||||
skb_set_tail_pointer(skb, rframe->u.hdr.len);
|
skb_set_tail_pointer(skb, rframe->u.hdr.len);
|
||||||
skb->len = rframe->u.hdr.len;
|
skb->len = rframe->u.hdr.len;
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
#
|
#
|
||||||
# Supports dkms and non-dkms removals.
|
# Supports dkms and non-dkms removals.
|
||||||
|
|
||||||
# Copyright(c) 2022 Nick Morrow
|
# Copyright(c) 2023 Nick Morrow
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of version 2 of the GNU General Public License as
|
# it under the terms of version 2 of the GNU General Public License as
|
||||||
@ -16,7 +16,7 @@
|
|||||||
# GNU General Public License for more details.
|
# GNU General Public License for more details.
|
||||||
|
|
||||||
SCRIPT_NAME="remove-driver.sh"
|
SCRIPT_NAME="remove-driver.sh"
|
||||||
SCRIPT_VERSION="20221228"
|
SCRIPT_VERSION="20230109"
|
||||||
MODULE_NAME="88x2bu"
|
MODULE_NAME="88x2bu"
|
||||||
DRV_VERSION="5.13.1"
|
DRV_VERSION="5.13.1"
|
||||||
|
|
||||||
@ -57,7 +57,7 @@ do
|
|||||||
done
|
done
|
||||||
|
|
||||||
# displays script name and version
|
# displays script name and version
|
||||||
echo "Script: ${SCRIPT_NAME} version ${SCRIPT_VERSION}"
|
echo ": ${SCRIPT_NAME} v${SCRIPT_VERSION}"
|
||||||
|
|
||||||
# check for and remove non-dkms installations
|
# check for and remove non-dkms installations
|
||||||
# standard naming
|
# standard naming
|
||||||
@ -91,10 +91,10 @@ fi
|
|||||||
# information that helps with bug reports
|
# information that helps with bug reports
|
||||||
|
|
||||||
# display kernel version
|
# display kernel version
|
||||||
echo "Kernel: ${KVER}"
|
echo ": ${KVER}"
|
||||||
|
|
||||||
# display architecture
|
# display architecture
|
||||||
echo "Arch: ${KARCH}"
|
echo ": ${KARCH}"
|
||||||
|
|
||||||
# determine if dkms is installed and run the appropriate routines
|
# determine if dkms is installed and run the appropriate routines
|
||||||
if command -v dkms >/dev/null 2>&1
|
if command -v dkms >/dev/null 2>&1
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user