forked from Imagelibrary/rtems
2000-10-20 Joel Sherrill <joel@OARcorp.com>
* include/bsp.h: Cleaned up network driver name and attach defines.
This commit is contained in:
@@ -1,3 +1,45 @@
|
||||
2000-10-20 Joel Sherrill <joel@OARcorp.com>
|
||||
|
||||
* include/bsp.h: Cleaned up network driver name and attach defines.
|
||||
|
||||
2000-10-20 Dmitry Kargapolov <dk@gentex.ru>
|
||||
|
||||
* ne2000/ne2000.c: Fix some errors in the driver.
|
||||
1. There was no sufficient check of data in ethernet header.
|
||||
The code in ne_rx_daemon() was:
|
||||
inport_word (dport, len);
|
||||
...
|
||||
len -= 4;
|
||||
...
|
||||
if (len > 0)
|
||||
ne_read_data (sc, startaddr, len, p);
|
||||
Unfortunately, sometimes my NIC gave me too big len value,
|
||||
the result was memory override. To fix this, I added ethernet
|
||||
header data checking.
|
||||
|
||||
2. The way overrides were serviced was not good. It was complex
|
||||
but sometimes did not provide reliable continuing of NIC working.
|
||||
I had the situation of an endless loop in ne_check_status()
|
||||
after override processing.
|
||||
|
||||
3. There was conceptual error of porting. The old method of
|
||||
overrides curing was ported from the OS-s, where override-processing
|
||||
did start immediately. But RTEMS-version uses events, and cleaning
|
||||
of the overrides can start later.
|
||||
|
||||
I selected the way of ne2000 programming that is used
|
||||
in freebsd kernel (v4.0).
|
||||
|
||||
Because of both problems, incorrect data in header of raw packet
|
||||
and receiver override, it went through ne_reset() and fully
|
||||
reset the ne2000.
|
||||
|
||||
So, in summary
|
||||
- added detecting of the incorrect data in ethernet header;
|
||||
- replaced handling of receiver overrides with new scheme,
|
||||
via resetting of NIC, this method is used also in case of
|
||||
invalid header detecting.
|
||||
|
||||
2000-10-18 Charles-Antoine Gauthier <charles.gauthier@nrc.ca>
|
||||
|
||||
* console/console.c, console/serial_mouse.c, include/bsp.h:
|
||||
|
||||
@@ -72,19 +72,21 @@ extern "C" {
|
||||
*/
|
||||
|
||||
struct rtems_bsdnet_ifconfig;
|
||||
extern int rtems_wd_driver_attach (struct rtems_bsdnet_ifconfig *config);
|
||||
extern int rtems_dec21140_driver_attach (struct rtems_bsdnet_ifconfig *config);
|
||||
|
||||
#if 0
|
||||
#define RTEMS_BSP_NETWORK_DRIVER_NAME "wd1"
|
||||
#define RTEMS_BSP_NETWORK_DRIVER_ATTACH rtems_wd_driver_attach
|
||||
#endif
|
||||
extern int rtems_ne_driver_attach(struct rtems_bsdnet_ifconfig *, int);
|
||||
#define BSP_NE2000_NETWORK_DRIVER_NAME "ne1"
|
||||
#define BSP_NE2000_NETWORK_DRIVER_ATTACH rtems_ne_driver_attach
|
||||
|
||||
#if 1
|
||||
#define RTEMS_BSP_NETWORK_DRIVER_NAME "dc1"
|
||||
#define RTEMS_BSP_NETWORK_DRIVER_ATTACH rtems_dec21140_driver_attach
|
||||
#endif
|
||||
extern int rtems_wd_driver_attach(struct rtems_bsdnet_ifconfig *, int);
|
||||
#define BSP_WD8003_NETWORK_DRIVER_NAME "wd1"
|
||||
#define BSP_WD8003_NETWORK_DRIVER_ATTACH rtems_wd_driver_attach
|
||||
|
||||
extern int rtems_dec21140_driver_attach(struct rtems_bsdnet_ifconfig *, int);
|
||||
#define BSP_DEC21140_NETWORK_DRIVER_NAME "dc1"
|
||||
#define BSP_DEC21140_NETWORK_DRIVER_ATTACH rtems_dec21140_driver_attach
|
||||
|
||||
#define RTEMS_BSP_NETWORK_DRIVER_NAME BSP_DEC21140_NETWORK_DRIVER_NAME
|
||||
#define RTEMS_BSP_NETWORK_DRIVER_ATTACH BSP_DEC21140_NETWORK_DRIVER_ATTACH
|
||||
|
||||
/*-------------------------------------------------------------------------+
|
||||
| Constants
|
||||
|
||||
Reference in New Issue
Block a user