Index: files/patch-25f78c28faf4f3e059a006c8423b701fe9e9e77c.diff =================================================================== --- files/patch-25f78c28faf4f3e059a006c8423b701fe9e9e77c.diff (revision 0) +++ files/patch-25f78c28faf4f3e059a006c8423b701fe9e9e77c.diff (working copy) @@ -0,0 +1,25 @@ +commit 25f78c28faf4f3e059a006c8423b701fe9e9e77c +Author: Ed Maste +Date: Wed Aug 15 22:00:34 2012 +0000 + + netdev: Map to OpenFlow port for flow lookup + + In the flow hash special ports are stored using OpenFlow constants. + For example the "local port" is stored as 0xfffe (OFPP_LOCAL). + + Signed-off-by: Ed Maste + Signed-off-by: Ben Pfaff + +diff --git lib/dpif-netdev.c lib/dpif-netdev.c +index 60fae5f..7fa2720 100644 +--- lib/dpif-netdev.c ++++ lib/dpif-netdev.c +@@ -1011,7 +1011,7 @@ dp_netdev_port_input(struct dp_netdev *dp, struct dp_netdev_port *port, + if (packet->size < ETH_HEADER_LEN) { + return; + } +- flow_extract(packet, 0, 0, port->port_no, &key); ++ flow_extract(packet, 0, 0, odp_port_to_ofp_port(port->port_no), &key); + flow = dp_netdev_lookup_flow(dp, &key); + if (flow) { + dp_netdev_flow_used(flow, &key, packet); Index: files/threaded.diff =================================================================== --- files/threaded.diff (revision 302635) +++ files/threaded.diff (working copy) @@ -453,7 +453,7 @@ @@ -1003,7 +1209,12 @@ dp_netdev_port_input(struct dp_netdev *dp, struct dp_netdev_port *port, return; } - flow_extract(packet, 0, 0, port->port_no, &key); + flow_extract(packet, 0, 0, odp_port_to_ofp_port(port->port_no), &key); +#ifdef THREADED + pthread_mutex_lock(&dp->table_mutex); + flow = dp_netdev_lookup_flow_locked(dp, &key);