Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp5053006ybi; Tue, 4 Jun 2019 00:01:23 -0700 (PDT) X-Google-Smtp-Source: APXvYqxkd5qPUuhvVpXa8VoLDlENeZd2nkMjhMzz8HQAK7/dONjMdtujU3dfb/K7UCHavFhoZnDX X-Received: by 2002:a63:6105:: with SMTP id v5mr17619966pgb.312.1559631683453; Tue, 04 Jun 2019 00:01:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559631683; cv=none; d=google.com; s=arc-20160816; b=XVo5HqSw5mm6Z5DP8qIQcDBdk6XQUiN30FljgU/6wTMPKqiPXRFzFAV33MS9KpmwMH pps1fVcajPQo+rFuB/ct8BrYOwkBwFdzwJnnQaLvtGLxw6tUCAn+UlaOP1qKRQDfPhgM ePpGbRHNiZ9Iat7nKiEQL6UG/Spd+ARWyDMt7Ld6EVdxvmaGJLtSk+jpYyILriLDtYR/ B7Hzy+LkrDEMTl2QyT5emlJCpvFwrgZTrz+O5Hhk4ydj7xcOXoSP5at5o14HOwR2j7KL pcv3+7wO+rwZEg9ah4dVTdHbBpPziNn7jaEsGVpILAWRP8V86EwXUb194Xqj+E/5RIA9 KIQA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:message-id:date:subject:cc :to:from; bh=CxV3m8iKMttQ/cnZMPp6MNeZYxhpwMbo6wiZu3E/ny0=; b=pvmjYX+bbteu9MZmrMGIMry1eU6BvsXMW8LrXd33qBl4rWgSYpwVBVdkMso20tv8In sn367Gxz1aJEzcXduJVHsR9UMEtR0nJDiyOCSzHs1R1cf4B3cvmLFOuBkY3bV8SIWnAt Xkbqb2bSDPYD5mp9SctwvpU9HK89DX0+280OKdDdXsxs+QZ4w1oUWCkPGr9G6LHTRhbP 5BPyRyuqxum+nlg+WlHkhajSP28luR60NNax0OoJhZir9DkivdLEB885ThZX8+kvEftA yNO5J9/axt6PUPvhH5wYjk4Oo9wvrRilkvTpplRCCSLmHZYkk6QNfFwTm4buLXTD2O1B mzLg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=NONE dis=NONE) header.from=vmware.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id j8si20985373pll.17.2019.06.04.00.01.07; Tue, 04 Jun 2019 00:01:23 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=NONE dis=NONE) header.from=vmware.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726819AbfFDG6u (ORCPT + 99 others); Tue, 4 Jun 2019 02:58:50 -0400 Received: from ex13-edg-ou-002.vmware.com ([208.91.0.190]:26585 "EHLO EX13-EDG-OU-002.vmware.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726547AbfFDG6t (ORCPT ); Tue, 4 Jun 2019 02:58:49 -0400 Received: from sc9-mailhost3.vmware.com (10.113.161.73) by EX13-EDG-OU-002.vmware.com (10.113.208.156) with Microsoft SMTP Server id 15.0.1156.6; Mon, 3 Jun 2019 23:58:46 -0700 Received: from ubuntu.eng.vmware.com (unknown [10.33.74.142]) by sc9-mailhost3.vmware.com (Postfix) with ESMTP id 59ABA4132E; Mon, 3 Jun 2019 23:58:48 -0700 (PDT) From: Ronak Doshi To: CC: Ronak Doshi , "VMware, Inc." , "David S. Miller" , open list Subject: [PATCH net-next] vmxnet3: turn off lro when rxcsum is disabled Date: Mon, 3 Jun 2019 23:58:38 -0700 Message-ID: <20190604065838.22243-1-doshir@vmware.com> X-Mailer: git-send-email 2.11.0 MIME-Version: 1.0 Content-Type: text/plain Received-SPF: None (EX13-EDG-OU-002.vmware.com: doshir@vmware.com does not designate permitted sender hosts) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Currently, when rx csum is disabled, vmxnet3 driver does not turn off lro, which can cause performance issues if user does not turn off lro explicitly. This patch adds fix_features support which is used to turn off LRO whenever RXCSUM is disabled. Signed-off-by: Ronak Doshi Acked-by: Rishi Mehta --- drivers/net/vmxnet3/vmxnet3_drv.c | 1 + drivers/net/vmxnet3/vmxnet3_ethtool.c | 10 ++++++++++ drivers/net/vmxnet3/vmxnet3_int.h | 7 +++++-- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/drivers/net/vmxnet3/vmxnet3_drv.c b/drivers/net/vmxnet3/vmxnet3_drv.c index 1b2a18ea855c..3f48f05dd2a6 100644 --- a/drivers/net/vmxnet3/vmxnet3_drv.c +++ b/drivers/net/vmxnet3/vmxnet3_drv.c @@ -3247,6 +3247,7 @@ vmxnet3_probe_device(struct pci_dev *pdev, .ndo_start_xmit = vmxnet3_xmit_frame, .ndo_set_mac_address = vmxnet3_set_mac_addr, .ndo_change_mtu = vmxnet3_change_mtu, + .ndo_fix_features = vmxnet3_fix_features, .ndo_set_features = vmxnet3_set_features, .ndo_get_stats64 = vmxnet3_get_stats64, .ndo_tx_timeout = vmxnet3_tx_timeout, diff --git a/drivers/net/vmxnet3/vmxnet3_ethtool.c b/drivers/net/vmxnet3/vmxnet3_ethtool.c index 559db051a500..0a38c76688ab 100644 --- a/drivers/net/vmxnet3/vmxnet3_ethtool.c +++ b/drivers/net/vmxnet3/vmxnet3_ethtool.c @@ -257,6 +257,16 @@ vmxnet3_get_strings(struct net_device *netdev, u32 stringset, u8 *buf) } } +netdev_features_t vmxnet3_fix_features(struct net_device *netdev, + netdev_features_t features) +{ + /* If Rx checksum is disabled, then LRO should also be disabled */ + if (!(features & NETIF_F_RXCSUM)) + features &= ~NETIF_F_LRO; + + return features; +} + int vmxnet3_set_features(struct net_device *netdev, netdev_features_t features) { struct vmxnet3_adapter *adapter = netdev_priv(netdev); diff --git a/drivers/net/vmxnet3/vmxnet3_int.h b/drivers/net/vmxnet3/vmxnet3_int.h index a2c554f8a61b..1cc1cd4aaa59 100644 --- a/drivers/net/vmxnet3/vmxnet3_int.h +++ b/drivers/net/vmxnet3/vmxnet3_int.h @@ -69,12 +69,12 @@ /* * Version numbers */ -#define VMXNET3_DRIVER_VERSION_STRING "1.4.16.0-k" +#define VMXNET3_DRIVER_VERSION_STRING "1.4.17.0-k" /* Each byte of this 32-bit integer encodes a version number in * VMXNET3_DRIVER_VERSION_STRING. */ -#define VMXNET3_DRIVER_VERSION_NUM 0x01041000 +#define VMXNET3_DRIVER_VERSION_NUM 0x01041100 #if defined(CONFIG_PCI_MSI) /* RSS only makes sense if MSI-X is supported. */ @@ -454,6 +454,9 @@ vmxnet3_tq_destroy_all(struct vmxnet3_adapter *adapter); void vmxnet3_rq_destroy_all(struct vmxnet3_adapter *adapter); +netdev_features_t +vmxnet3_fix_features(struct net_device *netdev, netdev_features_t features); + int vmxnet3_set_features(struct net_device *netdev, netdev_features_t features); -- 2.11.0