qeth.h
来自「linux-2.4.29操作系统的源码」· C头文件 代码 · 共 1,284 行 · 第 1/3 页
H
1,284 行
return htons(ETH_P_802_3); return htons(ETH_P_802_2);}typedef unsigned short (*__qeth_temp5)(struct sk_buff *,struct net_device *);inline static __qeth_temp5 qeth_get_type_trans(__u8 link_type){ switch (link_type) { case QETH_MPC_LINK_TYPE_HSTR: case QETH_MPC_LINK_TYPE_LANE_TR: return tr_type_trans; default: return qeth_eth_type_trans; }}#endif /* QETH_IPV6 */inline static const char *qeth_get_link_type_name(int cardtype,__u8 linktype){ switch (cardtype) { case QETH_CARD_TYPE_UNKNOWN: return "unknown"; case QETH_CARD_TYPE_OSAE: switch (linktype) { case QETH_MPC_LINK_TYPE_FAST_ETHERNET: return "Fast Eth"; case QETH_MPC_LINK_TYPE_HSTR: return "HSTR"; case QETH_MPC_LINK_TYPE_GIGABIT_ETHERNET: return "Gigabit Eth"; case QETH_MPC_LINK_TYPE_LANE_ETH100: return "LANE Eth100"; case QETH_MPC_LINK_TYPE_LANE_TR: return "LANE TR"; case QETH_MPC_LINK_TYPE_LANE_ETH1000: return "LANE Eth1000"; default: return "unknown"; } case QETH_CARD_TYPE_IQD: return "magic"; default: return "unknown"; }}inline static const char* qeth_get_dev_basename(int cardtype,__u8 link_type){ switch (cardtype) { case QETH_CARD_TYPE_UNKNOWN: return "eth"; case QETH_CARD_TYPE_OSAE: switch (link_type) { case QETH_MPC_LINK_TYPE_LANE_TR: /* fallthrough */ case QETH_MPC_LINK_TYPE_HSTR: return "tr"; default: return "eth"; } case QETH_CARD_TYPE_IQD: return "hsi"; default: return "eth"; }}/* inbound: */#define DEFAULT_BUFFER_SIZE 65536#define DEFAULT_BUFFER_COUNT 128#define BUFCNT_MIN 8#define BUFCNT_MAX 128#define BUFFER_SIZE (card->inbound_buffer_size)#define BUFFER_MAX_ELEMENTS (BUFFER_SIZE>>12) /* 8k for each pair header-buffer: */inline static int qeth_sbal_packing_on_card(int cardtype){ switch (cardtype) { case QETH_CARD_TYPE_IQD: return 0; default: return 1; }}/* do it this way round -> __MODULE_STRING needs with *//* QETH_PRIO_NICE_LEVELS a single number */#define QETH_MAX_PRIO_QUEUES QETH_PRIO_NICE_LEVELS+1static inline int qeth_sbalf15_in_retrieable_range(int sbalf15){ return ( (sbalf15>=15) && (sbalf15<=31) );}#define INBOUND_BUFFER_POS(card,bufno,sbale) \ ( (bufno&SPAREBUF_MASK)? \ ( \ (sparebufs[bufno&(~SPAREBUF_MASK)].buf+ \ PAGE_SIZE*sbale) \ ):( \ (card->inbound_buffer_pool_entry[card-> \ inbound_buffer_entry_no[bufno]][sbale]) \ ) )#define SPAREBUF_UNAVAIL 0#define SPAREBUF_FREE 1#define SPAREBUF_USED 2typedef struct sparebufs_t { char *buf; atomic_t status;} sparebufs_t;#define SEND_STATE_INACTIVE 0#define SEND_STATE_DONT_PACK 1#define SEND_STATE_PACK 2#define QETH_LOCK_UNLOCKED 0#define QETH_LOCK_NORMAL 1#define QETH_LOCK_FLUSH 2#define QETH_MAX_DEVICES 16 /* DEPENDENCY ON QETH_MAX_DEVICES. *__MOUDLE_STRING expects simple literals */#define QETH_MAX_DEVICES_TIMES_4 64#define QETH_MAX_DEVNAMES 16#define QETH_DEVNAME "eth"#define QETH_TX_TIMEOUT 100*HZ /* 100 seconds */#define QETH_REMOVE_WAIT_TIME 200#define QETH_WAIT_FOR_THREAD_TIME 20#define QETH_IDLE_WAIT_TIME 10#define QETH_WAIT_BEFORE_2ND_DOIO 1000#define QETH_MAX_PARM_LEN 128#define QETH_FAKE_LL_LEN ETH_HLEN /* 14 */#define QETH_FAKE_LL_PROT_LEN 2#define QETH_FAKE_LL_ADDR_LEN ETH_ALEN /* 6 */#define QETH_FAKE_LL_DEST_MAC_POS 0#define QETH_FAKE_LL_SRC_MAC_POS 6#define QETH_FAKE_LL_SRC_MAC_POS_IN_QDIO_HDR 18#define QETH_FAKE_LL_PROT_POS 12 #define QETH_FAKE_LL_V4_ADDR_POS 16#define QETH_FAKE_LL_V6_ADDR_POS 24#define DEV_NAME_LEN 16#define IOCTL_MAX_TRANSFER_SIZE 65535#define IP_TOS_LOWDELAY 0x10#define IP_TOS_HIGHTHROUGHPUT 0x08#define IP_TOS_HIGHRELIABILITY 0x04#define IP_TOS_NOTIMPORTANT 0x02#define QETH_RCD_LENGTH 128#define __max(a,b) ( ((a)>(b))?(a):(b) )#define __min(a,b) ( ((a)<(b))?(a):(b) )#define QETH_BUFSIZE __max(__max(IPA_PDU_HEADER_SIZE+ \ sizeof(arp_cmd_t),IPA_PDU_HEADER_SIZE+ \ sizeof(ipa_cmd_t)),QETH_RCD_LENGTH)#define QETH_FINAL_STATUS_TIMEOUT 1500#define QETH_CLEAR_TIMEOUT 1500#define QETH_RCD_TIMEOUT 1500#define QETH_NOP_TIMEOUT 1500#define QETH_QUIESCE_NETDEV_TIME 300#define QETH_QUIESCE_WAIT_BEFORE_CLEAR 4000#define QETH_QUIESCE_WAIT_AFTER_CLEAR 4000#define NOP_STATE 0x1001#define READ_CONF_DATA_STATE 0x1002#define IDX_ACTIVATE_READ_STATE 0x1003#define IDX_ACTIVATE_WRITE_STATE 0x1004#define MPC_SETUP_STATE 0x1005#define CLEAR_STATE 0x1006#define IPA_CMD_STATE 0x1007#define IPA_IOCTL_STATE 0x1009#define IPA_SETIP_FLAG 0x100000#define QETH_REMOVE_CARD_PROPER 1#define QETH_REMOVE_CARD_QUICK 2#define PARSE_AUTO 0#define PARSE_ROUTING_TYPE 1#define PARSE_CHECKSUMMING 2#define PARSE_PRIO_QUEUEING 3#define PARSE_STAYINMEM 4#define PARSE_BUFFERCOUNT 5#define PARSE_PORTNAME 6#define PARSE_POLLTIME 7#define PARSE_SPARE_BUFFERCOUNT 8#define PARSE_PORTNO 9#define PARSE_BROADCAST_MODE 10#define PARSE_MACADDR_MODE 11#define PARSE_MEMUSAGE 12#define PARSE_ENA_IPAT 13#define PARSE_FAKE_BROADCAST 14#define PARSE_ADD_HHLEN 15#define PARSE_ROUTING_TYPE4 16#define PARSE_ROUTING_TYPE6 17#define PARSE_FAKE_LL 18#define PARSE_ASYNC_IQD 19#define PARSE_COUNT 20#define NO_PRIO_QUEUEING 0#define PRIO_QUEUEING_PREC 1#define PRIO_QUEUEING_TOS 2#define NO_ROUTER 0#define PRIMARY_ROUTER 1#define SECONDARY_ROUTER 2#define MULTICAST_ROUTER 3#define PRIMARY_CONNECTOR 4#define SECONDARY_CONNECTOR 5#define ROUTER_MASK 0xf /* used to remove RESET_ROUTING_FLAG from routing_type */#define RESET_ROUTING_FLAG 0x10 /* used to indicate, that setting the routing type is desired */#define BROADCAST_ALLRINGS 0#define BROADCAST_LOCAL 1#define MACADDR_NONCANONICAL 0#define MACADDR_CANONICAL 1#define MEMUSAGE_DISCONTIG 0#define MEMUSAGE_CONTIG 1#define ENABLE_TAKEOVER 0#define DISABLE_TAKEOVER 1#define FAKE_BROADCAST 0#define DONT_FAKE_BROADCAST 1#define FAKE_LL 0#define DONT_FAKE_LL 1#define SYNC_IQD 0#define ASYNC_IQD 1#define QETH_BREAKOUT_LEAVE 1#define QETH_BREAKOUT_AGAIN 2#define QETH_WAIT_FOR_LOCK 0#define QETH_DONT_WAIT_FOR_LOCK 1#define QETH_LOCK_ALREADY_HELD 2#define BROADCAST_WITH_ECHO 1#define BROADCAST_WITHOUT_ECHO 2#define PROBLEM_CARD_HAS_STARTLANED 1#define PROBLEM_RECEIVED_IDX_TERMINATE 2#define PROBLEM_ACTIVATE_CHECK_CONDITION 3#define PROBLEM_RESETTING_EVENT_INDICATOR 4#define PROBLEM_COMMAND_REJECT 5#define PROBLEM_ZERO_SENSE_DATA 6#define PROBLEM_GENERAL_CHECK 7#define PROBLEM_BAD_SIGA_RESULT 8#define PROBLEM_USER_TRIGGERED_RECOVERY 9#define PROBLEM_AFFE 10#define PROBLEM_MACHINE_CHECK 11#define PROBLEM_TX_TIMEOUT 12#define SENSE_COMMAND_REJECT_BYTE 0#define SENSE_COMMAND_REJECT_FLAG 0x80#define SENSE_RESETTING_EVENT_BYTE 1#define SENSE_RESETTING_EVENT_FLAG 0x80#define DEFAULT_RCD_CMD 0x72#define DEFAULT_RCD_COUNT 0x80#define BUFFER_USED 1#define BUFFER_UNUSED -1/*typedef struct wait_queue* wait_queue_head_t; already typedefed in qdio.h */typedef int (*reg_notifier_t)(struct notifier_block*);typedef struct ipato_entry_t { int version; __u8 addr[16]; int mask_bits; char dev_name[DEV_NAME_LEN]; struct ipato_entry_t *next;} ipato_entry_t;typedef struct qeth_vipa_entry_t { int version; __u8 ip[16]; int flag; volatile int state; struct qeth_vipa_entry_t *next;} qeth_vipa_entry_t;typedef struct ip_state_t { struct in_ifaddr *ip_ifa; /* pointer to IPv4 adresses */ struct inet6_ifaddr *ip6_ifa;} ip_state_t;struct qeth_ipm_mac { __u8 mac[ETH_ALEN]; __u8 ip[16]; struct qeth_ipm_mac *next;};typedef struct ip_mc_state_t { struct qeth_ipm_mac *ipm_ifa; struct qeth_ipm_mac *ipm6_ifa;} ip_mc_state_t;struct qeth_card_options { char devname[DEV_NAME_LEN]; volatile int routing_type4;#ifdef QETH_IPV6 volatile int routing_type6;#endif /* QETH_IPV6 */ int checksum_type; int do_prio_queueing; int default_queue; int already_parsed[PARSE_COUNT]; int inbound_buffer_count; __s32 memory_usage_in_k; int polltime; char portname[9]; int portno; int memusage; int broadcast_mode; int macaddr_mode; int ena_ipat; int fake_broadcast; int add_hhlen; int fake_ll; int async_iqd;};typedef struct qeth_hdr_t { __u8 id; __u8 flags; __u16 inbound_checksum; __u32 token; __u16 length; __u8 vlan_prio; __u8 ext_flags; __u16 vlan_id; __u16 frame_offset; __u8 dest_addr[16];} qeth_hdr_t;typedef struct qeth_ringbuffer_element_t { struct sk_buff_head skb_list; int next_element_to_fill;} __attribute__ ((packed)) qeth_ringbuffer_element_t;typedef struct qeth_ringbuffer_t { qdio_buffer_t buffer[QDIO_MAX_BUFFERS_PER_Q]; qeth_ringbuffer_element_t ringbuf_element[QDIO_MAX_BUFFERS_PER_Q];} qeth_ringbuffer_t __attribute__ ((packed,aligned(PAGE_SIZE)));typedef struct qeth_dma_stuff_t { unsigned char *sendbuf; unsigned char *recbuf; ccw1_t read_ccw; ccw1_t write_ccw;} qeth_dma_stuff_t __attribute__ ((packed,aligned(PAGE_SIZE)));typedef struct qeth_perf_stats_t { unsigned int skbs_rec; unsigned int bufs_rec; unsigned int skbs_sent; unsigned int bufs_sent; unsigned int skbs_sent_dont_pack; unsigned int bufs_sent_dont_pack; unsigned int skbs_sent_pack; unsigned int bufs_sent_pack; unsigned int skbs_sent_pack_better; unsigned int bufs_sent_pack_better; unsigned int sc_dp_p; unsigned int sc_p_dp; __u64 inbound_start_time; unsigned int inbound_cnt; unsigned int inbound_time; __u64 outbound_start_time; unsigned int outbound_cnt; unsigned int outbound_time;} qeth_perf_stats_t;/* ugly. I know. */typedef struct qeth_card_t { /* pointed to by dev->priv */ int easy_copy_cap; /* pointer to options (defaults + parameters) */ struct qeth_card_options options; atomic_t is_startlaned; /* card did not get a stoplan */ /* also 0 when card is gone after a machine check */ __u8 link_type; int is_guest_lan; int do_pfix; /* to avoid doing diag98 for vm guest lan devices */ /* inbound buffer management */ atomic_t inbound_buffer_refcnt[QDIO_MAX_BUFFERS_PER_Q]; qdio_buffer_t inbound_qdio_buffers[QDIO_MAX_BUFFERS_PER_Q]; void *real_inb_buffer_addr[QDIO_MAX_BUFFERS_PER_Q] [QDIO_MAX_ELEMENTS_PER_BUFFER]; /* inbound data area */ void *inbound_buffer_pool_entry[QDIO_MAX_BUFFERS_PER_Q] [QDIO_MAX_ELEMENTS_PER_BUFFER]; volatile int inbound_buffer_pool_entry_used[QDIO_MAX_BUFFERS_PER_Q]; int inbound_buffer_entry_no[QDIO_MAX_BUFFERS_PER_Q]; /* for requeueing of buffers */ spinlock_t requeue_input_lock; atomic_t requeue_position; atomic_t requeue_counter; /* outbound QDIO stuff */ volatile int send_state[QETH_MAX_QUEUES]; volatile int outbound_first_free_buffer[QETH_MAX_QUEUES]; atomic_t outbound_used_buffers[QETH_MAX_QUEUES]; int outbound_buffer_send_state[QETH_MAX_QUEUES] [QDIO_MAX_BUFFERS_PER_Q]; int send_retries[QETH_MAX_QUEUES][QDIO_MAX_BUFFERS_PER_Q]; volatile int outbound_bytes_in_buffer[QETH_MAX_QUEUES]; qeth_ringbuffer_t *outbound_ringbuffer[QETH_MAX_QUEUES]; atomic_t outbound_ringbuffer_lock[QETH_MAX_QUEUES]; atomic_t last_pci_pos[QETH_MAX_QUEUES];#ifdef QETH_IPV6 int (*hard_header)(struct sk_buff *,struct net_device *, unsigned short,void *,void *,unsigned); int (*rebuild_header)(struct sk_buff *); int (*hard_header_cache)(struct neighbour *,struct hh_cache *); void (*header_cache_update)(struct hh_cache *,struct net_device *, unsigned char *); unsigned short (*type_trans)(struct sk_buff *,struct net_device *); int type_trans_correction;#endif /* QETH_IPV6 */#ifdef QETH_VLAN struct vlan_group *vlangrp; spinlock_t vlan_lock;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?