[haiku-commits] haiku: hrev43585 - src/add-ons/kernel/drivers/network/dp83815

  • From: stpere@xxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Sat, 31 Dec 2011 03:58:45 +0100 (CET)

hrev43585 adds 1 changeset to branch 'master'
old head: a42c52c07edccdba81f159c17b17775010bdba6e
new head: f8464b965da4bb447d84b0c2e386644437157718

----------------------------------------------------------------------------

f8464b9: dp83815 network driver: replace sprintf by snprintf, code style

                                [ Philippe Saint-Pierre <stpere@xxxxxxxxx> ]

----------------------------------------------------------------------------

Revision:    hrev43585
Commit:      f8464b965da4bb447d84b0c2e386644437157718
URL:         http://cgit.haiku-os.org/haiku/commit/?id=f8464b9
Author:      Philippe Saint-Pierre <stpere@xxxxxxxxx>
Date:        Sat Dec 31 02:57:00 2011 UTC

----------------------------------------------------------------------------

1 files changed, 192 insertions(+), 156 deletions(-)
.../kernel/drivers/network/dp83815/driver.c        |  348 +++++++++-------

----------------------------------------------------------------------------

diff --git a/src/add-ons/kernel/drivers/network/dp83815/driver.c 
b/src/add-ons/kernel/drivers/network/dp83815/driver.c
index 9e559c3..a09f76f 100644
--- a/src/add-ons/kernel/drivers/network/dp83815/driver.c
+++ b/src/add-ons/kernel/drivers/network/dp83815/driver.c
@@ -111,7 +111,7 @@ typedef struct dp83815_properties
 
 static pci_info *m_devices[MAX_CARDS];
 static pci_module_info *m_pcimodule = 0;       //To call methods of pci
-static char *dp83815_names[MAX_CARDS +1];
+static char *dp83815_names[MAX_CARDS + 1];
 static int32 m_openmask = 0;                                   //Is the thing 
already opened?
 static uint32 pages_needed(uint32 mem_size);
 static int32 dp83815_interrupt_hook(void *data);    /* interrupt handler */
@@ -120,8 +120,8 @@ static status_t allocate_resources(dp83815_properties_t 
*data);                /* alloc
 static void     free_resources(dp83815_properties_t *data);                /* 
deallocate semaphores & spinlocks */
 static status_t init_ring_buffers(dp83815_properties_t *data);             /* 
allocate and initialize frame buffer rings */
 static status_t domulti(dp83815_properties_t *data, uint8 *addr);              
   /* add multicast address to hardware filter list */
-static status_t free_hook( void *cookie );
-static status_t close_hook( void * );
+static status_t free_hook(void *cookie);
+static status_t close_hook(void *);
 
 #ifdef __INTEL__
        #define write8(  offset , value)        (m_pcimodule->write_io_8 
((data->reg_base + (offset)), (value) ) )
@@ -132,7 +132,8 @@ static status_t close_hook( void * );
        #define read16( offset )                        
(m_pcimodule->read_io_16((data->reg_base + offset)))
        #define read32( offset )                        
(m_pcimodule->read_io_32((data->reg_base + offset)))
 
-       static void dp83815_init_registers( dp83815_properties_t *data )
+       static void
+       dp83815_init_registers(dp83815_properties_t *data)
        {
                data->reg_base = data->pcii->u.h0.base_registers[0];
        }
@@ -146,21 +147,23 @@ static status_t close_hook( void * );
        #define read16( offset )                        
B_LENDIAN_TO_HOST_INT16(*((volatile uint16*)(data->reg_base + (offset))))
        #define read32( offset )                        
B_LENDIAN_TO_HOST_INT32(*((volatile uint32*)(data->reg_base + (offset))))
 
-       static void dp83815_init_registers( rtl8139_properties_t *data )
+       static void
+       dp83815_init_registers(rtl8139_properties_t *data)
        {
                int32 base, size, offset;
                base = data->pcii->u.h0.base_registers[0];
                size = data->pcii->u.h0.base_register_sizes[0];
 
                /* Round down to nearest page boundary */
-               base = base & ~(B_PAGE_SIZE-1);
+               base = base & ~(B_PAGE_SIZE - 1);
 
                /* Adjust the size */
                offset = data->pcii->u.h0.base_registers[0] - base;
                size += offset;
-               size = (size +(B_PAGE_SIZE-1)) & ~(B_PAGE_SIZE-1);
+               size = (size + (B_PAGE_SIZE - 1)) & ~(B_PAGE_SIZE - 1);
 
-               TRACE(( kDevName " _open_hook(): PCI base=%lx size=%lx 
offset=%lx\n", base, size, offset));
+               TRACE(( kDevName " _open_hook(): PCI base=%lx size=%lx 
offset=%lx\n",
+                       base, size, offset));
 
                data->ioarea = map_physical_memory(kDevName " Regs", base, size,
                        B_ANY_KERNEL_ADDRESS, B_READ_AREA | B_WRITE_AREA,
@@ -170,23 +173,28 @@ static status_t close_hook( void * );
        }
 #endif
 
-uint32 pages_needed(uint32 mem_size)
+
+uint32
+pages_needed(uint32 mem_size)
 {
-       uint32 pages = mem_size/B_PAGE_SIZE;
-       if( pages%B_PAGE_SIZE != 0 ) pages += 1;
+       uint32 pages = mem_size / B_PAGE_SIZE;
+       if (pages % B_PAGE_SIZE != 0)
+               pages += 1;
        return pages;
 }
 
+
 status_t
-init_hardware (void)
+init_hardware(void)
 {
        // Nielx: no special requirements here...
        TRACE(( kDevName ": init_hardware\n" ));
        return B_OK;
 }
 
+
 status_t
-init_driver (void)
+init_driver(void)
 {
        status_t status;                //Storage for statuses
        pci_info *item;                 //Storage used while looking through pci
@@ -194,46 +202,47 @@ init_driver (void)
 
        TRACE(( kDevName ": init_driver()\n" ));
 
-       // Try if the PCI module is loaded (it would be weird if it wouldn't, 
but alas)
-       if( ( status = get_module( B_PCI_MODULE_NAME, (module_info 
**)&m_pcimodule )) != B_OK)
-       {
-               TRACE(( kDevName " init_driver(): Get PCI module failed! %lu 
\n", status));
+       // Try if the PCI module is loaded (it would be weird if it wouldn't,
+       // but alas)
+       if ((status = get_module(B_PCI_MODULE_NAME, (module_info 
**)&m_pcimodule))
+               != B_OK) {
+               TRACE((kDevName " init_driver(): Get PCI module failed! %lu \n",
+                       status));
                return status;
        }
 
-       //
        i = 0;
        item = (pci_info *)malloc(sizeof(pci_info));
-       for ( i = found = 0 ; m_pcimodule->get_nth_pci_info(i, item) == B_OK ; 
i++ )
-       {
+       for (i = found = 0; m_pcimodule->get_nth_pci_info(i, item) == B_OK; 
i++) {
                supported_device_t *supported;
 
-               for (supported  = m_supported_devices; supported->name; 
supported++) {
-                       if ( (item->vendor_id == supported->vendor_id) &&
-                            (item->device_id == supported->device_id) )
-                       {
+               for (supported = m_supported_devices; supported->name; 
supported++) {
+                       if ((item->vendor_id == supported->vendor_id)
+                               && (item->device_id == supported->device_id)) {
                                //Also done in etherpci sample code
-                               if ((item->u.h0.interrupt_line == 0) || 
(item->u.h0.interrupt_line == 0xFF))
-                               {
-                                       TRACE(( kDevName " init_driver(): found 
%s with invalid IRQ - check IRQ assignement\n", supported->name));
+                               if ((item->u.h0.interrupt_line == 0)
+                                       || (item->u.h0.interrupt_line == 0xFF)) 
{
+                                       TRACE(( kDevName " init_driver(): found 
%s with invalid IRQ"
+                                               " - check IRQ assignement\n", 
supported->name));
                                        continue;
                                }
 
-                               TRACE(( kDevName " init_driver(): found %s at 
IRQ %u \n", supported->name, item->u.h0.interrupt_line));
+                               TRACE(( kDevName " init_driver(): found %s at 
IRQ %u \n",
+                                       supported->name, 
item->u.h0.interrupt_line));
                                m_devices[found] = item;
                                item = (pci_info *)malloc(sizeof(pci_info));
+                               
                                found++;
                        }
                }
        }
 
-       free( item );
+       free(item);
 
        //Check if we have found any devices:
-       if ( found == 0 )
-       {
+       if (found == 0) {
                TRACE(( kDevName " init_driver(): no device found\n" ));
-               put_module(B_PCI_MODULE_NAME ); //dereference module
+               put_module(B_PCI_MODULE_NAME); //dereference module
                return ENODEV;
        }
 
@@ -241,9 +250,8 @@ init_driver (void)
        {
                char name[32];
 
-               for (i = 0; i < found; i++)
-               {
-                       sprintf(name, "%s%ld", kDevDir, i);
+               for (i = 0; i < found; i++) {
+                       snprintf(name, 32, "%s%ld", kDevDir, i);
                        dp83815_names[i] = strdup(name);
                }
                dp83815_names[i] = NULL;
@@ -257,7 +265,7 @@ init_driver (void)
        is unloaded
 ----- */
 void
-uninit_driver (void)
+uninit_driver(void)
 {
        int index;
        void *item;
@@ -269,9 +277,10 @@ uninit_driver (void)
                free(m_devices[index]);
        }
 
-       put_module( B_PCI_MODULE_NAME );
+       put_module(B_PCI_MODULE_NAME);
 }
 
+
 static status_t
 open_hook(const char *name, uint32 flags, void** cookie)
 {
@@ -304,47 +313,49 @@ open_hook(const char *name, uint32 flags, void** cookie)
        }
 
        //Create a structure that contains the internals
-       if (!(*cookie = data = (dp83815_properties_t 
*)malloc(sizeof(dp83815_properties_t))))
-       {
+       if (!(*cookie = data =
+               (dp83815_properties_t *)malloc(sizeof(dp83815_properties_t)))) {
                TRACE(( kDevName " open_hook(): Out of memory\n" ));
                return B_NO_MEMORY;
        }
 
        //Set status to open:
-       m_openmask &= ~( 1L << temp8 );
+       m_openmask &= ~(1L << temp8);
 
        //Clear memory
-       memset( data , 0 , sizeof( dp83815_properties_t ) );
+       memset(data, 0, sizeof(dp83815_properties_t));
 
        //Set the ID
        data->device_id = temp8;
 
        // Create lock
-       data->lock = create_sem( 1 , kDevName " data protect" );
-       set_sem_owner( data->lock , B_SYSTEM_TEAM );
-       data->Rx.Sem = create_sem( 0 , kDevName " read wait" );
-       set_sem_owner( data->Rx.Sem , B_SYSTEM_TEAM );
-       data->Tx.Sem = create_sem( 1 , kDevName " write wait" );
-       set_sem_owner( data->Tx.Sem , B_SYSTEM_TEAM );
+       data->lock = create_sem(1, kDevName " data protect");
+       set_sem_owner(data->lock, B_SYSTEM_TEAM);
+       data->Rx.Sem = create_sem(0, kDevName " read wait");
+       set_sem_owner(data->Rx.Sem, B_SYSTEM_TEAM);
+       data->Tx.Sem = create_sem(1, kDevName " write wait");
+       set_sem_owner(data->Tx.Sem, B_SYSTEM_TEAM);
 
        //Set up the cookie
        data->pcii = m_devices[data->device_id];
 
        //Enable the registers
-       dp83815_init_registers( data );
+       dp83815_init_registers(data);
 
        /* enable pci address access */
-       cmd = m_pcimodule->read_pci_config(data->pcii->bus, data->pcii->device, 
data->pcii->function, PCI_command, 2);
+       cmd = m_pcimodule->read_pci_config(data->pcii->bus, data->pcii->device,
+               data->pcii->function, PCI_command, 2);
        cmd = cmd | PCI_command_io | PCI_command_master | PCI_command_memory;
-       m_pcimodule->write_pci_config(data->pcii->bus, data->pcii->device, 
data->pcii->function, PCI_command, 2, cmd );
+       m_pcimodule->write_pci_config(data->pcii->bus, data->pcii->device,
+               data->pcii->function, PCI_command, 2, cmd);
 
        if (allocate_resources(data) != B_OK)
                goto err1;
 
        /* We want interrupts! */
-       if ( install_io_interrupt_handler( data->pcii->u.h0.interrupt_line , 
dp83815_interrupt_hook , data , 0 ) != B_OK )
-       {
-               TRACE(( kDevName " open_hook(): Error installing interrupt 
handler\n" ));
+       if (install_io_interrupt_handler(data->pcii->u.h0.interrupt_line,
+               dp83815_interrupt_hook, data, 0) != B_OK) {
+               TRACE((kDevName " open_hook(): Error installing interrupt 
handler\n"));
                return B_ERROR;
        }
 
@@ -355,19 +366,19 @@ open_hook(const char *name, uint32 flags, void** cookie)
 
        write32(REG_CR, CR_RXR|CR_TXR);                 /*      Reset Tx & Rx   
        */
 
-       if ( init_ring_buffers(data) != B_OK )          /*      Init ring 
buffers       */
+       if (init_ring_buffers(data) != B_OK)            /*      Init ring 
buffers       */
                goto err1;
 
-       write32(REG_RFCR, RFCR_RFEN|RFCR_AAB|RFCR_AAM|RFCR_AAU);
+       write32(REG_RFCR, RFCR_RFEN | RFCR_AAB | RFCR_AAM | RFCR_AAU);
 
-       write32(REG_RXCFG, RXCFG_ATP|RXCFG_DRTH(31));                           
        /*      Set the drth            */
+       write32(REG_RXCFG, RXCFG_ATP | RXCFG_DRTH(31)); /*      Set the drth    
        */
 
-       write32(REG_TXCFG, TXCFG_CSI|
-                                               TXCFG_HBI|
-                                               TXCFG_ATP|
-                                               TXCFG_MXDMA_256|
-                                               TXCFG_FLTH(16)|
-                                               TXCFG_DRTH(16) );
+       write32(REG_TXCFG, TXCFG_CSI |
+                                               TXCFG_HBI |
+                                               TXCFG_ATP |
+                                               TXCFG_MXDMA_256 |
+                                               TXCFG_FLTH(16) |
+                                               TXCFG_DRTH(16));
 
        write32(REG_IMR, ISR_RXIDLE | ISR_TXOK | ISR_RXOK );
 
@@ -382,6 +393,7 @@ open_hook(const char *name, uint32 flags, void** cookie)
                return B_ERROR;
 }
 
+
 static status_t
 read_hook (void* cookie, off_t position, void *buf, size_t* num_bytes)
 {
@@ -393,44 +405,47 @@ read_hook (void* cookie, off_t position, void *buf, 
size_t* num_bytes)
        TRACE(( kDevName ": read_hook()\n" ));
 
        //if( !data->nonblocking )
-               acquire_sem_etc( data->Rx.Sem, 1, 
B_CAN_INTERRUPT|data->blockFlag, NONBLOCK_WAIT );
+               acquire_sem_etc(data->Rx.Sem, 1, B_CAN_INTERRUPT | 
data->blockFlag,
+                       NONBLOCK_WAIT);
 
        {
                former = disable_interrupts();
                acquire_spinlock(&data->Rx.Lock);
-                       desc = data->Rx.Curr;
-                       data->Rx.Curr = desc->virt_next;
+               desc = data->Rx.Curr;
+               data->Rx.Curr = desc->virt_next;
                release_spinlock(&data->Rx.Lock);
                restore_interrupts(former);
        }
 
-       length= DESC_LENGTH&desc->cmd;
+       length = DESC_LENGTH&desc->cmd;
 
-       if( desc->cmd & 
(DESC_RXA|DESC_RXO|DESC_LONG|DESC_RUNT|DESC_ISE|DESC_CRCE|DESC_FAE|DESC_LBP|DESC_COL)
 )
+       if (desc->cmd & (DESC_RXA | DESC_RXO | DESC_LONG | DESC_RUNT | DESC_ISE
+                       | DESC_CRCE | DESC_FAE | DESC_LBP | DESC_COL))
                TRACE(( "desc cmd: %x\n", desc->cmd ));
 
-       if( length < 64 ) {
+       if (length < 64) {
                *num_bytes = 0;
                return B_ERROR;
        }
 
-       if( *num_bytes < length )
+       if (*num_bytes < length)
                length = *num_bytes;
 
-       memcpy(buf, desc->virt_buff,length);
+       memcpy(buf, desc->virt_buff, length);
        desc->cmd = DESC_LENGTH&MAX_PACKET_SIZE;
        *num_bytes = length;
 
        atomic_add(&data->stats.rx_att, 1);
 
-       if( length == 0 )
+       if (length == 0)
                return B_ERROR;
 
        return B_OK;
 }
 
+
 static status_t
-write_hook (void* cookie, off_t position, const void* buffer, size_t* 
num_bytes)
+write_hook(void* cookie, off_t position, const void* buffer, size_t* num_bytes)
 {
        dp83815_properties_t *data = cookie;
        cpu_status former;
@@ -438,93 +453,96 @@ write_hook (void* cookie, off_t position, const void* 
buffer, size_t* num_bytes)
 
        TRACE(( kDevName " write_hook()\n" ));
 
-       acquire_sem( data->lock );
-       acquire_sem_etc( data->Tx.Sem, 1, B_CAN_INTERRUPT|data->blockFlag, 
NONBLOCK_WAIT );
+       acquire_sem(data->lock);
+       acquire_sem_etc(data->Tx.Sem, 1, B_CAN_INTERRUPT | data->blockFlag,
+               NONBLOCK_WAIT);
 
        {
                former = disable_interrupts();
                acquire_spinlock(&data->Tx.Lock);
-                       desc = data->Tx.Curr;
-                       data->Tx.Curr = desc->virt_next;
+               desc = data->Tx.Curr;
+               data->Tx.Curr = desc->virt_next;
                release_spinlock(&data->Tx.Lock);
                restore_interrupts(former);
        }
 
-       if ( *num_bytes > MAX_PACKET_SIZE ) {                   /* if needed    
                                        */
-               TRACE(( "Had to truncate the packet from %d to %d\n", 
*num_bytes, MAX_PACKET_SIZE));
-               *num_bytes = MAX_PACKET_SIZE;                           /*   
truncate the packet                        */
+       if (*num_bytes > MAX_PACKET_SIZE) {                     /* if needed    
                        */
+               TRACE(( "Had to truncate the packet from %d to %d\n", 
*num_bytes,
+                       MAX_PACKET_SIZE));
+               *num_bytes = MAX_PACKET_SIZE;                   /*   truncate 
the packet        */
        }
 
 
-       while( desc->cmd&DESC_OWN )     {                       /* make sure a 
buffer is available      */
+       while (desc->cmd & DESC_OWN) {          /* make sure a buffer is 
available      */
                TRACE(( "spinning in the write hook\n"));
                spin(1000);                                             /* wait 
a while if not                          */
        }
 
-       memcpy(desc->virt_buff, buffer, *num_bytes);            /* now copy the 
data                            */
-       desc->cmd = DESC_OWN|*num_bytes;                                /* 
update the cmd bits                          */
+       memcpy(desc->virt_buff, buffer, *num_bytes);    /* now copy the data    
*/
+       desc->cmd = DESC_OWN | *num_bytes;                              /* 
update the cmd bits  */
 
-       write32(REG_CR, CR_TXE);                                /* tell the 
card to start tx            */
+       write32(REG_CR, CR_TXE);                                /* tell the 
card to start tx    */
        atomic_add(&data->stats.tx_att, 1);
 
-       release_sem_etc( data->lock , 1 , B_DO_NOT_RESCHEDULE );
+       release_sem_etc(data->lock, 1, B_DO_NOT_RESCHEDULE);
 
        return B_OK;
 }
 
+
 static status_t
 control_hook (void* cookie, uint32 op, void* arg, size_t len)
 {
        dp83815_properties_t *data = (dp83815_properties_t *)cookie;
        TRACE(( kDevName " control_hook()\n" ));
 
-       switch ( op )
-       {
-       case ETHER_INIT:
-               TRACE(( kDevName " control_hook(): Wants us to init... ;-)\n" 
));
-               return B_NO_ERROR;
+       switch (op) {
+               case ETHER_INIT:
+                       TRACE((kDevName " control_hook(): Wants us to init... 
;-)\n"));
+                       return B_NO_ERROR;
 
-       case ETHER_GETADDR:
-               if ( data == NULL )
-                       return B_ERROR;
+               case ETHER_GETADDR:
+                       if (data == NULL)
+                               return B_ERROR;
 
-               TRACE(( kDevName " control_hook(): Wants our address...\n" ));
-               memcpy( arg , (void *) &(data->address) , sizeof( 
ether_address_t ) );
-               return B_OK;
+                       TRACE((kDevName " control_hook(): Wants our 
address...\n"));
+                       memcpy(arg, (void *) &(data->address), 
sizeof(ether_address_t));
+                       return B_OK;
 
-       case ETHER_ADDMULTI:
-               return domulti(data, (unsigned char *)arg);
+               case ETHER_ADDMULTI:
+                       return domulti(data, (unsigned char *)arg);
 
-       case ETHER_NONBLOCK:
-               if ( data == NULL )
-                       return B_ERROR;
+               case ETHER_NONBLOCK:
+                       if (data == NULL)
+                               return B_ERROR;
 
-               TRACE(( kDevName " control_hook(): Wants to set 
block/nonblock\n" ));
+                       TRACE((kDevName " control_hook(): Wants to set 
block/nonblock\n"));
 
-               if (*((int32 *)arg))
-                       data->blockFlag = B_RELATIVE_TIMEOUT;
-               else
-                       data->blockFlag = 0;
+                       if (*((int32 *)arg))
+                               data->blockFlag = B_RELATIVE_TIMEOUT;
+                       else
+                               data->blockFlag = 0;
 
-               return B_NO_ERROR;
+                       return B_NO_ERROR;
 
-       case ETHER_REMMULTI:
-               TRACE(( kDevName " control_hook(): Wants REMMULTI\n" ));
-               return B_OK;
+               case ETHER_REMMULTI:
+                       TRACE((kDevName " control_hook(): Wants REMMULTI\n"));
+                       return B_OK;
 
-       case ETHER_SETPROMISC:
-               TRACE(( kDevName " control_hook(): Wants PROMISC\n" ));
-               return B_OK;
+               case ETHER_SETPROMISC:
+                       TRACE((kDevName " control_hook(): Wants PROMISC\n"));
+                       return B_OK;
 
-       case ETHER_GETFRAMESIZE:
-               TRACE(( kDevName " control_hook(): Wants GETFRAMESIZE\n" ));
-               *( (unsigned int *)arg ) = 1514;
-               return B_OK;
+               case ETHER_GETFRAMESIZE:
+                       TRACE((kDevName " control_hook(): Wants 
GETFRAMESIZE\n"));
+                       *((unsigned int *)arg) = 1514;
+                       return B_OK;
        }
 
        return B_BAD_VALUE;
 }
 
+
 static int32
 dp83815_interrupt_hook(void *cookie)
 {
@@ -532,77 +550,81 @@ dp83815_interrupt_hook(void *cookie)
        uint32          isr;
        isr = read32(REG_ISR);
 
-       if ( isr == 0 ) return B_UNHANDLED_INTERRUPT;
+       if (isr == 0)
+               return B_UNHANDLED_INTERRUPT;
 
-       if ( isr & ISR_RXOK ) {
+       if (isr & ISR_RXOK) {
                int                             num_packets = 0;
                descriptor_t    *curr = data->Rx.CurrInt;
 
-               while( curr->cmd & DESC_OWN ) {
+               while (curr->cmd & DESC_OWN) {
                        curr = curr->virt_next;
                        num_packets++;
                }
 
                data->Rx.CurrInt = curr;
                data->stats.rx_ok += num_packets;
-               if( num_packets > 1 )
+               if (num_packets > 1)
                        TRACE(( "received %d descriptors\n", num_packets));
-               if( num_packets )
+               if (num_packets)
                        release_sem_etc(data->Rx.Sem, num_packets, 
B_DO_NOT_RESCHEDULE);
        }
 
-       if( isr & ISR_TXOK ) {
+       if (isr & ISR_TXOK) {
                data->stats.tx_ok++;
                release_sem_etc(data->Tx.Sem, 1, B_DO_NOT_RESCHEDULE);
        }
 
-       if( isr & ISR_RXIDLE )
-               TRACE(( "RX IS IDLE!\n"));
+       if (isr & ISR_RXIDLE)
+               TRACE(("RX IS IDLE!\n"));
 
-       if( isr & ~(ISR_TXIDLE|ISR_TXOK|ISR_RXOK|ISR_RXIDLE|ISR_RXEARLY) )
-               TRACE(( "ISR: %x\n", isr));
+       if (isr & ~(ISR_TXIDLE | ISR_TXOK | ISR_RXOK | ISR_RXIDLE | 
ISR_RXEARLY))
+               TRACE(("ISR: %x\n", isr));
 
        return B_INVOKE_SCHEDULER;
 }
 
+
 static status_t
-close_hook (void* cookie)
+close_hook(void* cookie)
 {
        dp83815_properties_t * data = (dp83815_properties_t *) cookie;
 
-       write32(REG_IER, 0);                            /*      Disable 
interrupts              */
-       write32(REG_CR, CR_RXD|CR_TXD);         /*      Disable Rx & Tx         
        */
+       write32(REG_IER, 0);                                    /*      Disable 
interrupts              */
+       write32(REG_CR, CR_RXD | CR_TXD);               /*      Disable Rx & Tx 
                */
 
        return B_OK;
 }
 
+
 static status_t
-free_hook (void* cookie)
+free_hook(void* cookie)
 {
        dp83815_properties_t *data = (dp83815_properties_t *) cookie;
 
        TRACE(( kDevName " free_hook()\n" ));
 
-       while ( data->Tx.Lock );                                /*      wait 
for any current writes to finish   */
-       while ( data->Rx.Lock );                                /*      wait 
for any current reads to finish    */
+       while (data->Tx.Lock);          /*      wait for any current writes to 
finish   */
+       while (data->Rx.Lock);          /*      wait for any current reads to 
finish    */
 
        //Remove interrupt handler
-       remove_io_interrupt_handler( data->pcii->u.h0.interrupt_line ,
-                                    dp83815_interrupt_hook , cookie );
+       remove_io_interrupt_handler(data->pcii->u.h0.interrupt_line,
+               dp83815_interrupt_hook, cookie);
 
        m_openmask &= ~(1L << data->device_id);
 
        free_resources(data);                                   /*      unblock 
waiting threads         */
 
        //Finally, free the cookie
-       free( data );
+       free(data);
 
        //Put the pci module
-       put_module( B_PCI_MODULE_NAME );
+       put_module(B_PCI_MODULE_NAME);
 
        return B_OK;
 }
 
+
 device_hooks dp83815_hooks = {
        open_hook,                              /* -> open entry point */
        close_hook,                     /* -> close entry point */
@@ -612,19 +634,23 @@ device_hooks dp83815_hooks = {
        write_hook                              /* -> write entry point */
 };
 
+
 const char**
 publish_devices()
 {
        return (const char **)dp83815_names;
 }
 
+
 device_hooks*
 find_device(const char* name)
 {
        return &dp83815_hooks;
 }
 
-static status_t init_ring_buffers(dp83815_properties_t *data)
+
+static status_t
+init_ring_buffers(dp83815_properties_t *data)
 {
        uint32                  i;
        area_info               info;
@@ -645,39 +671,45 @@ static status_t init_ring_buffers(dp83815_properties_t 
*data)
 
 #define NUM_BUFFS      2*MAX_DESC
 
-       pages = pages_needed(2*MAX_DESC*sizeof(descriptor_t) + 
NUM_BUFFS*BUFFER_SIZE);
+       pages = pages_needed(2 * MAX_DESC * sizeof(descriptor_t)
+               + NUM_BUFFS * BUFFER_SIZE);
 
        data->mem_area = create_area(kDevName " desc buffer", 
(void**)&RxDescRing,
                B_ANY_KERNEL_ADDRESS, pages * B_PAGE_SIZE, B_32_BIT_CONTIGUOUS,
                B_READ_AREA | B_WRITE_AREA);
-       if( data->mem_area < 0 )
-               return -1;
+       if (data->mem_area < 0)
+               return B_ERROR;
 
        get_area_info(data->mem_area, &info);
        get_memory_map(info.address, info.size, map, 4);
 
-       desc_base_phys_addr = map[0].address + NUM_BUFFS*BUFFER_SIZE;
-       desc_base_virt_addr = info.address + NUM_BUFFS*BUFFER_SIZE;
+       desc_base_phys_addr = map[0].address + NUM_BUFFS * BUFFER_SIZE;
+       desc_base_virt_addr = info.address + NUM_BUFFS * BUFFER_SIZE;
 
        buff_base_phys_addr = map[0].address;
        buff_base_virt_addr = info.address;
 
        RxDescRing = desc_base_virt_addr;
-       for( i = 0; i < MAX_DESC; i++ ) {
-               RxDescRing[i].link = desc_base_phys_addr + 
((i+1)%MAX_DESC)*sizeof(descriptor_t);
+       for (i = 0; i < MAX_DESC; i++) {
+               RxDescRing[i].link = desc_base_phys_addr
+                       + ((i + 1) % MAX_DESC) * sizeof(descriptor_t);
                RxDescRing[i].cmd = MAX_PACKET_SIZE;
-               RxDescRing[i].ptr = buff_base_phys_addr +i*BUFFER_SIZE;
-               RxDescRing[i].virt_next = &RxDescRing[(i+1)%MAX_DESC];
-               RxDescRing[i].virt_buff = buff_base_virt_addr + i*BUFFER_SIZE;
+               RxDescRing[i].ptr = buff_base_phys_addr + i * BUFFER_SIZE;
+               RxDescRing[i].virt_next = &RxDescRing[(i + 1) % MAX_DESC];
+               RxDescRing[i].virt_buff = buff_base_virt_addr + i * BUFFER_SIZE;
        }
 
        TxDescRing = desc_base_virt_addr + MAX_DESC;
-       for( i = 0; i < MAX_DESC; i++ ) {
-               TxDescRing[i].link = desc_base_phys_addr + 
MAX_DESC*sizeof(descriptor_t)+ ((i+1)%MAX_DESC)*sizeof(descriptor_t);
+       for (i = 0; i < MAX_DESC; i++) {
+               TxDescRing[i].link = desc_base_phys_addr
+                       + MAX_DESC * sizeof(descriptor_t)
+                       + ((i + 1) % MAX_DESC) * sizeof(descriptor_t);
                TxDescRing[i].cmd = MAX_PACKET_SIZE;
-               TxDescRing[i].ptr = buff_base_phys_addr + 
((i+MAX_DESC)*BUFFER_SIZE);
-               TxDescRing[i].virt_next = &TxDescRing[(i+1)%MAX_DESC];
-               TxDescRing[i].virt_buff = buff_base_virt_addr + 
((i+MAX_DESC)*BUFFER_SIZE);
+               TxDescRing[i].ptr = buff_base_phys_addr
+                       + ((i + MAX_DESC) * BUFFER_SIZE);
+               TxDescRing[i].virt_next = &TxDescRing[(i + 1) % MAX_DESC];
+               TxDescRing[i].virt_buff = buff_base_virt_addr
+                       + ((i + MAX_DESC) * BUFFER_SIZE);
        }
 
        data->Rx.Curr = RxDescRing;
@@ -687,15 +719,17 @@ static status_t init_ring_buffers(dp83815_properties_t 
*data)
        data->Tx.CurrInt = TxDescRing;
 
 
-       write32(REG_RXDP, desc_base_phys_addr);         /* set the initial rx 
descriptor        */
+       write32(REG_RXDP, desc_base_phys_addr); /* set the initial rx 
descriptor */
 
-       i = desc_base_phys_addr+MAX_DESC*sizeof(descriptor_t);
-       write32(REG_TXDP, i);                                                   
/* set the initial tx descriptor        */
+       i = desc_base_phys_addr + MAX_DESC * sizeof(descriptor_t);
+       write32(REG_TXDP, i);                           /* set the initial tx 
descriptor        */
 
        return B_OK;
 }
 
-static status_t allocate_resources(dp83815_properties_t *data)
+
+static status_t
+allocate_resources(dp83815_properties_t *data)
 {
        /* intialize rx semaphore with zero received packets            */
        if ((data->Rx.Sem = create_sem(0, kDevName " rx")) < 0) {
@@ -719,12 +753,14 @@ static status_t allocate_resources(dp83815_properties_t 
*data)
        return (B_OK);
 }
 
+
 static void free_resources(dp83815_properties_t *data)
 {
                delete_sem(data->Rx.Sem);
                delete_sem(data->Tx.Sem);
 }
 
+
 static status_t domulti(dp83815_properties_t *data, uint8 *addr)
 {
        TRACE(( "Set up multicast filter here\n"));


Other related posts:

  • » [haiku-commits] haiku: hrev43585 - src/add-ons/kernel/drivers/network/dp83815 - stpere