Changeset cfb79747 in mainline for uspace/drv/nic/ne2k


Ignore:
Timestamp:
2012-02-14T22:06:15Z (14 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
a31aad1
Parents:
199112e4 (diff), e10d41a (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge mainline changes.

Location:
uspace/drv/nic/ne2k
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/nic/ne2k/dp8390.c

    r199112e4 rcfb79747  
    5959#include <stdio.h>
    6060#include <libarch/ddi.h>
    61 #include <net/packet.h>
    62 #include <packet_client.h>
    6361#include "dp8390.h"
    6462
     
    7674        uint8_t status;
    7775       
    78         /** Pointer to next packet */
     76        /** Pointer to next frame */
    7977        uint8_t next;
    8078       
     
    393391        /*
    394392         * Reset the transmit ring. If we were transmitting a frame,
    395          * we pretend that the packet is processed. Higher layers will
    396          * retransmit if the packet wasn't actually sent.
     393         * we pretend that the frame is processed. Higher layers will
     394         * retransmit if the frame wasn't actually sent.
    397395         */
    398396        ne2k->sq.dirty = false;
     
    448446                return NULL;
    449447       
    450         void *buf = packet_suffix(frame->packet, length);
    451         bzero(buf, length);
     448        bzero(frame->data, length);
    452449        uint8_t last = page + length / DP_PAGE;
    453450       
     
    455452                size_t left = (ne2k->stop_page - page) * DP_PAGE
    456453                    - sizeof(recv_header_t);
    457                 ne2k_download(ne2k, buf, page * DP_PAGE + sizeof(recv_header_t),
     454                ne2k_download(ne2k, frame->data, page * DP_PAGE + sizeof(recv_header_t),
    458455                    left);
    459                 ne2k_download(ne2k, buf + left, ne2k->start_page * DP_PAGE,
     456                ne2k_download(ne2k, frame->data + left, ne2k->start_page * DP_PAGE,
    460457                    length - left);
    461458        } else {
    462                 ne2k_download(ne2k, buf, page * DP_PAGE + sizeof(recv_header_t),
     459                ne2k_download(ne2k, frame->data, page * DP_PAGE + sizeof(recv_header_t),
    463460                    length);
    464461        }
     
    541538                 * Update the boundary pointer
    542539                 * to the value of the page
    543                  * prior to the next packet to
     540                 * prior to the next frame to
    544541                 * be processed.
    545542                 */
     
    584581                fibril_mutex_lock(&ne2k->sq_mutex);
    585582                if (ne2k->sq.dirty) {
    586                         /* Prepare the buffer for next packet */
     583                        /* Prepare the buffer for next frame */
    587584                        ne2k->sq.dirty = false;
    588585                        ne2k->sq.size = 0;
  • uspace/drv/nic/ne2k/dp8390.h

    r199112e4 rcfb79747  
    264264extern void ne2k_send(nic_t *, void *, size_t);
    265265extern void ne2k_interrupt(nic_t *, uint8_t, uint8_t);
    266 extern packet_t *ne2k_alloc_packet(nic_t *, size_t);
    267266
    268267extern void ne2k_set_accept_mcast(ne2k_t *, int);
  • uspace/drv/nic/ne2k/ne2k.c

    r199112e4 rcfb79747  
    286286        /* Note: some frame with previous physical address may slip to NIL here
    287287         * (for a moment the filtering is not exact), but ethernet should be OK with
    288          * that. Some packet may also be lost, but this is not a problem.
     288         * that. Some frames may also be lost, but this is not a problem.
    289289         */
    290290        ne2k_set_physical_address((ne2k_t *) nic_get_specific(nic_data), address);
     
    363363static int ne2k_dev_add(ddf_dev_t *dev)
    364364{
     365        ddf_fun_t *fun;
     366       
    365367        /* Allocate driver data for the device. */
    366368        nic_t *nic_data = nic_create_and_bind(dev);
     
    396398        }
    397399       
    398         rc = nic_register_as_ddf_fun(nic_data, &ne2k_dev_ops);
     400        rc = nic_connect_to_services(nic_data);
    399401        if (rc != EOK) {
    400402                ne2k_dev_cleanup(dev);
     
    402404        }
    403405       
    404         rc = nic_connect_to_services(nic_data);
    405         if (rc != EOK) {
     406        fun = ddf_fun_create(nic_get_ddf_dev(nic_data), fun_exposed, "port0");
     407        if (fun == NULL) {
    406408                ne2k_dev_cleanup(dev);
     409                return ENOMEM;
     410        }
     411        nic_set_ddf_fun(nic_data, fun);
     412        fun->ops = &ne2k_dev_ops;
     413        fun->driver_data = nic_data;
     414       
     415        rc = ddf_fun_bind(fun);
     416        if (rc != EOK) {
     417                ddf_fun_destroy(fun);
     418                ne2k_dev_cleanup(dev);
     419                return rc;
     420        }
     421       
     422        rc = ddf_fun_add_to_category(fun, DEVICE_CATEGORY_NIC);
     423        if (rc != EOK) {
     424                ddf_fun_unbind(fun);
     425                ddf_fun_destroy(fun);
    407426                return rc;
    408427        }
Note: See TracChangeset for help on using the changeset viewer.