From patchwork Wed Jul 17 06:50:06 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: laura.vasilescu@rosedu.org X-Patchwork-Id: 259609 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 41FD72C0110 for ; Wed, 17 Jul 2013 16:50:32 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752204Ab3GQGu2 (ORCPT ); Wed, 17 Jul 2013 02:50:28 -0400 Received: from mail-qa0-f45.google.com ([209.85.216.45]:49254 "EHLO mail-qa0-f45.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751956Ab3GQGuX (ORCPT ); Wed, 17 Jul 2013 02:50:23 -0400 Received: by mail-qa0-f45.google.com with SMTP id ci6so2778816qab.18 for ; Tue, 16 Jul 2013 23:50:23 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references :x-gm-message-state; bh=R6QcLuM91EAbT5u4wQZDKzLNmmcmoY4vFRKwjtPCH5E=; b=FR0hSbfHysDx4JPB8UkoYQr+IHsPPygRZ1Nf6DZVe+Z8uzRojXdtLg4AQCc2lIXhp6 wqAXroJsbzb0UFdlmNi/qoJ0pQYXHaccmxxXYW4mcV6gSecIpehsr3ku3BUNF70JoKcp 8dhvWxTmbsXqbWRt3DXEK1ch3cepXi0HjPuYxppmfSuxJRAUgWhTYCHsGnATqUexgQy8 vkW+6DqPUCc6zC1ae6X12TQRL2IGyHXjdgrvMJDfl4K1P9cAP7zyD6C1n360frNq98Y4 ObFKJLA8iBBiVLJoMFH3yFmdkqF4XT/BHDrrVucN1/tf3e5pSmXmj4qFuS90NHOweVE7 fGOQ== X-Received: by 10.224.26.7 with SMTP id b7mr7412750qac.102.1374043823256; Tue, 16 Jul 2013 23:50:23 -0700 (PDT) Received: from rosedu.ixiacom.com ([205.168.23.154]) by mx.google.com with ESMTPSA id b4sm9567687qas.3.2013.07.16.23.50.21 for (version=TLSv1.2 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 16 Jul 2013 23:50:22 -0700 (PDT) From: Laura Mihaela Vasilescu To: netdev@vger.kernel.org Cc: jeffrey.t.kirsher@intel.com, carolyn.wyborny@intel.com, anjali.singhai@intel.com, Laura Mihaela Vasilescu Subject: [PATCH 2/2] igb: Expose RSS indirection table for ethtool Date: Wed, 17 Jul 2013 09:50:06 +0300 Message-Id: <1374043806-17284-2-git-send-email-laura.vasilescu@rosedu.org> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1374043806-17284-1-git-send-email-laura.vasilescu@rosedu.org> References: <1374043806-17284-1-git-send-email-laura.vasilescu@rosedu.org> X-Gm-Message-State: ALoCoQlH8WG7/rj4WF8l5mkEJ3yC7w+VHnB6kUIu+xYxcQ/Tv18oeCZGt8k+zObY5QCLzhAU8nRI Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Signed-off-by: Laura Mihaela Vasilescu --- drivers/net/ethernet/intel/igb/igb_ethtool.c | 32 ++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/drivers/net/ethernet/intel/igb/igb_ethtool.c b/drivers/net/ethernet/intel/igb/igb_ethtool.c index 85fe7b5..7e18dfa 100644 --- a/drivers/net/ethernet/intel/igb/igb_ethtool.c +++ b/drivers/net/ethernet/intel/igb/igb_ethtool.c @@ -2771,6 +2771,35 @@ static void igb_ethtool_complete(struct net_device *netdev) pm_runtime_put(&adapter->pdev->dev); } +static u32 igb_get_rss_table_size(struct net_device *netdev) +{ + return IGB_RETA_SIZE; +} + +static int igb_get_rss_table(struct net_device *netdev, u32 *rxfh_indir_tbl) +{ + struct igb_adapter *adapter = netdev_priv(netdev); + struct e1000_hw *hw = &adapter->hw; + int i; + + for (i = 0; i < IGB_RETA_SIZE; i++) + rxfh_indir_tbl[i] = rd32(E1000_RETA(i)); + + return 0; +} + +static int igb_set_rss_table(struct net_device *netdev, const u32 *rxfh_indir_tbl) +{ + struct igb_adapter *adapter = netdev_priv(netdev); + struct e1000_hw *hw = &adapter->hw; + int i; + + for (i = 0; i < IGB_RETA_SIZE; i++) + wr32(E1000_RETA(i), rxfh_indir_tbl[i]); + + return 0; +} + static const struct ethtool_ops igb_ethtool_ops = { .get_settings = igb_get_settings, .set_settings = igb_set_settings, @@ -2804,6 +2833,9 @@ static const struct ethtool_ops igb_ethtool_ops = { .set_eee = igb_set_eee, .get_module_info = igb_get_module_info, .get_module_eeprom = igb_get_module_eeprom, + .get_rxfh_indir_size = igb_get_rss_table_size, + .get_rxfh_indir = igb_get_rss_table, + .set_rxfh_indir = igb_set_rss_table, .begin = igb_ethtool_begin, .complete = igb_ethtool_complete, };