aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wan
diff options
context:
space:
mode:
authorKrzysztof Halasa <khc@pm.waw.pl>2005-11-10 19:10:30 -0500
committerJohn W. Linville <linville@tuxdriver.com>2005-11-16 14:11:11 -0500
commit1f7bad72c0ed8cf29d13bac81ceeba9e1ac05c66 (patch)
treed4c59ecdeb6b75cb71d852b4ee4c9c5c8cecee50 /drivers/net/wan
parentcd52d1ee9a92587b242d946a2300a3245d3b885a (diff)
[PATCH] Generic HDLC WAN drivers - disable netif_carrier_off()
As we are currently unable to fix the problem with carrier and protocol state signaling in net core I've to disable netif_carrier_off() calls used by WAN protocol drivers. The attached patch should make them working again. The remaining netif_carrier_*() calls in hdlc_fr.c are fine as they don't touch the physical device. Signed-off-by: Krzysztof Halasa <khc@pm.waw.pl> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wan')
-rw-r--r--drivers/net/wan/hdlc_cisco.c6
-rw-r--r--drivers/net/wan/hdlc_fr.c4
-rw-r--r--drivers/net/wan/hdlc_generic.c6
3 files changed, 16 insertions, 0 deletions
diff --git a/drivers/net/wan/hdlc_cisco.c b/drivers/net/wan/hdlc_cisco.c
index a01efa6d5c62..1fd04662c4fc 100644
--- a/drivers/net/wan/hdlc_cisco.c
+++ b/drivers/net/wan/hdlc_cisco.c
@@ -192,7 +192,9 @@ static int cisco_rx(struct sk_buff *skb)
192 "uptime %ud%uh%um%us)\n", 192 "uptime %ud%uh%um%us)\n",
193 dev->name, days, hrs, 193 dev->name, days, hrs,
194 min, sec); 194 min, sec);
195#if 0
195 netif_carrier_on(dev); 196 netif_carrier_on(dev);
197#endif
196 hdlc->state.cisco.up = 1; 198 hdlc->state.cisco.up = 1;
197 } 199 }
198 } 200 }
@@ -225,7 +227,9 @@ static void cisco_timer(unsigned long arg)
225 hdlc->state.cisco.settings.timeout * HZ)) { 227 hdlc->state.cisco.settings.timeout * HZ)) {
226 hdlc->state.cisco.up = 0; 228 hdlc->state.cisco.up = 0;
227 printk(KERN_INFO "%s: Link down\n", dev->name); 229 printk(KERN_INFO "%s: Link down\n", dev->name);
230#if 0
228 netif_carrier_off(dev); 231 netif_carrier_off(dev);
232#endif
229 } 233 }
230 234
231 cisco_keepalive_send(dev, CISCO_KEEPALIVE_REQ, 235 cisco_keepalive_send(dev, CISCO_KEEPALIVE_REQ,
@@ -261,8 +265,10 @@ static void cisco_stop(struct net_device *dev)
261{ 265{
262 hdlc_device *hdlc = dev_to_hdlc(dev); 266 hdlc_device *hdlc = dev_to_hdlc(dev);
263 del_timer_sync(&hdlc->state.cisco.timer); 267 del_timer_sync(&hdlc->state.cisco.timer);
268#if 0
264 if (netif_carrier_ok(dev)) 269 if (netif_carrier_ok(dev))
265 netif_carrier_off(dev); 270 netif_carrier_off(dev);
271#endif
266 hdlc->state.cisco.up = 0; 272 hdlc->state.cisco.up = 0;
267 hdlc->state.cisco.request_sent = 0; 273 hdlc->state.cisco.request_sent = 0;
268} 274}
diff --git a/drivers/net/wan/hdlc_fr.c b/drivers/net/wan/hdlc_fr.c
index e1601d35dced..523afe17564e 100644
--- a/drivers/net/wan/hdlc_fr.c
+++ b/drivers/net/wan/hdlc_fr.c
@@ -545,8 +545,10 @@ static void fr_set_link_state(int reliable, struct net_device *dev)
545 545
546 hdlc->state.fr.reliable = reliable; 546 hdlc->state.fr.reliable = reliable;
547 if (reliable) { 547 if (reliable) {
548#if 0
548 if (!netif_carrier_ok(dev)) 549 if (!netif_carrier_ok(dev))
549 netif_carrier_on(dev); 550 netif_carrier_on(dev);
551#endif
550 552
551 hdlc->state.fr.n391cnt = 0; /* Request full status */ 553 hdlc->state.fr.n391cnt = 0; /* Request full status */
552 hdlc->state.fr.dce_changed = 1; 554 hdlc->state.fr.dce_changed = 1;
@@ -560,8 +562,10 @@ static void fr_set_link_state(int reliable, struct net_device *dev)
560 } 562 }
561 } 563 }
562 } else { 564 } else {
565#if 0
563 if (netif_carrier_ok(dev)) 566 if (netif_carrier_ok(dev))
564 netif_carrier_off(dev); 567 netif_carrier_off(dev);
568#endif
565 569
566 while (pvc) { /* Deactivate all PVCs */ 570 while (pvc) { /* Deactivate all PVCs */
567 pvc_carrier(0, pvc); 571 pvc_carrier(0, pvc);
diff --git a/drivers/net/wan/hdlc_generic.c b/drivers/net/wan/hdlc_generic.c
index cdd4c09c2d90..46cef8f92133 100644
--- a/drivers/net/wan/hdlc_generic.c
+++ b/drivers/net/wan/hdlc_generic.c
@@ -79,11 +79,13 @@ static void __hdlc_set_carrier_on(struct net_device *dev)
79 hdlc_device *hdlc = dev_to_hdlc(dev); 79 hdlc_device *hdlc = dev_to_hdlc(dev);
80 if (hdlc->proto.start) 80 if (hdlc->proto.start)
81 return hdlc->proto.start(dev); 81 return hdlc->proto.start(dev);
82#if 0
82#ifdef DEBUG_LINK 83#ifdef DEBUG_LINK
83 if (netif_carrier_ok(dev)) 84 if (netif_carrier_ok(dev))
84 printk(KERN_ERR "hdlc_set_carrier_on(): already on\n"); 85 printk(KERN_ERR "hdlc_set_carrier_on(): already on\n");
85#endif 86#endif
86 netif_carrier_on(dev); 87 netif_carrier_on(dev);
88#endif
87} 89}
88 90
89 91
@@ -94,11 +96,13 @@ static void __hdlc_set_carrier_off(struct net_device *dev)
94 if (hdlc->proto.stop) 96 if (hdlc->proto.stop)
95 return hdlc->proto.stop(dev); 97 return hdlc->proto.stop(dev);
96 98
99#if 0
97#ifdef DEBUG_LINK 100#ifdef DEBUG_LINK
98 if (!netif_carrier_ok(dev)) 101 if (!netif_carrier_ok(dev))
99 printk(KERN_ERR "hdlc_set_carrier_off(): already off\n"); 102 printk(KERN_ERR "hdlc_set_carrier_off(): already off\n");
100#endif 103#endif
101 netif_carrier_off(dev); 104 netif_carrier_off(dev);
105#endif
102} 106}
103 107
104 108
@@ -294,8 +298,10 @@ int register_hdlc_device(struct net_device *dev)
294 if (result != 0) 298 if (result != 0)
295 return -EIO; 299 return -EIO;
296 300
301#if 0
297 if (netif_carrier_ok(dev)) 302 if (netif_carrier_ok(dev))
298 netif_carrier_off(dev); /* no carrier until DCD goes up */ 303 netif_carrier_off(dev); /* no carrier until DCD goes up */
304#endif
299 305
300 return 0; 306 return 0;
301} 307}