]> git.baikalelectronics.ru Git - kernel.git/commit
ipvlan: improvise dev_id generation logic in IPvlan
authorMahesh Bandewar <maheshb@google.com>
Mon, 9 Jan 2017 23:05:54 +0000 (15:05 -0800)
committerDavid S. Miller <davem@davemloft.net>
Wed, 11 Jan 2017 01:47:12 +0000 (20:47 -0500)
commit464ec2769410b9ac1b97142959bfa0716bb0c17d
tree3d86b8c8337e679806f77b875ee6564ebf6712dc
parent2f65dce44212bdf5a8f8bbecf9f29ccea2eff906
ipvlan: improvise dev_id generation logic in IPvlan

The patch 49adbfee681 ("ipvlan: assign unique dev-id for each slave
device.") used ida_simple_get() to generate dev_ids assigned to the
slave devices. However (Eric has pointed out that) there is a shortcoming
with that approach as it always uses the first available ID. This
becomes a problem when a slave gets deleted and a new slave gets added.
The ID gets reassigned causing the new slave to get the same link-local
address. This side-effect is undesirable.

This patch adds a per-port variable that keeps track of the IDs
assigned and used as the stat-base for the IDR api. This base will be
wrapped around when it reaches the MAX (0xFFFE) value possibly on a
busy system where slaves are added and deleted routinely.

Fixes: 49adbfee681 ("ipvlan: assign unique dev-id for each slave device.")
Signed-off-by: Mahesh Bandewar <maheshb@google.com>
CC: Eric Dumazet <edumazet@google.com>
CC: David Miller <davem@davemloft.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ipvlan/ipvlan.h
drivers/net/ipvlan/ipvlan_main.c