Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/134115/?format=api
http://patches.dpdk.org/api/patches/134115/?format=api", "web_url": "http://patches.dpdk.org/project/dpdk/patch/20231111160006.455767-3-jesna.k.e@amd.com/", "project": { "id": 1, "url": "http://patches.dpdk.org/api/projects/1/?format=api", "name": "DPDK", "link_name": "dpdk", "list_id": "dev.dpdk.org", "list_email": "dev@dpdk.org", "web_url": "http://core.dpdk.org", "scm_url": "git://dpdk.org/dpdk", "webscm_url": "http://git.dpdk.org/dpdk", "list_archive_url": "https://inbox.dpdk.org/dev", "list_archive_url_format": "https://inbox.dpdk.org/dev/{}", "commit_url_format": "" }, "msgid": "<20231111160006.455767-3-jesna.k.e@amd.com>", "list_archive_url": "https://inbox.dpdk.org/dev/20231111160006.455767-3-jesna.k.e@amd.com", "date": "2023-11-11T16:00:06", "name": "[v1,3/3] net/axgbe: support TSO Implementation", "commit_ref": null, "pull_url": null, "state": "changes-requested", "archived": true, "hash": "9f9145e340c4485502bdb04efc5c5136a000868c", "submitter": { "id": 2920, "url": "http://patches.dpdk.org/api/people/2920/?format=api", "name": "Jesna K E", "email": "jesna.k.e@amd.com" }, "delegate": { "id": 319, "url": "http://patches.dpdk.org/api/users/319/?format=api", "username": "fyigit", "first_name": "Ferruh", "last_name": "Yigit", "email": "ferruh.yigit@amd.com" }, "mbox": "http://patches.dpdk.org/project/dpdk/patch/20231111160006.455767-3-jesna.k.e@amd.com/mbox/", "series": [ { "id": 30251, "url": "http://patches.dpdk.org/api/series/30251/?format=api", "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=30251", "date": "2023-11-11T16:00:04", "name": "[v1,1/3] net/axgbe: packet size doesn't exceed the configured MTU", "version": 1, "mbox": "http://patches.dpdk.org/series/30251/mbox/" } ], "comments": "http://patches.dpdk.org/api/patches/134115/comments/", "check": "fail", "checks": "http://patches.dpdk.org/api/patches/134115/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<dev-bounces@dpdk.org>", "X-Original-To": "patchwork@inbox.dpdk.org", "Delivered-To": "patchwork@inbox.dpdk.org", "Received": [ "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 813BB43304;\n\tSat, 11 Nov 2023 17:00:52 +0100 (CET)", "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 51342402B1;\n\tSat, 11 Nov 2023 17:00:46 +0100 (CET)", "from NAM11-BN8-obe.outbound.protection.outlook.com\n (mail-bn8nam11on2040.outbound.protection.outlook.com [40.107.236.40])\n by mails.dpdk.org (Postfix) with ESMTP id E6FCA402AE\n for <dev@dpdk.org>; Sat, 11 Nov 2023 17:00:43 +0100 (CET)", "from MN2PR19CA0027.namprd19.prod.outlook.com (2603:10b6:208:178::40)\n by SJ2PR12MB8873.namprd12.prod.outlook.com (2603:10b6:a03:53d::18)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6977.26; Sat, 11 Nov\n 2023 16:00:37 +0000", "from BL6PEPF0001AB71.namprd02.prod.outlook.com\n (2603:10b6:208:178:cafe::1a) by MN2PR19CA0027.outlook.office365.com\n (2603:10b6:208:178::40) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6977.21 via Frontend\n Transport; Sat, 11 Nov 2023 16:00:37 +0000", "from SATLEXMB04.amd.com (165.204.84.17) by\n BL6PEPF0001AB71.mail.protection.outlook.com (10.167.242.164) with Microsoft\n SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id\n 15.20.7002.13 via Frontend Transport; Sat, 11 Nov 2023 16:00:37 +0000", "from cae-fox.amd.com (10.180.168.240) by SATLEXMB04.amd.com\n (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Sat, 11 Nov\n 2023 10:00:34 -0600" ], "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=CoMMVUbFyB8cwgNS+YlFSr5RJjIEYjH2RM7Zl6oEFigBnVk/aVHDVR/IU81Ms4F1IV+vsnSLHFjyZjKh7e4FUwj47oK70DF7Z1nHzwMvYEa+BAE/Zl7uNnfK75MiihWzYlrhnqakiGwY0E1T8PtHimxwaAoriFiqbeQ+QOlj0vgZbCYCaCwDD5Dnv1/R67zIHwhrb8Qqq/xenK2tzADRpppxScug0Wl8jQW8xFuL6Pa0PvjCzZcxDmxUSSs+qvgryPz+EcwrvTsZ/6qqxBQmqLNxWDl+uw2au9w6oFoIFIBcCyeMn6IuvbOD/tQ6M7VVcFZ4j1URcL/jsoybmQXulA==", "ARC-Message-Signature": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector9901;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=bdyvZCOqZ1KSswq7rPKubB6ZGsfH21ehZ13LIaya6g4=;\n b=aA8rC0ODibk9COLFTWRhIXrswINFFUVk1/9FL8AApwBRNx7MHyPXJQKvppwn5gNtear87oVwcYPDLNzLjAm6Ws4EmQqX+7NT1QTnQEIbOEZI5TCuBnp11ySkkl6FnWoP72oiw9ZZNVppw8WBq8unRl42VYtUOwNFyiO7Stc1Aa8oFslKBkGJnXX3NoGunn5vh6BJaEuDXeTw8+vEec5MMHqkgZtpibx77P+h9ktlM+818vhOqUlHptpwFkzdxIQMApN6dPhowhqoDCWM9OHDcgDkAENvdrcaNrFyiJoeFMLFDWDQlhoifecHA1F6EIB35uS01dXzOcbUMy38QI4gsQ==", "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass (sender ip is\n 165.204.84.17) smtp.rcpttodomain=dpdk.org smtp.mailfrom=amd.com; dmarc=pass\n (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com;\n dkim=none (message not signed); arc=none (0)", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=bdyvZCOqZ1KSswq7rPKubB6ZGsfH21ehZ13LIaya6g4=;\n b=LOXaX0CIELuKGLqQr7vpsn3s75Y9252pzf/3icuijvnsW0+oeEQY968M5qYsYBw7+zPBzp8aAnrWMaP3C4qyH6o0RNdcA89esI9+Z/Ugml7GOVvtxf9EJi8iZgqwLOxoJ+LFJd2vCtcW+GCKowT//lA9aYQVAm0yjUDeDRuLY60=", "X-MS-Exchange-Authentication-Results": "spf=pass (sender IP is 165.204.84.17)\n smtp.mailfrom=amd.com; dkim=none (message not signed)\n header.d=none;dmarc=pass action=none header.from=amd.com;", "Received-SPF": "Pass (protection.outlook.com: domain of amd.com designates\n 165.204.84.17 as permitted sender) receiver=protection.outlook.com;\n client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C", "From": "Jesna K E <jesna.k.e@amd.com>", "To": "<dev@dpdk.org>", "CC": "<Ferruh.Yigit@amd.com>, <Selwin.Sebastian@amd.com>, Jesna K E\n <jesna.k.e@amd.com>", "Subject": "[PATCH v1 3/3] net/axgbe: support TSO Implementation", "Date": "Sat, 11 Nov 2023 21:30:06 +0530", "Message-ID": "<20231111160006.455767-3-jesna.k.e@amd.com>", "X-Mailer": "git-send-email 2.34.1", "In-Reply-To": "<20231111160006.455767-1-jesna.k.e@amd.com>", "References": "<20231111160006.455767-1-jesna.k.e@amd.com>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "Content-Type": "text/plain", "X-Originating-IP": "[10.180.168.240]", "X-ClientProxiedBy": "SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com\n (10.181.40.145)", "X-EOPAttributedMessage": "0", "X-MS-PublicTrafficType": "Email", "X-MS-TrafficTypeDiagnostic": "BL6PEPF0001AB71:EE_|SJ2PR12MB8873:EE_", "X-MS-Office365-Filtering-Correlation-Id": "5b6f9913-f4ef-493b-3558-08dbe2cf5861", "X-MS-Exchange-SenderADCheck": "1", "X-MS-Exchange-AntiSpam-Relay": "0", "X-Microsoft-Antispam": "BCL:0;", "X-Microsoft-Antispam-Message-Info": "\n vFmSlQ+tIem6nodUpMA3Mm9pXmqYOfF5gHz3LWdfULzA4Z8AowDELWsWPS7MibjZEeJrdNfnoJz31+QROoqPcPXN2xxLEWybMWL74AXf7YPsQNFaAJ5GWbPaKeOzK6ssgTxyPiqdalYTLXpLo7OBp8DVxB/X6AXX+ZgwpR4J4C8mQ54wTZtIEQbQ3T9EfEF7DS7wKqx1xlp1PqGOOTnQhSRn0srVGqGcF+tzVzZv0nhXSoXA4S2wHZGyWBwJDqdxFaafqn5Ps+CsjKacrxF5e4z4tmjLghDlO73vUVpz1Jy04GHnpskkAAQaKkwXBCTFg16FgO2r0BYfv3/0AWBTI2fkz5duwhnixSc4k+LPYUW+1tWL/at7511R4+t5SJIyBxsNvUihmCnU5IvNnC2q919NWucFen9tmHYN3/WYvfJjU2lXcmC91Umel/RexjIynwIr7XbY3fbifxQ22ehafKPpJ+FZ99AcX7nj0eTCPv8SJKb5MkygkMDW87P09KfnSSPkW8rsn5mDRlsEDaDSocDt3Gpb2EcUNBazsZ48pkfdWG9qfKmQd7qlmigjpfne+9dx1tUZQbLwhFSfGt5ocyl67lME3ZBt4RrDihybp/cAR/5bya+oQ+5MwbnssS28P4sqFMAqaChucce2MkFRTyZYrGfjCryNA5D7hIedEz24CSZfsVSNmXebtKwvFkFkfD9aT/EiuFVdkRC2xphTmYTOLpW07Pjq1HHIvgG3WUkiyJt/IH1XVMC7+vS0/Vrbu6Y+zM0CDfl5VPl8ip6czA==", "X-Forefront-Antispam-Report": "CIP:165.204.84.17; CTRY:US; LANG:en; SCL:1; SRV:;\n IPV:CAL; SFV:NSPM; H:SATLEXMB04.amd.com; PTR:InfoDomainNonexistent; CAT:NONE;\n SFS:(13230031)(4636009)(396003)(376002)(136003)(346002)(39860400002)(230922051799003)(451199024)(186009)(64100799003)(1800799009)(82310400011)(46966006)(36840700001)(40470700004)(40460700003)(16526019)(336012)(426003)(1076003)(26005)(7696005)(6666004)(2616005)(36860700001)(83380400001)(47076005)(5660300002)(4326008)(8936002)(8676002)(30864003)(2906002)(41300700001)(478600001)(316002)(6916009)(54906003)(70206006)(70586007)(36756003)(103116003)(86362001)(82740400003)(356005)(81166007)(40480700001)(36900700001);\n DIR:OUT; SFP:1101;", "X-OriginatorOrg": "amd.com", "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "11 Nov 2023 16:00:37.1619 (UTC)", "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 5b6f9913-f4ef-493b-3558-08dbe2cf5861", "X-MS-Exchange-CrossTenant-Id": "3dd8961f-e488-4e60-8e11-a82d994e183d", "X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp": "\n TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d; Ip=[165.204.84.17];\n Helo=[SATLEXMB04.amd.com]", "X-MS-Exchange-CrossTenant-AuthSource": "\n BL6PEPF0001AB71.namprd02.prod.outlook.com", "X-MS-Exchange-CrossTenant-AuthAs": "Anonymous", "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem", "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "SJ2PR12MB8873", "X-BeenThere": "dev@dpdk.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "DPDK patches and discussions <dev.dpdk.org>", "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>", "List-Archive": "<http://mails.dpdk.org/archives/dev/>", "List-Post": "<mailto:dev@dpdk.org>", "List-Help": "<mailto:dev-request@dpdk.org?subject=help>", "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>", "Errors-To": "dev-bounces@dpdk.org" }, "content": "Signed-off-by: Jesna K E <jesna.k.e@amd.com>\n---\n drivers/net/axgbe/axgbe_common.h | 11 +\n drivers/net/axgbe/axgbe_dev.c | 19 ++\n drivers/net/axgbe/axgbe_ethdev.c | 1 +\n drivers/net/axgbe/axgbe_ethdev.h | 1 +\n drivers/net/axgbe/axgbe_rxtx.c | 305 +++++++++++++++----------\n drivers/net/axgbe/axgbe_rxtx_vec_sse.c | 1 +\n 6 files changed, 223 insertions(+), 115 deletions(-)", "diff": "diff --git a/drivers/net/axgbe/axgbe_common.h b/drivers/net/axgbe/axgbe_common.h\nindex a5d11c5832..1face6f361 100644\n--- a/drivers/net/axgbe/axgbe_common.h\n+++ b/drivers/net/axgbe/axgbe_common.h\n@@ -162,6 +162,9 @@\n #define DMA_CH_SR\t\t\t0x60\n \n /* DMA channel register entry bit positions and sizes */\n+//TSO\n+#define DMA_CH_CR_MSS_INDEX 0\n+#define DMA_CH_CR_MSS_WIDTH 14\n #define DMA_CH_CR_PBLX8_INDEX\t\t16\n #define DMA_CH_CR_PBLX8_WIDTH\t\t1\n #define DMA_CH_CR_SPH_INDEX\t\t24\n@@ -1232,6 +1235,14 @@\n #define TX_CONTEXT_DESC3_VT_INDEX\t\t0\n #define TX_CONTEXT_DESC3_VT_WIDTH\t\t16\n \n+//TSO\n+#define TX_NORMAL_DESC3_TPL_INDEX 0\n+#define TX_NORMAL_DESC3_TPL_WIDTH 18\n+#define TX_NORMAL_DESC3_THL_INDEX 19\n+#define TX_NORMAL_DESC3_THL_WIDTH 4\n+#define TX_CONTEXT_DESC3_OSTC_INDEX 27\n+#define TX_CONTEXT_DESC3_OSTC_WIDTH 1\n+\n #define TX_NORMAL_DESC2_HL_B1L_INDEX\t\t0\n #define TX_NORMAL_DESC2_HL_B1L_WIDTH\t\t14\n #define TX_NORMAL_DESC2_IC_INDEX\t\t31\ndiff --git a/drivers/net/axgbe/axgbe_dev.c b/drivers/net/axgbe/axgbe_dev.c\nindex 6a7fddffca..7e0d387fc3 100644\n--- a/drivers/net/axgbe/axgbe_dev.c\n+++ b/drivers/net/axgbe/axgbe_dev.c\n@@ -808,6 +808,24 @@ int axgbe_write_rss_lookup_table(struct axgbe_port *pdata)\n \treturn 0;\n }\n \n+\n+static void xgbe_config_tso_mode(struct axgbe_port *pdata)\n+{\n+ unsigned int i;\n+\n+ struct axgbe_tx_queue *txq;\n+\n+ for (i = 0; i < pdata->eth_dev->data->nb_tx_queues; i++) {\n+ txq = pdata->eth_dev->data->tx_queues[i];\n+ AXGMAC_DMA_IOWRITE_BITS(txq,DMA_CH_TCR, TSE,\n+ 1);\n+\t\tAXGMAC_DMA_IOWRITE_BITS(txq,DMA_CH_CR, MSS,\n+\t\t\t\t\t800);\n+ }\n+\n+}\n+\n+\n static int axgbe_enable_rss(struct axgbe_port *pdata)\n {\n \tint ret;\n@@ -1314,6 +1332,7 @@ static int axgbe_init(struct axgbe_port *pdata)\n \taxgbe_config_rx_pbl_val(pdata);\n \taxgbe_config_rx_buffer_size(pdata);\n \taxgbe_config_rss(pdata);\n+\txgbe_config_tso_mode(pdata);\n \twrapper_tx_desc_init(pdata);\n \tret = wrapper_rx_desc_init(pdata);\n \tif (ret)\ndiff --git a/drivers/net/axgbe/axgbe_ethdev.c b/drivers/net/axgbe/axgbe_ethdev.c\nindex e1cb60c1c3..5aa8743a1a 100644\n--- a/drivers/net/axgbe/axgbe_ethdev.c\n+++ b/drivers/net/axgbe/axgbe_ethdev.c\n@@ -1237,6 +1237,7 @@ axgbe_dev_info_get(struct rte_eth_dev *dev, struct rte_eth_dev_info *dev_info)\n \t\tRTE_ETH_TX_OFFLOAD_IPV4_CKSUM |\n \t\tRTE_ETH_TX_OFFLOAD_MULTI_SEGS |\n \t\tRTE_ETH_TX_OFFLOAD_UDP_CKSUM |\n+\t\tRTE_ETH_TX_OFFLOAD_TCP_TSO |\n \t\tRTE_ETH_TX_OFFLOAD_TCP_CKSUM;\n \n \tif (pdata->hw_feat.rss) {\ndiff --git a/drivers/net/axgbe/axgbe_ethdev.h b/drivers/net/axgbe/axgbe_ethdev.h\nindex 7f19321d88..31a583c2c6 100644\n--- a/drivers/net/axgbe/axgbe_ethdev.h\n+++ b/drivers/net/axgbe/axgbe_ethdev.h\n@@ -583,6 +583,7 @@ struct axgbe_port {\n \tunsigned int tx_osp_mode;\n \tunsigned int tx_max_fifo_size;\n \tunsigned int multi_segs_tx;\n+\tunsigned int tso_tx;\n \n \t/* Rx settings */\n \tunsigned int rx_sf_mode;\ndiff --git a/drivers/net/axgbe/axgbe_rxtx.c b/drivers/net/axgbe/axgbe_rxtx.c\nindex 68aa67a3fa..6b5ea6d622 100644\n--- a/drivers/net/axgbe/axgbe_rxtx.c\n+++ b/drivers/net/axgbe/axgbe_rxtx.c\n@@ -643,6 +643,10 @@ int axgbe_dev_tx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx,\n \t\t\t\tRTE_ETH_TX_OFFLOAD_MULTI_SEGS))\n \t\tpdata->multi_segs_tx = true;\n \n+\tif ((dev_data->dev_conf.txmode.offloads &\n+ RTE_ETH_TX_OFFLOAD_TCP_TSO))\n+ pdata->tso_tx = true;\n+\n \n \treturn 0;\n }\n@@ -843,7 +847,7 @@ static int axgbe_xmit_hw(struct axgbe_tx_queue *txq,\n \n \tidx = AXGBE_GET_DESC_IDX(txq, txq->cur);\n \tdesc = &txq->desc[idx];\n-\n+\tprintf(\"tso::Inside axgbe_xmit_hw \\n\");\n \t/* Update buffer address and length */\n \tdesc->baddr = rte_mbuf_data_iova(mbuf);\n \tAXGMAC_SET_BITS_LE(desc->desc2, TX_NORMAL_DESC2, HL_B1L,\n@@ -889,7 +893,6 @@ static int axgbe_xmit_hw(struct axgbe_tx_queue *txq,\n \tAXGMAC_SET_BITS_LE(desc->desc3, TX_NORMAL_DESC3, OWN, 1);\n \trte_wmb();\n \n-\n \t/* Save mbuf */\n \ttxq->sw_ring[idx] = mbuf;\n \t/* Update current index*/\n@@ -900,138 +903,208 @@ static int axgbe_xmit_hw(struct axgbe_tx_queue *txq,\n \treturn 0;\n }\n \n+\n /* Tx Descriptor formation for segmented mbuf\n * Each mbuf will require multiple descriptors\n */\n \n static int\n axgbe_xmit_hw_seg(struct axgbe_tx_queue *txq,\n-\t\tstruct rte_mbuf *mbuf)\n+ struct rte_mbuf *mbuf)\n {\n-\tvolatile struct axgbe_tx_desc *desc;\n-\tuint16_t idx;\n-\tuint64_t mask;\n-\tint start_index;\n-\tuint32_t pkt_len = 0;\n-\tint nb_desc_free;\n-\tstruct rte_mbuf *tx_pkt;\n+ volatile struct axgbe_tx_desc *desc;\n+ uint16_t idx;\n+ uint64_t mask;\n+ int start_index;\n+ uint32_t pkt_len = 0;\n+ int nb_desc_free;\n+ struct rte_mbuf *tx_pkt;\n+ uint64_t l2_len = 0;\n+ uint64_t l3_len = 0;\n+ uint64_t l4_len = 0;\n+ uint64_t tso_segsz = 0;\n+ uint64_t total_hdr_len;\n+\tint tso = 0;\n+\n+ /*Parameters required for tso*/\n+ l2_len = mbuf->l2_len;\n+ l3_len = mbuf->l3_len;\n+ l4_len = mbuf->l4_len;\n+ tso_segsz = mbuf->tso_segsz;\n+ total_hdr_len = l2_len + l3_len + l4_len;\n+\n+ if ((txq->pdata->tso_tx))\n+ tso = 1;\n+ else\n+ tso = 0;\n+\n+ printf(\"tso:l2_len = %ld,l3_len=%ld,l4_len=%ld,tso_segsz=%ld,total_hdr_len%ld\\n\",l2_len,l3_len,l4_len,\n+ tso_segsz,total_hdr_len);\n+\n+ nb_desc_free = txq->nb_desc - (txq->cur - txq->dirty);\n+\n+ printf(\"tso::Inside axgbe_xmit_hw_seg \\n\");\n+ if (mbuf->nb_segs > nb_desc_free) {\n+ axgbe_xmit_cleanup_seg(txq);\n+ nb_desc_free = txq->nb_desc - (txq->cur - txq->dirty);\n+ if (unlikely(mbuf->nb_segs > nb_desc_free))\n+ return RTE_ETH_TX_DESC_UNAVAIL;\n+ }\n+\n+ idx = AXGBE_GET_DESC_IDX(txq, txq->cur);\n+ desc = &txq->desc[idx];\n+ /* Saving the start index for setting the OWN bit finally */\n+ start_index = idx;\n+\ttx_pkt = mbuf;\n+ /* Max_pkt len = 9018 ; need to update it according to Jumbo pkt size */\n+ pkt_len = tx_pkt->pkt_len;\n \n-\tnb_desc_free = txq->nb_desc - (txq->cur - txq->dirty);\n+ /* Update buffer address and length */\n+ desc->baddr = rte_pktmbuf_iova_offset(mbuf,0);\n+ /*For TSO first buffer contains the Header */\n+ if (tso)\n+\tAXGMAC_SET_BITS_LE(desc->desc2, TX_NORMAL_DESC2, HL_B1L,\n+ total_hdr_len);\n+\telse\n+ AXGMAC_SET_BITS_LE(desc->desc2, TX_NORMAL_DESC2, HL_B1L,\n+ tx_pkt->data_len);\n \n-\tif (mbuf->nb_segs > nb_desc_free) {\n-\t\taxgbe_xmit_cleanup_seg(txq);\n-\t\tnb_desc_free = txq->nb_desc - (txq->cur - txq->dirty);\n-\t\tif (unlikely(mbuf->nb_segs > nb_desc_free))\n-\t\t\treturn RTE_ETH_TX_DESC_UNAVAIL;\n-\t}\n+\trte_wmb();\n \n+\t/* Timestamp enablement check */\n+ if (mbuf->ol_flags & RTE_MBUF_F_TX_IEEE1588_TMST)\n+ AXGMAC_SET_BITS_LE(desc->desc2, TX_NORMAL_DESC2, TTSE, 1);\n+\n+ rte_wmb();\n+ /* Mark it as First Descriptor */\n+ AXGMAC_SET_BITS_LE(desc->desc3, TX_NORMAL_DESC3, FD, 1);\n+ /* Mark it as a NORMAL descriptor */\n+ AXGMAC_SET_BITS_LE(desc->desc3, TX_NORMAL_DESC3, CTXT, 0);\n+ /* configure h/w Offload */\n+ mask = mbuf->ol_flags & RTE_MBUF_F_TX_L4_MASK;\n+ if (mask == RTE_MBUF_F_TX_TCP_CKSUM || mask == RTE_MBUF_F_TX_UDP_CKSUM)\n+ AXGMAC_SET_BITS_LE(desc->desc3, TX_NORMAL_DESC3, CIC, 0x3);\n+ else if (mbuf->ol_flags & RTE_MBUF_F_TX_IP_CKSUM)\n+ AXGMAC_SET_BITS_LE(desc->desc3, TX_NORMAL_DESC3, CIC, 0x1);\n+ rte_wmb();\n+\n+ if (mbuf->ol_flags & (RTE_MBUF_F_TX_VLAN | RTE_MBUF_F_TX_QINQ)) {\n+ /* Mark it as a CONTEXT descriptor */\n+ AXGMAC_SET_BITS_LE(desc->desc3, TX_CONTEXT_DESC3,\n+ CTXT, 1);\n+ /* Set the VLAN tag */\n+ AXGMAC_SET_BITS_LE(desc->desc3, TX_CONTEXT_DESC3,\n+ VT, mbuf->vlan_tci);\n+ /* Indicate this descriptor contains the VLAN tag */\n+ AXGMAC_SET_BITS_LE(desc->desc3, TX_CONTEXT_DESC3,\n+ VLTV, 1);\n+ AXGMAC_SET_BITS_LE(desc->desc2, TX_NORMAL_DESC2, VTIR,\n+ TX_NORMAL_DESC2_VLAN_INSERT);\n+ } else {\n+ AXGMAC_SET_BITS_LE(desc->desc2, TX_NORMAL_DESC2, VTIR, 0x0);\n+ }\n+ rte_wmb();\n+\n+\t/*Register settings for TSO*/\n+ if (tso) {\n+ printf(\"Inside register setting-tso\\n\");\n+ /* Enable TSO */\n+ AXGMAC_SET_BITS_LE(desc->desc3, TX_NORMAL_DESC3, TSE,1);\n+ AXGMAC_SET_BITS_LE(desc->desc3, TX_NORMAL_DESC3, TPL,\n+ ((mbuf->pkt_len)-total_hdr_len));\n+ AXGMAC_SET_BITS_LE(desc->desc3, TX_NORMAL_DESC3, THL,\n+ l4_len);\n+ } else {\n+ /* Enable CRC and Pad Insertion */\n+ AXGMAC_SET_BITS_LE(desc->desc3, TX_NORMAL_DESC3, CPC, 0);\n+ /* Total msg length to transmit */\n+ AXGMAC_SET_BITS_LE(desc->desc3, TX_NORMAL_DESC3, FL,\n+ mbuf->pkt_len);\n+ }\n+#if 0\n+\t/*For TSO , needs one more descriptor to hold\n+\t * the Payload\n+\t * But while adding another descriptor packets are not\n+\t * transmitted */\n+ /* Save mbuf */\n+ txq->sw_ring[idx] = tx_pkt;\n+ /* Update current index*/\n+ txq->cur++;\n \tidx = AXGBE_GET_DESC_IDX(txq, txq->cur);\n \tdesc = &txq->desc[idx];\n-\t/* Saving the start index for setting the OWN bit finally */\n-\tstart_index = idx;\n+\tdesc->baddr = rte_pktmbuf_iova_offset(mbuf,total_hdr_len);\n+\tAXGMAC_SET_BITS_LE(desc->desc2,\n+\t\t\tTX_NORMAL_DESC2, HL_B1L, (mbuf->pkt_len)-total_hdr_len));\n \n-\ttx_pkt = mbuf;\n-\t/* Max_pkt len = 9018 ; need to update it according to Jumbo pkt size */\n-\tpkt_len = tx_pkt->pkt_len;\n+\tprintf(\"(mbuf->pkt_len)-total_hdr_len=%d\\n\",(mbuf->pkt_len)-total_hdr_len);\n+ printf(\"total_hdr_len=%d\\n\",total_hdr_len);\n \n-\t/* Update buffer address and length */\n-\tdesc->baddr = rte_mbuf_data_iova(tx_pkt);\n-\tAXGMAC_SET_BITS_LE(desc->desc2, TX_NORMAL_DESC2, HL_B1L,\n-\t\t\t\t\t tx_pkt->data_len);\n-\t/* Total msg length to transmit */\n-\tAXGMAC_SET_BITS_LE(desc->desc3, TX_NORMAL_DESC3, FL,\n-\t\t\t\t\t tx_pkt->pkt_len);\n-\t/* Timestamp enablement check */\n-\tif (mbuf->ol_flags & RTE_MBUF_F_TX_IEEE1588_TMST)\n-\t\tAXGMAC_SET_BITS_LE(desc->desc2, TX_NORMAL_DESC2, TTSE, 1);\n-\n-\trte_wmb();\n-\t/* Mark it as First Descriptor */\n-\tAXGMAC_SET_BITS_LE(desc->desc3, TX_NORMAL_DESC3, FD, 1);\n-\t/* Mark it as a NORMAL descriptor */\n \tAXGMAC_SET_BITS_LE(desc->desc3, TX_NORMAL_DESC3, CTXT, 0);\n-\t/* configure h/w Offload */\n-\tmask = mbuf->ol_flags & RTE_MBUF_F_TX_L4_MASK;\n-\tif (mask == RTE_MBUF_F_TX_TCP_CKSUM || mask == RTE_MBUF_F_TX_UDP_CKSUM)\n-\t\tAXGMAC_SET_BITS_LE(desc->desc3, TX_NORMAL_DESC3, CIC, 0x3);\n-\telse if (mbuf->ol_flags & RTE_MBUF_F_TX_IP_CKSUM)\n-\t\tAXGMAC_SET_BITS_LE(desc->desc3, TX_NORMAL_DESC3, CIC, 0x1);\n-\trte_wmb();\n-\n-\tif (mbuf->ol_flags & (RTE_MBUF_F_TX_VLAN | RTE_MBUF_F_TX_QINQ)) {\n-\t\t/* Mark it as a CONTEXT descriptor */\n-\t\tAXGMAC_SET_BITS_LE(desc->desc3, TX_CONTEXT_DESC3,\n-\t\t\t\tCTXT, 1);\n-\t\t/* Set the VLAN tag */\n-\t\tAXGMAC_SET_BITS_LE(desc->desc3, TX_CONTEXT_DESC3,\n-\t\t\t\tVT, mbuf->vlan_tci);\n-\t\t/* Indicate this descriptor contains the VLAN tag */\n-\t\tAXGMAC_SET_BITS_LE(desc->desc3, TX_CONTEXT_DESC3,\n-\t\t\t\tVLTV, 1);\n-\t\tAXGMAC_SET_BITS_LE(desc->desc2, TX_NORMAL_DESC2, VTIR,\n-\t\t\t\tTX_NORMAL_DESC2_VLAN_INSERT);\n-\t} else {\n-\t\tAXGMAC_SET_BITS_LE(desc->desc2, TX_NORMAL_DESC2, VTIR, 0x0);\n-\t}\n+\tAXGMAC_SET_BITS_LE(desc->desc3, TX_NORMAL_DESC3, OWN, 1);\n \trte_wmb();\n-\n-\t/* Save mbuf */\n-\ttxq->sw_ring[idx] = tx_pkt;\n-\t/* Update current index*/\n \ttxq->cur++;\n-\n-\ttx_pkt = tx_pkt->next;\n+#endif\n+#if 1\n+ /* Save mbuf */\n+ txq->sw_ring[idx] = tx_pkt;\n+ /* Update current index*/\n+ txq->cur++;\n+#endif\n+ tx_pkt = tx_pkt->next;\n \n \twhile (tx_pkt != NULL) {\n-\t\tidx = AXGBE_GET_DESC_IDX(txq, txq->cur);\n-\t\tdesc = &txq->desc[idx];\n-\n-\t\t/* Update buffer address and length */\n-\t\tdesc->baddr = rte_mbuf_data_iova(tx_pkt);\n-\n-\t\tAXGMAC_SET_BITS_LE(desc->desc2,\n-\t\t\t\tTX_NORMAL_DESC2, HL_B1L, tx_pkt->data_len);\n-\n-\t\trte_wmb();\n-\n-\t\t/* Mark it as a NORMAL descriptor */\n-\t\tAXGMAC_SET_BITS_LE(desc->desc3, TX_NORMAL_DESC3, CTXT, 0);\n-\t\t/* configure h/w Offload */\n-\t\tmask = mbuf->ol_flags & RTE_MBUF_F_TX_L4_MASK;\n-\t\tif (mask == RTE_MBUF_F_TX_TCP_CKSUM ||\n-\t\t\t\tmask == RTE_MBUF_F_TX_UDP_CKSUM)\n-\t\t\tAXGMAC_SET_BITS_LE(desc->desc3,\n-\t\t\t\t\tTX_NORMAL_DESC3, CIC, 0x3);\n-\t\telse if (mbuf->ol_flags & RTE_MBUF_F_TX_IP_CKSUM)\n-\t\t\tAXGMAC_SET_BITS_LE(desc->desc3,\n-\t\t\t\t\tTX_NORMAL_DESC3, CIC, 0x1);\n-\n-\t\trte_wmb();\n-\n-\t\t /* Set OWN bit */\n-\t\tAXGMAC_SET_BITS_LE(desc->desc3, TX_NORMAL_DESC3, OWN, 1);\n-\t\trte_wmb();\n-\n-\t\t/* Save mbuf */\n-\t\ttxq->sw_ring[idx] = tx_pkt;\n-\t\t/* Update current index*/\n-\t\ttxq->cur++;\n-\n-\t\ttx_pkt = tx_pkt->next;\n-\t}\n-\n-\t/* Set LD bit for the last descriptor */\n-\tAXGMAC_SET_BITS_LE(desc->desc3, TX_NORMAL_DESC3, LD, 1);\n-\trte_wmb();\n-\n-\t/* Update stats */\n-\ttxq->bytes += pkt_len;\n-\n-\t/* Set OWN bit for the first descriptor */\n-\tdesc = &txq->desc[start_index];\n-\tAXGMAC_SET_BITS_LE(desc->desc3, TX_NORMAL_DESC3, OWN, 1);\n-\trte_wmb();\n-\n+ idx = AXGBE_GET_DESC_IDX(txq, txq->cur);\n+ desc = &txq->desc[idx];\n+\n+\t\tif (tso)\n+\t\tdesc->baddr = rte_pktmbuf_iova_offset(mbuf,total_hdr_len);\n+\t\telse\n+ /* Update buffer address and length */\n+ desc->baddr = rte_mbuf_data_iova(tx_pkt);\n+\n+ AXGMAC_SET_BITS_LE(desc->desc2,\n+ TX_NORMAL_DESC2, HL_B1L, tx_pkt->data_len);\n+\n+ rte_wmb();\n+\n+ /* Mark it as a NORMAL descriptor */\n+ AXGMAC_SET_BITS_LE(desc->desc3, TX_NORMAL_DESC3, CTXT, 0);\n+ /* configure h/w Offload */\n+ mask = mbuf->ol_flags & RTE_MBUF_F_TX_L4_MASK;\n+ if (mask == RTE_MBUF_F_TX_TCP_CKSUM ||\n+ mask == RTE_MBUF_F_TX_UDP_CKSUM)\n+ AXGMAC_SET_BITS_LE(desc->desc3,\n+ TX_NORMAL_DESC3, CIC, 0x3);\n+ else if (mbuf->ol_flags & RTE_MBUF_F_TX_IP_CKSUM)\n+ AXGMAC_SET_BITS_LE(desc->desc3,\n+ TX_NORMAL_DESC3, CIC, 0x1);\n+\n+ rte_wmb();\n+\n+ /* Set OWN bit */\n+ AXGMAC_SET_BITS_LE(desc->desc3, TX_NORMAL_DESC3, OWN, 1);\n+ rte_wmb();\n+\n+ /* Save mbuf */\n+ txq->sw_ring[idx] = tx_pkt;\n+ /* Update current index*/\n+ txq->cur++;\n+\n+ tx_pkt = tx_pkt->next;\n+ }\n+\n+ /* Set LD bit for the last descriptor */\n+ AXGMAC_SET_BITS_LE(desc->desc3, TX_NORMAL_DESC3, LD, 1);\n+ rte_wmb();\n+\n+\tprintf(\"tso:: pkt_len = %d\\n\",pkt_len);\n+ /* Update stats */\n+ txq->bytes += pkt_len;\n+\n+ /* Set OWN bit for the first descriptor */\n+ desc = &txq->desc[start_index];\n+ AXGMAC_SET_BITS_LE(desc->desc3, TX_NORMAL_DESC3, OWN, 1);\n+ rte_wmb();\n \treturn 0;\n }\n \n@@ -1077,6 +1150,8 @@ axgbe_xmit_pkts_seg(void *tx_queue, struct rte_mbuf **tx_pkts,\n \t\t\t\tidx * sizeof(struct axgbe_tx_desc));\n \t/* Update tail reg with next immediate address to kick Tx DMA channel*/\n \tAXGMAC_DMA_IOWRITE(txq, DMA_CH_TDTR_LO, tail_addr);\n+\n+\n \ttxq->pkts += nb_pkt_sent;\n \treturn nb_pkt_sent;\n }\ndiff --git a/drivers/net/axgbe/axgbe_rxtx_vec_sse.c b/drivers/net/axgbe/axgbe_rxtx_vec_sse.c\nindex d95a446bef..7034d5737a 100644\n--- a/drivers/net/axgbe/axgbe_rxtx_vec_sse.c\n+++ b/drivers/net/axgbe/axgbe_rxtx_vec_sse.c\n@@ -65,6 +65,7 @@ axgbe_xmit_pkts_vec(void *tx_queue, struct rte_mbuf **tx_pkts,\n \tuint16_t idx, nb_commit, loop, i;\n \tuint32_t tail_addr;\n \n+\tprintf(\"jesna::Inside axgbe_xmit_pkts_vec \\n\");\n \ttxq = (struct axgbe_tx_queue *)tx_queue;\n \tif (txq->nb_desc_free < txq->free_thresh) {\n \t\taxgbe_xmit_cleanup_vec(txq);\n", "prefixes": [ "v1", "3/3" ] }{ "id": 134115, "url": "