Date: Sun, 25 May 2025 15:24:27 GMT From: Adrian Chadd <adrian@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: git: a278d11a60e0 - main - net80211: refactor out ifp->if_broadcastaddr into ieee80211_freebsd.c Message-ID: <202505251524.54PFORu8031869@gitrepo.freebsd.org>
next in thread | raw e-mail | index | archive | help
The branch main has been updated by adrian: URL: https://cgit.FreeBSD.org/src/commit/?id=a278d11a60e05d62ab91a6fe0fc3aedbee2bb295 commit a278d11a60e05d62ab91a6fe0fc3aedbee2bb295 Author: Adrian Chadd <adrian@FreeBSD.org> AuthorDate: 2025-05-18 04:44:29 +0000 Commit: Adrian Chadd <adrian@FreeBSD.org> CommitDate: 2025-05-25 15:23:55 +0000 net80211: refactor out ifp->if_broadcastaddr into ieee80211_freebsd.c * create ieee80211_vap_get_broadcast_address() to fetch the broadcast MAC address for the given VAP * refactor references to ifp->if_broadcastaddr -> ieee80211_vap_get_broadcast_address() Differential Revision: https://reviews.freebsd.org/D50406 Reviewed by: bz --- sys/net80211/ieee80211_adhoc.c | 3 ++- sys/net80211/ieee80211_freebsd.c | 12 ++++++++++++ sys/net80211/ieee80211_freebsd.h | 1 + sys/net80211/ieee80211_hostap.c | 9 +++++---- sys/net80211/ieee80211_ioctl.c | 6 ++++-- sys/net80211/ieee80211_output.c | 4 ++-- sys/net80211/ieee80211_scan_sw.c | 11 ++++++----- sys/net80211/ieee80211_wds.c | 3 ++- 8 files changed, 34 insertions(+), 15 deletions(-) diff --git a/sys/net80211/ieee80211_adhoc.c b/sys/net80211/ieee80211_adhoc.c index 210c9fc75bd9..5f5642884726 100644 --- a/sys/net80211/ieee80211_adhoc.c +++ b/sys/net80211/ieee80211_adhoc.c @@ -395,7 +395,8 @@ adhoc_input(struct ieee80211_node *ni, struct mbuf *m, (subtype == IEEE80211_FC0_SUBTYPE_BEACON || subtype == IEEE80211_FC0_SUBTYPE_PROBE_RESP)) && !IEEE80211_ADDR_EQ(bssid, vap->iv_bss->ni_bssid) && - !IEEE80211_ADDR_EQ(bssid, ifp->if_broadcastaddr)) { + !IEEE80211_ADDR_EQ(bssid, + ieee80211_vap_get_broadcast_address(vap))) { /* not interested in */ IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_INPUT, bssid, NULL, "%s", "not to bss"); diff --git a/sys/net80211/ieee80211_freebsd.c b/sys/net80211/ieee80211_freebsd.c index aa3ae82d089f..d0aa47859a3a 100644 --- a/sys/net80211/ieee80211_freebsd.c +++ b/sys/net80211/ieee80211_freebsd.c @@ -1314,6 +1314,18 @@ ieee80211_vap_ifp_set_running_state(struct ieee80211vap *vap, bool state) if_setdrvflagbits(vap->iv_ifp, 0, IFF_DRV_RUNNING); } +/** + * @brief Return the broadcast MAC address. + * + * @param vap The current VAP + * @retval a uint8_t array representing the ethernet broadcast address + */ +const uint8_t * +ieee80211_vap_get_broadcast_address(struct ieee80211vap *vap) +{ + return (if_getbroadcastaddr(vap->iv_ifp)); +} + /* * Module glue. * diff --git a/sys/net80211/ieee80211_freebsd.h b/sys/net80211/ieee80211_freebsd.h index 449ff8f05202..5afc093ba90c 100644 --- a/sys/net80211/ieee80211_freebsd.h +++ b/sys/net80211/ieee80211_freebsd.h @@ -547,6 +547,7 @@ bool ieee80211_vap_ifp_check_is_monitor(struct ieee80211vap *); bool ieee80211_vap_ifp_check_is_simplex(struct ieee80211vap *); bool ieee80211_vap_ifp_check_is_running(struct ieee80211vap *); void ieee80211_vap_ifp_set_running_state(struct ieee80211vap *, bool); +const uint8_t * ieee80211_vap_get_broadcast_address(struct ieee80211vap *); #endif /* _KERNEL */ diff --git a/sys/net80211/ieee80211_hostap.c b/sys/net80211/ieee80211_hostap.c index e9105f2e7505..1b246c428411 100644 --- a/sys/net80211/ieee80211_hostap.c +++ b/sys/net80211/ieee80211_hostap.c @@ -557,9 +557,10 @@ hostap_input(struct ieee80211_node *ni, struct mbuf *m, * Validate the bssid. */ if (!(type == IEEE80211_FC0_TYPE_MGT && - subtype == IEEE80211_FC0_SUBTYPE_BEACON) && + subtype == IEEE80211_FC0_SUBTYPE_BEACON) && !IEEE80211_ADDR_EQ(bssid, vap->iv_bss->ni_bssid) && - !IEEE80211_ADDR_EQ(bssid, ifp->if_broadcastaddr)) { + !IEEE80211_ADDR_EQ(bssid, + ieee80211_vap_get_broadcast_address(vap))) { /* not interested in */ IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_INPUT, bssid, NULL, "%s", "not to bss"); @@ -1654,7 +1655,6 @@ static void ieee80211_deliver_l2uf(struct ieee80211_node *ni) { struct ieee80211vap *vap = ni->ni_vap; - struct ifnet *ifp = vap->iv_ifp; struct mbuf *m; struct l2_update_frame *l2uf; struct ether_header *eh; @@ -1669,7 +1669,8 @@ ieee80211_deliver_l2uf(struct ieee80211_node *ni) l2uf = mtod(m, struct l2_update_frame *); eh = &l2uf->eh; /* dst: Broadcast address */ - IEEE80211_ADDR_COPY(eh->ether_dhost, ifp->if_broadcastaddr); + IEEE80211_ADDR_COPY(eh->ether_dhost, + ieee80211_vap_get_broadcast_address(vap)); /* src: associated STA */ IEEE80211_ADDR_COPY(eh->ether_shost, ni->ni_macaddr); eh->ether_type = htons(sizeof(*l2uf) - sizeof(*eh)); diff --git a/sys/net80211/ieee80211_ioctl.c b/sys/net80211/ieee80211_ioctl.c index 7e698ba5cdb8..a72568e559aa 100644 --- a/sys/net80211/ieee80211_ioctl.c +++ b/sys/net80211/ieee80211_ioctl.c @@ -510,7 +510,8 @@ ieee80211_ioctl_getstainfo(struct ieee80211vap *vap, struct ieee80211req *ireq) error = copyin(ireq->i_data, macaddr, IEEE80211_ADDR_LEN); if (error != 0) return error; - if (IEEE80211_ADDR_EQ(macaddr, vap->iv_ifp->if_broadcastaddr)) { + if (IEEE80211_ADDR_EQ(macaddr, + ieee80211_vap_get_broadcast_address(vap))) { ni = NULL; } else { ni = ieee80211_find_vap_node(&vap->iv_ic->ic_sta, vap, macaddr); @@ -1371,7 +1372,8 @@ setmlme_dropsta(struct ieee80211vap *vap, int error = 0; /* NB: the broadcast address means do 'em all */ - if (!IEEE80211_ADDR_EQ(mac, vap->iv_ifp->if_broadcastaddr)) { + if (!IEEE80211_ADDR_EQ(mac, + ieee80211_vap_get_broadcast_address(vap))) { IEEE80211_NODE_LOCK(nt); ni = ieee80211_find_node_locked(nt, mac); IEEE80211_NODE_UNLOCK(nt); diff --git a/sys/net80211/ieee80211_output.c b/sys/net80211/ieee80211_output.c index 1b5b3373685f..9466b4851881 100644 --- a/sys/net80211/ieee80211_output.c +++ b/sys/net80211/ieee80211_output.c @@ -3659,7 +3659,6 @@ ieee80211_beacon_alloc(struct ieee80211_node *ni) { struct ieee80211vap *vap = ni->ni_vap; struct ieee80211com *ic = ni->ni_ic; - struct ifnet *ifp = vap->iv_ifp; struct ieee80211_frame *wh; struct mbuf *m; int pktlen; @@ -3761,7 +3760,8 @@ ieee80211_beacon_alloc(struct ieee80211_node *ni) IEEE80211_FC0_SUBTYPE_BEACON; wh->i_fc[1] = IEEE80211_FC1_DIR_NODS; *(uint16_t *)wh->i_dur = 0; - IEEE80211_ADDR_COPY(wh->i_addr1, ifp->if_broadcastaddr); + IEEE80211_ADDR_COPY(wh->i_addr1, + ieee80211_vap_get_broadcast_address(vap)); IEEE80211_ADDR_COPY(wh->i_addr2, vap->iv_myaddr); IEEE80211_ADDR_COPY(wh->i_addr3, ni->ni_bssid); *(uint16_t *)wh->i_seq = 0; diff --git a/sys/net80211/ieee80211_scan_sw.c b/sys/net80211/ieee80211_scan_sw.c index e1d6b2779cf0..f64730ce852f 100644 --- a/sys/net80211/ieee80211_scan_sw.c +++ b/sys/net80211/ieee80211_scan_sw.c @@ -526,7 +526,6 @@ ieee80211_swscan_probe_curchan(struct ieee80211vap *vap, bool force __unused) { struct ieee80211com *ic = vap->iv_ic; struct ieee80211_scan_state *ss = ic->ic_scan; - struct ifnet *ifp = vap->iv_ifp; int i; /* @@ -542,13 +541,15 @@ ieee80211_swscan_probe_curchan(struct ieee80211vap *vap, bool force __unused) */ for (i = 0; i < ss->ss_nssid; i++) ieee80211_send_probereq(vap->iv_bss, - vap->iv_myaddr, ifp->if_broadcastaddr, - ifp->if_broadcastaddr, + vap->iv_myaddr, + ieee80211_vap_get_broadcast_address(vap), + ieee80211_vap_get_broadcast_address(vap), ss->ss_ssid[i].ssid, ss->ss_ssid[i].len); if ((ss->ss_flags & IEEE80211_SCAN_NOBCAST) == 0) ieee80211_send_probereq(vap->iv_bss, - vap->iv_myaddr, ifp->if_broadcastaddr, - ifp->if_broadcastaddr, + vap->iv_myaddr, + ieee80211_vap_get_broadcast_address(vap), + ieee80211_vap_get_broadcast_address(vap), "", 0); } diff --git a/sys/net80211/ieee80211_wds.c b/sys/net80211/ieee80211_wds.c index 19827e78706a..0bb9271693db 100644 --- a/sys/net80211/ieee80211_wds.c +++ b/sys/net80211/ieee80211_wds.c @@ -487,7 +487,8 @@ wds_input(struct ieee80211_node *ni, struct mbuf *m, } /* NB: the TA is implicitly verified by finding the wds peer node */ if (!IEEE80211_ADDR_EQ(wh->i_addr1, vap->iv_myaddr) && - !IEEE80211_ADDR_EQ(wh->i_addr1, ifp->if_broadcastaddr)) { + !IEEE80211_ADDR_EQ(wh->i_addr1, + ieee80211_vap_get_broadcast_address(vap))) { /* not interested in */ IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_INPUT, wh->i_addr1, NULL, "%s", "not to bss");
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202505251524.54PFORu8031869>