mirror of
https://github.com/openvswitch/ovs
synced 2025-08-31 06:15:47 +00:00
dpif: Turn dpif_flow_hash function into generic odp_flow_key_hash.
Current implementation of dpif_flow_hash() doesn't depend on datapath interface and only complicates the callers by forcing them to figure out what is their current 'dpif'. If we'll need different hashing for different 'dpif's we'll implement an API for dpif-providers and each dpif implementation will be able to use their local function directly without calling it via dpif API. This change will allow us to not store 'dpif' pointer in the userspace datapath implementation which is broken and will be removed in next commits. This patch moves dpif_flow_hash() to odp-util module and replaces unused odp_flow_key_hash() by it, along with removing of unused 'dpif' argument. Signed-off-by: Ilya Maximets <i.maximets@ovn.org> Acked-by: Ben Pfaff <blp@ovn.org>
This commit is contained in:
@@ -3014,7 +3014,7 @@ dp_netdev_pmd_find_flow(const struct dp_netdev_pmd_thread *pmd,
|
||||
/* If a UFID is not provided, determine one based on the key. */
|
||||
if (!ufidp && key && key_len
|
||||
&& !dpif_netdev_flow_from_nlattrs(key, key_len, &flow, false)) {
|
||||
dpif_flow_hash(pmd->dp->dpif, &flow, sizeof flow, &ufid);
|
||||
odp_flow_key_hash(&flow, sizeof flow, &ufid);
|
||||
ufidp = &ufid;
|
||||
}
|
||||
|
||||
@@ -3233,7 +3233,7 @@ dp_netdev_get_mega_ufid(const struct match *match, ovs_u128 *mega_ufid)
|
||||
((uint8_t *)&masked_flow)[i] = ((uint8_t *)&match->flow)[i] &
|
||||
((uint8_t *)&match->wc)[i];
|
||||
}
|
||||
dpif_flow_hash(NULL, &masked_flow, sizeof(struct flow), mega_ufid);
|
||||
odp_flow_key_hash(&masked_flow, sizeof masked_flow, mega_ufid);
|
||||
}
|
||||
|
||||
static struct dp_netdev_flow *
|
||||
@@ -3437,7 +3437,7 @@ dpif_netdev_flow_put(struct dpif *dpif, const struct dpif_flow_put *put)
|
||||
if (put->ufid) {
|
||||
ufid = *put->ufid;
|
||||
} else {
|
||||
dpif_flow_hash(dpif, &match.flow, sizeof match.flow, &ufid);
|
||||
odp_flow_key_hash(&match.flow, sizeof match.flow, &ufid);
|
||||
}
|
||||
|
||||
/* The Netlink encoding of datapath flow keys cannot express
|
||||
@@ -6646,7 +6646,7 @@ handle_packet_upcall(struct dp_netdev_pmd_thread *pmd,
|
||||
ofpbuf_clear(actions);
|
||||
ofpbuf_clear(put_actions);
|
||||
|
||||
dpif_flow_hash(pmd->dp->dpif, &match.flow, sizeof match.flow, &ufid);
|
||||
odp_flow_key_hash(&match.flow, sizeof match.flow, &ufid);
|
||||
error = dp_netdev_upcall(pmd, packet, &match.flow, &match.wc,
|
||||
&ufid, DPIF_UC_MISS, NULL, actions,
|
||||
put_actions);
|
||||
@@ -7206,7 +7206,7 @@ dp_execute_cb(void *aux_, struct dp_packet_batch *packets_,
|
||||
struct dp_packet *packet;
|
||||
DP_PACKET_BATCH_FOR_EACH (i, packet, packets_) {
|
||||
flow_extract(packet, &flow);
|
||||
dpif_flow_hash(dp->dpif, &flow, sizeof flow, &ufid);
|
||||
odp_flow_key_hash(&flow, sizeof flow, &ufid);
|
||||
dp_execute_userspace_action(pmd, packet, should_steal, &flow,
|
||||
&ufid, &actions, userdata);
|
||||
}
|
||||
|
Reference in New Issue
Block a user