From patchwork Thu Jan 11 10:20:59 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiri Pirko X-Patchwork-Id: 859011 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="i2J30yfu"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zHMNQ63Szz9ryk for ; Thu, 11 Jan 2018 21:21:10 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933294AbeAKKVI (ORCPT ); Thu, 11 Jan 2018 05:21:08 -0500 Received: from mail-wr0-f195.google.com ([209.85.128.195]:34910 "EHLO mail-wr0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S933008AbeAKKVF (ORCPT ); Thu, 11 Jan 2018 05:21:05 -0500 Received: by mail-wr0-f195.google.com with SMTP id n9so1698309wrg.2 for ; Thu, 11 Jan 2018 02:21:05 -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=COwKzFnR82xC1l2/m5YDjMD2iO0CTenLTVD84z0En9A=; b=i2J30yfumly+oE0ZTr3Xgxumtz8cQUsOCFfO5TlUTOJGeA85aTnNj3Zz4gSXRBJlfl hLhSWYvdQQ9SlF/FFHzaJRmckcBeVSIOf7gfe5xk8SZXJJ0Zd7pRWc71R514A3fpSNRd nlkFSZ0edm6xnd84VLVVga03xmcmB2SQ58iN21gRU5lTbMTheWYkuuZam6tFp1/SvTnI ol14FB0TxiDZunJkQeemB+3YNjnWPWA4VzKTzENURwQY8Te1DZdXJpH0//SFr/NSp4vh Vwmgos7Y2Rj3GarZebLPx076lG0kuahdPmRxBnvWLsARbHxRqKTHC6+fxUezwITgYVer CKpA== 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=COwKzFnR82xC1l2/m5YDjMD2iO0CTenLTVD84z0En9A=; b=eWmu402d+LrPz0mDcJWRkESEEF/W5izMS2p0rNzsG0DftBCRd8Hz1Xn9hGcgLsOLBQ khUeAztYfuGpTCxqLWeGGXKV68HPIHDPTvwzz6luy57PIFDUjqCjRHoEEYpb3XeUIUZS vqSKvFIUzeT9U2lFgtPL7rHlBM6XX4xGLSsrLPCF/5q4VandNZFOMVdQYRW4b6ShGIiu FUTUQ3+LtMctqU3qbg8HvV6+vBH5zN/75NowIWl6SX6M2tpT5j7VYaCZHgJvXK1MCl/J 1CwOMkrY84P4ORC7XdhnXBaSWidtvYlownUyaUCJrUKDhybVNiurOlYNdwcn5hrU9Wz8 mXCQ== X-Gm-Message-State: AKGB3mLcRQfijTVoo0+S2MGQu24PV+6lCS1tP4aktDYqQZYQWyv02kAp fqKlo3fwbUBdX2oSwI4Vwr1msQJc X-Google-Smtp-Source: ACJfBotGO5HBVszCLQpjuFEO9yw3X6Dbf7xYzMCfIsPOQ9TCr5iLvcoJ/XZRkwwhT34ehKOkqauK5g== X-Received: by 10.223.156.145 with SMTP id d17mr19184237wre.198.1515666064476; Thu, 11 Jan 2018 02:21:04 -0800 (PST) Received: from localhost (jirka.pirko.cz. [84.16.102.26]) by smtp.gmail.com with ESMTPSA id h4sm14511666wrh.40.2018.01.11.02.21.04 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 11 Jan 2018 02:21:04 -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 Subject: [patch net-next 2/5] mlxsw: spectrum_router: Configure default routing priority Date: Thu, 11 Jan 2018 11:20:59 +0100 Message-Id: <20180111102102.4310-3-jiri@resnulli.us> X-Mailer: git-send-email 2.14.3 In-Reply-To: <20180111102102.4310-1-jiri@resnulli.us> References: <20180111102102.4310-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 434b3922b34f..8f115d1c7056 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c @@ -7008,6 +7008,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]; @@ -7020,6 +7038,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; @@ -7095,6 +7114,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); @@ -7104,6 +7127,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: