Message ID | 20230131204506.219292-1-maciej.fijalkowski@intel.com (mailing list archive) |
---|---|
Headers | show |
Series | ice: add XDP mbuf support | expand |
From: Maciej Fijalkowski <maciej.fijalkowski@intel.com> Date: Tue, 31 Jan 2023 21:44:53 +0100 > Hi there, > > although this work started as an effort to add multi-buffer XDP support > to ice driver, as usual it turned out that some other side stuff needed > to be addressed, so let me give you an overview. > > First patch adjusts legacy-rx in a way that it will be possible to refer > to skb_shared_info being at the end of the buffer when gathering up > frame fragments within xdp_buff. > > Then, patches 2-9 prepare ice driver in a way that actual multi-buffer > patches will be easier to swallow. > > 10 and 11 are the meat. What is worth mentioning is that this set > actually *fixes* things as patch 11 removes the logic based on > next_dd/rs and we previously stepped away from this for ice_xmit_zc(). > Currently, AF_XDP ZC XDP_TX workload is off as there are two cleaning > sides that can be triggered and two of them work on different internal > logic. This set unifies that and allows us to improve the performance by > 2x with a trick on the last (13) patch. > > 12th is a simple cleanup of no longer fields from Tx ring. > > I might be wrong but I have not seen anyone reporting performance impact > among patches that add XDP multi-buffer support to a particular driver. > Numbers below were gathered via xdp_rxq_info and xdp_redirect_map on > 1500 MTU: > > XDP_DROP +1% > XDP_PASS -1,2% > XDP_TX -0,5% > XDP_REDIRECT -3,3% > > Cherry on top, which is not directly related to mbuf support (last > patch): > XDP_TX ZC +126% > > Target the we agreed on was to not degrade performance for any action by > anything that would be over 5%, so our goal was met. Basically this set > keeps the performance where it was. Redirect is slower due to more > frequent tail bumps. > > Thanks! You forgot to add my Reviewed-by: Alexander Lobakin <alexandr.lobakin@intel.com> for the whole series :D > > > Maciej Fijalkowski (13): > ice: prepare legacy-rx for upcoming XDP multi-buffer support > ice: add xdp_buff to ice_rx_ring struct > ice: store page count inside ice_rx_buf > ice: pull out next_to_clean bump out of ice_put_rx_buf() > ice: inline eop check > ice: centrallize Rx buffer recycling > ice: use ice_max_xdp_frame_size() in ice_xdp_setup_prog() > ice: do not call ice_finalize_xdp_rx() unnecessarily > ice: use xdp->frame_sz instead of recalculating truesize > ice: add support for XDP multi-buffer on Rx side > ice: add support for XDP multi-buffer on Tx side > ice: remove next_{dd,rs} fields from ice_tx_ring > ice: xsk: do not convert to buff to frame for XDP_TX > > drivers/net/ethernet/intel/ice/ice_base.c | 21 +- > drivers/net/ethernet/intel/ice/ice_ethtool.c | 4 +- > drivers/net/ethernet/intel/ice/ice_lib.c | 8 +- > drivers/net/ethernet/intel/ice/ice_main.c | 47 +- > drivers/net/ethernet/intel/ice/ice_txrx.c | 408 ++++++++++-------- > drivers/net/ethernet/intel/ice/ice_txrx.h | 54 ++- > drivers/net/ethernet/intel/ice/ice_txrx_lib.c | 236 ++++++---- > drivers/net/ethernet/intel/ice/ice_txrx_lib.h | 75 +++- > drivers/net/ethernet/intel/ice/ice_xsk.c | 192 +++++---- > 9 files changed, 629 insertions(+), 416 deletions(-) Thanks, Olek
Hello: This series was applied to bpf/bpf-next.git (master) by Daniel Borkmann <daniel@iogearbox.net>: On Tue, 31 Jan 2023 21:44:53 +0100 you wrote: > Hi there, > > although this work started as an effort to add multi-buffer XDP support > to ice driver, as usual it turned out that some other side stuff needed > to be addressed, so let me give you an overview. > > First patch adjusts legacy-rx in a way that it will be possible to refer > to skb_shared_info being at the end of the buffer when gathering up > frame fragments within xdp_buff. > > [...] Here is the summary with links: - [bpf-next,01/13] ice: prepare legacy-rx for upcoming XDP multi-buffer support https://git.kernel.org/bpf/bpf-next/c/c61bcebde72d - [bpf-next,02/13] ice: add xdp_buff to ice_rx_ring struct https://git.kernel.org/bpf/bpf-next/c/cb0473e0e9dc - [bpf-next,03/13] ice: store page count inside ice_rx_buf https://git.kernel.org/bpf/bpf-next/c/ac0753391195 - [bpf-next,04/13] ice: pull out next_to_clean bump out of ice_put_rx_buf() https://git.kernel.org/bpf/bpf-next/c/d7956d81f150 - [bpf-next,05/13] ice: inline eop check https://git.kernel.org/bpf/bpf-next/c/e44f4790a2ba - [bpf-next,06/13] ice: centrallize Rx buffer recycling https://git.kernel.org/bpf/bpf-next/c/1dc1a7e7f410 - [bpf-next,07/13] ice: use ice_max_xdp_frame_size() in ice_xdp_setup_prog() https://git.kernel.org/bpf/bpf-next/c/60bc72b3c4e9 - [bpf-next,08/13] ice: do not call ice_finalize_xdp_rx() unnecessarily https://git.kernel.org/bpf/bpf-next/c/9070fe3da0b1 - [bpf-next,09/13] ice: use xdp->frame_sz instead of recalculating truesize https://git.kernel.org/bpf/bpf-next/c/8a11b334ec9b - [bpf-next,10/13] ice: add support for XDP multi-buffer on Rx side https://git.kernel.org/bpf/bpf-next/c/2fba7dc5157b - [bpf-next,11/13] ice: add support for XDP multi-buffer on Tx side https://git.kernel.org/bpf/bpf-next/c/3246a10752a7 - [bpf-next,12/13] ice: remove next_{dd,rs} fields from ice_tx_ring https://git.kernel.org/bpf/bpf-next/c/f4db7b314dd5 - [bpf-next,13/13] ice: xsk: do not convert to buff to frame for XDP_TX https://git.kernel.org/bpf/bpf-next/c/a24b4c6e9aab You are awesome, thank you!