瀏覽代碼

qcacmn: Add wrappers to abtsract OS API's

Add wrapper API's to abstract various OS API's
related to network-device.

Change-Id: I0c8bc9091d32965a90025b9e7738ab6cfdc39d14
Debasis Das 4 年之前
父節點
當前提交
d5b64eab69
共有 3 個文件被更改,包括 102 次插入2 次删除
  1. 34 0
      qdf/inc/qdf_net_if.h
  2. 37 1
      qdf/linux/src/i_qdf_net_if.h
  3. 31 1
      qdf/linux/src/qdf_net_if.c

+ 34 - 0
qdf/inc/qdf_net_if.h

@@ -41,12 +41,46 @@ struct qdf_net_if;
  */
 QDF_STATUS
 qdf_net_if_create_dummy_if(struct qdf_net_if *nif);
+
+/**
+ * qdf_net_if_get_dev_by_name() - Find a network device by its name
+ * @nif_name: network device name
+ *
+ * This function retrieves the network device by its name
+ *
+ * Return: qdf network device
+ */
+struct qdf_net_if *
+qdf_net_if_get_dev_by_name(char *nif_name);
+
+/**
+ * qdf_net_if_release_dev() - Release reference to network device
+ * @nif: network device
+ *
+ * This function releases reference to the network device
+ *
+ * Return: QDF_STATUS_SUCCESS on success
+ */
+QDF_STATUS
+qdf_net_if_release_dev(struct qdf_net_if *nif);
 #else
 static inline QDF_STATUS
 qdf_net_if_create_dummy_if(struct qdf_net_if *nif)
 {
 	return __qdf_net_if_create_dummy_if(nif);
 }
+
+static inline struct qdf_net_if *
+qdf_net_if_get_dev_by_name(char *nif_name)
+{
+	return __qdf_net_if_get_dev_by_name(nif_name);
+}
+
+static inline QDF_STATUS
+qdf_net_if_release_dev(struct qdf_net_if *nif)
+{
+	return __qdf_net_if_release_dev(nif);
+}
 #endif
 
 /**

+ 37 - 1
qdf/linux/src/i_qdf_net_if.h

@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2019 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2019-2020 The Linux Foundation. All rights reserved.
  *
  * Permission to use, copy, modify, and/or distribute this software for
  * any purpose with or without fee is hereby granted, provided that the
@@ -48,4 +48,40 @@ __qdf_net_if_create_dummy_if(struct qdf_net_if *nif)
 
 	return qdf_status_from_os_return(ret);
 }
+
+/**
+ * qdf_net_if_get_dev_by_name() - Find a network device by its name
+ * @nif_name: network device name
+ *
+ * This function retrieves the network device by its name
+ *
+ * Return: qdf network device
+ */
+static inline struct qdf_net_if *
+__qdf_net_if_get_dev_by_name(char *nif_name)
+{
+	if (!nif_name)
+		return NULL;
+
+	return ((struct qdf_net_if *)dev_get_by_name(&init_net, nif_name));
+}
+
+/**
+ * qdf_net_if_release_dev() - Release reference to network device
+ * @nif: network device
+ *
+ * This function releases reference to the network device
+ *
+ * Return: QDF_STATUS_SUCCESS on success
+ */
+static inline QDF_STATUS
+__qdf_net_if_release_dev(struct qdf_net_if  *nif)
+{
+	if (!nif)
+		return QDF_STATUS_E_INVAL;
+
+	dev_put((struct net_device *)nif);
+
+	return QDF_STATUS_SUCCESS;
+}
 #endif /*__I_QDF_NET_IF_H */

+ 31 - 1
qdf/linux/src/qdf_net_if.c

@@ -20,7 +20,6 @@
  * DOC: qdf_net_if
  * This file provides OS dependent network interface related APIs
  */
-
 #include "qdf_net_if.h"
 #include "qdf_types.h"
 #include "qdf_module.h"
@@ -57,3 +56,34 @@ char *qdf_net_if_get_devname(struct qdf_net_if *nif)
 }
 
 qdf_export_symbol(qdf_net_if_get_devname);
+
+/**
+ * qdf_net_if_get_dev_by_name() - Find a network device by its name
+ * @nif_name: network device name
+ *
+ * This function retrieves the network device by its name
+ *
+ * Return: qdf network device
+ */
+struct qdf_net_if *qdf_net_if_get_dev_by_name(char *nif_name)
+{
+	return __qdf_net_if_get_dev_by_name(nif_name);
+}
+
+qdf_export_symbol(qdf_net_if_get_dev_by_name);
+
+/**
+ * qdf_net_if_release_dev() - Release reference to network device
+ * @nif: network device
+ *
+ * This function releases reference to the network device
+ *
+ * Return: QDF_STATUS_SUCCESS on success
+ */
+QDF_STATUS
+qdf_net_if_release_dev(struct qdf_net_if  *nif)
+{
+	return __qdf_net_if_release_dev(nif);
+}
+
+qdf_export_symbol(qdf_net_if_release_dev);