From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.10]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1B4A33B6BE8 for ; Mon, 30 Mar 2026 23:02:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=198.175.65.10 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774911779; cv=none; b=BVmH10sw4VRqX0N12mSL6U47Ac4Fx9fa6yLTlPMr64xNpfI1R1ySRQfmLRWVFGCX2V9DmHscphihAejJqK0+lfzVfxlsntXWP0M/WVwdzvwPSwM66pca3lWTs3o/JwShUb3glYHg1sDx/yr6ySkhwky0RktU6xYe3YdZCW3aVMM= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774911779; c=relaxed/simple; bh=KUyghGfOZ9v2retXC3WGCa3PdQJT3W7rvO9rOtWy5V8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Q4s+I7hXhwPAFYLmb1UWXEOceT9H7FUVuiKab1ID2oKsYFFZTtCIrSVJ/GugfZTG2A/vHrg74rVXkCJ9YJ3GcQzxHioC95fGDOhLolTFJke22Uy+Mpqjg5/ABmteJmSxqhtUoCATEma/JEmO0A8TS4a5bGhPmQRgeglrEH7dfYk= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=HXbg+GH/; arc=none smtp.client-ip=198.175.65.10 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="HXbg+GH/" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1774911777; x=1806447777; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=KUyghGfOZ9v2retXC3WGCa3PdQJT3W7rvO9rOtWy5V8=; b=HXbg+GH/1CF8FfwCJN4NiU1BWNIEUKRg9hhRf7yjD3U/08k6BxwbdfXx EcWGizF7o09X1nzDzsFm51jUueUEMD/aMAJ72P9pJ9KcezVzyP5hhU5xF dZqmjNk7tySy1rd4jA047hS6FbssxIbYmoY7A0a5PbWRYzgRpMWDHLRJu U90zhbvma/Y26O+eIFw0JcR8B06gTItTCg/6gViadB3I+gn6q7Fq2ne7C 5k4bJRexkFlc1crxSwUSIZzu4RAkHDVlLWhICgNWM86iMcnQhtYFZBhqp 5NybUM/IpxwT4AlZGXrZYwNuRpzaSth6Tj/TWC10O4wUPk9v0AXvNY74n Q==; X-CSE-ConnectionGUID: L+RlSoG/R9G1YoKd4kLzIQ== X-CSE-MsgGUID: HLe+QsybTDaAUQ2MOAY+5g== X-IronPort-AV: E=McAfee;i="6800,10657,11744"; a="93297586" X-IronPort-AV: E=Sophos;i="6.23,150,1770624000"; d="scan'208";a="93297586" Received: from orviesa002.jf.intel.com ([10.64.159.142]) by orvoesa102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 30 Mar 2026 16:02:53 -0700 X-CSE-ConnectionGUID: METYMt+1SiWVT/rQkLB/PQ== X-CSE-MsgGUID: T1sPi87GQZ6djRqDhDMEgQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.23,150,1770624000"; d="scan'208";a="256687720" Received: from anguy11-upstream.jf.intel.com ([10.166.9.133]) by orviesa002.jf.intel.com with ESMTP; 30 Mar 2026 16:02:53 -0700 From: Tony Nguyen To: davem@davemloft.net, kuba@kernel.org, pabeni@redhat.com, edumazet@google.com, andrew+netdev@lunn.ch, netdev@vger.kernel.org Cc: Kohei Enju , anthony.l.nguyen@intel.com, dima.ruinskiy@intel.com, kohei.enju@gmail.com, horms@kernel.org, Avigail Dahan Subject: [PATCH net-next 06/15] igc: allow configuring RSS key via ethtool set_rxfh Date: Mon, 30 Mar 2026 16:02:35 -0700 Message-ID: <20260330230248.646900-7-anthony.l.nguyen@intel.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20260330230248.646900-1-anthony.l.nguyen@intel.com> References: <20260330230248.646900-1-anthony.l.nguyen@intel.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Kohei Enju Change igc_ethtool_set_rxfh() to accept and save a userspace-provided RSS key. When a key is provided, store it in the adapter and write the RSSRK registers accordingly. This can be tested using `ethtool -X hkey `. Signed-off-by: Kohei Enju Reviewed-by: Simon Horman Tested-by: Avigail Dahan Signed-off-by: Tony Nguyen --- drivers/net/ethernet/intel/igc/igc_ethtool.c | 30 +++++++++++--------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/drivers/net/ethernet/intel/igc/igc_ethtool.c b/drivers/net/ethernet/intel/igc/igc_ethtool.c index abe8eb695c2a..3a63c6db4241 100644 --- a/drivers/net/ethernet/intel/igc/igc_ethtool.c +++ b/drivers/net/ethernet/intel/igc/igc_ethtool.c @@ -1539,24 +1539,28 @@ static int igc_ethtool_set_rxfh(struct net_device *netdev, int i; /* We do not allow change in unsupported parameters */ - if (rxfh->key || - (rxfh->hfunc != ETH_RSS_HASH_NO_CHANGE && - rxfh->hfunc != ETH_RSS_HASH_TOP)) + if (rxfh->hfunc != ETH_RSS_HASH_NO_CHANGE && + rxfh->hfunc != ETH_RSS_HASH_TOP) return -EOPNOTSUPP; - if (!rxfh->indir) - return 0; - num_queues = adapter->rss_queues; + if (rxfh->indir) { + num_queues = adapter->rss_queues; - /* Verify user input. */ - for (i = 0; i < IGC_RETA_SIZE; i++) - if (rxfh->indir[i] >= num_queues) - return -EINVAL; + /* Verify user input. */ + for (i = 0; i < IGC_RETA_SIZE; i++) + if (rxfh->indir[i] >= num_queues) + return -EINVAL; - for (i = 0; i < IGC_RETA_SIZE; i++) - adapter->rss_indir_tbl[i] = rxfh->indir[i]; + for (i = 0; i < IGC_RETA_SIZE; i++) + adapter->rss_indir_tbl[i] = rxfh->indir[i]; - igc_write_rss_indir_tbl(adapter); + igc_write_rss_indir_tbl(adapter); + } + + if (rxfh->key) { + memcpy(adapter->rss_key, rxfh->key, sizeof(adapter->rss_key)); + igc_write_rss_key(adapter); + } return 0; } -- 2.47.1