From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtpbgau2.qq.com (smtpbgau2.qq.com [54.206.34.216]) (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 C360B3EAC74 for ; Wed, 1 Jul 2026 10:02:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=54.206.34.216 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782900149; cv=none; b=SNyfMdadEBkxVHCPUq7VZyJYZnlO4r53UGyhvQ7hl/0NMLXKOLTbAreA4EuQl1nQMpDEBSRxeuP6xAvIxMSN1fVyqmzTxofy77BZpQ0DLJV7W+twgNOZvIGc89lSOUMGrLB5mb9lGeoPPLO5N0XezN5JZjAIdII7J2aTyNu1Htw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782900149; c=relaxed/simple; bh=fUSTc5xaHdwxnk4fbuxXBwQvXdAxCvyQwCRGaxDrFVQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=oQOVVGHHXV9SFtZ4JFfcweKSvWxDNa1DzZOcJKEXZYVcXR/VyETppnHnQZv+DQoJ6mn/sieEi6BWjeA4jdwqRtb1KBwVwd6gOfziH2KKw/KliedkkkVktLhyYh9kxZZZ8zRtZ0JOSZbaXiOSMmUdSKccC4lwEyLoqsriMAf7lLY= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=net-swift.com; spf=pass smtp.mailfrom=net-swift.com; arc=none smtp.client-ip=54.206.34.216 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=net-swift.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=net-swift.com X-QQ-mid: zesmtpgz4t1782900117t83e64d5c X-QQ-Originating-IP: Q3WV5APDu8C+7mkpyz1/SXyv6gur3JlBfuVtyihDx94= Received: from localhost.localdomain ( [36.24.190.76]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 01 Jul 2026 18:01:56 +0800 (CST) X-QQ-SSF: 0001000000000000000000000000000 X-QQ-GoodBg: 2 X-BIZMAIL-ID: 5844269083898780481 EX-QQ-RecipientCnt: 7 From: Mengyuan Lou To: netdev@vger.kernel.org Cc: jiawenwu@trustnetic.com, duanqiangwen@net-swift.com, horms@kernel.org, kuba@kernel.org, pabeni@redhat.com, Mengyuan Lou Subject: [PATCH net-next v6 2/3] net: libwx: add support for set_coalesce in wx_ethtool_ops_vf Date: Wed, 1 Jul 2026 18:01:44 +0800 Message-Id: <20260701100145.23738-3-mengyuanlou@net-swift.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20260701100145.23738-1-mengyuanlou@net-swift.com> References: <20260701100145.23738-1-mengyuanlou@net-swift.com> Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-QQ-SENDSIZE: 520 Feedback-ID: zesmtpgz:net-swift.com:qybglogicsvrgz:qybglogicsvrgz5b-1 X-QQ-XMAILINFO: MugbZJohYlPR0ZDYDVFyZhfHnN/tDxw9c5DsV5YpbxcwfaCcQbw13tCm LtrueIvJeUn550iShYWEleNBSDKme1dtlWRuvz/r2wqapkMGUvgEdU3MJQrGamMMtV9p21M Ll07WQI9fUZWNjHUWW4vPF17I59CcehFES2wn791HerYIKqnmjHLjHvp92P7lMs6DQ/dvlo wbj5BUR6hUzFyNsS7Mz+SiiXM42ca9+L9SNLWUDW/yVBSdFlRtgRezMBcJr7nnnDNb6T4Fs 6XIrzTfsfLrbg7xxlfTiKBtUuEWM8zpqaCUDsGeLqa5Jf8n2FOier5YZiSvqCrQqGKyAwRi vqGBQcESNmF3u+WTsUrRrbCl0QSt6fpSSth5koZv/QXBor0jfBg7a+n1KuTFVWNQ7aDkyJZ a8JE1lGbq7y/L4x6HLB6CSqbT8XzX94lu74PelXF8JSezfQdETsdkVFWFD7CKRSsROqY4IF 6XGxzqik9MnxOV5iqDlt+YKVnESYymOHuYQ6Jg9VkznN+E40IpRjJGdtzYxGFbUvUGrjKza yCNFCbrgmxXX+o9sGby7Al+tdXcVyRBrNainPg3C3quCQns63KshlfZArgK7L+UR2PQh7os 1nWI+oefLJHZr3i/WTSLmaeZll71RIaCBXsX+pqGmMjPWjWymvptJ3v+Ya83B31trzFqzOD 8WNg/g2qQsR/vtFnLqb4oVZY+TARke34Sf/2bu9TR1ib51JpsCNgrZo1anqprSsVlfHgbnN 7VNzZrT+W4JiQxuwnIXt5eco9uZPYvRaNUGvHxvSKp+b5y76rMHNVo3aNvUG4ATa0Uqe6J7 f94gBa4m3CB8pEnvRCyr7amRY4/IjX99yi2uGIAs1nK4eVNq5kbKRQRblEUvAzytRDTkDZ5 cxeIXthDDQOoYmtdva6v1M/P5kAKzIXyd9Fp4g2HrHrcVhhTZxMRUOXcSPi7M7o9muZJtXJ HvCi+6/VEpstzlJqQjiZANzWG6eYY9CyZdworcQjh8vVDBTj9sxldL6GFmHU5K3O9RzoBC8 Y75KuSdas9EVmhe68E1Mec638RgSPOcWekPGOdWkjgyStVJKYPy2jJIIbWGQUp1fWfpS6EU l6oWYh4z/2uuBiKrO02NyTjhfByvUSOF9DnV2C4I1JPq+GvvyDFtG7iVCruCK8eZ/ksIYsO 6Nd7JcRQMOByN1XoT+b/rhhEWboInylhFjZ/Dz/lrXTgNkw= X-QQ-XMRINFO: MPJ6Tf5t3I/ylTmHUqvI8+Wpn+Gzalws3A== X-QQ-RECHKSPAM: 0 Add support for set_coalesce in wx_ethtool_ops_vf, which is used to set interrupt coalescing parameters. Update wx_write_eitr_vf() to use the same interrupt moderation encoding as PF devices, since PF and VF share the same register layout. And remove the now-unused WX_VXITR_MASK definition. Signed-off-by: Mengyuan Lou --- drivers/net/ethernet/wangxun/libwx/wx_ethtool.c | 7 ++++++- drivers/net/ethernet/wangxun/libwx/wx_vf.h | 1 - drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c | 13 ++++++++++++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/wangxun/libwx/wx_ethtool.c b/drivers/net/ethernet/wangxun/libwx/wx_ethtool.c index eae038df6875..22037f015ded 100644 --- a/drivers/net/ethernet/wangxun/libwx/wx_ethtool.c +++ b/drivers/net/ethernet/wangxun/libwx/wx_ethtool.c @@ -10,6 +10,7 @@ #include "wx_hw.h" #include "wx_lib.h" #include "wx_vf_common.h" +#include "wx_vf_lib.h" struct wx_stats { char stat_string[ETH_GSTRING_LEN]; @@ -488,7 +489,10 @@ int wx_set_coalesce(struct net_device *netdev, else /* rx only or mixed */ q_vector->itr = rx_itr_param; - wx_write_eitr(q_vector); + if (wx->pdev->is_virtfn) + wx_write_eitr_vf(q_vector); + else + wx_write_eitr(q_vector); } wx_update_rsc(wx); @@ -845,6 +849,7 @@ static const struct ethtool_ops wx_ethtool_ops_vf = { .set_ringparam = wx_set_ringparam_vf, .get_msglevel = wx_get_msglevel, .get_coalesce = wx_get_coalesce, + .set_coalesce = wx_set_coalesce, .get_ts_info = ethtool_op_get_ts_info, .get_link_ksettings = wx_get_link_ksettings_vf, }; diff --git a/drivers/net/ethernet/wangxun/libwx/wx_vf.h b/drivers/net/ethernet/wangxun/libwx/wx_vf.h index eb6ca3fe4e97..b64a4de089f2 100644 --- a/drivers/net/ethernet/wangxun/libwx/wx_vf.h +++ b/drivers/net/ethernet/wangxun/libwx/wx_vf.h @@ -41,7 +41,6 @@ #define WX_VF_MAX_RX_QUEUES 4 #define WX_VXITR(i) (0x200 + (4 * (i))) /* i=[0,1] */ -#define WX_VXITR_MASK GENMASK(8, 0) #define WX_VXITR_CNT_WDIS BIT(31) #define WX_VXIVAR_MISC 0x260 #define WX_VXIVAR(i) (0x240 + (4 * (i))) /* i=[0,3] */ diff --git a/drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c b/drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c index aa8be036956c..7325b475ee10 100644 --- a/drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c +++ b/drivers/net/ethernet/wangxun/libwx/wx_vf_lib.c @@ -16,7 +16,18 @@ void wx_write_eitr_vf(struct wx_q_vector *q_vector) int v_idx = q_vector->v_idx; u32 itr_reg; - itr_reg = q_vector->itr & WX_VXITR_MASK; + switch (wx->mac.type) { + case wx_mac_sp: + itr_reg = q_vector->itr & WX_SP_MAX_EITR; + break; + case wx_mac_aml: + case wx_mac_aml40: + itr_reg = (q_vector->itr >> 3) & WX_AML_MAX_EITR; + break; + default: + itr_reg = q_vector->itr & WX_EM_MAX_EITR; + break; + } /* set the WDIS bit to not clear the timer bits and cause an * immediate assertion of the interrupt -- 2.30.1