aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
authorEric Dumazet <dada1@cosmosbay.com>2008-01-09 02:54:43 -0500
committerDavid S. Miller <davem@davemloft.net>2008-01-28 18:01:06 -0500
commitf0b5a0dcf125ce43855961ef4f965a91112bea23 (patch)
treebf8f14b2e7d7614a26a523929a515f1ee2052222 /include/linux
parent4cec72c890d3a465eed08c24a4a2bfe25650318f (diff)
[VLAN]: Avoid expensive divides
We can avoid divides (as seen with CONFIG_CC_OPTIMIZE_FOR_SIZE=y on x86) changing vlan_group_get_device()/vlan_group_set_device() id parameter from signed to unsigned. Signed-off-by: Eric Dumazet <dada1@cosmosbay.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/if_vlan.h6
1 files changed, 4 insertions, 2 deletions
diff --git a/include/linux/if_vlan.h b/include/linux/if_vlan.h
index 976d4b1067d1..4562105fdb2b 100644
--- a/include/linux/if_vlan.h
+++ b/include/linux/if_vlan.h
@@ -81,14 +81,16 @@ struct vlan_group {
81 struct rcu_head rcu; 81 struct rcu_head rcu;
82}; 82};
83 83
84static inline struct net_device *vlan_group_get_device(struct vlan_group *vg, int vlan_id) 84static inline struct net_device *vlan_group_get_device(struct vlan_group *vg,
85 unsigned int vlan_id)
85{ 86{
86 struct net_device **array; 87 struct net_device **array;
87 array = vg->vlan_devices_arrays[vlan_id / VLAN_GROUP_ARRAY_PART_LEN]; 88 array = vg->vlan_devices_arrays[vlan_id / VLAN_GROUP_ARRAY_PART_LEN];
88 return array[vlan_id % VLAN_GROUP_ARRAY_PART_LEN]; 89 return array[vlan_id % VLAN_GROUP_ARRAY_PART_LEN];
89} 90}
90 91
91static inline void vlan_group_set_device(struct vlan_group *vg, int vlan_id, 92static inline void vlan_group_set_device(struct vlan_group *vg,
93 unsigned int vlan_id,
92 struct net_device *dev) 94 struct net_device *dev)
93{ 95{
94 struct net_device **array; 96 struct net_device **array;