/* Send one completely decapsulated AX.25 packet to the AX.25 layer. */
static void ax_bump(struct mkiss *ax)
{
- unsigned long flags;
struct sk_buff *skb;
int count;
- spin_lock_irqsave(&ax->buflock, flags);
+ spin_lock_bh(&ax->buflock);
if (ax->rbuff[0] > 0x0f) {
if (ax->rbuff[0] & 0x80) {
if (check_crc_16(ax->rbuff, ax->rcount) < 0) {
ax->dev->stats.rx_errors++;
- spin_unlock_irqrestore(&ax->buflock, flags);
+ spin_unlock_bh(&ax->buflock);
return;
}
if (ax->crcmode != CRC_MODE_SMACK && ax->crcauto) {
printk(KERN_INFO
- "mkiss: %s: Switchting to crc-smack\n",
+ "mkiss: %s: Switching to crc-smack\n",
ax->dev->name);
ax->crcmode = CRC_MODE_SMACK;
}
} else if (ax->rbuff[0] & 0x20) {
if (check_crc_flex(ax->rbuff, ax->rcount) < 0) {
ax->dev->stats.rx_errors++;
- spin_unlock_irqrestore(&ax->buflock, flags);
+ spin_unlock_bh(&ax->buflock);
return;
}
if (ax->crcmode != CRC_MODE_FLEX && ax->crcauto) {
printk(KERN_INFO
- "mkiss: %s: Switchting to crc-flexnet\n",
+ "mkiss: %s: Switching to crc-flexnet\n",
ax->dev->name);
ax->crcmode = CRC_MODE_FLEX;
}
printk(KERN_ERR "mkiss: %s: memory squeeze, dropping packet.\n",
ax->dev->name);
ax->dev->stats.rx_dropped++;
- spin_unlock_irqrestore(&ax->buflock, flags);
+ spin_unlock_bh(&ax->buflock);
return;
}
netif_rx(skb);
ax->dev->stats.rx_packets++;
ax->dev->stats.rx_bytes += count;
- spin_unlock_irqrestore(&ax->buflock, flags);
+ spin_unlock_bh(&ax->buflock);
}
static void kiss_unesc(struct mkiss *ax, unsigned char s)
{
- unsigned long flags;
-
switch (s) {
case END:
/* drop keeptest bit = VSV */
break;
}
- spin_lock_irqsave(&ax->buflock, flags);
+ spin_lock_bh(&ax->buflock);
if (!test_bit(AXF_ERROR, &ax->flags)) {
if (ax->rcount < ax->buffsize) {
ax->rbuff[ax->rcount++] = s;
- spin_unlock_irqrestore(&ax->buflock, flags);
+ spin_unlock_bh(&ax->buflock);
return;
}
ax->dev->stats.rx_over_errors++;
set_bit(AXF_ERROR, &ax->flags);
}
- spin_unlock_irqrestore(&ax->buflock, flags);
+ spin_unlock_bh(&ax->buflock);
}
static int ax_set_mac_address(struct net_device *dev, void *addr)
{
struct net_device *dev = ax->dev;
unsigned char *xbuff, *rbuff, *oxbuff, *orbuff;
- unsigned long flags;
int len;
len = dev->mtu * 2;
return;
}
- spin_lock_irqsave(&ax->buflock, flags);
+ spin_lock_bh(&ax->buflock);
oxbuff = ax->xbuff;
ax->xbuff = xbuff;
ax->mtu = dev->mtu + 73;
ax->buffsize = len;
- spin_unlock_irqrestore(&ax->buflock, flags);
+ spin_unlock_bh(&ax->buflock);
kfree(oxbuff);
kfree(orbuff);
static void ax_encaps(struct net_device *dev, unsigned char *icp, int len)
{
struct mkiss *ax = netdev_priv(dev);
- unsigned long flags;
unsigned char *p;
int actual, count;
p = icp;
- spin_lock_irqsave(&ax->buflock, flags);
+ spin_lock_bh(&ax->buflock);
if ((*p & 0x0f) != 0) {
/* Configuration Command (kissparms(1).
* Protocol spec says: never append CRC.
ax->crcauto = (cmd ? 0 : 1);
printk(KERN_INFO "mkiss: %s: crc mode %s %d\n", ax->dev->name, (len) ? "set to" : "is", cmd);
}
- spin_unlock_irqrestore(&ax->buflock, flags);
+ spin_unlock_bh(&ax->buflock);
netif_start_queue(dev);
return;
count = kiss_esc(p, (unsigned char *)ax->xbuff, len);
}
}
- spin_unlock_irqrestore(&ax->buflock, flags);
+ spin_unlock_bh(&ax->buflock);
set_bit(TTY_DO_WRITE_WAKEUP, &ax->tty->flags);
actual = ax->tty->ops->write(ax->tty, ax->xbuff, count);
}
/* Encapsulate an AX.25 packet and kick it into a TTY queue. */
-static int ax_xmit(struct sk_buff *skb, struct net_device *dev)
+static netdev_tx_t ax_xmit(struct sk_buff *skb, struct net_device *dev)
{
struct mkiss *ax = netdev_priv(dev);
kfree_skb(skb);
}
- return 0;
+ return NETDEV_TX_OK;
}
static int ax_open_dev(struct net_device *dev)
static struct mkiss *mkiss_get(struct tty_struct *tty)
{
- unsigned long flags;
struct mkiss *ax;
- read_lock_irqsave(&disc_data_lock, flags);
+ read_lock(&disc_data_lock);
ax = tty->disc_data;
if (ax)
atomic_inc(&ax->refcnt);
- read_unlock_irqrestore(&disc_data_lock, flags);
+ read_unlock(&disc_data_lock);
return ax;
}
static void mkiss_close(struct tty_struct *tty)
{
- unsigned long flags;
struct mkiss *ax;
- write_lock_irqsave(&disc_data_lock, flags);
+ write_lock(&disc_data_lock);
ax = tty->disc_data;
tty->disc_data = NULL;
- write_unlock_irqrestore(&disc_data_lock, flags);
+ write_unlock(&disc_data_lock);
if (!ax)
return;