Commit 02087be6 authored by Stephen Hemminger's avatar Stephen Hemminger Committed by David S. Miller

irda: convert smsc driver to net_device_ops

Signed-off-by: default avatarStephen Hemminger <shemminger@vyatta.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 30a5d7f7
...@@ -486,6 +486,26 @@ static int __init smsc_ircc_init(void) ...@@ -486,6 +486,26 @@ static int __init smsc_ircc_init(void)
return ret; return ret;
} }
static int smsc_ircc_net_xmit(struct sk_buff *skb, struct net_device *dev)
{
struct smsc_ircc_cb *self = netdev_priv(dev);
if (self->io.speed > 115200)
return smsc_ircc_hard_xmit_fir(skb, dev);
else
return smsc_ircc_hard_xmit_sir(skb, dev);
}
static const struct net_device_ops smsc_ircc_netdev_ops = {
.ndo_open = smsc_ircc_net_open,
.ndo_stop = smsc_ircc_net_close,
.ndo_do_ioctl = smsc_ircc_net_ioctl,
.ndo_start_xmit = smsc_ircc_net_xmit,
#if SMSC_IRCC2_C_NET_TIMEOUT
.ndo_tx_timeout = smsc_ircc_timeout,
#endif
};
/* /*
* Function smsc_ircc_open (firbase, sirbase, dma, irq) * Function smsc_ircc_open (firbase, sirbase, dma, irq)
* *
...@@ -519,14 +539,10 @@ static int __init smsc_ircc_open(unsigned int fir_base, unsigned int sir_base, u ...@@ -519,14 +539,10 @@ static int __init smsc_ircc_open(unsigned int fir_base, unsigned int sir_base, u
goto err_out1; goto err_out1;
} }
dev->hard_start_xmit = smsc_ircc_hard_xmit_sir;
#if SMSC_IRCC2_C_NET_TIMEOUT #if SMSC_IRCC2_C_NET_TIMEOUT
dev->tx_timeout = smsc_ircc_timeout;
dev->watchdog_timeo = HZ * 2; /* Allow enough time for speed change */ dev->watchdog_timeo = HZ * 2; /* Allow enough time for speed change */
#endif #endif
dev->open = smsc_ircc_net_open; dev->netdev_ops = &smsc_ircc_netdev_ops;
dev->stop = smsc_ircc_net_close;
dev->do_ioctl = smsc_ircc_net_ioctl;
self = netdev_priv(dev); self = netdev_priv(dev);
self->netdev = dev; self->netdev = dev;
...@@ -995,9 +1011,6 @@ static void smsc_ircc_fir_start(struct smsc_ircc_cb *self) ...@@ -995,9 +1011,6 @@ static void smsc_ircc_fir_start(struct smsc_ircc_cb *self)
/* Reset everything */ /* Reset everything */
/* Install FIR transmit handler */
dev->hard_start_xmit = smsc_ircc_hard_xmit_fir;
/* Clear FIFO */ /* Clear FIFO */
outb(inb(fir_base + IRCC_LCR_A) | IRCC_LCR_A_FIFO_RESET, fir_base + IRCC_LCR_A); outb(inb(fir_base + IRCC_LCR_A) | IRCC_LCR_A_FIFO_RESET, fir_base + IRCC_LCR_A);
...@@ -1894,7 +1907,6 @@ static void smsc_ircc_sir_start(struct smsc_ircc_cb *self) ...@@ -1894,7 +1907,6 @@ static void smsc_ircc_sir_start(struct smsc_ircc_cb *self)
IRDA_ASSERT(self != NULL, return;); IRDA_ASSERT(self != NULL, return;);
dev = self->netdev; dev = self->netdev;
IRDA_ASSERT(dev != NULL, return;); IRDA_ASSERT(dev != NULL, return;);
dev->hard_start_xmit = &smsc_ircc_hard_xmit_sir;
fir_base = self->io.fir_base; fir_base = self->io.fir_base;
sir_base = self->io.sir_base; sir_base = self->io.sir_base;
......
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