* Changed ETHER_GET_LINK_STATE ethernet driver interface, added ETHER_SET_LINK_STATE_SEM.

* The device interface list now uses class DoublyLinkedList instead of struct list.
* Implemented SIOC[SG]IFMEDIA for setting (not supported by any device yet), and
  retrieving the device media information.
* Fixed a locking bug in list_domain_interfaces().
* Added new stack function device_link_changed() that should be called in case the
  link state (media) changed.
* The ethernet device module now spawns a thread and will periodically check the media
  state of all ethernet devices that support this (if any).
* Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20546 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler
2007-04-04 09:41:04 +00:00
parent 3458a335ab
commit 9206bb3779
14 changed files with 330 additions and 100 deletions
+8 -6
View File
@@ -21,21 +21,23 @@ enum {
ETHER_REMMULTI, /* remove multicast address */
ETHER_SETPROMISC, /* set promiscuous mode (int *) */
ETHER_GETFRAMESIZE, /* get frame size (required) (int *) */
ETHER_GETLINKSTATE
ETHER_SET_LINK_STATE_SEM,
/* pass over a semaphore to release on link state changes (sem_id *) */
ETHER_GET_LINK_STATE
/* get line speed, quality, duplex mode, etc. (ether_link_state_t *) */
};
/* ETHER_GETADDR - MAC address */
typedef struct {
uint8 ebyte[6];
typedef struct ether_address {
uint8 ebyte[6];
} ether_address_t;
/* ETHER_GETLINKSTATE */
typedef struct ether_link_state {
uint32 link_media; /* as specified in net/if_media.h */
uint32 link_quality; /* in one tenth of a percent */
uint64 link_speed; /* in Kbit/s */
uint32 media; /* as specified in net/if_media.h */
uint32 quality; /* in one tenth of a percent */
uint64 speed; /* in Kbit/s */
} ether_link_state_t;
#endif /* _ETHER_DRIVER_H */