Changeset 95ff5c4 in mainline for uspace/srv/hw/netif/dp8390/dp8390.c


Ignore:
Timestamp:
2011-01-06T14:33:04Z (14 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
d3c9b60
Parents:
8f5e2527
Message:

cstyle

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/hw/netif/dp8390/dp8390.c

    r8f5e2527 r95ff5c4  
    2525 *  @param[in] packet The outgoing packet.
    2626 *  @return EOK on success.
    27  *  @return EINVAL 
     27 *  @return EINVAL
    2828 */
    2929int queue_packet(dpeth_t * dep, packet_t *packet);
     
    4747 * genuine dp8390s
    4848 */
    49 #define CR_EXTRA        CR_STA
     49#define CR_EXTRA  CR_STA
    5050
    5151_PROTOTYPE(static void dp_init, (dpeth_t *dep)                          );
     
    7878_PROTOTYPE(static void insw, (port_t port, void *buf, size_t size)                              );
    7979
    80 int do_probe(dpeth_t * dep){
     80int do_probe(dpeth_t *dep)
     81{
    8182        /* This is the default, try to (re)locate the device. */
    8283        conf_hw(dep);
    8384        if (dep->de_mode == DEM_DISABLED)
    84         {
    8585                /* Probe failed, or the device is configured off. */
    86                 return EXDEV;//ENXIO;
    87         }
     86                return EXDEV;
     87       
    8888        if (dep->de_mode == DEM_ENABLED)
    8989                dp_init(dep);
     90       
    9091        return EOK;
    9192}
    9293
    93 /*===========================================================================*
    94  *                              dp8390_dump                                  *
    95  *===========================================================================*/
    96 void dp8390_dump(dpeth_t * dep)
     94void dp8390_dump(dpeth_t *dep)
    9795{
    9896//      dpeth_t *dep;
     
    143141}
    144142
    145 /*===========================================================================*
    146  *                              do_init                                      *
    147  *===========================================================================*/
    148 int do_init(dpeth_t * dep, int mode){
     143int do_init(dpeth_t *dep, int mode)
     144{
    149145        if (dep->de_mode == DEM_DISABLED)
    150         {
    151146                // might call do_probe()
    152147                return EXDEV;
    153         }
    154 
    155         if (dep->de_mode == DEM_SINK)
    156         {
     148       
     149        if (dep->de_mode == DEM_SINK) {
    157150//              strncpy((char *) dep->de_address.ea_addr, "ZDP", 6);
    158151//              dep->de_address.ea_addr[5] = port;
    159 //              dp_confaddr(dep);
    160152//              reply_mess.m_type = DL_CONF_REPLY;
    161153//              reply_mess.m3_i1 = mp->DL_PORT;
     
    166158                return EOK;
    167159        }
     160       
    168161        assert(dep->de_mode == DEM_ENABLED);
    169         assert(dep->de_flags &DEF_ENABLED);
    170 
     162        assert(dep->de_flags & DEF_ENABLED);
     163       
    171164        dep->de_flags &= ~(DEF_PROMISC | DEF_MULTI | DEF_BROAD);
    172 
     165       
    173166        if (mode &DL_PROMISC_REQ)
    174167                dep->de_flags |= DEF_PROMISC | DEF_MULTI | DEF_BROAD;
     168       
    175169        if (mode &DL_MULTI_REQ)
    176170                dep->de_flags |= DEF_MULTI;
     171       
    177172        if (mode &DL_BROAD_REQ)
    178173                dep->de_flags |= DEF_BROAD;
    179 
     174       
    180175//      dep->de_client = mp->m_source;
    181176        dp_reinit(dep);
    182 
     177       
    183178//      reply_mess.m_type = DL_CONF_REPLY;
    184179//      reply_mess.m3_i1 = mp->DL_PORT;
    185180//      reply_mess.m3_i2 = DE_PORT_NR;
    186181//      *(ether_addr_t *) reply_mess.m3_ca1 = dep->de_address;
    187 
     182       
    188183//      mess_reply(mp, &reply_mess);
    189184        return EOK;
    190185}
    191186
    192 /*===========================================================================*
    193  *                              do_stop                                      *
    194  *===========================================================================*/
    195 void do_stop(dpeth_t * dep){
    196         if((dep->de_mode != DEM_SINK) && (dep->de_mode == DEM_ENABLED) && (dep->de_flags &DEF_ENABLED)){
     187void do_stop(dpeth_t *dep)
     188{
     189        if ((dep->de_mode != DEM_SINK)
     190            && (dep->de_mode == DEM_ENABLED)
     191            && (dep->de_flags & DEF_ENABLED)) {
    197192                outb_reg0(dep, DP_CR, CR_STP | CR_DM_ABORT);
    198193                (dep->de_stopf)(dep);
    199 
    200194                dep->de_flags = DEF_EMPTY;
    201195        }
    202196}
    203197
    204 int queue_packet(dpeth_t * dep, packet_t *packet){
     198int queue_packet(dpeth_t *dep, packet_t *packet)
     199{
    205200        packet_t *tmp;
    206 
    207         if(dep->packet_count >= MAX_PACKETS){
     201       
     202        if (dep->packet_count >= MAX_PACKETS) {
    208203                netif_pq_release(packet_get_id(packet));
    209204                return ELIMIT;
    210205        }
    211 
     206       
    212207        tmp = dep->packet_queue;
    213         while(pq_next(tmp)){
     208        while (pq_next(tmp))
    214209                tmp = pq_next(tmp);
    215         }
    216         if(pq_add(&tmp, packet, 0, 0) != EOK){
     210       
     211        if (pq_add(&tmp, packet, 0, 0) != EOK)
    217212                return EINVAL;
    218         }
    219         if(! dep->packet_count){
     213       
     214        if (!dep->packet_count)
    220215                dep->packet_queue = packet;
    221         }
    222         ++ dep->packet_count;
     216       
     217        ++dep->packet_count;
    223218        return EBUSY;
    224219}
    225220
    226 /*===========================================================================*
    227  *                      based on        do_vwrite                                    *
    228  *===========================================================================*/
    229 int do_pwrite(dpeth_t * dep, packet_t *packet, int from_int)
     221int do_pwrite(dpeth_t *dep, packet_t *packet, int from_int)
    230222{
    231223//      int port, count, size;
     
    241233        dep->de_client= mp->DL_PROC;
    242234*/
    243         if (dep->de_mode == DEM_SINK)
    244         {
     235        if (dep->de_mode == DEM_SINK) {
    245236                assert(!from_int);
    246237//              dep->de_flags |= DEF_PACK_SEND;
     
    249240                return EOK;
    250241        }
     242       
    251243        assert(dep->de_mode == DEM_ENABLED);
    252244        assert(dep->de_flags &DEF_ENABLED);
    253         if(dep->packet_queue && (! from_int)){
     245       
     246        if ((dep->packet_queue) && (!from_int)) {
    254247//      if (dep->de_flags &DEF_SEND_AVAIL){
    255248//              panic("", "dp8390: send already in progress", NO_NUM);
    256249                return queue_packet(dep, packet);
    257250        }
    258 
     251       
    259252        sendq_head= dep->de_sendq_head;
    260 //      if (dep->de_sendq[sendq_head].sq_filled)
    261 //      {
     253//      if (dep->de_sendq[sendq_head].sq_filled) {
    262254//              if (from_int)
    263255//                      panic("", "dp8390: should not be sending\n", NO_NUM);
     
    269261//      }
    270262//      assert(!(dep->de_flags &DEF_PACK_SEND));
    271 
    272 /*      if (vectored)
    273         {
     263       
     264/*      if (vectored) {
    274265                get_userdata(mp->DL_PROC, (vir_bytes) mp->DL_ADDR,
    275266                        (count > IOVEC_NR ? IOVEC_NR : count) *
     
    278269                dep->de_write_iovec.iod_proc_nr = mp->DL_PROC;
    279270                dep->de_write_iovec.iod_iovec_addr = (vir_bytes) mp->DL_ADDR;
    280 
     271               
    281272                dep->de_tmp_iovec = dep->de_write_iovec;
    282273                size = calc_iovec_size(&dep->de_tmp_iovec);
    283         }
    284         else
    285         {
     274        } else {
    286275                dep->de_write_iovec.iod_iovec[0].iov_addr =
    287276                        (vir_bytes) mp->DL_ADDR;
     
    299288        dep->de_write_iovec.iod_iovec_s = 1;
    300289        dep->de_write_iovec.iod_iovec_addr = (uintptr_t) NULL;
    301 
    302         if (size < ETH_MIN_PACK_SIZE || size > ETH_MAX_PACK_SIZE_TAGGED)
    303         {
     290       
     291        if (size < ETH_MIN_PACK_SIZE || size > ETH_MAX_PACK_SIZE_TAGGED) {
    304292                panic("", "dp8390: invalid packet size", size);
    305293                return EINVAL;
    306294        }
     295       
    307296        (dep->de_user2nicf)(dep, &dep->de_write_iovec, 0,
    308                 dep->de_sendq[sendq_head].sq_sendpage * DP_PAGESIZE,
    309                 size);
     297            dep->de_sendq[sendq_head].sq_sendpage * DP_PAGESIZE,
     298            size);
    310299        dep->de_sendq[sendq_head].sq_filled= TRUE;
    311         if (dep->de_sendq_tail == sendq_head)
    312         {
     300        if (dep->de_sendq_tail == sendq_head) {
    313301                outb_reg0(dep, DP_TPSR, dep->de_sendq[sendq_head].sq_sendpage);
    314302                outb_reg0(dep, DP_TBCR1, size >> 8);
    315                 outb_reg0(dep, DP_TBCR0, size &0xff);
    316                 outb_reg0(dep, DP_CR, CR_TXP | CR_EXTRA);/* there it goes.. */
    317         }
    318         else
    319                 dep->de_sendq[sendq_head].sq_size= size;
     303                outb_reg0(dep, DP_TBCR0, size & 0xff);
     304                outb_reg0(dep, DP_CR, CR_TXP | CR_EXTRA);  /* there it goes.. */
     305        } else
     306                dep->de_sendq[sendq_head].sq_size = size;
    320307       
    321308        if (++sendq_head == dep->de_sendq_nr)
    322309                sendq_head= 0;
     310       
    323311        assert(sendq_head < SENDQ_NR);
    324         dep->de_sendq_head= sendq_head;
    325 
     312        dep->de_sendq_head = sendq_head;
     313       
    326314//      dep->de_flags |= DEF_PACK_SEND;
    327 
    328         /* If the interrupt handler called, don't send a reply. The reply
     315       
     316        /*
     317         * If the interrupt handler called, don't send a reply. The reply
    329318         * will be sent after all interrupts are handled.
    330319         */
    331320        if (from_int)
    332321                return EOK;
     322       
    333323        reply(dep, OK, FALSE);
    334 
     324       
    335325        assert(dep->de_mode == DEM_ENABLED);
    336         assert(dep->de_flags &DEF_ENABLED);
     326        assert(dep->de_flags & DEF_ENABLED);
     327       
    337328        return EOK;
    338329}
    339330
    340 /*===========================================================================*
    341  *                              dp_init                                      *
    342  *===========================================================================*/
    343 void dp_init(dep)
    344 dpeth_t *dep;
     331void dp_init(dpeth_t *dep)
    345332{
    346333        int dp_rcr_reg;
    347334        int i;//, r;
    348 
     335       
    349336        /* General initialization */
    350337        dep->de_flags = DEF_EMPTY;
    351338        (*dep->de_initf)(dep);
    352 
    353 //      dp_confaddr(dep);
    354 
    355         if (debug)
    356         {
     339       
     340        if (debug) {
    357341                printf("%s: Ethernet address ", dep->de_name);
    358                 for (i= 0; i < 6; i++)
    359                         printf("%x%c", dep->de_address.ea_addr[i],
    360                                                         i < 5 ? ':' : '\n');
     342                for (i = 0; i < 6; i++)
     343                        printf("%x%c", dep->de_address.ea_addr[i], i < 5 ? ':' : '\n');
    361344        }
    362345
Note: See TracChangeset for help on using the changeset viewer.