Commit fed2c6fd authored by David S. Miller's avatar David S. Miller

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: default avatarDavid S. Miller <davem@davemloft.net>
parents 481af03b 823d7a1f
...@@ -609,8 +609,7 @@ void close_candev(struct net_device *dev) ...@@ -609,8 +609,7 @@ void close_candev(struct net_device *dev)
{ {
struct can_priv *priv = netdev_priv(dev); struct can_priv *priv = netdev_priv(dev);
if (del_timer_sync(&priv->restart_timer)) del_timer_sync(&priv->restart_timer);
dev_put(dev);
can_flush_echo_skb(dev); can_flush_echo_skb(dev);
} }
EXPORT_SYMBOL_GPL(close_candev); EXPORT_SYMBOL_GPL(close_candev);
......
...@@ -517,12 +517,8 @@ static irqreturn_t mscan_isr(int irq, void *dev_id) ...@@ -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) static int mscan_do_set_mode(struct net_device *dev, enum can_mode mode)
{ {
struct mscan_priv *priv = netdev_priv(dev);
int ret = 0; int ret = 0;
if (!priv->open_time)
return -EINVAL;
switch (mode) { switch (mode) {
case CAN_MODE_START: case CAN_MODE_START:
ret = mscan_restart(dev); ret = mscan_restart(dev);
...@@ -590,8 +586,6 @@ static int mscan_open(struct net_device *dev) ...@@ -590,8 +586,6 @@ static int mscan_open(struct net_device *dev)
goto exit_napi_disable; goto exit_napi_disable;
} }
priv->open_time = jiffies;
if (priv->can.ctrlmode & CAN_CTRLMODE_LISTENONLY) if (priv->can.ctrlmode & CAN_CTRLMODE_LISTENONLY)
setbits8(&regs->canctl1, MSCAN_LISTEN); setbits8(&regs->canctl1, MSCAN_LISTEN);
else else
...@@ -606,7 +600,6 @@ static int mscan_open(struct net_device *dev) ...@@ -606,7 +600,6 @@ static int mscan_open(struct net_device *dev)
return 0; return 0;
exit_free_irq: exit_free_irq:
priv->open_time = 0;
free_irq(dev->irq, dev); free_irq(dev->irq, dev);
exit_napi_disable: exit_napi_disable:
napi_disable(&priv->napi); napi_disable(&priv->napi);
...@@ -627,7 +620,6 @@ static int mscan_close(struct net_device *dev) ...@@ -627,7 +620,6 @@ static int mscan_close(struct net_device *dev)
mscan_set_mode(dev, MSCAN_INIT_MODE); mscan_set_mode(dev, MSCAN_INIT_MODE);
close_candev(dev); close_candev(dev);
free_irq(dev->irq, dev); free_irq(dev->irq, dev);
priv->open_time = 0;
return 0; return 0;
} }
......
...@@ -281,7 +281,6 @@ struct tx_queue_entry { ...@@ -281,7 +281,6 @@ struct tx_queue_entry {
struct mscan_priv { struct mscan_priv {
struct can_priv can; /* must be the first member */ struct can_priv can; /* must be the first member */
unsigned int type; /* MSCAN type variants */ unsigned int type; /* MSCAN type variants */
long open_time;
unsigned long flags; unsigned long flags;
void __iomem *reg_base; /* ioremap'ed address to registers */ void __iomem *reg_base; /* ioremap'ed address to registers */
u8 shadow_statflg; u8 shadow_statflg;
......
...@@ -188,11 +188,6 @@ static void sja1000_start(struct net_device *dev) ...@@ -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) 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) { switch (mode) {
case CAN_MODE_START: case CAN_MODE_START:
sja1000_start(dev); sja1000_start(dev);
...@@ -579,7 +574,6 @@ static int sja1000_open(struct net_device *dev) ...@@ -579,7 +574,6 @@ static int sja1000_open(struct net_device *dev)
/* init and start chi */ /* init and start chi */
sja1000_start(dev); sja1000_start(dev);
priv->open_time = jiffies;
netif_start_queue(dev); netif_start_queue(dev);
...@@ -598,8 +592,6 @@ static int sja1000_close(struct net_device *dev) ...@@ -598,8 +592,6 @@ static int sja1000_close(struct net_device *dev)
close_candev(dev); close_candev(dev);
priv->open_time = 0;
return 0; return 0;
} }
......
...@@ -152,7 +152,6 @@ ...@@ -152,7 +152,6 @@
*/ */
struct sja1000_priv { struct sja1000_priv {
struct can_priv can; /* must be the first member */ struct can_priv can; /* must be the first member */
int open_time;
struct sk_buff *echo_skb; struct sk_buff *echo_skb;
/* the lower-layer is responsible for appropriate locking */ /* the lower-layer is responsible for appropriate locking */
......
...@@ -245,7 +245,6 @@ struct ems_tx_urb_context { ...@@ -245,7 +245,6 @@ struct ems_tx_urb_context {
struct ems_usb { struct ems_usb {
struct can_priv can; /* must be the first member */ struct can_priv can; /* must be the first member */
int open_time;
struct sk_buff *echo_skb[MAX_TX_URBS]; struct sk_buff *echo_skb[MAX_TX_URBS];
...@@ -728,7 +727,6 @@ static int ems_usb_open(struct net_device *netdev) ...@@ -728,7 +727,6 @@ static int ems_usb_open(struct net_device *netdev)
return err; return err;
} }
dev->open_time = jiffies;
netif_start_queue(netdev); netif_start_queue(netdev);
...@@ -878,8 +876,6 @@ static int ems_usb_close(struct net_device *netdev) ...@@ -878,8 +876,6 @@ static int ems_usb_close(struct net_device *netdev)
close_candev(netdev); close_candev(netdev);
dev->open_time = 0;
return 0; return 0;
} }
...@@ -905,9 +901,6 @@ static int ems_usb_set_mode(struct net_device *netdev, enum can_mode mode) ...@@ -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); struct ems_usb *dev = netdev_priv(netdev);
if (!dev->open_time)
return -EINVAL;
switch (mode) { switch (mode) {
case CAN_MODE_START: case CAN_MODE_START:
if (ems_usb_write_mode(dev, SJA1000_MOD_NORMAL)) if (ems_usb_write_mode(dev, SJA1000_MOD_NORMAL))
......
...@@ -217,7 +217,6 @@ struct esd_usb2_net_priv { ...@@ -217,7 +217,6 @@ struct esd_usb2_net_priv {
struct usb_anchor tx_submitted; struct usb_anchor tx_submitted;
struct esd_tx_urb_context tx_contexts[MAX_TX_URBS]; struct esd_tx_urb_context tx_contexts[MAX_TX_URBS];
int open_time;
struct esd_usb2 *usb2; struct esd_usb2 *usb2;
struct net_device *netdev; struct net_device *netdev;
int index; int index;
...@@ -695,8 +694,6 @@ static int esd_usb2_open(struct net_device *netdev) ...@@ -695,8 +694,6 @@ static int esd_usb2_open(struct net_device *netdev)
return err; return err;
} }
priv->open_time = jiffies;
netif_start_queue(netdev); netif_start_queue(netdev);
return 0; return 0;
...@@ -864,8 +861,6 @@ static int esd_usb2_close(struct net_device *netdev) ...@@ -864,8 +861,6 @@ static int esd_usb2_close(struct net_device *netdev)
close_candev(netdev); close_candev(netdev);
priv->open_time = 0;
return 0; return 0;
} }
...@@ -941,11 +936,6 @@ static int esd_usb2_get_berr_counter(const struct net_device *netdev, ...@@ -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) 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) { switch (mode) {
case CAN_MODE_START: case CAN_MODE_START:
netif_wake_queue(netdev); netif_wake_queue(netdev);
......
...@@ -520,7 +520,6 @@ static int peak_usb_ndo_open(struct net_device *netdev) ...@@ -520,7 +520,6 @@ static int peak_usb_ndo_open(struct net_device *netdev)
return err; return err;
} }
dev->open_time = jiffies;
netif_start_queue(netdev); netif_start_queue(netdev);
return 0; return 0;
...@@ -576,7 +575,6 @@ static int peak_usb_ndo_stop(struct net_device *netdev) ...@@ -576,7 +575,6 @@ static int peak_usb_ndo_stop(struct net_device *netdev)
close_candev(netdev); close_candev(netdev);
dev->open_time = 0;
dev->can.state = CAN_STATE_STOPPED; dev->can.state = CAN_STATE_STOPPED;
/* can set bus off now */ /* can set bus off now */
...@@ -661,9 +659,6 @@ static int peak_usb_set_mode(struct net_device *netdev, enum can_mode mode) ...@@ -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); struct peak_usb_device *dev = netdev_priv(netdev);
int err = 0; int err = 0;
if (!dev->open_time)
return -EINVAL;
switch (mode) { switch (mode) {
case CAN_MODE_START: case CAN_MODE_START:
err = peak_usb_restart(dev); err = peak_usb_restart(dev);
......
...@@ -104,7 +104,6 @@ struct peak_usb_device { ...@@ -104,7 +104,6 @@ struct peak_usb_device {
struct can_priv can; struct can_priv can;
struct peak_usb_adapter *adapter; struct peak_usb_adapter *adapter;
unsigned int ctrl_idx; unsigned int ctrl_idx;
int open_time;
u32 state; u32 state;
struct sk_buff *echo_skb[PCAN_USB_MAX_TX_URBS]; struct sk_buff *echo_skb[PCAN_USB_MAX_TX_URBS];
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment