out: 
toshoboe_net_ioctl (struct net_device *dev, struct ifreq *rq, int cmd){  struct if_irda_req *irq = (struct if_irda_req *) rq;  struct toshoboe_cb *self;  unsigned long flags;  int ret = 0;  IRDA_ASSERT (dev != NULL, return -1; );  self = dev->priv;  IRDA_ASSERT (self != NULL, return -1; );  IRDA_DEBUG (5, "%s(), %s, (cmd=0x%X)\n", __FUNCTION__, dev->name, cmd);  /* Disable interrupts & save flags */  spin_lock_irqsave(&self->spinlock, flags);  switch (cmd)    {    case SIOCSBANDWIDTH:       /* Set bandwidth */      /* This function will also be used by IrLAP to change the       * speed, so we still must allow for speed change within       * interrupt context.       */      IRDA_DEBUG (1, "%s(BANDWIDTH), %s, (%X/%ld\n", __FUNCTION__          ,dev->name, INB (OBOE_STATUS), irq->ifr_baudrate );      if (!in_interrupt () && !capable (CAP_NET_ADMIN))        return -EPERM;      /* self->speed=irq->ifr_baudrate; */      /* toshoboe_setbaud(self); */      /* Just change speed once - inserted by Paul Bristow */      self->new_speed = irq->ifr_baudrate;      break;    case SIOCSMEDIABUSY:       /* Set media busy */      IRDA_DEBUG (1, "%s(MEDIABUSY), %s, (%X/%x)\n", __FUNCTION__          ,dev->name, INB (OBOE_STATUS), capable (CAP_NET_ADMIN) );      if (!capable (CAP_NET_ADMIN))        return -EPERM;      irda_device_set_media_busy (self->netdev, TRUE);      break;    case SIOCGRECEIVING:       /* Check if we are receiving right now */      irq->ifr_receiving = (INB (OBOE_STATUS) & OBOE_STATUS_RXBUSY) ? 1 : 0;      IRDA_DEBUG (3, "%s(RECEIVING), %s, (%X/%x)\n", __FUNCTION__          ,dev->name, INB (OBOE_STATUS), irq->ifr_receiving );      break;    default:      IRDA_DEBUG (1, "%s(?), %s, (cmd=0x%X)\n", __FUNCTION__, dev->name, cmd);      ret = -EOPNOTSUPP;    }  spin_unlock_irqrestore(&self->spinlock, flags);  return ret;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/ac7c98eca88a854755475fcfe1b2bf5f97f90d99/donauboe.c/buggy/drivers/net/irda/donauboe.c