linux-cp: auto select tap id when creating lcp pair
Now when lcp pair is created, tap instance is based on hw_id. But tap interface with such instance can already exist. Introduce an offset and auto-selection based on it. Type: fix Signed-off-by: Stanislav Zaikin <stanislav.zaikin@46labs.com> Change-Id: I9db39106b0b0d5bf95c445b03e5b7ff52f946dd2
This commit is contained in:

committed by
Matthew Smith

parent
4779154a26
commit
2a5bb3b5ab
@ -1001,7 +1001,8 @@ lcp_itf_pair_create (u32 phy_sw_if_index, u8 *host_if_name,
|
||||
clib_max (1, lcp_get_default_num_queues (0 /* is_tx */)),
|
||||
.num_tx_queues =
|
||||
clib_max (1, lcp_get_default_num_queues (1 /* is_tx */)),
|
||||
.id = hw->hw_if_index,
|
||||
.id = ~0,
|
||||
.auto_id_offset = 4096,
|
||||
.sw_if_index = ~0,
|
||||
.rx_ring_sz = 256,
|
||||
.tx_ring_sz = 256,
|
||||
|
@ -85,7 +85,7 @@ virtio_eth_set_max_frame_size (vnet_main_t *vnm, vnet_hw_interface_t *hi,
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define TAP_MAX_INSTANCE 1024
|
||||
#define TAP_MAX_INSTANCE 8192
|
||||
|
||||
static void
|
||||
tap_free (vlib_main_t * vm, virtio_if_t * vif)
|
||||
@ -162,7 +162,8 @@ tap_create_if (vlib_main_t * vm, tap_create_if_args_t * args)
|
||||
}
|
||||
else
|
||||
{
|
||||
args->id = clib_bitmap_first_clear (tm->tap_ids);
|
||||
args->id = clib_bitmap_next_clear (tm->tap_ids, args->auto_id_offset %
|
||||
TAP_MAX_INSTANCE);
|
||||
}
|
||||
|
||||
if (args->id > TAP_MAX_INSTANCE)
|
||||
|
@ -42,6 +42,7 @@ typedef enum
|
||||
typedef struct
|
||||
{
|
||||
u32 id;
|
||||
u32 auto_id_offset;
|
||||
u8 mac_addr_set;
|
||||
mac_address_t mac_addr;
|
||||
u16 num_rx_queues;
|
||||
|
Reference in New Issue
Block a user