netdev: Clean up and refactor packet receive interface.
authorBen Pfaff <blp@nicira.com>
Fri, 5 Aug 2011 21:15:32 +0000 (14:15 -0700)
committerBen Pfaff <blp@nicira.com>
Mon, 8 Aug 2011 17:24:24 +0000 (10:24 -0700)
commit7b6b0ef47e398a2fbda48fd385f9781b2df8bebb
treebae52e2382bf61228cee38bb32ddaa3b8345a689
parent8cea3c07718d55c6eea288be87b3ea9e4d3b88cd
netdev: Clean up and refactor packet receive interface.

The Open vSwitch tree only has one user of the ability for a netdev to
receive packets from a network device.  Thus, this commit simplifies the
common-case use of the netdev interface by replacing the "ethertype" option
from "struct netdev_options" by a new netdev_listen() call.

The only user of netdev_listen() wants to receive all packets from a
network device, so this commit also removes the ability to restrict the
received packets to a particular protocol.  (This ability was once used by
the Open vSwitch integrated DHCP client, but that code has been removed.)

This commit also simplifies and improves the implementation of the code
in netdev-linux that started listening to a network device.  Before, I had
not figured out how to avoid receiving all packets on all devices before
binding to a particular device, but I took a closer look at the kernel code
and figured it out.

I've tested that the userspace datapath (dpif-netdev), the only user of
netdev_recv(), still works after this change.
lib/dpif-netdev.c
lib/netdev-dummy.c
lib/netdev-linux.c
lib/netdev-provider.h
lib/netdev-vport.c
lib/netdev.c
lib/netdev.h
ofproto/ofproto.c
utilities/ovs-dpctl.c
vswitchd/bridge.c