do_one_xcvr的主要功能是调用ioctl取得网卡的phy_id,然后进一步处理: int do_one_xcvr(int skfd, char *ifname, int maybe) { struct mii_data *mii = (struct mii_data *)&ifr.ifr_data; /* Get the vitals from the interface. */ strncpy(ifr.ifr_name, ifname, IFNAMSIZ); if (ioctl(skfd,...
那么应用层在进行socket的时候,回调了open函数 fec_enet_open,这个函数中的fec_enet_mii_probe就不会从of_phy_connect中获取到phy_device,因此就会出现-19的错误。那么获取不到phy_id的根本原因就是因为reset的时序没满足datasheet的要求,具体原因分析请见最上面的《标题2 原因分析》 1.2 Realtek phy的内核配置 那...
/* This structure is used in all SIOCxMIIxxx ioctl calls */ structmii_ioctl_data{ __u16phy_id; __u16reg_num; __u16val_in; __u16val_out; }; #endif/* _UAPI__LINUX_MII_H__ */ Copy lines Copy permalink
structmii_data*mii=(structmii_data*)&ifr.ifr_data; mii->reg_num=location; mii->val_in=value; if(ioctl(skfd,SIOCSMIIREG,&ifr)<0) { fprintf(stderr,"SIOCSMIIREG on %s failed: %s\n",ifr.ifr_name, strerror(errno)); } }
那么应用层在进行socket的时候,回调了open函数 fec_enet_open,这个函数中的fec_enet_mii_probe就不会从of_phy_connect中获取到phy_device,因此就会出现-19的错误。那么获取不到phy_id的根本原因就是因为reset的时序没满足datasheet的要求,具体原因分析请见最上面的《标题2 原因分析》 ...
Provide feedback We read every piece of feedback, and take your input very seriously. Include my email address so I can be contacted Cancel Submit feedback Saved searches Use saved searches to filter your results more quickly Cancel Create saved search Sign in Sign up {...