lkml.org 
[lkml]   [2014]   [Mar]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 3/5] skbuff: skb_segment: s/skb/head_skb/
    rename local variable to make it easier to tell at a glance that we are
    dealing with a head skb.

    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    ---
    net/core/skbuff.c | 46 ++++++++++++++++++++++++----------------------
    1 file changed, 24 insertions(+), 22 deletions(-)

    diff --git a/net/core/skbuff.c b/net/core/skbuff.c
    index 917cb60..af386e1 100644
    --- a/net/core/skbuff.c
    +++ b/net/core/skbuff.c
    @@ -2841,41 +2841,42 @@ EXPORT_SYMBOL_GPL(skb_pull_rcsum);

    /**
    * skb_segment - Perform protocol segmentation on skb.
    - * @skb: buffer to segment
    + * @head_skb: buffer to segment
    * @features: features for the output path (see dev->features)
    *
    * This function performs segmentation on the given skb. It returns
    * a pointer to the first in a list of new skbs for the segments.
    * In case of error it returns ERR_PTR(err).
    */
    -struct sk_buff *skb_segment(struct sk_buff *skb, netdev_features_t features)
    +struct sk_buff *skb_segment(struct sk_buff *head_skb,
    + netdev_features_t features)
    {
    struct sk_buff *segs = NULL;
    struct sk_buff *tail = NULL;
    - struct sk_buff *fskb = skb_shinfo(skb)->frag_list;
    - skb_frag_t *frag = skb_shinfo(skb)->frags;
    - unsigned int mss = skb_shinfo(skb)->gso_size;
    - unsigned int doffset = skb->data - skb_mac_header(skb);
    + struct sk_buff *fskb = skb_shinfo(head_skb)->frag_list;
    + skb_frag_t *frag = skb_shinfo(head_skb)->frags;
    + unsigned int mss = skb_shinfo(head_skb)->gso_size;
    + unsigned int doffset = head_skb->data - skb_mac_header(head_skb);
    unsigned int offset = doffset;
    - unsigned int tnl_hlen = skb_tnl_header_len(skb);
    + unsigned int tnl_hlen = skb_tnl_header_len(head_skb);
    unsigned int headroom;
    unsigned int len;
    __be16 proto;
    bool csum;
    int sg = !!(features & NETIF_F_SG);
    - int nfrags = skb_shinfo(skb)->nr_frags;
    + int nfrags = skb_shinfo(head_skb)->nr_frags;
    int err = -ENOMEM;
    int i = 0;
    int pos;

    - proto = skb_network_protocol(skb);
    + proto = skb_network_protocol(head_skb);
    if (unlikely(!proto))
    return ERR_PTR(-EINVAL);

    csum = !!can_checksum_protocol(features, proto);
    - __skb_push(skb, doffset);
    - headroom = skb_headroom(skb);
    - pos = skb_headlen(skb);
    + __skb_push(head_skb, doffset);
    + headroom = skb_headroom(head_skb);
    + pos = skb_headlen(head_skb);

    do {
    struct sk_buff *nskb;
    @@ -2883,11 +2884,11 @@ struct sk_buff *skb_segment(struct sk_buff *skb, netdev_features_t features)
    int hsize;
    int size;

    - len = skb->len - offset;
    + len = head_skb->len - offset;
    if (len > mss)
    len = mss;

    - hsize = skb_headlen(skb) - offset;
    + hsize = skb_headlen(head_skb) - offset;
    if (hsize < 0)
    hsize = 0;
    if (hsize > len || !sg)
    @@ -2936,7 +2937,7 @@ struct sk_buff *skb_segment(struct sk_buff *skb, netdev_features_t features)
    __skb_push(nskb, doffset);
    } else {
    nskb = __alloc_skb(hsize + doffset + headroom,
    - GFP_ATOMIC, skb_alloc_rx_flag(skb),
    + GFP_ATOMIC, skb_alloc_rx_flag(head_skb),
    NUMA_NO_NODE);

    if (unlikely(!nskb))
    @@ -2952,12 +2953,12 @@ struct sk_buff *skb_segment(struct sk_buff *skb, netdev_features_t features)
    segs = nskb;
    tail = nskb;

    - __copy_skb_header(nskb, skb);
    - nskb->mac_len = skb->mac_len;
    + __copy_skb_header(nskb, head_skb);
    + nskb->mac_len = head_skb->mac_len;

    skb_headers_offset_update(nskb, skb_headroom(nskb) - headroom);

    - skb_copy_from_linear_data_offset(skb, -tnl_hlen,
    + skb_copy_from_linear_data_offset(head_skb, -tnl_hlen,
    nskb->data - tnl_hlen,
    doffset + tnl_hlen);

    @@ -2966,7 +2967,7 @@ struct sk_buff *skb_segment(struct sk_buff *skb, netdev_features_t features)

    if (!sg) {
    nskb->ip_summed = CHECKSUM_NONE;
    - nskb->csum = skb_copy_and_csum_bits(skb, offset,
    + nskb->csum = skb_copy_and_csum_bits(head_skb, offset,
    skb_put(nskb, len),
    len, 0);
    continue;
    @@ -2974,10 +2975,11 @@ struct sk_buff *skb_segment(struct sk_buff *skb, netdev_features_t features)

    nskb_frag = skb_shinfo(nskb)->frags;

    - skb_copy_from_linear_data_offset(skb, offset,
    + skb_copy_from_linear_data_offset(head_skb, offset,
    skb_put(nskb, hsize), hsize);

    - skb_shinfo(nskb)->tx_flags = skb_shinfo(skb)->tx_flags & SKBTX_SHARED_FRAG;
    + skb_shinfo(nskb)->tx_flags = skb_shinfo(head_skb)->tx_flags &
    + SKBTX_SHARED_FRAG;

    while (pos < offset + len) {
    if (i >= nfrags) {
    @@ -3034,7 +3036,7 @@ perform_csum_check:
    nskb->len - doffset, 0);
    nskb->ip_summed = CHECKSUM_NONE;
    }
    - } while ((offset += len) < skb->len);
    + } while ((offset += len) < head_skb->len);

    return segs;

    --
    MST


    \
     
     \ /
      Last update: 2014-03-10 17:41    [W:3.508 / U:0.624 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site