From patchwork Sun Jan 14 11:33:14 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Pirko X-Patchwork-Id: 860430 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=resnulli-us.20150623.gappssmtp.com header.i=@resnulli-us.20150623.gappssmtp.com header.b="W8dSiEw5"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zKDrW30xDz9sBZ for ; Sun, 14 Jan 2018 22:33:31 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751565AbeANLd1 (ORCPT ); Sun, 14 Jan 2018 06:33:27 -0500 Received: from mail-wm0-f68.google.com ([74.125.82.68]:37615 "EHLO mail-wm0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750979AbeANLdY (ORCPT ); Sun, 14 Jan 2018 06:33:24 -0500 Received: by mail-wm0-f68.google.com with SMTP id f140so19383403wmd.2 for ; Sun, 14 Jan 2018 03:33:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=resnulli-us.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=qXvndgLTM7nrEtLSl00UdlBONqbsoqxdc6okZgMsYkA=; b=W8dSiEw5yEtAEWYwH6GbUtkWUm0I6iu1OvkB/HN5EB6hwAfOzJx1E+X0neVpxLKj7X As1lJ7PNegZauYiylvhEGxnh8jsLUPtq4qNl9twwkfQDQOcHcopE/WimycQ49GHu4G2a xhhINPaeKfR+JtM2vERBXqj3Q9IA5OfBUEmr7FujqyxawrbAD+4UfsubVaP2mA/GCoSb QUQBU4MQkyGm6PHIh5vh6joEIYJUCqylmizCy2OfPS+5cb/IHSqN581Evvn+VWW5nZGL nqw7wR6ObmDoFIFBA/B7rvy2oftdpEsKGMzAPCwvPNaBWjgIuCWiUIOShkIvs9Ra27Z0 DD7w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=qXvndgLTM7nrEtLSl00UdlBONqbsoqxdc6okZgMsYkA=; b=aBMGo5H8WTS0mqNlLVhlfup4wsI+4U8DkAQZAI+ldbmLcXJu76tShR9UFkxlvw3EZm lBtNxiszePrFbpIG39p6X6HPI7t/2aeE/ToofPkvhDDALlDV3TVuGveh1M2D2/RzCRT1 LNmpdF421YvHS+AuN4/rv5yJBMjWdMHmAYHC+lIHVW3i55agKOWVPsixmzJhlZfnmUmn MOQt/jDw8FbhCTtW7OKVmxJo1GE6OhA1BFA72U7TYH1/4uxm0WkcBA4MLKFinX/ePZt8 xX79LvTshZWWXUGOfVmS69Js4keIJDNqCp1oXKoYyAgmMocjryWsfFaBk5rVREhuRI5F 8jQA== X-Gm-Message-State: AKwxytdD5T9jD2y+0hIasLWZUACh1vDOK6ciYU1N3TumpUWtgVsIIPvD vsEmdSyXPIgjgS/a8snVM0+hJE4OVO0zwA== X-Google-Smtp-Source: ACJfBovVKkr5SMwx0XlEn7T4iHUm1npcU14pjeF8yGogT84i25KrZouiP/QACbNLooZ3Nvu7kWRg0w== X-Received: by 10.28.66.150 with SMTP id k22mr8454972wmi.104.1515929603117; Sun, 14 Jan 2018 03:33:23 -0800 (PST) Received: from localhost (ip-160-218-244-106.eurotel.cz. [160.218.244.106]) by smtp.gmail.com with ESMTPSA id y23sm4565434wrc.24.2018.01.14.03.33.22 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sun, 14 Jan 2018 03:33:22 -0800 (PST) From: Jiri Pirko To: netdev@vger.kernel.org Cc: nogahf@mellanox.com, yuvalm@mellanox.com, davem@davemloft.net, idosch@mellanox.com, mlxsw@mellanox.com, jhs@mojatatu.com, xiyou.wangcong@gmail.com, kubakici@wp.pl Subject: [patch net-next v2 2/5] mlxsw: spectrum_router: Configure default routing priority Date: Sun, 14 Jan 2018 12:33:14 +0100 Message-Id: <20180114113317.4706-3-jiri@resnulli.us> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180114113317.4706-1-jiri@resnulli.us> References: <20180114113317.4706-1-jiri@resnulli.us> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Yuval Mintz When routing ip packets, the kernel is setting the SKB's priority based on the tos field of the packet. Imitate this behavior in the mlxsw router, having the internal switch priority of a routed packet determined according to its DS field. Signed-off-by: Yuval Mintz Signed-off-by: Nogah Frankel Signed-off-by: Jiri Pirko --- .../net/ethernet/mellanox/mlxsw/spectrum_router.c | 24 ++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c index 7a136256b8f7..01ff5ba6796e 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c @@ -7011,6 +7011,24 @@ static int mlxsw_sp_mp_hash_init(struct mlxsw_sp *mlxsw_sp) } #endif +static int mlxsw_sp_dscp_init(struct mlxsw_sp *mlxsw_sp) +{ + char rdpm_pl[MLXSW_REG_RDPM_LEN]; + unsigned int i; + + MLXSW_REG_ZERO(rdpm, rdpm_pl); + + /* HW is determining switch priority based on DSCP-bits, but the + * kernel is still doing that based on the ToS. Since there's a + * mismatch in bits we need to make sure to translate the right + * value ToS would observe, skipping the 2 least-significant ECN bits. + */ + for (i = 0; i < MLXSW_REG_RDPM_DSCP_ENTRY_REC_MAX_COUNT; i++) + mlxsw_reg_rdpm_pack(rdpm_pl, i, rt_tos2priority(i << 2)); + + return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(rdpm), rdpm_pl); +} + static int __mlxsw_sp_router_init(struct mlxsw_sp *mlxsw_sp) { char rgcr_pl[MLXSW_REG_RGCR_LEN]; @@ -7023,6 +7041,7 @@ static int __mlxsw_sp_router_init(struct mlxsw_sp *mlxsw_sp) mlxsw_reg_rgcr_pack(rgcr_pl, true, true); mlxsw_reg_rgcr_max_router_interfaces_set(rgcr_pl, max_rifs); + mlxsw_reg_rgcr_usp_set(rgcr_pl, true); err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(rgcr), rgcr_pl); if (err) return err; @@ -7098,6 +7117,10 @@ int mlxsw_sp_router_init(struct mlxsw_sp *mlxsw_sp) if (err) goto err_mp_hash_init; + err = mlxsw_sp_dscp_init(mlxsw_sp); + if (err) + goto err_dscp_init; + mlxsw_sp->router->fib_nb.notifier_call = mlxsw_sp_router_fib_event; err = register_fib_notifier(&mlxsw_sp->router->fib_nb, mlxsw_sp_router_fib_dump_flush); @@ -7107,6 +7130,7 @@ int mlxsw_sp_router_init(struct mlxsw_sp *mlxsw_sp) return 0; err_register_fib_notifier: +err_dscp_init: err_mp_hash_init: unregister_netevent_notifier(&mlxsw_sp->router->netevent_nb); err_register_netevent_notifier: