From patchwork Sat Sep 17 13:21:53 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: 115126 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 6857EB6F71 for ; Sat, 17 Sep 2011 23:22:03 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754798Ab1IQNVz (ORCPT ); Sat, 17 Sep 2011 09:21:55 -0400 Received: from rere.qmqm.pl ([89.167.52.164]:47291 "EHLO rere.qmqm.pl" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751929Ab1IQNVz (ORCPT ); Sat, 17 Sep 2011 09:21:55 -0400 Received: by rere.qmqm.pl (Postfix, from userid 1000) id 2628813A6C; Sat, 17 Sep 2011 15:21:53 +0200 (CEST) Date: Sat, 17 Sep 2011 15:21:53 +0200 From: =?iso-8859-2?Q?Micha=B3_Miros=B3aw?= To: Jeff Kirsher Cc: davem@davemloft.net, netdev@vger.kernel.org, gospo@redhat.com Subject: Re: [net-next 01/11] ixgb: convert to ndo_fix_features Message-ID: <20110917132153.GA32572@rere.qmqm.pl> References: <1316225752-1709-1-git-send-email-jeffrey.t.kirsher@intel.com> <1316225752-1709-2-git-send-email-jeffrey.t.kirsher@intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <1316225752-1709-2-git-send-email-jeffrey.t.kirsher@intel.com> User-Agent: Mutt/1.5.20 (2009-06-14) Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org On Fri, Sep 16, 2011 at 07:15:42PM -0700, Jeff Kirsher wrote: > From: Michał Mirosław > Private rx_csum flags are now duplicate of netdev->features & NETIF_F_RXCSUM. > Removing this needs deeper surgery. [...] Hmm. Looks like this patch is not complete: part removing get/set_flags from ethtool_ops is missing. I don't remember if this was included or not in the patch I sent originally. I'm attaching it now, rebased on current net-next (not tested). Best Regards, Michał Mirosław --- Finish conversion to unified ethtool ops: convert get_flags. Signed-off-by: Michał Mirosław -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/drivers/net/ethernet/intel/ixgb/ixgb_ethtool.c b/drivers/net/ethernet/intel/ixgb/ixgb_ethtool.c index fdb30cc..ab404e7 100644 --- a/drivers/net/ethernet/intel/ixgb/ixgb_ethtool.c +++ b/drivers/net/ethernet/intel/ixgb/ixgb_ethtool.c @@ -634,43 +634,6 @@ ixgb_get_strings(struct net_device *netdev, u32 stringset, u8 *data) } } -static int ixgb_set_flags(struct net_device *netdev, u32 data) -{ - struct ixgb_adapter *adapter = netdev_priv(netdev); - bool need_reset; - int rc; - - /* - * Tx VLAN insertion does not work per HW design when Rx stripping is - * disabled. Disable txvlan when rxvlan is turned off, and enable - * rxvlan when txvlan is turned on. - */ - if (!(data & ETH_FLAG_RXVLAN) && - (netdev->features & NETIF_F_HW_VLAN_TX)) - data &= ~ETH_FLAG_TXVLAN; - else if (data & ETH_FLAG_TXVLAN) - data |= ETH_FLAG_RXVLAN; - - need_reset = (data & ETH_FLAG_RXVLAN) != - (netdev->features & NETIF_F_HW_VLAN_RX); - - rc = ethtool_op_set_flags(netdev, data, ETH_FLAG_RXVLAN | - ETH_FLAG_TXVLAN); - if (rc) - return rc; - - if (need_reset) { - if (netif_running(netdev)) { - ixgb_down(adapter, true); - ixgb_up(adapter); - ixgb_set_speed_duplex(netdev); - } else - ixgb_reset(adapter); - } - - return 0; -} - static const struct ethtool_ops ixgb_ethtool_ops = { .get_settings = ixgb_get_settings, .set_settings = ixgb_set_settings, @@ -691,8 +654,6 @@ static const struct ethtool_ops ixgb_ethtool_ops = { .set_phys_id = ixgb_set_phys_id, .get_sset_count = ixgb_get_sset_count, .get_ethtool_stats = ixgb_get_ethtool_stats, - .get_flags = ethtool_op_get_flags, - .set_flags = ixgb_set_flags, }; void ixgb_set_ethtool_ops(struct net_device *netdev) diff --git a/drivers/net/ethernet/intel/ixgb/ixgb_main.c b/drivers/net/ethernet/intel/ixgb/ixgb_main.c index b8fb163..1bb794c 100644 --- a/drivers/net/ethernet/intel/ixgb/ixgb_main.c +++ b/drivers/net/ethernet/intel/ixgb/ixgb_main.c @@ -325,13 +325,26 @@ ixgb_reset(struct ixgb_adapter *adapter) } } +static u32 +ixgb_fix_features(struct net_device *netdev, u32 features) +{ + /* + * Tx VLAN insertion does not work per HW design when Rx stripping is + * disabled. + */ + if (!(features & NETIF_F_HW_VLAN_RX)) + features &= ~NETIF_F_HW_VLAN_TX; + + return features; +} + static int ixgb_set_features(struct net_device *netdev, u32 features) { struct ixgb_adapter *adapter = netdev_priv(netdev); u32 changed = features ^ netdev->features; - if (!(changed & NETIF_F_RXCSUM)) + if (!(changed & (NETIF_F_RXCSUM|NETIF_F_HW_VLAN_RX))) return 0; adapter->rx_csum = !!(features & NETIF_F_RXCSUM); @@ -362,6 +375,7 @@ static const struct net_device_ops ixgb_netdev_ops = { #ifdef CONFIG_NET_POLL_CONTROLLER .ndo_poll_controller = ixgb_netpoll, #endif + .ndo_fix_features = ixgb_fix_features, .ndo_set_features = ixgb_set_features, }; @@ -464,10 +478,10 @@ ixgb_probe(struct pci_dev *pdev, const struct pci_device_id *ent) netdev->hw_features = NETIF_F_SG | NETIF_F_TSO | - NETIF_F_HW_CSUM; - netdev->features = netdev->hw_features | + NETIF_F_HW_CSUM | NETIF_F_HW_VLAN_TX | - NETIF_F_HW_VLAN_RX | + NETIF_F_HW_VLAN_RX; + netdev->features = netdev->hw_features | NETIF_F_HW_VLAN_FILTER; netdev->hw_features |= NETIF_F_RXCSUM;