[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>
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index 7c1f175..64c3c16 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -962,6 +962,11 @@
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;
diff --git a/include/net/udplite.h b/include/net/udplite.h
index d99df75..76503203 100644
--- a/include/net/udplite.h
+++ b/include/net/udplite.h
@@ -101,14 +101,14 @@
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);