rawdev: allow devices to skip extra memory allocation
authorBruce Richardson <bruce.richardson@intel.com>
Tue, 2 Jul 2019 14:12:22 +0000 (15:12 +0100)
committerThomas Monjalon <thomas@monjalon.net>
Thu, 4 Jul 2019 07:33:59 +0000 (09:33 +0200)
Some device drivers want to allocate their own private memory, and should
be allowed to do so. Therefore skip memory allocation and associated error
checks if zero-length private memory is requested.

While adjusting the code for new indent level, fix incorrect error
message.

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Shreyansh Jain <shreyansh.jain@nxp.com>
Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com>
lib/librte_rawdev/rte_rawdev.c
lib/librte_rawdev/rte_rawdev_pmd.h

index 15de2d4..b6f1e1c 100644 (file)
@@ -496,16 +496,17 @@ rte_rawdev_pmd_allocate(const char *name, size_t dev_priv_size, int socket_id)
 
        rawdev = &rte_rawdevs[dev_id];
 
-       rawdev->dev_private = rte_zmalloc_socket("rawdev private",
+       if (dev_priv_size > 0) {
+               rawdev->dev_private = rte_zmalloc_socket("rawdev private",
                                     dev_priv_size,
                                     RTE_CACHE_LINE_SIZE,
                                     socket_id);
-       if (!rawdev->dev_private) {
-               RTE_RDEV_ERR("Unable to allocate memory to Skeleton dev");
-               return NULL;
+               if (!rawdev->dev_private) {
+                       RTE_RDEV_ERR("Unable to allocate memory for rawdev");
+                       return NULL;
+               }
        }
 
-
        rawdev->dev_id = dev_id;
        rawdev->socket_id = socket_id;
        rawdev->started = 0;
index aa6af4a..cb3555a 100644 (file)
@@ -568,7 +568,9 @@ struct rte_rawdev_ops {
  * @param name
  *   Unique identifier name for each device
  * @param dev_private_size
- *   Private data allocated within rte_rawdev object.
+ *   Size of private data memory allocated within rte_rawdev object.
+ *   Set to 0 to disable internal memory allocation and allow for
+ *   self-allocation.
  * @param socket_id
  *   Socket to allocate resources on.
  * @return