macvtap: eliminate linear search
authorJason Wang <jasowang@redhat.com>
Wed, 5 Jun 2013 23:54:38 +0000 (23:54 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sat, 8 Jun 2013 06:49:09 +0000 (23:49 -0700)
commit376b1aabe1f53aad80615d05ddb8c43670be6a5c
tree95c266af703da4637da900c972c841f68948b0de
parentf0afce01aa639e5164cf73f063b81a8b95619c3a
macvtap: eliminate linear search

Linear search were used in both get_slot() and macvtap_get_queue(), this is
because:

- macvtap didn't reshuffle the array of taps when create or destroy a queue, so
  when adding a new queue, macvtap must do linear search to find a location for
  the new queue. This will also complicate the TUNSETQUEUE implementation for
  multiqueue API.
- the queue itself didn't track the queue index, so the we must do a linear
  search in the array to find the location of a existed queue.

The solution is straightforward: reshuffle the array and introduce a queue_index
to macvtap_queue.

Signed-off-by: Jason Wang <jasowang@redhat.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/macvtap.c