make ax25_queue_xmit a net_device parameter
Subsystems (2)
PATCH 2/2 make ax25_queue_xmit a net_device parameter
Hi David, Ralf,
I'm trying to get back to the work of reducing the number of direct
references to skb->{h,nh,raw}, that eventually will become just a void pointer.
Available at:
bk://kernel.bkbits.net/acme/sk_buff-2.6
Regards,
- Arnaldo
===================================================================
[email protected], 2005-04-04 16:28:37-03:00, [email protected]
[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.
drivers/net/hamradio/6pack.c | 4 +--- drivers/net/hamradio/baycom_epp.c | 4 +--- drivers/net/hamradio/bpqether.c | 10 ++-------- drivers/net/hamradio/dmascc.c | 4 +--- drivers/net/hamradio/hdlcdrv.c | 4 +--- drivers/net/hamradio/mkiss.c | 4 +--- drivers/net/hamradio/scc.c | 5 +---- drivers/net/hamradio/yam.c | 4 +--- include/net/ax25.h | 8 ++++++++ net/ax25/ax25_ds_subr.c | 3 +-- net/ax25/ax25_out.c | 3 +-- 11 files changed, 19 insertions(+), 34 deletions(-)
drivers/net/hamradio/6pack.c +1 -3
@@ -394,13 +394,11 @@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++;
drivers/net/hamradio/baycom_epp.c +1 -3
@@ -601,12 +601,10 @@ 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++;
drivers/net/hamradio/bpqether.c +2 -8
@@ -211,11 +211,7 @@ 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 @@ skb = newskb; } - skb->protocol =htons (ETH_P_AX25 ); - ptr =skb_push (skb,2 ); *ptr++ = (size +5 ) %256 ;
@@ -287,7 +281,7 @@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++;
drivers/net/hamradio/dmascc.c +1 -3
@@ -1306,9 +1306,7 @@ 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++;
drivers/net/hamradio/hdlcdrv.c +1 -3
@@ -174,12 +174,10 @@ 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++;
drivers/net/hamradio/mkiss.c +1 -3
@@ -332,12 +332,10 @@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++;
drivers/net/hamradio/scc.c +1 -4
@@ -1630,10 +1630,7 @@ 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;
drivers/net/hamradio/yam.c +1 -3
@@ -522,12 +522,10 @@ ++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;
include/net/ax25.h +8 -0
@@ -220,6 +220,14 @@ } } +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;
net/ax25/ax25_ds_subr.c +1 -2
@@ -143,8 +143,7 @@ *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); }
net/ax25/ax25_out.c +1 -2
@@ -351,8 +351,7 @@ {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 */
[AX25] Introduce ax25_type_trans. was Re: [PATCH 2/2][AX25] make ax25_queue_xmit a net_device parameter
Sorry, this one got the same subject as the previous one, it should have been "[AX25] Introduce ax25_type_trans".
- Arnaldo
You probably wanna set skb->input_dev in ax25_type_trans() as well something like:skb->input_dev = skb->dev = dev
cheers,
jamal
Quoted 13 lines · Arnaldo Carvalho de Melo
Hi David, Ralf,
I'm trying to get back to the work of reducing the number of direct
references to skb->{h,nh,raw}, that eventually will become just a void pointer.Available at:
bk://kernel.bkbits.net/acme/sk_buff-2.6
Regards,
- Arnaldo
Quoted 4 lines · jamal
You probably wanna set
skb->input_devinax25_type_trans()as well something like:skb->input_dev=skb->dev= dev
Yup, forgot about this one in this patch, but I want right now is mostly to reduce open coding all around while maintaining the same behaviour, in time we can eventually see a better abstraction for this set of operations, it should also set skb->protocol internally and not return a value to set skb->protocol, etc. :-)
- Arnaldo