From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (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 6131942882C for ; Tue, 9 Jun 2026 13:49:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781012975; cv=none; b=ABcOwMSGeQJO0k0UmDAhmaMlz98yCp7NgdY8kn6BlWGTIbInhTMDRCQWr3fbH58GevUPHxDAYvHuC51IO5tnxKC0/EgV2Kkn85GH+tJIQleo0azsltgIEKQwuWevwiOIQ8HIR2jQOEAdnV2DNyxKqaJeaWqFvB8ydPoxxmMdyAQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781012975; c=relaxed/simple; bh=52hnpEEgmB0qWOhFXmQimr5kmQmV0hK1rKA90td2mpE=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=ItLdzxkRhJf1md/SqH+dLrz7CRhXWHwC7aVdOC4DImejhaaDLYG8xcw6EXt4j0m6f6uZT2q4XwDodKHnqZ3olsMf0iO3oNurWK8DXgyR9208rA1hVp6eFmzzSEHd5Q2REg3G5PVUhn5fKWQaDBJ4dozhymMfzdoU1MR11Ep3bDs= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=jGsQDOKa; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=jK9aVJGT; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="jGsQDOKa"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="jK9aVJGT" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781012973; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=s6ZyLSFW2ZGo0KhUw8PJ3xCFPCwEjsrRdGcTeemtK0Q=; b=jGsQDOKaZV4smkbOzjKhCXSIb3+8QYFUhBx6B4fxT5buxUpaoL2ZloIgoAY12/UDibN5qR SGwD8GZG5jqSQgGRKUFCci3Ly1CRafL9wqLNSCdJBW0N1paADofinOI/EXbpsSOfZN3cFo OTd7NGy6H/MbWvs8xszkYMZ07PjvuCk= Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-689-fi40ili_Mg-0QT16pSmrvg-1; Tue, 09 Jun 2026 09:49:30 -0400 X-MC-Unique: fi40ili_Mg-0QT16pSmrvg-1 X-Mimecast-MFC-AGG-ID: fi40ili_Mg-0QT16pSmrvg_1781012969 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-490a767c7dcso44982725e9.2 for ; Tue, 09 Jun 2026 06:49:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781012969; x=1781617769; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:content-language:from :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=s6ZyLSFW2ZGo0KhUw8PJ3xCFPCwEjsrRdGcTeemtK0Q=; b=jK9aVJGTxv8be1+tKzicU7/AOu5CStC3IF11kDiUoOs5TCuXNHt70oGKCJ/NXnuWnq Qrp0SI4A9Q1W/D0+Y/KagkERSITlruDORdL/XEBHrCeg9HyhO+QK2X3MLgPjbQj8neef m5520zjbb7S8hL7CgC3V8K8UgsZF57KOPiD6ysud22c2m7BgoR7nhPfTh4RV43a7DLfL o004DPFsvYEnrgUY6xylZUuulPdq8fffA9QEExifr/5GemmYWurs5vb3WXvtC21jdOJ7 9wxDHoLMLYfNCuIqrXPLClxM3AeJHcZQ2NoUMp2I8YtnweyQtcdCdyciOa2/sJ/6R+NR X3uQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781012969; x=1781617769; h=content-transfer-encoding:in-reply-to:content-language:from :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=s6ZyLSFW2ZGo0KhUw8PJ3xCFPCwEjsrRdGcTeemtK0Q=; b=eANAqOcFFAavrH75pTeN66P3NAizub71Joxhezy5Wr1UskWa9K1D9Z4/D87hBK3ALf caPyYxj+E2hZ9snFkr5pzHRzwJxZklv/qckKZWUp+8AlnzvbEvjYbFX3oCd3k5Eg/s91 F5XJGW86rCPi8iyJPLVExWL3rs9VjhdYSbyxLjYPttALUT3qwVBQAFrmD+MOdYbTCAxX cE3nyp3pd6WHagH6NwEbpoqQRZOPIBJ0J6V+WJsZ+kRulhyGXDQeyr4o9trc4vBPjPyh J4yRYoz8mstikBU+N0Ggx4zcj/7Ms1mznWMx8T0GzhNpkcQx3me/zkZSAnIz6a4XwzKg O69A== X-Forwarded-Encrypted: i=1; AFNElJ/t/76LfsJhjEoiIsuDljsPK7XsHNg9QpAjZ3vUd7gRB8ENAVCJLmsqvluLzu1ckwDhtnjoqBor51N9o/8=@vger.kernel.org X-Gm-Message-State: AOJu0YxvdERFfRQ5/YHeOV3DvX+M+S2xsX/Xa2nTtXKZDg3sIckHGseZ VpTgOlAOXpo8dJXWyiIh4x9IfHoMM3OkjVOBy80L3rjv3ApGEEfhUsSeKPFyejDcrYlhC8E1lhW FenMsGyqGZKeayz3ELM7Gvm5Zmv6+lg4U/aNDA7iJCN4qz7atTvHQcofiGk9hNU3QHw== X-Gm-Gg: Acq92OFWYaRAONPIEj7PqaqFyvERL6D9SjV/4YGXDJlldTPaXNrnt27hjbAv2ks5sN8 LpveMdyLaGyVLspuli4ABBzMNQXZLgXntkUA535kqSZDlGoiSMYhXCU55C7zJ2+DQ5uDAvBC+Pk lCE3bYabUfqS5hjZ7OlUPHTEBlfO0SJac9MCTnp8yXaPG0k/LdUuXYtLEweGEcJV+VRbAk6HxG6 EdW69+qxX+QeamFIqKVTk4IIprEon53++5bMsGmu44IWQ1gPFUUg6CDqgWa4v8dOW3tVgxzmkbC 8U+Jd/LxPPXxYi+87XZzuVP4tZbzy75EcLDzjdPfSlq3Wd+iP83eWbJMtjMV2bdnT4AgOWX5uZR eRt5UeuSP8qBs5Tmp786fKBxAKgbjG/kXehK8+8DHVJubYNrLzNv8XCPb3Q2mlu103g== X-Received: by 2002:a05:600c:198d:b0:490:9d1b:f086 with SMTP id 5b1f17b1804b1-490c25baa0bmr347625605e9.14.1781012969024; Tue, 09 Jun 2026 06:49:29 -0700 (PDT) X-Received: by 2002:a05:600c:198d:b0:490:9d1b:f086 with SMTP id 5b1f17b1804b1-490c25baa0bmr347625035e9.14.1781012968602; Tue, 09 Jun 2026 06:49:28 -0700 (PDT) Received: from [192.168.88.32] ([150.228.93.44]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-490bc23394asm480555685e9.0.2026.06.09.06.49.26 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jun 2026 06:49:28 -0700 (PDT) Message-ID: Date: Tue, 9 Jun 2026 15:49:25 +0200 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH net-next v2] net: mana: Add Interrupt Moderation support To: Haiyang Zhang , linux-hyperv@vger.kernel.org, netdev@vger.kernel.org, "K. Y. Srinivasan" , Haiyang Zhang , Wei Liu , Dexuan Cui , Long Li , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Konstantin Taranov , Simon Horman , Shradha Gupta , Erni Sri Satya Vennela , Dipayaan Roy , Aditya Garg , Kees Cook , Breno Leitao , linux-kernel@vger.kernel.org, linux-rdma@vger.kernel.org Cc: paulros@microsoft.com References: <20260604234211.2056341-1-haiyangz@linux.microsoft.com> From: Paolo Abeni Content-Language: en-US In-Reply-To: <20260604234211.2056341-1-haiyangz@linux.microsoft.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 6/5/26 1:41 AM, Haiyang Zhang wrote: > diff --git a/drivers/net/ethernet/microsoft/mana/mana_en.c b/drivers/net/ethernet/microsoft/mana/mana_en.c > index db14357d3732..b1e0c444f414 100644 > --- a/drivers/net/ethernet/microsoft/mana/mana_en.c > +++ b/drivers/net/ethernet/microsoft/mana/mana_en.c > @@ -1551,6 +1551,9 @@ int mana_create_wq_obj(struct mana_port_context *apc, > > mana_gd_init_req_hdr(&req.hdr, MANA_CREATE_WQ_OBJ, > sizeof(req), sizeof(resp)); > + > + req.hdr.req.msg_version = GDMA_MESSAGE_V3; > + req.hdr.resp.msg_version = GDMA_MESSAGE_V2; Sashiko noted the above cold break initialization on older firmware: https://sashiko.dev/#/patchset/20260604234211.2056341-1-haiyangz%40linux.microsoft.com [...] > +static void mana_update_rx_dim(struct mana_cq *cq) > +{ > + struct mana_port_context *apc = netdev_priv(cq->rxq->ndev); > + struct mana_rxq *rxq = cq->rxq; > + struct dim_sample dim_sample = {}; Minor nit: please fix the variable declaration order above. Other occurrences below. [...] > @@ -440,17 +474,94 @@ static int mana_set_coalesce(struct net_device *ndev, > return -EINVAL; > } > > - saved_cqe_coalescing_enable = apc->cqe_coalescing_enable; > + if (ec->rx_coalesce_usecs > MANA_INTR_MODR_USEC_MAX || > + ec->tx_coalesce_usecs > MANA_INTR_MODR_USEC_MAX) { > + NL_SET_ERR_MSG_FMT(extack, > + "coalesce usecs must be <= %lu", > + MANA_INTR_MODR_USEC_MAX); > + return -EINVAL; > + } > + > + if (ec->rx_max_coalesced_frames > MANA_INTR_MODR_COMP_MAX || > + ec->tx_max_coalesced_frames > MANA_INTR_MODR_COMP_MAX) { > + NL_SET_ERR_MSG_FMT(extack, > + "coalesce frames must be <= %lu", > + MANA_INTR_MODR_COMP_MAX); > + return -EINVAL; > + } > + > + if (ec->rx_coalesce_usecs != apc->intr_modr_rx_usec || > + ec->rx_max_coalesced_frames != apc->intr_modr_rx_comp || > + ec->tx_coalesce_usecs != apc->intr_modr_tx_usec || > + ec->tx_max_coalesced_frames != apc->intr_modr_tx_comp) > + modr_changed = true; > + > + saved.intr_modr_rx_usec = apc->intr_modr_rx_usec; > + saved.intr_modr_rx_comp = apc->intr_modr_rx_comp; > + saved.intr_modr_tx_usec = apc->intr_modr_tx_usec; > + saved.intr_modr_tx_comp = apc->intr_modr_tx_comp; > + > + apc->intr_modr_rx_usec = ec->rx_coalesce_usecs; > + apc->intr_modr_rx_comp = ec->rx_max_coalesced_frames; > + apc->intr_modr_tx_usec = ec->tx_coalesce_usecs; > + apc->intr_modr_tx_comp = ec->tx_max_coalesced_frames; > + > + if (!!ec->use_adaptive_rx_coalesce != apc->rx_dim_enabled || > + !!ec->use_adaptive_tx_coalesce != apc->tx_dim_enabled) > + dim_changed = true; > + > + saved.rx_dim_enabled = apc->rx_dim_enabled; > + saved.tx_dim_enabled = apc->tx_dim_enabled; > + apc->rx_dim_enabled = !!ec->use_adaptive_rx_coalesce; > + apc->tx_dim_enabled = !!ec->use_adaptive_tx_coalesce; > + > + saved.cqe_coalescing_enable = apc->cqe_coalescing_enable; > apc->cqe_coalescing_enable = > kernel_coal->rx_cqe_frames == MANA_RXCOMP_OOB_NUM_PPI; > > if (!apc->port_is_up) > return 0; > > - err = mana_config_rss(apc, TRI_STATE_TRUE, false, false); > - if (err) > - apc->cqe_coalescing_enable = saved_cqe_coalescing_enable; > + if (apc->cqe_coalescing_enable != saved.cqe_coalescing_enable && > + !modr_changed && !dim_changed) { > + /* If only CQE coalescing setting is changed, we can just update > + * RSS configuration. > + */ > + err = mana_config_rss(apc, TRI_STATE_TRUE, false, false); > + if (err) { > + netdev_err(ndev, "Change CQE coalescing failed: %d\n", > + err); > + apc->cqe_coalescing_enable = > + saved.cqe_coalescing_enable; > + return err; > + } > + return 0; > + } > + > + if (modr_changed || dim_changed) { > + err = mana_detach(ndev, false); > + if (err) { > + netdev_err(ndev, "mana_detach failed: %d\n", err); > + goto restore_modr; > + } > + > + err = mana_attach(ndev); > + if (err) { > + netdev_err(ndev, "mana_attach failed: %d\n", err); > + goto restore_modr; > + } You should try hard to avoid this sequence: if mana_attach fails, mana_set_coalesce() will leave the NIC unexpectedly down. /P