diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2007-04-25 21:04:18 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-04-26 01:25:31 -0400 |
commit | 9c70220b73908f64792422a2c39c593c4792f2c5 (patch) | |
tree | 2090ea10aaa2714a5e095bae8cc02e743c378a3a /drivers | |
parent | a27ef749e7be3b06fb58df53d94eb97a21f18707 (diff) |
[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 <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/appletalk/ltpc.c | 7 | ||||
-rw-r--r-- | drivers/net/cxgb3/sge.c | 8 | ||||
-rw-r--r-- | drivers/s390/net/qeth_eddp.c | 4 |
3 files changed, 12 insertions, 7 deletions
diff --git a/drivers/net/appletalk/ltpc.c b/drivers/net/appletalk/ltpc.c index dc3bce992dcf..43c17c85c97b 100644 --- a/drivers/net/appletalk/ltpc.c +++ b/drivers/net/appletalk/ltpc.c | |||
@@ -917,6 +917,7 @@ static int ltpc_xmit(struct sk_buff *skb, struct net_device *dev) | |||
917 | 917 | ||
918 | int i; | 918 | int i; |
919 | struct lt_sendlap cbuf; | 919 | struct lt_sendlap cbuf; |
920 | unsigned char *hdr; | ||
920 | 921 | ||
921 | cbuf.command = LT_SENDLAP; | 922 | cbuf.command = LT_SENDLAP; |
922 | cbuf.dnode = skb->data[0]; | 923 | cbuf.dnode = skb->data[0]; |
@@ -932,11 +933,13 @@ static int ltpc_xmit(struct sk_buff *skb, struct net_device *dev) | |||
932 | printk("\n"); | 933 | printk("\n"); |
933 | } | 934 | } |
934 | 935 | ||
935 | do_write(dev,&cbuf,sizeof(cbuf),skb->h.raw,skb->len); | 936 | hdr = skb_transport_header(skb); |
937 | do_write(dev, &cbuf, sizeof(cbuf), hdr, skb->len); | ||
936 | 938 | ||
937 | if(debug & DEBUG_UPPER) { | 939 | if(debug & DEBUG_UPPER) { |
938 | printk("sent %d ddp bytes\n",skb->len); | 940 | printk("sent %d ddp bytes\n",skb->len); |
939 | for(i=0;i<skb->len;i++) printk("%02x ",skb->h.raw[i]); | 941 | for (i = 0; i < skb->len; i++) |
942 | printk("%02x ", hdr[i]); | ||
940 | printk("\n"); | 943 | printk("\n"); |
941 | } | 944 | } |
942 | 945 | ||
diff --git a/drivers/net/cxgb3/sge.c b/drivers/net/cxgb3/sge.c index a70fe9145a2e..610e4769efa4 100644 --- a/drivers/net/cxgb3/sge.c +++ b/drivers/net/cxgb3/sge.c | |||
@@ -1324,12 +1324,14 @@ static void write_ofld_wr(struct adapter *adap, struct sk_buff *skb, | |||
1324 | 1324 | ||
1325 | flits = skb_transport_offset(skb) / 8; | 1325 | flits = skb_transport_offset(skb) / 8; |
1326 | sgp = ndesc == 1 ? (struct sg_ent *)&d->flit[flits] : sgl; | 1326 | sgp = ndesc == 1 ? (struct sg_ent *)&d->flit[flits] : sgl; |
1327 | sgl_flits = make_sgl(skb, sgp, skb->h.raw, skb->tail - skb->h.raw, | 1327 | sgl_flits = make_sgl(skb, sgp, skb_transport_header(skb), |
1328 | skb->tail - skb_transport_header(skb), | ||
1328 | adap->pdev); | 1329 | adap->pdev); |
1329 | if (need_skb_unmap()) { | 1330 | if (need_skb_unmap()) { |
1330 | setup_deferred_unmapping(skb, adap->pdev, sgp, sgl_flits); | 1331 | setup_deferred_unmapping(skb, adap->pdev, sgp, sgl_flits); |
1331 | skb->destructor = deferred_unmap_destructor; | 1332 | skb->destructor = deferred_unmap_destructor; |
1332 | ((struct unmap_info *)skb->cb)->len = skb->tail - skb->h.raw; | 1333 | ((struct unmap_info *)skb->cb)->len = (skb->tail - |
1334 | skb_transport_header(skb)); | ||
1333 | } | 1335 | } |
1334 | 1336 | ||
1335 | write_wr_hdr_sgl(ndesc, skb, d, pidx, q, sgl, flits, sgl_flits, | 1337 | 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) | |||
1351 | return 1; /* packet fits as immediate data */ | 1353 | return 1; /* packet fits as immediate data */ |
1352 | 1354 | ||
1353 | flits = skb_transport_offset(skb) / 8; /* headers */ | 1355 | flits = skb_transport_offset(skb) / 8; /* headers */ |
1354 | if (skb->tail != skb->h.raw) | 1356 | if (skb->tail != skb_transport_header(skb)) |
1355 | cnt++; | 1357 | cnt++; |
1356 | return flits_to_desc(flits + sgl_len(cnt)); | 1358 | return flits_to_desc(flits + sgl_len(cnt)); |
1357 | } | 1359 | } |
diff --git a/drivers/s390/net/qeth_eddp.c b/drivers/s390/net/qeth_eddp.c index b8e84674e170..5890bb5ad23e 100644 --- a/drivers/s390/net/qeth_eddp.c +++ b/drivers/s390/net/qeth_eddp.c | |||
@@ -476,13 +476,13 @@ qeth_eddp_fill_context_tcp(struct qeth_eddp_context *ctx, | |||
476 | eddp = qeth_eddp_create_eddp_data(qhdr, | 476 | eddp = qeth_eddp_create_eddp_data(qhdr, |
477 | skb_network_header(skb), | 477 | skb_network_header(skb), |
478 | ip_hdrlen(skb), | 478 | ip_hdrlen(skb), |
479 | skb->h.raw, | 479 | skb_transport_header(skb), |
480 | tcp_hdrlen(skb)); | 480 | tcp_hdrlen(skb)); |
481 | else | 481 | else |
482 | eddp = qeth_eddp_create_eddp_data(qhdr, | 482 | eddp = qeth_eddp_create_eddp_data(qhdr, |
483 | skb_network_header(skb), | 483 | skb_network_header(skb), |
484 | sizeof(struct ipv6hdr), | 484 | sizeof(struct ipv6hdr), |
485 | skb->h.raw, | 485 | skb_transport_header(skb), |
486 | tcp_hdrlen(skb)); | 486 | tcp_hdrlen(skb)); |
487 | 487 | ||
488 | if (eddp == NULL) { | 488 | if (eddp == NULL) { |