Understanding ieee80211com channel members

From: Farhan Khan <farhan_at_farhan.codes>
Date: Sun, 13 Apr 2025 19:17:20 UTC
Hi all,

I am doing some research on how channels work on net80211 with a focus on how OpenBSD (and NetBSD/Illumos) differ from FreeBSD's stack. Keeping the question simple, I'm having trouble understanding how channel members in the ieee80211com structure map to each other:

FreeBSD has:
* ieee80211com -> ic_curchan
* ieee80211com -> ic_bsschan

OpenBSD has:
* ieee80211com -> ic_ibss_chan

Three Questions:

1)  Is FreeBSD's ic_bsschan the same as OpenBSD's ic_ibss_chan?

* Is there an equivalent in OpenBSD to FreeBSD's ic_curchan? Or is the "current state" tracked different in OpenBSD? (ie, optional, in the softc).

2) What level of maintenance of ic_curchan does the driver do? Is it upon a channel change? Or do we let net80211 handle that? OpenBSD's code seems to do this idiom a lot, which I understand as updating the current state (could be wrong):
c = ic->ic_bss->ni_chan = ic->ic_ibss_chan;

3) Were any channel members or mechanisms migrated to the VAP layer? If so, which?

(I apologize for a semi-OpenBSD question, but I figured it was close enough on topic)

Thank you,
--
Farhan Khan
PGP Fingerprint: 1312 89CE 663E 1EB2 179C 1C83 C41D 2281 F8DA C0DE