aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/gianfar_sysfs.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/gianfar_sysfs.c')
-rw-r--r--drivers/net/gianfar_sysfs.c50
1 files changed, 25 insertions, 25 deletions
diff --git a/drivers/net/gianfar_sysfs.c b/drivers/net/gianfar_sysfs.c
index adea11ea4038..4b726f61314e 100644
--- a/drivers/net/gianfar_sysfs.c
+++ b/drivers/net/gianfar_sysfs.c
@@ -51,7 +51,6 @@ static ssize_t gfar_set_bd_stash(struct device *dev,
51{ 51{
52 struct gfar_private *priv = netdev_priv(to_net_dev(dev)); 52 struct gfar_private *priv = netdev_priv(to_net_dev(dev));
53 struct gfar __iomem *regs = priv->gfargrp.regs; 53 struct gfar __iomem *regs = priv->gfargrp.regs;
54 struct gfar_priv_rx_q *rx_queue = NULL;
55 int new_setting = 0; 54 int new_setting = 0;
56 u32 temp; 55 u32 temp;
57 unsigned long flags; 56 unsigned long flags;
@@ -59,7 +58,6 @@ static ssize_t gfar_set_bd_stash(struct device *dev,
59 if (!(priv->device_flags & FSL_GIANFAR_DEV_HAS_BD_STASHING)) 58 if (!(priv->device_flags & FSL_GIANFAR_DEV_HAS_BD_STASHING))
60 return count; 59 return count;
61 60
62 rx_queue = priv->rx_queue;
63 61
64 /* Find out the new setting */ 62 /* Find out the new setting */
65 if (!strncmp("on", buf, count - 1) || !strncmp("1", buf, count - 1)) 63 if (!strncmp("on", buf, count - 1) || !strncmp("1", buf, count - 1))
@@ -70,7 +68,9 @@ static ssize_t gfar_set_bd_stash(struct device *dev,
70 else 68 else
71 return count; 69 return count;
72 70
73 spin_lock_irqsave(&rx_queue->rxlock, flags); 71
72 local_irq_save(flags);
73 lock_rx_qs(priv);
74 74
75 /* Set the new stashing value */ 75 /* Set the new stashing value */
76 priv->bd_stash_en = new_setting; 76 priv->bd_stash_en = new_setting;
@@ -84,7 +84,8 @@ static ssize_t gfar_set_bd_stash(struct device *dev,
84 84
85 gfar_write(&regs->attr, temp); 85 gfar_write(&regs->attr, temp);
86 86
87 spin_unlock_irqrestore(&rx_queue->rxlock, flags); 87 unlock_rx_qs(priv);
88 local_irq_restore(flags);
88 89
89 return count; 90 return count;
90} 91}
@@ -105,7 +106,6 @@ static ssize_t gfar_set_rx_stash_size(struct device *dev,
105{ 106{
106 struct gfar_private *priv = netdev_priv(to_net_dev(dev)); 107 struct gfar_private *priv = netdev_priv(to_net_dev(dev));
107 struct gfar __iomem *regs = priv->gfargrp.regs; 108 struct gfar __iomem *regs = priv->gfargrp.regs;
108 struct gfar_priv_rx_q *rx_queue = NULL;
109 unsigned int length = simple_strtoul(buf, NULL, 0); 109 unsigned int length = simple_strtoul(buf, NULL, 0);
110 u32 temp; 110 u32 temp;
111 unsigned long flags; 111 unsigned long flags;
@@ -113,9 +113,9 @@ static ssize_t gfar_set_rx_stash_size(struct device *dev,
113 if (!(priv->device_flags & FSL_GIANFAR_DEV_HAS_BUF_STASHING)) 113 if (!(priv->device_flags & FSL_GIANFAR_DEV_HAS_BUF_STASHING))
114 return count; 114 return count;
115 115
116 rx_queue = priv->rx_queue; 116 local_irq_save(flags);
117 lock_rx_qs(priv);
117 118
118 spin_lock_irqsave(&rx_queue->rxlock, flags);
119 if (length > priv->rx_buffer_size) 119 if (length > priv->rx_buffer_size)
120 goto out; 120 goto out;
121 121
@@ -140,7 +140,8 @@ static ssize_t gfar_set_rx_stash_size(struct device *dev,
140 gfar_write(&regs->attr, temp); 140 gfar_write(&regs->attr, temp);
141 141
142out: 142out:
143 spin_unlock_irqrestore(&rx_queue->rxlock, flags); 143 unlock_rx_qs(priv);
144 local_irq_restore(flags);
144 145
145 return count; 146 return count;
146} 147}
@@ -164,7 +165,6 @@ static ssize_t gfar_set_rx_stash_index(struct device *dev,
164{ 165{
165 struct gfar_private *priv = netdev_priv(to_net_dev(dev)); 166 struct gfar_private *priv = netdev_priv(to_net_dev(dev));
166 struct gfar __iomem *regs = priv->gfargrp.regs; 167 struct gfar __iomem *regs = priv->gfargrp.regs;
167 struct gfar_priv_rx_q *rx_queue = NULL;
168 unsigned short index = simple_strtoul(buf, NULL, 0); 168 unsigned short index = simple_strtoul(buf, NULL, 0);
169 u32 temp; 169 u32 temp;
170 unsigned long flags; 170 unsigned long flags;
@@ -172,9 +172,9 @@ static ssize_t gfar_set_rx_stash_index(struct device *dev,
172 if (!(priv->device_flags & FSL_GIANFAR_DEV_HAS_BUF_STASHING)) 172 if (!(priv->device_flags & FSL_GIANFAR_DEV_HAS_BUF_STASHING))
173 return count; 173 return count;
174 174
175 rx_queue = priv->rx_queue; 175 local_irq_save(flags);
176 lock_rx_qs(priv);
176 177
177 spin_lock_irqsave(&rx_queue->rxlock, flags);
178 if (index > priv->rx_stash_size) 178 if (index > priv->rx_stash_size)
179 goto out; 179 goto out;
180 180
@@ -189,7 +189,8 @@ static ssize_t gfar_set_rx_stash_index(struct device *dev,
189 gfar_write(&regs->attreli, flags); 189 gfar_write(&regs->attreli, flags);
190 190
191out: 191out:
192 spin_unlock_irqrestore(&rx_queue->rxlock, flags); 192 unlock_rx_qs(priv);
193 local_irq_restore(flags);
193 194
194 return count; 195 return count;
195} 196}
@@ -212,7 +213,6 @@ static ssize_t gfar_set_fifo_threshold(struct device *dev,
212{ 213{
213 struct gfar_private *priv = netdev_priv(to_net_dev(dev)); 214 struct gfar_private *priv = netdev_priv(to_net_dev(dev));
214 struct gfar __iomem *regs = priv->gfargrp.regs; 215 struct gfar __iomem *regs = priv->gfargrp.regs;
215 struct gfar_priv_tx_q *tx_queue = NULL;
216 unsigned int length = simple_strtoul(buf, NULL, 0); 216 unsigned int length = simple_strtoul(buf, NULL, 0);
217 u32 temp; 217 u32 temp;
218 unsigned long flags; 218 unsigned long flags;
@@ -220,9 +220,8 @@ static ssize_t gfar_set_fifo_threshold(struct device *dev,
220 if (length > GFAR_MAX_FIFO_THRESHOLD) 220 if (length > GFAR_MAX_FIFO_THRESHOLD)
221 return count; 221 return count;
222 222
223 tx_queue = priv->tx_queue; 223 local_irq_save(flags);
224 224 lock_tx_qs(priv);
225 spin_lock_irqsave(&tx_queue->txlock, flags);
226 225
227 priv->fifo_threshold = length; 226 priv->fifo_threshold = length;
228 227
@@ -231,7 +230,8 @@ static ssize_t gfar_set_fifo_threshold(struct device *dev,
231 temp |= length; 230 temp |= length;
232 gfar_write(&regs->fifo_tx_thr, temp); 231 gfar_write(&regs->fifo_tx_thr, temp);
233 232
234 spin_unlock_irqrestore(&tx_queue->txlock, flags); 233 unlock_tx_qs(priv);
234 local_irq_restore(flags);
235 235
236 return count; 236 return count;
237} 237}
@@ -253,7 +253,6 @@ static ssize_t gfar_set_fifo_starve(struct device *dev,
253{ 253{
254 struct gfar_private *priv = netdev_priv(to_net_dev(dev)); 254 struct gfar_private *priv = netdev_priv(to_net_dev(dev));
255 struct gfar __iomem *regs = priv->gfargrp.regs; 255 struct gfar __iomem *regs = priv->gfargrp.regs;
256 struct gfar_priv_tx_q *tx_queue = NULL;
257 unsigned int num = simple_strtoul(buf, NULL, 0); 256 unsigned int num = simple_strtoul(buf, NULL, 0);
258 u32 temp; 257 u32 temp;
259 unsigned long flags; 258 unsigned long flags;
@@ -261,8 +260,8 @@ static ssize_t gfar_set_fifo_starve(struct device *dev,
261 if (num > GFAR_MAX_FIFO_STARVE) 260 if (num > GFAR_MAX_FIFO_STARVE)
262 return count; 261 return count;
263 262
264 tx_queue = priv->tx_queue; 263 local_irq_save(flags);
265 spin_lock_irqsave(&tx_queue->txlock, flags); 264 lock_tx_qs(priv);
266 265
267 priv->fifo_starve = num; 266 priv->fifo_starve = num;
268 267
@@ -271,7 +270,8 @@ static ssize_t gfar_set_fifo_starve(struct device *dev,
271 temp |= num; 270 temp |= num;
272 gfar_write(&regs->fifo_tx_starve, temp); 271 gfar_write(&regs->fifo_tx_starve, temp);
273 272
274 spin_unlock_irqrestore(&tx_queue->txlock, flags); 273 unlock_tx_qs(priv);
274 local_irq_restore(flags);
275 275
276 return count; 276 return count;
277} 277}
@@ -294,7 +294,6 @@ static ssize_t gfar_set_fifo_starve_off(struct device *dev,
294{ 294{
295 struct gfar_private *priv = netdev_priv(to_net_dev(dev)); 295 struct gfar_private *priv = netdev_priv(to_net_dev(dev));
296 struct gfar __iomem *regs = priv->gfargrp.regs; 296 struct gfar __iomem *regs = priv->gfargrp.regs;
297 struct gfar_priv_tx_q *tx_queue = NULL;
298 unsigned int num = simple_strtoul(buf, NULL, 0); 297 unsigned int num = simple_strtoul(buf, NULL, 0);
299 u32 temp; 298 u32 temp;
300 unsigned long flags; 299 unsigned long flags;
@@ -302,8 +301,8 @@ static ssize_t gfar_set_fifo_starve_off(struct device *dev,
302 if (num > GFAR_MAX_FIFO_STARVE_OFF) 301 if (num > GFAR_MAX_FIFO_STARVE_OFF)
303 return count; 302 return count;
304 303
305 tx_queue = priv->tx_queue; 304 local_irq_save(flags);
306 spin_lock_irqsave(&tx_queue->txlock, flags); 305 lock_tx_qs(priv);
307 306
308 priv->fifo_starve_off = num; 307 priv->fifo_starve_off = num;
309 308
@@ -312,7 +311,8 @@ static ssize_t gfar_set_fifo_starve_off(struct device *dev,
312 temp |= num; 311 temp |= num;
313 gfar_write(&regs->fifo_tx_starve_shutoff, temp); 312 gfar_write(&regs->fifo_tx_starve_shutoff, temp);
314 313
315 spin_unlock_irqrestore(&tx_queue->txlock, flags); 314 unlock_tx_qs(priv);
315 local_irq_restore(flags);
316 316
317 return count; 317 return count;
318} 318}