From patchwork Wed Feb 3 17:45:47 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Balasubramanian Manoharan X-Patchwork-Id: 61112 Delivered-To: patch@linaro.org Received: by 10.112.43.199 with SMTP id y7csp443611lbl; Wed, 3 Feb 2016 09:53:50 -0800 (PST) X-Received: by 10.140.20.82 with SMTP id 76mr3250723qgi.5.1454522030326; Wed, 03 Feb 2016 09:53:50 -0800 (PST) Return-Path: Received: from lists.linaro.org (lists.linaro.org. [54.225.227.206]) by mx.google.com with ESMTP id r10si6402018qhc.128.2016.02.03.09.53.50; Wed, 03 Feb 2016 09:53:50 -0800 (PST) Received-SPF: pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.225.227.206 as permitted sender) client-ip=54.225.227.206; Authentication-Results: mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.225.227.206 as permitted sender) smtp.mailfrom=lng-odp-bounces@lists.linaro.org; dkim=neutral (body hash did not verify) header.i=@linaro.org Received: by lists.linaro.org (Postfix, from userid 109) id DE85061789; Wed, 3 Feb 2016 17:53:49 +0000 (UTC) Authentication-Results: lists.linaro.org; dkim=fail reason="verification failed; unprotected key" header.d=linaro.org header.i=@linaro.org header.b=L9hMVeTD; dkim-adsp=none (unprotected policy); dkim-atps=neutral X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on ip-10-142-244-252 X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H2,T_DKIM_INVALID,URIBL_BLOCKED autolearn=disabled version=3.4.0 Received: from [127.0.0.1] (localhost [127.0.0.1]) by lists.linaro.org (Postfix) with ESMTP id 3B0226177F; Wed, 3 Feb 2016 17:51:03 +0000 (UTC) X-Original-To: lng-odp@lists.linaro.org Delivered-To: lng-odp@lists.linaro.org Received: by lists.linaro.org (Postfix, from userid 109) id 201F9617A4; Wed, 3 Feb 2016 17:50:44 +0000 (UTC) Received: from mail-pf0-f175.google.com (mail-pf0-f175.google.com [209.85.192.175]) by lists.linaro.org (Postfix) with ESMTPS id 41297617BC for ; Wed, 3 Feb 2016 17:46:07 +0000 (UTC) Received: by mail-pf0-f175.google.com with SMTP id w123so17444646pfb.0 for ; Wed, 03 Feb 2016 09:46:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=TFjYeImqVEa5tm8IvxAVaWc3V+xoLGqMuRMA4VlCUn0=; b=L9hMVeTDV+/vUOwfUweIMYYEFG+xsexuGplbzstn8p3sEZHgso8hJH1Q9BD3XnBVl0 KTxkNVboB/ZP3jNOLL0Imh5sk/6Q+jX1in3Ganp05Hmo55umqfg6+ncTyssP86TYyPvI z7zPlBSiFCfLmIL9SCmzkeoK5KwUuHKze/tsQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=TFjYeImqVEa5tm8IvxAVaWc3V+xoLGqMuRMA4VlCUn0=; b=bSr17ln+MKA6rqydJbfGZwSdKBdqyufQaR78+btoYuJ6Pd59XJkAnqfUUVXuiyucUk lNXfH6bnTqHDZDlO3nZFEyeaTRsVLr5ddMe6wiNZotONwfOdKyTvZUl3FbkgQyMmste8 mGrVMTRdyAfRYqCZcV3Q/PYZ5CgSmnRMxTinHpMngELGCfXHf7smPehuOHqE/+cU8/vW GPwGiLunoIxSD1vXs/m/JAEURJZSrY5hPIpDbyDQn4KJt5lWZIb3FuwhV5G8JREIRsX4 xVYUlZI9RuXw8InEBRBh9Et9bJYSst92v6eonemjXjPpFULoIzCsr5XSlYrqFFaS4QYZ datw== X-Gm-Message-State: AG10YOR7Q/fyEsJETtoZnvmJMXfauw5VnxqyCYiQ75xHDlIgJAzRWKBfST3TCAbi1UQZQSMugS4= X-Received: by 10.98.44.66 with SMTP id s63mr4236069pfs.2.1454521566557; Wed, 03 Feb 2016 09:46:06 -0800 (PST) Received: from localhost.localdomain ([122.166.219.57]) by smtp.gmail.com with ESMTPSA id d65sm11237089pfb.74.2016.02.03.09.46.04 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 03 Feb 2016 09:46:05 -0800 (PST) From: Balasubramanian Manoharan To: lng-odp@lists.linaro.org Date: Wed, 3 Feb 2016 23:15:47 +0530 Message-Id: <1454521550-21579-2-git-send-email-bala.manoharan@linaro.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1454521550-21579-1-git-send-email-bala.manoharan@linaro.org> References: <1454521550-21579-1-git-send-email-bala.manoharan@linaro.org> X-Topics: Classification patch Subject: [lng-odp] [API-NEXT PATCHv5 1/4] api: classification: add pmr create api X-BeenThere: lng-odp@lists.linaro.org X-Mailman-Version: 2.1.16 Precedence: list List-Id: "The OpenDataPlane \(ODP\) List" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: lng-odp-bounces@lists.linaro.org Sender: "lng-odp" Packet match rule creation is modified to include source and destination class of service. Removes the ability to add any class of service directly with pktio. If a PMR needs to be applied at the pktio level the same should be applied to default class of service. Packet match rule destroy function is updated to removes the link between the source and destination class of service. odp_pmr_match_set_t handle is removed and pmr create function is modified to take number of terms and composite rule is created by providing more than one term. Signed-off-by: Balasubramanian Manoharan Reviewed-by: Petri Savolainen --- include/odp/api/classification.h | 140 +++++++++------------------------------ 1 file changed, 30 insertions(+), 110 deletions(-) diff --git a/include/odp/api/classification.h b/include/odp/api/classification.h index f46912e..076b3de 100644 --- a/include/odp/api/classification.h +++ b/include/odp/api/classification.h @@ -50,16 +50,11 @@ extern "C" { /** * @def ODP_PMR_INVAL * Invalid odp_pmr_t value. - * This value is returned from odp_pmr_create() + * This value is returned from odp_cls_pmr_create() * function on failure. */ /** - * @def ODP_PMR_SET_INVAL - * Invalid odp_pmr_set_t value. - */ - -/** * class of service packet drop policies */ typedef enum { @@ -286,50 +281,46 @@ typedef struct odp_pmr_match_t { } odp_pmr_match_t; /** - * Create a packet match rule with mask and value + * Create a packet match rule between source and destination class of service. + * This packet matching rule is applied on all packets arriving at the source + * class of service and packets satisfying this PMR are sent to the destination + * class of service. + * A composite PMR rule is created when the number of terms in the match rule + * is more than one. The composite rule is considered as matching only if + * the packet satisfies all the terms in Packet Match Rule. + * The underlying platform may not support all or any specific combination + * of value match rules, and the application should take care + * of inspecting the return value when installing such rules, and perform + * appropriate fallback action. * - * @param[in] match packet matching rule definition + * @param[in] terms Array of odp_pmr_match_t entries, one entry per + * term desired. + * @param[in] num_terms Number of terms in the match rule. + * @param[in] src_cos source CoS handle + * @param[in] dst_cos destination CoS handle * - * @return Handle of the matching rule - * @retval ODP_PMR_INVAL on failure + * @return Handle to the Packet Match Rule. + * @retval ODP_PMR_INVAL on failure */ -odp_pmr_t odp_pmr_create(const odp_pmr_match_t *match); +odp_pmr_t odp_cls_pmr_create(const odp_pmr_match_t *terms, int num_terms, + odp_cos_t src_cos, odp_cos_t dst_cos); /** - * Invalidate a packet match rule and vacate its resources + * Function to destroy a packet match rule + * Destroying a PMR removes the link between the source and destination + * class of service and this PMR will no longer be applied for packets arriving + * at the source class of service. All the resource associated with the PMR + * be release but the class of service will remain intact. + * Depending on the implementation details, destroying a composite rule + * may not guarantee the availability of hardware resources to create the + * same or essentially similar rule. * * @param[in] pmr_id Identifier of the PMR to be destroyed * * @retval 0 on success * @retval <0 on failure */ -int odp_pmr_destroy(odp_pmr_t pmr_id); - -/** - * Apply a PMR to a pktio to assign a CoS. - * - * @param[in] pmr_id PMR to be activated - * @param[in] src_pktio pktio to which this PMR is to be applied - * @param[in] dst_cos CoS to be assigned by this PMR - * - * @retval 0 on success - * @retval <0 on failure - */ -int odp_pktio_pmr_cos(odp_pmr_t pmr_id, - odp_pktio_t src_pktio, odp_cos_t dst_cos); - -/** - * Cascade a PMR to refine packets from one CoS to another. - * - * @param[in] pmr_id PMR to be activated - * @param[in] src_cos CoS to be filtered - * @param[in] dst_cos CoS to be assigned to packets filtered - * from src_cos that match pmr_id. - * - * @retval 0 on success - * @retval <0 on failure - */ -int odp_cos_pmr_cos(odp_pmr_t pmr_id, odp_cos_t src_cos, odp_cos_t dst_cos); +int odp_cls_pmr_destroy(odp_pmr_t pmr_id); /** * Inquire about matching terms supported by the classifier @@ -346,64 +337,6 @@ unsigned long long odp_pmr_terms_cap(void); unsigned odp_pmr_terms_avail(void); /** - * @typedef odp_pmr_set_t - * An opaque handle to a composite packet match rule-set - */ - -/** - * Create a composite packet match rule in the form of an array of individual - * match rules. - * The underlying platform may not support all or any specific combination - * of value match rules, and the application should take care - * of inspecting the return value when installing such rules, and perform - * appropriate fallback action. - * - * @param[in] num_terms Number of terms in the match rule. - * @param[in] terms Array of num_terms entries, one entry per - * term desired. - * @param[out] pmr_set_id Returned handle to the composite rule set. - * - * @return the number of terms elements - * that have been successfully mapped to the - * underlying platform classification engine - * @retval <0 on failure - */ -int odp_pmr_match_set_create(int num_terms, const odp_pmr_match_t *terms, - odp_pmr_set_t *pmr_set_id); - -/** - * Function to delete a composite packet match rule set - * Depending on the implementation details, destroying a rule-set - * may not guarantee the availability of hardware resources to create the - * same or essentially similar rule-set. - * - * All of the resources pertaining to the match set associated with the - * class-of-service will be released, but the class-of-service will - * remain intact. - * - * @param[in] pmr_set_id A composite rule-set handle - * returned when created. - * - * @retval 0 on success - * @retval <0 on failure - */ -int odp_pmr_match_set_destroy(odp_pmr_set_t pmr_set_id); - -/** - * Apply a PMR Match Set to a pktio to assign a CoS. - * - * @param[in] pmr_set_id PMR match set to be activated - * @param[in] src_pktio pktio to which this PMR match - * set is to be applied - * @param[in] dst_cos CoS to be assigned by this PMR match set - * - * @retval 0 on success - * @retval <0 on failure - */ -int odp_pktio_pmr_match_set_cos(odp_pmr_set_t pmr_set_id, odp_pktio_t src_pktio, - odp_cos_t dst_cos); - -/** * Assigns a packet pool for a specific class of service. * All the packets belonging to the given class of service will * be allocated from the assigned packet pool. @@ -456,19 +389,6 @@ uint64_t odp_cos_to_u64(odp_cos_t hdl); uint64_t odp_pmr_to_u64(odp_pmr_t hdl); /** - * Get printable value for an odp_pmr_set_t - * - * @param hdl odp_pmr_set_t handle to be printed - * @return uint64_t value that can be used to print/display this - * handle - * - * @note This routine is intended to be used for diagnostic purposes - * to enable applications to generate a printable value that represents - * an odp_pmr_set_t handle. - */ -uint64_t odp_pmr_set_to_u64(odp_pmr_set_t hdl); - -/** * @} */