[PATCH v2 2/3] AP: Always re-add stations that use MLO
Benjamin Berg
benjamin at sipsolutions.net
Fri Jan 30 04:02:25 PST 2026
Hi,
On Thu, 2026-01-29 at 22:56 +0530, Rameshkumar Sundaram wrote:
> On 1/29/2026 3:38 PM, Benjamin Berg wrote:
> > [SNIP]
> > That said, to properly fix this we need an nl80211/mac80211 API that
> > permits us to disable address translation for the frame. Otherwise we
> > would still get the address translated to the old link address should
> > the new link address match the MLD address.
> >
>
> That's true—even probe responses get translated when the old link
> address matches the new link MLD address.
>
> Few other cases I encountered:
> Consider an ML STA with ML address M associated with link A and link B,
> using link addresses X and Y respectively. If the STA sends an
> authentication frame with address Y on link A, it gets translated to M
> (even though link A has no STA with address Y) and forwarded to link B.
> As a result, hostapd is unaware of the actual TA and queues the
> authentication reply to the MLD address on link B. This frame will
> eventually be transmitted over the air on link B with address Y.
Honestly, that type of link confusion seems like a bug. We should be
able to avoid that as we hopefully know on which link the frame was
received.
> This will be true even if STA associated in one link and tries to roam
> to other link of MLD using same link and ML addresses.
>
> There also cases where an ML STA roams/re-associates as legacy (non-ML)
> STA with ML address as link address. The reply would go out with old
> link address.
Yes, I think that case is similar a station using its MLD Address on
the association link and returning on another link.
> It seems that address translation at the driver/mac80211 level for
> management frames could be avoided for both TX and RX, allowing hostapd
> to handle these frames and their replies more efficiently in cases of
> roaming and address reuse.
Doing address translation in the TX path is required if the
hardware/driver should decide on which link to TX the frame. For RX, it
seems sensible to me to do the translation when it is possible.
I talked a bit to Johannes about this today, and my current proposal
would be add a new flag that is set when mac80211 did not find (RX) or
should not use (TX) a STA for the frame.
More specifically I think that we could:
* Fix the link address based STA lookup to only work when the frame
was received on the correct link (the bug from above).
* Make sure we drop robust management frames without a STA as we do
not want to get into trouble with the next change.
* Change ieee80211_rx_for_interface so that it uses only
link_sta_info_get_bss if we are an MLD and sta_info_get_bss
otherwise.
Right now, we will find the station if we see the MLD Address in the
frame even when it is not a valid link address.
* Add a new nl80211 attribute NL80211_ATTR_FRAME_NO_STA to be used
together with NL80211_CMD_FRAME for both TX and RX.
- In the RX case, add the attribute if we have no station. If the
attribute does not exist, then hostapd should assume the address was
translated.
- In the TX case, plumb the information through to mac80211 and avoid
doing a station lookup based on the address.
I think this would be enough to then solve the problem in hostapd.
Benjamin
More information about the Hostap
mailing list