• Alexander Aring's avatar
    mac802154: set filter at drv_start() · ac8037c3
    Alexander Aring authored
    The current filtering level is set on the first interface up on a wpan
    phy. If we support scan functionality we need to change the filtering
    level on the fly on an operational phy and switching back again.
    
    This patch will move the receive mode parameter e.g. address filter and
    promiscuous mode to the drv_start() functionality to allow changing the
    receive mode on an operational phy not on first ifup only. In future this
    should be handled on driver layer because each hardware has it's own way
    to enter a specific filtering level. However this should offer to switch
    to mode IEEE802154_FILTERING_NONE and back to
    IEEE802154_FILTERING_4_FRAME_FIELDS.
    
    Only IEEE802154_FILTERING_4_FRAME_FIELDS and IEEE802154_FILTERING_NONE
    are somewhat supported by current hardware. All other filtering levels
    can be supported in future but will end in IEEE802154_FILTERING_NONE as
    the receive part can kind of "emulate" those receive paths by doing
    additional filtering routines.
    
    There are in total three filtering levels in the code:
    - the per-interface default level (should not be changed)
    - the required per-interface level (mac commands may play with it)
    - the actual per-PHY (hw) level that is currently in use
    Signed-off-by: default avatarAlexander Aring <aahringo@redhat.com>
    [<miquel.raynal@bootlin.com: Add the third filtering variable]
    Signed-off-by: default avatarMiquel Raynal <miquel.raynal@bootlin.com>
    Link: https://lore.kernel.org/r/20221007085310.503366-4-miquel.raynal@bootlin.comSigned-off-by: default avatarStefan Schmidt <stefan@datenfreihafen.org>
    ac8037c3
iface.c 18.9 KB