#
7caafb85 |
| 23-Dec-2006 |
Sepherosa Ziehau <sephe@dragonflybsd.org> |
- Don't call m_adj() to make RX buffer's _payload_ on longword aligned, because some re(4) chips (e.g. RTL8101E) require RX buffer to be 8-bytes aligned. This change shows no noticeable performa
- Don't call m_adj() to make RX buffer's _payload_ on longword aligned, because some re(4) chips (e.g. RTL8101E) require RX buffer to be 8-bytes aligned. This change shows no noticeable performance change. Reported-by: Joe Talbott <josepht@cstone.net> - Avoid writing extra hardware registers by writing 2 bytes to IDR4 instead instead of writing 4 bytes, bacause: 1) the extra two registers after IDR5 are reserved. 2) accessing arpcom.ac_enaddr[6,7] should be invalid. - Add a flag field in re_softc and re_hwrev. Currently only one flag, RE_F_HASMPC, is defined. This flag is used to indicate whether the hardware has MPC register or not, so we can avoid writing to MPC's position, if that position is reserved. - Move descriptor ring address setting up before RX/TX enabling, since some re(4) chips (e.g. RTL8101E) will try accessing descriptor ring immediately after RX/TX is enabled, which results in intermittent kernel panic or system hanging. Paniced-by: Joe Talbott <josepht@cstone.net> - Avoid calling re_init(), if hw.reX.tx_moderation is changed but NIC is not up yet. - Const-fy global hardware id arrays and nuke unused macro while I'm here.
Thank Joe Talbott <josepht@cstone.net> to help debugging and provide valuable information (esp. locating the problematic RX/TX enabling :)
Thank dillon@ to provide debugging hints.
Tested-by: Joe Talbott <josepht@cstone.net> (RTL8101E) swildner@ (onboard RTL8169S) (*) me (RTL8169S)
# (*) swildner@'s card is still half broken even after this commit :\
show more ...
|
#
5d686fbb |
| 14-Nov-2006 |
Sepherosa Ziehau <sephe@dragonflybsd.org> |
Sync re(4) with FreeBSD: - Add support for RealTek 8169SC/8110SC and RTL8101E devices. The latter is a PCIe 10/100 chip. - Add support for RealTek RTL8168(B?) - Fix EEPROM reading code - Disable d
Sync re(4) with FreeBSD: - Add support for RealTek 8169SC/8110SC and RTL8101E devices. The latter is a PCIe 10/100 chip. - Add support for RealTek RTL8168(B?) - Fix EEPROM reading code - Disable diagnostic code in re_attach() by default. It is almost useless and has caused much trouble. - Manually padding small IP datagrams to work arround hardware checksum offload bug [1]. Enable IP/TCP/UDP checksum offload after this fix. - Work arround hardware TX bug in some PCIe re(4) devices: The TX command, which is issued when there is transmission in progress, will get lost [2]. So at the end of re_txeof(), if there are still packets sitting in the TX ring, we kick the TX engine again. - Add a sysctl hw.reX.tx_moderation to turn on/off TX moderation. It is on by default. - Move softc related structs from if_rereg.h into newly created if_revar.h
Thank Bill Paul (wpaul@freebsd.org) and many other people for their work on this driver.
# # [1] Detailed description of this bug is at: # FreeBSD dev/re/if_re.c rev1.70 by wpaul@freebsd.org # # [2] Detailed description of this bug is at: # FreeBSD dev/re/if_re.c rev1.71 by wpaul@freebsd.org #
show more ...
|