From patchwork Mon Mar 30 18:35:27 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vlad Zolotarov X-Patchwork-Id: 456293 X-Patchwork-Delegate: jeffrey.t.kirsher@intel.com Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from silver.osuosl.org (silver.osuosl.org [140.211.166.136]) by ozlabs.org (Postfix) with ESMTP id 8DFC1140187 for ; Tue, 31 Mar 2015 05:35:49 +1100 (AEDT) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id DC78E31AEF for ; Mon, 30 Mar 2015 18:35:48 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id CnOa+9QucYXu for ; Mon, 30 Mar 2015 18:35:48 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by silver.osuosl.org (Postfix) with ESMTP id 2BF9025CC2 for ; Mon, 30 Mar 2015 18:35:48 +0000 (UTC) X-Original-To: intel-wired-lan@lists.osuosl.org Delivered-To: intel-wired-lan@lists.osuosl.org Received: from fraxinus.osuosl.org (fraxinus.osuosl.org [140.211.166.137]) by ash.osuosl.org (Postfix) with ESMTP id AEC801CEA28 for ; Mon, 30 Mar 2015 18:35:46 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id ABFD8A27D3 for ; Mon, 30 Mar 2015 18:35:46 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id RxVZxtyDUtpR for ; Mon, 30 Mar 2015 18:35:45 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from mail-wg0-f50.google.com (mail-wg0-f50.google.com [74.125.82.50]) by fraxinus.osuosl.org (Postfix) with ESMTPS id 444CFA2B00 for ; Mon, 30 Mar 2015 18:35:45 +0000 (UTC) Received: by wgra20 with SMTP id a20so184176287wgr.3 for ; Mon, 30 Mar 2015 11:35:43 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=h9Tat556dzYsEgdZIa5WVBgIt95sEU1YNu6fE9lFDOY=; b=Oz+BRoE66KzkQRcnLvl/wzXDP0ENYhMQ5mtNxj/bDf+01QQK8Vqw13KcdDV4WUZOB3 VaOQyY6wJ6Bf7gUAe2dyhBC2LJqmT6a8Bsp1xs470MZVIeocwmqnq1C8RPX4Keg4c85j XdoeY6VM+LPaK4FlcbSk/pcjeWAnpwWQzEqOV0t96EgB3niOdhG7ViggXr5um3gn8KaS v4/mBYTdWbnBRjkIK+VixtzFOo3wi/v4vF+aeGlrbgAHe7zcD+T0gVVvGRuiexLkQAW8 Pd2gBcSl/SoXfIMq7VD+wz5K5+l3sDN7OzG8Qze85CvW+ySAq4v/qmHIaCrMtuh9m/NJ 97Mg== X-Gm-Message-State: ALoCoQmAg9lIiyCA7cKmMe/pjRJ7D5CPdkasrp3j9UW8dAVMbAXa2oJPYQRUqvB6fY1eI1d5/vmU X-Received: by 10.180.98.137 with SMTP id ei9mr24430164wib.92.1427740543810; Mon, 30 Mar 2015 11:35:43 -0700 (PDT) Received: from vladz-laptop.localdomain ([109.65.117.109]) by mx.google.com with ESMTPSA id gd6sm17450407wib.17.2015.03.30.11.35.42 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 30 Mar 2015 11:35:42 -0700 (PDT) From: Vlad Zolotarov To: netdev@vger.kernel.org Date: Mon, 30 Mar 2015 21:35:27 +0300 Message-Id: <1427740529-9605-6-git-send-email-vladz@cloudius-systems.com> X-Mailer: git-send-email 2.1.0 In-Reply-To: <1427740529-9605-1-git-send-email-vladz@cloudius-systems.com> References: <1427740529-9605-1-git-send-email-vladz@cloudius-systems.com> Cc: avi@cloudius-systems.com, intel-wired-lan@lists.osuosl.org, gleb@cloudius-systems.com Subject: [Intel-wired-lan] [PATCH net-next v10 5/7] ixgbe: Add GET_RSS_KEY command to VF-PF channel commands set X-BeenThere: intel-wired-lan@lists.osuosl.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Intel Wired Ethernet Linux Kernel Driver Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: intel-wired-lan-bounces@lists.osuosl.org Sender: "Intel-wired-lan" For 82599 and x540 VFs and PF share the same RSS Key. Therefore we will return the same RSS key for all VFs. Support for other devices will be added later. Signed-off-by: Vlad Zolotarov Tested-by: Phil Schmitt --- New in v10: - Return more self-explaining values. New in v9: - Reduce the support to 82599 and x540 devices only. - Get rid of registers access in GET_VF_RSS_KEY flow: - Get the RSS HASH Key value from the PF's adapter->rss_key[]. New in v5: - Use a newly added netdev op to allow/prevent the RSS Hash Key querying on a per-VF basis. New in v3: - Added a support for x550 devices. New in v1 (compared to RFC): - Use "if-else" statement instead of a "switch-case" for a single option case (in ixgbe_get_vf_rss_key()). --- drivers/net/ethernet/intel/ixgbe/ixgbe_mbx.h | 1 + drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_mbx.h b/drivers/net/ethernet/intel/ixgbe/ixgbe_mbx.h index 3522f53..b1e4703 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_mbx.h +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_mbx.h @@ -100,6 +100,7 @@ enum ixgbe_pfvf_api_rev { /* mailbox API, version 1.2 VF requests */ #define IXGBE_VF_GET_RETA 0x0a /* VF request for RETA */ +#define IXGBE_VF_GET_RSS_KEY 0x0b /* get RSS key */ /* length of permanent address message returned from PF */ #define IXGBE_VF_PERMADDR_MSG_LEN 4 diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c index 81f54c3..d03b592 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c @@ -982,6 +982,24 @@ static int ixgbe_get_vf_reta(struct ixgbe_adapter *adapter, u32 *msgbuf, u32 vf) return 0; } +static int ixgbe_get_vf_rss_key(struct ixgbe_adapter *adapter, + u32 *msgbuf, u32 vf) +{ + u32 *rss_key = &msgbuf[1]; + + /* Check if the operation is permitted */ + if (!adapter->vfinfo[vf].rss_query_enabled) + return -EPERM; + + /* verify the PF is supporting the correct API */ + if (adapter->vfinfo[vf].vf_api != ixgbe_mbox_api_12) + return -EOPNOTSUPP; + + memcpy(rss_key, adapter->rss_key, sizeof(adapter->rss_key)); + + return 0; +} + static int ixgbe_rcv_msg_from_vf(struct ixgbe_adapter *adapter, u32 vf) { u32 mbx_size = IXGBE_VFMAILBOX_SIZE; @@ -1041,6 +1059,9 @@ static int ixgbe_rcv_msg_from_vf(struct ixgbe_adapter *adapter, u32 vf) case IXGBE_VF_GET_RETA: retval = ixgbe_get_vf_reta(adapter, msgbuf, vf); break; + case IXGBE_VF_GET_RSS_KEY: + retval = ixgbe_get_vf_rss_key(adapter, msgbuf, vf); + break; default: e_err(drv, "Unhandled Msg %8.8x\n", msgbuf[0]); retval = IXGBE_ERR_MBX;