[SK_BUFF]: Introduce skb_transport_offset()
For the quite common 'skb->h.raw - skb->data' sequence. Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
badff6d01a
commit
ea2ae17d64
@@ -962,6 +962,11 @@ static inline void skb_reset_transport_header(struct sk_buff *skb)
|
||||
skb->h.raw = skb->data;
|
||||
}
|
||||
|
||||
static inline int skb_transport_offset(const struct sk_buff *skb)
|
||||
{
|
||||
return skb->h.raw - skb->data;
|
||||
}
|
||||
|
||||
static inline unsigned char *skb_network_header(const struct sk_buff *skb)
|
||||
{
|
||||
return skb->nh.raw;
|
||||
|
||||
@@ -101,14 +101,14 @@ static inline int udplite_sender_cscov(struct udp_sock *up, struct udphdr *uh)
|
||||
|
||||
static inline __wsum udplite_csum_outgoing(struct sock *sk, struct sk_buff *skb)
|
||||
{
|
||||
int off, len, cscov = udplite_sender_cscov(udp_sk(sk), skb->h.uh);
|
||||
int cscov = udplite_sender_cscov(udp_sk(sk), skb->h.uh);
|
||||
__wsum csum = 0;
|
||||
|
||||
skb->ip_summed = CHECKSUM_NONE; /* no HW support for checksumming */
|
||||
|
||||
skb_queue_walk(&sk->sk_write_queue, skb) {
|
||||
off = skb->h.raw - skb->data;
|
||||
len = skb->len - off;
|
||||
const int off = skb_transport_offset(skb);
|
||||
const int len = skb->len - off;
|
||||
|
||||
csum = skb_checksum(skb, off, (cscov > len)? len : cscov, csum);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user