spu2_cipher_req_finish(9)
π« spu2_cipher_req_finish β a kernel API manual, bestie edition π«
okay so this is spu2_cipher_req_finish(9) from the Kernel API Manual, and honestly? she's the glow-up finisher of SPU request headers. let's get into it π
β¨ NAME β¨
spu2_cipher_req_finish β the girl who finishes building a SPU request message header for a block cipher request. she doesn't start it, she completes it. main character energy fr π
πΈ SYNOPSIS πΈ
void spu2_cipher_req_finish (u8 *spu_hdr , u16 spu_req_hdr_len ,
unsigned int is_inbound , struct spu_cipher_parms *cipher_parms ,
unsigned int data_size );
literally just five args and a dream, no return value, we love a void function that simply does her job and leaves π«Ά
π¦ ARGUMENTS π¦
spu_hdrβ the start of the request message header (the MH field, iykyk). this is where she does her work bestie.spu_req_hdr_lenβ length in bytes of the SPU request header. yes, bytes. count them. βis_inboundβ0= encrypt,1= decrypt. that's it. that's the whole vibe check. π₯cipher_parmsβ parameters describing the cipher operation to be performed. astruct spu_cipher_parms *, obviously πdata_sizeβ length of the data in the BD field. know your data, know your BD field, periodt.
π DESCRIPTION π
okay so here's the tea: this function assumes much of the header was already filled in at setkey time in spu_cipher_req_init. so like, the header's already had its little makeover moment β spu_cipher_req_init is the one who fills in the encryption key π
then spu2_cipher_req_finish swoops in to finish the job. it's giving "i'm just here to put the final touches on an already iconic look" β¨
no cap: if you're calling this without having done the spu_cipher_req_init step first, that's not the move. she assumes it happened. π
π SEE ALSO π
bestie, the whole friend group is here. kernel file ./drivers/crypto/bcm/spu2.c plus literally every sibling function, and yes i'm listing all of them because we do NOT skip people in this group chat π:
spu2_cipher_xlate(9)spu2_hash_xlate(9)spu2_fmd_init(9)spu2_fmd_ctrl0_write(9)spu2_fmd_ctrl1_write(9)spu2_fmd_ctrl2_write(9)spu2_fmd_ctrl3_write(9)spu2_ctx_max_payload(9)spu2_payload_length(9)spu2_response_hdr_len(9)spu2_hash_pad_len(9)spu2_gcm_ccm_pad_len(9)spu2_assoc_resp_len(9)spu2_aead_ivlen(9)spu2_hash_type(9)spu2_digest_size(9)spu2_create_request(9)spu2_cipher_req_init(9)spu2_request_pad(9)spu2_xts_tweak_in_payload(9)spu2_tx_status_len(9)spu2_rx_status_len(9)spu2_status_process(9)spu2_ccm_update_iv(9)spu2_wordalign_padlen(9)
also lowkey the kernel file lives at ./drivers/crypto/bcm β that's the whole directory, that's the whole source tree neighborhood π§
and that's the page!! brought to you by the Kernel API Manual, source ./drivers/crypto/bcm, dated October 2026 β mwah, slay, go finish those headers responsibly π
β¨
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms