From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0056.outbound.protection.outlook.com [104.47.32.56]) by dpdk.org (Postfix) with ESMTP id CCD6E4F9A for ; Wed, 28 Mar 2018 02:16:07 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=2L5Fvyi2iEF3AZ3uOCuCs3OzD8MiUlgwqESm7o6Jv5Q=; b=M58TC9DZvZV3yzPkN+936vGyVoQI/gabEN5fD/6f+ABuwLXP1fHcIa2AdXeaamj4Y29RwpdYZP+ER1zdEc5CEGmLGyBOb9QUDAb+Jw4r9FMBxhHhxtSB8iYJSzROhSpeWUFV7+wZyCfkwKOFp2bY3PBzZfi6ox8W5m+uzaM8j3w= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Rasesh.Mody@cavium.com; Received: from cavium.com (198.186.0.2) by CY4PR0701MB3665.namprd07.prod.outlook.com (2603:10b6:910:93::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.631.10; Wed, 28 Mar 2018 00:16:04 +0000 From: Rasesh Mody To: dev@dpdk.org Cc: Harish Patil , ferruh.yigit@intel.com, Dept-EngDPDKDev@cavium.com, Rasesh Mody Date: Tue, 27 Mar 2018 17:15:51 -0700 Message-Id: <1522196155-30972-1-git-send-email-rasesh.mody@cavium.com> X-Mailer: git-send-email 1.7.10.3 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [198.186.0.2] X-ClientProxiedBy: CO2PR05CA0102.namprd05.prod.outlook.com (2603:10b6:104:1::28) To CY4PR0701MB3665.namprd07.prod.outlook.com (2603:10b6:910:93::16) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 07ced489-6691-4168-5e6d-08d59441186a X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4604075)(4534165)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:CY4PR0701MB3665; X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3665; 3:NJyKmcBSqHP+WoFZl6tV5IpnghA/QZhF5BCAoyJUSvdZAENgg928W/yzhbMww61sclSqmIJrddGUoe51csVdNciqohw7U3EksvTapilF/IAJ5WVEvbHSS9eWWauqE7o4MmnM9qHoOCVHb2KhaXzb1ab9OKVuxkMmyOzaQCjoA65IHJMSKiPtS8fFTdHJ+96U6Gn/2Uzf1axwG6OGtC4AkQjnYHSY188ATiUGbGRTijuEcPRVp2eyWI4yRkV/55BO; 25:QRSbTnf+xR52Zr7liLXriyAqAjB6yS69NMDzZaYAGW6Rspovx/8D/BzKQ225mHLtzlOeHFJ+RCCX/v9TNIgYNpW7X6plnfwK48Q1zTyptC5YBv2HGGYu2RCVpghobwmDCGrdjipkeOXGO5acZDUmRFulJGkLrFgn8PMXjaRaz+AkLkCUOCFjEVzyOMA7yLvhz/n10fRIBYQk7X+hnr8MAL8QBLEQQo+3Bz2t/rewwMz6e5Np7uzqRcdT42vOk/woKdPt/Wfkjxbc1JJOwE7VNQx3jwmrLzExNIqYHDBwblgTO60DLWS1fzEKgTBk5GNn1YO9ayfUupBLeYPWfmzc7g==; 31:meBJ7W4iI9ru1Bkmn1XtLq1DQuY0NrVUmvRwAe6+qdLKRcmktAr5SpYot6XeV1w6TKhcwWM1581etgp/PksWyoudHndbBIuSuzV+sHGem/5ykvEM3iQ95ef4z8QMIFVn5Q6BFd1rZ7IKy3htKAn8WEqsXdI9azrSji4B/i5AJS3gFROgrdb660h9/caAQulzQVL7Re8DPy++xjDnTDQLT8rdSkCMqaWrVELKamOaSEU= X-MS-TrafficTypeDiagnostic: CY4PR0701MB3665: X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3665; 20:UO801gAgmgGw45RC/yPqFEJLrT0rWj/yXjTWJ9UT0mEgGL47tL8nd99rNbFmPl7Utg7DjzhlJOnKSG/l5Cckq6qUkxhc3Io51OblsoNftSrxUEq7Nvqjm9+f9mXXUeYCZTDaO8+zX9ul60osAeTBDu9GXTx9wz5eFxTiaveUDRmnD3pcFR42fgNQkP46Jy4qlK3ZAEixPOA6w6U+46rG1MXhJJGSqD7vcqCh1NePyLnmntARcKgneOxGB3hAB0oPkfYjjRREPX+LcNkxWrk1REaaGhVE0nOorJOTlR/Eirxo6dMVd19+D+4r1+2EFDfXQ1+Xw/xIlLiYLgGtvozPSWjGaqToHutdSpmDupHOsq9PNSaK87LFqmummR2le+A6e6PXwpD3nOS80mp6+M5jsLf7CSZtzDgIuwHWQrCSlBDb6qqUfG1ZnY55/pt/A3qA0Tipe4PLTRDO4DzMVeVf2/5N7ptg6IYur4f28qUTCi/fjp5WE9Uv42T/ADIF5lHW; 4:GaI2D6sv8KMCxkiQrp5yCEDWhHCoTVt+EOip3brNdB8jeocGJhBg2T8Fm1LLUB6JIUrK6/vrXnQjMtjlDi2nUnAl2+TWAMOlhAUeK+wEs4blxT+4W6OJggWxJLdpLbRZDig72fGH8R0vgaEVUrFl5b/3BaDvgp7Tyc6bSHXPALKAHiziNtg0bIwhEIu31WkoHF++AxTKOT97dJyQUY0snOHcHYrZBLr2J5FzeLMq1QtsUiFh8gmBU/55iEI31RRcmWxKfjmen79gjCPrWF4GXA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(3231221)(944501327)(52105095)(10201501046)(93006095)(93001095)(3002001)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(20161123558120)(20161123562045)(20161123564045)(6072148)(201708071742011); SRVR:CY4PR0701MB3665; BCL:0; PCL:0; RULEID:; SRVR:CY4PR0701MB3665; X-Forefront-PRVS: 06259BA5A2 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(396003)(346002)(366004)(376002)(39380400002)(39860400002)(189003)(199004)(2906002)(107886003)(48376002)(106356001)(50466002)(6116002)(16526019)(26005)(186003)(3846002)(68736007)(2351001)(316002)(2361001)(54906003)(105586002)(4720700003)(16586007)(50226002)(72206003)(478600001)(69596002)(36756003)(21086003)(6666003)(25786009)(55016002)(7736002)(6916009)(53936002)(486005)(8936002)(81166006)(81156014)(305945005)(8676002)(476003)(956004)(386003)(2616005)(486005)(4326008)(52116002)(59450400001)(47776003)(66066001)(5660300001)(86362001)(51416003)(97736004)(7696005); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR0701MB3665; H:cavium.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY4PR0701MB3665; 23:/+7i4VwbM4nrJ3HxhhApYluBjhdQTDSdRiQIkmt?= =?us-ascii?Q?AtJsgFpAlnT4TtHEQiYOfIG3HSv7jpNfHcdnx1BQVAB1HAKppEHOYSYYh1Ua?= =?us-ascii?Q?arjaIN8iyahr8iW67Edusyhdhk8gnPShD7YBa6hhplmx8oNLmqEj2hy6KFNh?= =?us-ascii?Q?92SSGoyW7fTg3ILfhMJxhuaX8NWjXWA24/AJe8xLafDxnNFPZRF+DGbli8h6?= =?us-ascii?Q?UtwU7EORi1Fk/SaANfhqvdPKoaIOdxXxkNbO6MLproFGn1j7CMpU9SxFI//0?= =?us-ascii?Q?B+g0A0WGr7LpI36cbxy4gThlIyjKGPbNteoxu87Ho5yJ/59gdt7tHwPK4RTJ?= =?us-ascii?Q?yoz9y1unqj4BY6rAgfTZf/w/z4PTdPwOKOBeYqMlXByeQt48Z+SJHIoUdyiH?= =?us-ascii?Q?CaOWaiR9ce+ByXeB21nqLFl8kFJibNRZz2HxSd7tXE7hjWyzxvLpv1T7tYrk?= =?us-ascii?Q?AfMbaWIpcQq0kyeDsZ+Dh+tCopRpvXtb04p9IBdGC/7+Z1RnKqCphfjRT4z0?= =?us-ascii?Q?RKV5y8PHBD7Jd58H2uerukose0HT2UFyaWyRQPsIgLAbIwlQ0TT/9Bk3GFtX?= =?us-ascii?Q?tLpSsdVaX1mkHd7FF9G3ELXvnzcJl7DxglMxNxAUCzHefTTrfNVZBkqnXbmr?= =?us-ascii?Q?Mjufinf4IQxaazBRmB/1nTzsP7uwwGtM0l40jXlnMS4+uLpXXINOp6LXbkax?= =?us-ascii?Q?yhKVNGEl2v6YtHq0DRFrqM8rzIBLDNNGernYOEdvJmx0rSNFIPjZzsRQKW0u?= =?us-ascii?Q?aOTEqrPs7Ce/8GDWNdVLRQljghjD2aY17+QMJz7aakUyNszN81x+l/5i6zoj?= =?us-ascii?Q?1ybtgYZTCsPsULi2p9C2NvyXQq/rjqpt5Ry6fDAkovSm7r9TtQY7EWpQU31u?= =?us-ascii?Q?XPsZ0XAmKaTYw201+eYMTAZPTvgkWPO9OA58Hh8ldFu1f8L20RE3/As1jhX4?= =?us-ascii?Q?pyyIGwJPBm1Q3RgB/hoDGnWLs5hMwlh9t0gRo0WM8TbkBWjOI98tZk8Gu69J?= =?us-ascii?Q?R1L1XHNSFDVUngbjKeusMoFFJiMScKiPOanKQQTt3lWdP2LCvKm77o2huIDb?= =?us-ascii?Q?JYxdx/rVMsJYTAVyVdEJEsGT6jT4XIFD2yflm31mySFaKWzznis2cOWKr8yE?= =?us-ascii?Q?kegc0v1r4+vUg4sBdYtzzIXFWHP9hFZ7XFsg9dqJPM1/JOgV7rSo6vPGYIXc?= =?us-ascii?Q?9Qr8IWQa9YoCVeEbkN69zhBXNqD8QMKmoE9pKJLTDNrLHb0J2Z3lG/mxirnO?= =?us-ascii?Q?9eEnCMwd3+3SQ3rx2fGLOktaLtpXvXGHrioQS2urH0f9/3Rn00K9Hq9pGFat?= =?us-ascii?Q?D43IuNxnkLXP3GDdFipBbr0I=3D?= X-Microsoft-Antispam-Message-Info: 7rYW4Ik9ezdSl8hbl/DWK0iBxbngfYn5phNuFWIZUrOIO42wfRuMnMhcPk0VM7a6zUaixy1S9LDx9stgpHtpF1LVN5/ldjnMg8adSJAO1spvWH2fautq/b2F3c0hdLKt7nIh68Fyp7yYAaEhe6y04/p3m8xnvVqWnC/vzXXsXbq6Fu5JjsE4YDISJpYARnza X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3665; 6:xhS8kgn2xg0SVq38DWqdqNWOnHEpSLuUN2hCq0FO8uTDS/8kalXXVg2p3qNtTdNe0CgDJVmsSfRM2RquiL4KNxLNo10a7B7lTYnN+DwL4zAgP8JshQRNxWcU6w/r+C/Fe0Sy+Y5TrtT12RXgAsiK40wi4KbnnWlSh8/I0VRucdpJjlWQGxUo/Fn/9tXi5lOxmsFNHfRJAK7Hm7bNgMNRlZXA4tSm8yrhFzzxSVnM51taThs3npHniv/665707XujfSbcGuBwHxJ/YvKmQH8pa64jqqO+aUnsuSyY7arOCrfxAr/RETwJVqIqtiKgNLO74nRtsTEbFveYXMLPNrBeu5kGJTCcjt8ct5uQkHVv+v0/3HFHCzdML1w/T2H+3ZqAWpqvgqOcIu6zXUPyzoe93J/hel9lSSvozoC5dGSAiDB1mX0egjbu9HwQs1evS34XXWOmCtkxYpiJlPtj19vvBw==; 5:v/p1a8jRZvPAEU/O8eB6vP8X20Z5WsJpv0juYt1ADppN7PqdElAWrDbCHHGrrPjGpOoJcVfUp1QHYXTmEOOhqrsbikBFiLMuFLNaY5lpuVXJ/fw/TjIEsjERrDcC5lZarmeWBCC+s2/NS2BKrRm2pGbmRqVNHGGVyT6lpC7/wGU=; 24:7PcIxYu83yViHxAE8vx46529jHfPuzI6VyGXQuty5mvp1gGiLucU47NFEZlAW9/qD/OOnfs1uv37eUJ5urg7smgDXRcl0UES/XY7irIc0P0= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY4PR0701MB3665; 7:PvzL0npJour7myZ8MDvvIvbNnMYBnqtNVvHI5KKhV3QFlldGZfM4I2yWfttt5fn0WjEIXpAoSmICTGmkxLqyTlVSPxelp8KQAPWQ4yKTgZgvM5JPs42mJCxFs1lmmtWNO2xnftOfDzRSN4FCjQ4p5qo04T6ufbGuEg0vjRtZKAvriLdy6yFQRyMhDph+eYSVuGvbMmKMwtwOHUDLyeRgPnTJJlBCQwvxJPz4t6CeoZhZi4InDPwN49xWZ4weDitI X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Mar 2018 00:16:04.2309 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 07ced489-6691-4168-5e6d-08d59441186a X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR0701MB3665 Subject: [dpdk-dev] [PATCH 1/5] net/qede: convert to new Rx/Tx offloads API 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: , X-List-Received-Date: Wed, 28 Mar 2018 00:16:08 -0000 From: Harish Patil Ethdev RX/TX offloads API has changed since: commit ce17eddefc20 ("ethdev: introduce Rx queue offloads API") commit cba7f53b717d ("ethdev: introduce Tx queue offloads API") This patch makes use of new offload flags as suggested and fix the default RX/TX configuration. Also indent the code properly around those changes. Signed-off-by: Harish Patil Signed-off-by: Rasesh Mody --- drivers/net/qede/qede_ethdev.c | 103 ++++++++++++++++++++++------------------ drivers/net/qede/qede_rxtx.c | 2 +- drivers/net/qede/qede_rxtx.h | 2 - 3 files changed, 59 insertions(+), 48 deletions(-) diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c index a91f436..6a51e3d 100644 --- a/drivers/net/qede/qede_ethdev.c +++ b/drivers/net/qede/qede_ethdev.c @@ -591,6 +591,8 @@ int qede_enable_tpa(struct rte_eth_dev *eth_dev, bool flg) } } qdev->enable_lro = flg; + eth_dev->data->lro = flg; + DP_INFO(edev, "LRO is %s\n", flg ? "enabled" : "disabled"); return 0; @@ -1166,10 +1168,10 @@ static int qede_vlan_offload_set(struct rte_eth_dev *eth_dev, int mask) { struct qede_dev *qdev = QEDE_INIT_QDEV(eth_dev); struct ecore_dev *edev = QEDE_INIT_EDEV(qdev); - struct rte_eth_rxmode *rxmode = ð_dev->data->dev_conf.rxmode; + uint64_t rx_offloads = eth_dev->data->dev_conf.rxmode.offloads; if (mask & ETH_VLAN_STRIP_MASK) { - if (rxmode->hw_vlan_strip) + if (rx_offloads & DEV_RX_OFFLOAD_VLAN_STRIP) (void)qede_vlan_stripping(eth_dev, 1); else (void)qede_vlan_stripping(eth_dev, 0); @@ -1177,7 +1179,7 @@ static int qede_vlan_offload_set(struct rte_eth_dev *eth_dev, int mask) if (mask & ETH_VLAN_FILTER_MASK) { /* VLAN filtering kicks in when a VLAN is added */ - if (rxmode->hw_vlan_filter) { + if (rx_offloads & DEV_RX_OFFLOAD_VLAN_FILTER) { qede_vlan_filter_set(eth_dev, 0, 1); } else { if (qdev->configured_vlans > 1) { /* Excluding VLAN0 */ @@ -1187,7 +1189,8 @@ static int qede_vlan_offload_set(struct rte_eth_dev *eth_dev, int mask) /* Signal app that VLAN filtering is still * enabled */ - rxmode->hw_vlan_filter = true; + eth_dev->data->dev_conf.rxmode.offloads |= + DEV_RX_OFFLOAD_VLAN_FILTER; } else { qede_vlan_filter_set(eth_dev, 0, 0); } @@ -1195,13 +1198,11 @@ static int qede_vlan_offload_set(struct rte_eth_dev *eth_dev, int mask) } if (mask & ETH_VLAN_EXTEND_MASK) - DP_INFO(edev, "No offloads are supported with VLAN Q-in-Q" - " and classification is based on outer tag only\n"); + DP_ERR(edev, "Extend VLAN not supported\n"); qdev->vlan_offload_mask = mask; - DP_INFO(edev, "vlan offload mask %d vlan-strip %d vlan-filter %d\n", - mask, rxmode->hw_vlan_strip, rxmode->hw_vlan_filter); + DP_INFO(edev, "VLAN offload mask %d\n", mask); return 0; } @@ -1267,19 +1268,19 @@ static void qede_fastpath_start(struct ecore_dev *edev) static int qede_dev_start(struct rte_eth_dev *eth_dev) { - struct rte_eth_rxmode *rxmode = ð_dev->data->dev_conf.rxmode; struct qede_dev *qdev = QEDE_INIT_QDEV(eth_dev); struct ecore_dev *edev = QEDE_INIT_EDEV(qdev); + struct rte_eth_rxmode *rxmode = ð_dev->data->dev_conf.rxmode; PMD_INIT_FUNC_TRACE(edev); /* Configure TPA parameters */ - if (rxmode->enable_lro) { + if (rxmode->offloads & DEV_RX_OFFLOAD_TCP_LRO) { if (qede_enable_tpa(eth_dev, true)) return -EINVAL; /* Enable scatter mode for LRO */ - if (!rxmode->enable_scatter) - eth_dev->data->scattered_rx = 1; + if (!eth_dev->data->scattered_rx) + rxmode->offloads |= DEV_RX_OFFLOAD_SCATTER; } /* Start queues */ @@ -1294,7 +1295,7 @@ static int qede_dev_start(struct rte_eth_dev *eth_dev) * Also, we would like to retain similar behavior in PF case, so we * don't do PF/VF specific check here. */ - if (rxmode->mq_mode == ETH_MQ_RX_RSS) + if (eth_dev->data->dev_conf.rxmode.mq_mode == ETH_MQ_RX_RSS) if (qede_config_rss(eth_dev)) goto err; @@ -1411,15 +1412,15 @@ static int qede_dev_configure(struct rte_eth_dev *eth_dev) /* Check requirements for 100G mode */ if (ECORE_IS_CMT(edev)) { if (eth_dev->data->nb_rx_queues < 2 || - eth_dev->data->nb_tx_queues < 2) { + eth_dev->data->nb_tx_queues < 2) { DP_ERR(edev, "100G mode needs min. 2 RX/TX queues\n"); return -EINVAL; } if ((eth_dev->data->nb_rx_queues % 2 != 0) || - (eth_dev->data->nb_tx_queues % 2 != 0)) { + (eth_dev->data->nb_tx_queues % 2 != 0)) { DP_ERR(edev, - "100G mode needs even no. of RX/TX queues\n"); + "100G mode needs even no. of RX/TX queues\n"); return -EINVAL; } } @@ -1439,20 +1440,8 @@ static int qede_dev_configure(struct rte_eth_dev *eth_dev) if (qede_args(eth_dev)) return -ENOTSUP; - /* Sanity checks and throw warnings */ - if (rxmode->enable_scatter) - eth_dev->data->scattered_rx = 1; - - if (!rxmode->hw_strip_crc) - DP_INFO(edev, "L2 CRC stripping is always enabled in hw\n"); - - if (!rxmode->hw_ip_checksum) - DP_INFO(edev, "IP/UDP/TCP checksum offload is always enabled " - "in hw\n"); - if (rxmode->header_split) - DP_INFO(edev, "Header split enable is not supported\n"); - if (!(rxmode->mq_mode == ETH_MQ_RX_NONE || rxmode->mq_mode == - ETH_MQ_RX_RSS)) { + if (!(rxmode->mq_mode == ETH_MQ_RX_NONE || + rxmode->mq_mode == ETH_MQ_RX_RSS)) { DP_ERR(edev, "Unsupported multi-queue mode\n"); return -ENOTSUP; } @@ -1467,19 +1456,23 @@ static int qede_dev_configure(struct rte_eth_dev *eth_dev) return -ENOMEM; /* If jumbo enabled adjust MTU */ - if (eth_dev->data->dev_conf.rxmode.jumbo_frame) + if (rxmode->offloads & DEV_RX_OFFLOAD_JUMBO_FRAME) eth_dev->data->mtu = - eth_dev->data->dev_conf.rxmode.max_rx_pkt_len - - ETHER_HDR_LEN - ETHER_CRC_LEN; + eth_dev->data->dev_conf.rxmode.max_rx_pkt_len - + ETHER_HDR_LEN - ETHER_CRC_LEN; + + if (rxmode->offloads & DEV_RX_OFFLOAD_SCATTER) + eth_dev->data->scattered_rx = 1; if (qede_start_vport(qdev, eth_dev->data->mtu)) return -1; + qdev->mtu = eth_dev->data->mtu; /* Enable VLAN offloads by default */ ret = qede_vlan_offload_set(eth_dev, ETH_VLAN_STRIP_MASK | - ETH_VLAN_FILTER_MASK | - ETH_VLAN_EXTEND_MASK); + ETH_VLAN_FILTER_MASK | + ETH_VLAN_EXTEND_MASK); if (ret) return ret; @@ -1534,26 +1527,46 @@ static int qede_dev_configure(struct rte_eth_dev *eth_dev) dev_info->reta_size = ECORE_RSS_IND_TABLE_SIZE; dev_info->hash_key_size = ECORE_RSS_KEY_SIZE * sizeof(uint32_t); dev_info->flow_type_rss_offloads = (uint64_t)QEDE_RSS_OFFLOAD_ALL; - - dev_info->default_txconf = (struct rte_eth_txconf) { - .txq_flags = QEDE_TXQ_FLAGS, - }; - - dev_info->rx_offload_capa = (DEV_RX_OFFLOAD_VLAN_STRIP | - DEV_RX_OFFLOAD_IPV4_CKSUM | + 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_RX_OFFLOAD_TCP_LRO); - + DEV_RX_OFFLOAD_TCP_LRO | + DEV_RX_OFFLOAD_CRC_STRIP | + DEV_RX_OFFLOAD_SCATTER | + DEV_RX_OFFLOAD_JUMBO_FRAME | + DEV_RX_OFFLOAD_VLAN_FILTER | + DEV_RX_OFFLOAD_VLAN_STRIP); + dev_info->rx_queue_offload_capa = 0; + + /* TX offloads are on a per-packet basis, so it is applicable + * to both at port and queue levels. + */ dev_info->tx_offload_capa = (DEV_TX_OFFLOAD_VLAN_INSERT | DEV_TX_OFFLOAD_IPV4_CKSUM | DEV_TX_OFFLOAD_UDP_CKSUM | DEV_TX_OFFLOAD_TCP_CKSUM | DEV_TX_OFFLOAD_OUTER_IPV4_CKSUM | - DEV_TX_OFFLOAD_TCP_TSO | + DEV_TX_OFFLOAD_QINQ_INSERT | + DEV_TX_OFFLOAD_MULTI_SEGS | + DEV_TX_OFFLOAD_TCP_TSO | DEV_TX_OFFLOAD_VXLAN_TNL_TSO | DEV_TX_OFFLOAD_GENEVE_TNL_TSO); + dev_info->tx_queue_offload_capa = dev_info->tx_offload_capa; + + dev_info->default_txconf = (struct rte_eth_txconf) { + .txq_flags = DEV_TX_OFFLOAD_MULTI_SEGS, + }; + + dev_info->default_rxconf = (struct rte_eth_rxconf) { + /* Packets are always dropped if no descriptors are available */ + .rx_drop_en = 1, + /* The below RX offloads are always enabled */ + .offloads = (DEV_RX_OFFLOAD_CRC_STRIP | + DEV_RX_OFFLOAD_IPV4_CKSUM | + DEV_RX_OFFLOAD_TCP_CKSUM | + DEV_RX_OFFLOAD_UDP_CKSUM), + }; memset(&link, 0, sizeof(struct qed_link_output)); qdev->ops->common->get_link(edev, &link); diff --git a/drivers/net/qede/qede_rxtx.c b/drivers/net/qede/qede_rxtx.c index 0de7c6b..e9fe46c 100644 --- a/drivers/net/qede/qede_rxtx.c +++ b/drivers/net/qede/qede_rxtx.c @@ -87,7 +87,7 @@ static inline int qede_alloc_rx_buffer(struct qede_rx_queue *rxq) /* Fix up RX buffer size */ bufsz = (uint16_t)rte_pktmbuf_data_room_size(mp) - RTE_PKTMBUF_HEADROOM; - if ((rxmode->enable_scatter) || + if ((rxmode->offloads & DEV_RX_OFFLOAD_SCATTER) || (max_rx_pkt_len + QEDE_ETH_OVERHEAD) > bufsz) { if (!dev->data->scattered_rx) { DP_INFO(edev, "Forcing scatter-gather mode\n"); diff --git a/drivers/net/qede/qede_rxtx.h b/drivers/net/qede/qede_rxtx.h index f1d3666..a2dc9e7 100644 --- a/drivers/net/qede/qede_rxtx.h +++ b/drivers/net/qede/qede_rxtx.h @@ -76,8 +76,6 @@ ETH_RSS_VXLAN |\ ETH_RSS_GENEVE) -#define QEDE_TXQ_FLAGS ((uint32_t)ETH_TXQ_FLAGS_NOMULTSEGS) - #define for_each_rss(i) for (i = 0; i < qdev->num_rx_queues; i++) #define for_each_tss(i) for (i = 0; i < qdev->num_tx_queues; i++) #define QEDE_RXTX_MAX(qdev) \ -- 1.7.10.3