From patchwork Fri Aug 3 13:36:39 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adrien Mazarguil X-Patchwork-Id: 43565 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 19AAF1B594; Fri, 3 Aug 2018 15:36:59 +0200 (CEST) Received: from mail-wr1-f42.google.com (mail-wr1-f42.google.com [209.85.221.42]) by dpdk.org (Postfix) with ESMTP id 02CFC1B567 for ; Fri, 3 Aug 2018 15:36:56 +0200 (CEST) Received: by mail-wr1-f42.google.com with SMTP id h9-v6so5462923wro.3 for ; Fri, 03 Aug 2018 06:36:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind-com.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=PtvSO8AnfduGqjsbwqMjjOWkPQJnQbptU1MYVAkL/8g=; b=bPs4IzjkymuhHnKuZ9/vpMtxvs7xhiXQWEx7G9sCdR9Q8gWcXn+GdB953D+Q4mu2fz MM6P1Ss0gl09XQQzhHc4IV+7xNn3rX4/NAhuUklWsChKXI6/RoM3fa/E5vkCgPGfYwgo 6ibGwYMwQSAbYK9KuR5v3UBpuEsK1fy9V3LVPNXUWAtgccce0+sumcdE7LAvYIsdYZTk 9Qp1Dy82B5cASf0eqtogjtxvJNlFwaTsAy8S0tOj8zdLbP6Zbayt8IOfPbmFZxUFccQv +VxpMT40fNc7ssGJubvcc/Hek98bA29dB8HWGBVHzcpm868HSa/0UoEkLw5YCVXAhBmT Tzpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=PtvSO8AnfduGqjsbwqMjjOWkPQJnQbptU1MYVAkL/8g=; b=VzTmtEL95dMoaJXkUjqSmA2t648lKaM22AmcPSxb/+g7n0bzYJ/EKkfLmjJNu3cfsZ XT+/UkdR+PzdsafZ2FsjC3J6TSqdYdnXNVIrybE1SgI4IWiakefM4T9wUFyI2NluiLxt x3Vc2aiH0H5cvDB+JNkdX9KNlG53R138ZJDLC5B0N0Wk7WNdpl+gbHhKmyBsjrYTWfXt oqOZ4crcp2w/sQpIKi9e4dWw+KK0thfFPtiBtHv3Apfqj5dQRzKIy/YmZkKaZRoR3dfH 9SaZQViKPa/Z7uNceRwoohk7e/Nk2B1ge2nqwpMAuWlDHWcAwXUGIEA2aNLG5lszsFol 3JZA== X-Gm-Message-State: AOUpUlF3NRSBTv0bxbc6PZJ+SkqxYdeV5nAuysK7ojMKSIfAMVeUUrfu IMVA6nDfcbs0Bt65jrvyWuxNqg== X-Google-Smtp-Source: AAOMgpdJenSYkeZVJwlxbOd4Qf40Skj4OwB/Hm7NuNQS6QhxyoBfAZQda/FYcfq2CCfwWUY45CG2NA== X-Received: by 2002:adf:9e84:: with SMTP id a4-v6mr2598435wrf.70.1533303416798; Fri, 03 Aug 2018 06:36:56 -0700 (PDT) Received: from 6wind.com (host.78.145.23.62.rev.coltfrance.com. [62.23.145.78]) by smtp.gmail.com with ESMTPSA id b202-v6sm7294864wme.22.2018.08.03.06.36.55 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 03 Aug 2018 06:36:56 -0700 (PDT) Date: Fri, 3 Aug 2018 15:36:39 +0200 From: Adrien Mazarguil To: Ferruh Yigit Cc: dev@dpdk.org, Gaetan Rivet Message-ID: <20180803132032.29038-5-adrien.mazarguil@6wind.com> References: <20180803132032.29038-1-adrien.mazarguil@6wind.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20180803132032.29038-1-adrien.mazarguil@6wind.com> X-Mailer: git-send-email 2.11.0 Subject: [dpdk-dev] [PATCH v2 4/7] net/failsafe: switch to flow API object conversion function X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" This patch replaces rte_flow_copy() with rte_flow_conv(). Signed-off-by: Adrien Mazarguil Cc: Gaetan Rivet --- v2 changes: - Patch was split from "ethdev: add flow API object converter". --- drivers/net/failsafe/failsafe_ether.c | 6 +++--- drivers/net/failsafe/failsafe_flow.c | 31 +++++++++++++++++++++------- drivers/net/failsafe/failsafe_private.h | 5 ++++- 3 files changed, 31 insertions(+), 11 deletions(-) diff --git a/drivers/net/failsafe/failsafe_ether.c b/drivers/net/failsafe/failsafe_ether.c index 5b5cb3b49..8bce368f3 100644 --- a/drivers/net/failsafe/failsafe_ether.c +++ b/drivers/net/failsafe/failsafe_ether.c @@ -230,9 +230,9 @@ fs_eth_dev_conf_apply(struct rte_eth_dev *dev, DEBUG("Creating flow #%" PRIu32, i++); flow->flows[SUB_ID(sdev)] = rte_flow_create(PORT_ID(sdev), - &flow->fd->attr, - flow->fd->items, - flow->fd->actions, + flow->rule.attr, + flow->rule.pattern, + flow->rule.actions, &ferror); ret = rte_errno; if (ret) diff --git a/drivers/net/failsafe/failsafe_flow.c b/drivers/net/failsafe/failsafe_flow.c index bfe42fcee..5e2b5f7c6 100644 --- a/drivers/net/failsafe/failsafe_flow.c +++ b/drivers/net/failsafe/failsafe_flow.c @@ -3,8 +3,11 @@ * Copyright 2017 Mellanox Technologies, Ltd */ +#include +#include #include +#include #include #include #include @@ -18,19 +21,33 @@ fs_flow_allocate(const struct rte_flow_attr *attr, const struct rte_flow_action *actions) { struct rte_flow *flow; - size_t fdsz; + const struct rte_flow_conv_rule rule = { + .attr_ro = attr, + .pattern_ro = items, + .actions_ro = actions, + }; + struct rte_flow_error error; + int ret; - fdsz = rte_flow_copy(NULL, 0, attr, items, actions); - flow = rte_zmalloc(NULL, - sizeof(struct rte_flow) + fdsz, + ret = rte_flow_conv(RTE_FLOW_CONV_OP_RULE, NULL, 0, &rule, &error); + if (ret < 0) { + ERROR("Unable to process flow rule (%s): %s", + error.message ? error.message : "unspecified", + strerror(rte_errno)); + return NULL; + } + flow = rte_zmalloc(NULL, offsetof(struct rte_flow, rule) + ret, RTE_CACHE_LINE_SIZE); if (flow == NULL) { ERROR("Could not allocate new flow"); return NULL; } - flow->fd = (void *)((uintptr_t)flow + sizeof(*flow)); - if (rte_flow_copy(flow->fd, fdsz, attr, items, actions) != fdsz) { - ERROR("Failed to copy flow description"); + ret = rte_flow_conv(RTE_FLOW_CONV_OP_RULE, &flow->rule, ret, &rule, + &error); + if (ret < 0) { + ERROR("Failed to copy flow rule (%s): %s", + error.message ? error.message : "unspecified", + strerror(rte_errno)); rte_free(flow); return NULL; } diff --git a/drivers/net/failsafe/failsafe_private.h b/drivers/net/failsafe/failsafe_private.h index 886af8616..cc1f0343d 100644 --- a/drivers/net/failsafe/failsafe_private.h +++ b/drivers/net/failsafe/failsafe_private.h @@ -6,6 +6,7 @@ #ifndef _RTE_ETH_FAILSAFE_PRIVATE_H_ #define _RTE_ETH_FAILSAFE_PRIVATE_H_ +#include #include #include @@ -13,6 +14,7 @@ #include #include #include +#include #include #define FAILSAFE_DRIVER_NAME "Fail-safe PMD" @@ -81,7 +83,8 @@ struct rte_flow { /* sub_flows */ struct rte_flow *flows[FAILSAFE_MAX_ETHPORTS]; /* flow description for synchronization */ - struct rte_flow_desc *fd; + struct rte_flow_conv_rule rule; + uint8_t rule_data[]; }; enum dev_state {