1  /*
2   * Copyright (c) 2016-2017,2020-2021 The Linux Foundation. All rights reserved.
3   * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved.
4   *
5   * Permission to use, copy, modify, and/or distribute this software for
6   * any purpose with or without fee is hereby granted, provided that the
7   * above copyright notice and this permission notice appear in all
8   * copies.
9   *
10   * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
11   * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
12   * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
13   * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
14   * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
15   * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
16   * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
17   * PERFORMANCE OF THIS SOFTWARE.
18   */
19  
20  
21  #ifndef _WLAN_OSIF_PRIV_H_
22  #define _WLAN_OSIF_PRIV_H_
23  
24  #include "qdf_net_if.h"
25  #include "wlan_cm_public_struct.h"
26  #include <qca_vendor.h>
27  
28  struct osif_scan_pdev;
29  struct osif_tdls_vdev;
30  
31  /**
32   * struct pdev_osif_priv - OS private structure
33   * @wiphy:            wiphy handle
34   * @legacy_osif_priv: legacy osif private handle
35   * @osif_scan:        Scan related data used by cfg80211 scan
36   * @nif:              pdev net device
37   * @osif_check_netdev_state: check driver internal netdev state
38   */
39  struct pdev_osif_priv {
40  	struct wiphy *wiphy;
41  	void *legacy_osif_priv;
42  	struct osif_scan_pdev *osif_scan;
43  	struct qdf_net_if *nif;
44  	int (*osif_check_netdev_state)(struct net_device *netdev);
45  };
46  
47  /**
48   * struct osif_cm_info - osif connection manager info
49   * @last_source: Last command request source
50   * @last_id: Last command from connection manager
51   * @cmd_id_lock: lock to update and read last command source
52   * @ext_priv: legacy data pointer.
53   */
54  struct osif_cm_info {
55  	enum wlan_cm_source last_source;
56  	wlan_cm_id last_id;
57  	struct qdf_spinlock cmd_id_lock;
58  	void *ext_priv;
59  };
60  
61  /**
62   * struct vdev_osif_priv - OS private structure of vdev
63   * @wdev:             wireless device handle
64   * @legacy_osif_priv: legacy osif private handle
65   * @osif_tdls: osif tdls info
66   * @cm_info:  osif connection manager info
67   */
68  struct vdev_osif_priv {
69  	struct wireless_dev *wdev;
70  	void *legacy_osif_priv;
71  	struct osif_tdls_vdev *osif_tdls;
72  	struct osif_cm_info cm_info;
73  };
74  
75  #endif
76