[ovs-dev] [PATCHv2 1/4] upcall: Reuse flow_put initializer.
Joe Stringer
joe at ovn.org
Wed Aug 31 18:06:02 UTC 2016
Signed-off-by: Joe Stringer <joe at ovn.org>
---
v2: First post
---
ofproto/ofproto-dpif-upcall.c | 24 ++++++++----------------
1 file changed, 8 insertions(+), 16 deletions(-)
diff --git a/ofproto/ofproto-dpif-upcall.c b/ofproto/ofproto-dpif-upcall.c
index e4473080ad65..e7fcdd28c9ff 100644
--- a/ofproto/ofproto-dpif-upcall.c
+++ b/ofproto/ofproto-dpif-upcall.c
@@ -347,6 +347,9 @@ static void ukey_delete(struct umap *, struct udpif_key *);
static enum upcall_type classify_upcall(enum dpif_upcall_type type,
const struct nlattr *userdata);
+static void put_op_init(struct ukey_op *op, struct udpif_key *ukey,
+ enum dpif_flow_put_flags flags);
+
static int upcall_receive(struct upcall *, const struct dpif_backer *,
const struct dp_packet *packet, enum dpif_upcall_type,
const struct nlattr *userdata, const struct flow *,
@@ -1335,19 +1338,7 @@ handle_upcalls(struct udpif *udpif, struct upcall *upcalls,
struct udpif_key *ukey = upcall->ukey;
upcall->ukey_persists = true;
- op = &ops[n_ops++];
-
- op->ukey = ukey;
- op->dop.type = DPIF_OP_FLOW_PUT;
- op->dop.u.flow_put.flags = DPIF_FP_CREATE;
- op->dop.u.flow_put.key = ukey->key;
- op->dop.u.flow_put.key_len = ukey->key_len;
- op->dop.u.flow_put.mask = ukey->mask;
- op->dop.u.flow_put.mask_len = ukey->mask_len;
- op->dop.u.flow_put.ufid = upcall->ufid;
- op->dop.u.flow_put.stats = NULL;
- ukey_get_actions(ukey, &op->dop.u.flow_put.actions,
- &op->dop.u.flow_put.actions_len);
+ put_op_init(&ops[n_ops++], ukey, DPIF_FP_CREATE);
}
if (upcall->odp_actions.size) {
@@ -1936,11 +1927,12 @@ delete_op_init(struct udpif *udpif, struct ukey_op *op, struct udpif_key *ukey)
}
static void
-modify_op_init(struct ukey_op *op, struct udpif_key *ukey)
+put_op_init(struct ukey_op *op, struct udpif_key *ukey,
+ enum dpif_flow_put_flags flags)
{
op->ukey = ukey;
op->dop.type = DPIF_OP_FLOW_PUT;
- op->dop.u.flow_put.flags = DPIF_FP_MODIFY;
+ op->dop.u.flow_put.flags = flags;
op->dop.u.flow_put.key = ukey->key;
op->dop.u.flow_put.key_len = ukey->key_len;
op->dop.u.flow_put.mask = ukey->mask;
@@ -2085,7 +2077,7 @@ reval_op_init(struct ukey_op *op, enum reval_result result,
/* ukey->key_recirc_id remains, as the key is the same as before. */
ukey_set_actions(ukey, odp_actions);
- modify_op_init(op, ukey);
+ put_op_init(op, ukey, DPIF_FP_MODIFY);
}
}
--
2.9.3
More information about the dev
mailing list