Lines Matching refs:seg
2119 VirtioNetRscSeg *seg) in virtio_net_rsc_drain_seg() argument
2124 h = (struct virtio_net_hdr_v1 *)seg->buf; in virtio_net_rsc_drain_seg()
2128 if (seg->is_coalesced) { in virtio_net_rsc_drain_seg()
2129 h->rsc.segments = seg->packets; in virtio_net_rsc_drain_seg()
2130 h->rsc.dup_acks = seg->dup_ack; in virtio_net_rsc_drain_seg()
2139 ret = virtio_net_do_receive(seg->nc, seg->buf, seg->size); in virtio_net_rsc_drain_seg()
2140 QTAILQ_REMOVE(&chain->buffers, seg, next); in virtio_net_rsc_drain_seg()
2141 g_free(seg->buf); in virtio_net_rsc_drain_seg()
2142 g_free(seg); in virtio_net_rsc_drain_seg()
2149 VirtioNetRscSeg *seg, *rn; in virtio_net_rsc_purge() local
2152 QTAILQ_FOREACH_SAFE(seg, &chain->buffers, next, rn) { in virtio_net_rsc_purge()
2153 if (virtio_net_rsc_drain_seg(chain, seg) == 0) { in virtio_net_rsc_purge()
2169 VirtioNetRscSeg *seg, *rn_seg; in virtio_net_rsc_cleanup() local
2172 QTAILQ_FOREACH_SAFE(seg, &chain->buffers, next, rn_seg) { in virtio_net_rsc_cleanup()
2173 QTAILQ_REMOVE(&chain->buffers, seg, next); in virtio_net_rsc_cleanup()
2174 g_free(seg->buf); in virtio_net_rsc_cleanup()
2175 g_free(seg); in virtio_net_rsc_cleanup()
2189 VirtioNetRscSeg *seg; in virtio_net_rsc_cache_buf() local
2192 seg = g_new(VirtioNetRscSeg, 1); in virtio_net_rsc_cache_buf()
2193 seg->buf = g_malloc(hdr_len + sizeof(struct eth_header) in virtio_net_rsc_cache_buf()
2195 memcpy(seg->buf, buf, size); in virtio_net_rsc_cache_buf()
2196 seg->size = size; in virtio_net_rsc_cache_buf()
2197 seg->packets = 1; in virtio_net_rsc_cache_buf()
2198 seg->dup_ack = 0; in virtio_net_rsc_cache_buf()
2199 seg->is_coalesced = 0; in virtio_net_rsc_cache_buf()
2200 seg->nc = nc; in virtio_net_rsc_cache_buf()
2202 QTAILQ_INSERT_TAIL(&chain->buffers, seg, next); in virtio_net_rsc_cache_buf()
2207 virtio_net_rsc_extract_unit4(chain, seg->buf, &seg->unit); in virtio_net_rsc_cache_buf()
2210 virtio_net_rsc_extract_unit6(chain, seg->buf, &seg->unit); in virtio_net_rsc_cache_buf()
2218 VirtioNetRscSeg *seg, in virtio_net_rsc_handle_ack() argument
2254 VirtioNetRscSeg *seg, in virtio_net_rsc_coalesce_data() argument
2263 o_unit = &seg->unit; in virtio_net_rsc_coalesce_data()
2281 return virtio_net_rsc_handle_ack(chain, seg, buf, in virtio_net_rsc_coalesce_data()
2310 memmove(seg->buf + seg->size, data, n_unit->payload); in virtio_net_rsc_coalesce_data()
2311 seg->size += n_unit->payload; in virtio_net_rsc_coalesce_data()
2312 seg->packets++; in virtio_net_rsc_coalesce_data()
2319 VirtioNetRscSeg *seg, in virtio_net_rsc_coalesce4() argument
2326 ip2 = (struct ip_header *)(seg->unit.ip); in virtio_net_rsc_coalesce4()
2328 || (unit->tcp->th_sport ^ seg->unit.tcp->th_sport) in virtio_net_rsc_coalesce4()
2329 || (unit->tcp->th_dport ^ seg->unit.tcp->th_dport)) { in virtio_net_rsc_coalesce4()
2334 return virtio_net_rsc_coalesce_data(chain, seg, buf, unit); in virtio_net_rsc_coalesce4()
2338 VirtioNetRscSeg *seg, in virtio_net_rsc_coalesce6() argument
2345 ip2 = (struct ip6_header *)(seg->unit.ip); in virtio_net_rsc_coalesce6()
2348 || (unit->tcp->th_sport ^ seg->unit.tcp->th_sport) in virtio_net_rsc_coalesce6()
2349 || (unit->tcp->th_dport ^ seg->unit.tcp->th_dport)) { in virtio_net_rsc_coalesce6()
2354 return virtio_net_rsc_coalesce_data(chain, seg, buf, unit); in virtio_net_rsc_coalesce6()
2392 VirtioNetRscSeg *seg, *nseg; in virtio_net_rsc_do_coalesce() local
2402 QTAILQ_FOREACH_SAFE(seg, &chain->buffers, next, nseg) { in virtio_net_rsc_do_coalesce()
2404 ret = virtio_net_rsc_coalesce4(chain, seg, buf, size, unit); in virtio_net_rsc_do_coalesce()
2406 ret = virtio_net_rsc_coalesce6(chain, seg, buf, size, unit); in virtio_net_rsc_do_coalesce()
2410 if (virtio_net_rsc_drain_seg(chain, seg) == 0) { in virtio_net_rsc_do_coalesce()
2422 seg->is_coalesced = 1; in virtio_net_rsc_do_coalesce()
2439 VirtioNetRscSeg *seg, *nseg; in virtio_net_rsc_drain_flow() local
2443 QTAILQ_FOREACH_SAFE(seg, &chain->buffers, next, nseg) { in virtio_net_rsc_drain_flow()
2444 ppair2 = *(uint32_t *)(seg->buf + tcp_port); in virtio_net_rsc_drain_flow()
2445 if (memcmp(buf + ip_start, seg->buf + ip_start, ip_size) in virtio_net_rsc_drain_flow()
2449 if (virtio_net_rsc_drain_seg(chain, seg) == 0) { in virtio_net_rsc_drain_flow()