⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 claw.h

📁 linux-2.6.15.6
💻 H
字号:
/********************************************************  Define constants                                    **                                                      *********************************************************/#define VERSION_CLAW_H "$Revision: 1.6 $"/*-----------------------------------------------------**     CCW command codes for CLAW protocol              **------------------------------------------------------*/#define CCW_CLAW_CMD_WRITE           0x01      /* write - not including link */#define CCW_CLAW_CMD_READ            0x02      /* read */#define CCW_CLAW_CMD_NOP             0x03      /* NOP */#define CCW_CLAW_CMD_SENSE           0x04      /* Sense */#define CCW_CLAW_CMD_SIGNAL_SMOD     0x05      /* Signal Status Modifier */#define CCW_CLAW_CMD_TIC             0x08      /* TIC */#define CCW_CLAW_CMD_READHEADER      0x12      /* read header data */#define CCW_CLAW_CMD_READFF          0x22      /* read an FF */#define CCW_CLAW_CMD_SENSEID         0xe4      /* Sense ID *//*-----------------------------------------------------**    CLAW Unique constants                             **------------------------------------------------------*/#define MORE_to_COME_FLAG       0x04   /* OR with write CCW in case of m-t-c */#define CLAW_IDLE               0x00   /* flag to indicate CLAW is idle */#define CLAW_BUSY               0xff   /* flag to indicate CLAW is busy */#define CLAW_PENDING            0x00   /* flag to indicate i/o is pending */#define CLAW_COMPLETE           0xff   /* flag to indicate i/o completed *//*-----------------------------------------------------**     CLAW control comand code                         **------------------------------------------------------*/#define SYSTEM_VALIDATE_REQUEST   0x01  /* System Validate request */#define SYSTEM_VALIDATE_RESPONSE  0x02  /* System Validate response */#define CONNECTION_REQUEST        0x21  /* Connection request */#define CONNECTION_RESPONSE       0x22  /* Connection response */#define CONNECTION_CONFIRM        0x23  /* Connection confirm */#define DISCONNECT                0x24  /* Disconnect */#define CLAW_ERROR                0x41  /* CLAW error message */#define CLAW_VERSION_ID           2     /* CLAW version ID *//*-----------------------------------------------------**  CLAW adater sense bytes                             **------------------------------------------------------*/#define CLAW_ADAPTER_SENSE_BYTE 0x41   /* Stop command issued to adapter *//*-----------------------------------------------------**      CLAW control command return codes               **------------------------------------------------------*/#define CLAW_RC_NAME_MISMATCH       166  /*  names do not match */#define CLAW_RC_WRONG_VERSION       167  /*  wrong CLAW version number */#define CLAW_RC_HOST_RCV_TOO_SMALL  180  /*  Host maximum receive is   */					 /*  less than Linux on zSeries*/                                         /*  transmit size             *//*-----------------------------------------------------**      CLAW Constants application name                 **------------------------------------------------------*/#define HOST_APPL_NAME          "TCPIP   "#define WS_APPL_NAME_IP_LINK    "TCPIP   "#define WS_APPL_NAME_IP_NAME	"IP      "#define WS_APPL_NAME_API_LINK   "API     "#define WS_APPL_NAME_PACKED     "PACKED  "#define WS_NAME_NOT_DEF         "NOT_DEF "#define PACKING_ASK		1#define PACK_SEND		2#define DO_PACKED		3#define MAX_ENVELOPE_SIZE       65536#define CLAW_DEFAULT_MTU_SIZE   4096#define DEF_PACK_BUFSIZE	32768#define READ                    0#define WRITE                   1#define TB_TX                   0          /* sk buffer handling in process  */#define TB_STOP                 1          /* network device stop in process */#define TB_RETRY                2          /* retry in process               */#define TB_NOBUFFER             3          /* no buffer on free queue        */#define CLAW_MAX_LINK_ID        1#define CLAW_MAX_DEV            256        /*      max claw devices          */#define MAX_NAME_LEN            8          /* host name, adapter name length */#define CLAW_FRAME_SIZE         4096#define CLAW_ID_SIZE            BUS_ID_SIZE+3/* state machine codes used in claw_irq_handler */#define CLAW_STOP                0#define CLAW_START_HALT_IO       1#define CLAW_START_SENSEID       2#define CLAW_START_READ          3#define CLAW_START_WRITE         4/*-----------------------------------------------------**    Lock flag                                         **------------------------------------------------------*/#define LOCK_YES             0#define LOCK_NO              1/*-----------------------------------------------------**    DBF Debug macros                                  **------------------------------------------------------*/#define CLAW_DBF_TEXT(level, name, text) \	do { \		debug_text_event(claw_dbf_##name, level, text); \	} while (0)#define CLAW_DBF_HEX(level,name,addr,len) \do { \	debug_event(claw_dbf_##name,level,(void*)(addr),len); \} while (0)#define CLAW_DBF_TEXT_(level,name,text...) \do {                                       \	sprintf(debug_buffer, text);  \		debug_text_event(claw_dbf_##name,level, debug_buffer);\} while (0)/********************************************************  Define Control Blocks                               **                                                      *********************************************************//*------------------------------------------------------*//*     CLAW header                                      *//*------------------------------------------------------*/struct clawh {        __u16  length;     /* length of data read by preceding read CCW */        __u8   opcode;     /* equivalent read CCW */        __u8   flag;       /* flag of FF to indicate read was completed */};/*------------------------------------------------------*//*     CLAW Packing header   4 bytes                    *//*------------------------------------------------------*/struct clawph {       __u16 len;  	/* Length of Packed Data Area   */       __u8  flag;  	/* Reserved not used            */       __u8  link_num;	/* Link ID                      */};/*------------------------------------------------------*//*     CLAW Ending struct ccwbk                         *//*------------------------------------------------------*/struct endccw {	__u32     real;            /* real address of this block */       __u8      write1;          /* write 1 is active */        __u8      read1;           /* read 1 is active  */        __u16     reserved;        /* reserved for future use */        struct ccw1    write1_nop1;        struct ccw1    write1_nop2;        struct ccw1    write2_nop1;        struct ccw1    write2_nop2;        struct ccw1    read1_nop1;        struct ccw1    read1_nop2;        struct ccw1    read2_nop1;        struct ccw1    read2_nop2;};/*------------------------------------------------------*//*     CLAW struct ccwbk                                       *//*------------------------------------------------------*/struct ccwbk {        void   *next;        /* pointer to next ccw block */        __u32     real;         /* real address of this ccw */        void      *p_buffer;    /* virtual address of data */        struct clawh     header;       /* claw header */        struct ccw1    write;   /* write CCW    */        struct ccw1    w_read_FF; /* read FF */        struct ccw1    w_TIC_1;        /* TIC */        struct ccw1    read;         /* read CCW  */        struct ccw1    read_h;        /* read header */        struct ccw1    signal;       /* signal SMOD  */        struct ccw1    r_TIC_1;        /* TIC1 */        struct ccw1    r_read_FF;      /* read FF  */        struct ccw1    r_TIC_2;        /* TIC2 */};/*------------------------------------------------------*//*     CLAW control block                               *//*------------------------------------------------------*/struct clawctl {        __u8    command;      /* control command */        __u8    version;      /* CLAW protocol version */        __u8    linkid;       /* link ID   */        __u8    correlator;   /* correlator */        __u8    rc;           /* return code */        __u8    reserved1;    /* reserved */        __u8    reserved2;    /* reserved */        __u8    reserved3;    /* reserved */        __u8    data[24];     /* command specific fields */};/*------------------------------------------------------*//*     Data for SYSTEMVALIDATE command                  *//*------------------------------------------------------*/struct sysval  {        char    WS_name[8];        /* Workstation System name  */        char    host_name[8];      /* Host system name     */        __u16   read_frame_size;   /* read frame size */        __u16   write_frame_size;  /* write frame size */        __u8    reserved[4];       /* reserved */};/*------------------------------------------------------*//*     Data for Connect command                         *//*------------------------------------------------------*/struct conncmd  {        char     WS_name[8];       /* Workstation application name  */        char     host_name[8];     /* Host application name      */        __u16    reserved1[2];     /* read frame size */        __u8     reserved2[4];     /* reserved  */};/*------------------------------------------------------*//*     Data for CLAW error                              *//*------------------------------------------------------*/struct clawwerror  {        char      reserved1[8];   /* reserved */        char      reserved2[8];   /* reserved  */        char      reserved3[8];   /* reserved  */};/*------------------------------------------------------*//*     Data buffer for CLAW                             *//*------------------------------------------------------*/struct clawbuf  {       char      buffer[MAX_ENVELOPE_SIZE];   /* data buffer */};/*------------------------------------------------------*//*     Channel control block for read and write channel *//*------------------------------------------------------*/struct chbk {        unsigned int        devno;        int                 irq;	char 		    id[CLAW_ID_SIZE];       __u32               IO_active;        __u8                claw_state;        struct irb          *irb;       	struct ccw_device   *cdev;  /* pointer to the channel device */	struct net_device   *ndev;        wait_queue_head_t   wait;        struct tasklet_struct    tasklet;        struct timer_list   timer;        unsigned long       flag_a;    /* atomic flags */#define CLAW_BH_ACTIVE      0        unsigned long       flag_b;    /* atomic flags */#define CLAW_WRITE_ACTIVE   0        __u8                last_dstat;        __u8                flag;	struct sk_buff_head collect_queue;	spinlock_t collect_lock;#define CLAW_WRITE      0x02      /* - Set if this is a write channel */#define CLAW_READ	0x01      /* - Set if this is a read channel  */#define CLAW_TIMER      0x80      /* - Set if timer made the wake_up  */};/*--------------------------------------------------------------**           CLAW  environment block                             **---------------------------------------------------------------*/struct claw_env {        unsigned int            devno[2];       /* device number */        char                    host_name[9];   /* Host name */        char                    adapter_name [9]; /* adapter name */        char                    api_type[9];    /* TCPIP, API or PACKED */        void                    *p_priv;        /* privptr */        __u16                   read_buffers;   /* read buffer number */        __u16                   write_buffers;  /* write buffer number */        __u16                   read_size;      /* read buffer size */        __u16                   write_size;     /* write buffer size */        __u16                   dev_id;         /* device ident */	__u8			packing;	/* are we packing? */	volatile __u8		queme_switch;   /* gate for imed packing  */	volatile unsigned long	pk_delay;	/* Delay for adaptive packing */        __u8                    in_use;         /* device active flag */        struct net_device       *ndev;    	/* backward ptr to the net dev*/};/*--------------------------------------------------------------**           CLAW  main control block                            **---------------------------------------------------------------*/struct claw_privbk {        void *p_buff_ccw;        __u32      p_buff_ccw_num;        void  *p_buff_read;        __u32      p_buff_read_num;        __u32      p_buff_pages_perread;        void  *p_buff_write;        __u32      p_buff_write_num;        __u32      p_buff_pages_perwrite;        long       active_link_ID;           /* Active logical link ID */        struct ccwbk *p_write_free_chain;     /* pointer to free ccw chain */        struct ccwbk *p_write_active_first;   /* ptr to the first write ccw */        struct ccwbk *p_write_active_last;    /* ptr to the last write ccw */        struct ccwbk *p_read_active_first;    /* ptr to the first read ccw */        struct ccwbk *p_read_active_last;     /* ptr to the last read ccw */        struct endccw *p_end_ccw;              /*ptr to ending ccw */        struct ccwbk *p_claw_signal_blk;      /* ptr to signal block */        __u32      write_free_count;       /* number of free bufs for write */	struct     net_device_stats  stats; /* 	 device status    */        struct chbk channel[2];            /* Channel control blocks */        __u8       mtc_skipping;        int        mtc_offset;        int        mtc_logical_link;        void       *p_mtc_envelope;	struct	   sk_buff	*pk_skb;	/* packing buffer    */	int	   pk_cnt;        struct clawctl ctl_bk;        struct claw_env *p_env;        __u8       system_validate_comp;        __u8       release_pend;        __u8      checksum_received_ip_pkts;	__u8      buffs_alloc;        struct endccw  end_ccw;        unsigned long  tbusy;};/************************************************************//* define global constants                                  *//************************************************************/#define CCWBK_SIZE sizeof(struct ccwbk)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -