[ovs-dev] [PATCH v2] lib/dpif-netdev: Integrate megaflow classifier.
Joe Stringer
joestringer at nicira.com
Thu Oct 23 18:21:32 UTC 2014
Hi Jarno,
On 7 October 2014 14:43, Jarno Rajahalme <jrajahalme at nicira.com> wrote:
> flow inserts and removals are simplified:
>
> - No need for classifier internal mutex, as dpif-netdev already has a
> 'flow_mutex'.
> - Number of memory allocations/frees can be halved.
>
> Lookup code path is a bit more effcient as well, as we can rely on
> netdev_flow_key always having inline data.
>
> This will also be easier to simplify further when moving to per-thread
> megaflow classifiers in the future.
>
> Signed-off-by: Jarno Rajahalme <jrajahalme at nicira.com>
> ---
> v2: Reverted using netdev_flow_key as the flow_table key, since that will
> become obsolete as soon as flow ID patches are merged in.
> We still need a netdev_flow_key for the lookup in flow put, but now we
> use the slower method of composing a packet from a flow, and extracting
> the miniflow from this 'packet'. This does not matter, since the flow
> put interface is no longer used for upcalls (but probes may still use
> it).
>
> lib/classifier.c | 109 ----------
> lib/classifier.h | 5 -
> lib/dpif-netdev.c | 619
> ++++++++++++++++++++++++++++++++++++++++++-----------
> lib/flow.c | 61 ++++++
> lib/flow.h | 3 +-
> 5 files changed, 555 insertions(+), 242 deletions(-)
>
> <snip>
>
> diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c
> index a1db620..36fd238 100644
> --- a/lib/dpif-netdev.c
> +++ b/lib/dpif-netdev.c
> <snip>
>
> @@ -1628,18 +1774,22 @@ dpif_netdev_flow_put(struct dpif *dpif, const
> struct dpif_flow_put *put)
> if (put->stats) {
> memset(put->stats, 0, sizeof *put->stats);
> }
> - error = dp_netdev_flow_add(dp, &match, put->actions,
> - put->actions_len);
> + dp_netdev_flow_add(dp, &match, put->actions,
> put->actions_len);
> + error = 0;
> } else {
> error = EFBIG;
> }
Was there a particular reason for modifying this to ignore errors in
dp_netdev_flow_add()?
More information about the dev
mailing list