Home | History | Annotate | Download | only in altboot
History log of /src/sys/arch/sandpoint/stand/altboot/rge.c
RevisionDateAuthorComments
 1.8  25-Mar-2021  rin Fix tftp boot with RTL8169/8110.

When sending frame shorter than 60 octets, we add trailing \0's to
payload to construct 60-octet frame.

rge.c rev 1.4--1.7 did this tail-padding on buffer provided by caller,
which results in memory corruption if buffer is shorter than 60 bytes.

Instead, allocate temporary buffer on stack, and work on it.

This bug affects tftp_getnextblock() compiled by GCC8 and later, by
which stack layout has drastically changed. However, even with GCC7,
if tftp.c is compiled with -O0, the bug becomes tangible.
 1.7  25-Dec-2012  phx branches: 1.7.50; 1.7.52;
QNAP V200 boards have no EEPROM for the MAC address, so all devices default
to the same address (00:e0:4c:69:20:01).
Now we read the real MAC address from the flash ROM. It is stored at the
beginning of a 512-byte block in ASCII format. Some QNAP's have a broken
ext2 file system, so we cannot look for the file ETH0.MAC_ADDR therein,
but have to search the whole flash in 512-byte steps for candidates...
 1.6  30-Oct-2011  phx branches: 1.6.2; 1.6.8; 1.6.12;
Added in8() and out8() to access a byte with reorder-protection.
Use it in all drivers instead of (volatile uint8_t *).
 1.5  29-Apr-2011  phx branches: 1.5.4;
When we stretch a short frame to 60 bytes in rge_send() do not return 60,
but the original frame size.
 1.4  04-Apr-2011  phx Make sure a frame is at least 60 bytes, as Realtek does not automatically
expand small frames.
Patch suggested by nisimura@.
 1.3  27-Mar-2011  phx Fixed PHY access.
Support 8169SC/8110SC (as found on QNAP V200 boards).
Make frame receiving work (FRAMELEN <-> FRAMESIZE).
Driver works now, but not the first time after cold start.
 1.2  27-Jan-2011  phx branches: 1.2.2; 1.2.4;
Debugging output is only visible when DEBUG is defined.
 1.1  23-Jan-2011  nisimura change bootloader name to "altboot". bump version and add README.
 1.2.4.2  06-Mar-2011  bouyer Sync with HEAD
 1.2.4.1  27-Jan-2011  bouyer file rge.c was added on branch bouyer-quota2 on 2011-03-06 15:07:56 +0000
 1.2.2.4  31-May-2011  rmind sync with head
 1.2.2.3  21-Apr-2011  rmind sync with head
 1.2.2.2  05-Mar-2011  rmind sync with head
 1.2.2.1  27-Jan-2011  rmind file rge.c was added on branch rmind-uvmplock on 2011-03-05 20:51:47 +0000
 1.5.4.2  06-Jun-2011  jruoho Sync with HEAD.
 1.5.4.1  29-Apr-2011  jruoho file rge.c was added on branch jruoho-x86intr on 2011-06-06 09:06:35 +0000
 1.6.12.1  25-Feb-2013  tls resync with head
 1.6.8.1  18-Sep-2013  bouyer Pull up following revision(s) (requested by phx in ticket #946):
sys/arch/sandpoint/stand/altboot/rge.c: revision 1.7
sys/arch/sandpoint/stand/altboot/brdsetup.c: revision 1.32
sys/dev/ic/rtl8169.c: revision 1.138
QNAP V200 boards have no EEPROM for the MAC address, so all devices default
to the same address (00:e0:4c:69:20:01).
Now we read the real MAC address from the flash ROM. It is stored at the
beginning of a 512-byte block in ASCII format. Some QNAP's have a broken
ext2 file system, so we cannot look for the file ETH0.MAC_ADDR therein,
but have to search the whole flash in 512-byte steps for candidates...
Make re(4) driver always use IDR register values for its MAC address.
Some sandpoint NAS firmwares set MAC address per their
firmware settings and don't use re(4)'s EEPROM values.
Per rtl8169 manuals re(4) chip reads EEPROM automatically after
hardware reset and Linux driver also uses IDR registers,
so this change should not affect existing other boards
which actually have vaild EEPROM.
Per discussion in old tech-kern@ thread:
http://mail-index.netbsd.org/tech-kern/2012/12/01/msg014573.html
Note rtl81x9.c is still shared among rtk(4) only for a multicast function
(to avoid boring refactoring work).
 1.6.2.1  23-Jan-2013  yamt sync with head
 1.7.52.1  03-Apr-2021  thorpej Sync with HEAD.
 1.7.50.1  03-Apr-2021  thorpej Sync with HEAD.

RSS XML Feed