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 + -
显示快捷键?