Page MenuHomeFreeBSD

ice: Validate VF virtchnl configuration
Needs ReviewPublic

Authored by kbowling on Thu, Aug 20, 1:42 AM.
Tags
None
Referenced Files
Unknown Object (File)
Thu, Aug 20, 1:48 PM
Unknown Object (File)
Thu, Aug 20, 12:56 PM
Unknown Object (File)
Thu, Aug 20, 12:52 PM
Subscribers

Details

Reviewers
kgalazka
Group Reviewers
Intel Networking
Restricted Owners Package(Owns No Changed Paths)
Summary
Virtchnl requests originate in guest-controlled VFs.  The existing PF
implementation checked message shape but allowed several hardware-facing
values through without complete semantic validation.

Require the exact RSS key and LUT sizes advertised to the VF, validate
every LUT entry, and pass only the validated LUT length to firmware.  A
short LUT previously caused the AdminQ command to read beyond the
received request.

Validate queue ring bases, descriptor counts, receive buffer units,
maximum frame sizes, and per-VSI consistency before disabling or
changing any queue.  This also prevents the 32-bit receive ring length
from being truncated through a 16-bit validation helper.

Advertise the PF frame-size limit in VF resources.  Leaving max_mtu
zero causes Linux iavf to request a 16382-byte frame, beyond the
9728-byte limit enforced by this driver.

Some Linux iavf releases use the advertised maximum as max_pkt_size
even when their receive buffers cover fewer bytes within the E810
five-buffer hardware limit.  Accept this advisory mismatch for
compatibility.  ice_setup_rx_ctx() retains the mandatory hardware
clamp of RXMAX to five data buffers, as Linux ice does.  DPDK sizes
its request to the same limit.

Preflight the complete interrupt map before changing queue state.
Reject invalid ITR indices, traffic on vector zero, duplicate
vectors, and queues assigned to multiple vectors.  This prevents
hostile input from reaching an MPASS or leaving a partially updated
mapping.

The limits follow the ICE queue context units and the validation policy
used by the Intel ICE and FreeBSD ixl PF drivers.

MFC after:      2 weeks
Sponsored by:   BBOX.io

Diff Detail

Lint
Lint Skipped
Unit
Tests Skipped