X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=UDI%2Fdrivers%2Fnet_ne2000%2Fne2000_rx.c;h=287d8e3fe7ab00963833de0f79320ca40f03c1f1;hb=ee202510aeee8e264c1eba5cfade82515e119ba2;hp=cc603902db8daaf91940ff6465553730cc1c4e41;hpb=fb9d8f2d3c416bb3dc6702fae5891dedd990da44;p=tpg%2Facess2.git diff --git a/UDI/drivers/net_ne2000/ne2000_rx.c b/UDI/drivers/net_ne2000/ne2000_rx.c index cc603902..287d8e3f 100644 --- a/UDI/drivers/net_ne2000/ne2000_rx.c +++ b/UDI/drivers/net_ne2000/ne2000_rx.c @@ -9,9 +9,39 @@ #include #include "ne2000_common.h" +// === PROTOTYPES === +udi_pio_trans_call_t ne2k_rx__complete; + // === CODE === +void ne2k_nd_rx_channel_event_ind(udi_channel_event_cb_t *cb) +{ +} +void ne2k_nd_rx_rx_rdy(udi_nic_rx_cb_t *cb) +{ + // TODO: Add cb(s) to avaliable list +} void ne2k_intr__rx_ok(udi_cb_t *gcb) { - + ne2k_rdata_t *rdata = gcb->context; + if( rdata->rx_next_cb ) + { + udi_nic_rx_cb_t *rx_cb = rdata->rx_next_cb; + rdata->rx_next_cb = rx_cb->chain; + rx_cb->chain = NULL; + udi_pio_trans(ne2k_rx__complete, UDI_GCB(rx_cb), + rdata->pio_handles[NE2K_PIO_RX], 0, NULL, &rdata->rx_next_page); + } + else + { + // Drop packet due to no free cbs + } } +void ne2k_rx__complete(udi_cb_t *gcb, udi_buf_t *new_buf, udi_status_t status, udi_ubit16_t result) +{ + udi_nic_rx_cb_t *rx_cb = UDI_MCB(gcb, udi_nic_rx_cb_t); + // TODO: Check result + udi_nsr_rx_ind( rx_cb ); +} + +