diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/asm-powerpc/ucc_fast.h | 3 | ||||
-rw-r--r-- | include/linux/fsl_devices.h | 39 | ||||
-rw-r--r-- | include/linux/hdlc.h | 3 | ||||
-rw-r--r-- | include/linux/pci_ids.h | 2 | ||||
-rw-r--r-- | include/linux/phy.h | 1 | ||||
-rw-r--r-- | include/linux/wireless.h | 2 | ||||
-rw-r--r-- | include/net/ieee80211.h | 4 | ||||
-rw-r--r-- | include/net/ieee80211_crypt.h | 4 | ||||
-rw-r--r-- | include/net/ieee80211_radiotap.h | 77 |
9 files changed, 64 insertions, 71 deletions
diff --git a/include/asm-powerpc/ucc_fast.h b/include/asm-powerpc/ucc_fast.h index 39d1c90fd2ca..f529f70b1d82 100644 --- a/include/asm-powerpc/ucc_fast.h +++ b/include/asm-powerpc/ucc_fast.h | |||
@@ -159,6 +159,9 @@ struct ucc_fast_private { | |||
159 | struct ucc_fast *uf_regs; /* a pointer to memory map of UCC regs. */ | 159 | struct ucc_fast *uf_regs; /* a pointer to memory map of UCC regs. */ |
160 | u32 *p_ucce; /* a pointer to the event register in memory. */ | 160 | u32 *p_ucce; /* a pointer to the event register in memory. */ |
161 | u32 *p_uccm; /* a pointer to the mask register in memory. */ | 161 | u32 *p_uccm; /* a pointer to the mask register in memory. */ |
162 | #ifdef CONFIG_UGETH_TX_ON_DEMAND | ||
163 | u16 *p_utodr; /* pointer to the transmit on demand register */ | ||
164 | #endif | ||
162 | int enabled_tx; /* Whether channel is enabled for Tx (ENT) */ | 165 | int enabled_tx; /* Whether channel is enabled for Tx (ENT) */ |
163 | int enabled_rx; /* Whether channel is enabled for Rx (ENR) */ | 166 | int enabled_rx; /* Whether channel is enabled for Rx (ENR) */ |
164 | int stopped_tx; /* Whether channel has been stopped for Tx | 167 | int stopped_tx; /* Whether channel has been stopped for Tx |
diff --git a/include/linux/fsl_devices.h b/include/linux/fsl_devices.h index abb64c437f6f..73710d617775 100644 --- a/include/linux/fsl_devices.h +++ b/include/linux/fsl_devices.h | |||
@@ -120,44 +120,5 @@ struct fsl_spi_platform_data { | |||
120 | u32 sysclk; | 120 | u32 sysclk; |
121 | }; | 121 | }; |
122 | 122 | ||
123 | /* Ethernet interface (phy management and speed) | ||
124 | */ | ||
125 | enum enet_interface { | ||
126 | ENET_10_MII, /* 10 Base T, MII interface */ | ||
127 | ENET_10_RMII, /* 10 Base T, RMII interface */ | ||
128 | ENET_10_RGMII, /* 10 Base T, RGMII interface */ | ||
129 | ENET_100_MII, /* 100 Base T, MII interface */ | ||
130 | ENET_100_RMII, /* 100 Base T, RMII interface */ | ||
131 | ENET_100_RGMII, /* 100 Base T, RGMII interface */ | ||
132 | ENET_1000_GMII, /* 1000 Base T, GMII interface */ | ||
133 | ENET_1000_RGMII, /* 1000 Base T, RGMII interface */ | ||
134 | ENET_1000_TBI, /* 1000 Base T, TBI interface */ | ||
135 | ENET_1000_RTBI /* 1000 Base T, RTBI interface */ | ||
136 | }; | ||
137 | |||
138 | struct ucc_geth_platform_data { | ||
139 | /* device specific information */ | ||
140 | u32 device_flags; | ||
141 | u32 phy_reg_addr; | ||
142 | |||
143 | /* board specific information */ | ||
144 | u32 board_flags; | ||
145 | u8 rx_clock; | ||
146 | u8 tx_clock; | ||
147 | u32 phy_id; | ||
148 | enum enet_interface phy_interface; | ||
149 | u32 phy_interrupt; | ||
150 | u8 mac_addr[6]; | ||
151 | }; | ||
152 | |||
153 | /* Flags related to UCC Gigabit Ethernet device features */ | ||
154 | #define FSL_UGETH_DEV_HAS_GIGABIT 0x00000001 | ||
155 | #define FSL_UGETH_DEV_HAS_COALESCE 0x00000002 | ||
156 | #define FSL_UGETH_DEV_HAS_RMON 0x00000004 | ||
157 | |||
158 | /* Flags in ucc_geth_platform_data */ | ||
159 | #define FSL_UGETH_BRD_HAS_PHY_INTR 0x00000001 | ||
160 | /* if not set use a timer */ | ||
161 | |||
162 | #endif /* _FSL_DEVICE_H_ */ | 123 | #endif /* _FSL_DEVICE_H_ */ |
163 | #endif /* __KERNEL__ */ | 124 | #endif /* __KERNEL__ */ |
diff --git a/include/linux/hdlc.h b/include/linux/hdlc.h index 0fe562af9c8c..db390c511ada 100644 --- a/include/linux/hdlc.h +++ b/include/linux/hdlc.h | |||
@@ -43,8 +43,7 @@ struct hdlc_proto { | |||
43 | void (*stop)(struct net_device *dev); /* if open & !DCD */ | 43 | void (*stop)(struct net_device *dev); /* if open & !DCD */ |
44 | void (*detach)(struct net_device *dev); | 44 | void (*detach)(struct net_device *dev); |
45 | int (*ioctl)(struct net_device *dev, struct ifreq *ifr); | 45 | int (*ioctl)(struct net_device *dev, struct ifreq *ifr); |
46 | unsigned short (*type_trans)(struct sk_buff *skb, | 46 | __be16 (*type_trans)(struct sk_buff *skb, struct net_device *dev); |
47 | struct net_device *dev); | ||
48 | struct module *module; | 47 | struct module *module; |
49 | struct hdlc_proto *next; /* next protocol in the list */ | 48 | struct hdlc_proto *next; /* next protocol in the list */ |
50 | }; | 49 | }; |
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index 5f21b0f68b42..1b0ddbb8a804 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h | |||
@@ -1458,6 +1458,8 @@ | |||
1458 | 1458 | ||
1459 | #define PCI_VENDOR_ID_TOSHIBA_2 0x102f | 1459 | #define PCI_VENDOR_ID_TOSHIBA_2 0x102f |
1460 | #define PCI_DEVICE_ID_TOSHIBA_TC35815CF 0x0030 | 1460 | #define PCI_DEVICE_ID_TOSHIBA_TC35815CF 0x0030 |
1461 | #define PCI_DEVICE_ID_TOSHIBA_TC35815_NWU 0x0031 | ||
1462 | #define PCI_DEVICE_ID_TOSHIBA_TC35815_TX4939 0x0032 | ||
1461 | #define PCI_DEVICE_ID_TOSHIBA_TC86C001_IDE 0x0105 | 1463 | #define PCI_DEVICE_ID_TOSHIBA_TC86C001_IDE 0x0105 |
1462 | #define PCI_DEVICE_ID_TOSHIBA_TC86C001_MISC 0x0108 | 1464 | #define PCI_DEVICE_ID_TOSHIBA_TC86C001_MISC 0x0108 |
1463 | #define PCI_DEVICE_ID_TOSHIBA_SPIDER_NET 0x01b3 | 1465 | #define PCI_DEVICE_ID_TOSHIBA_SPIDER_NET 0x01b3 |
diff --git a/include/linux/phy.h b/include/linux/phy.h index edd4c88ca7d8..2a659789f9ca 100644 --- a/include/linux/phy.h +++ b/include/linux/phy.h | |||
@@ -55,6 +55,7 @@ typedef enum { | |||
55 | PHY_INTERFACE_MODE_TBI, | 55 | PHY_INTERFACE_MODE_TBI, |
56 | PHY_INTERFACE_MODE_RMII, | 56 | PHY_INTERFACE_MODE_RMII, |
57 | PHY_INTERFACE_MODE_RGMII, | 57 | PHY_INTERFACE_MODE_RGMII, |
58 | PHY_INTERFACE_MODE_RGMII_ID, | ||
58 | PHY_INTERFACE_MODE_RTBI | 59 | PHY_INTERFACE_MODE_RTBI |
59 | } phy_interface_t; | 60 | } phy_interface_t; |
60 | 61 | ||
diff --git a/include/linux/wireless.h b/include/linux/wireless.h index 48759b2f57d7..0987aa7a6cf5 100644 --- a/include/linux/wireless.h +++ b/include/linux/wireless.h | |||
@@ -186,7 +186,7 @@ | |||
186 | * - Wireless Event capability in struct iw_range | 186 | * - Wireless Event capability in struct iw_range |
187 | * - Add support for relative TxPower (yick !) | 187 | * - Add support for relative TxPower (yick !) |
188 | * | 188 | * |
189 | * V17 to V18 (From Jouni Malinen <jkmaline@cc.hut.fi>) | 189 | * V17 to V18 (From Jouni Malinen <j@w1.fi>) |
190 | * ---------- | 190 | * ---------- |
191 | * - Add support for WPA/WPA2 | 191 | * - Add support for WPA/WPA2 |
192 | * - Add extended encoding configuration (SIOCSIWENCODEEXT and | 192 | * - Add extended encoding configuration (SIOCSIWENCODEEXT and |
diff --git a/include/net/ieee80211.h b/include/net/ieee80211.h index e02d85f56e60..d56b2923d61a 100644 --- a/include/net/ieee80211.h +++ b/include/net/ieee80211.h | |||
@@ -6,8 +6,8 @@ | |||
6 | * LAN access point) driver for Intersil Prism2/2.5/3. | 6 | * LAN access point) driver for Intersil Prism2/2.5/3. |
7 | * | 7 | * |
8 | * Copyright (c) 2001-2002, SSH Communications Security Corp and Jouni Malinen | 8 | * Copyright (c) 2001-2002, SSH Communications Security Corp and Jouni Malinen |
9 | * <jkmaline@cc.hut.fi> | 9 | * <j@w1.fi> |
10 | * Copyright (c) 2002-2003, Jouni Malinen <jkmaline@cc.hut.fi> | 10 | * Copyright (c) 2002-2003, Jouni Malinen <j@w1.fi> |
11 | * | 11 | * |
12 | * Adaption to a generic IEEE 802.11 stack by James Ketrenos | 12 | * Adaption to a generic IEEE 802.11 stack by James Ketrenos |
13 | * <jketreno@linux.intel.com> | 13 | * <jketreno@linux.intel.com> |
diff --git a/include/net/ieee80211_crypt.h b/include/net/ieee80211_crypt.h index eb476414fd72..b3d65e0bedd3 100644 --- a/include/net/ieee80211_crypt.h +++ b/include/net/ieee80211_crypt.h | |||
@@ -3,8 +3,8 @@ | |||
3 | * for Intersil Prism2/2.5/3. | 3 | * for Intersil Prism2/2.5/3. |
4 | * | 4 | * |
5 | * Copyright (c) 2001-2002, SSH Communications Security Corp and Jouni Malinen | 5 | * Copyright (c) 2001-2002, SSH Communications Security Corp and Jouni Malinen |
6 | * <jkmaline@cc.hut.fi> | 6 | * <j@w1.fi> |
7 | * Copyright (c) 2002-2003, Jouni Malinen <jkmaline@cc.hut.fi> | 7 | * Copyright (c) 2002-2003, Jouni Malinen <j@w1.fi> |
8 | * | 8 | * |
9 | * Adaption to a generic IEEE 802.11 stack by James Ketrenos | 9 | * Adaption to a generic IEEE 802.11 stack by James Ketrenos |
10 | * <jketreno@linux.intel.com> | 10 | * <jketreno@linux.intel.com> |
diff --git a/include/net/ieee80211_radiotap.h b/include/net/ieee80211_radiotap.h index 429b73892a5f..a0c2b41a24d7 100644 --- a/include/net/ieee80211_radiotap.h +++ b/include/net/ieee80211_radiotap.h | |||
@@ -66,7 +66,9 @@ | |||
66 | */ | 66 | */ |
67 | #define IEEE80211_RADIOTAP_HDRLEN 64 | 67 | #define IEEE80211_RADIOTAP_HDRLEN 64 |
68 | 68 | ||
69 | /* The radio capture header precedes the 802.11 header. */ | 69 | /* The radio capture header precedes the 802.11 header. |
70 | * All data in the header is little endian on all platforms. | ||
71 | */ | ||
70 | struct ieee80211_radiotap_header { | 72 | struct ieee80211_radiotap_header { |
71 | u8 it_version; /* Version 0. Only increases | 73 | u8 it_version; /* Version 0. Only increases |
72 | * for drastic changes, | 74 | * for drastic changes, |
@@ -74,12 +76,12 @@ struct ieee80211_radiotap_header { | |||
74 | * new fields does not count. | 76 | * new fields does not count. |
75 | */ | 77 | */ |
76 | u8 it_pad; | 78 | u8 it_pad; |
77 | u16 it_len; /* length of the whole | 79 | __le16 it_len; /* length of the whole |
78 | * header in bytes, including | 80 | * header in bytes, including |
79 | * it_version, it_pad, | 81 | * it_version, it_pad, |
80 | * it_len, and data fields. | 82 | * it_len, and data fields. |
81 | */ | 83 | */ |
82 | u32 it_present; /* A bitmap telling which | 84 | __le32 it_present; /* A bitmap telling which |
83 | * fields are present. Set bit 31 | 85 | * fields are present. Set bit 31 |
84 | * (0x80000000) to extend the | 86 | * (0x80000000) to extend the |
85 | * bitmap by another 32 bits. | 87 | * bitmap by another 32 bits. |
@@ -88,89 +90,102 @@ struct ieee80211_radiotap_header { | |||
88 | */ | 90 | */ |
89 | }; | 91 | }; |
90 | 92 | ||
91 | /* Name Data type Units | 93 | /* Name Data type Units |
92 | * ---- --------- ----- | 94 | * ---- --------- ----- |
93 | * | 95 | * |
94 | * IEEE80211_RADIOTAP_TSFT u64 microseconds | 96 | * IEEE80211_RADIOTAP_TSFT __le64 microseconds |
95 | * | 97 | * |
96 | * Value in microseconds of the MAC's 64-bit 802.11 Time | 98 | * Value in microseconds of the MAC's 64-bit 802.11 Time |
97 | * Synchronization Function timer when the first bit of the | 99 | * Synchronization Function timer when the first bit of the |
98 | * MPDU arrived at the MAC. For received frames, only. | 100 | * MPDU arrived at the MAC. For received frames, only. |
99 | * | 101 | * |
100 | * IEEE80211_RADIOTAP_CHANNEL 2 x u16 MHz, bitmap | 102 | * IEEE80211_RADIOTAP_CHANNEL 2 x __le16 MHz, bitmap |
101 | * | 103 | * |
102 | * Tx/Rx frequency in MHz, followed by flags (see below). | 104 | * Tx/Rx frequency in MHz, followed by flags (see below). |
103 | * | 105 | * |
104 | * IEEE80211_RADIOTAP_FHSS u16 see below | 106 | * IEEE80211_RADIOTAP_FHSS __le16 see below |
105 | * | 107 | * |
106 | * For frequency-hopping radios, the hop set (first byte) | 108 | * For frequency-hopping radios, the hop set (first byte) |
107 | * and pattern (second byte). | 109 | * and pattern (second byte). |
108 | * | 110 | * |
109 | * IEEE80211_RADIOTAP_RATE u8 500kb/s | 111 | * IEEE80211_RADIOTAP_RATE u8 500kb/s |
110 | * | 112 | * |
111 | * Tx/Rx data rate | 113 | * Tx/Rx data rate |
112 | * | 114 | * |
113 | * IEEE80211_RADIOTAP_DBM_ANTSIGNAL int8_t decibels from | 115 | * IEEE80211_RADIOTAP_DBM_ANTSIGNAL s8 decibels from |
114 | * one milliwatt (dBm) | 116 | * one milliwatt (dBm) |
115 | * | 117 | * |
116 | * RF signal power at the antenna, decibel difference from | 118 | * RF signal power at the antenna, decibel difference from |
117 | * one milliwatt. | 119 | * one milliwatt. |
118 | * | 120 | * |
119 | * IEEE80211_RADIOTAP_DBM_ANTNOISE int8_t decibels from | 121 | * IEEE80211_RADIOTAP_DBM_ANTNOISE s8 decibels from |
120 | * one milliwatt (dBm) | 122 | * one milliwatt (dBm) |
121 | * | 123 | * |
122 | * RF noise power at the antenna, decibel difference from one | 124 | * RF noise power at the antenna, decibel difference from one |
123 | * milliwatt. | 125 | * milliwatt. |
124 | * | 126 | * |
125 | * IEEE80211_RADIOTAP_DB_ANTSIGNAL u8 decibel (dB) | 127 | * IEEE80211_RADIOTAP_DB_ANTSIGNAL u8 decibel (dB) |
126 | * | 128 | * |
127 | * RF signal power at the antenna, decibel difference from an | 129 | * RF signal power at the antenna, decibel difference from an |
128 | * arbitrary, fixed reference. | 130 | * arbitrary, fixed reference. |
129 | * | 131 | * |
130 | * IEEE80211_RADIOTAP_DB_ANTNOISE u8 decibel (dB) | 132 | * IEEE80211_RADIOTAP_DB_ANTNOISE u8 decibel (dB) |
131 | * | 133 | * |
132 | * RF noise power at the antenna, decibel difference from an | 134 | * RF noise power at the antenna, decibel difference from an |
133 | * arbitrary, fixed reference point. | 135 | * arbitrary, fixed reference point. |
134 | * | 136 | * |
135 | * IEEE80211_RADIOTAP_LOCK_QUALITY u16 unitless | 137 | * IEEE80211_RADIOTAP_LOCK_QUALITY __le16 unitless |
136 | * | 138 | * |
137 | * Quality of Barker code lock. Unitless. Monotonically | 139 | * Quality of Barker code lock. Unitless. Monotonically |
138 | * nondecreasing with "better" lock strength. Called "Signal | 140 | * nondecreasing with "better" lock strength. Called "Signal |
139 | * Quality" in datasheets. (Is there a standard way to measure | 141 | * Quality" in datasheets. (Is there a standard way to measure |
140 | * this?) | 142 | * this?) |
141 | * | 143 | * |
142 | * IEEE80211_RADIOTAP_TX_ATTENUATION u16 unitless | 144 | * IEEE80211_RADIOTAP_TX_ATTENUATION __le16 unitless |
143 | * | 145 | * |
144 | * Transmit power expressed as unitless distance from max | 146 | * Transmit power expressed as unitless distance from max |
145 | * power set at factory calibration. 0 is max power. | 147 | * power set at factory calibration. 0 is max power. |
146 | * Monotonically nondecreasing with lower power levels. | 148 | * Monotonically nondecreasing with lower power levels. |
147 | * | 149 | * |
148 | * IEEE80211_RADIOTAP_DB_TX_ATTENUATION u16 decibels (dB) | 150 | * IEEE80211_RADIOTAP_DB_TX_ATTENUATION __le16 decibels (dB) |
149 | * | 151 | * |
150 | * Transmit power expressed as decibel distance from max power | 152 | * Transmit power expressed as decibel distance from max power |
151 | * set at factory calibration. 0 is max power. Monotonically | 153 | * set at factory calibration. 0 is max power. Monotonically |
152 | * nondecreasing with lower power levels. | 154 | * nondecreasing with lower power levels. |
153 | * | 155 | * |
154 | * IEEE80211_RADIOTAP_DBM_TX_POWER int8_t decibels from | 156 | * IEEE80211_RADIOTAP_DBM_TX_POWER s8 decibels from |
155 | * one milliwatt (dBm) | 157 | * one milliwatt (dBm) |
156 | * | 158 | * |
157 | * Transmit power expressed as dBm (decibels from a 1 milliwatt | 159 | * Transmit power expressed as dBm (decibels from a 1 milliwatt |
158 | * reference). This is the absolute power level measured at | 160 | * reference). This is the absolute power level measured at |
159 | * the antenna port. | 161 | * the antenna port. |
160 | * | 162 | * |
161 | * IEEE80211_RADIOTAP_FLAGS u8 bitmap | 163 | * IEEE80211_RADIOTAP_FLAGS u8 bitmap |
162 | * | 164 | * |
163 | * Properties of transmitted and received frames. See flags | 165 | * Properties of transmitted and received frames. See flags |
164 | * defined below. | 166 | * defined below. |
165 | * | 167 | * |
166 | * IEEE80211_RADIOTAP_ANTENNA u8 antenna index | 168 | * IEEE80211_RADIOTAP_ANTENNA u8 antenna index |
167 | * | 169 | * |
168 | * Unitless indication of the Rx/Tx antenna for this packet. | 170 | * Unitless indication of the Rx/Tx antenna for this packet. |
169 | * The first antenna is antenna 0. | 171 | * The first antenna is antenna 0. |
170 | * | 172 | * |
171 | * IEEE80211_RADIOTAP_FCS u32 data | 173 | * IEEE80211_RADIOTAP_RX_FLAGS __le16 bitmap |
174 | * | ||
175 | * Properties of received frames. See flags defined below. | ||
176 | * | ||
177 | * IEEE80211_RADIOTAP_TX_FLAGS __le16 bitmap | ||
178 | * | ||
179 | * Properties of transmitted frames. See flags defined below. | ||
180 | * | ||
181 | * IEEE80211_RADIOTAP_RTS_RETRIES u8 data | ||
182 | * | ||
183 | * Number of rts retries a transmitted frame used. | ||
184 | * | ||
185 | * IEEE80211_RADIOTAP_DATA_RETRIES u8 data | ||
186 | * | ||
187 | * Number of unicast retries a transmitted frame used. | ||
172 | * | 188 | * |
173 | * FCS from frame in network byte order. | ||
174 | */ | 189 | */ |
175 | enum ieee80211_radiotap_type { | 190 | enum ieee80211_radiotap_type { |
176 | IEEE80211_RADIOTAP_TSFT = 0, | 191 | IEEE80211_RADIOTAP_TSFT = 0, |
@@ -187,7 +202,11 @@ enum ieee80211_radiotap_type { | |||
187 | IEEE80211_RADIOTAP_ANTENNA = 11, | 202 | IEEE80211_RADIOTAP_ANTENNA = 11, |
188 | IEEE80211_RADIOTAP_DB_ANTSIGNAL = 12, | 203 | IEEE80211_RADIOTAP_DB_ANTSIGNAL = 12, |
189 | IEEE80211_RADIOTAP_DB_ANTNOISE = 13, | 204 | IEEE80211_RADIOTAP_DB_ANTNOISE = 13, |
190 | IEEE80211_RADIOTAP_EXT = 31, | 205 | IEEE80211_RADIOTAP_RX_FLAGS = 14, |
206 | IEEE80211_RADIOTAP_TX_FLAGS = 15, | ||
207 | IEEE80211_RADIOTAP_RTS_RETRIES = 16, | ||
208 | IEEE80211_RADIOTAP_DATA_RETRIES = 17, | ||
209 | IEEE80211_RADIOTAP_EXT = 31 | ||
191 | }; | 210 | }; |
192 | 211 | ||
193 | /* Channel flags. */ | 212 | /* Channel flags. */ |
@@ -219,6 +238,14 @@ enum ieee80211_radiotap_type { | |||
219 | * 802.11 header and payload | 238 | * 802.11 header and payload |
220 | * (to 32-bit boundary) | 239 | * (to 32-bit boundary) |
221 | */ | 240 | */ |
241 | /* For IEEE80211_RADIOTAP_RX_FLAGS */ | ||
242 | #define IEEE80211_RADIOTAP_F_RX_BADFCS 0x0001 /* frame failed crc check */ | ||
243 | |||
244 | /* For IEEE80211_RADIOTAP_TX_FLAGS */ | ||
245 | #define IEEE80211_RADIOTAP_F_TX_FAIL 0x0001 /* failed due to excessive | ||
246 | * retries */ | ||
247 | #define IEEE80211_RADIOTAP_F_TX_CTS 0x0002 /* used cts 'protection' */ | ||
248 | #define IEEE80211_RADIOTAP_F_TX_RTS 0x0004 /* used rts/cts handshake */ | ||
222 | 249 | ||
223 | /* Ugly macro to convert literal channel numbers into their mhz equivalents | 250 | /* Ugly macro to convert literal channel numbers into their mhz equivalents |
224 | * There are certianly some conditions that will break this (like feeding it '30') | 251 | * There are certianly some conditions that will break this (like feeding it '30') |