Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f0b5a0dc authored by Eric Dumazet's avatar Eric Dumazet Committed by David S. Miller
Browse files

[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: default avatarEric Dumazet <dada1@cosmosbay.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 4cec72c8
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -81,14 +81,16 @@ struct vlan_group {
	struct rcu_head		rcu;
};

static inline struct net_device *vlan_group_get_device(struct vlan_group *vg, int vlan_id)
static inline struct net_device *vlan_group_get_device(struct vlan_group *vg,
						       unsigned int vlan_id)
{
	struct net_device **array;
	array = vg->vlan_devices_arrays[vlan_id / VLAN_GROUP_ARRAY_PART_LEN];
	return array[vlan_id % VLAN_GROUP_ARRAY_PART_LEN];
}

static inline void vlan_group_set_device(struct vlan_group *vg, int vlan_id,
static inline void vlan_group_set_device(struct vlan_group *vg,
					 unsigned int vlan_id,
					 struct net_device *dev)
{
	struct net_device **array;