From patchwork Mon Oct 8 21:16:50 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ed Czeck X-Patchwork-Id: 46300 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 DC8501B143; Mon, 8 Oct 2018 23:17:08 +0200 (CEST) Received: from mail-qt1-f193.google.com (mail-qt1-f193.google.com [209.85.160.193]) by dpdk.org (Postfix) with ESMTP id BF39B7EE3 for ; Mon, 8 Oct 2018 23:17:06 +0200 (CEST) Received: by mail-qt1-f193.google.com with SMTP id e22-v6so15476835qto.6 for ; Mon, 08 Oct 2018 14:17:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=atomicrules-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=btUT5Il7Vyg/OEBAokJPcIld9lGLu6aiHvl+v/ci4yQ=; b=xGm2T71k0RPXiJcROa5soY7RKsa4SqtnYM+dpC7tk3/6ocaTmmc32ZEQhljGwfGXuu pnHEblXDNZkiT1UhgxDOdPc/AD8Gkw6KMgU9V2pQnlLPmcwEEh0IIS7ql+fCX3cQVclI ZeK2oBfG4CDEt1nmz9M2A/lHn9KNPvdsrJ9pDLzjdPYoA4IhdvwcX5ZPhQTN3FqvZfRz fleo92ZnCruVYD5vPYAPaXX5pIo0iqYRkCpZHWg3u704jBmCkBMwFG5Ib+9s3e3r1JgA BbhrykUqTd0pZucDz0MCQShFtN7dJkW8FX8+VcXXR1sKsdR26yNOlXYRjJkLt0LZLVdx ckSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=btUT5Il7Vyg/OEBAokJPcIld9lGLu6aiHvl+v/ci4yQ=; b=HnesSEk/wFGbwDed5+e6oSC4aEPYmt76n7CYelehVKHu1kY0aUFO1ci31mYFLkHnSA EIU7jjXlBBGo1olpT5psyvDNMhAjUxtQQOE2B7TZIRLPoBvYX70fUO0tbvBX62AHuN3c 4BUlM9rkgZ0L+H4yfP39THl2URXXpVZDPxsTepUhM5zk14jl4EHvVo5rfMBnabyxaSem 9V+1QR1iImOMaMNt4hWpt+nAj7npWWqOVLcHE1WBYWq9t3UWJWzgOBmFDoTuCyy65YgF 7+Um2FQs1K0tj6K1Q7EH+CJVyLYTI2uDGZuPHK9qLTVxN67qbmNG+G+SwxvW3+dy+IgH Uxrg== X-Gm-Message-State: ABuFfogFG1k/umYnLGk75XbfKyh/9HTwfyYnIY8PNEWEAYhakEk4wM+I odWmp4ID75WJ+5/+afdQcs2oh1sZNOA= X-Google-Smtp-Source: ACcGV60fOqMcpbKYzpP4ayqGXqerb5znCgYZrYLMLGWqPMtg57Trldvzjj8/XEX8RYV2JiNpb9SG3w== X-Received: by 2002:a0c:ec01:: with SMTP id y1-v6mr21175954qvo.188.1539033425772; Mon, 08 Oct 2018 14:17:05 -0700 (PDT) Received: from z170.home (pool-173-48-117-246.bstnma.fios.verizon.net. [173.48.117.246]) by smtp.gmail.com with ESMTPSA id y28-v6sm2699953qtj.9.2018.10.08.14.17.04 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 08 Oct 2018 14:17:04 -0700 (PDT) From: Ed Czeck To: dev@dpdk.org Cc: john.miller@atomicrules.com, shepard.siegel@atomicrules.com, ferruh.yigit@intel.com, Ed Czeck Date: Mon, 8 Oct 2018 17:16:50 -0400 Message-Id: <1539033410-21422-3-git-send-email-ed.czeck@atomicrules.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1539033410-21422-1-git-send-email-ed.czeck@atomicrules.com> References: <1539033410-21422-1-git-send-email-ed.czeck@atomicrules.com> Subject: [dpdk-dev] [PATCH 3/3] net/ark: support for updated Tx hardware with user meta data 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" Support for version 2 of DDM hardware. Add configurable setup for using DDM user meta data via CONFIG_RTE_LIBRTE_ARK_DDM_USER_META defaults to 0 for the meta data compatible with v1 hardware. Set to 1 use uudata64. Signed-off-by: Ed Czeck --- config/common_base | 1 + drivers/net/ark/ark_ddm.c | 5 ++++- drivers/net/ark/ark_ddm.h | 7 +++++-- drivers/net/ark/ark_ethdev_tx.c | 11 ++++++++++- 4 files changed, 20 insertions(+), 4 deletions(-) diff --git a/config/common_base b/config/common_base index 4bcbaf9..c346229 100644 --- a/config/common_base +++ b/config/common_base @@ -162,6 +162,7 @@ CONFIG_RTE_LIBRTE_ARK_DEBUG_RX=n CONFIG_RTE_LIBRTE_ARK_DEBUG_TX=n CONFIG_RTE_LIBRTE_ARK_DEBUG_STATS=n CONFIG_RTE_LIBRTE_ARK_DEBUG_TRACE=n +CONFIG_RTE_LIBRTE_ARK_DDM_USER_META=0 # # Compile AMD PMD diff --git a/drivers/net/ark/ark_ddm.c b/drivers/net/ark/ark_ddm.c index eea388a..70910d5 100644 --- a/drivers/net/ark/ark_ddm.c +++ b/drivers/net/ark/ark_ddm.c @@ -11,13 +11,16 @@ int ark_ddm_verify(struct ark_ddm_t *ddm) { + uint32_t hw_const; if (sizeof(struct ark_ddm_t) != ARK_DDM_EXPECTED_SIZE) { PMD_DRV_LOG(ERR, "ARK: DDM structure looks incorrect %d vs %zd\n", ARK_DDM_EXPECTED_SIZE, sizeof(struct ark_ddm_t)); return -1; } - if (ddm->cfg.const0 != ARK_DDM_CONST) { + hw_const = ddm->cfg.const0; + if (hw_const != ARK_DDM_CONST1 && + hw_const != ARK_DDM_CONST2) { PMD_DRV_LOG(ERR, "ARK: DDM module not found as expected 0x%08x\n", ddm->cfg.const0); return -1; diff --git a/drivers/net/ark/ark_ddm.h b/drivers/net/ark/ark_ddm.h index b37d1e0..5456b4b 100644 --- a/drivers/net/ark/ark_ddm.h +++ b/drivers/net/ark/ark_ddm.h @@ -19,7 +19,7 @@ /* struct defining Tx meta data -- fixed in FPGA -- 16 bytes */ struct ark_tx_meta { uint64_t physaddr; - uint32_t delta_ns; + uint32_t user1; uint16_t data_len; /* of this MBUF */ #define ARK_DDM_EOP 0x01 #define ARK_DDM_SOP 0x02 @@ -34,7 +34,10 @@ struct ark_tx_meta { * structs will never be instantiated in ram memory */ #define ARK_DDM_CFG 0x0000 -#define ARK_DDM_CONST 0xfacecafe +/* Set unique HW ID for hardware version */ +#define ARK_DDM_CONST2 (0x324d4444) +#define ARK_DDM_CONST1 (0xfacecafe) + struct ark_ddm_cfg_t { uint32_t r0; volatile uint32_t tlp_stats_clear; diff --git a/drivers/net/ark/ark_ethdev_tx.c b/drivers/net/ark/ark_ethdev_tx.c index 57188c2..ad5ab06 100644 --- a/drivers/net/ark/ark_ethdev_tx.c +++ b/drivers/net/ark/ark_ethdev_tx.c @@ -14,6 +14,15 @@ #define ARK_TX_META_OFFSET (RTE_PKTMBUF_HEADROOM - ARK_TX_META_SIZE) #define ARK_TX_MAX_NOCHAIN (RTE_MBUF_DEFAULT_DATAROOM) +/* Define source for TX meta data, const 0, from udata64 or user defined */ +#ifndef RTE_LIBRTE_ARK_DDM_USER_META +#define ARK_DDM_USER_META 0 +#elseif RTE_LIBRTE_ARK_DDM_USER_META == 1 +#define ARK_DDM_USER_META ((uint32_t)mbuf->udata64) +#else +#define ARK_DDM_USER_META RTE_LIBRTE_ARK_DDM_USER_META +#endif + /* ************************************************************************* */ struct ark_tx_queue { @@ -65,7 +74,7 @@ eth_ark_tx_meta_from_mbuf(struct ark_tx_meta *meta, uint8_t flags) { meta->physaddr = rte_mbuf_data_iova(mbuf); - meta->delta_ns = 0; + meta->user1 = ARK_DDM_USER_META; meta->data_len = rte_pktmbuf_data_len(mbuf); meta->flags = flags; }