b5458e2c | 06-Dec-2024 |
Konstantin Ananyev <konstantin.ananyev@huawei.com> |
ring: introduce staged ordered ring
Staged-Ordered-Ring (SORING) provides a SW abstraction for 'ordered' queues with multiple processing 'stages'. It is based on conventional DPDK rte_ring, re-uses
ring: introduce staged ordered ring
Staged-Ordered-Ring (SORING) provides a SW abstraction for 'ordered' queues with multiple processing 'stages'. It is based on conventional DPDK rte_ring, re-uses many of its concepts, and even substantial part of its code. It can be viewed as an 'extension' of rte_ring functionality. In particular, main SORING properties: - circular ring buffer with fixed size objects - producer, consumer plus multiple processing stages in the middle. - allows to split objects processing into multiple stages. - objects remain in the same ring while moving from one stage to the other, initial order is preserved, no extra copying needed. - preserves the ingress order of objects within the queue across multiple stages, i.e.: at the same stage multiple threads can process objects from the ring in any order, but for the next stage objects will always appear in the original order. - each stage (and producer/consumer) can be served by single and/or multiple threads. - number of stages, size and number of objects in the ring are configurable at ring initialization time.
Data-path API provides four main operations: - enqueue/dequeue works in the same manner as for conventional rte_ring, all rte_ring synchronization types are supported. - acquire/release - for each stage there is an acquire (start) and release (finish) operation. after some objects are 'acquired' - given thread can safely assume that it has exclusive possession of these objects till 'release' for them is invoked. Note that right now user has to release exactly the same number of objects that was acquired before. After 'release', objects can be 'acquired' by next stage and/or dequeued by the consumer (in case of last stage).
Expected use-case: applications that uses pipeline model (probably with multiple stages) for packet processing, when preserving incoming packet order is important. I.E.: IPsec processing, etc.
Signed-off-by: Eimear Morrissey <eimear.morrissey@huawei.com> Signed-off-by: Konstantin Ananyev <konstantin.ananyev@huawei.com> Acked-by: Morten Brørup <mb@smartsharesystems.com> Acked-by: Stephen Hemminger <stephen@networkplumber.org>
show more ...
|
fba98755 | 10-Jan-2025 |
Andre Muezerie <andremue@linux.microsoft.com> |
lib: replace packed attributes
MSVC struct packing is not compatible with GCC. Replace macro __rte_packed with __rte_packed_begin to push existing pack value and set packing to 1-byte and macro __rt
lib: replace packed attributes
MSVC struct packing is not compatible with GCC. Replace macro __rte_packed with __rte_packed_begin to push existing pack value and set packing to 1-byte and macro __rte_packed_end to restore the pack value prior to the push.
Macro __rte_packed_end is deliberately utilized to trigger a MSVC compiler warning if no existing packing has been pushed allowing easy identification of locations where the __rte_packed_begin is missing.
Signed-off-by: Andre Muezerie <andremue@linux.microsoft.com>
show more ...
|
8711af29 | 20-Nov-2024 |
Nandini Persad <nandinipersad361@gmail.com> |
doc: describe security protocols in a dedicated guide
This is a new document covering security protocols implemented in DPDK and more.
Signed-off-by: Nandini Persad <nandinipersad361@gmail.com> Sig
doc: describe security protocols in a dedicated guide
This is a new document covering security protocols implemented in DPDK and more.
Signed-off-by: Nandini Persad <nandinipersad361@gmail.com> Signed-off-by: Thomas Monjalon <thomas@monjalon.net> Reviewed-by: Stephen Hemminger <stephen@networkplumber.org> Reviewed-by: Hemant Agrawal <hemant.agrawal@nxp.com>
show more ...
|
16158f34 | 30-Sep-2024 |
Shani Peretz <shperetz@nvidia.com> |
examples/flow_filtering: introduce use cases snippets
These code snippets demonstrate rule creation using template and non-template APIs. They include functions that enable developers to create rule
examples/flow_filtering: introduce use cases snippets
These code snippets demonstrate rule creation using template and non-template APIs. They include functions that enable developers to create rules. The purpose of providing these snippets is to allow developers to reuse them, thereby saving time and effort during the implementation of flow rules.
The code snippets are categorized based on their usage and can be copied, paste and modified to suit any requirements. The snippets provided here are kept up to date and are being compiled along with the rest of the examples.
There is a skeleton that demonstrates rule creation using both template and non template APIs.
Developers can change the functions in the skeleton to the corresponding snippet functions with the appropriate suffix and create rules using the snippets themselves for easy testing. Each snippet has the same functions to implement the actions and patterns for the corresponding feature.
Signed-off-by: Shani Peretz <shperetz@nvidia.com> Acked-by: Stephen Hemminger <stephen@networkplumber.org>
show more ...
|
b3477a6b | 13-Nov-2024 |
Huisong Li <lihuisong@huawei.com> |
power: fix typo in PM QoS doc
The typo in the guide is hard to understand. Necessary to fix it.
Fixes: dd6fd75bf662 ("power: introduce PM QoS API on CPU wide")
Signed-off-by: Huisong Li <lihuisong
power: fix typo in PM QoS doc
The typo in the guide is hard to understand. Necessary to fix it.
Fixes: dd6fd75bf662 ("power: introduce PM QoS API on CPU wide")
Signed-off-by: Huisong Li <lihuisong@huawei.com>
show more ...
|
37dda90e | 14-Nov-2024 |
Thomas Monjalon <thomas@monjalon.net> |
eal: fix lcore variables documentation
The lcore variables API is new in DPDK 24.11, that's why the function rte_lcore_var_alloc() was marked experimental. To be clearer, the whole header file (incl
eal: fix lcore variables documentation
The lcore variables API is new in DPDK 24.11, that's why the function rte_lcore_var_alloc() was marked experimental. To be clearer, the whole header file (including all macros) is marked experimental.
A change decreased the default buffer size from 1 MB to 128 kB, missing to update the documentation, which is fixed here.
Fixes: 5bce9bed67ad ("eal: add static per-lcore memory allocation facility") Fixes: f2fd6c2e080c ("config: limit lcore variable maximum size to 128k")
Signed-off-by: Thomas Monjalon <thomas@monjalon.net> Acked-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com>
show more ...
|
dd6fd75b | 11-Nov-2024 |
Huisong Li <lihuisong@huawei.com> |
power: introduce PM QoS API on CPU wide
The deeper the idle state, the lower the power consumption, but the longer the resume time. Some service are delay sensitive and very except the low resume ti
power: introduce PM QoS API on CPU wide
The deeper the idle state, the lower the power consumption, but the longer the resume time. Some service are delay sensitive and very except the low resume time, like interrupt packet receiving mode.
And the "/sys/devices/system/cpu/cpuX/power/pm_qos_resume_latency_us" sysfs interface is used to set and get the resume latency limit on the cpuX for userspace. Each cpuidle governor in Linux select which idle state to enter based on this CPU resume latency in their idle task.
The per-CPU PM QoS API can be used to control this CPU's idle state selection and limit just enter the shallowest idle state to low the delay when wake up from by setting strict resume latency (zero value).
Signed-off-by: Huisong Li <lihuisong@huawei.com> Acked-by: Morten Brørup <mb@smartsharesystems.com> Acked-by: Chengwen Feng <fengchengwen@huawei.com> Acked-by: Konstantin Ananyev <konstantin.ananyev@huawei.com> Acked-by: Sivaprasad Tummala <sivaprasad.tummala@amd.com>
show more ...
|
da4d64d0 | 28-Oct-2024 |
Sivaprasad Tummala <sivaprasad.tummala@amd.com> |
power/amd_uncore: add uncore for AMD EPYC processors
This patch introduces driver support for power management of uncore components in AMD EPYC processors.
Signed-off-by: Sivaprasad Tummala <sivapr
power/amd_uncore: add uncore for AMD EPYC processors
This patch introduces driver support for power management of uncore components in AMD EPYC processors.
Signed-off-by: Sivaprasad Tummala <sivaprasad.tummala@amd.com>
show more ...
|
ebe99d35 | 28-Oct-2024 |
Sivaprasad Tummala <sivaprasad.tummala@amd.com> |
power: refactor uncore power management
This patch refactors the power management library, addressing uncore power management. The primary changes involve the creation of dedicated directories for e
power: refactor uncore power management
This patch refactors the power management library, addressing uncore power management. The primary changes involve the creation of dedicated directories for each driver within 'drivers/power/uncore/*'. The adjustment of meson.build files enables the selective activation of individual drivers.
This refactor significantly improves code organization, enhances clarity and boosts maintainability. It lays the foundation for more focused development on individual drivers and facilitates seamless integration of future enhancements, particularly the AMD uncore driver.
Signed-off-by: Sivaprasad Tummala <sivaprasad.tummala@amd.com> Acked-by: Huisong Li <lihuisong@huawei.com>
show more ...
|
259f6f78 | 27-Oct-2024 |
Stephen Hemminger <stephen@networkplumber.org> |
log: colorize log output
Like dmesg, colorize the log output (unless redirected to file). Timestamp is green, the subsystem is in yellow and the message is red if urgent, boldface if an error, and n
log: colorize log output
Like dmesg, colorize the log output (unless redirected to file). Timestamp is green, the subsystem is in yellow and the message is red if urgent, boldface if an error, and normal for info and debug messages.
The default is to not use color since it may disturb automatic tests and other embedded usage.
Note: add fileno() and isatty() to the Windows wrapper.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> Acked-by: Morten Brørup <mb@smartsharesystems.com> Acked-by: Bruce Richardson <bruce.richardson@intel.com> Acked-by: Chengwen Feng <fengchengwen@huawei.com>
show more ...
|
62ae1149 | 27-Oct-2024 |
Stephen Hemminger <stephen@networkplumber.org> |
log: add timestamp option
When debugging driver or startup issues, it is useful to have a timestamp on each message printed. The messages in syslog already have a timestamp, but often syslog is not
log: add timestamp option
When debugging driver or startup issues, it is useful to have a timestamp on each message printed. The messages in syslog already have a timestamp, but often syslog is not available during testing.
There are multiple timestamp formats similar to Linux dmesg. The default is time relative since startup (when first step of logging initialization is done by constructor). Other alternative formats are delta, ctime, reltime and iso formats.
Example: $ dpdk-testpmd --log-timestamp -- -i [ 0.008610] EAL: Detected CPU lcores: 8 [ 0.008634] EAL: Detected NUMA nodes: 1 [ 0.008792] EAL: Detected static linkage of DPDK [ 0.010620] EAL: Multi-process socket /var/run/dpdk/rte/mp_socket [ 0.012618] EAL: Selected IOVA mode 'VA' [ 0.016675] testpmd: No probed ethernet devices Interactive-mode selected
Note: Windows does not have localtime_r but it does have a similar function that can be used instead. Add it to rte_os_shim.h.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> Acked-by: Morten Brørup <mb@smartsharesystems.com> Acked-by: Bruce Richardson <bruce.richardson@intel.com>
show more ...
|
98513036 | 27-Oct-2024 |
Stephen Hemminger <stephen@networkplumber.org> |
log: rework syslog handling
Refactor how syslog is handled, make it common to Linux and FreeBSD The syslog facility property is better handled in lib/log rather than in eal. This also adds syslog su
log: rework syslog handling
Refactor how syslog is handled, make it common to Linux and FreeBSD The syslog facility property is better handled in lib/log rather than in eal. This also adds syslog support to FreeBSD.
Log to syslog only if option is specified. If no --syslog is given then use only standard error.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> Acked-by: Morten Brørup <mb@smartsharesystems.com> Acked-by: Bruce Richardson <bruce.richardson@intel.com> Acked-by: Chengwen Feng <fengchengwen@huawei.com>
show more ...
|
776d4753 | 25-Oct-2024 |
Mattias Rönnblom <mattias.ronnblom@ericsson.com> |
doc: add lcore variables guide
Add lcore variables programmer's guide. This guide gives both an overview of the API, its implementation, and alternatives to the use of lcore variables for maintainin
doc: add lcore variables guide
Add lcore variables programmer's guide. This guide gives both an overview of the API, its implementation, and alternatives to the use of lcore variables for maintaining per-lcore id data.
It has pictures, too.
Signed-off-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com> Reviewed-by: Luka Jankovic <luka.jankovic@ericsson.com>
show more ...
|
5bce9bed | 25-Oct-2024 |
Mattias Rönnblom <mattias.ronnblom@ericsson.com> |
eal: add static per-lcore memory allocation facility
Introduce DPDK per-lcore id variables, or lcore variables for short.
An lcore variable has one value for every current and future lcore id-equip
eal: add static per-lcore memory allocation facility
Introduce DPDK per-lcore id variables, or lcore variables for short.
An lcore variable has one value for every current and future lcore id-equipped thread.
The primary <rte_lcore_var.h> use case is for statically allocating small, frequently-accessed data structures, for which one instance should exist for each lcore.
Lcore variables are similar to thread-local storage (TLS, e.g., C11 _Thread_local), but decoupling the values' life time with that of the threads.
Lcore variables are also similar in terms of functionality provided by FreeBSD kernel's DPCPU_*() family of macros and the associated build-time machinery. DPCPU uses linker scripts, which effectively prevents the reuse of its, otherwise seemingly viable, approach.
The currently-prevailing way to solve the same problem as lcore variables is to keep a module's per-lcore data as RTE_MAX_LCORE-sized array of cache-aligned, RTE_CACHE_GUARDed structs. The benefit of lcore variables over this approach is that data related to the same lcore now is close (spatially, in memory), rather than data used by the same module, which in turn avoid excessive use of padding, polluting caches with unused data.
Signed-off-by: Mattias Rönnblom <mattias.ronnblom@ericsson.com> Acked-by: Morten Brørup <mb@smartsharesystems.com> Acked-by: Konstantin Ananyev <konstantin.ananyev@huawei.com> Acked-by: Chengwen Feng <fengchengwen@huawei.com> Acked-by: Stephen Hemminger <stephen@networkplumber.org>
show more ...
|
af154d7a | 24-Oct-2024 |
Alexander Kozyrev <akozyrev@nvidia.com> |
net/mlx5: support jump to flow table index action
Implement RTE_FLOW_ACTION_TYPE_JUMP_TO_TABLE_INDEX action. Create the hardware steering jump to matcher action, associated with the template matcher
net/mlx5: support jump to flow table index action
Implement RTE_FLOW_ACTION_TYPE_JUMP_TO_TABLE_INDEX action. Create the hardware steering jump to matcher action, associated with the template matcher. Use this action and provide the rule index as an offset in the matcher. Note that it is only supported by the isolated matcher, i.e. the table insertion type is by index with pattern.
Signed-off-by: Alexander Kozyrev <akozyrev@nvidia.com> Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
show more ...
|
9ac91e2f | 18-Oct-2024 |
Robin Jarry <rjarry@redhat.com> |
ipsec: use IPv6 address structure
Update rte_ipsec_sadv6_key to use rte_ipv6_addr structures instead of uint8_t[16] arrays.
Signed-off-by: Robin Jarry <rjarry@redhat.com> |
51a639ca | 18-Mar-2024 |
Chengwen Feng <fengchengwen@huawei.com> |
argparse: fix hyphens in doc
With the line in rst file: The single mode: "--aaa" or "-a". corresponding line in html doc: The single mode: -aaa or -a. the two hyphens (--aaa) become one (-aaa).
A
argparse: fix hyphens in doc
With the line in rst file: The single mode: "--aaa" or "-a". corresponding line in html doc: The single mode: -aaa or -a. the two hyphens (--aaa) become one (-aaa).
According to [1], this commit uses the backquote (``xxx``) to fix it. And for consistency, use this format for all arguments.
[1] https://stackoverflow.com/questions/51075907/display-two-dashes-in-rst-file
Fixes: e3e579f5bab5 ("argparse: introduce argparse library") Cc: stable@dpdk.org
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com> Reviewed-by: Dengdui Huang <huangdengdui@huawei.com> Acked-by: Jie Hai <haijie1@huawei.com> Acked-by: Stephen Hemminger <stephen@networkplumber.org>
show more ...
|
6f3dbd30 | 20-Sep-2024 |
Bruce Richardson <bruce.richardson@intel.com> |
build: increase minimum meson version to 0.57
In order to work around some deprecated functions in meson, we need to increase meson version. Increasing to 0.57 to also gain support for other useful
build: increase minimum meson version to 0.57
In order to work around some deprecated functions in meson, we need to increase meson version. Increasing to 0.57 to also gain support for other useful features for us in DPDK. Changes of interest to DPDK include:
* Use get_external_property instead of get_cross_property * Ability to use a VERSION file rather than hacking it with scripting * Ability to set built-in options in cross-build files * Ability to set pkg_config_libdir in cross-build files
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com> Reviewed-by: Robin Jarry <rjarry@redhat.com> Tested-by: Ferruh Yigit <ferruh.yigit@amd.com> Acked-by: Chengwen Feng <fengchengwen@huawei.com>
show more ...
|
e0d947a1 | 04-Oct-2024 |
Ferruh Yigit <ferruh.yigit@amd.com> |
ethdev: convert string initialization
gcc 15 experimental [1], with -Wextra flag, gives warning in variable initialization as string [2].
The warning has a point when initialized variable is intend
ethdev: convert string initialization
gcc 15 experimental [1], with -Wextra flag, gives warning in variable initialization as string [2].
The warning has a point when initialized variable is intended to use as string, since assignment is missing the required null terminator for this case. But warning is useless for our usecase.
In this patch only updated a few instance to show the issue, there are many instances to fix, if we prefer to go this way. Other option is to disable warning but it can be useful for actual string usecases, so I prefer to keep it.
Converted string initialization to array initialization.
[1] gcc (GCC) 15.0.0 20241003 (experimental)
[2] ../lib/ethdev/rte_flow.h:906:36: error: initializer-string for array of ‘unsigned char’ is too long [-Werror=unterminated-string-initialization] 906 | .hdr.dst_addr.addr_bytes = "\xff\xff\xff\xff\xff\xff", | ^~~~~~~~~~~~~~~~~~~~~~~~~~
../lib/ethdev/rte_flow.h:907:36: error: initializer-string for array of ‘unsigned char’ is too long [-Werror=unterminated-string-initialization] 907 | .hdr.src_addr.addr_bytes = "\xff\xff\xff\xff\xff\xff", | ^~~~~~~~~~~~~~~~~~~~~~~~~~
../lib/ethdev/rte_flow.h:1009:25: error: initializer-string for array of ‘unsigned char’ is too long [-Werror=unterminated-string-initialization] 1009 | "\xff\xff\xff\xff\xff\xff\xff\xff" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../lib/ethdev/rte_flow.h:1012:25: error: initializer-string for array of ‘unsigned char’ is too long [-Werror=unterminated-string-initialization] 1012 | "\xff\xff\xff\xff\xff\xff\xff\xff" | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../lib/ethdev/rte_flow.h:1135:20: error: initializer-string for array of ‘unsigned char’ is too long [-Werror=unterminated-string-initialization] 1135 | .hdr.vni = "\xff\xff\xff", | ^~~~~~~~~~~~~~
Signed-off-by: Ferruh Yigit <ferruh.yigit@amd.com> Acked-by: Morten Brørup <mb@smartsharesystems.com> Acked-by: Bruce Richardson <bruce.richardson@intel.com> Acked-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru> Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
show more ...
|
933f18db | 25-Sep-2024 |
Alexander Kozyrev <akozyrev@nvidia.com> |
ethdev: add flow rule by index with pattern
Add a new API to enqueue flow rule creation by index with pattern. The new template table rules insertion type, index-based insertion with pattern, requir
ethdev: add flow rule by index with pattern
Add a new API to enqueue flow rule creation by index with pattern. The new template table rules insertion type, index-based insertion with pattern, requires a new flow rule creation function with both rule index and pattern provided. Packets will match on the provided pattern at the provided index.
In testpmd, allow to specify both the rule index and the pattern in the flow rule creation command line parameters. Both are needed for rte_flow_async_create_by_index_with_pattern().
flow queue 0 create 0 template_table 2 rule_index 5 pattern_template 0 actions_template 0 postpone no pattern eth / end actions count / queue index 1 / end
Signed-off-by: Alexander Kozyrev <akozyrev@nvidia.com> Acked-by: Ori Kam <orika@nvidia.com>
show more ...
|
070db97e | 15-Oct-2024 |
Pavan Nikhilesh <pbhagavatula@marvell.com> |
graph: support node xstats
Add ability for nodes to advertise xstat counters during registration and increment them in fastpath. Add support for retrieving/printing stats for node specific counters
graph: support node xstats
Add ability for nodes to advertise xstat counters during registration and increment them in fastpath. Add support for retrieving/printing stats for node specific counters using rte_graph_cluster_stats_get(). Add rte_node_xstat_increment() API to increment node specific counters.
Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com> Acked-by: Kiran Kumar K <kirankumark@marvell.com> Reviewed-by: Robin Jarry <rjarry@redhat.com> Acked-by: Jerin Jacob <jerinj@marvell.com>
show more ...
|
591d38cc | 01-Jul-2024 |
Nicolas Chautru <nicolas.chautru@intel.com> |
bbdev: add k0 parameter for LDPC decoder
In latest 3GPP 38.212, the k0 value is not necessarily directly derived from rv_index, in that case a value can be provided in API. When this value is non nu
bbdev: add k0 parameter for LDPC decoder
In latest 3GPP 38.212, the k0 value is not necessarily directly derived from rv_index, in that case a value can be provided in API. When this value is non null this would override the value which would be computed purely from rv_index.
Signed-off-by: Nicolas Chautru <nicolas.chautru@intel.com> Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com> Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
show more ...
|
aae98b8c | 04-Oct-2024 |
Aakash Sasidharan <asasidharan@marvell.com> |
ipsec: allow stateless IPsec processing
Introduce stateless packet preparation API for IPsec processing. The new API would allow preparation of IPsec packets without altering the internal state of a
ipsec: allow stateless IPsec processing
Introduce stateless packet preparation API for IPsec processing. The new API would allow preparation of IPsec packets without altering the internal state of an IPsec session.
For outbound IPsec processing, the change enables user to provide sequence number to be used for the IPsec operation.
Signed-off-by: Aakash Sasidharan <asasidharan@marvell.com> Acked-by: Konstantin Ananyev <konstantin.ananyev@huawei.com> Acked-by: Akhil Goyal <gakhil@marvell.com>
show more ...
|
8bd4315c | 04-Oct-2024 |
Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com> |
cryptodev: add EdDSA asymmetric algorithm
Add support for asymmetric EdDSA in cryptodev, as referenced in RFC: https://datatracker.ietf.org/doc/html/rfc8032
Signed-off-by: Gowrishankar Muthukrishna
cryptodev: add EdDSA asymmetric algorithm
Add support for asymmetric EdDSA in cryptodev, as referenced in RFC: https://datatracker.ietf.org/doc/html/rfc8032
Signed-off-by: Gowrishankar Muthukrishnan <gmuthukrishn@marvell.com> Acked-by: Arkadiusz Kusztal <arkadiuszx.kusztal@intel.com> Acked-by: Akhil Goyal <gakhil@marvell.com>
show more ...
|
4ade669c | 07-Oct-2024 |
Pavan Nikhilesh <pbhagavatula@marvell.com> |
eventdev: add event pre-schedule hint
Add a new eventdev API to provide a hint to the eventdev PMD to pre-schedule the next event into the event port, without releasing the current flow context. Eve
eventdev: add event pre-schedule hint
Add a new eventdev API to provide a hint to the eventdev PMD to pre-schedule the next event into the event port, without releasing the current flow context. Event device that support this feature advertises the capability using the RTE_EVENT_DEV_CAP_PRESCHEDULE_EXPLICIT capability flag.
Application can invoke `rte_event_port_preschedule` to hint the PMD, if event device does not support this feature it is treated as a no-op.
Signed-off-by: Pavan Nikhilesh <pbhagavatula@marvell.com> Acked-by: Jerin Jacob <jerinj@marvell.com>
show more ...
|