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 58771C282CA for ; Tue, 12 Feb 2019 16:30:00 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 1BB3320842 for ; Tue, 12 Feb 2019 16:30:00 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=Mellanox.com header.i=@Mellanox.com header.b="dLb33oRl" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731133AbfBLQ37 (ORCPT ); Tue, 12 Feb 2019 11:29:59 -0500 Received: from mail-eopbgr10041.outbound.protection.outlook.com ([40.107.1.41]:30784 "EHLO EUR02-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1731027AbfBLQ36 (ORCPT ); Tue, 12 Feb 2019 11:29:58 -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=sgWkYfn0K44r96PTVYP931S7T2/PkMjmskIXgWLBwYI=; b=dLb33oRlO6TDJ7sqrvDg3TA3t/jmUrXknuWMrwW5lUMusWhgq8Q+B23atXzkmbHoJS10rfDBOFKSnPXt2qje55xvXN5lfYwOBpU1y8m/J9QNqCp16/c3+ai/UhLN1RWw4czkQK3z7ExLMdPHYuwmc/EgWt1oUKWonQQS1q00rS0= Received: from AM6PR05MB5240.eurprd05.prod.outlook.com (20.177.196.214) by AM6PR05MB6597.eurprd05.prod.outlook.com (20.179.2.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1601.19; Tue, 12 Feb 2019 16:29:51 +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.023; Tue, 12 Feb 2019 16:29:51 +0000 From: Ido Schimmel To: "netdev@vger.kernel.org" CC: "davem@davemloft.net" , Jiri Pirko , Nir Dotan , mlxsw , Ido Schimmel Subject: [PATCH net-next 1/4] mlxsw: spectrum: Set LAG port collector only when active Thread-Topic: [PATCH net-next 1/4] mlxsw: spectrum: Set LAG port collector only when active Thread-Index: AQHUwvAtVxUBej/HRkmsLqaLfiG5rQ== Date: Tue, 12 Feb 2019 16:29:51 +0000 Message-ID: <20190212162924.29777-2-idosch@mellanox.com> References: <20190212162924.29777-1-idosch@mellanox.com> In-Reply-To: <20190212162924.29777-1-idosch@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: LO2P265CA0277.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:a1::25) 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: [193.47.165.251] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;AM6PR05MB6597;6:iH8cMpliFCA9rRYgD8iUu3g4kHK96CYemwOOOh3MurrOkTy1I7gnXZzcF+i5OsqzNL1RE9XONOqvbc03UbtqIgpzSso4HeyP3RAJaUbdM6DdrPMSwcsKKK/p8CoDH5mCconooV1MbmmAdBPBrryis5wpWjRFHKC0KPgajpFJ4XnKimoewnD0iw9OfDizyL2XBQgWCTbKkgrVO53ZDMfRfQrpouOGdmjUNdXgGj8BcvPXDgfoEQxjCmyZCM3YBRR/TbZLg5qWYzi9iJN4xNZ/SqqDOweV83QPLq2rHjdfpBzlp4u9WWpk9W9URhIxWFJYRYI3IY8oG5x5Ru9FgOn2gmXh5zBIigKlB+C0NQg0htTdm+7UzJ+xcOSmseWbLuSfYLswUDcAtomR+tqjzWyUqIK8R8xfTRzjGWq8v4JuyAwrY2YPRkpQ4lc0D9UcX7ALRlmJr3ZtLJ4+/EjSBTbp5w==;5:uaAxeRv4//hyZzVuJBhcjxPy5/HzuWTDPGQOk8suw2w8kG59c8NVkeJTUb5dX7ptJb0Xwl7Fz9ityKHfg86SM2dmDPfdpPtGKnXgumNboHIXEX7GlDDewZKyuSHUFmVPAAkrwE9kxlhLsg0elq+xspZDKsJSPx4SMlc2pCEvCzMpREVhE+q04X7v93M7psEvZF/KFDWgGyx9rfnxMRJBiA==;7:OvL6Vr4MzbPcb4bA4UFzCxoOTIgJOhiZVwZntcfuBAspErHnn4s2Zqpuu94G34hi2a0RMrXAq0xP4yHc8yghAf2YOEUL1hst51P/POiiXqiyR73o3wwOAjDTFJcy5af3iuiBKEi1XhbgqhNy0+BCyQ== x-ms-office365-filtering-correlation-id: 6af9688b-fd49-46aa-8ede-08d691074fae 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:AM6PR05MB6597; x-ms-traffictypediagnostic: AM6PR05MB6597: x-microsoft-antispam-prvs: x-forefront-prvs: 0946DC87A1 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(346002)(376002)(136003)(39860400002)(366004)(396003)(189003)(199004)(478600001)(2351001)(36756003)(14454004)(6506007)(386003)(76176011)(99286004)(71190400001)(71200400001)(256004)(7736002)(97736004)(2906002)(305945005)(316002)(8676002)(54906003)(81156014)(8936002)(1730700003)(81166006)(6436002)(107886003)(50226002)(6116002)(53936002)(3846002)(25786009)(5640700003)(6486002)(6916009)(446003)(86362001)(6512007)(2616005)(4326008)(476003)(486006)(105586002)(106356001)(2501003)(68736007)(52116002)(186003)(66066001)(26005)(102836004)(11346002)(1076003);DIR:OUT;SFP:1101;SCL:1;SRVR:AM6PR05MB6597;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: hnd7DaLGWNG7Lvzn5QD90PSfZOqEQk8EJRQN+VxYJHVrDK5qrtXSvVZrEgKc+gAPJMuvH8telcXslsF+t0bm/wHvVKnCGaP6RTMsevq2vAr5JmD6R0OU/ZqcflMy+UQfVCSIJKcTutuwA0S2hKwTSYExMZOXjBEfR9CATA/LoZf1YNsxH/mxLGNPujTFzYjjEs0tshY3xcMTuwq9JuVwWeV/Ky+HoXrhBhyMZCe014+cR+EFzKMD7i0k2pWgGFhSdNK9Kqe/SNfpI6sGFqB2GMzj8daRMsiNXsvOrSK85UPAV3MXP99scFIZpRPaRIPwKNOVQ1t2urdvr+SDfBDv3IWIsZMxU5bsNOv8pcqTMBuWTSULdF3ua1+8XVB/B3N5Dugn6H2a8/suee2HHZRfF5m8boASkPJ7Mriw4PY37o0= 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: 6af9688b-fd49-46aa-8ede-08d691074fae X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Feb 2019 16:29:50.1348 (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: AM6PR05MB6597 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Nir Dotan The LAG port collecting (receive) function was mistakenly set when the port was registered as a LAG member, while it should be set only when the port collection state is set to true. Set LAG port to collecting when it is set to distributing, as described in the IEEE link aggregation standard coupled control mux machine state diagram. Signed-off-by: Nir Dotan Acked-by: Jiri Pirko Signed-off-by: Ido Schimmel --- .../net/ethernet/mellanox/mlxsw/spectrum.c | 62 ++++++++++++++----- 1 file changed, 45 insertions(+), 17 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c b/drivers/net/e= thernet/mellanox/mlxsw/spectrum.c index 7c9745cecbbd..9686d3822b92 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c @@ -4771,9 +4771,6 @@ static int mlxsw_sp_port_lag_join(struct mlxsw_sp_por= t *mlxsw_sp_port, err =3D mlxsw_sp_lag_col_port_add(mlxsw_sp_port, lag_id, port_index); if (err) goto err_col_port_add; - err =3D mlxsw_sp_lag_col_port_enable(mlxsw_sp_port, lag_id); - if (err) - goto err_col_port_enable; =20 mlxsw_core_lag_mapping_set(mlxsw_sp->core, lag_id, port_index, mlxsw_sp_port->local_port); @@ -4787,8 +4784,6 @@ static int mlxsw_sp_port_lag_join(struct mlxsw_sp_por= t *mlxsw_sp_port, =20 return 0; =20 -err_col_port_enable: - mlxsw_sp_lag_col_port_remove(mlxsw_sp_port, lag_id); err_col_port_add: if (!lag->ref_count) mlxsw_sp_lag_destroy(mlxsw_sp, lag_id); @@ -4807,7 +4802,6 @@ static void mlxsw_sp_port_lag_leave(struct mlxsw_sp_p= ort *mlxsw_sp_port, lag =3D mlxsw_sp_lag_get(mlxsw_sp, lag_id); WARN_ON(lag->ref_count =3D=3D 0); =20 - mlxsw_sp_lag_col_port_disable(mlxsw_sp_port, lag_id); mlxsw_sp_lag_col_port_remove(mlxsw_sp_port, lag_id); =20 /* Any VLANs configured on the port are no longer valid */ @@ -4852,21 +4846,56 @@ static int mlxsw_sp_lag_dist_port_remove(struct mlx= sw_sp_port *mlxsw_sp_port, return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(sldr), sldr_pl); } =20 -static int mlxsw_sp_port_lag_tx_en_set(struct mlxsw_sp_port *mlxsw_sp_port= , - bool lag_tx_enabled) +static int +mlxsw_sp_port_lag_col_dist_enable(struct mlxsw_sp_port *mlxsw_sp_port) { - if (lag_tx_enabled) - return mlxsw_sp_lag_dist_port_add(mlxsw_sp_port, - mlxsw_sp_port->lag_id); - else - return mlxsw_sp_lag_dist_port_remove(mlxsw_sp_port, - mlxsw_sp_port->lag_id); + int err; + + err =3D mlxsw_sp_lag_col_port_enable(mlxsw_sp_port, + mlxsw_sp_port->lag_id); + if (err) + return err; + + err =3D mlxsw_sp_lag_dist_port_add(mlxsw_sp_port, mlxsw_sp_port->lag_id); + if (err) + goto err_dist_port_add; + + return 0; + +err_dist_port_add: + mlxsw_sp_lag_col_port_disable(mlxsw_sp_port, mlxsw_sp_port->lag_id); + return err; +} + +static int +mlxsw_sp_port_lag_col_dist_disable(struct mlxsw_sp_port *mlxsw_sp_port) +{ + int err; + + err =3D mlxsw_sp_lag_dist_port_remove(mlxsw_sp_port, + mlxsw_sp_port->lag_id); + if (err) + return err; + + err =3D mlxsw_sp_lag_col_port_disable(mlxsw_sp_port, + mlxsw_sp_port->lag_id); + if (err) + goto err_col_port_disable; + + return 0; + +err_col_port_disable: + mlxsw_sp_lag_dist_port_add(mlxsw_sp_port, mlxsw_sp_port->lag_id); + return err; } =20 static int mlxsw_sp_port_lag_changed(struct mlxsw_sp_port *mlxsw_sp_port, struct netdev_lag_lower_state_info *info) { - return mlxsw_sp_port_lag_tx_en_set(mlxsw_sp_port, info->tx_enabled); + if (info->tx_enabled) + return mlxsw_sp_port_lag_col_dist_enable(mlxsw_sp_port); + else + return mlxsw_sp_port_lag_col_dist_disable(mlxsw_sp_port); } =20 static int mlxsw_sp_port_stp_set(struct mlxsw_sp_port *mlxsw_sp_port, @@ -5089,8 +5118,7 @@ static int mlxsw_sp_netdevice_port_upper_event(struct= net_device *lower_dev, err =3D mlxsw_sp_port_lag_join(mlxsw_sp_port, upper_dev); } else { - mlxsw_sp_port_lag_tx_en_set(mlxsw_sp_port, - false); + mlxsw_sp_port_lag_col_dist_disable(mlxsw_sp_port); mlxsw_sp_port_lag_leave(mlxsw_sp_port, upper_dev); } --=20 2.20.1