[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <201907090947.11RzlE8K%lkp@intel.com>
Date: Tue, 9 Jul 2019 09:58:47 +0800
From: kbuild test robot <lkp@...el.com>
To: "kwangdo.yi" <kwangdo.yi@...il.com>
Cc: kbuild-all@...org, netdev@...r.kernel.org,
"kwangdo.yi" <kwangdo.yi@...il.com>
Subject: Re: [PATCH] phy: added a PHY_BUSY state into phy_state_machine
Hi "kwangdo.yi",
Thank you for the patch! Yet something to improve:
[auto build test ERROR on linus/master]
[also build test ERROR on v5.2]
[cannot apply to next-20190708]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/kwangdo-yi/phy-added-a-PHY_BUSY-state-into-phy_state_machine/20190709-075228
config: arm-omap2plus_defconfig (attached as .config)
compiler: arm-linux-gnueabi-gcc (GCC) 7.4.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
GCC_VERSION=7.4.0 make.cross ARCH=arm
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@...el.com>
All error/warnings (new ones prefixed by >>):
drivers/net/phy/phy.c: In function 'phy_state_to_str':
>> drivers/net/phy/phy.c:38:2: warning: enumeration value 'PHY_BUSY' not handled in switch [-Wswitch]
switch (st) {
^~~~~~
drivers/net/phy/phy.c: In function 'phy_state_machine':
>> drivers/net/phy/phy.c:925:4: error: 'phy' undeclared (first use in this function)
phy->state = PHY_BUSY;
^~~
drivers/net/phy/phy.c:925:4: note: each undeclared identifier is reported only once for each function it appears in
vim +/phy +925 drivers/net/phy/phy.c
894
895 /**
896 * phy_state_machine - Handle the state machine
897 * @work: work_struct that describes the work to be done
898 */
899 void phy_state_machine(struct work_struct *work)
900 {
901 struct delayed_work *dwork = to_delayed_work(work);
902 struct phy_device *phydev =
903 container_of(dwork, struct phy_device, state_queue);
904 bool needs_aneg = false, do_suspend = false;
905 enum phy_state old_state;
906 int err = 0;
907
908 mutex_lock(&phydev->lock);
909
910 old_state = phydev->state;
911
912 switch (phydev->state) {
913 case PHY_DOWN:
914 case PHY_READY:
915 break;
916 case PHY_UP:
917 needs_aneg = true;
918
919 break;
920 case PHY_NOLINK:
921 case PHY_RUNNING:
922 case PHY_BUSY:
923 err = phy_check_link_status(phydev);
924 if (err == -ETIMEDOUT && old_state == PHY_RUNNING) {
> 925 phy->state = PHY_BUSY;
926 err = 0;
927
928 }
929 break;
930 case PHY_FORCING:
931 err = genphy_update_link(phydev);
932 if (err)
933 break;
934
935 if (phydev->link) {
936 phydev->state = PHY_RUNNING;
937 phy_link_up(phydev);
938 } else {
939 if (0 == phydev->link_timeout--)
940 needs_aneg = true;
941 phy_link_down(phydev, false);
942 }
943 break;
944 case PHY_HALTED:
945 if (phydev->link) {
946 phydev->link = 0;
947 phy_link_down(phydev, true);
948 do_suspend = true;
949 }
950 break;
951 }
952
953 mutex_unlock(&phydev->lock);
954
955 if (needs_aneg)
956 err = phy_start_aneg(phydev);
957 else if (do_suspend)
958 phy_suspend(phydev);
959
960 if (err < 0)
961 phy_error(phydev);
962
963 if (old_state != phydev->state) {
964 phydev_dbg(phydev, "PHY state change %s -> %s\n",
965 phy_state_to_str(old_state),
966 phy_state_to_str(phydev->state));
967 if (phydev->drv && phydev->drv->link_change_notify)
968 phydev->drv->link_change_notify(phydev);
969 }
970
971 /* Only re-schedule a PHY state machine change if we are polling the
972 * PHY, if PHY_IGNORE_INTERRUPT is set, then we will be moving
973 * between states from phy_mac_interrupt().
974 *
975 * In state PHY_HALTED the PHY gets suspended, so rescheduling the
976 * state machine would be pointless and possibly error prone when
977 * called from phy_disconnect() synchronously.
978 */
979 mutex_lock(&phydev->lock);
980 if (phy_polling_mode(phydev) && phy_is_started(phydev))
981 phy_queue_state_machine(phydev, PHY_STATE_TIME);
982 mutex_unlock(&phydev->lock);
983 }
984
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
Download attachment ".config.gz" of type "application/gzip" (36418 bytes)
Powered by blists - more mailing lists