From patchwork Wed Feb 23 02:52:28 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?TWljaGHFgiBNaXJvc8WCYXc=?= X-Patchwork-Id: 84046 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id B323EB7063 for ; Wed, 23 Feb 2011 13:52:37 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756057Ab1BWCwc (ORCPT ); Tue, 22 Feb 2011 21:52:32 -0500 Received: from rere.qmqm.pl ([89.167.52.164]:47058 "EHLO rere.qmqm.pl" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751739Ab1BWCwa (ORCPT ); Tue, 22 Feb 2011 21:52:30 -0500 Received: by rere.qmqm.pl (Postfix, from userid 1000) id 3D09613A5F; Wed, 23 Feb 2011 03:52:28 +0100 (CET) Message-Id: <901aca0071da9f2fb1d46080441501309f210fb2.1298429033.git.mirq-linux@rere.qmqm.pl> In-Reply-To: References: From: =?UTF-8?q?Micha=C5=82=20Miros=C5=82aw?= Subject: [PATCH 3/4] net: Fix ETHTOOL_GFEATURES compatibility MIME-Version: 1.0 To: netdev@vger.kernel.org Cc: Ben Hutchings , David Miller Date: Wed, 23 Feb 2011 03:52:28 +0100 (CET) Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Implement getting rx checksum state for not updated drivers. Signed-off-by: Michał Mirosław --- net/core/ethtool.c | 14 ++++++++++++++ 1 files changed, 14 insertions(+), 0 deletions(-) diff --git a/net/core/ethtool.c b/net/core/ethtool.c index 66cdc76..69a3edc 100644 --- a/net/core/ethtool.c +++ b/net/core/ethtool.c @@ -168,6 +168,18 @@ EXPORT_SYMBOL(ethtool_ntuple_flush); #define ETHTOOL_DEV_FEATURE_WORDS 1 +static void ethtool_get_features_compat(struct net_device *dev, + struct ethtool_get_features_block *features) +{ + if (!dev->ethtool_ops) + return; + + /* getting RX checksum */ + if (dev->ethtool_ops->get_rx_csum) + if (dev->ethtool_ops->get_rx_csum(dev)) + features[0].active |= NETIF_F_RXCSUM; +} + static int ethtool_get_features(struct net_device *dev, void __user *useraddr) { struct ethtool_gfeatures cmd = { @@ -185,6 +197,8 @@ static int ethtool_get_features(struct net_device *dev, void __user *useraddr) u32 __user *sizeaddr; u32 copy_size; + ethtool_get_features_compat(dev, features); + sizeaddr = useraddr + offsetof(struct ethtool_gfeatures, size); if (get_user(copy_size, sizeaddr)) return -EFAULT;