• Felix Fietkau's avatar
    wifi: mac80211: mesh fast xmit support · d5edb9ae
    Felix Fietkau authored
    Previously, fast xmit only worked on interface types where initially a
    sta lookup is performed, and a cached header can be attached to the sta,
    requiring only some fields to be updated at runtime.
    
    This technique is not directly applicable for a mesh device type due
    to the dynamic nature of the topology and protocol. There are more
    addresses that need to be filled, and there is an extra header with a
    dynamic length based on the addressing mode.
    
    Change the code to cache entries contain a copy of the mesh subframe header +
    bridge tunnel header, as well as an embedded struct ieee80211_fast_tx, which
    contains the information for building the 802.11 header.
    
    Add a mesh specific early fast xmit call, which looks up a cached entry and
    adds only the mesh subframe header, before passing it over to the generic
    fast xmit code.
    
    To ensure the changes in network are reflected in these cached headers,
    flush affected cached entries on path changes, as well as other conditions
    that currently trigger a fast xmit check in other modes (key changes etc.)
    
    This code is loosely based on a previous implementation by:
    Sriram R <quic_srirrama@quicinc.com>
    
    Cc: Sriram R <quic_srirrama@quicinc.com>
    Signed-off-by: default avatarRyder Lee <ryder.lee@mediatek.com>
    Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
    Link: https://lore.kernel.org/r/20230314095956.62085-4-nbd@nbd.nameSigned-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    d5edb9ae
tx.c 162 KB