if_re freebsd driver, adapted for the build by Francesco Piccinini. It
supports many Realtek based NIC which our own driver doesn't support (for example the RTL8101E). Thanks! Not added to the image yet, since it causes some problems on my laptop (but could well be caused by the freebsd compat layer, or by the scheduler) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27843 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -21,6 +21,7 @@ SubInclude HAIKU_TOP src add-ons kernel drivers network nforce ;
|
||||
SubInclude HAIKU_TOP src add-ons kernel drivers network pcnet ;
|
||||
SubInclude HAIKU_TOP src add-ons kernel drivers network syskonnect ;
|
||||
SubInclude HAIKU_TOP src add-ons kernel drivers network attansic_l2 ;
|
||||
SubInclude HAIKU_TOP src add-ons kernel drivers network re ;
|
||||
|
||||
SubIncludeGPL HAIKU_TOP src add-ons kernel drivers network bcm440x ;
|
||||
SubIncludeGPL HAIKU_TOP src add-ons kernel drivers network bcm570x ;
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
SubDir HAIKU_TOP src add-ons kernel drivers network re ;
|
||||
|
||||
SubInclude HAIKU_TOP src add-ons kernel drivers network re pci ;
|
||||
@@ -0,0 +1,16 @@
|
||||
SubDir HAIKU_TOP src add-ons kernel drivers network re pci ;
|
||||
|
||||
UsePrivateHeaders kernel net ;
|
||||
|
||||
UseHeaders [ FDirName $(SUBDIR) .. ] : true ;
|
||||
UseHeaders [ FDirName $(HAIKU_TOP) src libs compat freebsd_network compat ] : true ;
|
||||
UseHeaders [ FDirName $(HAIKU_TOP) src add-ons kernel drivers network rtl8139 ] : true ;
|
||||
|
||||
SubDirCcFlags [ FDefines _KERNEL=1 FBSD_DRIVER=1 ] ;
|
||||
|
||||
KernelAddon re :
|
||||
if_re.c
|
||||
glue.c
|
||||
: libfreebsd_network.a rtl8139_mii.a
|
||||
;
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
#include <sys/bus.h>
|
||||
#include <pci/if_rlreg.h>
|
||||
|
||||
HAIKU_FBSD_DRIVER_GLUE(re, re, pci);
|
||||
HAIKU_FBSD_MII_DRIVER(rlphy);
|
||||
HAIKU_DRIVER_REQUIREMENTS(FBSD_TASKQUEUES | FBSD_FAST_TASKQUEUE);
|
||||
|
||||
int
|
||||
HAIKU_CHECK_DISABLE_INTERRUPTS(device_t dev)
|
||||
{
|
||||
struct rl_softc *sc = device_get_softc(dev);
|
||||
uint16_t status;
|
||||
|
||||
status = CSR_READ_2(sc, RL_ISR);
|
||||
if (status == 0xffff)
|
||||
return 0;
|
||||
if (status != 0 && (status & RL_INTRS) == 0) {
|
||||
CSR_WRITE_2(sc, RL_ISR, status);
|
||||
return 0;
|
||||
}
|
||||
if ((status & RL_INTRS) == 0)
|
||||
return 0;
|
||||
|
||||
CSR_WRITE_2(sc, RL_IMR, 0);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
HAIKU_REENABLE_INTERRUPTS(device_t dev)
|
||||
{
|
||||
struct rl_softc *sc = device_get_softc(dev);
|
||||
RL_LOCK(sc);
|
||||
CSR_WRITE_2(sc, RL_IMR, RL_INTRS);
|
||||
RL_UNLOCK(sc);
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user