Module Name: src Committed By: riastradh Date: Mon Aug 31 20:33:58 UTC 2020
Modified Files: src/sys/net: if_wg.c Log Message: wg: Simplify locking. Summary: Access to a stable established session is still allowed via psref; all other access to peer and session state is now serialized by struct wg_peer::wgp_lock, with no dancing around a per-session lock. This way, the handshake paths are locked, while the data transmission paths are pserialized. - Eliminate struct wg_session::wgs_lock. - Eliminate wg_get_unstable_session -- access to the unstable session is allowed only with struct wgp_peer::wgp_lock held. - Push INIT_PASSIVE->ESTABLISHED transition down into a thread task. - Push rekey down into a thread task. - Allocate session indices only on transition from UNKNOWN and free them only on transition back to UNKNOWN. - Be a little more explicit about allowed state transitions, and reject some nonsensical ones. - Sprinkle assertions and comments. - Reduce atomic r/m/w swap operations that can just as well be store-release. To generate a diff of this commit: cvs rdiff -u -r1.48 -r1.49 src/sys/net/if_wg.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.