From 8b398b69287053c8e964a557026f0e2b3e1f00ee Mon Sep 17 00:00:00 2001 From: Kuninori Morimoto Date: Thu, 13 Jan 2011 21:47:42 +0000 Subject: [PATCH] --- yaml --- r: 231933 b: refs/heads/master c: 5ae2f66fe4626340d4fd9d26b522ce377c780a56 h: refs/heads/master i: 231931: 4781aa4aacdebe372de18e91b8d252a43e9b7e11 v: v3 --- [refs] | 2 +- trunk/drivers/net/irda/sh_irda.c | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 01129650150f..206aac4ec960 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 6ee400aafb60289b78fcde5ebccd8c4973fc53f4 +refs/heads/master: 5ae2f66fe4626340d4fd9d26b522ce377c780a56 diff --git a/trunk/drivers/net/irda/sh_irda.c b/trunk/drivers/net/irda/sh_irda.c index 9e3f4f54281d..4488bd581eca 100644 --- a/trunk/drivers/net/irda/sh_irda.c +++ b/trunk/drivers/net/irda/sh_irda.c @@ -635,7 +635,7 @@ static int sh_irda_hard_xmit(struct sk_buff *skb, struct net_device *ndev) ret = sh_irda_set_baudrate(self, speed); if (ret < 0) - return ret; + goto sh_irda_hard_xmit_end; self->tx_buff.len = 0; if (skb->len) { @@ -652,11 +652,21 @@ static int sh_irda_hard_xmit(struct sk_buff *skb, struct net_device *ndev) sh_irda_write(self, IRTFLR, self->tx_buff.len); sh_irda_write(self, IRTCTR, ARMOD | TE); - } + } else + goto sh_irda_hard_xmit_end; dev_kfree_skb(skb); return 0; + +sh_irda_hard_xmit_end: + sh_irda_set_baudrate(self, 9600); + netif_wake_queue(self->ndev); + sh_irda_rcv_ctrl(self, 1); + dev_kfree_skb(skb); + + return ret; + } static int sh_irda_ioctl(struct net_device *ndev, struct ifreq *ifreq, int cmd)