ENUM UNSOLICITED_FRAME_STATE(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

✨ enum unsolicited_frame_state β€” a Kernel API Manual moment ✨

okay bestie, so this one's from the Kernel API Manual, and it's genuinely one of the shorter ones β€” a little enum with a big job. let's get into it πŸŽ€


🌸 NAME 🌸

enum unsolicited_frame_state β€” and that's literally it, that's the whole name, no elaboration, the docs said "figure it out" πŸ’€ (don't worry, the Description section below actually does explain it, we're fine).


πŸ¦‹ SYNOPSIS πŸ¦‹

enum unsolicited_frame_state {
    UNSOLICITED_FRAME_EMPTY ,
    UNSOLICITED_FRAME_IN_USE ,
    UNSOLICITED_FRAME_RELEASED ,
    UNSOLICITED_FRAME_MAX_STATES

};

look at her. four little constants, all lined up, so organized. we stan a tidy enum πŸ‘‘


πŸ’– Constants πŸ’–

so here's the thing β€” the source doc has nothing written for any of these. no notes. no vibes. just vibes-adjacent emptiness. but they ARE the members, and you gotta know they exist:

  • UNSOLICITED_FRAME_EMPTY β€” no description in the docs whatsoever, it's giving mystery πŸ™ˆ
  • UNSOLICITED_FRAME_IN_USE β€” also -- undescribed -- in the original, so I'm not gonna make stuff up for you, bestie 🫢
  • UNSOLICITED_FRAME_RELEASED β€” yep, undescribed too. iconic of the docs honestly πŸ’…
  • UNSOLICITED_FRAME_MAX_STATES β€” the last one, and yup, also undescribed 😭
real talk: all four say -- undescribed -- in the source material. I'm being so fr fr with you. no cap, no invented behaviour. πŸ“

πŸ”₯ Description πŸ”₯

okay so here's the actual tea β˜• β€” this enumeration represents the current unsolicited frame state. that's the whole concept. it's a state machine vibe check for unsolicited frames ✨

and here's the important bit, so listen up: the controller object can not update the hardware unsolicited frame put pointer unless it has already processed the prior unsolicited frames. πŸ”’

like, no skipping ahead. you can't just move the put pointer whenever you feel like it β€” the earlier unsolicited frames gotta be handled first. it's giving "do your homework before you go out" energy, and honestly? fair. 😀

⚠️ heads up: the original page has some typos in this sentence (updtate and priror) β€” I fixed the spelling for readability but the meaning is exactly the same: process the prior frames first, then the put pointer can be updated. no behaviour was added or changed. 🫑

🌈 SEE ALSO 🌈

go read these next, bestie, they're all in the same little family 🧚

  • Kernel file ./drivers/scsi/isci/unsolicited_frame_control.h
  • struct scu_unsolicited_frame_header(9)
  • struct sci_unsolicited_frame(9)
  • struct sci_uf_header_array(9)
  • struct sci_uf_buffer_array(9)
  • struct sci_uf_address_table_array(9)
  • struct sci_unsolicited_frame_control(9)

and that's the page!! short and sweet, just how we like it πŸ’œ this little gem lives over in ./drivers/scsi/isci, dated October 2026, and the manpage itself is titled enum unsolic..._frame_state(9) in the footer (yes, truncated with ... β€” the terminal did its best, we love her anyway). mwah, go process those prior frames first, ily, bye! πŸ’…βœ¨πŸŽ€

πŸ“¦ where this page comes from