• Saeed Mahameed's avatar
    net/mlx5: EQ, Introduce atomic notifier chain subscription API · 0f597ed4
    Saeed Mahameed authored
    Use atomic_notifier_chain to fire firmware events at internal mlx5 core
    components such as eswitch/fpga/clock/FW tracer/etc.., this is to
    avoid explicit calls from low level mlx5_core to upper components and to
    simplify the mlx5_core API for future developments.
    
    Simply provide register/unregister notifiers API and call the notifier
    chain on firmware async events.
    
    Example: to subscribe to a FW event:
    struct mlx5_nb port_event;
    
    MLX5_NB_INIT(&port_event, port_event_handler, PORT_CHANGE);
    mlx5_eq_notifier_register(mdev, &port_event);
    
    where:
     - port_event_handler is the notifier block callback.
     - PORT_EVENT is the suffix of MLX5_EVENT_TYPE_PORT_CHANGE.
    
    The above will guarantee that port_event_handler will receive all FW
    events of the type MLX5_EVENT_TYPE_PORT_CHANGE.
    
    To receive all FW/HW events one can subscribe to
    MLX5_EVENT_TYPE_NOTIFY_ANY.
    
    The next few patches will start moving all mlx5 core components to use
    this new API and cleanup mlx5_eq_async_int misx handler from component
    explicit calls and specific logic.
    Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
    0f597ed4
eq.h 3.16 KB