From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 781D7A0C4B; Wed, 3 Nov 2021 01:55:33 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id DCA3141149; Wed, 3 Nov 2021 01:53:24 +0100 (CET) Received: from mail-pj1-f49.google.com (mail-pj1-f49.google.com [209.85.216.49]) by mails.dpdk.org (Postfix) with ESMTP id 6F31F41C25 for ; Wed, 3 Nov 2021 01:53:20 +0100 (CET) Received: by mail-pj1-f49.google.com with SMTP id gx15-20020a17090b124f00b001a695f3734aso144229pjb.0 for ; Tue, 02 Nov 2021 17:53:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version; bh=2tTrNJD9z31vO8c3NSm3rvRq+WJz/h8cGDlT/XnIxlc=; b=ACMr283j4vyU2xEF5aTfXniHRWKEsivroyjPVblGKl2nqcZkGgYYOJY46BSYWt988l Gu5+5NldBxkVcgJQ+34nicSWYuKVRM3PwJWWUPIACQC7k5+kCthgdXy62WuwNWReKrql iQD5iHjVaC1kuAKTJDlVJJyPq71asf2dkJqXk= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version; bh=2tTrNJD9z31vO8c3NSm3rvRq+WJz/h8cGDlT/XnIxlc=; b=dk9LjheW80zA+RLCBVHcH52kk28unpUJLPiIPB1hq/Ww/u4VgiO5pKhF3nSNfkaunC sLgHXNAr+ImmvnjBgEbUXmsMP/uTsLctU1GUFtcdkhIEiPRkpK//YXy9v6Et9L1ykz+K y2vU2wtD0NQulV7IFGKTLzdKOccPfuhZi49ZNrdaMiUschoL1WeWAa/2N6UzPCwiF4WU w+CaHRkImWBIrqlsT3SS698PG+VR2PeJrka8dnuH77y22+b6Zho2M9TAPtJrJs7V3b2K UYwXXV7b668Uw8V3aWGjAnxEx5RuT+yC7yRPxLWXzN3Sh5iQnh7CayF45B850DwjEkM7 hJnA== X-Gm-Message-State: AOAM530cRkkMvxGwpWrsBifq05/+609pcojISvPKd0fMkF9TR5LGFskc DVV/qN4K6W11rVKuE46d1YPa7pxiqy9gVaaaN5IFeYA/anF3leENDIY7gU/zsc2vtZrxoaULceL E6KvCyYvpydsVgC1buYUp1bjfIitcP0vC6hE9LM3fIkRBBPKBIjWPBRjUxkpIXeA= X-Google-Smtp-Source: ABdhPJwtoEYjxLy+99hQnhXdu5s9LjK0Ki+ltb0kCZcMGGHQCWFeVgu7aizEN8kjRGnDnhy2q7KN1w== X-Received: by 2002:a17:90b:3149:: with SMTP id ip9mr6835961pjb.232.1635900799257; Tue, 02 Nov 2021 17:53:19 -0700 (PDT) Received: from localhost.localdomain ([192.19.224.250]) by smtp.gmail.com with ESMTPSA id k2sm323450pfu.112.2021.11.02.17.53.18 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Tue, 02 Nov 2021 17:53:18 -0700 (PDT) From: Ajit Khaparde To: dev@dpdk.org Cc: Kishore Padmanabha , Mike Baucom , Shahaji Bhosle Date: Tue, 2 Nov 2021 17:52:50 -0700 Message-Id: <20211103005251.25524-20-ajit.khaparde@broadcom.com> X-Mailer: git-send-email 2.30.1 (Apple Git-130) In-Reply-To: <20211103005251.25524-1-ajit.khaparde@broadcom.com> References: <20211102040556.7840-1-venkatkumar.duvvuru@broadcom.com> <20211103005251.25524-1-ajit.khaparde@broadcom.com> MIME-Version: 1.0 Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-256; boundary="0000000000000e9a0605cfd7d6ea" X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: [dpdk-dev] [PATCH v4 19/20] net/bnxt: check mismatch of control and physical port X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 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" --0000000000000e9a0605cfd7d6ea Content-Transfer-Encoding: 8bit From: Kishore Padmanabha During the parsing of the ingress port ignore for a flow, added check to match the control port and the physical port that is configured to be ignored. If they do not match then the configuration to setup the svif ignore shall fail. Signed-off-by: Kishore Padmanabha Reviewed-by: Mike Baucom Reviewed-by: Shahaji Bhosle Acked-by: Ajit Khaparde --- drivers/net/bnxt/tf_ulp/ulp_port_db.c | 23 +++++++++++++++++++++++ drivers/net/bnxt/tf_ulp/ulp_port_db.h | 13 +++++++++++++ drivers/net/bnxt/tf_ulp/ulp_rte_parser.c | 12 ++++++++++++ 3 files changed, 48 insertions(+) diff --git a/drivers/net/bnxt/tf_ulp/ulp_port_db.c b/drivers/net/bnxt/tf_ulp/ulp_port_db.c index 5e7c1d1c17..f8ffb567b5 100644 --- a/drivers/net/bnxt/tf_ulp/ulp_port_db.c +++ b/drivers/net/bnxt/tf_ulp/ulp_port_db.c @@ -679,3 +679,26 @@ ulp_port_db_parent_vnic_get(struct bnxt_ulp_context *ulp_ctxt, } return -EINVAL; } + +/* + * Api to get the phy port for a given port id. + * + * ulp_ctxt [in] Ptr to ulp context + * port_id [in] device port id + * phy_port [out] phy_port of the dpdk port_id + * + * Returns 0 on success or negative number on failure. + */ +int32_t +ulp_port_db_phy_port_get(struct bnxt_ulp_context *ulp_ctxt, + uint32_t port_id, uint16_t *phy_port) +{ + struct ulp_func_if_info *info; + + info = ulp_port_db_func_if_info_get(ulp_ctxt, port_id); + if (info) { + *phy_port = info->phy_port_id; + return 0; + } + return -EINVAL; +} diff --git a/drivers/net/bnxt/tf_ulp/ulp_port_db.h b/drivers/net/bnxt/tf_ulp/ulp_port_db.h index 740c186e12..b112f1a216 100644 --- a/drivers/net/bnxt/tf_ulp/ulp_port_db.h +++ b/drivers/net/bnxt/tf_ulp/ulp_port_db.h @@ -314,4 +314,17 @@ int32_t ulp_port_db_parent_vnic_get(struct bnxt_ulp_context *ulp_ctxt, uint32_t port_id, uint8_t **vnic); +/* + * Api to get the phy port for a given port id. + * + * ulp_ctxt [in] Ptr to ulp context + * port_id [in] device port id + * phy_port [out] phy_port of the dpdk port_id + * + * Returns 0 on success or negative number on failure. + */ +int32_t +ulp_port_db_phy_port_get(struct bnxt_ulp_context *ulp_ctxt, + uint32_t port_id, uint16_t *phy_port); + #endif /* _ULP_PORT_DB_H_ */ diff --git a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c index 2ec3279239..f4274dd634 100644 --- a/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c +++ b/drivers/net/bnxt/tf_ulp/ulp_rte_parser.c @@ -686,6 +686,18 @@ ulp_rte_phy_port_hdr_handler(const struct rte_flow_item *item, ULP_COMP_FLD_IDX_WR(params, BNXT_ULP_CF_IDX_SVIF_FLAG, rte_be_to_cpu_16(svif)); if (!mask) { + uint32_t port_id = 0; + uint16_t phy_port = 0; + + /* Validate the control port */ + port_id = ULP_COMP_FLD_IDX_RD(params, + BNXT_ULP_CF_IDX_DEV_PORT_ID); + if (ulp_port_db_phy_port_get(params->ulp_ctx, + port_id, &phy_port) || + (uint16_t)port_spec->index != phy_port) { + BNXT_TF_DBG(ERR, "Mismatch of control and phy_port\n"); + return BNXT_TF_RC_PARSE_ERR; + } ULP_BITMAP_SET(params->hdr_bitmap.bits, BNXT_ULP_HDR_BIT_SVIF_IGNORE); memset(hdr_field->mask, 0xFF, sizeof(mask)); -- 2.30.1 (Apple Git-130) --0000000000000e9a0605cfd7d6ea--