eth_int.h

Go to the documentation of this file.
00001 /*
00002 eth_int.h
00003 
00004 Copyright 1995 Philip Homburg
00005 */
00006 
00007 #ifndef ETH_INT_H
00008 #define ETH_INT_H
00009 
00010 #define ETH_TYPE_HASH_NR        16
00011 #define ETH_VLAN_HASH_NR        16
00012 
00013 /* Assume that the arguments are a local variable */
00014 #define ETH_HASH_VLAN(v,t)      \
00015         ((t)= (((v) >> 8) ^ (v)), \
00016         (t)= (((t) >> 4) ^ (t)), \
00017         (t) & (ETH_VLAN_HASH_NR-1))
00018         
00019 typedef struct eth_port
00020 {
00021         int etp_flags;
00022         ether_addr_t etp_ethaddr;
00023         acc_t *etp_wr_pack, *etp_rd_pack;
00024         struct eth_fd *etp_sendq_head;
00025         struct eth_fd *etp_sendq_tail;
00026         struct eth_fd *etp_type_any;
00027         struct eth_fd *etp_type[ETH_TYPE_HASH_NR];
00028         event_t etp_sendev;
00029 
00030         /* VLAN support */
00031         u16_t etp_vlan;
00032         struct eth_port *etp_vlan_port;
00033         struct eth_port *etp_vlan_tab[ETH_VLAN_HASH_NR];
00034         struct eth_port *etp_vlan_next;
00035 
00036         osdep_eth_port_t etp_osdep;
00037 } eth_port_t;
00038 
00039 #define EPF_EMPTY        0x0
00040 #define EPF_ENABLED      0x1
00041 #define EPF_GOT_ADDR     0x2    /* Got ethernet address from device */
00042 #define EPF_READ_IP     0x20
00043 #define EPF_READ_SP     0x40
00044 
00045 extern eth_port_t *eth_port_table;
00046 
00047 extern int no_ethWritePort;     /* debug, consistency check */
00048 
00049 void osdep_eth_init ARGS(( void ));
00050 int eth_get_stat ARGS(( eth_port_t *eth_port, eth_stat_t *eth_stat ));
00051 void eth_write_port ARGS(( eth_port_t *eth_port, acc_t *pack ));
00052 void eth_arrive ARGS(( eth_port_t *port, acc_t *pack, size_t pack_size ));
00053 void eth_set_rec_conf ARGS(( eth_port_t *eth_port, u32_t flags ));
00054 void eth_restart_write ARGS(( eth_port_t *eth_port ));
00055 void eth_loop_ev ARGS(( event_t *ev, ev_arg_t ev_arg ));
00056 void eth_reg_vlan ARGS(( eth_port_t *eth_port, eth_port_t *vlan_port ));
00057 void eth_restart_ioctl ARGS(( eth_port_t *eth_port ));
00058 
00059 #endif /* ETH_INT_H */
00060 
00061 /*
00062  * $PchId: eth_int.h,v 1.9 2001/04/23 08:04:06 philip Exp $
00063  */

Generated on Fri Apr 14 22:57:30 2006 for minix by  doxygen 1.4.6