X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=datapath%2Fdatapath.c;h=81ecc0f70e997879d9d2ccc96f4ece89c92a1c23;hb=e2f3178f0582eda302bdc5629189b6a56d9fbcdd;hp=10706f5117f79c0a0334499c12582b7c4e2f8ad1;hpb=5604935e4e1cbc16611d2d97f50b717aa31e8ec5;p=sliver-openvswitch.git diff --git a/datapath/datapath.c b/datapath/datapath.c index 10706f511..81ecc0f70 100644 --- a/datapath/datapath.c +++ b/datapath/datapath.c @@ -241,7 +241,8 @@ void ovs_dp_detach_port(struct vport *p) } void ovs_dp_process_packet_with_key(struct sk_buff *skb, - struct sw_flow_key *pkt_key) + struct sw_flow_key *pkt_key, + bool recirc) { const struct vport *p = OVS_CB(skb)->input_vport; struct datapath *dp = p->dp; @@ -253,7 +254,7 @@ void ovs_dp_process_packet_with_key(struct sk_buff *skb, stats = this_cpu_ptr(dp->stats_percpu); /* Look up flow. */ - flow = ovs_flow_tbl_lookup_stats(&dp->table, pkt_key, skb_get_rxhash(skb), + flow = ovs_flow_tbl_lookup_stats(&dp->table, pkt_key, skb_get_hash(skb), &n_mask_hit); if (unlikely(!flow)) { struct dp_upcall_info upcall; @@ -272,7 +273,7 @@ void ovs_dp_process_packet_with_key(struct sk_buff *skb, OVS_CB(skb)->flow = flow; ovs_flow_stats_update(OVS_CB(skb)->flow, pkt_key->tp.flags, skb); - ovs_execute_actions(dp, skb); + ovs_execute_actions(dp, skb, recirc); stats_counter = &stats->n_hit; out: @@ -298,7 +299,7 @@ void ovs_dp_process_received_packet(struct vport *p, struct sk_buff *skb) return; } - ovs_dp_process_packet_with_key(skb, &key); + ovs_dp_process_packet_with_key(skb, &key, false); } int ovs_dp_upcall(struct datapath *dp, struct sk_buff *skb, @@ -601,7 +602,7 @@ static int ovs_packet_cmd_execute(struct sk_buff *skb, struct genl_info *info) OVS_CB(packet)->input_vport = input_vport; local_bh_disable(); - err = ovs_execute_actions(dp, packet); + err = ovs_execute_actions(dp, packet, false); local_bh_enable(); rcu_read_unlock();