• Petr Pavlu's avatar
    mlx4: Use 'void *' as the event param of mlx4_dispatch_event() · 7ba189ac
    Petr Pavlu authored
    Function mlx4_dispatch_event() takes an 'unsigned long' as its event
    parameter. The actual value is none (MLX4_DEV_EVENT_CATASTROPHIC_ERROR),
    a pointer to mlx4_eqe (MLX4_DEV_EVENT_PORT_MGMT_CHANGE), or a 32-bit
    integer (remaining events).
    
    In preparation to switch mlx4_en and mlx4_ib to be an auxiliary device,
    the mlx4_interface.event callback is replaced with a notifier and
    function mlx4_dispatch_event() gets updated to invoke
    atomic_notifier_call_chain(). This requires forwarding the input 'param'
    value from the former function to the latter. A problem is that the
    notifier call takes 'void *' as its 'param' value, compared to
    'unsigned long' used by mlx4_dispatch_event(). Re-passing the value
    would need either punning it to 'void *' or passing down the address of
    the input 'param'. Both approaches create a number of unnecessary casts.
    
    Change instead the input 'param' of mlx4_dispatch_event() from
    'unsigned long' to 'void *'. A mlx4_eqe pointer can be passed directly,
    callers using an int value are adjusted to pass its address.
    Signed-off-by: default avatarPetr Pavlu <petr.pavlu@suse.com>
    Reviewed-by: default avatarLeon Romanovsky <leonro@nvidia.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    7ba189ac
cmd.c 91.1 KB