Page MenuHomeFreeBSD

if_clone: Make ifnet_detach_sxlock opaque to consumers
ClosedPublic

Authored by zlei on Wed, Apr 8, 2:46 AM.
Tags
None
Referenced Files
Unknown Object (File)
Tue, Apr 14, 4:55 PM
Unknown Object (File)
Sun, Apr 12, 9:14 PM
Unknown Object (File)
Sat, Apr 11, 5:56 PM
Unknown Object (File)
Thu, Apr 9, 8:03 PM

Details

Summary

The change e133271fc1b5e introduced ifnet_detach_sxlock, and change
6d2a10d96fb5 widened its coverage, but there are still consumers,
net80211 and tuntap e.g., want it. Instead of sprinkling it everywhere,
make it opaque to consumers.

Out of tree drivers shall also benefit from this change.

MFC after: 2 weeks

Test Plan

Run the clone regression test suite.

# cd /usr/tests
# kyua test sys/net/if_clone_test
sys/net/if_clone_test:epair_destroy_race  ->  passed  [2.754s]
sys/net/if_clone_test:epair_ipv6_up_stress  ->  passed  [10.016s]
sys/net/if_clone_test:epair_stress  ->  passed  [10.015s]
sys/net/if_clone_test:epair_up_stress  ->  passed  [10.015s]
sys/net/if_clone_test:faith_ipv6_up_stress  ->  passed  [10.041s]
sys/net/if_clone_test:faith_stress  ->  passed  [10.106s]
sys/net/if_clone_test:faith_up_stress  ->  passed  [10.040s]
sys/net/if_clone_test:gif_ipv6_up_stress  ->  passed  [10.038s]
sys/net/if_clone_test:gif_stress  ->  passed  [10.015s]
sys/net/if_clone_test:gif_up_stress  ->  passed  [10.014s]
sys/net/if_clone_test:lo_ipv6_up_stress  ->  passed  [10.014s]
sys/net/if_clone_test:lo_stress  ->  passed  [10.014s]
sys/net/if_clone_test:lo_up_stress  ->  passed  [10.015s]
sys/net/if_clone_test:tap_ipv6_up_stress  ->  skipped: Quickly panics: if_delmulti_locked: inconsistent ifp 0xfffff80150e44000  [0.009s]
sys/net/if_clone_test:tap_stress  ->  passed  [10.013s]
sys/net/if_clone_test:tap_up_stress  ->  passed  [10.014s]
sys/net/if_clone_test:tun_ipv6_up_stress  ->  passed  [10.014s]
sys/net/if_clone_test:tun_stress  ->  passed  [10.014s]
sys/net/if_clone_test:tun_up_stress  ->  passed  [10.014s]
sys/net/if_clone_test:vlan_ipv6_up_stress  ->  passed  [10.013s]
sys/net/if_clone_test:vlan_stress  ->  passed  [10.013s]
sys/net/if_clone_test:vlan_up_stress  ->  passed  [10.014s]
sys/net/if_clone_test:vmnet_ipv6_up_stress  ->  passed  [10.014s]
sys/net/if_clone_test:vmnet_stress  ->  passed  [10.014s]
sys/net/if_clone_test:vmnet_up_stress  ->  passed  [10.015s]

Results file id is usr_tests.20260408-031238-030721
Results saved to /root/.kyua/store/results.usr_tests.20260408-031238-030721.db

24/25 passed (0 broken, 0 failed, 1 skipped)

Test with wireless usb nic,

# ifconfig wlan create wlandev rtwn0 
wlan0
# ifconfig wlan0 destroy

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable