From patchwork Fri Nov 21 23:21:48 2008 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: stephen hemminger X-Patchwork-Id: 10160 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.176.167]) by ozlabs.org (Postfix) with ESMTP id 4D656DDE22 for ; Sat, 22 Nov 2008 10:24:17 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754556AbYKUXYG (ORCPT ); Fri, 21 Nov 2008 18:24:06 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1756047AbYKUXYC (ORCPT ); Fri, 21 Nov 2008 18:24:02 -0500 Received: from suva.vyatta.com ([76.74.103.44]:57036 "EHLO suva.vyatta.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754851AbYKUXXX (ORCPT ); Fri, 21 Nov 2008 18:23:23 -0500 Received: from suva.vyatta.com (suva [127.0.0.1]) by suva.vyatta.com (8.13.7/8.13.7) with ESMTP id mALNNJwB031455; Fri, 21 Nov 2008 15:23:19 -0800 Received: (from shemminger@localhost) by suva.vyatta.com (8.13.7/8.13.7/Submit) id mALNNIml031452; Fri, 21 Nov 2008 15:23:18 -0800 Message-Id: <20081121232239.740282588@vyatta.com> References: <20081121232138.343333942@vyatta.com> User-Agent: quilt/0.46-1 Date: Fri, 21 Nov 2008 15:21:48 -0800 From: Stephen Hemminger To: David Miller , Jeff Garzik Cc: netdev@vger.kernel.org Subject: [PATCH 10/22] netxen: convert to net_device_ops Content-Disposition: inline; filename=netxen-netdev_ops.patch Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Convert driver to new net_device_ops. Compile tested only. Had to do some refactoring on multicast_list. Fix ethtool restart to propogate error code. Signed-off-by: Stephen Hemminger --- a/drivers/net/netxen/netxen_nic_main.c 2008-11-21 13:51:09.000000000 -0800 +++ b/drivers/net/netxen/netxen_nic_main.c 2008-11-21 13:57:01.000000000 -0800 @@ -469,6 +469,31 @@ netxen_read_mac_addr(struct netxen_adapt return 0; } +static void netxen_set_multicast_list(struct net_device *dev) +{ + struct netxen_adapter *adapter = netdev_priv(dev); + + if (NX_IS_REVISION_P3(adapter->ahw.revision_id)) + netxen_p3_nic_set_multi(dev); + else + netxen_p2_nic_set_multi(dev); +} + +static const struct net_device_ops netxen_netdev_ops = { + .ndo_open = netxen_nic_open, + .ndo_stop = netxen_nic_close, + .ndo_start_xmit = netxen_nic_xmit_frame, + .ndo_get_stats = netxen_nic_get_stats, + .ndo_validate_addr = eth_validate_addr, + .ndo_set_multicast_list = netxen_set_multicast_list, + .ndo_set_mac_address = netxen_nic_set_mac, + .ndo_change_mtu = netxen_nic_change_mtu, + .ndo_tx_timeout = netxen_tx_timeout, +#ifdef CONFIG_NET_POLL_CONTROLLER + .ndo_poll_controller = netxen_nic_poll_controller, +#endif +}; + /* * netxen_nic_probe() * @@ -680,25 +705,13 @@ netxen_nic_probe(struct pci_dev *pdev, c else adapter->max_mc_count = 16; - netdev->open = netxen_nic_open; - netdev->stop = netxen_nic_close; - netdev->hard_start_xmit = netxen_nic_xmit_frame; - netdev->get_stats = netxen_nic_get_stats; - if (NX_IS_REVISION_P3(revision_id)) - netdev->set_multicast_list = netxen_p3_nic_set_multi; - else - netdev->set_multicast_list = netxen_p2_nic_set_multi; - netdev->set_mac_address = netxen_nic_set_mac; - netdev->change_mtu = netxen_nic_change_mtu; - netdev->tx_timeout = netxen_tx_timeout; + netdev->netdev_ops = &netxen_netdev_ops; netdev->watchdog_timeo = 2*HZ; netxen_nic_change_mtu(netdev, netdev->mtu); SET_ETHTOOL_OPS(netdev, &netxen_nic_ethtool_ops); -#ifdef CONFIG_NET_POLL_CONTROLLER - netdev->poll_controller = netxen_nic_poll_controller; -#endif + /* ScatterGather support */ netdev->features = NETIF_F_SG; netdev->features |= NETIF_F_IP_CSUM; @@ -1075,7 +1088,7 @@ static int netxen_nic_open(struct net_de netxen_nic_set_link_parameters(adapter); - netdev->set_multicast_list(netdev); + netxen_set_multicast_list(netdev); if (adapter->set_mtu) adapter->set_mtu(adapter, netdev->mtu); --- a/drivers/net/netxen/netxen_nic_ethtool.c 2008-11-21 13:51:09.000000000 -0800 +++ b/drivers/net/netxen/netxen_nic_ethtool.c 2008-11-21 13:57:20.000000000 -0800 @@ -275,11 +275,11 @@ netxen_nic_set_settings(struct net_devic } else return -EOPNOTSUPP; - if (netif_running(dev)) { - dev->stop(dev); - dev->open(dev); - } - return 0; + if (!netif_running(dev)) + return 0; + + dev->netdev_ops->ndo_stop(dev); + return dev->netdev_ops->ndo_open(dev); } static int netxen_nic_get_regs_len(struct net_device *dev)