mlx5: Adjust events to use unsigned long param instead of void *
authorJack Morgenstein <jackm@dev.mellanox.co.il>
Mon, 28 Jul 2014 20:30:24 +0000 (23:30 +0300)
committerDavid S. Miller <davem@davemloft.net>
Wed, 30 Jul 2014 21:00:06 +0000 (14:00 -0700)
In the event flow, we currently pass only a port number in the
void *data argument.  Rather than pass a pointer to the event handlers,
we should use an "unsigned long" parameter, and pass the port number
value directly.

In the future, if necessary for some events, we can use the unsigned long
parameter to pass a pointer.

Based on a patch by Eli Cohen <eli@mellanox.com>

Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il>
Signed-off-by: Eli Cohen <eli@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/infiniband/hw/mlx5/main.c
drivers/net/ethernet/mellanox/mlx5/core/eq.c
drivers/net/ethernet/mellanox/mlx5/core/main.c
include/linux/mlx5/driver.h

index 166335a95c5996c7cca306c13127c7de96c78fcf..d8907b20522abcb8eb46b0266a8495523eb241f2 100644 (file)
@@ -905,7 +905,7 @@ static struct device_attribute *mlx5_class_attributes[] = {
 };
 
 static void mlx5_ib_event(struct mlx5_core_dev *dev, void *context,
-                         enum mlx5_dev_event event, void *data)
+                         enum mlx5_dev_event event, unsigned long param)
 {
        struct mlx5_ib_dev *ibdev = (struct mlx5_ib_dev *)context;
        struct ib_event ibev;
@@ -920,12 +920,12 @@ static void mlx5_ib_event(struct mlx5_core_dev *dev, void *context,
 
        case MLX5_DEV_EVENT_PORT_UP:
                ibev.event = IB_EVENT_PORT_ACTIVE;
-               port = *(u8 *)data;
+               port = (u8)param;
                break;
 
        case MLX5_DEV_EVENT_PORT_DOWN:
                ibev.event = IB_EVENT_PORT_ERR;
-               port = *(u8 *)data;
+               port = (u8)param;
                break;
 
        case MLX5_DEV_EVENT_PORT_INITIALIZED:
@@ -934,22 +934,22 @@ static void mlx5_ib_event(struct mlx5_core_dev *dev, void *context,
 
        case MLX5_DEV_EVENT_LID_CHANGE:
                ibev.event = IB_EVENT_LID_CHANGE;
-               port = *(u8 *)data;
+               port = (u8)param;
                break;
 
        case MLX5_DEV_EVENT_PKEY_CHANGE:
                ibev.event = IB_EVENT_PKEY_CHANGE;
-               port = *(u8 *)data;
+               port = (u8)param;
                break;
 
        case MLX5_DEV_EVENT_GUID_CHANGE:
                ibev.event = IB_EVENT_GID_CHANGE;
-               port = *(u8 *)data;
+               port = (u8)param;
                break;
 
        case MLX5_DEV_EVENT_CLIENT_REREG:
                ibev.event = IB_EVENT_CLIENT_REREGISTER;
-               port = *(u8 *)data;
+               port = (u8)param;
                break;
        }
 
index 67cead2c079e9339d72e9f7ddd096c554907565a..4e8bd0b34bb059d6fc2c78d1a6a61c4796ca870e 100644 (file)
@@ -253,7 +253,8 @@ static int mlx5_eq_int(struct mlx5_core_dev *dev, struct mlx5_eq *eq)
                        case MLX5_PORT_CHANGE_SUBTYPE_CLIENT_REREG:
                        case MLX5_PORT_CHANGE_SUBTYPE_INITIALIZED:
                                if (dev->event)
-                                       dev->event(dev, port_subtype_event(eqe->sub_type), &port);
+                                       dev->event(dev, port_subtype_event(eqe->sub_type),
+                                                  (unsigned long)port);
                                break;
                        default:
                                mlx5_core_warn(dev, "Port event with unrecognized subtype: port %d, sub_type %d\n",
index fd782bf49dc64c8846e30bf3a4f5e7851f868d2c..f2716cc1f51df8eba8da25cd9ec415de55f05df3 100644 (file)
@@ -704,7 +704,7 @@ void mlx5_unregister_interface(struct mlx5_interface *intf)
 EXPORT_SYMBOL(mlx5_unregister_interface);
 
 static void mlx5_core_event(struct mlx5_core_dev *dev, enum mlx5_dev_event event,
-                           void *data)
+                           unsigned long param)
 {
        struct mlx5_priv *priv = &dev->priv;
        struct mlx5_device_context *dev_ctx;
@@ -714,7 +714,7 @@ static void mlx5_core_event(struct mlx5_core_dev *dev, enum mlx5_dev_event event
 
        list_for_each_entry(dev_ctx, &priv->ctx_list, list)
                if (dev_ctx->intf->event)
-                       dev_ctx->intf->event(dev, dev_ctx->context, event, data);
+                       dev_ctx->intf->event(dev, dev_ctx->context, event, param);
 
        spin_unlock_irqrestore(&priv->ctx_lock, flags);
 }
index 76de0cc41640ad6e51a8eb9879e56eec41e58f0f..9f3a5476bb713d1a8fc94166e0dcce055534d4c7 100644 (file)
@@ -559,7 +559,7 @@ struct mlx5_core_dev {
        struct mlx5_init_seg __iomem *iseg;
        void                    (*event) (struct mlx5_core_dev *dev,
                                          enum mlx5_dev_event event,
-                                         void *data);
+                                         unsigned long param);
        struct mlx5_priv        priv;
        struct mlx5_profile     *profile;
        atomic_t                num_qps;
@@ -817,7 +817,7 @@ struct mlx5_interface {
        void *                  (*add)(struct mlx5_core_dev *dev);
        void                    (*remove)(struct mlx5_core_dev *dev, void *context);
        void                    (*event)(struct mlx5_core_dev *dev, void *context,
-                                        enum mlx5_dev_event event, void *data);
+                                        enum mlx5_dev_event event, unsigned long param);
        struct list_head        list;
 };