[SK_BUFF]: Introduce skb_transport_header(skb)

For the places where we need a pointer to the transport header, it is
still legal to touch skb->h.raw directly if just adding to,
subtracting from or setting it to another layer header.

Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
This commit is contained in:
Arnaldo Carvalho de Melo 2007-04-25 18:04:18 -07:00 • committed by David S. Miller
commit 9c70220b73
42 changed files with 129 additions and 102 deletions

View file

@ -917,6 +917,7 @@ static int ltpc_xmit(struct sk_buff *skb, struct net_device *dev)
int i;
struct lt_sendlap cbuf;
unsigned char *hdr;
cbuf.command = LT_SENDLAP;
cbuf.dnode = skb->data[0];
@ -932,11 +933,13 @@ static int ltpc_xmit(struct sk_buff *skb, struct net_device *dev)
printk("\n");
}
do_write(dev,&cbuf,sizeof(cbuf),skb->h.raw,skb->len);
hdr = skb_transport_header(skb);
do_write(dev, &cbuf, sizeof(cbuf), hdr, skb->len);
if(debug & DEBUG_UPPER) {
printk("sent %d ddp bytes\n",skb->len);
for(i=0;i<skb->len;i++) printk("%02x ",skb->h.raw[i]);
for (i = 0; i < skb->len; i++)
printk("%02x ", hdr[i]);
printk("\n");
}

View file

@ -1324,12 +1324,14 @@ static void write_ofld_wr(struct adapter *adap, struct sk_buff *skb,
flits = skb_transport_offset(skb) / 8;
sgp = ndesc == 1 ? (struct sg_ent *)&d->flit[flits] : sgl;
sgl_flits = make_sgl(skb, sgp, skb->h.raw, skb->tail - skb->h.raw,
sgl_flits = make_sgl(skb, sgp, skb_transport_header(skb),
skb->tail - skb_transport_header(skb),
adap->pdev);
if (need_skb_unmap()) {
setup_deferred_unmapping(skb, adap->pdev, sgp, sgl_flits);
skb->destructor = deferred_unmap_destructor;
((struct unmap_info *)skb->cb)->len = skb->tail - skb->h.raw;
((struct unmap_info *)skb->cb)->len = (skb->tail -
skb_transport_header(skb));
}
write_wr_hdr_sgl(ndesc, skb, d, pidx, q, sgl, flits, sgl_flits,
@ -1351,7 +1353,7 @@ static inline unsigned int calc_tx_descs_ofld(const struct sk_buff *skb)
return 1; /* packet fits as immediate data */
flits = skb_transport_offset(skb) / 8; /* headers */
if (skb->tail != skb->h.raw)
if (skb->tail != skb_transport_header(skb))
cnt++;
return flits_to_desc(flits + sgl_len(cnt));
}