Merge branch 'for-davem' of git://gitorious.org/linux-can/linux-can-next
authorDavid S. Miller <davem@davemloft.net>
Fri, 30 Nov 2012 17:12:05 +0000 (12:12 -0500)
committerDavid S. Miller <davem@davemloft.net>
Fri, 30 Nov 2012 17:12:05 +0000 (12:12 -0500)
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>
drivers/net/can/dev.c
drivers/net/can/mscan/mscan.c
drivers/net/can/mscan/mscan.h
drivers/net/can/sja1000/sja1000.c
drivers/net/can/sja1000/sja1000.h
drivers/net/can/usb/ems_usb.c
drivers/net/can/usb/esd_usb2.c
drivers/net/can/usb/peak_usb/pcan_usb_core.c
drivers/net/can/usb/peak_usb/pcan_usb_core.h

index 963e2ccd10db81300748b4fac6d9dde8f084d3b5..8233e5ed2939dcfe415ee119edf8c3aaf042c47d 100644 (file)
@@ -609,8 +609,7 @@ void close_candev(struct net_device *dev)
 {
        struct can_priv *priv = netdev_priv(dev);
 
-       if (del_timer_sync(&priv->restart_timer))
-               dev_put(dev);
+       del_timer_sync(&priv->restart_timer);
        can_flush_echo_skb(dev);
 }
 EXPORT_SYMBOL_GPL(close_candev);
index 2b104d5f422c07b497e3fd8966bc9675b7bfe4ce..e6b40954e204d77bfb6a465a8ecc607db7231f98 100644 (file)
@@ -517,12 +517,8 @@ static irqreturn_t mscan_isr(int irq, void *dev_id)
 
 static int mscan_do_set_mode(struct net_device *dev, enum can_mode mode)
 {
-       struct mscan_priv *priv = netdev_priv(dev);
        int ret = 0;
 
-       if (!priv->open_time)
-               return -EINVAL;
-
        switch (mode) {
        case CAN_MODE_START:
                ret = mscan_restart(dev);
@@ -590,8 +586,6 @@ static int mscan_open(struct net_device *dev)
                goto exit_napi_disable;
        }
 
-       priv->open_time = jiffies;
-
        if (priv->can.ctrlmode & CAN_CTRLMODE_LISTENONLY)
                setbits8(&regs->canctl1, MSCAN_LISTEN);
        else
@@ -606,7 +600,6 @@ static int mscan_open(struct net_device *dev)
        return 0;
 
 exit_free_irq:
-       priv->open_time = 0;
        free_irq(dev->irq, dev);
 exit_napi_disable:
        napi_disable(&priv->napi);
@@ -627,7 +620,6 @@ static int mscan_close(struct net_device *dev)
        mscan_set_mode(dev, MSCAN_INIT_MODE);
        close_candev(dev);
        free_irq(dev->irq, dev);
-       priv->open_time = 0;
 
        return 0;
 }
index b43e9f5d32683794508d88ea03098376abbb4d44..af2ed8baf0a3b30b9361c0376f65ec0672d7b1b7 100644 (file)
@@ -281,7 +281,6 @@ struct tx_queue_entry {
 struct mscan_priv {
        struct can_priv can;    /* must be the first member */
        unsigned int type;      /* MSCAN type variants */
-       long open_time;
        unsigned long flags;
        void __iomem *reg_base; /* ioremap'ed address to registers */
        u8 shadow_statflg;
index 25011dbe1b96f15b951ba555477f4ba14be94b0f..83ee11eca0e2de4a54220bbc9e2b0d55c6edf057 100644 (file)
@@ -188,11 +188,6 @@ static void sja1000_start(struct net_device *dev)
 
 static int sja1000_set_mode(struct net_device *dev, enum can_mode mode)
 {
-       struct sja1000_priv *priv = netdev_priv(dev);
-
-       if (!priv->open_time)
-               return -EINVAL;
-
        switch (mode) {
        case CAN_MODE_START:
                sja1000_start(dev);
@@ -579,7 +574,6 @@ static int sja1000_open(struct net_device *dev)
 
        /* init and start chi */
        sja1000_start(dev);
-       priv->open_time = jiffies;
 
        netif_start_queue(dev);
 
@@ -598,8 +592,6 @@ static int sja1000_close(struct net_device *dev)
 
        close_candev(dev);
 
-       priv->open_time = 0;
-
        return 0;
 }
 
index 23fff06875f5703601b1a608937c67f3944422fb..afa99847a5101ffa6399726b57d4189f6c3057f5 100644 (file)
  */
 struct sja1000_priv {
        struct can_priv can;    /* must be the first member */
-       int open_time;
        struct sk_buff *echo_skb;
 
        /* the lower-layer is responsible for appropriate locking */
index 086fa321677a0b45c3e3a7471fa631c47768327a..c69f0b72b352dc97bfc047a54a5e0d344ec7476b 100644 (file)
@@ -245,7 +245,6 @@ struct ems_tx_urb_context {
 
 struct ems_usb {
        struct can_priv can; /* must be the first member */
-       int open_time;
 
        struct sk_buff *echo_skb[MAX_TX_URBS];
 
@@ -728,7 +727,6 @@ static int ems_usb_open(struct net_device *netdev)
                return err;
        }
 
-       dev->open_time = jiffies;
 
        netif_start_queue(netdev);
 
@@ -878,8 +876,6 @@ static int ems_usb_close(struct net_device *netdev)
 
        close_candev(netdev);
 
-       dev->open_time = 0;
-
        return 0;
 }
 
@@ -905,9 +901,6 @@ static int ems_usb_set_mode(struct net_device *netdev, enum can_mode mode)
 {
        struct ems_usb *dev = netdev_priv(netdev);
 
-       if (!dev->open_time)
-               return -EINVAL;
-
        switch (mode) {
        case CAN_MODE_START:
                if (ems_usb_write_mode(dev, SJA1000_MOD_NORMAL))
index 124e0dd3490c701738845ba2de9380484c3b942f..9b74d1e3ad44a51c950257b6588bf082247a75d4 100644 (file)
@@ -217,7 +217,6 @@ struct esd_usb2_net_priv {
        struct usb_anchor tx_submitted;
        struct esd_tx_urb_context tx_contexts[MAX_TX_URBS];
 
-       int open_time;
        struct esd_usb2 *usb2;
        struct net_device *netdev;
        int index;
@@ -695,8 +694,6 @@ static int esd_usb2_open(struct net_device *netdev)
                return err;
        }
 
-       priv->open_time = jiffies;
-
        netif_start_queue(netdev);
 
        return 0;
@@ -864,8 +861,6 @@ static int esd_usb2_close(struct net_device *netdev)
 
        close_candev(netdev);
 
-       priv->open_time = 0;
-
        return 0;
 }
 
@@ -941,11 +936,6 @@ static int esd_usb2_get_berr_counter(const struct net_device *netdev,
 
 static int esd_usb2_set_mode(struct net_device *netdev, enum can_mode mode)
 {
-       struct esd_usb2_net_priv *priv = netdev_priv(netdev);
-
-       if (!priv->open_time)
-               return -EINVAL;
-
        switch (mode) {
        case CAN_MODE_START:
                netif_wake_queue(netdev);
index c4643c400d462bfc63ce7b4df6c76558e4e92e50..d9290ea788e02665d169e34b4fd7704a116622b4 100644 (file)
@@ -520,7 +520,6 @@ static int peak_usb_ndo_open(struct net_device *netdev)
                return err;
        }
 
-       dev->open_time = jiffies;
        netif_start_queue(netdev);
 
        return 0;
@@ -576,7 +575,6 @@ static int peak_usb_ndo_stop(struct net_device *netdev)
 
        close_candev(netdev);
 
-       dev->open_time = 0;
        dev->can.state = CAN_STATE_STOPPED;
 
        /* can set bus off now */
@@ -661,9 +659,6 @@ static int peak_usb_set_mode(struct net_device *netdev, enum can_mode mode)
        struct peak_usb_device *dev = netdev_priv(netdev);
        int err = 0;
 
-       if (!dev->open_time)
-               return -EINVAL;
-
        switch (mode) {
        case CAN_MODE_START:
                err = peak_usb_restart(dev);
index c8e5e91d7cb571f350eef5ff2b0e26cf317d6460..073b47ff8eee3065b2bf9f1319fc7207c93c2aa8 100644 (file)
@@ -104,7 +104,6 @@ struct peak_usb_device {
        struct can_priv can;
        struct peak_usb_adapter *adapter;
        unsigned int ctrl_idx;
-       int open_time;
        u32 state;
 
        struct sk_buff *echo_skb[PCAN_USB_MAX_TX_URBS];