lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <25334b64vl0.fsf@nvidia.com>
Date: Tue, 08 Jul 2025 17:15:55 +0300
From: Aurelien Aptel <aaptel@...dia.com>
To: Hannes Reinecke <hare@...e.de>, linux-nvme@...ts.infradead.org,
 netdev@...r.kernel.org, sagi@...mberg.me, hch@....de, kbusch@...nel.org,
 axboe@...com, chaitanyak@...dia.com, davem@...emloft.net, kuba@...nel.org
Cc: Boris Pismenny <borisp@...dia.com>, aurelien.aptel@...il.com,
 smalin@...dia.com, malin1024@...il.com, ogerlitz@...dia.com,
 yorayz@...dia.com, galshalom@...dia.com, mgurtovoy@...dia.com,
 tariqt@...dia.com, gus@...labora.com, edumazet@...gle.com,
 pabeni@...hat.com, dsahern@...nel.org, ast@...nel.org,
 jacob.e.keller@...el.com
Subject: Re: [PATCH v29 01/20] net: Introduce direct data placement tcp offload

Hannes Reinecke <hare@...e.de> writes:
> Hmm. One wonders: where is the different between this DDP implementation
> and the existing DDP implementation added with 4d288d5767f8 ("[SCSI]
> net: add FCoE offload support through net_device") ?

On first sight there are some similarities with the FCoE DDP offload but
things work differently.

Device querying:
- FCoE DDP has an operation for retrieving hardcoded attributes from the
  device (ndo_fcoe_get_hbainfo)
- ULP DDP has an operation for retrieving protocol generic and
  per-protocol info (limits())

Enablement:
- FCoE DDP has operations to enable/disable the feature on the device,
  and dedicated netdev feature bits
- ULP DPP uses netlink capability bits instead, as request by Jakub

Payload DDP:
- FCoE DDP works on a per-FCoE-frame basis, on top of ethernet. There
  are ddp_setup()/ddp_done() ops.
- ULP DPP works on a per-IO basis, on top of TCP. One IO can be split in
  multiple TCP packets. There are setup()/teardown() ops.

But because ULP DDP is per-IO and based on TCP, it requires knowledge
about the ULP header lenghts encoded in the HW/driver. It has to handle
OOO and dropped packets, via the resync() flow which FCoE lacks.

ULP DDP provides operation to enable/disable the offload per-socket,
which FCoE has no concept of.

Another difference is ULP DDP teardown operation is async. The ULP layer
does not have to wait for the HW to free up the resources: the ULP
provides callback to the driver, which the driver calls when it is done
tearing down so that the ULP can free its resources.

ULP DDP API also includes per-protocol stats retrieval. Overall, ULP DDP
was designed to be extended to support multiple protocols.

Thanks

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ