vserver 2.0 rc7
[linux-2.6.git] / drivers / net / hamradio / bpqether.c
index 803d5a1..ba9f058 100644 (file)
@@ -112,8 +112,6 @@ static struct notifier_block bpq_dev_notifier = {
 };
 
 
-#define MAXBPQDEV 100
-
 struct bpqdev {
        struct list_head bpq_list;      /* list of bpq devices chain */
        struct net_device *ethdev;      /* link to ethernet device */
@@ -134,7 +132,7 @@ static LIST_HEAD(bpq_devices);
  */
 static inline struct net_device *bpq_get_ether_dev(struct net_device *dev)
 {
-       struct bpqdev *bpq = (struct bpqdev *) dev->priv;
+       struct bpqdev *bpq = netdev_priv(dev);
 
        return bpq ? bpq->ethdev : NULL;
 }
@@ -191,7 +189,7 @@ static int bpq_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_ty
         * we check the source address of the sender.
         */
 
-       bpq = (struct bpqdev *)dev->priv;
+       bpq = netdev_priv(dev);
 
        eth = eth_hdr(skb);
 
@@ -213,11 +211,7 @@ static int bpq_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_ty
        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:
@@ -274,14 +268,12 @@ static int bpq_xmit(struct sk_buff *skb, struct net_device *dev)
                skb = newskb;
        }
 
-       skb->protocol = htons(ETH_P_AX25);
-
        ptr = skb_push(skb, 2);
 
        *ptr++ = (size + 5) % 256;
        *ptr++ = (size + 5) / 256;
 
-       bpq = (struct bpqdev *)dev->priv;
+       bpq = netdev_priv(dev);
 
        if ((dev = bpq_get_ether_dev(dev)) == NULL) {
                bpq->stats.tx_dropped++;
@@ -289,7 +281,7 @@ static int bpq_xmit(struct sk_buff *skb, struct net_device *dev)
                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++;
@@ -305,7 +297,7 @@ static int bpq_xmit(struct sk_buff *skb, struct net_device *dev)
  */
 static struct net_device_stats *bpq_get_stats(struct net_device *dev)
 {
-       struct bpqdev *bpq = (struct bpqdev *) dev->priv;
+       struct bpqdev *bpq = netdev_priv(dev);
 
        return &bpq->stats;
 }
@@ -332,15 +324,12 @@ static int bpq_set_mac_address(struct net_device *dev, void *addr)
 static int bpq_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 {
        struct bpq_ethaddr __user *ethaddr = ifr->ifr_data;
-       struct bpqdev *bpq = dev->priv;
+       struct bpqdev *bpq = netdev_priv(dev);
        struct bpq_req req;
 
        if (!capable(CAP_NET_ADMIN))
                return -EPERM;
 
-       if (bpq == NULL)                /* woops! */
-               return -ENODEV;
-
        switch (cmd) {
                case SIOCSBPQETHOPT:
                        if (copy_from_user(&req, ifr->ifr_data, sizeof(struct bpq_req)))
@@ -525,7 +514,7 @@ static int bpq_new_device(struct net_device *edev)
                return -ENOMEM;
 
                
-       bpq = ndev->priv;
+       bpq = netdev_priv(ndev);
        dev_hold(edev);
        bpq->ethdev = edev;
        bpq->axdev = ndev;
@@ -554,7 +543,7 @@ static int bpq_new_device(struct net_device *edev)
 
 static void bpq_free_device(struct net_device *ndev)
 {
-       struct bpqdev *bpq = ndev->priv;
+       struct bpqdev *bpq = netdev_priv(ndev);
 
        dev_put(bpq->ethdev);
        list_del_rcu(&bpq->bpq_list);