X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fdpif-netdev.c;h=96c5feb428bdaaa508013c917848a5236be476ed;hb=003ce655b7116d18c86a74c50391e54990346931;hp=790fe233d3a946c86377ed39fdef8075a46ac845;hpb=4f150744921f02fd208b8bc59beb92270f77b924;p=sliver-openvswitch.git diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c index 790fe233d..96c5feb42 100644 --- a/lib/dpif-netdev.c +++ b/lib/dpif-netdev.c @@ -323,7 +323,6 @@ struct pmd_thread { pthread_t thread; int id; atomic_uint change_seq; - char *name; }; /* Interface to netdev-based datapath. */ @@ -1447,6 +1446,7 @@ dpif_netdev_flow_dump_next(const struct dpif *dpif, void *iter_, void *state_, struct dp_netdev_flow_state *state = state_; struct dp_netdev *dp = get_dp_netdev(dpif); struct dp_netdev_flow *netdev_flow; + struct flow_wildcards wc; int error; ovs_mutex_lock(&iter->mutex); @@ -1469,11 +1469,13 @@ dpif_netdev_flow_dump_next(const struct dpif *dpif, void *iter_, void *state_, return error; } + minimask_expand(&netdev_flow->cr.match.mask, &wc); + if (key) { struct ofpbuf buf; ofpbuf_use_stack(&buf, &state->keybuf, sizeof state->keybuf); - odp_flow_key_from_flow(&buf, &netdev_flow->flow, + odp_flow_key_from_flow(&buf, &netdev_flow->flow, &wc.masks, netdev_flow->flow.in_port.odp_port); *key = ofpbuf_data(&buf); @@ -1482,10 +1484,8 @@ dpif_netdev_flow_dump_next(const struct dpif *dpif, void *iter_, void *state_, if (key && mask) { struct ofpbuf buf; - struct flow_wildcards wc; ofpbuf_use_stack(&buf, &state->maskbuf, sizeof state->maskbuf); - minimask_expand(&netdev_flow->cr.match.mask, &wc); odp_flow_key_from_mask(&buf, &wc.masks, &netdev_flow->flow, odp_to_u32(wc.masks.in_port.odp_port), SIZE_MAX); @@ -1876,8 +1876,6 @@ pmd_thread_main(void *f_) int poll_cnt; int i; - f->name = xasprintf("pmd_%u", ovsthread_id_self()); - set_subprogram_name("%s", f->name); poll_cnt = 0; poll_list = NULL; @@ -1917,7 +1915,6 @@ reload: } free(poll_list); - free(f->name); return NULL; } @@ -1954,7 +1951,7 @@ dp_netdev_set_pmd_threads(struct dp_netdev *dp, int n) /* Each thread will distribute all devices rx-queues among * themselves. */ - xpthread_create(&f->thread, NULL, pmd_thread_main, f); + f->thread = ovs_thread_create("pmd", pmd_thread_main, f); } } @@ -2083,7 +2080,7 @@ dp_netdev_output_userspace(struct dp_netdev *dp, struct ofpbuf *packet, /* Put ODP flow. */ miniflow_expand(key, &flow); - odp_flow_key_from_flow(buf, &flow, flow.in_port.odp_port); + odp_flow_key_from_flow(buf, &flow, NULL, flow.in_port.odp_port); upcall->key = ofpbuf_data(buf); upcall->key_len = ofpbuf_size(buf); @@ -2159,7 +2156,7 @@ dp_execute_cb(void *aux_, struct ofpbuf *packet, if (hash_act->hash_alg == OVS_HASH_ALG_L4) { /* Hash need not be symmetric, nor does it need to include * L2 fields. */ - hash = miniflow_hash_5tuple(aux->key, hash_act->hash_bias); + hash = miniflow_hash_5tuple(aux->key, hash_act->hash_basis); if (!hash) { hash = 1; /* 0 is not valid */ }