if ((skb = dev_alloc_skb(count)) == NULL)
                goto out_mem;
 
-       skb->dev = sp->dev;
        ptr = skb_put(skb, count);
        *ptr++ = cmd;   /* KISS command */
 
        memcpy(ptr, sp->cooked_buf + 1, count);
-       skb->mac.raw = skb->data;
-       skb->protocol = htons(ETH_P_AX25);
+       skb->protocol = ax25_type_trans(skb, sp->dev);
        netif_rx(skb);
        sp->dev->last_rx = jiffies;
        sp->stats.rx_packets++;
 
                bc->stats.rx_dropped++;
                return;
        }
-       skb->dev = dev;
        cp = skb_put(skb, pktlen);
        *cp++ = 0; /* KISS kludge */
        memcpy(cp, bc->hdlcrx.buf, pktlen - 1);
-       skb->protocol = htons(ETH_P_AX25);
-       skb->mac.raw = skb->data;
+       skb->protocol = ax25_type_trans(skb, dev);
        netif_rx(skb);
        dev->last_rx = jiffies;
        bc->stats.rx_packets++;
 
        ptr = skb_push(skb, 1);
        *ptr = 0;
 
-       skb->dev = dev;
-       skb->protocol = htons(ETH_P_AX25);
-       skb->mac.raw = skb->data;
-       skb->pkt_type = PACKET_HOST;
-
+       skb->protocol = ax25_type_trans(skb, dev);
        netif_rx(skb);
        dev->last_rx = jiffies;
 unlock:
                skb = newskb;
        }
 
-       skb->protocol = htons(ETH_P_AX25);
-
        ptr = skb_push(skb, 2);
 
        *ptr++ = (size + 5) % 256;
                return -ENODEV;
        }
 
-       skb->dev = dev;
+       skb->protocol = ax25_type_trans(skb, dev);
        skb->nh.raw = skb->data;
        dev->hard_header(skb, dev, ETH_P_BPQ, bpq->dest_addr, NULL, 0);
        bpq->stats.tx_packets++;
 
                        data = skb_put(skb, cb + 1);
                        data[0] = 0;
                        memcpy(&data[1], priv->rx_buf[i], cb);
-                       skb->dev = priv->dev;
-                       skb->protocol = ntohs(ETH_P_AX25);
-                       skb->mac.raw = skb->data;
+                       skb->protocol = ax25_type_trans(skb, priv->dev);
                        netif_rx(skb);
                        priv->dev->last_rx = jiffies;
                        priv->stats.rx_packets++;
 
                s->stats.rx_dropped++;
                return;
        }
-       skb->dev = dev;
        cp = skb_put(skb, pkt_len);
        *cp++ = 0; /* KISS kludge */
        memcpy(cp, s->hdlcrx.buffer, pkt_len - 1);
-       skb->protocol = htons(ETH_P_AX25);
-       skb->mac.raw = skb->data;
+       skb->protocol = ax25_type_trans(skb, dev);
        netif_rx(skb);
        dev->last_rx = jiffies;
        s->stats.rx_packets++;
 
                return;
        }
 
-       skb->dev      = ax->dev;
        spin_lock_bh(&ax->buflock);
        memcpy(skb_put(skb,count), ax->rbuff, count);
        spin_unlock_bh(&ax->buflock);
-       skb->mac.raw  = skb->data;
-       skb->protocol = htons(ETH_P_AX25);
+       skb->protocol = ax25_type_trans(skb, ax->dev);
        netif_rx(skb);
        ax->dev->last_rx = jiffies;
        ax->rx_packets++;
 
        scc->dev_stat.rx_packets++;
        scc->dev_stat.rx_bytes += skb->len;
 
-       skb->dev      = scc->dev;
-       skb->protocol = htons(ETH_P_AX25);
-       skb->mac.raw  = skb->data;
-       skb->pkt_type = PACKET_HOST;
+       skb->protocol = ax25_type_trans(skb, scc->dev);
        
        netif_rx(skb);
        scc->dev->last_rx = jiffies;
 
                                ++yp->stats.rx_dropped;
                        } else {
                                unsigned char *cp;
-                               skb->dev = dev;
                                cp = skb_put(skb, pkt_len);
                                *cp++ = 0;              /* KISS kludge */
                                memcpy(cp, yp->rx_buf, pkt_len - 1);
-                               skb->protocol = htons(ETH_P_AX25);
-                               skb->mac.raw = skb->data;
+                               skb->protocol = ax25_type_trans(skb, dev);
                                netif_rx(skb);
                                dev->last_rx = jiffies;
                                ++yp->stats.rx_packets;
 
        }
 }
 
+static inline unsigned short ax25_type_trans(struct sk_buff *skb, struct net_device *dev)
+{
+       skb->dev      = dev;
+       skb->pkt_type = PACKET_HOST;
+       skb->mac.raw  = skb->data;
+       return htons(ETH_P_AX25);
+}
+
 /* af_ax25.c */
 extern struct hlist_head ax25_list;
 extern spinlock_t ax25_list_lock;
 
        *p++ = cmd;
        *p++ = param;
 
-       skb->dev      = ax25_dev->dev;
-       skb->protocol = htons(ETH_P_AX25);
+       skb->protocol = ax25_type_trans(skb, ax25_dev->dev);
 
        dev_queue_xmit(skb);
 }
 
 {
        unsigned char *ptr;
 
-       skb->protocol = htons(ETH_P_AX25);
-       skb->dev      = ax25_fwd_dev(dev);
+       skb->protocol = ax25_type_trans(skb, ax25_fwd_dev(dev));
 
        ptr  = skb_push(skb, 1);
        *ptr = 0x00;                    /* KISS */