__i40e_chk_linearize(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… __i40e_chk_linearize β€” Kernel API Manual, bestie edition ✨

Okay so picture this: it's a kernel API manual page, the function is called __i40e_chk_linearize, and it lives in section (9). That's the whole vibe check up top. Now let's get into it πŸ’–


🌸 NAME 🌸

__i40e_chk_linearize β€” lowkey just checking if there are more than 8 buffers per packet, no big deal πŸŽ€


✨ SYNOPSIS ✨

bool __i40e_chk_linearize (struct sk_buff *skb );

πŸ¦‹ ARGUMENTS πŸ¦‹

  • skb β€” the send buffer. that's it. that's the argument. she's simple, she's iconic 🫢

πŸ‘‘ NOTE πŸ‘‘

Okay so here's the tea, and it's actually important: our HW can't DMA more than 8 buffers to build a packet on the wire 😭 so we literally have to figure out the cases where we need to linearize the skb. no cap, that's the whole job.

And for TSO we need to count the TSO header and the segment payload separately β€” two different little guys, one function. as such πŸ’… we need to check cases where we have 7 fragments or more, because we can potentially require 9 DMA transactions:

  1. 1 for the TSO header
  2. 1 for the segment payload in the first descriptor
  3. another 7 for the fragments

math is mathing, the vibes are immaculate, the hardware budget is absolutely not πŸ”₯


🧚 SEE ALSO 🧚

Kernel file ./drivers/net/ethernet/intel/i40e/i40e_txrx.c β€” and honestly? a whole friend group of functions tagged along. bestie squad incoming, all (9), all iconic:

like I said. friend group. πŸ’€πŸ’œ


and that's the page!! mwah πŸ’‹ this whole thing ships out of ./drivers/net/ethernet/intel/i40e, dated October 2026, and it's still out here answering to __i40e_chk_linearize(9) β€” go read the source bestie, ily, drink some water πŸ“βœ¨

πŸ“¦ where this page comes from