* Xilinx Temac link detect @ 2008-02-21 17:36 khollan 2008-03-06 20:44 ` khollan 0 siblings, 1 reply; 5+ messages in thread From: khollan @ 2008-02-21 17:36 UTC (permalink / raw) To: linuxppc-embedded Hi Is there a good way to detect if the ethernet link is active at boot time, so I can decided to setup the dchp and other network required stuff in an init script. When I try to setup this stuff and the cable is disconnected it hangs. Thanks Kevin -- View this message in context: http://www.nabble.com/Xilinx-Temac-link-detect-tp15616042p15616042.html Sent from the linuxppc-embedded mailing list archive at Nabble.com. ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: Xilinx Temac link detect 2008-02-21 17:36 Xilinx Temac link detect khollan @ 2008-03-06 20:44 ` khollan 2008-03-06 22:14 ` John Linn 0 siblings, 1 reply; 5+ messages in thread From: khollan @ 2008-03-06 20:44 UTC (permalink / raw) To: linuxppc-embedded I figure I could write a C program to talk to the ioctl in the TEMAC driver and read the PHY register. Does anyone have example code for talking to network ioctl's? Thanks Kevin -- View this message in context: http://www.nabble.com/Xilinx-Temac-link-detect-tp15616042p15883376.html Sent from the linuxppc-embedded mailing list archive at Nabble.com. ^ permalink raw reply [flat|nested] 5+ messages in thread
* RE: Xilinx Temac link detect 2008-03-06 20:44 ` khollan @ 2008-03-06 22:14 ` John Linn 2008-03-07 14:29 ` Koss, Mike (Mission Systems) 0 siblings, 1 reply; 5+ messages in thread From: John Linn @ 2008-03-06 22:14 UTC (permalink / raw) To: khollan, linuxppc-embedded Hi Kevin, I couldn't find any example laying around, so I took a shot at it based on other non-network examples we had. I've not personally done it so bear that in mind. I have not tried to compile any of this, just stole parts for places and pasted in. Hope it helps, John #include <ioctl.h> /* * FD of the IIC device opened. */ int Fdtemac; struct mii_ioctl_data ioctl_data;=09 /* * Open the device. */ Fdtemac =3D open("/dev/TBD", O_RDWR); if(Fdtemac < 0) { printf("Cannot open the temac device\n"); return -1; } /* setup the inputs to the ioctl call */ ioctl_data.phy_num =3D TBD; ioctl_data.reg_num =3D TBD; =09 /* * Read the phy register */ Register =3D ioctl(Fdtemac, SIOCGMIIREG, &ioctl_data); if(Status < 0) { /* failure */ return 0; } /* results should be in ioctl_data.val_out I think } >From the temac linux adapter, a snippet showing the the ioctl function. xenet_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) { struct mii_ioctl_data *data =3D (struct mii_ioctl_data *) &rq->ifr_data; case SIOCGMIIREG: /* Read GMII PHY register. */ ret =3D XTemac_PhyRead(&lp->Emac, data->phy_id, data->reg_num, &data->val_out); } from linux/mii.h /* This structure is used in all SIOCxMIIxxx ioctl calls */ struct mii_ioctl_data { __u16 phy_id; __u16 reg_num; __u16 val_in; __u16 val_out; }; from linux/if.h struct ifreq=20 { #define IFHWADDRLEN 6 union { char ifrn_name[IFNAMSIZ]; /* if name, e.g. "en0" */ } ifr_ifrn; =09 union { struct sockaddr ifru_addr; struct sockaddr ifru_dstaddr; struct sockaddr ifru_broadaddr; struct sockaddr ifru_netmask; struct sockaddr ifru_hwaddr; short ifru_flags; int ifru_ivalue; int ifru_mtu; struct ifmap ifru_map; char ifru_slave[IFNAMSIZ]; /* Just fits the size */ char ifru_newname[IFNAMSIZ]; void __user * ifru_data; struct if_settings ifru_settings; } ifr_ifru; }; -----Original Message----- From: linuxppc-embedded-bounces+john.linn=3Dxilinx.com@ozlabs.org [mailto:linuxppc-embedded-bounces+john.linn=3Dxilinx.com@ozlabs.org] On Behalf Of khollan Sent: Thursday, March 06, 2008 1:44 PM To: linuxppc-embedded@ozlabs.org Subject: Re: Xilinx Temac link detect I figure I could write a C program to talk to the ioctl in the TEMAC driver and read the PHY register. Does anyone have example code for talking to network ioctl's? Thanks Kevin --=20 View this message in context: http://www.nabble.com/Xilinx-Temac-link-detect-tp15616042p15883376.html Sent from the linuxppc-embedded mailing list archive at Nabble.com. _______________________________________________ Linuxppc-embedded mailing list Linuxppc-embedded@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-embedded ^ permalink raw reply [flat|nested] 5+ messages in thread
* RE: Xilinx Temac link detect 2008-03-06 22:14 ` John Linn @ 2008-03-07 14:29 ` Koss, Mike (Mission Systems) 2008-03-10 20:34 ` khollan 0 siblings, 1 reply; 5+ messages in thread From: Koss, Mike (Mission Systems) @ 2008-03-07 14:29 UTC (permalink / raw) To: John Linn, khollan, linuxppc-embedded Here's a snippet from a program I use to debug an ethernet driver that I have using ioctl's. The ethernet ioctl interface is slightly different from a "normal" ioctl in that it uses sockets and not a file descriptor. The ioctl's I use are added to the ioctl interface in the driver, using the defined device-specific range (that was supposed to disappear in 2.5.x or 2.6.x). With this I read/write my phy register's to test out the interface between my TEMAC and my PHY.=20 #include <sys/types.h> #include <sys/ioctl.h> #include <stdio.h> #include <errno.h> #include <string.h> #include <unistd.h> #include <stdlib.h> #include <net/if.h> #include <linux/sockios.h> int main (int argc, char **argv) { int driver_fd =3D -1; int cmd =3D 0; int res; char* buffer =3D NULL; struct ifreq ifr; if (argc < 3) { printf ("Usage %s <devname> <ioctl>\n", argv [0]); exit (1); } driver_fd =3D socket(AF_INET, SOCK_DGRAM, 0); if (driver_fd =3D=3D -1) { printf ("Could not open %s: %s\n", TEMAC_DRIVER_NAME, strerror (errno)); exit (1); } memset(&ifr, 0, sizeof(struct ifreq)); strcpy(ifr.ifr_name, argv[1]); cmd =3D atoi (argv [2]); if (SIOCDEVPRIVATE + 3 =3D=3D cmd) { if (argc !=3D 4) { printf("usage %s <devname> 35315 <phy reg>\n", argv[0]); exit(1); } ifr.ifr_ifindex =3D atoi(argv[3]); } if (SIOCDEVPRIVATE + 4 =3D=3D cmd) { if (argc !=3D 5) { printf("usage %s <devname> 35316 <phy reg> <val>\n", argv[0]); exit(1); } ifr.ifr_ifindex =3D atoi(argv[3]) << 16; ifr.ifr_ifindex |=3D atoi(argv[4]); } printf("Performing ioctl %d:\n", cmd); res =3D ioctl(driver_fd, cmd, &ifr); if (res =3D=3D -1) { printf ("Error from %d: %s\n", driver_fd, strerror (errno)); exit (1); } return 0; } -----Original Message----- From: John Linn [mailto:John.Linn@xilinx.com]=20 Sent: Thursday, March 06, 2008 5:15 PM To: khollan; linuxppc-embedded@ozlabs.org Subject: RE: Xilinx Temac link detect Hi Kevin, I couldn't find any example laying around, so I took a shot at it based on other non-network examples we had. I've not personally done it so bear that in mind. I have not tried to compile any of this, just stole parts for places and pasted in. Hope it helps, John #include <ioctl.h> /* * FD of the IIC device opened. */ int Fdtemac; struct mii_ioctl_data ioctl_data;=09 /* * Open the device. */ Fdtemac =3D open("/dev/TBD", O_RDWR); if(Fdtemac < 0) { printf("Cannot open the temac device\n"); return -1; } /* setup the inputs to the ioctl call */ ioctl_data.phy_num =3D TBD; ioctl_data.reg_num =3D TBD; =09 /* * Read the phy register */ Register =3D ioctl(Fdtemac, SIOCGMIIREG, &ioctl_data); if(Status < 0) { /* failure */ return 0; } /* results should be in ioctl_data.val_out I think } >From the temac linux adapter, a snippet showing the the ioctl function. xenet_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) { struct mii_ioctl_data *data =3D (struct mii_ioctl_data *) &rq->ifr_data; case SIOCGMIIREG: /* Read GMII PHY register. */ ret =3D XTemac_PhyRead(&lp->Emac, data->phy_id, data->reg_num, &data->val_out); } from linux/mii.h /* This structure is used in all SIOCxMIIxxx ioctl calls */ struct mii_ioctl_data { __u16 phy_id; __u16 reg_num; __u16 val_in; __u16 val_out; }; from linux/if.h struct ifreq { #define IFHWADDRLEN 6 union { char ifrn_name[IFNAMSIZ]; /* if name, e.g. "en0" */ } ifr_ifrn; =09 union { struct sockaddr ifru_addr; struct sockaddr ifru_dstaddr; struct sockaddr ifru_broadaddr; struct sockaddr ifru_netmask; struct sockaddr ifru_hwaddr; short ifru_flags; int ifru_ivalue; int ifru_mtu; struct ifmap ifru_map; char ifru_slave[IFNAMSIZ]; /* Just fits the size */ char ifru_newname[IFNAMSIZ]; void __user * ifru_data; struct if_settings ifru_settings; } ifr_ifru; }; -----Original Message----- From: linuxppc-embedded-bounces+john.linn=3Dxilinx.com@ozlabs.org [mailto:linuxppc-embedded-bounces+john.linn=3Dxilinx.com@ozlabs.org] On Behalf Of khollan Sent: Thursday, March 06, 2008 1:44 PM To: linuxppc-embedded@ozlabs.org Subject: Re: Xilinx Temac link detect I figure I could write a C program to talk to the ioctl in the TEMAC driver and read the PHY register. Does anyone have example code for talking to network ioctl's? Thanks Kevin -- View this message in context: http://www.nabble.com/Xilinx-Temac-link-detect-tp15616042p15883376.html Sent from the linuxppc-embedded mailing list archive at Nabble.com. _______________________________________________ Linuxppc-embedded mailing list Linuxppc-embedded@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-embedded ^ permalink raw reply [flat|nested] 5+ messages in thread
* RE: Xilinx Temac link detect 2008-03-07 14:29 ` Koss, Mike (Mission Systems) @ 2008-03-10 20:34 ` khollan 0 siblings, 0 replies; 5+ messages in thread From: khollan @ 2008-03-10 20:34 UTC (permalink / raw) To: linuxppc-embedded Koss, Mike (Mission Systems) wrote: > > Here's a snippet from a program I use to debug an ethernet driver that I > have using ioctl's. The ethernet ioctl interface is slightly different > from a "normal" ioctl in that it uses sockets and not a file descriptor. > The ioctl's I use are added to the ioctl interface in the driver, using > the defined device-specific range (that was supposed to disappear in > 2.5.x or 2.6.x). With this I read/write my phy register's to test out > the interface between my TEMAC and my PHY. > > Thanks for the example, everything working great now. Kevin -- View this message in context: http://www.nabble.com/Xilinx-Temac-link-detect-tp15616042p15954121.html Sent from the linuxppc-embedded mailing list archive at Nabble.com. ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2008-03-10 20:34 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2008-02-21 17:36 Xilinx Temac link detect khollan 2008-03-06 20:44 ` khollan 2008-03-06 22:14 ` John Linn 2008-03-07 14:29 ` Koss, Mike (Mission Systems) 2008-03-10 20:34 ` khollan
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).