1/*
2 * linux/drivers/s390/net/qeth_fs.h
3 *
4 * Linux on zSeries OSA Express and HiperSockets support.
5 *
6 * This header file contains definitions related to sysfs and procfs.
7 *
8 * Copyright 2000,2003 IBM Corporation
9 * Author(s): Thomas Spatzier <tspat@de.ibm.com>
10 *
11 */
12#ifndef __QETH_FS_H__
13#define __QETH_FS_H__
14
15#ifdef CONFIG_PROC_FS
16extern int
17qeth_create_procfs_entries(void);
18
19extern void
20qeth_remove_procfs_entries(void);
21#else
22static inline int
23qeth_create_procfs_entries(void)
24{
25	return 0;
26}
27
28static inline void
29qeth_remove_procfs_entries(void)
30{
31}
32#endif /* CONFIG_PROC_FS */
33
34extern int
35qeth_create_device_attributes(struct device *dev);
36
37extern void
38qeth_remove_device_attributes(struct device *dev);
39
40extern int
41qeth_create_device_attributes_osn(struct device *dev);
42
43extern void
44qeth_remove_device_attributes_osn(struct device *dev);
45
46extern int
47qeth_create_driver_attributes(void);
48
49extern void
50qeth_remove_driver_attributes(void);
51
52/*
53 * utility functions used in qeth_proc.c and qeth_sys.c
54 */
55
56static inline const char *
57qeth_get_checksum_str(struct qeth_card *card)
58{
59	if (card->options.checksum_type == SW_CHECKSUMMING)
60		return "sw";
61	else if (card->options.checksum_type == HW_CHECKSUMMING)
62		return "hw";
63	else
64		return "no";
65}
66
67static inline const char *
68qeth_get_prioq_str(struct qeth_card *card, char *buf)
69{
70	if (card->qdio.do_prio_queueing == QETH_NO_PRIO_QUEUEING)
71		sprintf(buf, "always_q_%i", card->qdio.default_out_queue);
72	else
73		strcpy(buf, (card->qdio.do_prio_queueing ==
74					QETH_PRIO_Q_ING_PREC)?
75				"by_prec." : "by_ToS");
76	return buf;
77}
78
79static inline const char *
80qeth_get_bufsize_str(struct qeth_card *card)
81{
82	if (card->qdio.in_buf_size == 16384)
83		return "16k";
84	else if (card->qdio.in_buf_size == 24576)
85		return "24k";
86	else if (card->qdio.in_buf_size == 32768)
87		return "32k";
88	else if (card->qdio.in_buf_size == 40960)
89		return "40k";
90	else
91		return "64k";
92}
93
94static inline const char *
95qeth_get_cardname(struct qeth_card *card)
96{
97 	if (card->info.guestlan) {
98 		switch (card->info.type) {
99 		case QETH_CARD_TYPE_OSAE:
100			return " Guest LAN QDIO";
101 		case QETH_CARD_TYPE_IQD:
102			return " Guest LAN Hiper";
103		default:
104			return " unknown";
105 		}
106	} else {
107		switch (card->info.type) {
108		case QETH_CARD_TYPE_OSAE:
109			return " OSD Express";
110		case QETH_CARD_TYPE_IQD:
111			return " HiperSockets";
112		case QETH_CARD_TYPE_OSN:
113			return " OSN QDIO";
114		default:
115			return " unknown";
116		}
117	}
118	return " n/a";
119}
120
121/* max length to be returned: 14 */
122static inline const char *
123qeth_get_cardname_short(struct qeth_card *card)
124{
125	if (card->info.guestlan){
126		switch (card->info.type){
127		case QETH_CARD_TYPE_OSAE:
128			return "GuestLAN QDIO";
129		case QETH_CARD_TYPE_IQD:
130			return "GuestLAN Hiper";
131		default:
132			return "unknown";
133		}
134	} else {
135		switch (card->info.type) {
136		case QETH_CARD_TYPE_OSAE:
137			switch (card->info.link_type) {
138			case QETH_LINK_TYPE_FAST_ETH:
139				return "OSD_100";
140			case QETH_LINK_TYPE_HSTR:
141				return "HSTR";
142			case QETH_LINK_TYPE_GBIT_ETH:
143				return "OSD_1000";
144			case QETH_LINK_TYPE_10GBIT_ETH:
145				return "OSD_10GIG";
146			case QETH_LINK_TYPE_LANE_ETH100:
147				return "OSD_FE_LANE";
148			case QETH_LINK_TYPE_LANE_TR:
149				return "OSD_TR_LANE";
150			case QETH_LINK_TYPE_LANE_ETH1000:
151				return "OSD_GbE_LANE";
152			case QETH_LINK_TYPE_LANE:
153				return "OSD_ATM_LANE";
154			default:
155				return "OSD_Express";
156			}
157		case QETH_CARD_TYPE_IQD:
158			return "HiperSockets";
159		case QETH_CARD_TYPE_OSN:
160			return "OSN";
161		default:
162			return "unknown";
163		}
164	}
165	return "n/a";
166}
167
168#endif /* __QETH_FS_H__ */
169