patch-2.4.2 linux/drivers/net/irda/nsc-ircc.c
Next file: linux/drivers/net/irda/smc-ircc.c
Previous file: linux/drivers/net/irda/irtty.c
Back to the patch index
Back to the overall index
- Lines: 92
- Date:
Tue Feb 13 13:15:05 2001
- Orig file:
v2.4.1/linux/drivers/net/irda/nsc-ircc.c
- Orig date:
Mon Nov 27 18:07:31 2000
diff -u --recursive --new-file v2.4.1/linux/drivers/net/irda/nsc-ircc.c linux/drivers/net/irda/nsc-ircc.c
@@ -49,7 +49,7 @@
#include <linux/netdevice.h>
#include <linux/ioport.h>
#include <linux/delay.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
#include <linux/rtnetlink.h>
@@ -1064,7 +1064,7 @@
struct nsc_ircc_cb *self;
unsigned long flags;
int iobase;
- __u32 speed;
+ __s32 speed;
__u8 bank;
self = (struct nsc_ircc_cb *) dev->priv;
@@ -1076,10 +1076,12 @@
netif_stop_queue(dev);
/* Check if we need to change the speed */
- if ((speed = irda_get_speed(skb)) != self->io.speed) {
+ speed = irda_get_next_speed(skb);
+ if ((speed != self->io.speed) && (speed != -1)) {
/* Check for empty frame */
if (!skb->len) {
nsc_ircc_change_speed(self, speed);
+ dev_kfree_skb(skb);
return 0;
} else
self->new_speed = speed;
@@ -1116,7 +1118,7 @@
struct nsc_ircc_cb *self;
unsigned long flags;
int iobase;
- __u32 speed;
+ __s32 speed;
__u8 bank;
int mtt, diff;
@@ -1126,10 +1128,12 @@
netif_stop_queue(dev);
/* Check if we need to change the speed */
- if ((speed = irda_get_speed(skb)) != self->io.speed) {
+ speed = irda_get_next_speed(skb);
+ if ((speed != self->io.speed) && (speed != -1)) {
/* Check for empty frame */
if (!skb->len) {
nsc_ircc_change_speed(self, speed);
+ dev_kfree_skb(skb);
return 0;
} else
self->new_speed = speed;
@@ -1956,16 +1960,20 @@
/* Disable interrupts & save flags */
save_flags(flags);
cli();
-
+
switch (cmd) {
case SIOCSBANDWIDTH: /* Set bandwidth */
- if (!capable(CAP_NET_ADMIN))
- return -EPERM;
+ if (!capable(CAP_NET_ADMIN)) {
+ ret = -EPERM;
+ goto out;
+ }
nsc_ircc_change_speed(self, irq->ifr_baudrate);
break;
case SIOCSMEDIABUSY: /* Set media busy */
- if (!capable(CAP_NET_ADMIN))
- return -EPERM;
+ if (!capable(CAP_NET_ADMIN)) {
+ ret = -EPERM;
+ goto out;
+ }
irda_device_set_media_busy(self->netdev, TRUE);
break;
case SIOCGRECEIVING: /* Check if we are receiving right now */
@@ -1974,9 +1982,8 @@
default:
ret = -EOPNOTSUPP;
}
-
+out:
restore_flags(flags);
-
return ret;
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)