From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <hemant.agrawal@nxp.com>
Received: from NAM03-BY2-obe.outbound.protection.outlook.com
 (mail-by2nam03on0087.outbound.protection.outlook.com [104.47.42.87])
 by dpdk.org (Postfix) with ESMTP id 15C25FA45
 for <dev@dpdk.org>; Fri,  3 Mar 2017 08:14:36 +0100 (CET)
Received: from BN6PR03CA0045.namprd03.prod.outlook.com (10.175.124.31) by
 CY1PR0301MB0732.namprd03.prod.outlook.com (10.160.159.150) with Microsoft
 SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.933.12; Fri, 3 Mar
 2017 07:14:34 +0000
Received: from BY2FFO11FD043.protection.gbl (2a01:111:f400:7c0c::170) by
 BN6PR03CA0045.outlook.office365.com (2603:10b6:404:10c::31) with Microsoft
 SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.947.12 via
 Frontend Transport; Fri, 3 Mar 2017 07:14:33 +0000
Authentication-Results: spf=fail (sender IP is 192.88.168.50)
 smtp.mailfrom=nxp.com; caviumnetworks.com; dkim=none (message not signed)
 header.d=none; caviumnetworks.com; dmarc=fail action=none header.from=nxp.com; 
Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not
 designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; 
 client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net;
Received: from tx30smr01.am.freescale.net (192.88.168.50) by
 BY2FFO11FD043.mail.protection.outlook.com (10.1.14.228) with Microsoft SMTP
 Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.933.11
 via Frontend Transport; Fri, 3 Mar 2017 07:14:32 +0000
Received: from bf-netperf1.idc ([10.232.134.28])
 by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v237D50V005035;
 Fri, 3 Mar 2017 00:14:30 -0700
From: Hemant Agrawal <hemant.agrawal@nxp.com>
To: <dev@dpdk.org>
CC: <thomas.monjalon@6wind.com>, <bruce.richardson@intel.com>,
 <shreyansh.jain@nxp.com>, <john.mcnamara@intel.com>,
 <ferruh.yigit@intel.com>, <jerin.jacob@caviumnetworks.com>
Date: Fri, 3 Mar 2017 18:16:45 +0530
Message-ID: <1488545223-25739-29-git-send-email-hemant.agrawal@nxp.com>
X-Mailer: git-send-email 1.9.1
In-Reply-To: <1488545223-25739-1-git-send-email-hemant.agrawal@nxp.com>
References: <1487205586-6785-1-git-send-email-hemant.agrawal@nxp.com>
 <1488545223-25739-1-git-send-email-hemant.agrawal@nxp.com>
X-EOPAttributedMessage: 0
X-Matching-Connectors: 131329988731654833;
 (91ab9b29-cfa4-454e-5278-08d120cd25b8); ()
X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI;
 SFV:NSPM;
 SFS:(10009020)(6009001)(7916002)(336005)(39860400002)(39850400002)(39840400002)(39380400002)(39450400003)(39410400002)(39400400002)(2980300002)(1109001)(1110001)(339900001)(189002)(199003)(9170700003)(33646002)(50226002)(2351001)(110136004)(189998001)(106466001)(5660300001)(305945005)(36756003)(86362001)(2906002)(85426001)(53936002)(47776003)(4326008)(626004)(356003)(8656002)(38730400002)(5003940100001)(8676002)(81166006)(77096006)(104016004)(48376002)(8936002)(2950100002)(54906002)(92566002)(50466002)(105606002)(6916009)(76176999)(50986999)(6666003);
 DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR0301MB0732; H:tx30smr01.am.freescale.net;
 FPR:; SPF:Fail; MLV:ovrnspm; MX:1; A:1; PTR:InfoDomainNonexistent; LANG:en; 
X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD043;
 1:L460PLUuwzpvIwEjBZahI4vZmAOueYoX0b7af8PYxDMjG2anat7kDQiRrLUABgu3itI/X6m3nv58wnuDba984izsyh4sC3UfKBGeaJX9la0pTs9wOkfaH6OYKzGCFZ33u6i0Y7qD3WlWUHVikj6ZbvehXXJuA50sFIOSMcXbwnnfSRVofGexC4KrC4nk985i6w9IiuVdJW5y/W0fDrtwFzLB5taB2nsfdshn2mVRoROp2Onc+cHugDoUwrQnQGONRHqbqsGDJzj/6CpaqevE0YwT8gchZwie+9NnK5gWpnZW1VpNf23EBG7wQ5eDpNep7E0ufEB8KTAHfIXvBrtRaIHe82W0EHZkF4o+hHrgf+kcxxSn4d8l45VDBqCaTOqzV5RTOtdTsxSfz4jj0XEL4+QcalUCTNzcrQe+QfVEi59sPBd3HI6h8XYZMRDX+JMTJCocigTgaH98N9zd6IGGHZYZ/P2V2QJn9AsIRzyo6cuxvbc6RlYD56eM6Io0Qg2lGfUsVQtsE2s67cV4Q0/CUb5pc0tGwOGu4LOvMUWbr6EyDq+VpIbwa0wXbMPrcv9ZjE3HTLaJJT5aH4QgZIZTXd8KRkaM03OyDq6TV9pf/qhPJ9YihrAPRHQzeb3e/KnlkZ+5udleT8pVyzrXlGzIWQ==
MIME-Version: 1.0
Content-Type: text/plain
X-MS-Office365-Filtering-Correlation-Id: 9c5e2830-de37-4e71-d2b1-08d46204f12b
X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001);
 SRVR:CY1PR0301MB0732; 
X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB0732;
 3:M8Ilcfp6oGORkGk9+OXjQQOx2ah12FY4TmdcbvGdtwf++0vd9eE/pcIaKUSqLgdqtf+Ly7ddqNSeGgtnANgfGzUCzH7GU48Zd7k99LDZu4k1wc3X9Pr0zpTMIgfH2iFej59D+IXJJss6N9yfaUPHXcsKrFKKhfHx4x8yjc60HHiZfg1AzfqI6Czs4vxXnW12Nv3Ku7AYmUey0rmI1t+0dOa081sVTENyJ2mvNmm/6C0EFr3iPV/NvmzWDcpxikIDtGhr2VL00pUAS2rFVACoP47BuDaZ4arHP/I1fls8iFcl/hy7OtJ3Jm9f0sI7pCJ/rgDit10v0uSzzFyPwrzpO+VFxF9faEWLKQVg/c2eqLwgBTxS1v9CmsVb0e+lXpkp;
 25:/9Yo+N/aECT3BprxPNzC26/X7HFVpHiw3JKOZ6hqT/tmaw1p34r+u1w5hD6pmSb1c/f98MXLm4QobOeOc+N9AX0UWU3xx1/TxbkYbrApvqdIrHGQZV9Bev7ecWNhcl1HkcdRIWbwtd8y+hII3b5uEsquL6VOB4x/MwFxzMAOI7nQTguo2N2GW8mZo+2hKuvszRMj9HGdIGmlVr9BhhgH5Rzvn7FUthFOB2Kaorh1gCupbUHGaSx1eC7IE1w+yy5U5VI232X77c4NyyUU7fsoZtHL5OUwrg/64Fo3LfWk1LnEIu4djCZqsn1eATpuSyg4LVQzGdJJTU3TwvTquAq2ncRj5RVG1Cs1gCcmKXp0kTRk7KAAZIlCrbbuEqQzsj83ry7sk4fSaBhMez5jm0h8fnBTSKknBzXfLFE5SLtJcODW7pZ9yQFH8WcY384UFGKsXBxiOivGbV1v3iAMYlvFzA==
X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB0732;
 31:ywHWBuniDJBlEWifJPH8Z82DmcNUJ35hm97KOZFeHkf3/Hi8aYODtzbnd7GBaYeJv0dtdTb9CBSqFg1Bu1mxpqR9kST8VXuEajn6pq6fR2gJOL+aEOrYG6Ffv74qPXEKkAarASuWg3WjHxjARab0uYBwIrbZNTa1JdJIkQjNzXm8wkbbxcYEH0FCjMrmepA1goFsB4d0vSSPSg/VIf7/cyXy19qVTk1FGJYB6lA/E/3rqC7dGK2rLUUAd14j/x4W
X-Microsoft-Antispam-PRVS: <CY1PR0301MB0732B5321AD5CAAA09C85117892B0@CY1PR0301MB0732.namprd03.prod.outlook.com>
X-Exchange-Antispam-Report-Test: UriScan:(185117386973197);
X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0;
 RULEID:(6095060)(601004)(2401047)(13015025)(13017025)(13023025)(13024025)(8121501046)(5005006)(13018025)(3002001)(10201501046)(6055026)(6096035)(20161123563025)(20161123561025)(20161123559025)(20161123565025)(20161123556025);
 SRVR:CY1PR0301MB0732; BCL:0; PCL:0; RULEID:(400006); SRVR:CY1PR0301MB0732; 
X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB0732;
 4:k4hMJcR0UEyVB+dHzM1hFD//ZuZONZDFD+co5369rShX6YPZjy56X3pN00bo3j53SvGrvhuX0EtRdktgeFs4QBUbIqavNNcoQAK7Y7l1d6MC0sYMo/Qkm2z0/fJyE53dTQ7krpEYO8BWlTrp3M/ymznMZfE60vkvKs2zQYAPwccZCwuwycozO4OGJovrdqplskQcL3ZcPvMdEKJ/hM+nWQtmNUPMU0fnsmnJ1x1fjV4/CTAiJiIkVq7zAdfCUfGXf0nSNHZbrlHfSqZruzSesrh++ikk7PKv3dFK1DkcuriZVm+4HcVg5FZCX+eZOOzHGfY2xCPsuL+iearh0wccJwvNq5pyioYuAOMyBV3vKGZJ/ndVYfn5CsPKnAl6rcV+qAN2MCXyR1XyGdkxJBXAEECH89QxmfIcC6aIClWBZZj3D4e0zzrxQu8uZKc6d4gEFfM9X4HkmciJzwqL7rP1ihgiz+jmwlGg9PxI2u0DM0tf7RQVBk03TuO9beL2LxgIdLGpMvsjQLUAabZcEOoD+YKJJisleR+ozefwo8kIlUjTOSJCQMkJHURlqa844i1cHElgV2p+sNd9jyPLLBdgHoyVIcFuHdWGDXQLWMlWh6+7AGcVBQIsJkzwbZh9cSj6CjSrOU9bx7USKsgoPbTYia4SL4JHfcujg4mDVG6t1qKGkQcAVcBFtAgul+e94OUI7GiKow4YZ6sUPlptB76ru1tl25wdIkpq2KPcSfv0XuDmQRe4wU0/tKzpHZ1ARTLQ
X-Forefront-PRVS: 0235CBE7D0
X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR0301MB0732;
 23:foCl6Ct4UwuNZ9gs/Y10HFo+XJo+FgXVwn8QqaS?=
 =?us-ascii?Q?E/cD5dqzHpRnyJKB5RH4ZlamTdv695NqjhsUSYYfEZZ1B7Zauz5MdRa3wpGQ?=
 =?us-ascii?Q?nY5cC7dMmxxNQ4IA5KoojwkbQLKRS7x3VJuEXiLi1wjNDLNt2s//g2hn85fk?=
 =?us-ascii?Q?lVh680f9uCmHVBlJuaicX2Tg9+/uKCWSSOJRQ8xMImFAcdrpXX8r6anP/Ew9?=
 =?us-ascii?Q?6svP7m0oKNE8bkQchXRRo9Tn+Ync3EhbnXAyKaBW39b7VdIKQemRybrpzAXm?=
 =?us-ascii?Q?zcVvTT9/L7KX9jvI+5RHEuuuQeNHcpJWdCzARN6f2v5NTTOBD7qv9YXmcmyo?=
 =?us-ascii?Q?Uev6HFCNh2zbkCprqPZnbrc7vT/t4M3FUaDvAK2NWh6rwxjLsYMnArIPgvIK?=
 =?us-ascii?Q?5suOGsQgzXSUM19Mu9GLxAdgKs1nq0tdmV0uUcwPNibuK9J69cjtJRdA/9t1?=
 =?us-ascii?Q?z6HXlWNovYcxANwKQa7b0hhmcFwkTmsYog5H3lzCNy36VajB/Sn9r6EXtKvi?=
 =?us-ascii?Q?FgwTeMI54yAJhLrW6xkjxDWVlCPcNmdhA9a9/iJhOO3gFa63oP+TsdubWj2P?=
 =?us-ascii?Q?9KE31sgTUcVNJD5aBWyHgJA2CEOrWkdTiX2ZkGVDEobGZYD9XhY60voz8zET?=
 =?us-ascii?Q?YnV/MLLccMv94Wb4rJ9H/OqWPZNGbZan4npDgmjUgJkJQxE4XLcD0iKHuzWl?=
 =?us-ascii?Q?iTRGiHq1esqjikPdlqiEEHB7640HejigbMeAaBSsquxk6hw4lE3iyyLFTuTa?=
 =?us-ascii?Q?hyE4mnhfAUOxfPyMS/42rYX/Qwu2B3nCzaPwxRxWcYWuRjJ2XiyhzvlygFps?=
 =?us-ascii?Q?1/KY6q/IF3wyAkMtPe4Tbgvtjc0gyrlsGpUPsJZ+YOT1SOEwD6tSHCq5NNdf?=
 =?us-ascii?Q?/nrD0cZ8VVe4LqPGEsKD19GpwQYVeqSeTv7jV82LdlK7jxh1FKGjpUjnONh+?=
 =?us-ascii?Q?KE7+cukjP708rSEpzsyzNJt8mpCLjmg32TIh5mlf9bX5sTk1meGw2poNrQDf?=
 =?us-ascii?Q?kY+hXzgTTTUyFwg8GjrLARF2Wk0dTfEtesiUhOuqSElwZWMd8tHBkb8nP2sq?=
 =?us-ascii?Q?RiaGGRsSua+fK2XEDZsC8xdu/L/qFcLQyuVX8yQAQqErfBWHx8CeNUPaBfh7?=
 =?us-ascii?Q?FdrksBJk8XTwTd6TxvB9lxroDVRI/0SzDPvnwRF5d4aBbDQ1ImpzfWqNIGMs?=
 =?us-ascii?Q?Q7NTE4zhhUfITerTZt1SebYUECDCeWeo0aohjMXW9aiYANwH3GUHE0qWxzRj?=
 =?us-ascii?Q?eqYbf4fRP/AhFVS1ZXcX3RsjEuqI4CulbtnslK/s1?=
X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB0732;
 6:BlWt0uEz+mcTRVzLYctm15tk8xuRO6qdHNILltAFd0tNNsDLIWny6u/uq8JTtijz1qjHqCdWydza1wV9P+mA9W2GiEy4VWrafs6RxKjro6QVAfDG3mF9goBZ7JVyJslZ5OHvkn4sXyzJezDZemrZ3xS4yM1b1RXr5jAwY1MHshjif1XmtBgVeHWW2GcZRVFdAXtzXKdlNqxF7Dud9CbT1vFMuqI8Q/U7phf4xfMuBqfVJZVZySamGRRFaeVfxwLVB6PqfyiS1NhQ9goehPRwE/LiKhsM3QA4qbLBT+1toctU3t/mn7CAElMB7V8xqGJ1EIgmatFMsv0Y7TYGW4TRM+wg6+/2WG61ldy6tvmYLw7/1CEIXbYY1u1khvFoPXv3AYAHp6AsHaboDB1yJYASV0veLenVsmlHGdZE6v2VZIA=;
 5:s4WqUvBekyp7RGhmixW1FoZ2K3GJQDFEh8/48/N+jhDEKTDq782NbYPbAKc8Q/otZefytW/N9hJmnJzmoiRceM6z3k6AXAtuKNMo82Uh2qRxVZpup+8SV7I1jRW6taRXYIz30o6L9vxMbl7BKlS42lTcOFy7LKE7D00fo/XCXnis4PxEIaVBDlzTE/N8zKLj;
 24:XTPPJBZvRsYf56ecf7m7Tv6zQNrbjy4DQmAMlS8D0ojg1p2uzeo4XKViCfWNSxdcn0AORiPMO4NI1Ga/JtozyyyQ4/CG9EEYoATf2DvNLo4=
SpamDiagnosticOutput: 1:99
SpamDiagnosticMetadata: NSPM
X-Microsoft-Exchange-Diagnostics: 1; CY1PR0301MB0732;
 7:yKHhl+EDo2BzpP0rIIcKXVKGxwkLzSszFc1eeLNy6p8M12/EFE9oOuoJAjI0x2BoK8Spb1fxQB776ujpE97uyskP3dRUblTok5R7vTGpaHFWNtVO/S22A6xoE2eRcmVVVd1aJn9l+HLDFzIXWgzXWpHsyCV7bN6hzmYPkEZirzIJVs+ruseo5krjefauRfXTTywVuItPDW3L/VhUEQaK9o4FUHAt655/RGwXpLmddU+12NGlzmDxymn0JrPMXNEmnO2XsLrCz71sWFMa0GEqf6/sOW/RQBk/1s1Cpr7l7hhMh+8oF3hbI1bjhPWqG3y/5eVGE4ut4c0u1glsTcOb7Q==
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Mar 2017 07:14:32.9782 (UTC)
X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.168.50];
 Helo=[tx30smr01.am.freescale.net]
X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR0301MB0732
Subject: [dpdk-dev] [PATCHv8 28/46] net/dpaa2: add support for L3 and L4
	checksum offload
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <http://dpdk.org/ml/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://dpdk.org/ml/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <http://dpdk.org/ml/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Fri, 03 Mar 2017 07:14:36 -0000

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
 doc/guides/nics/features/dpaa2.ini |  2 ++
 drivers/net/dpaa2/dpaa2_ethdev.c   | 72 +++++++++++++++++++++++++++++++++++---
 2 files changed, 70 insertions(+), 4 deletions(-)

diff --git a/doc/guides/nics/features/dpaa2.ini b/doc/guides/nics/features/dpaa2.ini
index 20152a0..d50c62e 100644
--- a/doc/guides/nics/features/dpaa2.ini
+++ b/doc/guides/nics/features/dpaa2.ini
@@ -6,6 +6,8 @@
 [Features]
 Queue start/stop     = Y
 RSS hash             = Y
+L3 checksum offload  = Y
+L4 checksum offload  = Y
 Linux VFIO           = Y
 ARMv8                = Y
 Usage doc            = Y
diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c
index 906a4d9..763c574 100644
--- a/drivers/net/dpaa2/dpaa2_ethdev.c
+++ b/drivers/net/dpaa2/dpaa2_ethdev.c
@@ -68,7 +68,17 @@
 	dev_info->min_rx_bufsize = DPAA2_MIN_RX_BUF_SIZE;
 	dev_info->max_rx_queues = (uint16_t)priv->nb_rx_queues;
 	dev_info->max_tx_queues = (uint16_t)priv->nb_tx_queues;
-
+	dev_info->rx_offload_capa =
+		DEV_RX_OFFLOAD_IPV4_CKSUM |
+		DEV_RX_OFFLOAD_UDP_CKSUM |
+		DEV_RX_OFFLOAD_TCP_CKSUM |
+		DEV_RX_OFFLOAD_OUTER_IPV4_CKSUM;
+	dev_info->tx_offload_capa =
+		DEV_TX_OFFLOAD_IPV4_CKSUM |
+		DEV_TX_OFFLOAD_UDP_CKSUM |
+		DEV_TX_OFFLOAD_TCP_CKSUM |
+		DEV_TX_OFFLOAD_SCTP_CKSUM |
+		DEV_TX_OFFLOAD_OUTER_IPV4_CKSUM;
 	dev_info->speed_capa = ETH_LINK_SPEED_1G |
 			ETH_LINK_SPEED_2_5G |
 			ETH_LINK_SPEED_10G;
@@ -252,8 +262,13 @@
 	memset(&tx_conf_cfg, 0, sizeof(struct dpni_queue));
 	memset(&tx_flow_cfg, 0, sizeof(struct dpni_queue));
 
-	tc_id = 0;
-	flow_id = tx_queue_id;
+	if (priv->num_tc == 1) {
+		tc_id = 0;
+		flow_id = tx_queue_id % priv->num_dist_per_tc[tc_id];
+	} else {
+		tc_id = tx_queue_id;
+		flow_id = 0;
+	}
 
 	ret = dpni_set_queue(dpni, CMD_PRI_LOW, priv->token, DPNI_QUEUE_TX,
 			     tc_id, flow_id, options, &tx_flow_cfg);
@@ -302,6 +317,7 @@
 	struct dpaa2_dev_priv *priv = data->dev_private;
 	struct fsl_mc_io *dpni = (struct fsl_mc_io *)priv->hw;
 	struct dpni_queue cfg;
+	struct dpni_error_cfg	err_cfg;
 	uint16_t qdid;
 	struct dpni_queue_id qid;
 	struct dpaa2_queue *dpaa2_q;
@@ -337,6 +353,48 @@
 		dpaa2_q->fqid = qid.fqid;
 	}
 
+	ret = dpni_set_offload(dpni, CMD_PRI_LOW, priv->token,
+			       DPNI_OFF_RX_L3_CSUM, true);
+	if (ret) {
+		PMD_INIT_LOG(ERR, "Error to set RX l3 csum:Error = %d\n", ret);
+		return ret;
+	}
+
+	ret = dpni_set_offload(dpni, CMD_PRI_LOW, priv->token,
+			       DPNI_OFF_RX_L4_CSUM, true);
+	if (ret) {
+		PMD_INIT_LOG(ERR, "Error to get RX l4 csum:Error = %d\n", ret);
+		return ret;
+	}
+
+	ret = dpni_set_offload(dpni, CMD_PRI_LOW, priv->token,
+			       DPNI_OFF_TX_L3_CSUM, true);
+	if (ret) {
+		PMD_INIT_LOG(ERR, "Error to set TX l3 csum:Error = %d\n", ret);
+		return ret;
+	}
+
+	ret = dpni_set_offload(dpni, CMD_PRI_LOW, priv->token,
+			       DPNI_OFF_TX_L4_CSUM, true);
+	if (ret) {
+		PMD_INIT_LOG(ERR, "Error to get TX l4 csum:Error = %d\n", ret);
+		return ret;
+	}
+
+	/*checksum errors, send them to normal path and set it in annotation */
+	err_cfg.errors = DPNI_ERROR_L3CE | DPNI_ERROR_L4CE;
+
+	err_cfg.error_action = DPNI_ERROR_ACTION_CONTINUE;
+	err_cfg.set_frame_annotation = true;
+
+	ret = dpni_set_errors_behavior(dpni, CMD_PRI_LOW,
+				       priv->token, &err_cfg);
+	if (ret) {
+		PMD_INIT_LOG(ERR, "Error to dpni_set_errors_behavior:"
+			     "code = %d\n", ret);
+		return ret;
+	}
+
 	return 0;
 }
 
@@ -453,7 +511,13 @@
 	 */
 	priv->nb_rx_queues = priv->num_dist_per_tc[DPAA2_DEF_TC];
 
-	priv->nb_tx_queues = attr.num_queues;
+	if (attr.num_tcs == 1)
+		priv->nb_tx_queues = attr.num_queues;
+	else
+		priv->nb_tx_queues = attr.num_tcs;
+
+	PMD_INIT_LOG(DEBUG, "num_tc %d", priv->num_tc);
+	PMD_INIT_LOG(DEBUG, "nb_rx_queues %d", priv->nb_rx_queues);
 
 	priv->hw = dpni_dev;
 	priv->hw_id = hw_id;
-- 
1.9.1