mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-23 12:14:10 +08:00
[AX25] Introduce ax25_type_trans
Replacing the open coded equivalents and making ax25 look more like a linux network protocol, i.e. more similar to inet. Signed-off-by: Arnaldo Carvalho de Melo <acme@ghostprotocols.net> Signed-off-by: Ralf Baechle <ralf@linux-mips.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
3b2d59d1fc
commit
56cb515628
@ -394,13 +394,11 @@ static void sp_bump(struct sixpack *sp, char cmd)
|
||||
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++;
|
||||
|
@ -601,12 +601,10 @@ static void do_rxpacket(struct net_device *dev)
|
||||
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++;
|
||||
|
@ -211,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:
|
||||
@ -272,8 +268,6 @@ 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;
|
||||
@ -287,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++;
|
||||
|
@ -1306,9 +1306,7 @@ static void rx_bh(void *arg)
|
||||
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++;
|
||||
|
@ -174,12 +174,10 @@ static void hdlc_rx_flag(struct net_device *dev, struct hdlcdrv_state *s)
|
||||
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++;
|
||||
|
@ -332,12 +332,10 @@ static void ax_bump(struct ax_disp *ax)
|
||||
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++;
|
||||
|
@ -1630,10 +1630,7 @@ static void scc_net_rx(struct scc_channel *scc, struct sk_buff *skb)
|
||||
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;
|
||||
|
@ -522,12 +522,10 @@ static inline void yam_rx_flag(struct net_device *dev, struct yam_port *yp)
|
||||
++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;
|
||||
|
@ -220,6 +220,14 @@ static __inline__ void ax25_cb_put(ax25_cb *ax25)
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
|
@ -143,8 +143,7 @@ static void ax25_kiss_cmd(ax25_dev *ax25_dev, unsigned char cmd, unsigned char p
|
||||
*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);
|
||||
}
|
||||
|
@ -351,8 +351,7 @@ void ax25_queue_xmit(struct sk_buff *skb, struct net_device *dev)
|
||||
{
|
||||
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 */
|
||||
|
Loading…
Reference in New Issue
Block a user