Bug 236623 - [rtwn_usb] [net80211] rsync causes wlan link state down via IPv6
Summary: [rtwn_usb] [net80211] rsync causes wlan link state down via IPv6
Status: New
Alias: None
Product: Base System
Classification: Unclassified
Component: wireless (show other bugs)
Version: 12.0-RELEASE
Hardware: amd64 Any
: --- Affects Only Me
Assignee: freebsd-wireless (Nobody)
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2019-03-19 00:01 UTC by mr_beaner_2003
Modified: 2019-04-04 22:12 UTC (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description mr_beaner_2003 2019-03-19 00:01:24 UTC
I occasionally use rsync to transfer folders/files; however, it seems to cause the wlan interface to go down.

I performed the same action, forcing IPv4, and it did not replicate the issue.

Mar 18 17:01:55 localhost wpa_supplicant[37136]: wlan0: CTRL-EVENT-DISCONNECTED bssid=82:2a:a8:ab:cd:ef reason=0
Mar 18 17:01:55 localhost kernel: wlan0: link state changed to DOWN
Mar 18 17:01:55 localhost kernel: rtwn0: 
Mar 18 17:01:55 localhost kernel: ieee80211_crypto_encap returns NULL.
Mar 18 17:01:55 localhost kernel: .
Mar 18 17:01:55 localhost syslogd: last message repeated 1 times
Mar 18 17:01:56 localhost syslogd: exiting on signal 15
Mar 18 17:41:28 localhost syslogd: kernel boot file is /boot/kernel/kernel

The work around is to perform an ACPI powerbutton off then powerbutton on.

% kldstat
Id Refs Address                Size Name
 1   25 0xffffffff80200000  243cd00 kernel
 2    1 0xffffffff8263d000     82a0 if_tap.ko
 3    1 0xffffffff82646000    1c930 if_rtwn_usb.ko
 4    2 0xffffffff82663000    23710 rtwn.ko
 5    1 0xffffffff82687000   3a9a10 zfs.ko
 6    2 0xffffffff82a31000     a4f0 opensolaris.ko
 7    1 0xffffffff82a3d000    566b8 pf.ko
 8    1 0xffffffff82c21000     6fb3 if_bridge.ko
 9    1 0xffffffff82c28000     4410 bridgestp.ko

% sudo usbconfig -d ugen4.2 dump_device_desc
ugen4.2: <Realtek Edimax AC1200 USB> at usbus4, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (500mA)

  bLength = 0x0012 
  bDescriptorType = 0x0001 
  bcdUSB = 0x0200 
  bDeviceClass = 0x0000  <Probed by interface class>
  bDeviceSubClass = 0x0000 
  bDeviceProtocol = 0x0000 
  bMaxPacketSize0 = 0x0040 
  idVendor = 0x7392 
  idProduct = 0xa822 
  bcdDevice = 0x0000 
  iManufacturer = 0x0001  <Realtek>
  iProduct = 0x0002  <Edimax AC1200 USB>
  iSerialNumber = 0x0003  <123456>
  bNumConfigurations = 0x0001 

% uname -a
FreeBSD localhost 12.0-RELEASE-p3 FreeBSD 12.0-RELEASE-p3 GENERIC  amd64
Comment 1 Andriy Voskoboinyk freebsd_committer freebsd_triage 2019-03-19 09:11:32 UTC
Is there some changes after

1) ifconfig wlan0 -rxcsum -rxcsum6
2) kenv dev.rtwn.0.hwcrypto=0 && kldunload if_rtwn_usb && kldload if_rtwn_usb
?The work around is to perform an ACPI powerbutton off then powerbutton on.

> The work around is to perform an ACPI powerbutton off then powerbutton on.

kldunload if_rtwn_usb && kldload if_rtwn_usb ?
(the last part is only needed if you don't have devd(8) running).
Comment 2 mr_beaner_2003 2019-03-29 17:10:35 UTC
devd(8) is running.

Mar 28 14:46:08 localhost syslogd: kernel boot file is /boot/kernel/kernel
Mar 28 14:46:08 localhost kernel: rtwn0 on uhub3
Mar 28 14:46:08 localhost kernel: rtwn0: <Realtek Edimax AC1200 USB, class 0/0, rev 2.00/0.00, addr 2> on usbus4
Mar 28 14:46:08 localhost kernel: rtwn0: MAC/BB RTL8812AU, RF 6052 2T2R
Mar 28 14:49:38 localhost reboot[51260]: rebooted by root
Mar 28 14:52:13 localhost syslogd: kernel boot file is /boot/kernel/kernel
Mar 28 14:52:13 localhost kernel: rtwn0 on uhub1
Mar 28 14:52:13 localhost kernel: rtwn0: <Realtek Edimax AC1200 USB, class 0/0, rev 2.00/0.00, addr 2> on usbus4
Mar 28 14:52:13 localhost kernel: rtwn0: MAC/BB RTL8812AU, RF 6052 2T2R
Mar 29 10:58:33 localhost kernel: rtwn0: 
Mar 29 10:58:34 localhost kernel: rtwn0: ieee80211_crypto_encap returns NULL.
Mar 29 10:58:34 localhost kernel: rtwn0: 
Mar 29 10:58:34 localhost kernel: rtwn0: ieee80211_crypto_encap returns NULL.
Mar 29 11:01:42 localhost syslogd: kernel boot file is /boot/kernel/kernel
Mar 29 11:01:42 localhost kernel: rtwn0 on uhub0
Mar 29 11:01:42 localhost kernel: rtwn0: <Realtek Edimax AC1200 USB, class 0/0, rev 2.00/0.00, addr 2> on usbus4
Mar 29 11:01:42 localhost kernel: rtwn0: MAC/BB RTL8812AU, RF 6052 2T2R

I've disabled rxcsum for both IP and IPv6, to no avail. Step #2 doesn't seem to do anything; I'd need to add 'dev.rtwn.0.hwcrypto=0' to /boot/loader.conf because the OID is only tunable at boot, otherwise it's RO.
Comment 3 Andriy Voskoboinyk freebsd_committer freebsd_triage 2019-03-29 21:21:09 UTC
I don't think that it's rtwn_usb(4) issue. The card - probably - at least, I don't know about the opposite - isn't aware about IPv6 and / or IPv4. However,  it can validate checksums (and -rxcsum[6] may reveal the issue) and cannot inspect frame contents when software encryption is used (dev.rtwn.0.hwcrypto=0).

If you cannot reproduce with the latter (actually, it implicitly implies -rxcsum -rxcsum6) then this issue should be reassigned to the net@ team.
Comment 4 Andriy Voskoboinyk freebsd_committer freebsd_triage 2019-03-29 21:23:56 UTC
Oops, wrong statement: if you *still* can reproduce the issue - then ifnet(9) or net80211 should be inspected instead.
Comment 5 mr_beaner_2003 2019-04-04 22:12:30 UTC
I could not repeat the issue after disabling hwcrypto.

%
% grep rtwn /boot/loader.conf
if_rtwn_usb_load="YES"
dev.rtwn.0.hwcrypto=0
%
% sysctl dev.rtwn.0
dev.rtwn.0.rx_buf_size: 24
dev.rtwn.0.ratectl_selected: 1
dev.rtwn.0.ratectl: 1
dev.rtwn.0.hwcrypto: 0
dev.rtwn.0.debug: 0
dev.rtwn.0.ht40: 0
dev.rtwn.0.%parent: uhub2
dev.rtwn.0.%pnpinfo: vendor=0x7392 product=0xa822 devclass=0x00 devsubclass=0x00 devproto=0x00 sernum="123456" release=0x0000 mode=host intclass=0xff intsubclass=0xff intprotocol=0xff
dev.rtwn.0.%location: bus=4 hubaddr=1 port=2 devaddr=2 interface=0 ugen=ugen4.2
dev.rtwn.0.%driver: rtwn
dev.rtwn.0.%desc: Realtek Edimax AC1200 USB, class 0/0, rev 2.00/0.00, addr 2
%
% rsync -6avz --progress --delete /usr/home/streams matt@remotehost:/media/usb/localhost/