Received: by 2002:a05:6a10:af89:0:0:0:0 with SMTP id iu9csp3593883pxb; Mon, 24 Jan 2022 13:04:36 -0800 (PST) X-Google-Smtp-Source: ABdhPJx0wqiFoWGAkr6l/8sPTtBhNc2f0+QVsuOZcXyUzbeKdO4qzHIlqMl3sEe80RFdN2Xk5Ly1 X-Received: by 2002:a05:6a00:228c:b0:4c3:40a:74c6 with SMTP id f12-20020a056a00228c00b004c3040a74c6mr15627445pfe.32.1643058275869; Mon, 24 Jan 2022 13:04:35 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643058275; cv=none; d=google.com; s=arc-20160816; b=ebtGUAxIRhfrEvrxPSmmj4Hyi8YayDKXg8xGDLlG3Xung7Mi9MhqpUQAoethpl1yPy Lo3+RYVqSogepf0+hnXaVWczvxpwtWac6kY7kd4XCHj6qFBFXLkrW6wcFJtiwDcGObU+ JvR2CWhh+XbMPhpcsKcdbx1udAVbm2EGuWoSN0mm9LpH/verT90P+ZT1kq6hAJKu2tWi Qv7VQTI/b4ZRwgiXjZiO3TIXEXKSZAW4TODlDrOfjr3qg7OLXzDe5JfAU+doO2q68zUV O8UjJdzCBdDGd04QYzjtAvOz6FA+7xMIz4EfQcYSPGy+MwK2itmGmXI25BBTbUvwvDEH 9bog== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=HZMnRRKvcyJVhfCN2HCngbLPsOt9laHpjdH6T20Gkw4=; b=uOdVIz/Rb2xq/FypQ7DAUUV5GaP1WDt0pntyLTnkp3GS2TV4bk0Nq9Z716BniaHuWD bvc0G6RI1+8LqcWliUd7S5M4dIsGaVDy2enHHX5EP2yAFOG2WxImFTVGLCZk1uBAAveb e3nHvkK9WWmBdYzngl1RwyI5hn+9wAsBnAq5J1Kh/s+R38DUMxVb7QOyQdCyHCnqOGy2 sio1KMJW2Tl223VaOKt7zybPwk+lwlLdt+J6WEBZA9/0Ugc3rkU6MBO5Hf/N59PZurtl ixkzwyg0QgsTIahC7SoHHE8ztgzpdoxnFKCf6ACtw4TOh0FJz56S2K/yjmh5Tpzl4SmI 94xA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Wot25cpX; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id 13si12650625pfo.120.2022.01.24.13.04.23; Mon, 24 Jan 2022 13:04:35 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=Wot25cpX; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1382882AbiAXU01 (ORCPT + 99 others); Mon, 24 Jan 2022 15:26:27 -0500 Received: from dfw.source.kernel.org ([139.178.84.217]:57572 "EHLO dfw.source.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1353838AbiAXUBJ (ORCPT ); Mon, 24 Jan 2022 15:01:09 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 34071611D6; Mon, 24 Jan 2022 20:01:06 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id EF52FC36AE2; Mon, 24 Jan 2022 20:01:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1643054465; bh=aBh7I4G6eOqb3JIhGIqsj/himHv49hrPqU4ibGY8N90=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Wot25cpXPGKIIYyiBhtdeiRoXLOI0Ml/9xeVUCjXQK9NQXrJKVCD2hHuvnUb1Q/Ag MD75QeHpv+ZwAH4IJqhpGJuWqiDfW13ZtPbz8sq5A5KLqKffAnsr+t+N47OQzh6ZdW 7zsLY2ntn6W+HIXCjmyk7R2XwMi4jIvU2ff2OdYk= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Danielle Ratson , Ido Schimmel , "David S. Miller" , Sasha Levin Subject: [PATCH 5.10 399/563] mlxsw: pci: Avoid flow control for EMAD packets Date: Mon, 24 Jan 2022 19:42:44 +0100 Message-Id: <20220124184038.227358463@linuxfoundation.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220124184024.407936072@linuxfoundation.org> References: <20220124184024.407936072@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Danielle Ratson [ Upstream commit d43e4271747ace01a27a49a97a397cb4219f6487 ] Locally generated packets ingress the device through its CPU port. When the CPU port is congested and there are not enough credits in its headroom buffer, packets can be dropped. While this might be acceptable for data packets that traverse the network, configuration packets exchanged between the host and the device (EMADs) should not be subjected to this flow control. The "sdq_lp" bit in the SDQ (Send Descriptor Queue) context allows the host to instruct the device to treat packets sent on this queue as "local processing" and always process them, regardless of the state of the CPU port's headroom. Add the definition of this bit and set it for the dedicated SDQ reserved for the transmission of EMAD packets. This makes the "local processing" bit in the WQE (Work Queue Element) redundant, so clear it. Signed-off-by: Danielle Ratson Signed-off-by: Ido Schimmel Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- drivers/net/ethernet/mellanox/mlxsw/cmd.h | 12 ++++++++++++ drivers/net/ethernet/mellanox/mlxsw/pci.c | 6 +++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/cmd.h b/drivers/net/ethernet/mellanox/mlxsw/cmd.h index 5ffdfb532cb7f..91f68fb0b420a 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/cmd.h +++ b/drivers/net/ethernet/mellanox/mlxsw/cmd.h @@ -905,6 +905,18 @@ static inline int mlxsw_cmd_sw2hw_rdq(struct mlxsw_core *mlxsw_core, */ MLXSW_ITEM32(cmd_mbox, sw2hw_dq, cq, 0x00, 24, 8); +enum mlxsw_cmd_mbox_sw2hw_dq_sdq_lp { + MLXSW_CMD_MBOX_SW2HW_DQ_SDQ_LP_WQE, + MLXSW_CMD_MBOX_SW2HW_DQ_SDQ_LP_IGNORE_WQE, +}; + +/* cmd_mbox_sw2hw_dq_sdq_lp + * SDQ local Processing + * 0: local processing by wqe.lp + * 1: local processing (ignoring wqe.lp) + */ +MLXSW_ITEM32(cmd_mbox, sw2hw_dq, sdq_lp, 0x00, 23, 1); + /* cmd_mbox_sw2hw_dq_sdq_tclass * SDQ: CPU Egress TClass * RDQ: Reserved diff --git a/drivers/net/ethernet/mellanox/mlxsw/pci.c b/drivers/net/ethernet/mellanox/mlxsw/pci.c index 72d5c77bcb949..dbb16ce25bdf3 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/pci.c +++ b/drivers/net/ethernet/mellanox/mlxsw/pci.c @@ -285,6 +285,7 @@ static int mlxsw_pci_sdq_init(struct mlxsw_pci *mlxsw_pci, char *mbox, struct mlxsw_pci_queue *q) { int tclass; + int lp; int i; int err; @@ -292,9 +293,12 @@ static int mlxsw_pci_sdq_init(struct mlxsw_pci *mlxsw_pci, char *mbox, q->consumer_counter = 0; tclass = q->num == MLXSW_PCI_SDQ_EMAD_INDEX ? MLXSW_PCI_SDQ_EMAD_TC : MLXSW_PCI_SDQ_CTL_TC; + lp = q->num == MLXSW_PCI_SDQ_EMAD_INDEX ? MLXSW_CMD_MBOX_SW2HW_DQ_SDQ_LP_IGNORE_WQE : + MLXSW_CMD_MBOX_SW2HW_DQ_SDQ_LP_WQE; /* Set CQ of same number of this SDQ. */ mlxsw_cmd_mbox_sw2hw_dq_cq_set(mbox, q->num); + mlxsw_cmd_mbox_sw2hw_dq_sdq_lp_set(mbox, lp); mlxsw_cmd_mbox_sw2hw_dq_sdq_tclass_set(mbox, tclass); mlxsw_cmd_mbox_sw2hw_dq_log2_dq_sz_set(mbox, 3); /* 8 pages */ for (i = 0; i < MLXSW_PCI_AQ_PAGES; i++) { @@ -1599,7 +1603,7 @@ static int mlxsw_pci_skb_transmit(void *bus_priv, struct sk_buff *skb, wqe = elem_info->elem; mlxsw_pci_wqe_c_set(wqe, 1); /* always report completion */ - mlxsw_pci_wqe_lp_set(wqe, !!tx_info->is_emad); + mlxsw_pci_wqe_lp_set(wqe, 0); mlxsw_pci_wqe_type_set(wqe, MLXSW_PCI_WQE_TYPE_ETHERNET); err = mlxsw_pci_wqe_frag_map(mlxsw_pci, wqe, 0, skb->data, -- 2.34.1