datapath: Constify ops structures.
authorJesse Gross <jesse@nicira.com>
Wed, 24 Nov 2010 06:08:27 +0000 (22:08 -0800)
committerJesse Gross <jesse@nicira.com>
Fri, 3 Dec 2010 01:10:16 +0000 (17:10 -0800)
vport_ops, tunnel_ops, and ethtool_ops should not change at runtime.
Therefore, mark them as const to keep them out of the hotpath and to
prevent them from getting trampled.

Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
datapath/vport-capwap.c
datapath/vport-gre.c
datapath/vport-internal_dev.c
datapath/vport-netdev.c
datapath/vport-patch.c
datapath/vport.c
datapath/vport.h

index bf1465fc0b5d0dbc1a4c9893645afddb3886afa9..f732657fefc25dd68867a5247ddfc0dedcb9ff58 100644 (file)
@@ -212,7 +212,7 @@ out:
        return 0;
 }
 
-struct tnl_ops capwap_tnl_ops = {
+const struct tnl_ops capwap_tnl_ops = {
        .tunnel_type    = TNL_T_PROTO_CAPWAP,
        .ipproto        = IPPROTO_UDP,
        .hdr_len        = capwap_hdr_len,
@@ -644,7 +644,7 @@ static void capwap_frag_expire(unsigned long ifq)
        inet_frag_put(&fq->ifq, &frag_state);
 }
 
-struct vport_ops capwap_vport_ops = {
+const struct vport_ops capwap_vport_ops = {
        .type           = "capwap",
        .flags          = VPORT_F_GEN_STATS,
        .init           = capwap_init,
index be8fb5343d2f1542b000bddd6a2070c10af35071..fcf1edea76c388193e7b73d381c883d824fe83ce 100644 (file)
@@ -332,7 +332,7 @@ error:
        return 0;
 }
 
-struct tnl_ops gre_tnl_ops = {
+const struct tnl_ops gre_tnl_ops = {
        .tunnel_type    = TNL_T_PROTO_GRE,
        .ipproto        = IPPROTO_GRE,
        .hdr_len        = gre_hdr_len,
@@ -345,7 +345,7 @@ static struct vport *gre_create(const char *name, const void __user *config)
        return tnl_create(name, config, &gre_vport_ops, &gre_tnl_ops);
 }
 
-static struct net_protocol gre_protocol_handlers = {
+static const struct net_protocol gre_protocol_handlers = {
        .handler        =       gre_rcv,
        .err_handler    =       gre_err,
 };
@@ -366,7 +366,7 @@ static void gre_exit(void)
        inet_del_protocol(&gre_protocol_handlers, IPPROTO_GRE);
 }
 
-struct vport_ops gre_vport_ops = {
+const struct vport_ops gre_vport_ops = {
        .type           = "gre",
        .flags          = VPORT_F_GEN_STATS | VPORT_F_TUN_ID,
        .init           = gre_init,
index 6d610fdab48d8f2f1f8196b0c5c774a1d91d4d24..ec0052ca1dad0de657ccf66093a10a23a231b3a6 100644 (file)
@@ -108,7 +108,7 @@ static void internal_dev_getinfo(struct net_device *netdev,
                sprintf(info->bus_info, "%d.%d", dp_port->dp->dp_idx, dp_port->port_no);
 }
 
-static struct ethtool_ops internal_dev_ethtool_ops = {
+static const struct ethtool_ops internal_dev_ethtool_ops = {
        .get_drvinfo    = internal_dev_getinfo,
        .get_link       = ethtool_op_get_link,
        .get_sg         = ethtool_op_get_sg,
@@ -278,7 +278,7 @@ static int internal_dev_recv(struct vport *vport, struct sk_buff *skb)
        return len;
 }
 
-struct vport_ops internal_vport_ops = {
+const struct vport_ops internal_vport_ops = {
        .type           = "internal",
        .flags          = VPORT_F_REQUIRED | VPORT_F_GEN_STATS | VPORT_F_FLOW,
        .create         = internal_dev_create,
index c643696fcd2598f117bf2d1ef13ebb7322de08a5..11421bf7a13542a4c5e9e6efdfa305425ef70f53 100644 (file)
@@ -299,7 +299,7 @@ struct vport *netdev_get_vport(struct net_device *dev)
 #endif
 }
 
-struct vport_ops netdev_vport_ops = {
+const struct vport_ops netdev_vport_ops = {
        .type           = "netdev",
        .flags          = (VPORT_F_REQUIRED |
                          (USE_VPORT_STATS ? VPORT_F_GEN_STATS : 0)),
index 62fd71f796fbd2ec43ffeed194beb5c29f31fb68..81fa61b118cabd285ab6d59cdaa47266192abd06 100644 (file)
@@ -265,7 +265,7 @@ static int patch_send(struct vport *vport, struct sk_buff *skb)
        return skb_len;
 }
 
-struct vport_ops patch_vport_ops = {
+const struct vport_ops patch_vport_ops = {
        .type           = "patch",
        .flags          = VPORT_F_GEN_STATS,
        .init           = patch_init,
index c68e18149bb882d1c79d9cb01cdc34728a474b0f..fdbf522e8d73d4e92ca6b1b22cfe63c0edd1335c 100644 (file)
@@ -25,7 +25,7 @@
 
 /* List of statically compiled vport implementations.  Don't forget to also
  * add yours to the list at the bottom of vport.h. */
-static struct vport_ops *base_vport_ops_list[] = {
+static const struct vport_ops *base_vport_ops_list[] = {
        &netdev_vport_ops,
        &internal_vport_ops,
        &patch_vport_ops,
@@ -113,7 +113,7 @@ int vport_init(void)
        }
 
        for (i = 0; i < ARRAY_SIZE(base_vport_ops_list); i++) {
-               struct vport_ops *new_ops = base_vport_ops_list[i];
+               const struct vport_ops *new_ops = base_vport_ops_list[i];
 
                if (new_ops->init)
                        err = new_ops->init();
index 641353cd40f18dbdea697707e61d1d325c2ace5f..bacefa842e87953715cb9ce26f83e09892996830 100644 (file)
@@ -239,10 +239,10 @@ void vport_record_error(struct vport *, enum vport_err_type err_type);
 
 /* List of statically compiled vport implementations.  Don't forget to also
  * add yours to the list at the top of vport.c. */
-extern struct vport_ops netdev_vport_ops;
-extern struct vport_ops internal_vport_ops;
-extern struct vport_ops patch_vport_ops;
-extern struct vport_ops gre_vport_ops;
-extern struct vport_ops capwap_vport_ops;
+extern const struct vport_ops netdev_vport_ops;
+extern const struct vport_ops internal_vport_ops;
+extern const struct vport_ops patch_vport_ops;
+extern const struct vport_ops gre_vport_ops;
+extern const struct vport_ops capwap_vport_ops;
 
 #endif /* vport.h */