• Vladimir Oltean's avatar
    net: dsa: felix: reimplement tagging protocol change with function pointers · 7a29d220
    Vladimir Oltean authored
    The error handling for the current tagging protocol change procedure is
    a bit brittle (we dismantle the previous tagging protocol entirely
    before setting up the new one). By identifying which parts of a tagging
    protocol are unique to itself and which parts are shared with the other,
    we can implement a protocol change procedure where error handling is a
    bit more robust, because we start setting up the new protocol first, and
    tear down the old one only after the setup of the specific and shared
    parts succeeded.
    
    The protocol change is a bit too open-coded too, in the area of
    migrating host flood settings and MDBs. By identifying what differs
    between tagging protocols (the forwarding masks for host flooding) we
    can implement a more straightforward migration procedure which is
    handled in the shared portion of the protocol change, rather than
    individually by each protocol.
    
    Therefore, a more structured approach calls for the introduction of a
    structure of function pointers per tagging protocol. This covers setup,
    teardown and the host forwarding mask. In the future it will also cover
    how to prepare for a new DSA master.
    
    The initial tagging protocol setup (at driver probe time) and the final
    teardown (at driver removal time) are also adapted to call into the
    structured methods of the specific protocol in current use. This is
    especially relevant for teardown, where we previously called
    felix_del_tag_protocol() only for the first CPU port. But by not
    specifying which CPU port this is for, we gain more flexibility to
    support multiple CPU ports in the future.
    Signed-off-by: default avatarVladimir Oltean <vladimir.oltean@nxp.com>
    Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    7a29d220
felix.c 51.6 KB