Lines Matching refs:skb

143 static __be16 efx_tso_check_protocol(struct sk_buff *skb)  in efx_tso_check_protocol()  argument
145 __be16 protocol = skb->protocol; in efx_tso_check_protocol()
147 EFX_WARN_ON_ONCE_PARANOID(((struct ethhdr *)skb->data)->h_proto != in efx_tso_check_protocol()
150 struct vlan_ethhdr *veh = skb_vlan_eth_hdr(skb); in efx_tso_check_protocol()
156 EFX_WARN_ON_ONCE_PARANOID(ip_hdr(skb)->protocol != IPPROTO_TCP); in efx_tso_check_protocol()
159 EFX_WARN_ON_ONCE_PARANOID(ipv6_hdr(skb)->nexthdr != NEXTHDR_TCP); in efx_tso_check_protocol()
161 EFX_WARN_ON_ONCE_PARANOID((PTR_DIFF(tcp_hdr(skb), skb->data) + in efx_tso_check_protocol()
162 (tcp_hdr(skb)->doff << 2u)) > in efx_tso_check_protocol()
163 skb_headlen(skb)); in efx_tso_check_protocol()
171 const struct sk_buff *skb) in tso_start() argument
177 st->ip_off = skb_network_header(skb) - skb->data; in tso_start()
178 st->tcp_off = skb_transport_header(skb) - skb->data; in tso_start()
179 header_len = st->tcp_off + (tcp_hdr(skb)->doff << 2u); in tso_start()
180 in_len = skb_headlen(skb) - header_len; in tso_start()
185 st->ipv4_id = ntohs(ip_hdr(skb)->id); in tso_start()
190 st->seqnum = ntohl(tcp_hdr(skb)->seq); in tso_start()
192 EFX_WARN_ON_ONCE_PARANOID(tcp_hdr(skb)->urg); in tso_start()
193 EFX_WARN_ON_ONCE_PARANOID(tcp_hdr(skb)->syn); in tso_start()
194 EFX_WARN_ON_ONCE_PARANOID(tcp_hdr(skb)->rst); in tso_start()
196 st->out_len = skb->len - header_len; in tso_start()
198 dma_addr = dma_map_single(dma_dev, skb->data, in tso_start()
199 skb_headlen(skb), DMA_TO_DEVICE); in tso_start()
201 st->header_unmap_len = skb_headlen(skb); in tso_start()
233 const struct sk_buff *skb, in tso_fill_packet_with_fragment() argument
257 buffer->skb = skb; in tso_fill_packet_with_fragment()
286 const struct sk_buff *skb, in tso_start_new_packet() argument
291 bool is_last = st->out_len <= skb_shinfo(skb)->gso_size; in tso_start_new_packet()
295 st->packet_space = skb_shinfo(skb)->gso_size; in tso_start_new_packet()
307 tcp_flags = ((u8 *)tcp_hdr(skb))[TCP_FLAGS_OFFSET] & ~tcp_flags_mask; in tso_start_new_packet()
341 st->seqnum += skb_shinfo(skb)->gso_size; in tso_start_new_packet()
363 struct sk_buff *skb, in efx_enqueue_skb_tso() argument
373 prefetch(skb->data); in efx_enqueue_skb_tso()
376 state.protocol = efx_tso_check_protocol(skb); in efx_enqueue_skb_tso()
380 rc = tso_start(&state, efx, tx_queue, skb); in efx_enqueue_skb_tso()
386 EFX_WARN_ON_ONCE_PARANOID(skb_shinfo(skb)->nr_frags < 1); in efx_enqueue_skb_tso()
389 skb_shinfo(skb)->frags + frag_i); in efx_enqueue_skb_tso()
397 rc = tso_start_new_packet(tx_queue, skb, &state); in efx_enqueue_skb_tso()
404 tso_fill_packet_with_fragment(tx_queue, skb, &state); in efx_enqueue_skb_tso()
408 if (++frag_i >= skb_shinfo(skb)->nr_frags) in efx_enqueue_skb_tso()
412 skb_shinfo(skb)->frags + frag_i); in efx_enqueue_skb_tso()
419 rc = tso_start_new_packet(tx_queue, skb, &state); in efx_enqueue_skb_tso()