On Mon, Aug 21, 2023 at 03:12:17PM +0200, Petr Pavlu wrote: > 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: Petr Pavlu <petr.pavlu@xxxxxxxx> > --- > drivers/infiniband/hw/mlx4/main.c | 14 ++++++++++---- > drivers/net/ethernet/mellanox/mlx4/catas.c | 2 +- > drivers/net/ethernet/mellanox/mlx4/cmd.c | 4 ++-- > drivers/net/ethernet/mellanox/mlx4/en_main.c | 17 +++++++++++++++-- > drivers/net/ethernet/mellanox/mlx4/eq.c | 15 ++++++++------- > drivers/net/ethernet/mellanox/mlx4/intf.c | 2 +- > drivers/net/ethernet/mellanox/mlx4/mlx4.h | 2 +- > include/linux/mlx4/driver.h | 2 +- > 8 files changed, 39 insertions(+), 19 deletions(-) > Thanks, Reviewed-by: Leon Romanovsky <leonro@xxxxxxxxxx>