* update freebsd compat with stubbed eventhandler
* get e1000 to compile * remove dev/em from the build (might be removed later on) * tested on VirtualBox (gcc2,gcc4), VMware(gcc4) and natively on ThinkPad T500 (gcc4) * courtesy of Michael Weirauch (emwe) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29247 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
ab64e1faa3
commit
44ec2ebd20
|
@ -1,3 +1,3 @@
|
||||||
SubDir HAIKU_TOP src add-ons kernel drivers network ipro1000 dev ;
|
SubDir HAIKU_TOP src add-ons kernel drivers network ipro1000 dev ;
|
||||||
|
|
||||||
SubInclude HAIKU_TOP src add-ons kernel drivers network ipro1000 dev em ;
|
SubInclude HAIKU_TOP src add-ons kernel drivers network ipro1000 dev e1000 ;
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
SubDir HAIKU_TOP src add-ons kernel drivers network ipro1000 dev e1000 ;
|
||||||
|
|
||||||
|
UsePrivateHeaders kernel net ;
|
||||||
|
|
||||||
|
UseHeaders [ FDirName $(SUBDIR) .. .. ] : true ;
|
||||||
|
UseHeaders [ FDirName $(HAIKU_TOP) src libs compat freebsd_network compat ] : true ;
|
||||||
|
|
||||||
|
SubDirCcFlags [ FDefines _KERNEL=1 FBSD_DRIVER=1 EM_FAST_INTR=1 ] ;
|
||||||
|
|
||||||
|
KernelAddon ipro1000 :
|
||||||
|
e1000_80003es2lan.c
|
||||||
|
e1000_82540.c
|
||||||
|
e1000_82541.c
|
||||||
|
e1000_82542.c
|
||||||
|
e1000_82543.c
|
||||||
|
e1000_82571.c
|
||||||
|
e1000_82575.c
|
||||||
|
e1000_api.c
|
||||||
|
e1000_ich8lan.c
|
||||||
|
e1000_mac.c
|
||||||
|
e1000_manage.c
|
||||||
|
e1000_nvm.c
|
||||||
|
e1000_osdep.c
|
||||||
|
e1000_phy.c
|
||||||
|
if_em.c
|
||||||
|
|
||||||
|
glue.c
|
||||||
|
: libfreebsd_network.a
|
||||||
|
;
|
||||||
|
|
|
@ -73,9 +73,9 @@
|
||||||
|
|
||||||
#define STATIC static
|
#define STATIC static
|
||||||
#define FALSE 0
|
#define FALSE 0
|
||||||
#define false FALSE /* shared code stupidity */
|
//#define false FALSE /* shared code stupidity */
|
||||||
#define TRUE 1
|
#define TRUE 1
|
||||||
#define true TRUE
|
//#define true TRUE
|
||||||
#define CMD_MEM_WRT_INVALIDATE 0x0010 /* BIT_4 */
|
#define CMD_MEM_WRT_INVALIDATE 0x0010 /* BIT_4 */
|
||||||
#define PCI_COMMAND_REGISTER PCIR_COMMAND
|
#define PCI_COMMAND_REGISTER PCIR_COMMAND
|
||||||
|
|
||||||
|
@ -91,7 +91,7 @@ typedef int64_t s64;
|
||||||
typedef int32_t s32;
|
typedef int32_t s32;
|
||||||
typedef int16_t s16;
|
typedef int16_t s16;
|
||||||
typedef int8_t s8;
|
typedef int8_t s8;
|
||||||
typedef boolean_t bool;
|
//typedef boolean_t bool;
|
||||||
|
|
||||||
#define __le16 u16
|
#define __le16 u16
|
||||||
#define __le32 u32
|
#define __le32 u32
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
#include <sys/bus.h>
|
||||||
|
|
||||||
|
HAIKU_FBSD_DRIVER_GLUE(ipro1000, em, pci)
|
||||||
|
|
||||||
|
NO_HAIKU_CHECK_DISABLE_INTERRUPTS();
|
||||||
|
NO_HAIKU_REENABLE_INTERRUPTS();
|
||||||
|
NO_HAIKU_FBSD_MII_DRIVER();
|
||||||
|
|
||||||
|
#ifdef EM_FAST_INTR
|
||||||
|
HAIKU_DRIVER_REQUIREMENTS(FBSD_TASKQUEUES | FBSD_FAST_TASKQUEUE);
|
||||||
|
#else
|
||||||
|
HAIKU_DRIVER_REQUIREMENTS(0);
|
||||||
|
#endif
|
|
@ -2703,7 +2703,7 @@ static int
|
||||||
em_allocate_pci_resources(struct adapter *adapter)
|
em_allocate_pci_resources(struct adapter *adapter)
|
||||||
{
|
{
|
||||||
device_t dev = adapter->dev;
|
device_t dev = adapter->dev;
|
||||||
int val, rid, error = E1000_SUCCESS;
|
int i, val, rid, error = E1000_SUCCESS;
|
||||||
|
|
||||||
rid = PCIR_BAR(0);
|
rid = PCIR_BAR(0);
|
||||||
adapter->memory = bus_alloc_resource_any(dev, SYS_RES_MEMORY,
|
adapter->memory = bus_alloc_resource_any(dev, SYS_RES_MEMORY,
|
||||||
|
@ -2755,7 +2755,7 @@ em_allocate_pci_resources(struct adapter *adapter)
|
||||||
** Init the resource arrays
|
** Init the resource arrays
|
||||||
** used by MSIX setup
|
** used by MSIX setup
|
||||||
*/
|
*/
|
||||||
for (int i = 0; i < 3; i++) {
|
for (i = 0; i < 3; i++) {
|
||||||
adapter->rid[i] = i + 1; /* MSI/X RID starts at 1 */
|
adapter->rid[i] = i + 1; /* MSI/X RID starts at 1 */
|
||||||
adapter->tag[i] = NULL;
|
adapter->tag[i] = NULL;
|
||||||
adapter->res[i] = NULL;
|
adapter->res[i] = NULL;
|
||||||
|
@ -2853,13 +2853,13 @@ int
|
||||||
em_allocate_msix(struct adapter *adapter)
|
em_allocate_msix(struct adapter *adapter)
|
||||||
{
|
{
|
||||||
device_t dev = adapter->dev;
|
device_t dev = adapter->dev;
|
||||||
int error;
|
int error, i;
|
||||||
|
|
||||||
/* Make sure all interrupts are disabled */
|
/* Make sure all interrupts are disabled */
|
||||||
E1000_WRITE_REG(&adapter->hw, E1000_IMC, 0xffffffff);
|
E1000_WRITE_REG(&adapter->hw, E1000_IMC, 0xffffffff);
|
||||||
|
|
||||||
/* First get the resources */
|
/* First get the resources */
|
||||||
for (int i = 0; i < adapter->msi; i++) {
|
for (i = 0; i < adapter->msi; i++) {
|
||||||
adapter->res[i] = bus_alloc_resource_any(dev,
|
adapter->res[i] = bus_alloc_resource_any(dev,
|
||||||
SYS_RES_IRQ, &adapter->rid[i], RF_ACTIVE);
|
SYS_RES_IRQ, &adapter->rid[i], RF_ACTIVE);
|
||||||
if (adapter->res[i] == NULL) {
|
if (adapter->res[i] == NULL) {
|
||||||
|
@ -2928,6 +2928,7 @@ static void
|
||||||
em_free_pci_resources(struct adapter *adapter)
|
em_free_pci_resources(struct adapter *adapter)
|
||||||
{
|
{
|
||||||
device_t dev = adapter->dev;
|
device_t dev = adapter->dev;
|
||||||
|
int i;
|
||||||
|
|
||||||
/* Make sure the for loop below runs once */
|
/* Make sure the for loop below runs once */
|
||||||
if (adapter->msi == 0)
|
if (adapter->msi == 0)
|
||||||
|
@ -2939,7 +2940,7 @@ em_free_pci_resources(struct adapter *adapter)
|
||||||
* in an array we can do the same logic
|
* in an array we can do the same logic
|
||||||
* whether its MSIX or just legacy.
|
* whether its MSIX or just legacy.
|
||||||
*/
|
*/
|
||||||
for (int i = 0; i < adapter->msi; i++) {
|
for (i = 0; i < adapter->msi; i++) {
|
||||||
if (adapter->tag[i] != NULL) {
|
if (adapter->tag[i] != NULL) {
|
||||||
bus_teardown_intr(dev, adapter->res[i],
|
bus_teardown_intr(dev, adapter->res[i],
|
||||||
adapter->tag[i]);
|
adapter->tag[i]);
|
||||||
|
@ -3357,7 +3358,7 @@ em_allocate_transmit_structures(struct adapter *adapter)
|
||||||
{
|
{
|
||||||
device_t dev = adapter->dev;
|
device_t dev = adapter->dev;
|
||||||
struct em_buffer *tx_buffer;
|
struct em_buffer *tx_buffer;
|
||||||
int error;
|
int error, i;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create DMA tags for tx descriptors
|
* Create DMA tags for tx descriptors
|
||||||
|
@ -3391,7 +3392,7 @@ em_allocate_transmit_structures(struct adapter *adapter)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Create the descriptor buffer dma maps */
|
/* Create the descriptor buffer dma maps */
|
||||||
for (int i = 0; i < adapter->num_tx_desc; i++) {
|
for (i = 0; i < adapter->num_tx_desc; i++) {
|
||||||
tx_buffer = &adapter->tx_buffer_area[i];
|
tx_buffer = &adapter->tx_buffer_area[i];
|
||||||
error = bus_dmamap_create(adapter->txtag, 0, &tx_buffer->map);
|
error = bus_dmamap_create(adapter->txtag, 0, &tx_buffer->map);
|
||||||
if (error != 0) {
|
if (error != 0) {
|
||||||
|
@ -3416,13 +3417,14 @@ static void
|
||||||
em_setup_transmit_structures(struct adapter *adapter)
|
em_setup_transmit_structures(struct adapter *adapter)
|
||||||
{
|
{
|
||||||
struct em_buffer *tx_buffer;
|
struct em_buffer *tx_buffer;
|
||||||
|
int i;
|
||||||
|
|
||||||
/* Clear the old ring contents */
|
/* Clear the old ring contents */
|
||||||
bzero(adapter->tx_desc_base,
|
bzero(adapter->tx_desc_base,
|
||||||
(sizeof(struct e1000_tx_desc)) * adapter->num_tx_desc);
|
(sizeof(struct e1000_tx_desc)) * adapter->num_tx_desc);
|
||||||
|
|
||||||
/* Free any existing TX buffers */
|
/* Free any existing TX buffers */
|
||||||
for (int i = 0; i < adapter->num_tx_desc; i++, tx_buffer++) {
|
for (i = 0; i < adapter->num_tx_desc; i++, tx_buffer++) {
|
||||||
tx_buffer = &adapter->tx_buffer_area[i];
|
tx_buffer = &adapter->tx_buffer_area[i];
|
||||||
bus_dmamap_sync(adapter->txtag, tx_buffer->map,
|
bus_dmamap_sync(adapter->txtag, tx_buffer->map,
|
||||||
BUS_DMASYNC_POSTWRITE);
|
BUS_DMASYNC_POSTWRITE);
|
||||||
|
@ -3542,11 +3544,12 @@ static void
|
||||||
em_free_transmit_structures(struct adapter *adapter)
|
em_free_transmit_structures(struct adapter *adapter)
|
||||||
{
|
{
|
||||||
struct em_buffer *tx_buffer;
|
struct em_buffer *tx_buffer;
|
||||||
|
int i;
|
||||||
|
|
||||||
INIT_DEBUGOUT("free_transmit_structures: begin");
|
INIT_DEBUGOUT("free_transmit_structures: begin");
|
||||||
|
|
||||||
if (adapter->tx_buffer_area != NULL) {
|
if (adapter->tx_buffer_area != NULL) {
|
||||||
for (int i = 0; i < adapter->num_tx_desc; i++) {
|
for (i = 0; i < adapter->num_tx_desc; i++) {
|
||||||
tx_buffer = &adapter->tx_buffer_area[i];
|
tx_buffer = &adapter->tx_buffer_area[i];
|
||||||
if (tx_buffer->m_head != NULL) {
|
if (tx_buffer->m_head != NULL) {
|
||||||
bus_dmamap_sync(adapter->txtag, tx_buffer->map,
|
bus_dmamap_sync(adapter->txtag, tx_buffer->map,
|
||||||
|
@ -4199,6 +4202,7 @@ em_initialize_receive_unit(struct adapter *adapter)
|
||||||
struct ifnet *ifp = adapter->ifp;
|
struct ifnet *ifp = adapter->ifp;
|
||||||
u64 bus_addr;
|
u64 bus_addr;
|
||||||
u32 rctl, rxcsum;
|
u32 rctl, rxcsum;
|
||||||
|
int i;
|
||||||
|
|
||||||
INIT_DEBUGOUT("em_initialize_receive_unit: begin");
|
INIT_DEBUGOUT("em_initialize_receive_unit: begin");
|
||||||
|
|
||||||
|
@ -4224,7 +4228,7 @@ em_initialize_receive_unit(struct adapter *adapter)
|
||||||
** using the EITR register (82574 only)
|
** using the EITR register (82574 only)
|
||||||
*/
|
*/
|
||||||
if (adapter->msix)
|
if (adapter->msix)
|
||||||
for (int i = 0; i < 4; i++)
|
for (i = 0; i < 4; i++)
|
||||||
E1000_WRITE_REG(&adapter->hw,
|
E1000_WRITE_REG(&adapter->hw,
|
||||||
E1000_EITR_82574(i), DEFAULT_ITR);
|
E1000_EITR_82574(i), DEFAULT_ITR);
|
||||||
|
|
||||||
|
@ -4375,7 +4379,7 @@ em_free_receive_structures(struct adapter *adapter)
|
||||||
static int
|
static int
|
||||||
em_rxeof(struct adapter *adapter, int count)
|
em_rxeof(struct adapter *adapter, int count)
|
||||||
{
|
{
|
||||||
struct ifnet *ifp = adapter->ifp;;
|
struct ifnet *ifp = adapter->ifp;
|
||||||
struct mbuf *mp;
|
struct mbuf *mp;
|
||||||
u8 status, accept_frame = 0, eop = 0;
|
u8 status, accept_frame = 0, eop = 0;
|
||||||
u16 len, desc_len, prev_len_adj;
|
u16 len, desc_len, prev_len_adj;
|
||||||
|
|
|
@ -15,6 +15,7 @@ KernelStaticLibrary libfreebsd_network.a :
|
||||||
compat.c
|
compat.c
|
||||||
device.c
|
device.c
|
||||||
driver.c
|
driver.c
|
||||||
|
eventhandler.c
|
||||||
fbsd_busdma_x86.c
|
fbsd_busdma_x86.c
|
||||||
fbsd_ether.c
|
fbsd_ether.c
|
||||||
fbsd_if_media.c
|
fbsd_if_media.c
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
#define IFCAP_POLLING 0x0040 /* driver supports polling */
|
#define IFCAP_POLLING 0x0040 /* driver supports polling */
|
||||||
#define IFCAP_VLAN_HWCSUM 0x0080
|
#define IFCAP_VLAN_HWCSUM 0x0080
|
||||||
#define IFCAP_TSO4 0x0100 /* supports TCP segmentation offload */
|
#define IFCAP_TSO4 0x0100 /* supports TCP segmentation offload */
|
||||||
|
#define IFCAP_VLAN_HWFILTER 0x10000 /* interface hw can filter vlan tag */
|
||||||
|
|
||||||
#define IFCAP_HWCSUM (IFCAP_RXCSUM | IFCAP_TXCSUM)
|
#define IFCAP_HWCSUM (IFCAP_RXCSUM | IFCAP_TXCSUM)
|
||||||
|
|
||||||
|
|
|
@ -137,7 +137,7 @@ struct ifnet {
|
||||||
struct bpf_if *if_bpf; /* packet filter structure */
|
struct bpf_if *if_bpf; /* packet filter structure */
|
||||||
u_short if_index; /* numeric abbreviation for this if */
|
u_short if_index; /* numeric abbreviation for this if */
|
||||||
short if_timer; /* time 'til if_watchdog called */
|
short if_timer; /* time 'til if_watchdog called */
|
||||||
u_short if_nvlans; /* number of active vlans */
|
struct ifvlantrunk *if_vlantrunk; /* pointer to 802.1q data */
|
||||||
int if_flags; /* up/down, broadcast, etc. */
|
int if_flags; /* up/down, broadcast, etc. */
|
||||||
int if_capabilities; /* interface capabilities */
|
int if_capabilities; /* interface capabilities */
|
||||||
int if_capenable; /* enabled features */
|
int if_capenable; /* enabled features */
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2009, Haiku, Inc. All Rights Reserved.
|
||||||
|
* Distributed under the terms of the MIT License.
|
||||||
|
*
|
||||||
|
* Authors:
|
||||||
|
* Michael Weirauch, dev@m-phasis.de
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <compat/sys/types.h>
|
||||||
|
|
||||||
|
#include <compat/sys/eventhandler.h>
|
||||||
|
|
||||||
|
eventhandler_tag
|
||||||
|
eventhandler_register(struct eventhandler_list *list,
|
||||||
|
const char *name, void *func, void *arg, int priority)
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
eventhandler_deregister(struct eventhandler_list *list,
|
||||||
|
eventhandler_tag tag)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
struct eventhandler_list *
|
||||||
|
eventhandler_find_list(const char *name)
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
eventhandler_prune_list(struct eventhandler_list *list)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
};
|
Loading…
Reference in New Issue