Page MenuHomeFreeBSD

rcm (R. Christian McDonald)
User

Projects (4)

User Details

User Since
Apr 13 2023, 7:00 PM (185 w, 20 h)

Recent Activity

Today

rcm added a comment to D61037: if_epair: Hash the IP header for fanout not the Ethernet header.
In D61037#1399489, @kp wrote:

Should we try to account for a VLAN header here too?

Fri, Oct 30, 2:38 PM
rcm requested review of D61042: netinet6: Do not count a packet a hook consumed as discarded in ip6_tryforward().
Fri, Oct 30, 1:52 PM
rcm requested review of D61041: netinet6: Send redirects from ip6_tryforward().
Fri, Oct 30, 1:29 PM
rcm requested review of D61039: netinet6: Decrement the hop limit before the outbound hooks in ip6_tryforward().
Fri, Oct 30, 1:22 PM
rcm requested review of D61038: netinet6: Keep a pfil-chosen next hop in ip6_tryforward().
Fri, Oct 30, 1:16 PM
rcm requested review of D61037: if_epair: Hash the IP header for fanout not the Ethernet header.
Fri, Oct 30, 1:12 PM
rcm requested review of D61034: netinet6: Check the hop limit after pfil in ip6_tryforward().
Fri, Oct 30, 12:51 PM
rcm requested review of D61033: netinet6: Set PFIL_FWD in ip6_tryforward().
Fri, Oct 30, 12:43 PM
rcm abandoned D60535: pf: Free unreferenced interfaces after dropping pfi_unlnkdkifs_mtx.

Abandoned in favor of 9e7d55570f69.

Fri, Oct 30, 12:33 PM
rcm requested review of D61005: e1000: Count packets dropped for want of a receive descriptor.
Fri, Oct 30, 2:57 AM
rcm requested review of D61004: igc: Count packets dropped for want of a receive descriptor.
Fri, Oct 30, 2:54 AM

Yesterday

rcm committed rG70700e989983: rms: Order a writer's stores before its readers see it leave.
Thu, Oct 29, 6:50 PM
rcm committed rG4ff8c71df5de: makefs/zfs: Allow the autotrim pool property to be set.
Thu, Oct 29, 6:50 PM
rcm committed rG9de6e514aa81: callout: do not retry a try-lock callout sooner than a tick.
Thu, Oct 29, 6:50 PM
rcm committed rG389ae8e4fabe: pf: Free the stack key when attaching it collides.
Thu, Oct 29, 6:46 PM
rcm committed rGf1726686cb31: iflib: Do not pull up trailing IPv4 fragments to the L4 header.
Thu, Oct 29, 6:45 PM
rcm committed rGaf83288e24f0: pf: Do not hash pool address pointers into rule hashes.
Thu, Oct 29, 6:45 PM
rcm committed rGd75d97d95c86: pf: Set the reassembly flags under the rules lock.
Thu, Oct 29, 6:45 PM
rcm closed D60951: pf: Free the stack key when attaching it collides.
Thu, Oct 29, 6:45 PM
rcm committed rG917f39f3d6a3: pf: Free a table entry that cannot be routed.
Thu, Oct 29, 6:45 PM
rcm committed rGc730caf617d7: pf: Drain the overload task before a vnet's rules are freed.
Thu, Oct 29, 6:45 PM
rcm committed rGc767a211b1c1: rms: Order a writer's stores before its readers see it leave.
Thu, Oct 29, 6:45 PM
rcm committed rG2f5596d28733: if_me: Do not reuse gre(4)'s static sysctl OID number.
Thu, Oct 29, 6:45 PM
rcm committed rGdc761982793e: epoch: Fix use-after-free in epoch_trace_report().
Thu, Oct 29, 6:45 PM
rcm committed rG3c87acbd4271: pf: modify pfik_flags atomically.
Thu, Oct 29, 6:45 PM
rcm committed rGe267a068097b: igc: Fix the flow control sysctl.
Thu, Oct 29, 6:45 PM
rcm committed rG55153512e9ab: iflib: Do not ring the transmit doorbell when nothing is pending.
Thu, Oct 29, 6:45 PM
rcm committed rG1ecbabf77217: pf: do not loop on an address that is cleared twice in pfr_clr_astats().
Thu, Oct 29, 6:45 PM
rcm committed rGfe6bf86f76ea: e1000: Fix the flow control sysctl.
Thu, Oct 29, 6:45 PM
rcm committed rG0dc07bbc7769: pf: Register the netlink family only while the vnets are set up.
Thu, Oct 29, 6:45 PM
rcm committed rG798531d5964b: pflow: Destroy exporters on module unload.
Thu, Oct 29, 6:45 PM
rcm committed rGde62c977c0ce: pf: Do not corrupt neighbour advertisements when translating.
Thu, Oct 29, 6:45 PM
rcm committed rGb1ccba78a2fb: pf: Do not hash pool address pointers into rule hashes.
Thu, Oct 29, 6:45 PM
rcm committed rGb27a0b8bfb15: pf: Free a table entry that cannot be routed.
Thu, Oct 29, 6:45 PM
rcm committed rG6bbbf0f0d870: pf: Set the reassembly flags under the rules lock.
Thu, Oct 29, 6:45 PM
rcm committed rG54b034b928c0: pf: Parse the GETSTATES state id as 64 bits.
Thu, Oct 29, 6:45 PM
rcm committed rG6c339d4c7289: pf: Drain the overload task before a vnet's rules are freed.
Thu, Oct 29, 6:45 PM
rcm committed rGbf9ac4f14081: iflib: Do not ring the transmit doorbell when nothing is pending.
Thu, Oct 29, 6:45 PM
rcm committed rG12efd0da33c1: igc: Fix the flow control sysctl.
Thu, Oct 29, 6:45 PM
rcm committed rGe54bcac6ff68: if_me: Do not reuse gre(4)'s static sysctl OID number.
Thu, Oct 29, 6:45 PM
rcm committed rGc9547537ae4b: pf: do not leak a source hash row lock in the netlink dump.
Thu, Oct 29, 6:45 PM
rcm committed rG5a43befa570a: pf: free an unparsed rule with pf_krule_free() in pf_handle_addrule().
Thu, Oct 29, 6:45 PM
rcm committed rG570922e81d85: pf: free the packet rate counter of a rule.
Thu, Oct 29, 6:45 PM
rcm committed rG395b8ad1751b: pf: take the rules read lock in pf_handle_getrule().
Thu, Oct 29, 6:45 PM
rcm committed rG29c08481e7d4: pf: leave the epoch to purge unlinked rules.
Thu, Oct 29, 6:45 PM
rcm committed rGa928edf20d46: pf: modify pfik_flags atomically.
Thu, Oct 29, 6:45 PM
rcm committed rG8b814cb3639a: epoch: Fix use-after-free in epoch_trace_report().
Thu, Oct 29, 6:45 PM
rcm committed rG1db6e7e987e5: pf: do not loop on an address that is cleared twice in pfr_clr_astats().
Thu, Oct 29, 6:45 PM
rcm requested review of D60974: ixl: Hash UDP, SCTP and fragments across the receive queues.
Thu, Oct 29, 5:57 PM
rcm retitled D60965: ice: Hash UDP and SCTP across the receive queues from ice: Hash UDP when the kernel does not use the UDP ports
Thu, Oct 29, 5:56 PM
rcm updated the diff for D60965: ice: Hash UDP and SCTP across the receive queues.
  • Report UDP packets hashed on the addresses as M_HASHTYPE_RSS_IPV4 / M_HASHTYPE_RSS_IPV6 instead of the UDP types, so that rss_mbuf_software_hash_v4() / _v6() trust the hardware hash rather than recomputing a 2-tuple hash for every packet.
  • Add address-only SCTP profiles; ice never hashed SCTP.
  • Treat the IPv6 _EX hash types as served by the IPv6 profiles. This also removes the "could not configure every requested hash type" warning printed on every attach.
  • Summary updated to match.
Thu, Oct 29, 5:37 PM
rcm committed rG06f98c554fbe: pf: Store the rounded source node hash size.
Thu, Oct 29, 8:43 AM
rcm committed rG110801814911: pf: Clear only the part of the packet descriptor that is read first.
Thu, Oct 29, 8:43 AM
rcm closed D60949: pf: Store the rounded source node hash size.
Thu, Oct 29, 8:43 AM
rcm closed D60948: pf: Zero only the part of struct pf_pdesc that needs it.
Thu, Oct 29, 8:43 AM
rcm committed rGbf57fe555585: if_gre: Use OID_AUTO for the net.link.gre sysctl node.
Thu, Oct 29, 8:42 AM
rcm committed rG84aa3cb3204d: iflib: Pass up the frames received before a descriptor error.
Thu, Oct 29, 8:41 AM
rcm committed rG3181d549154a: if_gre: Use OID_AUTO for the net.link.gre sysctl node.
Thu, Oct 29, 8:41 AM

Thu, Oct 22

rcm retitled D60965: ice: Hash UDP and SCTP across the receive queues from ice(4): Hash UDP when the kernel does not use the UDP ports to ice: Hash UDP when the kernel does not use the UDP ports.
Thu, Oct 22, 12:44 AM
rcm requested review of D60965: ice: Hash UDP and SCTP across the receive queues.
Thu, Oct 22, 12:43 AM

Wed, Oct 21

rcm updated the diff for D60416: iflib: Ring transmit doorbells once per receive batch.
  • The hold is consulted only where the doorbell policy would ring for every packet, as its lowest band rather than a size test of its own.
  • The end of a receive pass on the simple path uses the completion task's drain with the thread quota; the separate ring function is gone.
  • The deregister epoch wait is dropped from this review; it fixes a pre-existing detach race and will come in a separate review.
  • Man page entry shortened.
Wed, Oct 21, 11:26 PM
rcm updated the diff for D60416: iflib: Ring transmit doorbells once per receive batch.

Two single-use helpers folded away: the hold looks up the batch itself, and batch_end rings the queues it releases.

Wed, Oct 21, 8:01 PM
rcm updated the diff for D60416: iflib: Ring transmit doorbells once per receive batch.

This version is even slimmer. The transmit task now rings a held queue instead of being told not to, so the flush flag, the timer hook, the unheld check and its fences are gone. The cost is about 8 % more doorbells on mp_ring (0.063 to 0.069 per packet), throughput unchanged. The admin-task kick now says why it exists.

Wed, Oct 21, 7:41 PM
rcm requested review of D60951: pf: Free the stack key when attaching it collides.
Wed, Oct 21, 7:32 PM
rcm requested review of D60949: pf: Store the rounded source node hash size.
Wed, Oct 21, 7:02 PM
rcm requested review of D60948: pf: Zero only the part of struct pf_pdesc that needs it.
Wed, Oct 21, 6:47 PM
rcm updated the diff for D60416: iflib: Ring transmit doorbells once per receive batch.
  • The admin-task kick and the release fence now say which case they cover.
  • iflib_txdb_unheld uses a seq_cst fence instead of acquire.
  • The batch lookup is renamed iflib_txdb_current() so it no longer shares a name with the struct (better greppability).
Wed, Oct 21, 1:56 AM
rcm added a comment to D60416: iflib: Ring transmit doorbells once per receive batch.

This looks cleaner but it still feels grafted on, and my earlier wonder remains: perhaps unnecessarily; doing what @gallatin said with the call or disproving that would be convincing to me that you've reasoned through the existing mechanism and found the minimal implementation.

Wed, Oct 21, 1:10 AM
rcm added a comment to D60416: iflib: Ring transmit doorbells once per receive batch.

Did you try measure doing the call to iflib_txdb_batch() in iflib_simple_encap(), rather than adding an argument all the way down? I hate the perceived complexity adding an arg adds.. Pushing it down adds 2 loads from hot cache lines per packet in the case where we have contention and the deferral ring is used, at the human savings of some complexity, and possibly 8 bytes of stack space. I think it won't matter at all for your workload, since I'm guessing your workload is mostly uncontended, so the deferral ring is probably not used.

Also, did you try @kbowling 's suggestion of fixing the db deferral in simple_tx ? I think its just as follows, and I'd be interested to hear how much it helps compared to this complexity:

Wed, Oct 21, 1:02 AM
rcm updated the diff for D60416: iflib: Ring transmit doorbells once per receive batch.

Rebased on main. Changes since the last diff:

Wed, Oct 21, 12:47 AM
rcm updated the summary of D60416: iflib: Ring transmit doorbells once per receive batch.
Wed, Oct 21, 12:26 AM

Tue, Oct 20

rcm added inline comments to D60876: pf: Keep every chunk of a table that a ruleset defines.
Tue, Oct 20, 12:53 PM
rcm committed rGa3173175193e: pf: Keep every chunk of a table that a ruleset defines.
Tue, Oct 20, 12:53 PM
rcm closed D60876: pf: Keep every chunk of a table that a ruleset defines.
Tue, Oct 20, 12:52 PM

Mon, Oct 19

rcm committed rGc91539772b07: pflow: Destroy exporters on module unload.
Mon, Oct 19, 8:26 PM
rcm committed rG96944ab79acd: pfctl: Report why a table definition failed.
Mon, Oct 19, 8:25 PM
rcm requested review of D60876: pf: Keep every chunk of a table that a ruleset defines.
Mon, Oct 19, 7:37 PM
rcm committed rG1594fbd7f2f4: pfctl: Report the error of a failed fingerprint flush.
Mon, Oct 19, 7:16 PM
rcm abandoned D47436: ntpd: Fix crash when bringing up net interface fails.
Mon, Oct 19, 3:12 PM
rcm abandoned D47453: net/ntp: Fix crash when bringing up net interface fails.
Mon, Oct 19, 3:12 PM
rcm abandoned D47452: devel/py-libzfs: Update to TS-24.10.0.1.
Mon, Oct 19, 3:11 PM
rcm abandoned D40816: bsdinstall: protect disk label and zfsboot on Auto ZFS+MBR.
Mon, Oct 19, 3:06 PM
rcm added a watcher for iflib: rcm.
Mon, Oct 19, 1:10 AM
rcm committed rGbdaddb76ef1b: iflib: Pass up the frames received before a descriptor error.
Mon, Oct 19, 1:08 AM
rcm closed D60805: iflib: Pass up the frames received before a descriptor error.
Mon, Oct 19, 1:08 AM

Sat, Oct 17

rcm requested review of D60805: iflib: Pass up the frames received before a descriptor error.
Sat, Oct 17, 1:36 PM
rcm added a reviewer for D60804: if: Wait for the network epoch after if_dead() on detach: pouria.
Sat, Oct 17, 1:33 PM
rcm added a reviewer for D60804: if: Wait for the network epoch after if_dead() on detach: network.
Sat, Oct 17, 1:32 PM
rcm requested review of D60804: if: Wait for the network epoch after if_dead() on detach.
Sat, Oct 17, 1:31 PM

Fri, Oct 16

rcm committed R11:049cf2932b64: security/vuxml: Add entry for miniupnpd CVE-2026-5720.
Fri, Oct 16, 6:13 PM
rcm committed R11:9f91c1de288e: net/miniupnpd: Update to 2.3.11.
Fri, Oct 16, 5:53 PM
rcm committed R11:5bbc7e7074ae: net/miniupnpd: Update to 2.3.11.
Fri, Oct 16, 5:41 PM
rcm updated subscribers of D60416: iflib: Ring transmit doorbells once per receive batch.

D60756 was accepted by @kib.

Fri, Oct 16, 1:34 PM
rcm added a comment to D60756: proc: Add a network transmit batch pointer to struct thread.
In D60756#1393605, @kib wrote:

Since this is driver-specific, did you considered using osd(9) osd_register(OSD_THREAD)? [I do not object against adding a thread-local pointer, just want to check other possibilities before]

Fri, Oct 16, 12:38 PM
rcm requested review of D60772: osd: Do not resize other objects' slot arrays on deregistration.
Fri, Oct 16, 12:28 PM

Thu, Oct 15

rcm added reviewers for D60756: proc: Add a network transmit batch pointer to struct thread: kib, gallatin, kbowling.
Thu, Oct 15, 8:47 PM
rcm updated the diff for D60416: iflib: Ring transmit doorbells once per receive batch.

I have reworked this significantly.

Thu, Oct 15, 8:46 PM
rcm requested review of D60756: proc: Add a network transmit batch pointer to struct thread.
Thu, Oct 15, 7:47 PM
rcm committed rGf4fe4c3d17f9: pf: Remove a table entry regardless of its mark.
Thu, Oct 15, 6:11 PM
rcm closed D60530: pf: Remove a table entry regardless of its mark.
Thu, Oct 15, 6:10 PM