Here is an incremental. This causes very minor changes to the next patch in the series. I'll resend that too, although I'm not sure it needs review again.
--- ofproto/ofproto-dpif.c | 26 ++++++++++++++------------ 1 files changed, 14 insertions(+), 12 deletions(-) diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c index 15d0883..e75c258 100644 --- a/ofproto/ofproto-dpif.c +++ b/ofproto/ofproto-dpif.c @@ -3771,6 +3771,13 @@ commit_odp_actions(struct action_xlate_ctx *ctx) static void compose_output_action(struct action_xlate_ctx *ctx, uint16_t odp_port) { + uint16_t ofp_port = odp_port_to_ofp_port(odp_port); + const struct ofport_dpif *ofport = get_ofp_port(ctx->ofproto, ofp_port); + + if (ofport && ofport->up.opp.config & htonl(OFPPC_NO_FWD)) { + return; + } + nl_msg_put_u32(ctx->odp_actions, OVS_ACTION_ATTR_OUTPUT, odp_port); ctx->sflow_odp_port = odp_port; ctx->sflow_n_outputs++; @@ -3782,20 +3789,15 @@ add_output_action(struct action_xlate_ctx *ctx, uint16_t ofp_port) const struct ofport_dpif *ofport = get_ofp_port(ctx->ofproto, ofp_port); uint16_t odp_port = ofp_port_to_odp_port(ofp_port); - if (ofport) { - if (ofport->up.opp.config & htonl(OFPPC_NO_FWD) - || !stp_forward_in_state(ofport->stp_state)) { - /* Forwarding disabled on port. */ - return; - } - } else { - /* - * We don't have an ofport record for this port, but it doesn't hurt to - * allow forwarding to it anyhow. Maybe such a port will appear later - * and we're pre-populating the flow table. - */ + if (ofport && !stp_forward_in_state(ofport->stp_state)) { + /* Forwarding disabled on port. */ + return; } + /* We may not have an ofport record for this port, but it doesn't hurt to + * allow forwarding to it anyhow. Maybe such a port will appear later and + * we're pre-populating the flow table. */ + commit_odp_actions(ctx); compose_output_action(ctx, odp_port); ctx->nf_output_iface = ofp_port; -- 1.7.7.1 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev