From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 005C4C282C2 for ; Wed, 6 Feb 2019 19:42:10 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id B7E9E20B1F for ; Wed, 6 Feb 2019 19:42:09 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=Mellanox.com header.i=@Mellanox.com header.b="EwbdSco9" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727114AbfBFTmI (ORCPT ); Wed, 6 Feb 2019 14:42:08 -0500 Received: from mail-eopbgr10078.outbound.protection.outlook.com ([40.107.1.78]:52096 "EHLO EUR02-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726861AbfBFTmI (ORCPT ); Wed, 6 Feb 2019 14:42:08 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Yhj1HV8ymPRKTa1NC9A44+0psoIJGosBCmFFOJj4F1Q=; b=EwbdSco90+VJXOZEjFGcekrySbIsP3GGvMkhHQRWkqlw2qFUXhBevyM+Tt+uJtEvPaCTqBkAH9obKmcyojTZqOzBkRb2YXuYG1NLIJwc9Dn9KOFSCGV+8yX1Pfi9NMqMSks+TUvsSR44FbQPHUjxFlqf38T8o9pYI/sVkC6JAJA= Received: from AM6PR05MB5240.eurprd05.prod.outlook.com (20.177.196.214) by AM6PR05MB4376.eurprd05.prod.outlook.com (52.135.162.29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1601.19; Wed, 6 Feb 2019 19:42:02 +0000 Received: from AM6PR05MB5240.eurprd05.prod.outlook.com ([fe80::3542:889c:3a85:3866]) by AM6PR05MB5240.eurprd05.prod.outlook.com ([fe80::3542:889c:3a85:3866%5]) with mapi id 15.20.1601.016; Wed, 6 Feb 2019 19:42:01 +0000 From: Ido Schimmel To: "netdev@vger.kernel.org" CC: "davem@davemloft.net" , Jiri Pirko , Alexander Petrovskiy , "dsahern@gmail.com" , mlxsw , Ido Schimmel Subject: [PATCH net-next 1/2] mlxsw: spectrum_router: Offload blackhole routes Thread-Topic: [PATCH net-next 1/2] mlxsw: spectrum_router: Offload blackhole routes Thread-Index: AQHUvlQHCZauNWxOVk+h4tbYThYSFA== Date: Wed, 6 Feb 2019 19:42:01 +0000 Message-ID: <20190206194140.18606-2-idosch@mellanox.com> References: <20190206194140.18606-1-idosch@mellanox.com> In-Reply-To: <20190206194140.18606-1-idosch@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM5PR0601CA0030.eurprd06.prod.outlook.com (2603:10a6:203:68::16) To AM6PR05MB5240.eurprd05.prod.outlook.com (2603:10a6:20b:64::22) authentication-results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.20.1 x-originating-ip: [37.142.229.58] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;AM6PR05MB4376;6:EyhfnTrhUMf6dsRy0GbL5im0+1I1+zEXwNrkMvnxuLuejM26eM+7QRO7ivaQI9H+4bZtDt5+kOp30bbOIu6VsSLHhar0QKRZemB68uh8IsDdYB7IROXKDUZAQuZhszZhWkEOBo4+BZ74BVaUndLVWg/rhVf1Lir149ce9bNge27M2E+UmwrKTULJCtmjboyi+WtqGSdu7kMxdLn7ipHYi2vHQ32DTyJtQ/BgCXH/jcjmfsY369hFHnu599vnC/CrZ6Fj7xWacHhG5b6gL5+Y+qCMIC4qL1xOi9EJsT6j8o3WGh7egOtJAfJkGGKI8JOd4fDJzQaOt4P10By7ZvP9vUvIl1SkrdzCrq8cGKtKxZsRRbq9YkYVXXK+ix3bE+V3lN8HT1CLpE+1+5jdYe/cLSGSBxlwDYeJxuKAjBJSLaxJFKiLhcT0uXsDqrIvy033sqwPEiqYIV5lixrymWhUXw==;5:wniMtVZgsQ6OMgopkt2HzRKSo9qqU2zZrG39DPvrpkFqA7tAb6+tO7cLgh8q+1SAM+FEZ8PzNhTjvd1CtJesGm01RRvphsOUomCAUxvOA+VSlh/vb/SZn1A9uD7xdTCj3JWQnZSGihQ0eu26JERV3zhFwuuCB9np1ozC5yt7wAfifptUHcrwW1GrImAOG0whyuA2BwVUFgafLrG7h2oRhA==;7:B9aScEqDbgJwKJzery9Qi+ddFdceLX8uT7wn0HWr9US9At/WJBdtGZn6HfmNHndvn/pFym4K78qo7GF8xv/atXfscQT9fdedxdu5tgwOsXdDAGozGkPtCyx1uozgJbSBcyUGkuArAVOxYz1WsEhUOw== x-ms-office365-filtering-correlation-id: 1f6b9aee-b408-4621-27cb-08d68c6b2a17 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605077)(4618075)(2017052603328)(7153060)(7193020);SRVR:AM6PR05MB4376; x-ms-traffictypediagnostic: AM6PR05MB4376: x-microsoft-antispam-prvs: x-forefront-prvs: 0940A19703 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(979002)(366004)(396003)(136003)(376002)(346002)(39860400002)(189003)(199004)(8936002)(476003)(54906003)(11346002)(446003)(53936002)(2616005)(105586002)(99286004)(305945005)(107886003)(486006)(316002)(386003)(6506007)(2906002)(6916009)(97736004)(52116002)(2501003)(76176011)(36756003)(256004)(106356001)(6436002)(7736002)(26005)(14454004)(186003)(50226002)(3846002)(102836004)(6116002)(86362001)(81156014)(81166006)(1730700003)(25786009)(8676002)(68736007)(5640700003)(478600001)(6486002)(66066001)(6512007)(66574012)(1076003)(71200400001)(71190400001)(2351001)(4326008)(309714004)(969003)(989001)(999001)(1009001)(1019001);DIR:OUT;SFP:1101;SCL:1;SRVR:AM6PR05MB4376;H:AM6PR05MB5240.eurprd05.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: 9R1PdrNooCBD60RlViZ7nKOzYpGOYkX9OzG/LF7WV+24HED9kb4bNsrw0MZIF0sgq2JZrJsfjGXLM3YlT3opJvxO4IYThpG46s9C7u2h2wV9Da+YK7FO0dXfhVLLO3xjxiythRd70RW0hXJ+aOpWEj34JzgI6+X4KVT6qEefTV//rYSzU16h9UiYSF1olOPhD0n4SMjxz/Z8FdNGEXDJssE+Fiu5B3dBVOrWgGTREkoVwlrP92mR04Ub9asiLApIGWNmstR+gypuuFuRiUI25odJiVr1+UOtHFLeyPq0YQqDOBDKKuLLE3sXTIYJAzxEgGOGVZdHpyRqI0Xq3Gm8KFelS1BBSxei/R7LwEymeAU7ch+nflnsBjNI3f+wvJUS14kBdT1/dMEMEgi207sAJ5FzZ8LqlzF0ld6amQzPfcQ= Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1f6b9aee-b408-4621-27cb-08d68c6b2a17 X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Feb 2019 19:42:00.8379 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR05MB4376 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Create a new FIB entry type for blackhole routes and set it in case the type of the notified route is 'RTN_BLACKHOLE'. Program such routes with a discard action and mark them as offloaded since the device is dropping the packets instead of the kernel. Signed-off-by: Ido Schimmel Acked-by: Jiri Pirko --- .../ethernet/mellanox/mlxsw/spectrum_router.c | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c b/driver= s/net/ethernet/mellanox/mlxsw/spectrum_router.c index 230e1f6e192b..6754061d9b72 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c @@ -364,6 +364,7 @@ enum mlxsw_sp_fib_entry_type { MLXSW_SP_FIB_ENTRY_TYPE_REMOTE, MLXSW_SP_FIB_ENTRY_TYPE_LOCAL, MLXSW_SP_FIB_ENTRY_TYPE_TRAP, + MLXSW_SP_FIB_ENTRY_TYPE_BLACKHOLE, =20 /* This is a special case of local delivery, where a packet should be * decapsulated on reception. Note that there is no corresponding ENCAP, @@ -3928,6 +3929,7 @@ mlxsw_sp_fib_entry_should_offload(const struct mlxsw_= sp_fib_entry *fib_entry) return !!nh_group->adj_index_valid; case MLXSW_SP_FIB_ENTRY_TYPE_LOCAL: return !!nh_group->nh_rif; + case MLXSW_SP_FIB_ENTRY_TYPE_BLACKHOLE: case MLXSW_SP_FIB_ENTRY_TYPE_IPIP_DECAP: case MLXSW_SP_FIB_ENTRY_TYPE_NVE_DECAP: return true; @@ -3963,6 +3965,7 @@ mlxsw_sp_fib4_entry_offload_set(struct mlxsw_sp_fib_e= ntry *fib_entry) int i; =20 if (fib_entry->type =3D=3D MLXSW_SP_FIB_ENTRY_TYPE_LOCAL || + fib_entry->type =3D=3D MLXSW_SP_FIB_ENTRY_TYPE_BLACKHOLE || fib_entry->type =3D=3D MLXSW_SP_FIB_ENTRY_TYPE_IPIP_DECAP || fib_entry->type =3D=3D MLXSW_SP_FIB_ENTRY_TYPE_NVE_DECAP) { nh_grp->nexthops->key.fib_nh->nh_flags |=3D RTNH_F_OFFLOAD; @@ -4004,7 +4007,8 @@ mlxsw_sp_fib6_entry_offload_set(struct mlxsw_sp_fib_e= ntry *fib_entry) fib6_entry =3D container_of(fib_entry, struct mlxsw_sp_fib6_entry, common); =20 - if (fib_entry->type =3D=3D MLXSW_SP_FIB_ENTRY_TYPE_LOCAL) { + if (fib_entry->type =3D=3D MLXSW_SP_FIB_ENTRY_TYPE_LOCAL || + fib_entry->type =3D=3D MLXSW_SP_FIB_ENTRY_TYPE_BLACKHOLE) { list_first_entry(&fib6_entry->rt6_list, struct mlxsw_sp_rt6, list)->rt->fib6_nh.nh_flags |=3D RTNH_F_OFFLOAD; return; @@ -4172,6 +4176,19 @@ static int mlxsw_sp_fib_entry_op_trap(struct mlxsw_s= p *mlxsw_sp, return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ralue), ralue_pl); } =20 +static int mlxsw_sp_fib_entry_op_blackhole(struct mlxsw_sp *mlxsw_sp, + struct mlxsw_sp_fib_entry *fib_entry, + enum mlxsw_reg_ralue_op op) +{ + enum mlxsw_reg_ralue_trap_action trap_action; + char ralue_pl[MLXSW_REG_RALUE_LEN]; + + trap_action =3D MLXSW_REG_RALUE_TRAP_ACTION_DISCARD_ERROR; + mlxsw_sp_fib_entry_ralue_pack(ralue_pl, fib_entry, op); + mlxsw_reg_ralue_act_local_pack(ralue_pl, trap_action, 0, 0); + return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(ralue), ralue_pl); +} + static int mlxsw_sp_fib_entry_op_ipip_decap(struct mlxsw_sp *mlxsw_sp, struct mlxsw_sp_fib_entry *fib_entry, @@ -4211,6 +4228,8 @@ static int __mlxsw_sp_fib_entry_op(struct mlxsw_sp *m= lxsw_sp, return mlxsw_sp_fib_entry_op_local(mlxsw_sp, fib_entry, op); case MLXSW_SP_FIB_ENTRY_TYPE_TRAP: return mlxsw_sp_fib_entry_op_trap(mlxsw_sp, fib_entry, op); + case MLXSW_SP_FIB_ENTRY_TYPE_BLACKHOLE: + return mlxsw_sp_fib_entry_op_blackhole(mlxsw_sp, fib_entry, op); case MLXSW_SP_FIB_ENTRY_TYPE_IPIP_DECAP: return mlxsw_sp_fib_entry_op_ipip_decap(mlxsw_sp, fib_entry, op); @@ -4279,8 +4298,10 @@ mlxsw_sp_fib4_entry_type_set(struct mlxsw_sp *mlxsw_= sp, case RTN_BROADCAST: fib_entry->type =3D MLXSW_SP_FIB_ENTRY_TYPE_TRAP; return 0; + case RTN_BLACKHOLE: + fib_entry->type =3D MLXSW_SP_FIB_ENTRY_TYPE_BLACKHOLE; + return 0; case RTN_UNREACHABLE: /* fall through */ - case RTN_BLACKHOLE: /* fall through */ case RTN_PROHIBIT: /* Packets hitting these routes need to be trapped, but * can do so with a lower priority than packets directed @@ -5229,6 +5250,8 @@ static void mlxsw_sp_fib6_entry_type_set(struct mlxsw= _sp *mlxsw_sp, */ if (rt->fib6_flags & (RTF_LOCAL | RTF_ANYCAST)) fib_entry->type =3D MLXSW_SP_FIB_ENTRY_TYPE_TRAP; + else if (rt->fib6_type =3D=3D RTN_BLACKHOLE) + fib_entry->type =3D MLXSW_SP_FIB_ENTRY_TYPE_BLACKHOLE; else if (rt->fib6_flags & RTF_REJECT) fib_entry->type =3D MLXSW_SP_FIB_ENTRY_TYPE_LOCAL; else if (mlxsw_sp_rt6_is_gateway(mlxsw_sp, rt)) --=20 2.20.1