aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/can
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2012-11-30 12:12:05 -0500
committerDavid S. Miller <davem@davemloft.net>2012-11-30 12:12:05 -0500
commitfed2c6fd1ffb7b24e55159eb40a5a7330be656c8 (patch)
tree0b3ec505cbe89f0f026897e32b8bb73ffb6a5fd8 /drivers/net/can
parent481af03bfbc1e07954310689831ad2695b7c6a44 (diff)
parent823d7a1f761d6404babaab04cc8b1724186cf2c8 (diff)
Merge branch 'for-davem' of git://gitorious.org/linux-can/linux-can-next
Marc Kleine-Budde says: ==================== this pull request is for net-next/master. There is a patch by Alexander Stein fixing a reference counter problem which can make driver unloading impossible (stable Cc'ed). And several patches by me which remove an obsolete mechanism from several drivers, which is already handled at the infrastructure level. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/can')
-rw-r--r--drivers/net/can/dev.c3
-rw-r--r--drivers/net/can/mscan/mscan.c8
-rw-r--r--drivers/net/can/mscan/mscan.h1
-rw-r--r--drivers/net/can/sja1000/sja1000.c8
-rw-r--r--drivers/net/can/sja1000/sja1000.h1
-rw-r--r--drivers/net/can/usb/ems_usb.c7
-rw-r--r--drivers/net/can/usb/esd_usb2.c10
-rw-r--r--drivers/net/can/usb/peak_usb/pcan_usb_core.c5
-rw-r--r--drivers/net/can/usb/peak_usb/pcan_usb_core.h1
9 files changed, 1 insertions, 43 deletions
diff --git a/drivers/net/can/dev.c b/drivers/net/can/dev.c
index 963e2ccd10db..8233e5ed2939 100644
--- a/drivers/net/can/dev.c
+++ b/drivers/net/can/dev.c
@@ -609,8 +609,7 @@ void close_candev(struct net_device *dev)
609{ 609{
610 struct can_priv *priv = netdev_priv(dev); 610 struct can_priv *priv = netdev_priv(dev);
611 611
612 if (del_timer_sync(&priv->restart_timer)) 612 del_timer_sync(&priv->restart_timer);
613 dev_put(dev);
614 can_flush_echo_skb(dev); 613 can_flush_echo_skb(dev);
615} 614}
616EXPORT_SYMBOL_GPL(close_candev); 615EXPORT_SYMBOL_GPL(close_candev);
diff --git a/drivers/net/can/mscan/mscan.c b/drivers/net/can/mscan/mscan.c
index 2b104d5f422c..e6b40954e204 100644
--- a/drivers/net/can/mscan/mscan.c
+++ b/drivers/net/can/mscan/mscan.c
@@ -517,12 +517,8 @@ static irqreturn_t mscan_isr(int irq, void *dev_id)
517 517
518static int mscan_do_set_mode(struct net_device *dev, enum can_mode mode) 518static int mscan_do_set_mode(struct net_device *dev, enum can_mode mode)
519{ 519{
520 struct mscan_priv *priv = netdev_priv(dev);
521 int ret = 0; 520 int ret = 0;
522 521
523 if (!priv->open_time)
524 return -EINVAL;
525
526 switch (mode) { 522 switch (mode) {
527 case CAN_MODE_START: 523 case CAN_MODE_START:
528 ret = mscan_restart(dev); 524 ret = mscan_restart(dev);
@@ -590,8 +586,6 @@ static int mscan_open(struct net_device *dev)
590 goto exit_napi_disable; 586 goto exit_napi_disable;
591 } 587 }
592 588
593 priv->open_time = jiffies;
594
595 if (priv->can.ctrlmode & CAN_CTRLMODE_LISTENONLY) 589 if (priv->can.ctrlmode & CAN_CTRLMODE_LISTENONLY)
596 setbits8(&regs->canctl1, MSCAN_LISTEN); 590 setbits8(&regs->canctl1, MSCAN_LISTEN);
597 else 591 else
@@ -606,7 +600,6 @@ static int mscan_open(struct net_device *dev)
606 return 0; 600 return 0;
607 601
608exit_free_irq: 602exit_free_irq:
609 priv->open_time = 0;
610 free_irq(dev->irq, dev); 603 free_irq(dev->irq, dev);
611exit_napi_disable: 604exit_napi_disable:
612 napi_disable(&priv->napi); 605 napi_disable(&priv->napi);
@@ -627,7 +620,6 @@ static int mscan_close(struct net_device *dev)
627 mscan_set_mode(dev, MSCAN_INIT_MODE); 620 mscan_set_mode(dev, MSCAN_INIT_MODE);
628 close_candev(dev); 621 close_candev(dev);
629 free_irq(dev->irq, dev); 622 free_irq(dev->irq, dev);
630 priv->open_time = 0;
631 623
632 return 0; 624 return 0;
633} 625}
diff --git a/drivers/net/can/mscan/mscan.h b/drivers/net/can/mscan/mscan.h
index b43e9f5d3268..af2ed8baf0a3 100644
--- a/drivers/net/can/mscan/mscan.h
+++ b/drivers/net/can/mscan/mscan.h
@@ -281,7 +281,6 @@ struct tx_queue_entry {
281struct mscan_priv { 281struct mscan_priv {
282 struct can_priv can; /* must be the first member */ 282 struct can_priv can; /* must be the first member */
283 unsigned int type; /* MSCAN type variants */ 283 unsigned int type; /* MSCAN type variants */
284 long open_time;
285 unsigned long flags; 284 unsigned long flags;
286 void __iomem *reg_base; /* ioremap'ed address to registers */ 285 void __iomem *reg_base; /* ioremap'ed address to registers */
287 u8 shadow_statflg; 286 u8 shadow_statflg;
diff --git a/drivers/net/can/sja1000/sja1000.c b/drivers/net/can/sja1000/sja1000.c
index 25011dbe1b96..83ee11eca0e2 100644
--- a/drivers/net/can/sja1000/sja1000.c
+++ b/drivers/net/can/sja1000/sja1000.c
@@ -188,11 +188,6 @@ static void sja1000_start(struct net_device *dev)
188 188
189static int sja1000_set_mode(struct net_device *dev, enum can_mode mode) 189static int sja1000_set_mode(struct net_device *dev, enum can_mode mode)
190{ 190{
191 struct sja1000_priv *priv = netdev_priv(dev);
192
193 if (!priv->open_time)
194 return -EINVAL;
195
196 switch (mode) { 191 switch (mode) {
197 case CAN_MODE_START: 192 case CAN_MODE_START:
198 sja1000_start(dev); 193 sja1000_start(dev);
@@ -579,7 +574,6 @@ static int sja1000_open(struct net_device *dev)
579 574
580 /* init and start chi */ 575 /* init and start chi */
581 sja1000_start(dev); 576 sja1000_start(dev);
582 priv->open_time = jiffies;
583 577
584 netif_start_queue(dev); 578 netif_start_queue(dev);
585 579
@@ -598,8 +592,6 @@ static int sja1000_close(struct net_device *dev)
598 592
599 close_candev(dev); 593 close_candev(dev);
600 594
601 priv->open_time = 0;
602
603 return 0; 595 return 0;
604} 596}
605 597
diff --git a/drivers/net/can/sja1000/sja1000.h b/drivers/net/can/sja1000/sja1000.h
index 23fff06875f5..afa99847a510 100644
--- a/drivers/net/can/sja1000/sja1000.h
+++ b/drivers/net/can/sja1000/sja1000.h
@@ -152,7 +152,6 @@
152 */ 152 */
153struct sja1000_priv { 153struct sja1000_priv {
154 struct can_priv can; /* must be the first member */ 154 struct can_priv can; /* must be the first member */
155 int open_time;
156 struct sk_buff *echo_skb; 155 struct sk_buff *echo_skb;
157 156
158 /* the lower-layer is responsible for appropriate locking */ 157 /* the lower-layer is responsible for appropriate locking */
diff --git a/drivers/net/can/usb/ems_usb.c b/drivers/net/can/usb/ems_usb.c
index 086fa321677a..c69f0b72b352 100644
--- a/drivers/net/can/usb/ems_usb.c
+++ b/drivers/net/can/usb/ems_usb.c
@@ -245,7 +245,6 @@ struct ems_tx_urb_context {
245 245
246struct ems_usb { 246struct ems_usb {
247 struct can_priv can; /* must be the first member */ 247 struct can_priv can; /* must be the first member */
248 int open_time;
249 248
250 struct sk_buff *echo_skb[MAX_TX_URBS]; 249 struct sk_buff *echo_skb[MAX_TX_URBS];
251 250
@@ -728,7 +727,6 @@ static int ems_usb_open(struct net_device *netdev)
728 return err; 727 return err;
729 } 728 }
730 729
731 dev->open_time = jiffies;
732 730
733 netif_start_queue(netdev); 731 netif_start_queue(netdev);
734 732
@@ -878,8 +876,6 @@ static int ems_usb_close(struct net_device *netdev)
878 876
879 close_candev(netdev); 877 close_candev(netdev);
880 878
881 dev->open_time = 0;
882
883 return 0; 879 return 0;
884} 880}
885 881
@@ -905,9 +901,6 @@ static int ems_usb_set_mode(struct net_device *netdev, enum can_mode mode)
905{ 901{
906 struct ems_usb *dev = netdev_priv(netdev); 902 struct ems_usb *dev = netdev_priv(netdev);
907 903
908 if (!dev->open_time)
909 return -EINVAL;
910
911 switch (mode) { 904 switch (mode) {
912 case CAN_MODE_START: 905 case CAN_MODE_START:
913 if (ems_usb_write_mode(dev, SJA1000_MOD_NORMAL)) 906 if (ems_usb_write_mode(dev, SJA1000_MOD_NORMAL))
diff --git a/drivers/net/can/usb/esd_usb2.c b/drivers/net/can/usb/esd_usb2.c
index 124e0dd3490c..9b74d1e3ad44 100644
--- a/drivers/net/can/usb/esd_usb2.c
+++ b/drivers/net/can/usb/esd_usb2.c
@@ -217,7 +217,6 @@ struct esd_usb2_net_priv {
217 struct usb_anchor tx_submitted; 217 struct usb_anchor tx_submitted;
218 struct esd_tx_urb_context tx_contexts[MAX_TX_URBS]; 218 struct esd_tx_urb_context tx_contexts[MAX_TX_URBS];
219 219
220 int open_time;
221 struct esd_usb2 *usb2; 220 struct esd_usb2 *usb2;
222 struct net_device *netdev; 221 struct net_device *netdev;
223 int index; 222 int index;
@@ -695,8 +694,6 @@ static int esd_usb2_open(struct net_device *netdev)
695 return err; 694 return err;
696 } 695 }
697 696
698 priv->open_time = jiffies;
699
700 netif_start_queue(netdev); 697 netif_start_queue(netdev);
701 698
702 return 0; 699 return 0;
@@ -864,8 +861,6 @@ static int esd_usb2_close(struct net_device *netdev)
864 861
865 close_candev(netdev); 862 close_candev(netdev);
866 863
867 priv->open_time = 0;
868
869 return 0; 864 return 0;
870} 865}
871 866
@@ -941,11 +936,6 @@ static int esd_usb2_get_berr_counter(const struct net_device *netdev,
941 936
942static int esd_usb2_set_mode(struct net_device *netdev, enum can_mode mode) 937static int esd_usb2_set_mode(struct net_device *netdev, enum can_mode mode)
943{ 938{
944 struct esd_usb2_net_priv *priv = netdev_priv(netdev);
945
946 if (!priv->open_time)
947 return -EINVAL;
948
949 switch (mode) { 939 switch (mode) {
950 case CAN_MODE_START: 940 case CAN_MODE_START:
951 netif_wake_queue(netdev); 941 netif_wake_queue(netdev);
diff --git a/drivers/net/can/usb/peak_usb/pcan_usb_core.c b/drivers/net/can/usb/peak_usb/pcan_usb_core.c
index c4643c400d46..d9290ea788e0 100644
--- a/drivers/net/can/usb/peak_usb/pcan_usb_core.c
+++ b/drivers/net/can/usb/peak_usb/pcan_usb_core.c
@@ -520,7 +520,6 @@ static int peak_usb_ndo_open(struct net_device *netdev)
520 return err; 520 return err;
521 } 521 }
522 522
523 dev->open_time = jiffies;
524 netif_start_queue(netdev); 523 netif_start_queue(netdev);
525 524
526 return 0; 525 return 0;
@@ -576,7 +575,6 @@ static int peak_usb_ndo_stop(struct net_device *netdev)
576 575
577 close_candev(netdev); 576 close_candev(netdev);
578 577
579 dev->open_time = 0;
580 dev->can.state = CAN_STATE_STOPPED; 578 dev->can.state = CAN_STATE_STOPPED;
581 579
582 /* can set bus off now */ 580 /* can set bus off now */
@@ -661,9 +659,6 @@ static int peak_usb_set_mode(struct net_device *netdev, enum can_mode mode)
661 struct peak_usb_device *dev = netdev_priv(netdev); 659 struct peak_usb_device *dev = netdev_priv(netdev);
662 int err = 0; 660 int err = 0;
663 661
664 if (!dev->open_time)
665 return -EINVAL;
666
667 switch (mode) { 662 switch (mode) {
668 case CAN_MODE_START: 663 case CAN_MODE_START:
669 err = peak_usb_restart(dev); 664 err = peak_usb_restart(dev);
diff --git a/drivers/net/can/usb/peak_usb/pcan_usb_core.h b/drivers/net/can/usb/peak_usb/pcan_usb_core.h
index c8e5e91d7cb5..073b47ff8eee 100644
--- a/drivers/net/can/usb/peak_usb/pcan_usb_core.h
+++ b/drivers/net/can/usb/peak_usb/pcan_usb_core.h
@@ -104,7 +104,6 @@ struct peak_usb_device {
104 struct can_priv can; 104 struct can_priv can;
105 struct peak_usb_adapter *adapter; 105 struct peak_usb_adapter *adapter;
106 unsigned int ctrl_idx; 106 unsigned int ctrl_idx;
107 int open_time;
108 u32 state; 107 u32 state;
109 108
110 struct sk_buff *echo_skb[PCAN_USB_MAX_TX_URBS]; 109 struct sk_buff *echo_skb[PCAN_USB_MAX_TX_URBS];