[ovs-git] [openvswitch/ovs] 5f2ccb: dpif: Allow adding ukeys for same flow by differen...

GitHub noreply at github.com
Wed Feb 3 23:51:47 UTC 2016


  Branch: refs/heads/master
  Home:   https://github.com/openvswitch/ovs
  Commit: 5f2ccb1c0d3b01b775ba03c89a486cae7b720275
      https://github.com/openvswitch/ovs/commit/5f2ccb1c0d3b01b775ba03c89a486cae7b720275
  Author: Ilya Maximets <i.maximets at samsung.com>
  Date:   2016-02-03 (Wed, 03 Feb 2016)

  Changed paths:
    M ofproto/ofproto-dpif-upcall.c

  Log Message:
  -----------
  dpif: Allow adding ukeys for same flow by different pmds.

In multiqueue mode several pmd threads may process one port, but
different queues. Flow may not depend on queue. It's true at least for
vhost-user ports.

When multiple pmd threads attempt to process upcalls for a particular
flow key, only the first will succeed. Any subsequent threads will
receive error = ENOSPC when attempting to insert a new udpif_key into
the umaps. This causes the latter threads to never insert a flow into
the datapath to handle the traffic, and as a result they will
consistently execute those flows through the slow path.

Fix that by mixing pmd_id with the bits from the ufid for ukey->hash
calculation. So, for a given flow key/UFID, each pmd thread will create
an independent udpif_key.

This also opens the possibility to reassign queues among pmd threads
without restarting them and deleting the megaflow cache.

Signed-off-by: Ilya Maximets <i.maximets at samsung.com>
Signed-off-by: Joe Stringer <joe at ovn.org>




More information about the git mailing list