1/* 2 * Copyright 2007, Haiku, Inc. All Rights Reserved. 3 * Distributed under the terms of the MIT License. 4 */ 5#ifndef _ETHER_DRIVER_H 6#define _ETHER_DRIVER_H 7 8/*! Standard ethernet driver interface */ 9 10 11#include <Drivers.h> 12 13 14/* ioctl() opcodes a driver should support */ 15enum { 16 ETHER_GETADDR = B_DEVICE_OP_CODES_END, 17 /* get ethernet address (required) */ 18 ETHER_INIT, /* (obsolete) */ 19 ETHER_NONBLOCK, /* change non blocking mode (int *) */ 20 ETHER_ADDMULTI, /* add multicast address */ 21 ETHER_REMMULTI, /* remove multicast address */ 22 ETHER_SETPROMISC, /* set promiscuous mode (int *) */ 23 ETHER_GETFRAMESIZE, /* get frame size (required) (int *) */ 24 ETHER_SET_LINK_STATE_SEM, 25 /* pass over a semaphore to release on link state changes (sem_id *) */ 26 ETHER_GET_LINK_STATE 27 /* get line speed, quality, duplex mode, etc. (ether_link_state_t *) */ 28}; 29 30 31/* ETHER_GETADDR - MAC address */ 32typedef struct ether_address { 33 uint8 ebyte[6]; 34} ether_address_t; 35 36/* ETHER_GETLINKSTATE */ 37typedef struct ether_link_state { 38 uint32 media; /* as specified in net/if_media.h */ 39 uint32 quality; /* in one tenth of a percent */ 40 uint64 speed; /* in bit/s */ 41} ether_link_state_t; 42 43#endif /* _ETHER_DRIVER_H */ 44