Received: by 2002:a05:6a10:1d13:0:0:0:0 with SMTP id pp19csp4514418pxb; Tue, 31 Aug 2021 07:03:07 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyRo7SOzpGUKLpA5JK1I/XcvRH7gI3UH515DZwnVNEnxvycbP2tWW//xDObpAbc+A8f6IpI X-Received: by 2002:a02:90cb:: with SMTP id c11mr3062269jag.53.1630418587368; Tue, 31 Aug 2021 07:03:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1630418587; cv=none; d=google.com; s=arc-20160816; b=XWyA11iiYVV+YuTMS+9jC5gXYmHmLtLGJwvkrC2Jjl83/YyoV9qTjrcaLhRM/aTImQ IpAP8FQH3n9966dHuNn8vL4peakkI9sVotsCvjVR87Fra19SuuhAJmPP9m/7nU8e4I0w q/T+h58ScYIW5HY2JynfV9Llu3ssPPcrmBhRSvCrFHi7TonG3a4prw721iLDP/e3/M8B qljlG94xrcqZfDVp1sdRH6bInFCoyHRqlAsTc/MqHP8Lip82MbcC/6hPJKTDz6K44UKk Z9LDM8txrkWD3pFsmEQT0YnH0qmtPxrQCGqa0CdMC6/OoCL4xPA3pZ+eIvFEmsmpiCoQ M+Bg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-language:content-transfer-encoding :in-reply-to:mime-version:user-agent:date:message-id:from:references :cc:to:subject:dmarc-filter:sender:dkim-signature; bh=3OysEvySwOHgGDBoSVKkQ1YfbUEeF306JYqAcHEYipQ=; b=AVRqAEpNCKpJ5WNF3tBX6E+LQRcZH4Aac9IwjW3VLAL25XqxJlOTdzDf6B+uMcp6yc NEEEyQhBHv6BrgwjT+uoDgiFGbrHuWUUoOFSfFCxKFDo9RbVTEdLI28apz/0BdtjHpib N5dlVtz+B3ywkdmFW+dUTqklV/hRnE1hxeUbZa/Uofew7vzWoToMvaLR9a94V/zP32ac PJMJ/xPEJ/X0pGKL4ULF/frMAMVhPVo7V7A5DMk3sUjD8QLfLRpwF0j3/gtdG3bId3Aa nwL/lQLodMuOUvuzVB5QAY0bmpkSWn+tzJVGvLiOcCqZFJZeeP5MWE2305TAyI8MwG24 CjRw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mg.codeaurora.org header.s=smtp header.b=AkUapaJI; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id a10si18736042iow.65.2021.08.31.07.02.53; Tue, 31 Aug 2021 07:03:07 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@mg.codeaurora.org header.s=smtp header.b=AkUapaJI; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231927AbhHaOC7 (ORCPT + 99 others); Tue, 31 Aug 2021 10:02:59 -0400 Received: from so254-9.mailgun.net ([198.61.254.9]:48441 "EHLO so254-9.mailgun.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231199AbhHaOC7 (ORCPT ); Tue, 31 Aug 2021 10:02:59 -0400 DKIM-Signature: a=rsa-sha256; v=1; c=relaxed/relaxed; d=mg.codeaurora.org; q=dns/txt; s=smtp; t=1630418523; h=Content-Transfer-Encoding: Content-Type: In-Reply-To: MIME-Version: Date: Message-ID: From: References: Cc: To: Subject: Sender; bh=3OysEvySwOHgGDBoSVKkQ1YfbUEeF306JYqAcHEYipQ=; b=AkUapaJI2Dc3MlPR8MQv4jasfxBUMxCD4pPuHmtqq6oftv6A7yE5fj9ztPAp6E5IdZVkn4AN nLRmlLi9kX+YwM7C7+2aJ1Kp2P5oCXUwzLNp0d0hOEUBPlGntkJymJSEc6r5gfi9cIowKnJX hyUP+xcvj4EsXV2WzVeQQtOPdMk= X-Mailgun-Sending-Ip: 198.61.254.9 X-Mailgun-Sid: WyI0MWYwYSIsICJsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnIiwgImJlOWU0YSJd Received: from smtp.codeaurora.org (ec2-35-166-182-171.us-west-2.compute.amazonaws.com [35.166.182.171]) by smtp-out-n05.prod.us-east-1.postgun.com with SMTP id 612e3624cd680e8969f1fd0b (version=TLS1.2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256); Tue, 31 Aug 2021 14:01:08 GMT Sender: luoj=codeaurora.org@mg.codeaurora.org Received: by smtp.codeaurora.org (Postfix, from userid 1001) id 16F5AC43460; Tue, 31 Aug 2021 14:01:08 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-caf-mail-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.8 required=2.0 tests=ALL_TRUSTED,BAYES_00, NICE_REPLY_A,SPF_FAIL autolearn=unavailable autolearn_force=no version=3.4.0 Received: from [192.168.10.117] (unknown [183.192.232.105]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: luoj) by smtp.codeaurora.org (Postfix) with ESMTPSA id E7735C4338F; Tue, 31 Aug 2021 14:01:03 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 smtp.codeaurora.org E7735C4338F Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; dmarc=none (p=none dis=none) header.from=codeaurora.org Authentication-Results: aws-us-west-2-caf-mail-1.web.codeaurora.org; spf=fail smtp.mailfrom=codeaurora.org Subject: Re: [PATCH v1 1/3] net: phy: improve the wol feature of at803x To: Andrew Lunn Cc: hkallweit1@gmail.com, linux@armlinux.org.uk, davem@davemloft.net, kuba@kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, sricharan@codeaurora.org References: <20210830110733.8964-1-luoj@codeaurora.org> <20210830110733.8964-2-luoj@codeaurora.org> From: Jie Luo Message-ID: <8f078517-f537-f462-2e8a-5735c12d4c45@codeaurora.org> Date: Tue, 31 Aug 2021 22:01:01 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.13.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-US Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 8/30/2021 9:32 PM, Andrew Lunn wrote: > On Mon, Aug 30, 2021 at 07:07:31PM +0800, Luo Jie wrote: >> wol is controlled by bit 5 of reg 3.8012, which should be >> configured by set_wol of phy_driver. >> >> Signed-off-by: Luo Jie >> --- >> drivers/net/phy/at803x.c | 50 +++++++++++++++++++++++----------------- >> 1 file changed, 29 insertions(+), 21 deletions(-) >> >> diff --git a/drivers/net/phy/at803x.c b/drivers/net/phy/at803x.c >> index 5d62b85a4024..ecae26f11aa4 100644 >> --- a/drivers/net/phy/at803x.c >> +++ b/drivers/net/phy/at803x.c >> @@ -70,10 +70,14 @@ >> #define AT803X_CDT_STATUS_DELTA_TIME_MASK GENMASK(7, 0) >> #define AT803X_LED_CONTROL 0x18 >> >> -#define AT803X_DEVICE_ADDR 0x03 >> +/* WOL control */ >> +#define AT803X_PHY_MMD3_WOL_CTRL 0x8012 >> +#define AT803X_WOL_EN BIT(5) >> + >> #define AT803X_LOC_MAC_ADDR_0_15_OFFSET 0x804C >> #define AT803X_LOC_MAC_ADDR_16_31_OFFSET 0x804B >> #define AT803X_LOC_MAC_ADDR_32_47_OFFSET 0x804A >> + >> #define AT803X_REG_CHIP_CONFIG 0x1f >> #define AT803X_BT_BX_REG_SEL 0x8000 >> >> @@ -328,12 +332,6 @@ static int at803x_set_wol(struct phy_device *phydev, >> struct net_device *ndev = phydev->attached_dev; >> const u8 *mac; >> int ret; >> - u32 value; >> - unsigned int i, offsets[] = { >> - AT803X_LOC_MAC_ADDR_32_47_OFFSET, >> - AT803X_LOC_MAC_ADDR_16_31_OFFSET, >> - AT803X_LOC_MAC_ADDR_0_15_OFFSET, >> - }; >> >> if (!ndev) >> return -ENODEV; >> @@ -344,23 +342,30 @@ static int at803x_set_wol(struct phy_device *phydev, >> if (!is_valid_ether_addr(mac)) >> return -EINVAL; >> >> - for (i = 0; i < 3; i++) >> - phy_write_mmd(phydev, AT803X_DEVICE_ADDR, offsets[i], >> - mac[(i * 2) + 1] | (mac[(i * 2)] << 8)); >> + phy_write_mmd(phydev, MDIO_MMD_PCS, AT803X_LOC_MAC_ADDR_32_47_OFFSET, >> + mac[1] | (mac[0] << 8)); >> + phy_write_mmd(phydev, MDIO_MMD_PCS, AT803X_LOC_MAC_ADDR_16_31_OFFSET, >> + mac[3] | (mac[2] << 8)); >> + phy_write_mmd(phydev, MDIO_MMD_PCS, AT803X_LOC_MAC_ADDR_0_15_OFFSET, >> + mac[5] | (mac[4] << 8)); > Please try to keep your changes minimal. It looks like all you really > need is to replace AT803X_DEVICE_ADDR with MDIO_MMD_PCS. Everything > else is O.K. Maybe make offset a const? > > Making the change more complex than it needs to be makes it harder to > review. thanks Andrew for the comments, will keep this changes minimal in the next patch series. > >> >> - value = phy_read(phydev, AT803X_INTR_ENABLE); >> - value |= AT803X_INTR_ENABLE_WOL; >> - ret = phy_write(phydev, AT803X_INTR_ENABLE, value); > So that it be replaced with a phy_modify(). yes, it's replaced with phy_modify(). > > >> + /* clear the pending interrupt */ >> + phy_read(phydev, AT803X_INTR_STATUS); > But where did this come from? this code is not new added, which is existed code for at803x phy driver. > >> + >> + ret = phy_modify(phydev, AT803X_INTR_ENABLE, 0, AT803X_INTR_ENABLE_WOL); >> if (ret) >> return ret; >> - value = phy_read(phydev, AT803X_INTR_STATUS); >> + >> + ret = phy_modify_mmd(phydev, MDIO_MMD_PCS, AT803X_PHY_MMD3_WOL_CTRL, >> + 0, AT803X_WOL_EN); >> + >> } else { >> - value = phy_read(phydev, AT803X_INTR_ENABLE); >> - value &= (~AT803X_INTR_ENABLE_WOL); >> - ret = phy_write(phydev, AT803X_INTR_ENABLE, value); >> + ret = phy_modify(phydev, AT803X_INTR_ENABLE, AT803X_INTR_ENABLE_WOL, 0); > This makes sense > >> if (ret) >> return ret; >> - value = phy_read(phydev, AT803X_INTR_STATUS); >> + >> + ret = phy_modify_mmd(phydev, MDIO_MMD_PCS, AT803X_PHY_MMD3_WOL_CTRL, >> + AT803X_WOL_EN, 0); > But where did this come from? For wol_set, i add the AT803X_WOL_EN configuration, which is necessary for the wol feature. > > I could be wrong, but i get the feeling you just replaced the code > with what you have in your new driver, rather than step by step > improve this code. > > Please break this patch up into a number of patches: > > AT803X_DEVICE_ADDR with MDIO_MMD_PCS > read/write to modify. > > Other patches for the remaining changes, if actually required, with a > good explanation of why they are needed. > > Andrew Hi Andrew, thanks for the suggestions. Will break the changes into minimal patches, and check the at803x phy driver in detail to improve the driver in the next patch series.