From nobody Fri Nov 29 04:55:07 2024 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 036EA186E4C; Wed, 25 Sep 2024 23:01:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1727305317; cv=none; b=E9b4rtsYDmbM3DjKBVu/6LLBie6mPnsSN/YM8po5c8vZYT8txHgmGoshavah1g/s7+NVX0QWEkN49iGasUf+FrAFjBd0KapOVwsGmJkYoe7kMG9w2acoyBVhe3JfGhb9mC5MY/rRJdwJJ5+ZUoSHwRxe37dfN9WkecVyhsAb2YI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1727305317; c=relaxed/simple; bh=cEclzMmW3SoLpaU3EDcz4q2mTHy9mkRUlI1h9qbp1zY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=scccXiZVqR5bgWcmNTYZTsCMjdDNsM+IUYqyeOxwR6opWgyUopQYEYI6BmCFGmpPY79N7swSt4LImd8opC8Ol8ZO4z854InTpxMx5EtK2opcJ7UqJmmGZ23UE2NwgZfn6q3pEC+R2xZ3cPJjm2L9xh0HgSIgz9ffn9EDI8MvcMc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=quicinc.com; spf=pass smtp.mailfrom=qualcomm.com; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b=P+rrTxL+; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=quicinc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=quicinc.com header.i=@quicinc.com header.b="P+rrTxL+" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 48PH5IHZ024213; Wed, 25 Sep 2024 23:01:32 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=lpYFWhC875s QhosfzHOtmukAuBsGMKYmdlGRDvo6ihc=; b=P+rrTxL+rF2Bw7RmYdu9f/J995D jPJG4eo6aUUdxSKi7IShM+u8xMasckzDYwus8FkxqodlBN4f0LYb6onaKolh6lra Ug2xvrYC/YyEA4dgvaTQpP1UomWH8x5YG6qkNvNTj6xIF2H2TMYdOsPoUPVAGTTX 6LQBetH9pIW5tm1zKww+irO60AfRQ+Q+nFN/dyI0podTaKgzVZsUNfa9Lv56wL6E 9p/MUkNT1rmvOt31pGCoe/2IcSrQPWmuYjmR6awckrhQ20TArUVSGzSBINIGjr1q UPzcZ0N3W+zgunsXMGPKnhR0u29PK3Hp08hn673oftDxT9K2O24nD2aUC7Q== Received: from nalasppmta04.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 41spwewcta-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Sep 2024 23:01:31 +0000 (GMT) Received: from pps.filterd (NALASPPMTA04.qualcomm.com [127.0.0.1]) by NALASPPMTA04.qualcomm.com (8.18.1.2/8.18.1.2) with ESMTP id 48PMtALn007889; Wed, 25 Sep 2024 23:01:30 GMT Received: from pps.reinject (localhost [127.0.0.1]) by NALASPPMTA04.qualcomm.com (PPS) with ESMTPS id 41vjh3c9mn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Sep 2024 23:01:30 +0000 Received: from NALASPPMTA04.qualcomm.com (NALASPPMTA04.qualcomm.com [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 48PN1U6Q014943; Wed, 25 Sep 2024 23:01:30 GMT Received: from hu-devc-lv-u20-a-new.qualcomm.com (hu-abchauha-lv.qualcomm.com [10.81.25.35]) by NALASPPMTA04.qualcomm.com (PPS) with ESMTPS id 48PN1UVN014941 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 25 Sep 2024 23:01:30 +0000 Received: by hu-devc-lv-u20-a-new.qualcomm.com (Postfix, from userid 214165) id E190C229BE; Wed, 25 Sep 2024 16:01:29 -0700 (PDT) From: Abhishek Chauhan To: "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Andrew Halaney , "Russell King (Oracle)" , Andrew Lunn , Heiner Kallweit , Bartosz Golaszewski , "linux-tegra@vger.kernel.org" , Brad Griffis , Vladimir Oltean , Jon Hunter , Maxime Chevallier , Przemek Kitszel Cc: kernel@quicinc.com Subject: [PATCH net v3 2/2] net: phy: aquantia: remove usage of phy_set_max_speed Date: Wed, 25 Sep 2024 16:01:29 -0700 Message-Id: <20240925230129.2064336-3-quic_abchauha@quicinc.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240925230129.2064336-1-quic_abchauha@quicinc.com> References: <20240925230129.2064336-1-quic_abchauha@quicinc.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-QCInternal: smtphost X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-GUID: rhoeNQLGVDUNzbNhX6SFc_NntnPe_Lfz X-Proofpoint-ORIG-GUID: rhoeNQLGVDUNzbNhX6SFc_NntnPe_Lfz X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.680,FMLib:17.12.60.29 definitions=2024-09-06_09,2024-09-06_01,2024-09-02_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 suspectscore=0 adultscore=0 priorityscore=1501 clxscore=1015 malwarescore=0 mlxscore=0 mlxlogscore=999 impostorscore=0 phishscore=0 spamscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2408220000 definitions=main-2409250163 Content-Type: text/plain; charset="utf-8" Remove the use of phy_set_max_speed in phy driver as the function is mainly used in MAC driver to set the max speed. Instead use get_features to fix up Phy PMA capabilities for AQR111, AQR111B0, AQR114C and AQCS109 Fixes: 038ba1dc4e54 ("net: phy: aquantia: add AQR111 and AQR111B0 PHY ID") Fixes: 0974f1f03b07 ("net: phy: aquantia: remove false 5G and 10G speed abi= lity for AQCS109") Fixes: c278ec644377 ("net: phy: aquantia: add support for AQR114C PHY ID") Link: https://lore.kernel.org/all/20240913011635.1286027-1-quic_abchauha@qu= icinc.com/T/ Signed-off-by: Abhishek Chauhan --- Changes since v2 1. seperate out the changes into two different patches.=20 2. remove usage of phy_set_max_speed from the aquantia driver 3. use phy_gbit_features instead of initializing each and=20 every link mode bits.=20 4. write seperate functions for 5Gbps supported phy=20 5. remove FIBRE bit which was introduced in patch 1 Changes since v1=20 1. remove usage of phy_set_max_speed in the aquantia driver code. 2. Introduce aqr_custom_get_feature which checks for the phy id and takes necessary actions based on max_speed supported by the phy 3. remove aqr111_config_init as it is just a wrapper function.=20 drivers/net/phy/aquantia/aquantia_main.c | 53 +++++++++++++++--------- 1 file changed, 34 insertions(+), 19 deletions(-) diff --git a/drivers/net/phy/aquantia/aquantia_main.c b/drivers/net/phy/aqu= antia/aquantia_main.c index 88ba12aaf6e0..c508f63f7fac 100644 --- a/drivers/net/phy/aquantia/aquantia_main.c +++ b/drivers/net/phy/aquantia/aquantia_main.c @@ -527,12 +527,6 @@ static int aqcs109_config_init(struct phy_device *phyd= ev) if (!ret) aqr107_chip_info(phydev); =20 - /* AQCS109 belongs to a chip family partially supporting 10G and 5G. - * PMA speed ability bits are the same for all members of the family, - * AQCS109 however supports speeds up to 2.5G only. - */ - phy_set_max_speed(phydev, SPEED_2500); - return aqr107_set_downshift(phydev, MDIO_AN_VEND_PROV_DOWNSHIFT_DFLT); } =20 @@ -741,6 +735,33 @@ static int aqr113c_config_init(struct phy_device *phyd= ev) return aqr113c_fill_interface_modes(phydev); } =20 +static int aqr111_get_features(struct phy_device *phydev) +{ + int ret; + __ETHTOOL_DECLARE_LINK_MODE_MASK(supported) =3D { 0, }; + + /* Normal feature discovery */ + ret =3D genphy_c45_pma_read_abilities(phydev); + if (ret) + return ret; + + /* PHY FIXUP */ + /* Although the PHY sets bit 12.18.19, it does not support 10G modes */ + linkmode_clear_bit(ETHTOOL_LINK_MODE_10000baseT_Full_BIT, phydev->support= ed); + linkmode_clear_bit(ETHTOOL_LINK_MODE_10000baseKX4_Full_BIT, phydev->suppo= rted); + linkmode_clear_bit(ETHTOOL_LINK_MODE_10000baseKR_Full_BIT, phydev->suppor= ted); + + /* Phy supports Speeds up to 5G with Autoneg though the phy PMA says othe= rwise */ + linkmode_copy(supported, phy_gbit_features); + linkmode_set_bit(ETHTOOL_LINK_MODE_2500baseX_Full_BIT, supported); + linkmode_set_bit(ETHTOOL_LINK_MODE_2500baseT_Full_BIT, supported); + linkmode_set_bit(ETHTOOL_LINK_MODE_5000baseT_Full_BIT, supported); + + linkmode_or(phydev->supported, supported, phydev->supported); + + return 0; +} + static int aqr107_probe(struct phy_device *phydev) { int ret; @@ -757,16 +778,6 @@ static int aqr107_probe(struct phy_device *phydev) return aqr_hwmon_probe(phydev); } =20 -static int aqr111_config_init(struct phy_device *phydev) -{ - /* AQR111 reports supporting speed up to 10G, - * however only speeds up to 5G are supported. - */ - phy_set_max_speed(phydev, SPEED_5000); - - return aqr107_config_init(phydev); -} - static int aqr115c_get_features(struct phy_device *phydev) { int ret; @@ -870,6 +881,7 @@ static struct phy_driver aqr_driver[] =3D { .get_sset_count =3D aqr107_get_sset_count, .get_strings =3D aqr107_get_strings, .get_stats =3D aqr107_get_stats, + .get_features =3D aqr115c_get_features, .link_change_notify =3D aqr107_link_change_notify, .led_brightness_set =3D aqr_phy_led_brightness_set, .led_hw_is_supported =3D aqr_phy_led_hw_is_supported, @@ -882,7 +894,7 @@ static struct phy_driver aqr_driver[] =3D { .name =3D "Aquantia AQR111", .probe =3D aqr107_probe, .get_rate_matching =3D aqr107_get_rate_matching, - .config_init =3D aqr111_config_init, + .config_init =3D aqr107_config_init, .config_aneg =3D aqr_config_aneg, .config_intr =3D aqr_config_intr, .handle_interrupt =3D aqr_handle_interrupt, @@ -894,6 +906,7 @@ static struct phy_driver aqr_driver[] =3D { .get_sset_count =3D aqr107_get_sset_count, .get_strings =3D aqr107_get_strings, .get_stats =3D aqr107_get_stats, + .get_features =3D aqr111_get_features, .link_change_notify =3D aqr107_link_change_notify, .led_brightness_set =3D aqr_phy_led_brightness_set, .led_hw_is_supported =3D aqr_phy_led_hw_is_supported, @@ -906,7 +919,7 @@ static struct phy_driver aqr_driver[] =3D { .name =3D "Aquantia AQR111B0", .probe =3D aqr107_probe, .get_rate_matching =3D aqr107_get_rate_matching, - .config_init =3D aqr111_config_init, + .config_init =3D aqr107_config_init, .config_aneg =3D aqr_config_aneg, .config_intr =3D aqr_config_intr, .handle_interrupt =3D aqr_handle_interrupt, @@ -918,6 +931,7 @@ static struct phy_driver aqr_driver[] =3D { .get_sset_count =3D aqr107_get_sset_count, .get_strings =3D aqr107_get_strings, .get_stats =3D aqr107_get_stats, + .get_features =3D aqr111_get_features, .link_change_notify =3D aqr107_link_change_notify, .led_brightness_set =3D aqr_phy_led_brightness_set, .led_hw_is_supported =3D aqr_phy_led_hw_is_supported, @@ -1027,7 +1041,7 @@ static struct phy_driver aqr_driver[] =3D { .name =3D "Aquantia AQR114C", .probe =3D aqr107_probe, .get_rate_matching =3D aqr107_get_rate_matching, - .config_init =3D aqr111_config_init, + .config_init =3D aqr107_config_init, .config_aneg =3D aqr_config_aneg, .config_intr =3D aqr_config_intr, .handle_interrupt =3D aqr_handle_interrupt, @@ -1039,6 +1053,7 @@ static struct phy_driver aqr_driver[] =3D { .get_sset_count =3D aqr107_get_sset_count, .get_strings =3D aqr107_get_strings, .get_stats =3D aqr107_get_stats, + .get_features =3D aqr111_get_features, .link_change_notify =3D aqr107_link_change_notify, .led_brightness_set =3D aqr_phy_led_brightness_set, .led_hw_is_supported =3D aqr_phy_led_hw_is_supported, --=20 2.25.1