1. 28 Sep, 2022 8 commits
  2. 27 Sep, 2022 31 commits
  3. 26 Sep, 2022 1 commit
    • Jesper Dangaard Brouer's avatar
      xdp: Adjust xdp_frame layout to avoid using bitfields · b860a1b9
      Jesper Dangaard Brouer authored
      Practical experience (and advice from Alexei) tell us that bitfields in
      structs lead to un-optimized assembly code. I've verified this change
      does lead to better x86_64 assembly, both via objdump and playing with
      code snippets in godbolt.org.
      
      Using scripts/bloat-o-meter shows the code size is reduced with 24
      bytes for xdp_convert_buff_to_frame() that gets inlined e.g. in
      i40e_xmit_xdp_tx_ring() which were used for microbenchmarking.
      
      Microbenchmarking results do show improvements, but very small and
      varying between 0.5 to 2 nanosec improvement per packet.
      
      The member @metasize is changed from u8 to u32. Future users of this
      area could split this into two u16 fields. I've also benchmarked with
      two u16 fields showing equal performance gains and code size reduction.
      
      The moved member @frame_sz doesn't change sizeof struct due to existing
      padding. Like xdp_buff member @frame_sz is placed next to @flags, which
      allows compiler to optimize assignment of these.
      Signed-off-by: default avatarJesper Dangaard Brouer <brouer@redhat.com>
      Link: https://lore.kernel.org/r/166393728005.2213882.4162674859542409548.stgit@firesoulSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
      b860a1b9