Received: by 2002:a05:7412:419a:b0:f3:1519:9f41 with SMTP id i26csp3701225rdh; Tue, 28 Nov 2023 01:06:37 -0800 (PST) X-Google-Smtp-Source: AGHT+IE11N9TR3mCm45jWQA07few2wjQT32oSygzDWNSntvJvLbKuwP1Qd91aIpmLFaAGj/KcnnC X-Received: by 2002:a05:6602:3b90:b0:7b0:1bbf:b050 with SMTP id dm16-20020a0566023b9000b007b01bbfb050mr11719312iob.1.1701162397348; Tue, 28 Nov 2023 01:06:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701162397; cv=none; d=google.com; s=arc-20160816; b=l1oiriPH18YHhS/MiWEQs0BTOEVF/A99PJ2Ghpqmx780aIivgWAV5NzgjPkjjxF1vR yNVAyFYMjDIUEhcpx2lpgU7Thxe8yRlkfNietmFCdbApzALRyNj+JmoqFBB4vtIsNMZ8 keLo1kX5TO0YPuDqNh6CFc144JXBX/HW+6+QLI7tVvEbtMu+E/ojZxxIcoHA2OrkYCQM C0J81lseJlA0a9Dyofh+Jwn/SPBIecIZaiWQYZGFeRjfjuEzBW37VraBlb7bgda9iQ3H LjHGeVKsYCepArbdp3t0LwODMCrLPENULxo44zCUPYF7A+iQuBXrT8TivPMUpF//RdWi xSJw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:user-agent :content-transfer-encoding:references:in-reply-to:date:cc:to:from :subject:message-id:dkim-signature; bh=2RW99vE38PIc6SpTpGSG9Fw0ojZLVZidXqTc1Mj5whQ=; fh=P7DQoylNhAHPlnivZCtVgm7sjuFDeOoFGE1k9Dg/G00=; b=LaiKmo1Sglk74S0Hq6jXybRhG1htYWb1eWUvFiKwk8otVailkUrGC1a751ilGIuSTw JrYnLqZrD6eERjLnppejLb2I42M4FxZD+VhMvdeG2l/1kBE8c6bqxOr0ninuB4z+SD4p +nQngK3kkVLEe5YkxGSIXKVA4BPp/Pq8qhL3J7T6KoVzMTPQXGlE1v2tlKihcxqi+xYo PDcsBL629L/vushMy3x6ySs1/tYGevVCuLP8YwYITH+TwQj1hUUO8hXHXCsPPpfuDHTN asYMcDOWGqI5sjxDikX5zWJVZi8NDbG971RWvac7fgZaAFASymEozgkrEDCYrlXn2w+m h90g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=O+Pgi2FM; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from morse.vger.email (morse.vger.email. [23.128.96.31]) by mx.google.com with ESMTPS id 17-20020a630d51000000b005c2188ae892si11762749pgn.583.2023.11.28.01.06.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Nov 2023 01:06:37 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) client-ip=23.128.96.31; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=O+Pgi2FM; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.31 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by morse.vger.email (Postfix) with ESMTP id 073838079B23; Tue, 28 Nov 2023 01:06:35 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at morse.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232697AbjK1JGV (ORCPT + 99 others); Tue, 28 Nov 2023 04:06:21 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42224 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230267AbjK1JGU (ORCPT ); Tue, 28 Nov 2023 04:06:20 -0500 Received: from mail-lf1-x130.google.com (mail-lf1-x130.google.com [IPv6:2a00:1450:4864:20::130]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6C6DF1B6; Tue, 28 Nov 2023 01:06:26 -0800 (PST) Received: by mail-lf1-x130.google.com with SMTP id 2adb3069b0e04-50bba1dd05fso553180e87.0; Tue, 28 Nov 2023 01:06:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1701162384; x=1701767184; darn=vger.kernel.org; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject :date:message-id:reply-to; bh=2RW99vE38PIc6SpTpGSG9Fw0ojZLVZidXqTc1Mj5whQ=; b=O+Pgi2FMtzQMj5pHCz8zWS/AuLC94Zq8vDcgWtweRAm5gAGShhFPeoKAo62Bjb2GK4 rG2FsD4VYsLKcddRFQ5ZFVUnEAbvFQsPDJQ5HIrwhidZyThguWkUxtErDWFRTbRby3+Q Q5DsMUg3urDR88ZaSX5F/HPflf9tjINyCwEBKOHA2oj8g1B/b1MUP+XkEy6QCacQQdAV DDuAZ6sM6Dzt4GX6sMqwqE28oXl0+Q4PhyoXZLcOsdqlTeeKqYXP01K0TwxCpheZuhK8 FSJ/xmibWPl7RMCJTWildhn4ZA8aqMjdgJ4xqncgTvOoC23CdilW4hKu3zZZp556lMgx zzdw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701162384; x=1701767184; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=2RW99vE38PIc6SpTpGSG9Fw0ojZLVZidXqTc1Mj5whQ=; b=oHw5Bn5GUhHR663/W03EsaevFt5b+KKqPtfsv5i6pU3KknxGmGIESSnrPOvJGB1ESE muYZMNo81EOG5UzVDKiNm7/MRw+Eg4Vt/SF06TdSnKoYgI8HW3SuwYGDFhX3RbqKknZl GcX7SDom/AO4iWxKyav71TOMKvjf0Eo0TyinyenUKhoAYiLbqseAnXGSvSurSmPuHbEc 2TY5BNwFgA8vhYlbDfN5oNzB9ELjNyASR7o9xyvCT6er6sQ8hkEXSOHi7S2ov5DUEvda 46szgt4h189y+XMVFQzXqkWrE4OVAWkhhUNBbknUm2rmJO+hsgz2YYwaqQR8/M9k+IOY qxzw== X-Gm-Message-State: AOJu0YyyO4q4b+MILcQkbl6sBYkoRFvTFbTPcjenqDqIgYSkVP7sX0vg ltDCLi2e5YD84IkR/a8qfyk= X-Received: by 2002:ac2:52af:0:b0:50b:bfd6:dd7d with SMTP id r15-20020ac252af000000b0050bbfd6dd7dmr174275lfm.20.1701162384217; Tue, 28 Nov 2023 01:06:24 -0800 (PST) Received: from ?IPv6:2003:f6:ef1b:2000:4423:d503:bf11:e8c6? (p200300f6ef1b20004423d503bf11e8c6.dip0.t-ipconnect.de. [2003:f6:ef1b:2000:4423:d503:bf11:e8c6]) by smtp.gmail.com with ESMTPSA id f8-20020adff988000000b00332e75eae4asm12398149wrr.85.2023.11.28.01.06.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Nov 2023 01:06:23 -0800 (PST) Message-ID: Subject: Re: [PATCH net-next] net: phy: adin: allow control of Fast Link Down From: Nuno =?ISO-8859-1?Q?S=E1?= To: Vincent Whitchurch , Michael Hennerich , Andrew Lunn , Heiner Kallweit , Russell King , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, kernel@axis.com Date: Tue, 28 Nov 2023 10:09:24 +0100 In-Reply-To: <20231127-adin-fld-v1-1-797f6423fd48@axis.com> References: <20231127-adin-fld-v1-1-797f6423fd48@axis.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.50.1 MIME-Version: 1.0 X-Spam-Status: No, score=-0.6 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on morse.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (morse.vger.email [0.0.0.0]); Tue, 28 Nov 2023 01:06:35 -0800 (PST) On Mon, 2023-11-27 at 16:31 +0100, Vincent Whitchurch wrote: > Add support to allow Fast Link Down (aka "Enhanced link detection") to > be controlled via the ETHTOOL_PHY_FAST_LINK_DOWN tunable.=C2=A0 These PHY= s > have this feature enabled by default. >=20 > Signed-off-by: Vincent Whitchurch > --- LGTM, Acked-by: Nuno Sa Thanks! - Nuno S=C3=A1 > =C2=A0drivers/net/phy/adin.c | 53 > ++++++++++++++++++++++++++++++++++++++++++++++++++ > =C2=A01 file changed, 53 insertions(+) >=20 > diff --git a/drivers/net/phy/adin.c b/drivers/net/phy/adin.c > index 134637584a83..2e1a46e121d9 100644 > --- a/drivers/net/phy/adin.c > +++ b/drivers/net/phy/adin.c > @@ -68,6 +68,24 @@ > =C2=A0#define ADIN1300_EEE_CAP_REG 0x8000 > =C2=A0#define ADIN1300_EEE_ADV_REG 0x8001 > =C2=A0#define ADIN1300_EEE_LPABLE_REG 0x8002 > + > +#define ADIN1300_FLD_EN_REG 0x8E27 > +#define=C2=A0=C2=A0 ADIN1300_FLD_PCS_ERR_100_EN BIT(7) > +#define=C2=A0=C2=A0 ADIN1300_FLD_PCS_ERR_1000_EN BIT(6) > +#define=C2=A0=C2=A0 ADIN1300_FLD_SLCR_OUT_STUCK_100_EN BIT(5) > +#define=C2=A0=C2=A0 ADIN1300_FLD_SLCR_OUT_STUCK_1000_EN BIT(4) > +#define=C2=A0=C2=A0 ADIN1300_FLD_SLCR_IN_ZDET_100_EN BIT(3) > +#define=C2=A0=C2=A0 ADIN1300_FLD_SLCR_IN_ZDET_1000_EN BIT(2) > +#define=C2=A0=C2=A0 ADIN1300_FLD_SLCR_IN_INVLD_100_EN BIT(1) > +#define=C2=A0=C2=A0 ADIN1300_FLD_SLCR_IN_INVLD_1000_EN BIT(0) > +/* These bits are the ones which are enabled by default. */ > +#define ADIN1300_FLD_EN_ON \ > + (ADIN1300_FLD_SLCR_OUT_STUCK_100_EN | \ > + ADIN1300_FLD_SLCR_OUT_STUCK_1000_EN | \ > + ADIN1300_FLD_SLCR_IN_ZDET_100_EN | \ > + ADIN1300_FLD_SLCR_IN_ZDET_1000_EN | \ > + ADIN1300_FLD_SLCR_IN_INVLD_1000_EN) > + > =C2=A0#define ADIN1300_CLOCK_STOP_REG 0x9400 > =C2=A0#define ADIN1300_LPI_WAKE_ERR_CNT_REG 0xa000 > =C2=A0 > @@ -416,6 +434,37 @@ static int adin_set_edpd(struct phy_device *phydev, = u16 > tx_interval) > =C2=A0 =C2=A0 val); > =C2=A0} > =C2=A0 > +static int adin_get_fast_down(struct phy_device *phydev, u8 *msecs) > +{ > + int reg; > + > + reg =3D phy_read_mmd(phydev, MDIO_MMD_VEND1, ADIN1300_FLD_EN_REG); > + if (reg < 0) > + return reg; > + > + if (reg & ADIN1300_FLD_EN_ON) > + *msecs =3D ETHTOOL_PHY_FAST_LINK_DOWN_ON; > + else > + *msecs =3D ETHTOOL_PHY_FAST_LINK_DOWN_OFF; > + > + return 0; > +} > + > +static int adin_set_fast_down(struct phy_device *phydev, const u8 *msecs= ) > +{ > + if (*msecs =3D=3D ETHTOOL_PHY_FAST_LINK_DOWN_ON) > + return phy_set_bits_mmd(phydev, MDIO_MMD_VEND1, > + ADIN1300_FLD_EN_REG, > + ADIN1300_FLD_EN_ON); > + > + if (*msecs =3D=3D ETHTOOL_PHY_FAST_LINK_DOWN_OFF) > + return phy_clear_bits_mmd(phydev, MDIO_MMD_VEND1, > + =C2=A0 ADIN1300_FLD_EN_REG, > + =C2=A0 ADIN1300_FLD_EN_ON); > + > + return -EINVAL; > +} > + > =C2=A0static int adin_get_tunable(struct phy_device *phydev, > =C2=A0 =C2=A0=C2=A0=C2=A0 struct ethtool_tunable *tuna, void *data) > =C2=A0{ > @@ -424,6 +473,8 @@ static int adin_get_tunable(struct phy_device *phydev= , > =C2=A0 return adin_get_downshift(phydev, data); > =C2=A0 case ETHTOOL_PHY_EDPD: > =C2=A0 return adin_get_edpd(phydev, data); > + case ETHTOOL_PHY_FAST_LINK_DOWN: > + return adin_get_fast_down(phydev, data); > =C2=A0 default: > =C2=A0 return -EOPNOTSUPP; > =C2=A0 } > @@ -437,6 +488,8 @@ static int adin_set_tunable(struct phy_device *phydev= , > =C2=A0 return adin_set_downshift(phydev, *(const u8 *)data); > =C2=A0 case ETHTOOL_PHY_EDPD: > =C2=A0 return adin_set_edpd(phydev, *(const u16 *)data); > + case ETHTOOL_PHY_FAST_LINK_DOWN: > + return adin_set_fast_down(phydev, data); > =C2=A0 default: > =C2=A0 return -EOPNOTSUPP; > =C2=A0 } >=20 > --- > base-commit: e1df5202e879bce09845ac62bae30206e1edfb80 > change-id: 20231127-adin-fld-c072c3b79a5a >=20 > Best regards,