Barrelfish
|
Generic server part for most ethernet drivers. Current drivers using this server code are – e1000n – rtl8029 – eMAC. More...
Functions | |
void | process_received_packet (struct driver_rx_buffer *bufs, size_t count, uint64_t flags) |
bool | copy_packet_to_user (struct buffer_descriptor *buffer, void *data, uint64_t len, uint64_t flags) |
void | ethersrv_init (char *service_name, uint64_t queueid, ether_get_mac_address_t get_mac_ptr, ether_terminate_queue terminate_queue_ptr, ether_transmit_pbuf_list_t transmit_ptr, ether_get_tx_free_slots tx_free_slots_ptr, ether_handle_free_TX_slot handle_free_tx_slot_ptr, size_t rx_bufsz, ether_rx_register_buffer rx_register_buffer_ptr, ether_rx_get_free_slots rx_get_free_slots_ptr) |
void | ethersrv_argument (const char *arg) |
Generic server part for most ethernet drivers. Current drivers using this server code are – e1000n – rtl8029 – eMAC.
bool copy_packet_to_user | ( | struct buffer_descriptor * | buffer, |
void * | data, | ||
uint64_t | len, | ||
uint64_t | flags | ||
) |
Used in combination with software filtering, to copy a packet into a user buffer.
void ethersrv_argument | ( | const char * | arg | ) |
Pass command line argument not used by driver to library. Can be called multiple times, once for each parameter.
void ethersrv_init | ( | char * | service_name, |
uint64_t | queueid, | ||
ether_get_mac_address_t | get_mac_ptr, | ||
ether_terminate_queue | terminate_queue_ptr, | ||
ether_transmit_pbuf_list_t | transmit_ptr, | ||
ether_get_tx_free_slots | tx_free_slots_ptr, | ||
ether_handle_free_TX_slot | handle_free_tx_slots_ptr, | ||
size_t | rx_buffer_size, | ||
ether_rx_register_buffer | rx_register_buffer_ptr, | ||
ether_rx_get_free_slots | rx_get_free_slots_ptr | ||
) |
Initialize pair of ethernet RX/TX queues.
service_name | Service name for the card to which this queue belongs |
queueid | Queue index |
get_mac_ptr | Callback that returns MAC address of the card |
terminate_queue_ptr | Callback that terminates the queue driver, or NULL if this is not supported. |
transmit_ptr | Callback to put a buffer chain in TX queue |
tx_free_slots_ptr | Callback that returns number of free slots in TX queue |
handle_free_tx_slots_ptr | Callback to remove transmitted buffers from queue |
rx_buffer_size | Expected RX buffer size |
rx_register_buffer_ptr | Callback to register buffer for RX queue |
rx_get_free_slots_ptr | Callback that returns number of free slots in RX queue |
void process_received_packet | ( | struct driver_rx_buffer * | bufs, |
size_t | count, | ||
uint64_t | flags | ||
) |
Called by driver when it receives a new packet.