Page MenuHomeFreeBSD

aq: implement the RSS driver methods
DraftPublic

Authored by nick_spun.io on Tue, Aug 18, 11:11 PM.
Tags
None
Referenced Files
F168410734: D58937.id.diff
Fri, Aug 28, 3:16 AM
F168288702: D58937.diff
Thu, Aug 27, 10:39 AM
F168287390: D58937.diff
Thu, Aug 27, 10:26 AM
Unknown Object (File)
Wed, Aug 26, 11:55 AM
Unknown Object (File)
Wed, Aug 26, 10:18 AM
Unknown Object (File)
Tue, Aug 25, 8:46 PM
Unknown Object (File)
Tue, Aug 25, 11:34 AM
Unknown Object (File)
Tue, Aug 25, 12:24 AM
Subscribers
This is a draft revision that has not yet been submitted for review.

Details

Reviewers
adrian
gallatin
Summary

aq holds the key and indirection table in its softc and programs both
from aq_if_init(), so a write survives every reinit path.

iflib publishes the interface before IFDI_ATTACH_POST, where aq seeds
those copies, so the methods report ENXIO until the seeding has run
rather than serving a zeroed shadow as hardware state.

A write programs the hardware before updating the softc.
aq_hw_rss_hash_set() and aq_hw_rss_set() can time out part way through,
and committing first would leave the shadow describing a key the
hardware never took. The hardware is written only when the interface is
running and aq_hw_init() did not fail; aq does not call
iflib_init_failed(), so IFF_DRV_RUNNING alone does not mean the device
can take a register write.

Signed-off-by: Nick Price <nprice@FreeBSD.org>

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Skipped
Unit
Tests Skipped
Build Status
Buildable 75694
Build 72577: arc lint + arc unit