NAPI_GRO_CB
NAPI_GRO_CB(skb)->count = segs;
NAPI_GRO_CB(skb)->count = num_of_coalesced_segs;
NAPI_GRO_CB(skb)->count = segs;
skb_shinfo(skb)->gso_segs = NAPI_GRO_CB(skb)->count;
NAPI_GRO_CB(skb)->count = hnae3_get_field(l234info,
NAPI_GRO_CB(skb)->count = rsc_segments;
skb_shinfo(skb)->gso_segs = NAPI_GRO_CB(skb)->count;
if (NAPI_GRO_CB(skb)->count != 1)
u16 gro_count = NAPI_GRO_CB(skb)->count;
NAPI_GRO_CB(*skb)->count = 1;
NAPI_GRO_CB(*skb)->count++;
if (NAPI_GRO_CB(*skb)->count == 2 &&
NAPI_GRO_CB(skb)->count = le16_to_cpu(cqe->num_of_coalesced_segs);
if (!NAPI_GRO_CB(skb)->csum_valid)
csum = csum_sub(NAPI_GRO_CB(skb)->csum, csum_partial(gh, plen, 0));
NAPI_GRO_CB(skb)->flush = 1;
if (!NAPI_GRO_CB(p)->same_flow)
NAPI_GRO_CB(p)->same_flow = 0;
if (!NAPI_GRO_CB(skb)->csum_valid)
if (!NAPI_GRO_CB(p)->same_flow)
NAPI_GRO_CB(p)->same_flow = 0;
return ++NAPI_GRO_CB(skb)->recursion_counter == GRO_RECURSION_LIMIT;
NAPI_GRO_CB(skb)->flush |= 1;
NAPI_GRO_CB(skb)->flush |= 1;
return NAPI_GRO_CB(skb)->data_offset;
return skb->len - NAPI_GRO_CB(skb)->data_offset;
NAPI_GRO_CB(skb)->data_offset += len;
return NAPI_GRO_CB(skb)->frag0 + offset;
return likely(hlen <= NAPI_GRO_CB(skb)->frag0_len);
return NAPI_GRO_CB(skb)->network_offsets[NAPI_GRO_CB(skb)->encap_mark];
if (NAPI_GRO_CB(skb)->csum_valid)
NAPI_GRO_CB(skb)->csum = wsum_negate(csum_partial(start, len,
wsum_negate(NAPI_GRO_CB(skb)->csum)));
return (NAPI_GRO_CB(skb)->gro_remcsum_start == skb_gro_offset(skb));
NAPI_GRO_CB(skb)->csum_cnt == 0 &&
if (NAPI_GRO_CB(skb)->csum_valid &&
!csum_fold(csum_add(psum, NAPI_GRO_CB(skb)->csum)))
NAPI_GRO_CB(skb)->csum = psum;
if (NAPI_GRO_CB(skb)->csum_cnt > 0) {
NAPI_GRO_CB(skb)->csum_cnt--;
return (NAPI_GRO_CB(skb)->csum_cnt == 0 &&
!NAPI_GRO_CB(skb)->csum_valid);
NAPI_GRO_CB(skb)->csum = ~pseudo;
NAPI_GRO_CB(skb)->csum_valid = 1;
BUG_ON(!NAPI_GRO_CB(skb)->csum_valid);
NAPI_GRO_CB(skb)->gro_remcsum_start = off + hdrlen + start;
delta = remcsum_adjust(ptr + hdrlen, NAPI_GRO_CB(skb)->csum,
NAPI_GRO_CB(skb)->csum = csum_add(NAPI_GRO_CB(skb)->csum, delta);
NAPI_GRO_CB(skb)->flush |= flush;
NAPI_GRO_CB(skb)->flush |= flush;
NAPI_GRO_CB(skb)->flush |= flush;
NAPI_GRO_CB(skb)->flush |= flush;
NAPI_GRO_CB(skb)->flush |= 1, NULL : \
const u16 count = NAPI_GRO_CB(p)->count;
NAPI_GRO_CB(p)->ip_fixedid |= 1 << inner;
return ipid_offset ^ (count * !(NAPI_GRO_CB(p)->ip_fixedid & (1 << inner)));
flush = __gro_receive_network_flush(th, th2, p, off - NAPI_GRO_CB(p)->network_offset, false);
if (NAPI_GRO_CB(p)->encap_mark)
flush |= __gro_receive_network_flush(th, th2, p, off - NAPI_GRO_CB(p)->inner_network_offset, true);
NAPI_GRO_CB(skb)->flush |= 1, NULL : \
NAPI_GRO_CB(skb)->network_offsets[NAPI_GRO_CB(skb)->encap_mark] = hlen;
if (!NAPI_GRO_CB(p)->same_flow)
NAPI_GRO_CB(p)->same_flow = 0;
NAPI_GRO_CB(skb)->flush))
if (NAPI_GRO_CB(skb)->proto != IPPROTO_TCP ||
segs = NAPI_GRO_CB(skb)->count;
lp = NAPI_GRO_CB(p)->last;
NAPI_GRO_CB(skb)->free = NAPI_GRO_FREE;
NAPI_GRO_CB(skb)->free = NAPI_GRO_FREE_STOLEN_HEAD;
if (NAPI_GRO_CB(p)->last == p)
NAPI_GRO_CB(p)->last->next = skb;
NAPI_GRO_CB(p)->last = skb;
NAPI_GRO_CB(p)->count += segs;
NAPI_GRO_CB(skb)->same_flow = 1;
if (NAPI_GRO_CB(p)->last == p)
NAPI_GRO_CB(p)->last->next = skb;
NAPI_GRO_CB(p)->last = skb;
NAPI_GRO_CB(p)->count++;
NAPI_GRO_CB(skb)->same_flow = 1;
if (NAPI_GRO_CB(skb)->count == 1) {
gro_normal_one(gro, skb, NAPI_GRO_CB(skb)->count);
if (flush_old && NAPI_GRO_CB(skb)->age == jiffies)
NAPI_GRO_CB(p)->same_flow = 0;
NAPI_GRO_CB(p)->same_flow = !diffs;
NAPI_GRO_CB(skb)->network_offset = 0;
NAPI_GRO_CB(skb)->data_offset = 0;
NAPI_GRO_CB(skb)->frag0 = skb->data;
NAPI_GRO_CB(skb)->frag0_len = headlen;
NAPI_GRO_CB(skb)->frag0 = skb_frag_address(frag0);
NAPI_GRO_CB(skb)->frag0_len = min_t(unsigned int,
memcpy(skb_tail_pointer(skb), NAPI_GRO_CB(skb)->frag0, grow);
*(u32 *)&NAPI_GRO_CB(skb)->zeroed = 0;
NAPI_GRO_CB(skb)->flush = skb_has_frag_list(skb);
NAPI_GRO_CB(skb)->count = 1;
NAPI_GRO_CB(skb)->count = skb_shinfo(skb)->gso_segs;
NAPI_GRO_CB(skb)->flush = 1;
NAPI_GRO_CB(skb)->csum = skb->csum;
NAPI_GRO_CB(skb)->csum_valid = 1;
NAPI_GRO_CB(skb)->csum_cnt = skb->csum_level + 1;
same_flow = NAPI_GRO_CB(skb)->same_flow;
ret = NAPI_GRO_CB(skb)->free ? GRO_MERGED_FREE : GRO_MERGED;
if (NAPI_GRO_CB(skb)->flush)
NAPI_GRO_CB(skb)->age = jiffies;
NAPI_GRO_CB(skb)->last = skb;
if (NAPI_GRO_CB(skb)->free == NAPI_GRO_FREE_STOLEN_HEAD)
if (NAPI_GRO_CB(skb)->free == NAPI_GRO_FREE_STOLEN_HEAD)
if (NAPI_GRO_CB(skb)->frag0 != skb->data)
NAPI_GRO_CB(skb)->frag0 += hlen;
NAPI_GRO_CB(skb)->frag0_len -= hlen;
sum = csum_fold(csum_add(NAPI_GRO_CB(skb)->csum, wsum));
NAPI_GRO_CB(skb)->csum = wsum;
NAPI_GRO_CB(skb)->csum_valid = 1;
if (!NAPI_GRO_CB(p)->same_flow)
NAPI_GRO_CB(p)->same_flow = 0;
NAPI_GRO_CB(skb)->proto = proto;
if (!NAPI_GRO_CB(p)->same_flow)
NAPI_GRO_CB(p)->same_flow = 0;
NAPI_GRO_CB(skb)->flush |= flush;
NAPI_GRO_CB(skb)->network_offsets[NAPI_GRO_CB(skb)->encap_mark] = off;
if (NAPI_GRO_CB(skb)->encap_mark) {
NAPI_GRO_CB(skb)->flush = 1;
NAPI_GRO_CB(skb)->encap_mark = 1;
if (NAPI_GRO_CB(skb)->proto == IPPROTO_UDP)
NAPI_GRO_CB(skb)->same_flow = 0;
NAPI_GRO_CB(skb)->flush = 1;
NAPI_GRO_CB(skb)->encap_mark = 0;
NAPI_GRO_CB(skb)->is_fou = 1;
if (!NAPI_GRO_CB(skb)->csum_valid)
if (!NAPI_GRO_CB(p)->same_flow)
NAPI_GRO_CB(p)->same_flow = 0;
NAPI_GRO_CB(p)->same_flow = 0;
NAPI_GRO_CB(skb)->encap_mark = 0;
NAPI_GRO_CB(skb)->is_fou = 1;
if (NAPI_GRO_CB(skb)->encap_mark)
NAPI_GRO_CB(skb)->encap_mark = 1;
if ((greh->flags & GRE_CSUM) && NAPI_GRO_CB(skb)->is_fou)
if ((greh->flags & GRE_CSUM) && !NAPI_GRO_CB(skb)->flush) {
if (!NAPI_GRO_CB(p)->same_flow)
NAPI_GRO_CB(p)->same_flow = 0;
NAPI_GRO_CB(p)->same_flow = 0;
if (!NAPI_GRO_CB(p)->same_flow)
NAPI_GRO_CB(p)->same_flow = 0;
if (unlikely(NAPI_GRO_CB(p)->is_flist)) {
flush |= NAPI_GRO_CB(p)->count >= 64;
flush = len != NAPI_GRO_CB(skb)->count * skb_shinfo(skb)->gso_size;
if (p && (!NAPI_GRO_CB(skb)->same_flow || flush))
NAPI_GRO_CB(skb)->flush |= (flush != 0);
shinfo->gso_segs = NAPI_GRO_CB(skb)->count;
NAPI_GRO_CB(skb)->is_flist = NAPI_GRO_CB(p)->is_flist;
NAPI_GRO_CB(skb)->is_flist = !sk;
if (!NAPI_GRO_CB(skb)->flush &&
NAPI_GRO_CB(skb)->flush = 1;
const u16 offset = NAPI_GRO_CB(skb)->network_offsets[skb->encapsulation];
if (unlikely(NAPI_GRO_CB(skb)->is_flist)) {
skb_shinfo(skb)->gso_segs = NAPI_GRO_CB(skb)->count;
(NAPI_GRO_CB(skb)->ip_fixedid * SKB_GSO_TCP_FIXEDID);
const u16 offset = NAPI_GRO_CB(skb)->network_offsets[skb->encapsulation];
NAPI_GRO_CB(skb)->flush |= 1;
NAPI_GRO_CB(skb)->flush = 1;
NAPI_GRO_CB(skb)->flush = 1;
NAPI_GRO_CB(skb)->flush = 1;
if (!NAPI_GRO_CB(p)->same_flow)
NAPI_GRO_CB(p)->same_flow = 0;
if (NAPI_GRO_CB(skb)->is_flist != NAPI_GRO_CB(p)->is_flist) {
NAPI_GRO_CB(skb)->flush = 1;
if (NAPI_GRO_CB(skb)->is_flist) {
NAPI_GRO_CB(skb)->flush = 1;
NAPI_GRO_CB(skb)->flush = 1;
NAPI_GRO_CB(p)->count >= UDP_GRO_CNT_MAX)
NAPI_GRO_CB(skb)->is_flist = 0;
NAPI_GRO_CB(skb)->is_flist = sk ? !udp_test_bit(GRO_ENABLED, sk) : 1;
(sk && udp_test_bit(GRO_ENABLED, sk)) || NAPI_GRO_CB(skb)->is_flist)
if (NAPI_GRO_CB(skb)->encap_mark ||
NAPI_GRO_CB(skb)->csum_cnt == 0 &&
!NAPI_GRO_CB(skb)->csum_valid))
NAPI_GRO_CB(skb)->encap_mark = 1;
if (!NAPI_GRO_CB(p)->same_flow)
NAPI_GRO_CB(p)->same_flow = 0;
if (NAPI_GRO_CB(skb)->flush)
NAPI_GRO_CB(skb)->flush = 1;
skb_shinfo(skb)->gso_segs = NAPI_GRO_CB(skb)->count;
NAPI_GRO_CB(skb)->encap_mark = 0;
const u16 offset = NAPI_GRO_CB(skb)->network_offsets[skb->encapsulation];
if (NAPI_GRO_CB(skb)->is_flist && !NAPI_GRO_CB(skb)->encap_mark) {
skb_shinfo(skb)->gso_segs = NAPI_GRO_CB(skb)->count;
NAPI_GRO_CB(skb)->proto = IPPROTO_UDP;
NAPI_GRO_CB(skb)->same_flow = 0;
NAPI_GRO_CB(skb)->flush = 1;
NAPI_GRO_CB(skb)->same_flow = 0;
NAPI_GRO_CB(skb)->flush = 1;
if (NAPI_GRO_CB(skb)->proto == IPPROTO_UDP)
NAPI_GRO_CB(skb)->network_offsets[NAPI_GRO_CB(skb)->encap_mark] = off;
NAPI_GRO_CB(skb)->proto = proto;
if (!NAPI_GRO_CB(p)->same_flow)
NAPI_GRO_CB(p)->same_flow = 0;
NAPI_GRO_CB(skb)->flush |= flush;
if (NAPI_GRO_CB(skb)->encap_mark) {
NAPI_GRO_CB(skb)->flush = 1;
NAPI_GRO_CB(skb)->encap_mark = 1;
if (NAPI_GRO_CB(skb)->encap_mark) {
NAPI_GRO_CB(skb)->flush = 1;
NAPI_GRO_CB(skb)->encap_mark = 1;
NAPI_GRO_CB(skb)->is_flist = NAPI_GRO_CB(p)->is_flist;
NAPI_GRO_CB(skb)->is_flist = !sk;
if (!NAPI_GRO_CB(skb)->flush &&
NAPI_GRO_CB(skb)->flush = 1;
const u16 offset = NAPI_GRO_CB(skb)->network_offsets[skb->encapsulation];
if (unlikely(NAPI_GRO_CB(skb)->is_flist)) {
skb_shinfo(skb)->gso_segs = NAPI_GRO_CB(skb)->count;
const u16 offset = NAPI_GRO_CB(skb)->network_offsets[skb->encapsulation];
if (NAPI_GRO_CB(skb)->flush)
NAPI_GRO_CB(skb)->flush = 1;
const u16 offset = NAPI_GRO_CB(skb)->network_offsets[skb->encapsulation];
if (NAPI_GRO_CB(skb)->is_flist && !NAPI_GRO_CB(skb)->encap_mark) {
skb_shinfo(skb)->gso_segs = NAPI_GRO_CB(skb)->count;
NAPI_GRO_CB(skb)->proto = IPPROTO_UDP;
NAPI_GRO_CB(skb)->same_flow = 0;
NAPI_GRO_CB(skb)->flush = 1;