vxge: make function table const
authorstephen hemminger <shemminger@vyatta.com>
Fri, 16 Sep 2011 11:10:01 +0000 (11:10 +0000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 16 Sep 2011 23:20:20 +0000 (19:20 -0400)
All tables of function pointers should be const.
The pre-existing code has lots of needless indirection...

Inspired by similar change in PAX.
Compile tested only.

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/neterion/vxge/vxge-config.c
drivers/net/ethernet/neterion/vxge/vxge-config.h
drivers/net/ethernet/neterion/vxge/vxge-main.c
drivers/net/ethernet/neterion/vxge/vxge-traffic.c

index 1520c57..98e2c10 100644 (file)
@@ -1342,9 +1342,7 @@ vxge_hw_device_initialize(
        hldev->bar0 = attr->bar0;
        hldev->pdev = attr->pdev;
 
-       hldev->uld_callbacks.link_up = attr->uld_callbacks.link_up;
-       hldev->uld_callbacks.link_down = attr->uld_callbacks.link_down;
-       hldev->uld_callbacks.crit_err = attr->uld_callbacks.crit_err;
+       hldev->uld_callbacks = attr->uld_callbacks;
 
        __vxge_hw_device_pci_e_init(hldev);
 
@@ -2633,7 +2631,7 @@ __vxge_hw_mempool_create(struct __vxge_hw_device *devh,
                         u32 items_priv_size,
                         u32 items_initial,
                         u32 items_max,
-                        struct vxge_hw_mempool_cbs *mp_callback,
+                        const struct vxge_hw_mempool_cbs *mp_callback,
                         void *userdata)
 {
        enum vxge_hw_status status = VXGE_HW_OK;
@@ -2817,7 +2815,9 @@ __vxge_hw_ring_create(struct __vxge_hw_vpath_handle *vp,
        struct vxge_hw_ring_config *config;
        struct __vxge_hw_device *hldev;
        u32 vp_id;
-       struct vxge_hw_mempool_cbs ring_mp_callback;
+       static const struct vxge_hw_mempool_cbs ring_mp_callback = {
+               .item_func_alloc = __vxge_hw_ring_mempool_item_alloc,
+       };
 
        if ((vp == NULL) || (attr == NULL)) {
                status = VXGE_HW_FAIL;
@@ -2872,7 +2872,6 @@ __vxge_hw_ring_create(struct __vxge_hw_vpath_handle *vp,
 
        /* calculate actual RxD block private size */
        ring->rxdblock_priv_size = ring->rxd_priv_size * ring->rxds_per_block;
-       ring_mp_callback.item_func_alloc = __vxge_hw_ring_mempool_item_alloc;
        ring->mempool = __vxge_hw_mempool_create(hldev,
                                VXGE_HW_BLOCK_SIZE,
                                VXGE_HW_BLOCK_SIZE,
index dd36258..5046a64 100644 (file)
@@ -740,7 +740,7 @@ struct __vxge_hw_device {
        struct vxge_hw_device_config    config;
        enum vxge_hw_device_link_state  link_state;
 
-       struct vxge_hw_uld_cbs          uld_callbacks;
+       const struct vxge_hw_uld_cbs    *uld_callbacks;
 
        u32                             host_type;
        u32                             func_id;
@@ -840,7 +840,7 @@ struct vxge_hw_device_hw_info {
 struct vxge_hw_device_attr {
        void __iomem            *bar0;
        struct pci_dev          *pdev;
-       struct vxge_hw_uld_cbs  uld_callbacks;
+       const struct vxge_hw_uld_cbs *uld_callbacks;
 };
 
 #define VXGE_HW_DEVICE_LINK_STATE_SET(hldev, ls)       (hldev->link_state = ls)
index 1a53a24..ef1ba20 100644 (file)
@@ -4284,6 +4284,12 @@ static int __devinit is_sriov_initialized(struct pci_dev *pdev)
        return 0;
 }
 
+static const struct vxge_hw_uld_cbs vxge_callbacks = {
+       .link_up = vxge_callback_link_up,
+       .link_down = vxge_callback_link_down,
+       .crit_err = vxge_callback_crit_err,
+};
+
 /**
  * vxge_probe
  * @pdev : structure containing the PCI related information of the device.
@@ -4494,9 +4500,7 @@ vxge_probe(struct pci_dev *pdev, const struct pci_device_id *pre)
        }
 
        /* Setting driver callbacks */
-       attr.uld_callbacks.link_up = vxge_callback_link_up;
-       attr.uld_callbacks.link_down = vxge_callback_link_down;
-       attr.uld_callbacks.crit_err = vxge_callback_crit_err;
+       attr.uld_callbacks = &vxge_callbacks;
 
        status = vxge_hw_device_initialize(&hldev, &attr, device_config);
        if (status != VXGE_HW_OK) {
index ad64ce0..5954fa2 100644 (file)
@@ -532,8 +532,8 @@ __vxge_hw_device_handle_error(struct __vxge_hw_device *hldev, u32 vp_id,
        }
 
        /* notify driver */
-       if (hldev->uld_callbacks.crit_err)
-               hldev->uld_callbacks.crit_err(
+       if (hldev->uld_callbacks->crit_err)
+               hldev->uld_callbacks->crit_err(
                        (struct __vxge_hw_device *)hldev,
                        type, vp_id);
 out:
@@ -560,8 +560,8 @@ __vxge_hw_device_handle_link_down_ind(struct __vxge_hw_device *hldev)
        hldev->link_state = VXGE_HW_LINK_DOWN;
 
        /* notify driver */
-       if (hldev->uld_callbacks.link_down)
-               hldev->uld_callbacks.link_down(hldev);
+       if (hldev->uld_callbacks->link_down)
+               hldev->uld_callbacks->link_down(hldev);
 exit:
        return VXGE_HW_OK;
 }
@@ -585,8 +585,8 @@ __vxge_hw_device_handle_link_up_ind(struct __vxge_hw_device *hldev)
        hldev->link_state = VXGE_HW_LINK_UP;
 
        /* notify driver */
-       if (hldev->uld_callbacks.link_up)
-               hldev->uld_callbacks.link_up(hldev);
+       if (hldev->uld_callbacks->link_up)
+               hldev->uld_callbacks->link_up(hldev);
 exit:
        return VXGE_HW_OK;
 }