rtl8188eu: Fix build for kernel 5.18

Also update control_ap

Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
This commit is contained in:
Larry Finger 2022-04-17 12:49:39 -05:00
parent bf23ec4903
commit 13531f3844
2 changed files with 113 additions and 82 deletions

View file

@ -1,17 +1,23 @@
#!/bin/sh #!/bin/sh
# Script to start/stop a hostapd-based access point # Script to start/stop a hostapd-based access point
# #
# Sample start call "control_ap start wlan0 eth0" # Sample start call "control_ap start wlan0 eth0 encrypt"
# Stop with "control_ap stop" # Stop with "control_ap stop"
# #
ENCRYPT=$4
case "$1" in case "$1" in
start) start)
if [ $# -ne 3 ] if [ $# -le 2 ]
then then
echo "Usage: $0 start AP_iface NET_iface" echo "Usage: $0 start AP_iface NET_iface <encrypt>"
echo " Optional encrypt is wpa, wpa2, wep, or none. If not given, wpa2 is assumed"
exit 1 exit 1
fi fi
if [ $# -eq 3 ]
then
ENCRYPT="wpa2"
fi
;; ;;
stop) stop)
if [ $# -ne 1 ] if [ $# -ne 1 ]
@ -22,7 +28,7 @@ stop)
;; ;;
*) *)
echo "Usage:" echo "Usage:"
echo "$0 start AP-iface net_iface" echo "$0 start AP-iface net_iface <encrypt>"
echo "or" echo "or"
echo "$0 stop" echo "$0 stop"
exit 1 exit 1
@ -31,12 +37,15 @@ esac
# Symbols for needed programs # Symbols for needed programs
IPTABLES=/sbin/iptables IPTABLES=/usr/sbin/iptables
IFCONFIG=/sbin/ifconfig IFCONFIG=/usr/bin/ifconfig
DHCPD=/usr/sbin/dhcpd DHCPD=/sbin/dhcpd
HOSTAPD=/home/finger/rtl8188eu/hostapd-0.8/hostapd/hostapd HOSTAPD=/home/finger/hostapd-2.9/hostapd/hostapd
#HOSTAPD=/sbin/hostapd
#HOSTAPD=/home/finger/hostapd-0.8/hostapd/hostapd
OPT=-ddK
# Symbols for AP and external interfaces
NET_AP=$2 NET_AP=$2
NET_EXT=$3 NET_EXT=$3
@ -49,34 +58,34 @@ AP_ADDR=192.168.0
NAME_SERVER=8.8.8.8 NAME_SERVER=8.8.8.8
# AP Channel, SSID, Encryption method, driver, and Encryption secret # AP Channel, SSID, Encryption method, and Encryption secret
AP_CHANNEL=11 AP_CHANNEL=6
AP_SSID=rtwap AP_SSID=TEST-LARRY
WPA_SECRET="87654321" WPA_SECRET=TheSecret
ENCRYPT_MODE=2 WEP_SECRET=123456789a
DRIVER=rtl871xdrv
case "$1" in case "$1" in
start) start)
echo "Starting AP mode for $NET_AP at address $AP_ADDR.1" echo "Starting AP mode for $NET_AP at address $AP_ADDR"
# Disable packet forwarding # Disable packet forwarding
echo 0 > /proc/sys/net/ipv4/ip_forward echo 0 > /proc/sys/net/ipv4/ip_forward
# Stop any existing hostapd and dhcpd daemons # Stop any existing hostapd and dhcpd daemons
killall -q hostapd killproc hostapd
killall -q dhcpd killproc dhcpd
#Set up forwarding #Set up forwarding
$IPTABLES -t nat -A POSTROUTING -o $NET_EXT -j MASQUERADE $IPTABLES -t nat -A POSTROUTING -o $NET_EXT -j MASQUERADE
$IPTABLES -A FORWARD -i $NET_EXT -o $NET_AP -m state \ $IPTABLES -A FORWARD -i $NET_EXT -o $NET_AP -m state \
--state RELATED,ESTABLISHED -j ACCEPT --state RELATED,ESTABLISHED -j ACCEPT
$IPTABLES -A FORWARD -i $NET_AP -o $NET_EXT -j ACCEPT $IPTABLES -A FORWARD -i $NET_AP -o $NET_EXT -j ACCEPT
# Enable packet forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
# Get the AP interface in the right state # Get the AP interface in the right state
$IFCONFIG $NET_AP down $IFCONFIG $NET_AP down
$IFCONFIG $NET_AP up $IFCONFIG $NET_AP up
$IFCONFIG $NET_AP $AP_ADDR.1 $IFCONFIG $NET_AP $AP_ADDR.1
# dhcpd needs to have a leases file available - create it if needed # dhcpd needs to have a leases file available - create it if needed
if [ ! -f /var/lib/dhcp/db/dhcpd.leases ]; then if [ ! -f /var/lib/dhcp/db/dhcpd.leases ]; then
mkdir -p /var/lib/dhcp/db
touch /var/lib/dhcp/db/dhcpd.leases touch /var/lib/dhcp/db/dhcpd.leases
fi fi
# Write the DHCP server configuration file # Write the DHCP server configuration file
@ -90,73 +99,95 @@ start)
echo " option broadcast-address $AP_ADDR.255;" >> ~/dhcpd.conf echo " option broadcast-address $AP_ADDR.255;" >> ~/dhcpd.conf
echo " option routers $AP_ADDR.1;" >> ~/dhcpd.conf echo " option routers $AP_ADDR.1;" >> ~/dhcpd.conf
echo "}" >> ~/dhcpd.conf echo "}" >> ~/dhcpd.conf
# Bring up the DHCP server
$DHCPD -cf ~/dhcpd.conf $NET_AP $DHCPD -cf ~/dhcpd.conf $NET_AP
# Write the hostapd configuration file # Write the hostapd configuration file
cat > ~/hostapd.conf << EOF echo "interface=$NET_AP" > ~/hostapd.conf
auth_algs=1 echo "driver=nl80211" >> ~/hostapd.conf
beacon_int=100 # echo "driver=rtl871x" >> ~/hostapd.conf
country_code=US echo "hw_mode=g" >> ~/hostapd.conf
ctrl_interface_group=0 echo "channel=$AP_CHANNEL" >> ~/hostapd.conf
ctrl_interface=/var/run/hostapd case "$ENCRYPT" in
dtim_period=2 "wpa")
dump_file=/tmp/hostapd.dump echo "Setting up wpa"
fragm_threshold=2346 echo "wpa=1" >> ~/hostapd.conf
#ht_capab=[HT40-][SHORT-GI-20][SHORT-GI-40][MAX-AMSDU-7935][DSSS_CCK-40] echo "wpa_key_mgmt=WPA-PSK" >> ~/hostapd.conf
#ieee80211d=1 echo "wpa_pairwise=TKIP" >> ~/hostapd.conf
ieee80211n=1 echo "wpa_passphrase=$WPA_SECRET" >> ~/hostapd.conf
ignore_broadcast_ssid=0 echo "ssid=$AP_SSID-wpa" >> ~/hostapd.conf
logger_stdout=-1 ;;
logger_stdout_level=2 "wpa2")
logger_syslog=-1 echo "Setting up wpa2"
logger_syslog_level=2 echo "wpa=2" >> ~/hostapd.conf
macaddr_acl=0 # echo "wpa_key_mgmt=WPA-PSK" >> ~/hostapd.conf
max_num_sta=255 echo "wpa_pairwise=CCMP" >> ~/hostapd.conf
rts_threshold=2347 echo "rsn_pairwise=CCMP" >> ~/hostapd.conf
wmm_ac_be_acm=0 echo "wpa_passphrase=$WPA_SECRET" >> ~/hostapd.conf
wmm_ac_be_aifs=3 echo "ssid=$AP_SSID-wpa2" >> ~/hostapd.conf
wmm_ac_be_cwmax=10 ;;
wmm_ac_be_cwmin=4 "wep")
wmm_ac_be_txop_limit=0 echo "Setting up wep"
wmm_ac_bk_acm=0 echo "wep_default_key=0" >> ~/hostapd.conf
wmm_ac_bk_aifs=7 echo "wep_key0=$WEP_SECRET" >> ~/hostapd.conf
wmm_ac_bk_cwmax=10 echo "ssid=$AP_SSID-wep" >> ~/hostapd.conf
wmm_ac_bk_cwmin=4 ;;
wmm_ac_bk_txop_limit=0 "none")
wmm_ac_vi_acm=0 echo "No encryption"
wmm_ac_vi_aifs=2 echo "ssid=$AP_SSID" >> ~/hostapd.conf
wmm_ac_vi_cwmax=4 ;;
wmm_ac_vi_cwmin=3 *)
wmm_ac_vi_txop_limit=94 echo "Improper value for encryption"
wmm_ac_vo_acm=0 exit 1
wmm_ac_vo_aifs=2 ;;
wmm_ac_vo_cwmax=3 esac
wmm_ac_vo_cwmin=2 # echo "ssid=$AP_SSID" >> ~/hostapd.conf
wmm_ac_vo_txop_limit=47 echo "beacon_int=100" >> ~/hostapd.conf
wmm_enabled=1 echo "dtim_period=2" >> ~/hostapd.conf
EOF echo "max_num_sta=20" >> ~/hostapd.conf
echo "interface=$NET_AP" >> ~/hostapd.conf echo "rts_threshold=2347" >> ~/hostapd.conf
echo "ssid=$AP_SSID" >> ~/hostapd.conf echo "fragm_threshold=2346" >> ~/hostapd.conf
echo "driver=$DRIVER" >> ~/hostapd.conf echo "preamble=1" >> ~/hostapd.conf
echo "hw_mode=g" >> ~/hostapd.conf echo "macaddr_acl=0" >> ~/hostapd.conf
echo "channel=$AP_CHANNEL" >> ~/hostapd.conf echo "auth_algs=1" >> ~/hostapd.conf
echo "wpa=$ENCRYPT_MODE" >> ~/hostapd.conf echo "ignore_broadcast_ssid=0" >> ~/hostapd.conf
echo "wpa_key_mgmt=WPA-PSK" >> ~/hostapd.conf echo "wmm_enabled=1" >> ~/hostapd.conf
echo "wpa_pairwise=TKIP CCMP" >> ~/hostapd.conf echo "wmm_ac_bk_cwmin=4" >> ~/hostapd.conf
echo "rsn_pairwise=CCMP" >> ~/hostapd.conf echo "wmm_ac_bk_cwmax=10" >> ~/hostapd.conf
echo "wpa_passphrase=$WPA_SECRET" >> ~/hostapd.conf echo "wmm_ac_bk_aifs=7" >> ~/hostapd.conf
# Enable packet forwarding echo "wmm_ac_bk_txop_limit=0" >> ~/hostapd.conf
echo 1 > /proc/sys/net/ipv4/ip_forward echo "wmm_ac_bk_acm=0" >> ~/hostapd.conf
echo "wmm_ac_be_aifs=3" >> ~/hostapd.conf
echo "wmm_ac_be_cwmin=4" >> ~/hostapd.conf
echo "wmm_ac_be_cwmax=10" >> ~/hostapd.conf
echo "wmm_ac_be_txop_limit=0" >> ~/hostapd.conf
echo "wmm_ac_be_acm=0" >> ~/hostapd.conf
echo "wmm_ac_vi_aifs=2" >> ~/hostapd.conf
echo "wmm_ac_vi_cwmin=3" >> ~/hostapd.conf
echo "wmm_ac_vi_cwmax=4" >> ~/hostapd.conf
echo "wmm_ac_vi_txop_limit=94" >> ~/hostapd.conf
echo "wmm_ac_vi_acm=0" >> ~/hostapd.conf
echo "wmm_ac_vo_aifs=2" >> ~/hostapd.conf
echo "wmm_ac_vo_cwmin=2" >> ~/hostapd.conf
echo "wmm_ac_vo_cwmax=3" >> ~/hostapd.conf
echo "wmm_ac_vo_txop_limit=47" >> ~/hostapd.conf
echo "wmm_ac_vo_acm=0" >> ~/hostapd.conf
#echo "ieee80211n=1" >> ~/hostapd.conf
#echo "ht_capab=[HT40+][SHORT-GI-40][DSSS_CCK-40]" >> ~/hostapd.conf
echo "logger_syslog=-1" >> ~/hostapd.conf
echo "logger_syslog_level=0" >> ~/hostapd.conf
echo "logger_stdout=-1" >> ~/hostapd.conf
echo "logger_stdout_level=0" >> ~/hostapd.conf
echo "ctrl_interface=/var/run/hostapd" >> ~/hostapd.conf
echo "ctrl_interface_group=0" >> ~/hostapd.conf
# Bring up hostapd # Bring up hostapd
$HOSTAPD -dd -B ~/hostapd.conf $HOSTAPD $OPT -B -dd ~/hostapd.conf
;; ;;
stop) stop)
echo "Stopping AP mode" echo "Stopping AP mode"
# Stop hostapd and dhcpd daemons # Stop hostapd and dhcpd daemons
killall hostapd killproc hostapd
killall dhcpd killproc dhcpd
rm -f ~/hostapd.conf # rm -f ~/hostapd.conf
rm -f ~/dhcpd.conf rm -f ~/dhcpd.conf
;; ;;
esac esac

View file

@ -1235,18 +1235,18 @@ enum ieee80211_state {
#define PORT_FMT "%u" #define PORT_FMT "%u"
#define PORT_ARG(x) ntohs(*((__be16 *)(x))) #define PORT_ARG(x) ntohs(*((__be16 *)(x)))
extern __inline int is_multicast_mac_addr(const u8 *addr) static inline int is_multicast_mac_addr(const u8 *addr)
{ {
return (addr[0] != 0xff) && (0x01 & addr[0]); return (addr[0] != 0xff) && (0x01 & addr[0]);
} }
extern __inline int is_broadcast_mac_addr(const u8 *addr) static inline int is_broadcast_mac_addr(const u8 *addr)
{ {
return ((addr[0] == 0xff) && (addr[1] == 0xff) && (addr[2] == 0xff) && \ return ((addr[0] == 0xff) && (addr[1] == 0xff) && (addr[2] == 0xff) && \
(addr[3] == 0xff) && (addr[4] == 0xff) && (addr[5] == 0xff)); (addr[3] == 0xff) && (addr[4] == 0xff) && (addr[5] == 0xff));
} }
extern __inline int is_zero_mac_addr(const u8 *addr) static inline int is_zero_mac_addr(const u8 *addr)
{ {
return ((addr[0] == 0x00) && (addr[1] == 0x00) && (addr[2] == 0x00) && \ return ((addr[0] == 0x00) && (addr[1] == 0x00) && (addr[2] == 0x00) && \
(addr[3] == 0x00) && (addr[4] == 0x00) && (addr[5] == 0x00)); (addr[3] == 0x00) && (addr[4] == 0x00) && (addr[5] == 0x00));