SlideShare a Scribd company logo
1 of 14
Download to read offline
Hemant	Agrawal,	Shreyansh	Jain	- NXP
DPDK	Summit	- San	Jose	– 2017
rte_rawdevice:
Implementing Programmable
Accelerators using Generic
Offload
#DPDKSummit
2
?
XYZ accelerator
Device
Problem Statement: Why a
`rawdevice`?
u Device	‘flavour’	currently	available	in	DPDK	are	limited	by	their	characteristics
librte_ether
Ethernet Device
librte_cryptodev
Crypto Device
librte_eventdev
Event Device
?
Wireless Device
What	happens	for	cases	like	
these?	How	to	integrate	them	
with	DPDK	Framework?
u A	generic	‘flavor’	of	device	is	required	which	can	represent	non-generic	cases
u Custom	or	Specific	function	IP	Block	– Compression	Engine,	Pattern	Matching	Engine	etc.
u Leveraging	Device	Bus	model	for	their	scan->probe->consume	cycle
u Accelerating	adoption	of	such	blocks	without	creating	new	lib/*	for	each	new	type	of	device
3
Problem Statement: Why a
`rawdevice`?
u Why	`rawdevice`	is	better	than	device	specific	APIs
§ Applications	prefers	uniform	device	view:	start/stop,	queue/ring	config,	enqueue/dequeue
§ Uniform	programming	model	across	devices	– all	accelerators	under	rawdevice
§ Quick	turnaround	time	– changes	to	lib/*	for	a	new	devices	is	a	longer	cycle
u A	generic	set	of	APIs	for	applications	– covering	a	broad	category	of	accelerators/IPs
u Command/Control	APIs:	start/stop,	configure	a	device,	query	configuration
u Data	I/O	APIs:	enqueue/dequeue	single	or	multiple	buffers
u Query	APIs:	Statistics,	register	dumps
u Firmware	Management	APIs:	load,	unload,	version	information
4
Definition of a `rawdevice` (1/2)
u A	*rte_rawdevice*	is	a	raw/generic	device	without	any	standard	configuration	or	
input/output	method	assumption.
u The	configure,	info	operation	will	be	opaque	structures.
u The	queue/ring	operations	will	not	assume	any	data	or	buffer	format.	
u Specific	PMDs	should	expose	any	specific	config	APIs	– not	expecting	portability.	
Rte_device
rte_eth_dev rte_cryptodev rte_eventdev rte_xyz… rte_raw_dev
5
Definition of a `rawdevice` (2/2)
u rte_rawdevice – A	generic	device	for	non-generic	IP	Blocks	
rte_rawdev {
rte_rawdev_data *data;
rte_rawdev_ops *dev_ops;
rte_device *dev;
rte_driver *driver;
attached : 1;
};
rte_rawdev_data {
socket_id;
dev_id;
nb_queues;
private; /* opaque info */
name;
}
rte_rawdev_ops {
start/stop/reset;
queue setup/teardown;
enqueue/dequeue bufs;
xstats get/reset;
firmware load/unload/version;
};
More	common	operations	can	
be	added	to	this	to	make	it	
more	‘generic’.
Opaque	private	data	can	store	
any	deviceódriver
handshake	data	for	the	
device.	Only	interpreted	by	
application	and	driver
6
Accelerator Offload Use-case on NXP
SoC
u NXP	Platform	has	a	programmable	engine,	
called	‘AIOP’
u The	engine	can	exposes	a	NIC	interface	and	a	
command-control	interfaces		for	GPP-side,	
detectable	on	fsl-mc	bus.
u The	application	need	to	configure	the	engine	in	
order	to	use	it.	
u NXP	provides	a	library	exposing	the	application	
level	APIs	and	convert	them	to	command	
messages.	
u Some	of	the	example	use-cases	are	ovs offload	
or	wireless	offload.	
User Applications
DPDK
AIOP
NIC -*
NIC-Phy
IF -1* IF -2IF-Control
config API
cmd i/f NIC-
PHY
WRIOP (PHY Layer)
GPP
NXP-HW
7
Accelerator Offload Use-case on NXP
SoC
User Applications
DPDK
AIOP
NIC -*
NIC-Phy
IF -1* IF -2IF-Control
config API
cmd i/f NIC-
PHY
WRIOP (PHY Layer)
GPP
NXP-HW
u [1] AIOP	device	is	scanned	over	‘fslmc’	bus	and	
probed through	a	DPAA2	driver
u [2] DPAA2	driver	creates	a	rawdevice and	
initializes	it.	Hereafter,	this	device	is	available	
as	a	port	for	the	application	to	use
u [3] Application	opens	the	rawdevice port.	It	can	
then	access	rawdevice APIs	for	device	
configuration/firmware	management/state
u [4] Some	other	custom	APIs	are	exposed	
directly	from	PMD	for	application	to	use
1
2
3
4
8
Example: Layering bbdev over
rawdevice
u `bbdev`	or	Wireless	Base	Band	device	– recently	proposed	by	Amr	Mokhtar
rte_bbdev_ops {
configure; start; stop; close;
info_get, stats_get, stats_reset;
queue_setup/release/start/stop;
};
rte_bbdev {
enqueue_enc_ops;
enqueue_dec_ops;
dequeue_enc_ops;
dequeue_dec_ops;
…
}
rte_rawdev_ops {
configure/start/stop/close/reset;
xstats get/reset;
queue_setup/release/configure;
}
rte_rawdev {
rte_rawdev_data *data;
rte_rawdev_ops *dev_ops;
rte_device *dev;
rte_driver *driver;
attached : 1;
};
An example
linkage
9
u ‘drivers/raw/bb_pmd’	calls	RTE_PMD_REGISTER_PCI(…)
u `bbdev`	is	scanned	by	standard	Bus	implementation	(assuming	PCI)
u During	probe,	device	is	identified	by	‘drivers/raw/bb_pmd’	and	initialized
u rte_rawdevice instance	is	created	and	populated;
u Either	have	custom	APIs	exposed	for	extra	functions,	or	overload	the	rte_rawdevice (private	data)
u Application	can	use	‘bbdev’	through	rawdevice port	number
Example: Layering bbdev over
rawdevice
10
u Generalizing	across	well	known	devices	like	FPGA,	Compression	IP
u Generic	adapters	for	ethernet/crypto/eventdevdevices
u How	to	add	more	operations	without	affecting	core	structures?
u ~IOCTLs?
u Opaque	structures	containing	device	specific	operations
What next?
Questions?
Hemant	Agrawal	hemant.agrawal@nxp.com
Shreyansh	Jain	shreyansh.jain@nxp.com
12
Properties for raw device
rte_raw_device
•struct rte_raw_dev_data *data
•struct rte_raw_dev_ops *dev_ops
•struct rte_raw_fw_ops *fw_ops
•Struct rte_device *dev
•Struct rte_driver *driver
•Uint8_t in_use:1
rte_raw_dev_data
•uint8_t dev_id
•unit8_t nb_queues;
•uint8_t dev_started:1;
•void *dev_private
•void *dev_info
•Struct rte_driver *driver
•Char name[RTE_RAW_MAX_NAME]
rte_raw_dev_ops
•dev_info_get
•dev_configure
•dev_start
•dev_stop
•dev_close
•….
•queue_def_conf
•queue_setup
•queue_release
•Dump
•Xtarts _get
•Xstats_reset
rte_raw_fw_ops
•fw_load
•fw_status
•fw_clock_sync
•fw_config
•fw_unload
•fw_stats
13
What is different from rte_prgdev ?
u The	last	proposal	of	rte_prgdev,		mainly	focused	on	firmware	image	
management.
u rte_raw_dev focus	is	attempting	to	provide	a	uniform	device	view	and	
accelerator	access	to	the	applications.	
u rte_raw_dev is	not	discounting	firmware	management,	but		makes	it	an	
optional	component.
u rte_raw_dev can	serve	as	a	staging	device	for	un-common	newly	added	
device	flavors.
u Any	commonly	used	rte_rawbased	device	can	be	converted	into	it’s	own	specific	
flavor.
14
SoCs – Flexible Programming
Architecture
ØPacket Processing
Ø(1) Autonomous:
Packets are received, processed and sent within
the HW Engine. HW engine controller can
programmed with different autonomous
applications.
Ø(1) & (2) Semi Autonomous: Packets are
received by HW Engine. HW Engine controller
does part of processing. GPP cores do rest of
processing and send the result packets out.
Ø(2) Non-Autonomous:
Entire packet processing happens within GPP
cores with no help from HW controller.
ØOther acceleration – any kind of HW offload.
ØPattern Matching
ØData Compression
FMAN
DPAA
Data Path
Cores
GPP Core (2)
GPP Core
Control
Path Cores
Eth
Pattern
SEC
Data Comp
PCD
Controller (1)
HW Engine

More Related Content

What's hot

LF_DPDK17_Abstract APIs for DPDK and ODP
LF_DPDK17_Abstract APIs for DPDK and ODPLF_DPDK17_Abstract APIs for DPDK and ODP
LF_DPDK17_Abstract APIs for DPDK and ODPLF_DPDK
 
Netsft2017 day in_life_of_nfv
Netsft2017 day in_life_of_nfvNetsft2017 day in_life_of_nfv
Netsft2017 day in_life_of_nfvIntel
 
LF_DPDK_Mellanox bifurcated driver model
LF_DPDK_Mellanox bifurcated driver modelLF_DPDK_Mellanox bifurcated driver model
LF_DPDK_Mellanox bifurcated driver modelLF_DPDK
 
LF_DPDK17_mediated devices: better userland IO
LF_DPDK17_mediated devices: better userland IOLF_DPDK17_mediated devices: better userland IO
LF_DPDK17_mediated devices: better userland IOLF_DPDK
 
Hotplug and Virtio - Tetsuya Mukawa
Hotplug and Virtio - Tetsuya MukawaHotplug and Virtio - Tetsuya Mukawa
Hotplug and Virtio - Tetsuya Mukawaharryvanhaaren
 
6WIND - SPEED MATTERS: The Challenge 2014 Contest Winners
6WIND - SPEED MATTERS: The Challenge 2014 Contest Winners6WIND - SPEED MATTERS: The Challenge 2014 Contest Winners
6WIND - SPEED MATTERS: The Challenge 2014 Contest Winners6WIND
 
6WINDGate™ - Powering the New Generation of Network Appliances
6WINDGate™ - Powering the New Generation of Network Appliances6WINDGate™ - Powering the New Generation of Network Appliances
6WINDGate™ - Powering the New Generation of Network Appliances6WIND
 
6WINDGate™ - Powering the New-Generation of IPsec Gateways
6WINDGate™ - Powering the New-Generation of IPsec Gateways6WINDGate™ - Powering the New-Generation of IPsec Gateways
6WINDGate™ - Powering the New-Generation of IPsec Gateways6WIND
 
The Power of SmartNICs
The Power of SmartNICsThe Power of SmartNICs
The Power of SmartNICsNetronome
 
Hyperscan - Mohammad Abdul Awal
Hyperscan - Mohammad Abdul AwalHyperscan - Mohammad Abdul Awal
Hyperscan - Mohammad Abdul Awalharryvanhaaren
 
Using SmartNICs to Provide Better Data Center Security - Jack Matheson - 44CO...
Using SmartNICs to Provide Better Data Center Security - Jack Matheson - 44CO...Using SmartNICs to Provide Better Data Center Security - Jack Matheson - 44CO...
Using SmartNICs to Provide Better Data Center Security - Jack Matheson - 44CO...44CON
 
6WIND Virtual Accelerator Performance Test Comparison
6WIND Virtual Accelerator Performance Test Comparison6WIND Virtual Accelerator Performance Test Comparison
6WIND Virtual Accelerator Performance Test Comparison6WIND
 
DPDK Architecture Musings - Andy Harvey
DPDK Architecture Musings - Andy HarveyDPDK Architecture Musings - Andy Harvey
DPDK Architecture Musings - Andy Harveyharryvanhaaren
 
OVS and DPDK - T.F. Herbert, K. Traynor, M. Gray
OVS and DPDK - T.F. Herbert, K. Traynor, M. GrayOVS and DPDK - T.F. Herbert, K. Traynor, M. Gray
OVS and DPDK - T.F. Herbert, K. Traynor, M. Grayharryvanhaaren
 
6WIND Virtual Accelerator Product Presentation
6WIND Virtual Accelerator Product Presentation6WIND Virtual Accelerator Product Presentation
6WIND Virtual Accelerator Product Presentation6WIND
 
DPDK Integration: A Product's Journey - Roger B. Melton
DPDK Integration: A Product's Journey - Roger B. MeltonDPDK Integration: A Product's Journey - Roger B. Melton
DPDK Integration: A Product's Journey - Roger B. Meltonharryvanhaaren
 
Accelerating SDN Applications with Open Source Network Overlays
Accelerating SDN Applications with Open Source Network OverlaysAccelerating SDN Applications with Open Source Network Overlays
Accelerating SDN Applications with Open Source Network OverlaysCumulus Networks
 
Dpdk frame pipeline for ips ids suricata
Dpdk frame pipeline for ips ids suricataDpdk frame pipeline for ips ids suricata
Dpdk frame pipeline for ips ids suricataVipin Varghese
 
Scaling the Container Dataplane
Scaling the Container Dataplane Scaling the Container Dataplane
Scaling the Container Dataplane Michelle Holley
 
DPDK Summit 2015 - Intel - Keith Wiles
DPDK Summit 2015 - Intel - Keith WilesDPDK Summit 2015 - Intel - Keith Wiles
DPDK Summit 2015 - Intel - Keith WilesJim St. Leger
 

What's hot (20)

LF_DPDK17_Abstract APIs for DPDK and ODP
LF_DPDK17_Abstract APIs for DPDK and ODPLF_DPDK17_Abstract APIs for DPDK and ODP
LF_DPDK17_Abstract APIs for DPDK and ODP
 
Netsft2017 day in_life_of_nfv
Netsft2017 day in_life_of_nfvNetsft2017 day in_life_of_nfv
Netsft2017 day in_life_of_nfv
 
LF_DPDK_Mellanox bifurcated driver model
LF_DPDK_Mellanox bifurcated driver modelLF_DPDK_Mellanox bifurcated driver model
LF_DPDK_Mellanox bifurcated driver model
 
LF_DPDK17_mediated devices: better userland IO
LF_DPDK17_mediated devices: better userland IOLF_DPDK17_mediated devices: better userland IO
LF_DPDK17_mediated devices: better userland IO
 
Hotplug and Virtio - Tetsuya Mukawa
Hotplug and Virtio - Tetsuya MukawaHotplug and Virtio - Tetsuya Mukawa
Hotplug and Virtio - Tetsuya Mukawa
 
6WIND - SPEED MATTERS: The Challenge 2014 Contest Winners
6WIND - SPEED MATTERS: The Challenge 2014 Contest Winners6WIND - SPEED MATTERS: The Challenge 2014 Contest Winners
6WIND - SPEED MATTERS: The Challenge 2014 Contest Winners
 
6WINDGate™ - Powering the New Generation of Network Appliances
6WINDGate™ - Powering the New Generation of Network Appliances6WINDGate™ - Powering the New Generation of Network Appliances
6WINDGate™ - Powering the New Generation of Network Appliances
 
6WINDGate™ - Powering the New-Generation of IPsec Gateways
6WINDGate™ - Powering the New-Generation of IPsec Gateways6WINDGate™ - Powering the New-Generation of IPsec Gateways
6WINDGate™ - Powering the New-Generation of IPsec Gateways
 
The Power of SmartNICs
The Power of SmartNICsThe Power of SmartNICs
The Power of SmartNICs
 
Hyperscan - Mohammad Abdul Awal
Hyperscan - Mohammad Abdul AwalHyperscan - Mohammad Abdul Awal
Hyperscan - Mohammad Abdul Awal
 
Using SmartNICs to Provide Better Data Center Security - Jack Matheson - 44CO...
Using SmartNICs to Provide Better Data Center Security - Jack Matheson - 44CO...Using SmartNICs to Provide Better Data Center Security - Jack Matheson - 44CO...
Using SmartNICs to Provide Better Data Center Security - Jack Matheson - 44CO...
 
6WIND Virtual Accelerator Performance Test Comparison
6WIND Virtual Accelerator Performance Test Comparison6WIND Virtual Accelerator Performance Test Comparison
6WIND Virtual Accelerator Performance Test Comparison
 
DPDK Architecture Musings - Andy Harvey
DPDK Architecture Musings - Andy HarveyDPDK Architecture Musings - Andy Harvey
DPDK Architecture Musings - Andy Harvey
 
OVS and DPDK - T.F. Herbert, K. Traynor, M. Gray
OVS and DPDK - T.F. Herbert, K. Traynor, M. GrayOVS and DPDK - T.F. Herbert, K. Traynor, M. Gray
OVS and DPDK - T.F. Herbert, K. Traynor, M. Gray
 
6WIND Virtual Accelerator Product Presentation
6WIND Virtual Accelerator Product Presentation6WIND Virtual Accelerator Product Presentation
6WIND Virtual Accelerator Product Presentation
 
DPDK Integration: A Product's Journey - Roger B. Melton
DPDK Integration: A Product's Journey - Roger B. MeltonDPDK Integration: A Product's Journey - Roger B. Melton
DPDK Integration: A Product's Journey - Roger B. Melton
 
Accelerating SDN Applications with Open Source Network Overlays
Accelerating SDN Applications with Open Source Network OverlaysAccelerating SDN Applications with Open Source Network Overlays
Accelerating SDN Applications with Open Source Network Overlays
 
Dpdk frame pipeline for ips ids suricata
Dpdk frame pipeline for ips ids suricataDpdk frame pipeline for ips ids suricata
Dpdk frame pipeline for ips ids suricata
 
Scaling the Container Dataplane
Scaling the Container Dataplane Scaling the Container Dataplane
Scaling the Container Dataplane
 
DPDK Summit 2015 - Intel - Keith Wiles
DPDK Summit 2015 - Intel - Keith WilesDPDK Summit 2015 - Intel - Keith Wiles
DPDK Summit 2015 - Intel - Keith Wiles
 

Similar to Implementing Programmable Accelerators using Generic Offload

Pluggable Infrastructure with CI/CD and Docker
Pluggable Infrastructure with CI/CD and DockerPluggable Infrastructure with CI/CD and Docker
Pluggable Infrastructure with CI/CD and DockerBob Killen
 
Apache DeviceMap - ApacheCon core Europe 2015
Apache DeviceMap - ApacheCon core Europe 2015Apache DeviceMap - ApacheCon core Europe 2015
Apache DeviceMap - ApacheCon core Europe 2015Werner Keil
 
АНДРІЙ ШУМАДА «To Cover Uncoverable» Online WDDay 2022 js
АНДРІЙ ШУМАДА «To Cover Uncoverable» Online WDDay 2022 jsАНДРІЙ ШУМАДА «To Cover Uncoverable» Online WDDay 2022 js
АНДРІЙ ШУМАДА «To Cover Uncoverable» Online WDDay 2022 jsWDDay
 
Android porting for dummies @droidconin 2011
Android porting for dummies @droidconin 2011Android porting for dummies @droidconin 2011
Android porting for dummies @droidconin 2011pundiramit
 
Containerizing GPU Applications with Docker for Scaling to the Cloud
Containerizing GPU Applications with Docker for Scaling to the CloudContainerizing GPU Applications with Docker for Scaling to the Cloud
Containerizing GPU Applications with Docker for Scaling to the CloudSubbu Rama
 
Simplifying Multi-User SOLIDWORKS Implementations
Simplifying Multi-User SOLIDWORKS ImplementationsSimplifying Multi-User SOLIDWORKS Implementations
Simplifying Multi-User SOLIDWORKS ImplementationsHawk Ridge Systems
 
"To cover uncoverable", Andrii Shumada
"To cover uncoverable", Andrii Shumada"To cover uncoverable", Andrii Shumada
"To cover uncoverable", Andrii ShumadaFwdays
 
Composing services with Kubernetes
Composing services with KubernetesComposing services with Kubernetes
Composing services with KubernetesBart Spaans
 
Google Cloud Platform for DeVops, by Javier Ramirez @ teowaki
Google Cloud Platform for DeVops, by Javier Ramirez @ teowakiGoogle Cloud Platform for DeVops, by Javier Ramirez @ teowaki
Google Cloud Platform for DeVops, by Javier Ramirez @ teowakijavier ramirez
 
An Introduction To Android
An Introduction To AndroidAn Introduction To Android
An Introduction To Androidnatdefreitas
 
Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...
Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...
Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...OpenShift Origin
 
HKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP WorkshopHKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP WorkshopLinaro
 
DPDK IPSec Security Gateway Application
DPDK IPSec Security Gateway ApplicationDPDK IPSec Security Gateway Application
DPDK IPSec Security Gateway ApplicationMichelle Holley
 
PHP QA Tools
PHP QA ToolsPHP QA Tools
PHP QA Toolsrjsmelo
 
Containerizing Hardware Accelerated Applications
Containerizing Hardware Accelerated ApplicationsContainerizing Hardware Accelerated Applications
Containerizing Hardware Accelerated ApplicationsDocker, Inc.
 

Similar to Implementing Programmable Accelerators using Generic Offload (20)

Pluggable Infrastructure with CI/CD and Docker
Pluggable Infrastructure with CI/CD and DockerPluggable Infrastructure with CI/CD and Docker
Pluggable Infrastructure with CI/CD and Docker
 
Apache DeviceMap - ApacheCon core Europe 2015
Apache DeviceMap - ApacheCon core Europe 2015Apache DeviceMap - ApacheCon core Europe 2015
Apache DeviceMap - ApacheCon core Europe 2015
 
АНДРІЙ ШУМАДА «To Cover Uncoverable» Online WDDay 2022 js
АНДРІЙ ШУМАДА «To Cover Uncoverable» Online WDDay 2022 jsАНДРІЙ ШУМАДА «To Cover Uncoverable» Online WDDay 2022 js
АНДРІЙ ШУМАДА «To Cover Uncoverable» Online WDDay 2022 js
 
Android porting for dummies @droidconin 2011
Android porting for dummies @droidconin 2011Android porting for dummies @droidconin 2011
Android porting for dummies @droidconin 2011
 
Containerizing GPU Applications with Docker for Scaling to the Cloud
Containerizing GPU Applications with Docker for Scaling to the CloudContainerizing GPU Applications with Docker for Scaling to the Cloud
Containerizing GPU Applications with Docker for Scaling to the Cloud
 
Simplifying Multi-User SOLIDWORKS Implementations
Simplifying Multi-User SOLIDWORKS ImplementationsSimplifying Multi-User SOLIDWORKS Implementations
Simplifying Multi-User SOLIDWORKS Implementations
 
"To cover uncoverable", Andrii Shumada
"To cover uncoverable", Andrii Shumada"To cover uncoverable", Andrii Shumada
"To cover uncoverable", Andrii Shumada
 
Make Accelerator Pluggable for Container Engine
Make Accelerator Pluggable for Container EngineMake Accelerator Pluggable for Container Engine
Make Accelerator Pluggable for Container Engine
 
OpenDataPlane Project
OpenDataPlane ProjectOpenDataPlane Project
OpenDataPlane Project
 
Composing services with Kubernetes
Composing services with KubernetesComposing services with Kubernetes
Composing services with Kubernetes
 
Google Cloud Platform for DeVops, by Javier Ramirez @ teowaki
Google Cloud Platform for DeVops, by Javier Ramirez @ teowakiGoogle Cloud Platform for DeVops, by Javier Ramirez @ teowaki
Google Cloud Platform for DeVops, by Javier Ramirez @ teowaki
 
An Introduction To Android
An Introduction To AndroidAn Introduction To Android
An Introduction To Android
 
Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...
Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...
Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...
 
HKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP WorkshopHKG18-318 - OpenAMP Workshop
HKG18-318 - OpenAMP Workshop
 
Enabling NFV features in kubernetes
Enabling NFV features in kubernetesEnabling NFV features in kubernetes
Enabling NFV features in kubernetes
 
DPDK IPSec Security Gateway Application
DPDK IPSec Security Gateway ApplicationDPDK IPSec Security Gateway Application
DPDK IPSec Security Gateway Application
 
Where should I run my code? Serverless, Containers, Virtual Machines and more
Where should I run my code? Serverless, Containers, Virtual Machines and moreWhere should I run my code? Serverless, Containers, Virtual Machines and more
Where should I run my code? Serverless, Containers, Virtual Machines and more
 
PHP QA Tools
PHP QA ToolsPHP QA Tools
PHP QA Tools
 
Containerizing Hardware Accelerated Applications
Containerizing Hardware Accelerated ApplicationsContainerizing Hardware Accelerated Applications
Containerizing Hardware Accelerated Applications
 
Agnostic Device Drivers
Agnostic Device DriversAgnostic Device Drivers
Agnostic Device Drivers
 

More from LF_DPDK

LF_DPDK17_ OpenVswitch hardware offload over DPDK
LF_DPDK17_ OpenVswitch hardware offload over DPDKLF_DPDK17_ OpenVswitch hardware offload over DPDK
LF_DPDK17_ OpenVswitch hardware offload over DPDKLF_DPDK
 
LF_DPDK17_DPDK support for new hardware offloads
LF_DPDK17_DPDK support for new hardware offloadsLF_DPDK17_DPDK support for new hardware offloads
LF_DPDK17_DPDK support for new hardware offloadsLF_DPDK
 
LF_DPDK17_DPDK's best kept secret – Micro-benchmark performance tests
LF_DPDK17_DPDK's best kept secret – Micro-benchmark performance testsLF_DPDK17_DPDK's best kept secret – Micro-benchmark performance tests
LF_DPDK17_DPDK's best kept secret – Micro-benchmark performance testsLF_DPDK
 
LF_DPDK17_Lagopus Router
LF_DPDK17_Lagopus RouterLF_DPDK17_Lagopus Router
LF_DPDK17_Lagopus RouterLF_DPDK
 
LF_DPDK17_DPDK Membership Library
LF_DPDK17_DPDK Membership LibraryLF_DPDK17_DPDK Membership Library
LF_DPDK17_DPDK Membership LibraryLF_DPDK
 
LF_DPDK17_testpmd: swissknife for NFV
LF_DPDK17_testpmd: swissknife for NFVLF_DPDK17_testpmd: swissknife for NFV
LF_DPDK17_testpmd: swissknife for NFVLF_DPDK
 
LF_DPDK17_Make DPDK's software traffic manager a deployable solution for vBNG
LF_DPDK17_Make DPDK's software traffic manager a deployable solution for vBNGLF_DPDK17_Make DPDK's software traffic manager a deployable solution for vBNG
LF_DPDK17_Make DPDK's software traffic manager a deployable solution for vBNGLF_DPDK
 
LF_DPDK17_OpenNetVM: A high-performance NFV platforms to meet future communic...
LF_DPDK17_OpenNetVM: A high-performance NFV platforms to meet future communic...LF_DPDK17_OpenNetVM: A high-performance NFV platforms to meet future communic...
LF_DPDK17_OpenNetVM: A high-performance NFV platforms to meet future communic...LF_DPDK
 
LF_DPDK17_DPDK on Microsoft Azure
LF_DPDK17_DPDK on Microsoft AzureLF_DPDK17_DPDK on Microsoft Azure
LF_DPDK17_DPDK on Microsoft AzureLF_DPDK
 
LF_DPDK17_VPP Host Stack
LF_DPDK17_VPP Host StackLF_DPDK17_VPP Host Stack
LF_DPDK17_VPP Host StackLF_DPDK
 
LF_DPDK17_rte_security: enhancing IPSEC offload
LF_DPDK17_rte_security: enhancing IPSEC offload LF_DPDK17_rte_security: enhancing IPSEC offload
LF_DPDK17_rte_security: enhancing IPSEC offload LF_DPDK
 
LF_DPDK17_Enabling hardware acceleration in DPDK data plane applications
LF_DPDK17_Enabling hardware acceleration in DPDK data plane applicationsLF_DPDK17_Enabling hardware acceleration in DPDK data plane applications
LF_DPDK17_Enabling hardware acceleration in DPDK data plane applicationsLF_DPDK
 
LF_DPDK17_Technical Roadmap
LF_DPDK17_Technical RoadmapLF_DPDK17_Technical Roadmap
LF_DPDK17_Technical RoadmapLF_DPDK
 
LF_DPDK17_Enhanced Memory Management
LF_DPDK17_Enhanced Memory ManagementLF_DPDK17_Enhanced Memory Management
LF_DPDK17_Enhanced Memory ManagementLF_DPDK
 
LF_DPDK17_SafetyOrange - a tiny server class multi-purpose box with DPDK
LF_DPDK17_SafetyOrange - a tiny server class multi-purpose box with DPDKLF_DPDK17_SafetyOrange - a tiny server class multi-purpose box with DPDK
LF_DPDK17_SafetyOrange - a tiny server class multi-purpose box with DPDKLF_DPDK
 
LF_DPDK17_Reflections on Mirroring With DPDK
LF_DPDK17_Reflections on Mirroring With DPDKLF_DPDK17_Reflections on Mirroring With DPDK
LF_DPDK17_Reflections on Mirroring With DPDKLF_DPDK
 
LF_DPDK17_Implementation and Testing of Soft Patch Panel
LF_DPDK17_Implementation and Testing of Soft Patch PanelLF_DPDK17_Implementation and Testing of Soft Patch Panel
LF_DPDK17_Implementation and Testing of Soft Patch PanelLF_DPDK
 
LF_DPDK_Accelerate storage service via SPDK
LF_DPDK_Accelerate storage service via SPDK LF_DPDK_Accelerate storage service via SPDK
LF_DPDK_Accelerate storage service via SPDK LF_DPDK
 
LF_DPDK17_Accelerating P4-based Dataplane with DPDK
LF_DPDK17_Accelerating P4-based Dataplane with DPDKLF_DPDK17_Accelerating P4-based Dataplane with DPDK
LF_DPDK17_Accelerating P4-based Dataplane with DPDKLF_DPDK
 
LF_DPDK17_The Path to Data Plane Microservices
LF_DPDK17_The Path to Data Plane MicroservicesLF_DPDK17_The Path to Data Plane Microservices
LF_DPDK17_The Path to Data Plane MicroservicesLF_DPDK
 

More from LF_DPDK (20)

LF_DPDK17_ OpenVswitch hardware offload over DPDK
LF_DPDK17_ OpenVswitch hardware offload over DPDKLF_DPDK17_ OpenVswitch hardware offload over DPDK
LF_DPDK17_ OpenVswitch hardware offload over DPDK
 
LF_DPDK17_DPDK support for new hardware offloads
LF_DPDK17_DPDK support for new hardware offloadsLF_DPDK17_DPDK support for new hardware offloads
LF_DPDK17_DPDK support for new hardware offloads
 
LF_DPDK17_DPDK's best kept secret – Micro-benchmark performance tests
LF_DPDK17_DPDK's best kept secret – Micro-benchmark performance testsLF_DPDK17_DPDK's best kept secret – Micro-benchmark performance tests
LF_DPDK17_DPDK's best kept secret – Micro-benchmark performance tests
 
LF_DPDK17_Lagopus Router
LF_DPDK17_Lagopus RouterLF_DPDK17_Lagopus Router
LF_DPDK17_Lagopus Router
 
LF_DPDK17_DPDK Membership Library
LF_DPDK17_DPDK Membership LibraryLF_DPDK17_DPDK Membership Library
LF_DPDK17_DPDK Membership Library
 
LF_DPDK17_testpmd: swissknife for NFV
LF_DPDK17_testpmd: swissknife for NFVLF_DPDK17_testpmd: swissknife for NFV
LF_DPDK17_testpmd: swissknife for NFV
 
LF_DPDK17_Make DPDK's software traffic manager a deployable solution for vBNG
LF_DPDK17_Make DPDK's software traffic manager a deployable solution for vBNGLF_DPDK17_Make DPDK's software traffic manager a deployable solution for vBNG
LF_DPDK17_Make DPDK's software traffic manager a deployable solution for vBNG
 
LF_DPDK17_OpenNetVM: A high-performance NFV platforms to meet future communic...
LF_DPDK17_OpenNetVM: A high-performance NFV platforms to meet future communic...LF_DPDK17_OpenNetVM: A high-performance NFV platforms to meet future communic...
LF_DPDK17_OpenNetVM: A high-performance NFV platforms to meet future communic...
 
LF_DPDK17_DPDK on Microsoft Azure
LF_DPDK17_DPDK on Microsoft AzureLF_DPDK17_DPDK on Microsoft Azure
LF_DPDK17_DPDK on Microsoft Azure
 
LF_DPDK17_VPP Host Stack
LF_DPDK17_VPP Host StackLF_DPDK17_VPP Host Stack
LF_DPDK17_VPP Host Stack
 
LF_DPDK17_rte_security: enhancing IPSEC offload
LF_DPDK17_rte_security: enhancing IPSEC offload LF_DPDK17_rte_security: enhancing IPSEC offload
LF_DPDK17_rte_security: enhancing IPSEC offload
 
LF_DPDK17_Enabling hardware acceleration in DPDK data plane applications
LF_DPDK17_Enabling hardware acceleration in DPDK data plane applicationsLF_DPDK17_Enabling hardware acceleration in DPDK data plane applications
LF_DPDK17_Enabling hardware acceleration in DPDK data plane applications
 
LF_DPDK17_Technical Roadmap
LF_DPDK17_Technical RoadmapLF_DPDK17_Technical Roadmap
LF_DPDK17_Technical Roadmap
 
LF_DPDK17_Enhanced Memory Management
LF_DPDK17_Enhanced Memory ManagementLF_DPDK17_Enhanced Memory Management
LF_DPDK17_Enhanced Memory Management
 
LF_DPDK17_SafetyOrange - a tiny server class multi-purpose box with DPDK
LF_DPDK17_SafetyOrange - a tiny server class multi-purpose box with DPDKLF_DPDK17_SafetyOrange - a tiny server class multi-purpose box with DPDK
LF_DPDK17_SafetyOrange - a tiny server class multi-purpose box with DPDK
 
LF_DPDK17_Reflections on Mirroring With DPDK
LF_DPDK17_Reflections on Mirroring With DPDKLF_DPDK17_Reflections on Mirroring With DPDK
LF_DPDK17_Reflections on Mirroring With DPDK
 
LF_DPDK17_Implementation and Testing of Soft Patch Panel
LF_DPDK17_Implementation and Testing of Soft Patch PanelLF_DPDK17_Implementation and Testing of Soft Patch Panel
LF_DPDK17_Implementation and Testing of Soft Patch Panel
 
LF_DPDK_Accelerate storage service via SPDK
LF_DPDK_Accelerate storage service via SPDK LF_DPDK_Accelerate storage service via SPDK
LF_DPDK_Accelerate storage service via SPDK
 
LF_DPDK17_Accelerating P4-based Dataplane with DPDK
LF_DPDK17_Accelerating P4-based Dataplane with DPDKLF_DPDK17_Accelerating P4-based Dataplane with DPDK
LF_DPDK17_Accelerating P4-based Dataplane with DPDK
 
LF_DPDK17_The Path to Data Plane Microservices
LF_DPDK17_The Path to Data Plane MicroservicesLF_DPDK17_The Path to Data Plane Microservices
LF_DPDK17_The Path to Data Plane Microservices
 

Recently uploaded

"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 

Recently uploaded (20)

"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 

Implementing Programmable Accelerators using Generic Offload

  • 1. Hemant Agrawal, Shreyansh Jain - NXP DPDK Summit - San Jose – 2017 rte_rawdevice: Implementing Programmable Accelerators using Generic Offload #DPDKSummit
  • 2. 2 ? XYZ accelerator Device Problem Statement: Why a `rawdevice`? u Device ‘flavour’ currently available in DPDK are limited by their characteristics librte_ether Ethernet Device librte_cryptodev Crypto Device librte_eventdev Event Device ? Wireless Device What happens for cases like these? How to integrate them with DPDK Framework? u A generic ‘flavor’ of device is required which can represent non-generic cases u Custom or Specific function IP Block – Compression Engine, Pattern Matching Engine etc. u Leveraging Device Bus model for their scan->probe->consume cycle u Accelerating adoption of such blocks without creating new lib/* for each new type of device
  • 3. 3 Problem Statement: Why a `rawdevice`? u Why `rawdevice` is better than device specific APIs § Applications prefers uniform device view: start/stop, queue/ring config, enqueue/dequeue § Uniform programming model across devices – all accelerators under rawdevice § Quick turnaround time – changes to lib/* for a new devices is a longer cycle u A generic set of APIs for applications – covering a broad category of accelerators/IPs u Command/Control APIs: start/stop, configure a device, query configuration u Data I/O APIs: enqueue/dequeue single or multiple buffers u Query APIs: Statistics, register dumps u Firmware Management APIs: load, unload, version information
  • 4. 4 Definition of a `rawdevice` (1/2) u A *rte_rawdevice* is a raw/generic device without any standard configuration or input/output method assumption. u The configure, info operation will be opaque structures. u The queue/ring operations will not assume any data or buffer format. u Specific PMDs should expose any specific config APIs – not expecting portability. Rte_device rte_eth_dev rte_cryptodev rte_eventdev rte_xyz… rte_raw_dev
  • 5. 5 Definition of a `rawdevice` (2/2) u rte_rawdevice – A generic device for non-generic IP Blocks rte_rawdev { rte_rawdev_data *data; rte_rawdev_ops *dev_ops; rte_device *dev; rte_driver *driver; attached : 1; }; rte_rawdev_data { socket_id; dev_id; nb_queues; private; /* opaque info */ name; } rte_rawdev_ops { start/stop/reset; queue setup/teardown; enqueue/dequeue bufs; xstats get/reset; firmware load/unload/version; }; More common operations can be added to this to make it more ‘generic’. Opaque private data can store any deviceódriver handshake data for the device. Only interpreted by application and driver
  • 6. 6 Accelerator Offload Use-case on NXP SoC u NXP Platform has a programmable engine, called ‘AIOP’ u The engine can exposes a NIC interface and a command-control interfaces for GPP-side, detectable on fsl-mc bus. u The application need to configure the engine in order to use it. u NXP provides a library exposing the application level APIs and convert them to command messages. u Some of the example use-cases are ovs offload or wireless offload. User Applications DPDK AIOP NIC -* NIC-Phy IF -1* IF -2IF-Control config API cmd i/f NIC- PHY WRIOP (PHY Layer) GPP NXP-HW
  • 7. 7 Accelerator Offload Use-case on NXP SoC User Applications DPDK AIOP NIC -* NIC-Phy IF -1* IF -2IF-Control config API cmd i/f NIC- PHY WRIOP (PHY Layer) GPP NXP-HW u [1] AIOP device is scanned over ‘fslmc’ bus and probed through a DPAA2 driver u [2] DPAA2 driver creates a rawdevice and initializes it. Hereafter, this device is available as a port for the application to use u [3] Application opens the rawdevice port. It can then access rawdevice APIs for device configuration/firmware management/state u [4] Some other custom APIs are exposed directly from PMD for application to use 1 2 3 4
  • 8. 8 Example: Layering bbdev over rawdevice u `bbdev` or Wireless Base Band device – recently proposed by Amr Mokhtar rte_bbdev_ops { configure; start; stop; close; info_get, stats_get, stats_reset; queue_setup/release/start/stop; }; rte_bbdev { enqueue_enc_ops; enqueue_dec_ops; dequeue_enc_ops; dequeue_dec_ops; … } rte_rawdev_ops { configure/start/stop/close/reset; xstats get/reset; queue_setup/release/configure; } rte_rawdev { rte_rawdev_data *data; rte_rawdev_ops *dev_ops; rte_device *dev; rte_driver *driver; attached : 1; }; An example linkage
  • 9. 9 u ‘drivers/raw/bb_pmd’ calls RTE_PMD_REGISTER_PCI(…) u `bbdev` is scanned by standard Bus implementation (assuming PCI) u During probe, device is identified by ‘drivers/raw/bb_pmd’ and initialized u rte_rawdevice instance is created and populated; u Either have custom APIs exposed for extra functions, or overload the rte_rawdevice (private data) u Application can use ‘bbdev’ through rawdevice port number Example: Layering bbdev over rawdevice
  • 10. 10 u Generalizing across well known devices like FPGA, Compression IP u Generic adapters for ethernet/crypto/eventdevdevices u How to add more operations without affecting core structures? u ~IOCTLs? u Opaque structures containing device specific operations What next?
  • 12. 12 Properties for raw device rte_raw_device •struct rte_raw_dev_data *data •struct rte_raw_dev_ops *dev_ops •struct rte_raw_fw_ops *fw_ops •Struct rte_device *dev •Struct rte_driver *driver •Uint8_t in_use:1 rte_raw_dev_data •uint8_t dev_id •unit8_t nb_queues; •uint8_t dev_started:1; •void *dev_private •void *dev_info •Struct rte_driver *driver •Char name[RTE_RAW_MAX_NAME] rte_raw_dev_ops •dev_info_get •dev_configure •dev_start •dev_stop •dev_close •…. •queue_def_conf •queue_setup •queue_release •Dump •Xtarts _get •Xstats_reset rte_raw_fw_ops •fw_load •fw_status •fw_clock_sync •fw_config •fw_unload •fw_stats
  • 13. 13 What is different from rte_prgdev ? u The last proposal of rte_prgdev, mainly focused on firmware image management. u rte_raw_dev focus is attempting to provide a uniform device view and accelerator access to the applications. u rte_raw_dev is not discounting firmware management, but makes it an optional component. u rte_raw_dev can serve as a staging device for un-common newly added device flavors. u Any commonly used rte_rawbased device can be converted into it’s own specific flavor.
  • 14. 14 SoCs – Flexible Programming Architecture ØPacket Processing Ø(1) Autonomous: Packets are received, processed and sent within the HW Engine. HW engine controller can programmed with different autonomous applications. Ø(1) & (2) Semi Autonomous: Packets are received by HW Engine. HW Engine controller does part of processing. GPP cores do rest of processing and send the result packets out. Ø(2) Non-Autonomous: Entire packet processing happens within GPP cores with no help from HW controller. ØOther acceleration – any kind of HW offload. ØPattern Matching ØData Compression FMAN DPAA Data Path Cores GPP Core (2) GPP Core Control Path Cores Eth Pattern SEC Data Comp PCD Controller (1) HW Engine