Ursula Braun says: ==================== s390: network patches for net-next here are some s390 related patches for net-next ==================== Signed-off-by: David S. Miller <davem@davemloft.net>tirimbino
commit
b656cc64cf
File diff suppressed because it is too large
Load Diff
@ -1,348 +0,0 @@ |
||||
/*******************************************************
|
||||
* Define constants * |
||||
* * |
||||
********************************************************/ |
||||
|
||||
/*-----------------------------------------------------*
|
||||
* 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 command 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_CHANNEL 0 |
||||
#define WRITE_CHANNEL 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 20+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 { \
|
||||
if (debug_level_enabled(claw_dbf_##name, level)) { \
|
||||
sprintf(debug_buffer, text); \
|
||||
debug_text_event(claw_dbf_##name, level, \
|
||||
debug_buffer); \
|
||||
} \
|
||||
} while (0) |
||||
|
||||
/**
|
||||
* Enum for classifying detected devices. |
||||
*/ |
||||
enum claw_channel_types { |
||||
/* Device is not a channel */ |
||||
claw_channel_type_none, |
||||
|
||||
/* Device is a CLAW channel device */ |
||||
claw_channel_type_claw |
||||
}; |
||||
|
||||
|
||||
/*******************************************************
|
||||
* 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? */ |
||||
__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) |
||||
|
||||
|
Loading…
Reference in new issue