public inbox for passt-dev@passt.top
 help / color / mirror / code / Atom feed
* [PATCH v3 00/18] RFC: Unify and simplify tap send path
@ 2023-01-06  0:43 David Gibson
  2023-01-06  0:43 ` [PATCH v3 01/18] pcap: Introduce pcap_frame() helper David Gibson
                   ` (18 more replies)
  0 siblings, 19 replies; 24+ messages in thread
From: David Gibson @ 2023-01-06  0:43 UTC (permalink / raw)
  To: Stefano Brivio, passt-dev; +Cc: David Gibson

Although we have an abstraction for the "slow path" (DHCP, NDP) guest
bound packets, the TCP and UDP forwarding paths write directly to the
tap fd.  However, it turns out how they send frames to the tap device
is more similar than it originally appears.

This series unifies the low-level tap send functions for TCP and UDP,
and makes some clean ups along the way.

This is based on my earlier outstanding series.

Changes since v2:
 * Rebase on the latest version of the UDP tap/splice socket
   unification
 * Rework pcap_frame() to return an error rather than printing itself,
   restoring less verbose behaviour for one error in a group of
   frames.
 * Assorted typo fixes in comments and commit messages
Changes since v1:
 * Abstract tap header construction as well as frame send (a number of
   new patches)
 * Remove unneeded flags buf_bytes globals as well
 * Fix bug where we weren't correctly setting iov_len after the move
   to giving variable sized iovecs to send_frames().

David Gibson (18):
  pcap: Introduce pcap_frame() helper
  pcap: Replace pcapm() with pcap_multiple()
  tcp: Combine two parts of passt tap send path together
  tcp: Don't compute total bytes in a message until we need it
  tcp: Improve interface to tcp_l2_buf_flush()
  tcp: Combine two parts of pasta tap send path together
  tap, tcp: Move tap send path to tap.c
  util: Introduce hton*_constant() in place of #ifdefs
  tcp, udp: Use named field initializers in iov_init functions
  util: Parameterize ethernet header initializer macro
  tcp: Remove redundant and incorrect initialization from *_iov_init()
  tcp: Consolidate calculation of total frame size
  tap: Add "tap headers" abstraction
  tcp: Use abstracted tap header
  tap: Use different io vector bases depending on tap type
  udp: Use abstracted tap header
  tap: Improve handling of partial frame sends
  udp: Use tap_send_frames()

 dhcpv6.c |  50 +++--------
 pcap.c   |  86 ++++++-------------
 pcap.h   |   3 +-
 tap.c    | 121 ++++++++++++++++++++++++++
 tap.h    |  54 ++++++++++++
 tcp.c    | 254 +++++++++++++------------------------------------------
 udp.c    | 213 ++++++----------------------------------------
 udp.h    |   2 +-
 util.h   |  47 ++--------
 9 files changed, 310 insertions(+), 520 deletions(-)

-- 
2.39.0


^ permalink raw reply	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2023-02-13  1:22 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-01-06  0:43 [PATCH v3 00/18] RFC: Unify and simplify tap send path David Gibson
2023-01-06  0:43 ` [PATCH v3 01/18] pcap: Introduce pcap_frame() helper David Gibson
2023-01-06  0:43 ` [PATCH v3 02/18] pcap: Replace pcapm() with pcap_multiple() David Gibson
2023-01-06  0:43 ` [PATCH v3 03/18] tcp: Combine two parts of passt tap send path together David Gibson
2023-01-06  0:43 ` [PATCH v3 04/18] tcp: Don't compute total bytes in a message until we need it David Gibson
2023-01-06  0:43 ` [PATCH v3 05/18] tcp: Improve interface to tcp_l2_buf_flush() David Gibson
2023-01-06  0:43 ` [PATCH v3 06/18] tcp: Combine two parts of pasta tap send path together David Gibson
2023-02-13  1:13   ` Stefano Brivio
2023-01-06  0:43 ` [PATCH v3 07/18] tap, tcp: Move tap send path to tap.c David Gibson
2023-01-06  0:43 ` [PATCH v3 08/18] util: Introduce hton*_constant() in place of #ifdefs David Gibson
2023-01-06  0:43 ` [PATCH v3 09/18] tcp, udp: Use named field initializers in iov_init functions David Gibson
2023-01-06  0:43 ` [PATCH v3 10/18] util: Parameterize ethernet header initializer macro David Gibson
2023-01-06  0:43 ` [PATCH v3 11/18] tcp: Remove redundant and incorrect initialization from *_iov_init() David Gibson
2023-01-06  0:43 ` [PATCH v3 12/18] tcp: Consolidate calculation of total frame size David Gibson
2023-01-06  0:43 ` [PATCH v3 13/18] tap: Add "tap headers" abstraction David Gibson
2023-01-06  0:43 ` [PATCH v3 14/18] tcp: Use abstracted tap header David Gibson
2023-01-06  0:43 ` [PATCH v3 15/18] tap: Use different io vector bases depending on tap type David Gibson
2023-01-06  0:43 ` [PATCH v3 16/18] udp: Use abstracted tap header David Gibson
2023-01-06  0:43 ` [PATCH v3 17/18] tap: Improve handling of partial frame sends David Gibson
2023-01-06  0:43 ` [PATCH v3 18/18] udp: Use tap_send_frames() David Gibson
2023-01-24 21:20 ` [PATCH v3 00/18] RFC: Unify and simplify tap send path Stefano Brivio
2023-01-25  3:13   ` David Gibson
2023-01-25 23:21     ` Stefano Brivio
2023-02-13  1:14       ` Stefano Brivio

Code repositories for project(s) associated with this public inbox

	https://passt.top/passt

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for IMAP folder(s).