ipro1000: Haiku changes to have it compiled again.

* a lot of gcc2 specific changes...
This commit is contained in:
Jerome Duval
2013-01-08 22:45:31 +01:00
parent 648db7333e
commit d997b26243
6 changed files with 107 additions and 41 deletions
@@ -18,6 +18,7 @@ KernelAddon ipro1000 :
e1000_82571.c
e1000_82575.c
e1000_api.c
e1000_i210.c
e1000_ich8lan.c
e1000_mac.c
e1000_manage.c
@@ -40,9 +40,11 @@
#include <sys/param.h>
#include <sys/systm.h>
#ifndef __HAIKU__
#if __FreeBSD_version >= 800000
#include <sys/buf_ring.h>
#endif
#endif
#include <sys/bus.h>
#include <sys/endian.h>
#include <sys/kernel.h>
@@ -78,7 +80,9 @@
#include <netinet/udp.h>
#include <machine/in_cksum.h>
#ifndef __HAIKU__
#include <dev/led/led.h>
#endif
#include <dev/pci/pcivar.h>
#include <dev/pci/pcireg.h>
@@ -472,10 +476,12 @@ em_attach(device_t dev)
INIT_DEBUGOUT("em_attach: begin");
#ifndef __HAIKU__
if (resource_disabled("em", device_get_unit(dev))) {
device_printf(dev, "Disabled by device hint\n");
return (ENXIO);
}
#endif
adapter = device_get_softc(dev);
adapter->dev = adapter->osdep.dev = dev;
@@ -724,8 +730,10 @@ em_attach(device_t dev)
adapter->ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
adapter->ifp->if_drv_flags |= IFF_DRV_OACTIVE;
#ifndef __HAIKU__
adapter->led_dev = led_create(em_led_func, adapter,
device_get_nameunit(dev));
#endif
#ifdef DEV_NETMAP
em_netmap_attach(adapter);
#endif /* DEV_NETMAP */
@@ -776,9 +784,10 @@ em_detach(device_t dev)
if (ifp->if_capenable & IFCAP_POLLING)
ether_poll_deregister(ifp);
#endif
#ifndef __HAIKU__
if (adapter->led_dev != NULL)
led_destroy(adapter->led_dev);
#endif
EM_CORE_LOCK(adapter);
adapter->in_detach = 1;
@@ -863,7 +872,8 @@ em_resume(device_t dev)
if ((ifp->if_flags & IFF_UP) &&
(ifp->if_drv_flags & IFF_DRV_RUNNING) && adapter->link_active) {
for (int i = 0; i < adapter->num_queues; i++, txr++) {
int i;
for (i = 0; i < adapter->num_queues; i++, txr++) {
EM_TX_LOCK(txr);
#ifdef EM_MULTIQUEUE
if (!drbr_empty(ifp, txr->br))
@@ -967,11 +977,12 @@ em_mq_start(struct ifnet *ifp, struct mbuf *m)
static void
em_qflush(struct ifnet *ifp)
{
int i;
struct adapter *adapter = ifp->if_softc;
struct tx_ring *txr = adapter->tx_rings;
struct mbuf *m;
for (int i = 0; i < adapter->num_queues; i++, txr++) {
for (i = 0; i < adapter->num_queues; i++, txr++) {
EM_TX_LOCK(txr);
while ((m = buf_ring_dequeue_sc(txr->br)) != NULL)
m_freem(m);
@@ -1654,7 +1665,8 @@ em_handle_link(void *context, int pending)
E1000_WRITE_REG(&adapter->hw, E1000_IMS,
EM_MSIX_LINK | E1000_IMS_LSC);
if (adapter->link_active) {
for (int i = 0; i < adapter->num_queues; i++, txr++) {
int i;
for (i = 0; i < adapter->num_queues; i++, txr++) {
EM_TX_LOCK(txr);
#ifdef EM_MULTIQUEUE
if (!drbr_empty(ifp, txr->br))
@@ -2214,6 +2226,7 @@ em_set_multi(struct adapter *adapter)
static void
em_local_timer(void *arg)
{
int i;
struct adapter *adapter = arg;
struct ifnet *ifp = adapter->ifp;
struct tx_ring *txr = adapter->tx_rings;
@@ -2241,7 +2254,7 @@ em_local_timer(void *arg)
** can be done without the lock because its RO
** and the HUNG state will be static if set.
*/
for (int i = 0; i < adapter->num_queues; i++, txr++) {
for (i = 0; i < adapter->num_queues; i++, txr++) {
if ((txr->queue_status == EM_QUEUE_HUNG) &&
(adapter->pause_frames == 0))
goto hung;
@@ -2332,13 +2345,14 @@ em_update_link_status(struct adapter *adapter)
ifp->if_baudrate = adapter->link_speed * 1000000;
if_link_state_change(ifp, LINK_STATE_UP);
} else if (!link_check && (adapter->link_active == 1)) {
int i;
ifp->if_baudrate = adapter->link_speed = 0;
adapter->link_duplex = 0;
if (bootverbose)
device_printf(dev, "Link is Down\n");
adapter->link_active = 0;
/* Link down, disable watchdog */
for (int i = 0; i < adapter->num_queues; i++, txr++)
for (i = 0; i < adapter->num_queues; i++, txr++)
txr->queue_status = EM_QUEUE_IDLE;
if_link_state_change(ifp, LINK_STATE_DOWN);
}
@@ -2356,6 +2370,7 @@ em_update_link_status(struct adapter *adapter)
static void
em_stop(void *arg)
{
int i;
struct adapter *adapter = arg;
struct ifnet *ifp = adapter->ifp;
struct tx_ring *txr = adapter->tx_rings;
@@ -2372,7 +2387,7 @@ em_stop(void *arg)
ifp->if_drv_flags |= IFF_DRV_OACTIVE;
/* Unarm watchdog timer. */
for (int i = 0; i < adapter->num_queues; i++, txr++) {
for (i = 0; i < adapter->num_queues; i++, txr++) {
EM_TX_LOCK(txr);
txr->queue_status = EM_QUEUE_IDLE;
EM_TX_UNLOCK(txr);
@@ -2521,6 +2536,7 @@ em_allocate_legacy(struct adapter *adapter)
int
em_allocate_msix(struct adapter *adapter)
{
int i;
device_t dev = adapter->dev;
struct tx_ring *txr = adapter->tx_rings;
struct rx_ring *rxr = adapter->rx_rings;
@@ -2531,7 +2547,7 @@ em_allocate_msix(struct adapter *adapter)
E1000_WRITE_REG(&adapter->hw, E1000_IMC, 0xffffffff);
/* First set up ring resources */
for (int i = 0; i < adapter->num_queues; i++, txr++, rxr++) {
for (i = 0; i < adapter->num_queues; i++, txr++, rxr++) {
/* RX ring */
rid = vector + 1;
@@ -2635,6 +2651,7 @@ em_allocate_msix(struct adapter *adapter)
static void
em_free_pci_resources(struct adapter *adapter)
{
int i;
device_t dev = adapter->dev;
struct tx_ring *txr;
struct rx_ring *rxr;
@@ -2644,7 +2661,7 @@ em_free_pci_resources(struct adapter *adapter)
/*
** Release all the queue interrupt resources:
*/
for (int i = 0; i < adapter->num_queues; i++) {
for (i = 0; i < adapter->num_queues; i++) {
txr = &adapter->tx_rings[i];
rxr = &adapter->rx_rings[i];
/* an early abort? */
@@ -3115,6 +3132,7 @@ em_dma_free(struct adapter *adapter, struct em_dma_alloc *dma)
static int
em_allocate_queues(struct adapter *adapter)
{
int i;
device_t dev = adapter->dev;
struct tx_ring *txr = NULL;
struct rx_ring *rxr = NULL;
@@ -3147,7 +3165,7 @@ em_allocate_queues(struct adapter *adapter)
* possibility that things fail midcourse and we need to
* undo memory gracefully
*/
for (int i = 0; i < adapter->num_queues; i++, txconf++) {
for (i = 0; i < adapter->num_queues; i++, txconf++) {
/* Set up some basics */
txr = &adapter->tx_rings[i];
txr->adapter = adapter;
@@ -3174,10 +3192,12 @@ em_allocate_queues(struct adapter *adapter)
error = ENOMEM;
goto err_tx_desc;
}
#ifndef __HAIKU__
#if __FreeBSD_version >= 800000
/* Allocate a buf ring */
txr->br = buf_ring_alloc(4096, M_DEVBUF,
M_WAITOK, &txr->tx_mtx);
#endif
#endif
}
@@ -3186,7 +3206,7 @@ em_allocate_queues(struct adapter *adapter)
*/
rsize = roundup2(adapter->num_rx_desc *
sizeof(struct e1000_rx_desc), EM_DBA_ALIGN);
for (int i = 0; i < adapter->num_queues; i++, rxconf++) {
for (i = 0; i < adapter->num_queues; i++, rxconf++) {
rxr = &adapter->rx_rings[i];
rxr->adapter = adapter;
rxr->me = i;
@@ -3225,8 +3245,10 @@ err_tx_desc:
em_dma_free(adapter, &txr->txdma);
free(adapter->rx_rings, M_DEVBUF);
rx_fail:
#ifndef __HAIKU__
#if __FreeBSD_version >= 800000
buf_ring_free(txr->br, M_DEVBUF);
#endif
#endif
free(adapter->tx_rings, M_DEVBUF);
fail:
@@ -3372,9 +3394,10 @@ em_setup_transmit_ring(struct tx_ring *txr)
static void
em_setup_transmit_structures(struct adapter *adapter)
{
int i;
struct tx_ring *txr = adapter->tx_rings;
for (int i = 0; i < adapter->num_queues; i++, txr++)
for (i = 0; i < adapter->num_queues; i++, txr++)
em_setup_transmit_ring(txr);
return;
@@ -3388,13 +3411,14 @@ em_setup_transmit_structures(struct adapter *adapter)
static void
em_initialize_transmit_unit(struct adapter *adapter)
{
int i;
struct tx_ring *txr = adapter->tx_rings;
struct e1000_hw *hw = &adapter->hw;
u32 tctl, tarc, tipg = 0;
INIT_DEBUGOUT("em_initialize_transmit_unit: begin");
for (int i = 0; i < adapter->num_queues; i++, txr++) {
for (i = 0; i < adapter->num_queues; i++, txr++) {
u64 bus_addr = txr->txdma.dma_paddr;
/* Base and Len of TX Ring */
E1000_WRITE_REG(hw, E1000_TDLEN(i),
@@ -3480,9 +3504,10 @@ em_initialize_transmit_unit(struct adapter *adapter)
static void
em_free_transmit_structures(struct adapter *adapter)
{
int i;
struct tx_ring *txr = adapter->tx_rings;
for (int i = 0; i < adapter->num_queues; i++, txr++) {
for (i = 0; i < adapter->num_queues; i++, txr++) {
EM_TX_LOCK(txr);
em_free_transmit_buffers(txr);
em_dma_free(adapter, &txr->txdma);
@@ -3501,6 +3526,7 @@ em_free_transmit_structures(struct adapter *adapter)
static void
em_free_transmit_buffers(struct tx_ring *txr)
{
int i;
struct adapter *adapter = txr->adapter;
struct em_buffer *txbuf;
@@ -3509,7 +3535,7 @@ em_free_transmit_buffers(struct tx_ring *txr)
if (txr->tx_buffers == NULL)
return;
for (int i = 0; i < adapter->num_tx_desc; i++) {
for (i = 0; i < adapter->num_tx_desc; i++) {
txbuf = &txr->tx_buffers[i];
if (txbuf->m_head != NULL) {
bus_dmamap_sync(txr->txtag, txbuf->map,
@@ -3531,9 +3557,11 @@ em_free_transmit_buffers(struct tx_ring *txr)
txbuf->map = NULL;
}
}
#ifndef __HAIKU__
#if __FreeBSD_version >= 800000
if (txr->br != NULL)
buf_ring_free(txr->br, M_DEVBUF);
#endif
#endif
if (txr->tx_buffers != NULL) {
free(txr->tx_buffers, M_DEVBUF);
@@ -3989,6 +4017,7 @@ update:
static int
em_allocate_receive_buffers(struct rx_ring *rxr)
{
int i;
struct adapter *adapter = rxr->adapter;
device_t dev = adapter->dev;
struct em_buffer *rxbuf;
@@ -4020,7 +4049,7 @@ em_allocate_receive_buffers(struct rx_ring *rxr)
}
rxbuf = rxr->rx_buffers;
for (int i = 0; i < adapter->num_rx_desc; i++, rxbuf++) {
for (i = 0; i < adapter->num_rx_desc; i++, rxbuf++) {
rxbuf = &rxr->rx_buffers[i];
error = bus_dmamap_create(rxr->rxtag, BUS_DMA_NOWAIT,
&rxbuf->map);
@@ -4047,6 +4076,7 @@ fail:
static int
em_setup_receive_ring(struct rx_ring *rxr)
{
int i, j;
struct adapter *adapter = rxr->adapter;
struct em_buffer *rxbuf;
bus_dma_segment_t seg[1];
@@ -4069,7 +4099,7 @@ em_setup_receive_ring(struct rx_ring *rxr)
/*
** Free current RX buffer structs and their mbufs
*/
for (int i = 0; i < adapter->num_rx_desc; i++) {
for (i = 0; i < adapter->num_rx_desc; i++) {
rxbuf = &rxr->rx_buffers[i];
if (rxbuf->m_head != NULL) {
bus_dmamap_sync(rxr->rxtag, rxbuf->map,
@@ -4081,7 +4111,7 @@ em_setup_receive_ring(struct rx_ring *rxr)
}
/* Now replenish the mbufs */
for (int j = 0; j != adapter->num_rx_desc; ++j) {
for (j = 0; j != adapter->num_rx_desc; ++j) {
rxbuf = &rxr->rx_buffers[j];
#ifdef DEV_NETMAP
if (slot) {
@@ -4139,6 +4169,7 @@ fail:
static int
em_setup_receive_structures(struct adapter *adapter)
{
int i, n;
struct rx_ring *rxr = adapter->rx_rings;
int q;
@@ -4153,9 +4184,9 @@ fail:
* the rings that completed, the failing case will have
* cleaned up for itself. 'q' failed, so its the terminus.
*/
for (int i = 0; i < q; ++i) {
for (i = 0; i < q; ++i) {
rxr = &adapter->rx_rings[i];
for (int n = 0; n < adapter->num_rx_desc; n++) {
for (n = 0; n < adapter->num_rx_desc; n++) {
struct em_buffer *rxbuf;
rxbuf = &rxr->rx_buffers[n];
if (rxbuf->m_head != NULL) {
@@ -4181,9 +4212,10 @@ fail:
static void
em_free_receive_structures(struct adapter *adapter)
{
int i;
struct rx_ring *rxr = adapter->rx_rings;
for (int i = 0; i < adapter->num_queues; i++, rxr++) {
for (i = 0; i < adapter->num_queues; i++, rxr++) {
em_free_receive_buffers(rxr);
/* Free the ring memory as well */
em_dma_free(adapter, &rxr->rxdma);
@@ -4208,7 +4240,8 @@ em_free_receive_buffers(struct rx_ring *rxr)
INIT_DEBUGOUT("free_receive_buffers: begin");
if (rxr->rx_buffers != NULL) {
for (int i = 0; i < adapter->num_rx_desc; i++) {
int i;
for (i = 0; i < adapter->num_rx_desc; i++) {
rxbuf = &rxr->rx_buffers[i];
if (rxbuf->map != NULL) {
bus_dmamap_sync(rxr->rxtag, rxbuf->map,
@@ -4247,6 +4280,7 @@ em_free_receive_buffers(struct rx_ring *rxr)
static void
em_initialize_receive_unit(struct adapter *adapter)
{
int i;
struct rx_ring *rxr = adapter->rx_rings;
struct ifnet *ifp = adapter->ifp;
struct e1000_hw *hw = &adapter->hw;
@@ -4277,7 +4311,8 @@ em_initialize_receive_unit(struct adapter *adapter)
** using the EITR register (82574 only)
*/
if (hw->mac.type == e1000_82574) {
for (int i = 0; i < 4; i++)
int i;
for (i = 0; i < 4; i++)
E1000_WRITE_REG(hw, E1000_EITR_82574(i),
DEFAULT_ITR);
/* Disable accelerated acknowledge */
@@ -4300,7 +4335,7 @@ em_initialize_receive_unit(struct adapter *adapter)
if (hw->mac.type == e1000_82573)
E1000_WRITE_REG(hw, E1000_RDTR, 0x20);
for (int i = 0; i < adapter->num_queues; i++, rxr++) {
for (i = 0; i < adapter->num_queues; i++, rxr++) {
/* Setup the Base and Length of the Rx Descriptor Ring */
bus_addr = rxr->rxdma.dma_paddr;
E1000_WRITE_REG(hw, E1000_RDLEN(i),
@@ -4691,6 +4726,7 @@ em_unregister_vlan(void *arg, struct ifnet *ifp, u16 vtag)
static void
em_setup_vlan_hw_support(struct adapter *adapter)
{
int i;
struct e1000_hw *hw = &adapter->hw;
u32 reg;
@@ -4707,7 +4743,7 @@ em_setup_vlan_hw_support(struct adapter *adapter)
** A soft reset zero's out the VFTA, so
** we need to repopulate it now.
*/
for (int i = 0; i < EM_VFTA_SIZE; i++)
for (i = 0; i < EM_VFTA_SIZE; i++)
if (adapter->shadow_vfta[i] != 0)
E1000_WRITE_REG_ARRAY(hw, E1000_VFTA,
i, adapter->shadow_vfta[i]);
@@ -5008,6 +5044,7 @@ em_enable_wakeup(device_t dev)
static int
em_enable_phy_wakeup(struct adapter *adapter)
{
int i;
struct e1000_hw *hw = &adapter->hw;
u32 mreg, ret = 0;
u16 preg;
@@ -5016,7 +5053,7 @@ em_enable_phy_wakeup(struct adapter *adapter)
e1000_copy_rx_addrs_to_phy_ich8lan(hw);
/* copy MAC MTA to PHY MTA */
for (int i = 0; i < adapter->hw.mac.mta_reg_count; i++) {
for (i = 0; i < adapter->hw.mac.mta_reg_count; i++) {
mreg = E1000_READ_REG_ARRAY(hw, E1000_MTA, i);
e1000_write_phy_reg(hw, BM_MTA(i), (u16)(mreg & 0xFFFF));
e1000_write_phy_reg(hw, BM_MTA(i) + 1,
@@ -5244,8 +5281,10 @@ em_sysctl_reg_handler(SYSCTL_HANDLER_ARGS)
struct adapter *adapter;
u_int val;
#ifndef __HAIKU__
adapter = oidp->oid_arg1;
val = E1000_READ_REG(&adapter->hw, oidp->oid_arg2);
#endif
return (sysctl_handle_int(oidp, &val, 0, req));
}
@@ -5255,6 +5294,7 @@ em_sysctl_reg_handler(SYSCTL_HANDLER_ARGS)
static void
em_add_hw_stats(struct adapter *adapter)
{
int i;
device_t dev = adapter->dev;
struct tx_ring *txr = adapter->tx_rings;
@@ -5309,7 +5349,7 @@ em_add_hw_stats(struct adapter *adapter)
CTLFLAG_RD, &adapter->hw.fc.low_water, 0,
"Flow Control Low Watermark");
for (int i = 0; i < adapter->num_queues; i++, rxr++, txr++) {
for (i = 0; i < adapter->num_queues; i++, rxr++, txr++) {
snprintf(namebuf, QUEUE_NAME_LEN, "queue%d", i);
queue_node = SYSCTL_ADD_NODE(ctx, child, OID_AUTO, namebuf,
CTLFLAG_RD, NULL, "Queue Name");
@@ -213,9 +213,11 @@
#define EM_MSIX_BAR 3 /* On 82575 */
/* More backward compatibility */
#ifndef __HAIKU__
#if __FreeBSD_version < 900000
#define SYSCTL_ADD_UQUAD SYSCTL_ADD_QUAD
#endif
#endif
/* Defines for printing debug information */
#define DEBUG_INIT 0
@@ -75,7 +75,9 @@
#include <netinet/udp.h>
#include <machine/in_cksum.h>
#ifndef __HAIKU__
#include <dev/led/led.h>
#endif
#include <dev/pci/pcivar.h>
#include <dev/pci/pcireg.h>
@@ -268,12 +270,21 @@ static device_method_t lem_methods[] = {
{0, 0}
};
#ifndef __HAIKU__
static driver_t lem_driver = {
"em", lem_methods, sizeof(struct adapter),
};
extern devclass_t em_devclass;
DRIVER_MODULE(lem, pci, lem_driver, em_devclass, 0, 0);
#else
static driver_t lem_driver = {
"lem", lem_methods, sizeof(struct adapter),
};
devclass_t lem_devclass;
DRIVER_MODULE(lem, pci, lem_driver, lem_devclass, 0, 0);
#endif
MODULE_DEPEND(lem, pci, 1, 1, 1);
MODULE_DEPEND(lem, ether, 1, 1, 1);
@@ -391,10 +402,12 @@ lem_attach(device_t dev)
INIT_DEBUGOUT("lem_attach: begin");
#ifndef __HAIKU__
if (resource_disabled("lem", device_get_unit(dev))) {
device_printf(dev, "Disabled by device hint\n");
return (ENXIO);
}
#endif
adapter = device_get_softc(dev);
adapter->dev = adapter->osdep.dev = dev;
@@ -653,8 +666,10 @@ lem_attach(device_t dev)
/* Tell the stack that the interface is not active */
adapter->ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE);
#ifndef __HAIKU__
adapter->led_dev = led_create(lem_led_func, adapter,
device_get_nameunit(dev));
#endif
#ifdef DEV_NETMAP
lem_netmap_attach(adapter);
@@ -713,8 +728,10 @@ lem_detach(device_t dev)
ether_poll_deregister(ifp);
#endif
#ifndef __HAIKU__
if (adapter->led_dev != NULL)
led_destroy(adapter->led_dev);
#endif
EM_CORE_LOCK(adapter);
EM_TX_LOCK(adapter);
@@ -2591,6 +2608,7 @@ lem_dma_free(struct adapter *adapter, struct em_dma_alloc *dma)
static int
lem_allocate_transmit_structures(struct adapter *adapter)
{
int i;
device_t dev = adapter->dev;
struct em_buffer *tx_buffer;
int error;
@@ -2623,7 +2641,7 @@ lem_allocate_transmit_structures(struct adapter *adapter)
}
/* 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];
error = bus_dmamap_create(adapter->txtag, 0, &tx_buffer->map);
if (error != 0) {
@@ -2647,6 +2665,7 @@ fail:
static void
lem_setup_transmit_structures(struct adapter *adapter)
{
int i;
struct em_buffer *tx_buffer;
#ifdef DEV_NETMAP
/* we are already locked */
@@ -2659,7 +2678,7 @@ lem_setup_transmit_structures(struct adapter *adapter)
(sizeof(struct e1000_tx_desc)) * adapter->num_tx_desc);
/* 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];
bus_dmamap_sync(adapter->txtag, tx_buffer->map,
BUS_DMASYNC_POSTWRITE);
@@ -2775,7 +2794,8 @@ lem_free_transmit_structures(struct adapter *adapter)
INIT_DEBUGOUT("free_transmit_structures: begin");
if (adapter->tx_buffer_area != NULL) {
for (int i = 0; i < adapter->num_tx_desc; i++) {
int i;
for (i = 0; i < adapter->num_tx_desc; i++) {
tx_buffer = &adapter->tx_buffer_area[i];
if (tx_buffer->m_head != NULL) {
bus_dmamap_sync(adapter->txtag, tx_buffer->map,
@@ -2802,10 +2822,12 @@ lem_free_transmit_structures(struct adapter *adapter)
bus_dma_tag_destroy(adapter->txtag);
adapter->txtag = NULL;
}
#ifndef __HAIKU__
#if __FreeBSD_version >= 800000
if (adapter->br != NULL)
buf_ring_free(adapter->br, M_DEVBUF);
#endif
#endif
}
/*********************************************************************
@@ -3278,6 +3300,7 @@ lem_setup_receive_structures(struct adapter *adapter)
static void
lem_initialize_receive_unit(struct adapter *adapter)
{
int i;
struct ifnet *ifp = adapter->ifp;
u64 bus_addr;
u32 rctl, rxcsum;
@@ -3306,7 +3329,7 @@ lem_initialize_receive_unit(struct adapter *adapter)
** using the EITR register (82574 only)
*/
if (adapter->msix)
for (int i = 0; i < 4; i++)
for (i = 0; i < 4; i++)
E1000_WRITE_REG(&adapter->hw,
E1000_EITR_82574(i), DEFAULT_ITR);
@@ -3460,7 +3483,7 @@ lem_free_receive_structures(struct adapter *adapter)
static bool
lem_rxeof(struct adapter *adapter, int count, int *done)
{
struct ifnet *ifp = adapter->ifp;;
struct ifnet *ifp = adapter->ifp;
struct mbuf *mp;
u8 status = 0, accept_frame = 0, eop = 0;
u16 len, desc_len, prev_len_adj;
@@ -3792,6 +3815,7 @@ lem_unregister_vlan(void *arg, struct ifnet *ifp, u16 vtag)
static void
lem_setup_vlan_hw_support(struct adapter *adapter)
{
int i;
struct e1000_hw *hw = &adapter->hw;
u32 reg;
@@ -3808,7 +3832,7 @@ lem_setup_vlan_hw_support(struct adapter *adapter)
** A soft reset zero's out the VFTA, so
** we need to repopulate it now.
*/
for (int i = 0; i < EM_VFTA_SIZE; i++)
for (i = 0; i < EM_VFTA_SIZE; i++)
if (adapter->shadow_vfta[i] != 0)
E1000_WRITE_REG_ARRAY(hw, E1000_VFTA,
i, adapter->shadow_vfta[i]);
@@ -4073,12 +4097,13 @@ lem_enable_wakeup(device_t dev)
static int
lem_enable_phy_wakeup(struct adapter *adapter)
{
int i;
struct e1000_hw *hw = &adapter->hw;
u32 mreg, ret = 0;
u16 preg;
/* copy MAC RARs to PHY RARs */
for (int i = 0; i < adapter->hw.mac.rar_entry_count; i++) {
for (i = 0; i < adapter->hw.mac.rar_entry_count; i++) {
mreg = E1000_READ_REG(hw, E1000_RAL(i));
e1000_write_phy_reg(hw, BM_RAR_L(i), (u16)(mreg & 0xFFFF));
e1000_write_phy_reg(hw, BM_RAR_M(i),
@@ -4090,7 +4115,7 @@ lem_enable_phy_wakeup(struct adapter *adapter)
}
/* copy MAC MTA to PHY MTA */
for (int i = 0; i < adapter->hw.mac.mta_reg_count; i++) {
for (i = 0; i < adapter->hw.mac.mta_reg_count; i++) {
mreg = E1000_READ_REG_ARRAY(hw, E1000_MTA, i);
e1000_write_phy_reg(hw, BM_MTA(i), (u16)(mreg & 0xFFFF));
e1000_write_phy_reg(hw, BM_MTA(i) + 1,
@@ -4325,8 +4350,10 @@ lem_sysctl_reg_handler(SYSCTL_HANDLER_ARGS)
struct adapter *adapter;
u_int val;
#ifndef __HAIKU__
adapter = oidp->oid_arg1;
val = E1000_READ_REG(&adapter->hw, oidp->oid_arg2);
#endif
return (sysctl_handle_int(oidp, &val, 0, req));
}
@@ -217,9 +217,11 @@
#define EM_BAR_MEM_TYPE_64BIT 0x00000004
#define EM_MSIX_BAR 3 /* On 82575 */
#ifndef __HAIKU__
#if __FreeBSD_version < 900000
#define SYSCTL_ADD_UQUAD SYSCTL_ADD_QUAD
#endif
#endif
/* Defines for printing debug information */
#define DEBUG_INIT 0
@@ -122,12 +122,6 @@ struct ifmedia
uint32 ifm_media;
};
struct ifmediareq
{
uint32 ifm_status;
uint32 ifm_active;
};
struct if_queue
{
volatile struct mbuf * ifq_head;