Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 135390
b: refs/heads/master
c: 02087be
h: refs/heads/master
v: v3
  • Loading branch information
Stephen Hemminger authored and David S. Miller committed Mar 22, 2009
1 parent 5b53c62 commit 44e26c2
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 10 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 30a5d7f7e3c77e3b00b8c981b7af4e5adc331353
refs/heads/master: 02087be61af0e48eae42566d3c5783f2f44337c8
30 changes: 21 additions & 9 deletions trunk/drivers/net/irda/smsc-ircc2.c
Original file line number Diff line number Diff line change
Expand Up @@ -486,6 +486,26 @@ static int __init smsc_ircc_init(void)
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)
*
Expand Down Expand Up @@ -519,14 +539,10 @@ static int __init smsc_ircc_open(unsigned int fir_base, unsigned int sir_base, u
goto err_out1;
}

dev->hard_start_xmit = smsc_ircc_hard_xmit_sir;
#if SMSC_IRCC2_C_NET_TIMEOUT
dev->tx_timeout = smsc_ircc_timeout;
dev->watchdog_timeo = HZ * 2; /* Allow enough time for speed change */
#endif
dev->open = smsc_ircc_net_open;
dev->stop = smsc_ircc_net_close;
dev->do_ioctl = smsc_ircc_net_ioctl;
dev->netdev_ops = &smsc_ircc_netdev_ops;

self = netdev_priv(dev);
self->netdev = dev;
Expand Down Expand Up @@ -995,9 +1011,6 @@ static void smsc_ircc_fir_start(struct smsc_ircc_cb *self)

/* Reset everything */

/* Install FIR transmit handler */
dev->hard_start_xmit = smsc_ircc_hard_xmit_fir;

/* Clear FIFO */
outb(inb(fir_base + IRCC_LCR_A) | IRCC_LCR_A_FIFO_RESET, fir_base + IRCC_LCR_A);

Expand Down Expand Up @@ -1894,7 +1907,6 @@ static void smsc_ircc_sir_start(struct smsc_ircc_cb *self)
IRDA_ASSERT(self != NULL, return;);
dev = self->netdev;
IRDA_ASSERT(dev != NULL, return;);
dev->hard_start_xmit = &smsc_ircc_hard_xmit_sir;

fir_base = self->io.fir_base;
sir_base = self->io.sir_base;
Expand Down

0 comments on commit 44e26c2

Please sign in to comment.