Date: Mon, 26 Nov 2001 10:50:01 -0800 (PST) From: Nick Sayer <nsayer@clicktosecure.com> To: freebsd-bugs@FreeBSD.org Subject: Re: kern/32118: 21143 with dc driver will not select 10baseT/UTP media Message-ID: <200111261850.fAQIo1r07259@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/32118; it has been noted by GNATS. From: Nick Sayer <nsayer@clicktosecure.com> To: freebsd-gnats-submit@FreeBSD.org Cc: Subject: Re: kern/32118: 21143 with dc driver will not select 10baseT/UTP media Date: Mon, 26 Nov 2001 10:44:43 -0800 It turns out we are not reading the SROM correctly in if_dc. If I manually interpret the SROM and put a hack in dc_apply_fixup() with the values I manually picked out, then 10baseT/UTP half duplex works correctly. The problem is twofold: 1. We are not checking the type of leaf node is present. There are multiple formats with different lengths and data and stuff. The Znyx card uses a format we are not expecting. 2. We are not using all of the data present in the SROM. For example, in the SIA leaf node, we only look at the ctl field, whereas we should first poke the ctl value, then the dat value into the upper 16 bits of DC_WATCHDOG. In that format of leaf node, we should also be overriding the contents of CSR13, 14 and 15 (DC_10BTSTAT, DC_10BTCTL and DC_WATCHDOG) with the values specified in the SROM (however, on my Znyx card, the format is a different one that only has the CTL and DAT values, so the present code is picking garbage data to poke in DC_WATCHDOG in any event). Andrew Gallatin sent me this sample code: http://www.tru64unix.compaq.com/docs/dev_doc/DOCUMENTATION/HTML/DDK_R2/usr/opt/OSCB505/src/usr/examples/ddk/src/pci/ To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200111261850.fAQIo1r07259>