[Bug 243126] Assertion fl->ifl_cidx == cidx failed at /usr/src/sys/net/iflib.c:2531

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Tue Jan 7 12:05:07 UTC 2020


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=243126

--- Comment #2 from Andriy Gapon <avg at FreeBSD.org> ---
Looking at vmxnet3_isc_rxd_pkt_get, I see that both iri_cidx and ifr_cq_cidx
will be set to cqidx after the last fragment.  irf_idx of each fragment is set
to rxd_idx of the rspective descriptor.

Getting back to the assertion in rxd_frag_to_sd():

(kgdb) p *ri
$4 = {iri_qsidx = 0, iri_vtag = 0, iri_len = 1514, iri_cidx = 477, iri_ifp =
0xfffff80002d1a800, iri_frags = 0xfffffe00003fe140, iri_flowid = 600473664,
iri_csum_flags = 251658240, iri_csum_data = 65535, iri_flags = 0 '\000',
  iri_nfrags = 1 '\001', iri_rsstype = 130 '\202', iri_pad = 0 '\000'}

(kgdb) p ri->iri_frags[0]
$13 = {irf_flid = 0 '\000', irf_idx = 142, irf_len = 1514}

So, irf_idx = 142 in the first and the only fragment.
irf_flid  is zero, so:

$15 = {ifl_cidx = 141, ifl_pidx = 140, ifl_credits = 254, ifl_gen = 1 '\001',
ifl_rxd_size = 0 '\000', ifl_rx_bitmap = 0xfffff80002daa8c0, ifl_fragidx = 139,
ifl_size = 256, ifl_buf_size = 2048, ifl_cltype = 1, 
  ifl_zone = 0xfffff80002957000, ifl_sds = {ifsd_map = 0xfffff80002d2d800,
ifsd_m = 0xfffff80002d1b800, ifsd_cl = 0xfffff80002d1b000, ifsd_ba =
0xfffff80002d1e000}, ifl_rxq = 0xfffffe00003fe000, ifl_id = 0 '\000', 
  ifl_buf_tag = 0xfffff80002cf8100, ifl_ifdi = 0xfffff80002d17da8,
ifl_bus_addrs = {32051296256, 32050450432, 31627747328, 31625582592,
31637278720, 6269554688, 6269536256, 6272448512, 6512416768, 6269433856,
5922217984, 
    6273015808, 31638720512, 6261741568, 6268790784, 29797609472, 6271569920,
6271576064, 6271574016, 6271580160, 6271578112, 6271584256, 6271582208,
6271588352, 6271739904, 6271733760, 6271735808, 6271729664, 6271731712, 
    6271725568, 6271727616, 6271721472}, ifl_vm_addrs = {0xfffff8077667f800 ...

So, ifl_cidx is 141 and that's the actual problem.
477 that I mentioned in the previous comment is irrelevant.
The real problem is ifl_cidx != irf_idx, 141 != 142.

Still no clue how that could happen.

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-net mailing list