return err; 
return -EINPROGRESS; 
static int orinoco_ioctl_setrate(struct net_device *dev, struct iw_param *rrq){	struct orinoco_private *priv = netdev_priv(dev);	int err = 0;	int ratemode = -1;	int bitrate; /* 100s of kilobits */	int i;	unsigned long flags;		/* As the user space doesn't know our highest rate, it uses -1	 * to ask us to set the highest rate.  Test it using "iwconfig	 * ethX rate auto" - Jean II */	if (rrq->value == -1)		bitrate = 110;	else {		if (rrq->value % 100000)			return -EINVAL;		bitrate = rrq->value / 100000;	}	if ( (bitrate != 10) && (bitrate != 20) &&	     (bitrate != 55) && (bitrate != 110) )		return -EINVAL;	for (i = 0; i < BITRATE_TABLE_SIZE; i++)		if ( (bitrate_table[i].bitrate == bitrate) &&		     (bitrate_table[i].automatic == ! rrq->fixed) ) {			ratemode = i;			break;		}		if (ratemode == -1)		return -EINVAL;	if (orinoco_lock(priv, &flags) != 0)		return -EBUSY;	priv->bitratemode = ratemode;	orinoco_unlock(priv, &flags);	return err;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/620554e406e3cc01434c658a1e597162d7e56fd6/orinoco.c/buggy/drivers/net/wireless/orinoco.c