11f4d4ed6SAlexander Lobakin /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) */
2fc831825SYuval Mintz /* QLogic qed NIC Driver
3e8f1cb50SMintz, Yuval  * Copyright (c) 2015-2017  QLogic Corporation
4663eacd8SAlexander Lobakin  * Copyright (c) 2019-2020 Marvell International Ltd.
5fc831825SYuval Mintz  */
6fc831825SYuval Mintz 
7fc831825SYuval Mintz #ifndef _QED_ISCSI_H
8fc831825SYuval Mintz #define _QED_ISCSI_H
9fc831825SYuval Mintz #include <linux/types.h>
10fc831825SYuval Mintz #include <linux/list.h>
11fc831825SYuval Mintz #include <linux/slab.h>
12fc831825SYuval Mintz #include <linux/spinlock.h>
13fc831825SYuval Mintz #include <linux/qed/tcp_common.h>
14fc831825SYuval Mintz #include <linux/qed/qed_iscsi_if.h>
15fc831825SYuval Mintz #include <linux/qed/qed_chain.h>
16fc831825SYuval Mintz #include "qed.h"
17fc831825SYuval Mintz #include "qed_hsi.h"
18fc831825SYuval Mintz #include "qed_mcp.h"
19fc831825SYuval Mintz #include "qed_sp.h"
20fc831825SYuval Mintz 
21fc831825SYuval Mintz struct qed_iscsi_info {
22fc831825SYuval Mintz 	spinlock_t lock; /* Connection resources. */
23fc831825SYuval Mintz 	struct list_head free_list;
24fc831825SYuval Mintz 	u16 max_num_outstanding_tasks;
25fc831825SYuval Mintz 	void *event_context;
26fc831825SYuval Mintz 	iscsi_event_cb_t event_cb;
27fc831825SYuval Mintz };
28fc831825SYuval Mintz 
29fc831825SYuval Mintz #if IS_ENABLED(CONFIG_QED_ISCSI)
303587cb87STomer Tayar int qed_iscsi_alloc(struct qed_hwfn *p_hwfn);
31fc831825SYuval Mintz 
323587cb87STomer Tayar void qed_iscsi_setup(struct qed_hwfn *p_hwfn);
33fc831825SYuval Mintz 
343587cb87STomer Tayar void qed_iscsi_free(struct qed_hwfn *p_hwfn);
352f2b2614SMintz, Yuval 
362f2b2614SMintz, Yuval /**
37*19198e4eSPrabhakar Kushwaha  * qed_get_protocol_stats_iscsi(): Fills provided statistics
38*19198e4eSPrabhakar Kushwaha  *                                 struct with statistics.
392f2b2614SMintz, Yuval  *
40*19198e4eSPrabhakar Kushwaha  * @cdev: Qed dev pointer.
41*19198e4eSPrabhakar Kushwaha  * @stats: Points to struct that will be filled with statistics.
42*19198e4eSPrabhakar Kushwaha  *
43*19198e4eSPrabhakar Kushwaha  * Return: Void.
442f2b2614SMintz, Yuval  */
452f2b2614SMintz, Yuval void qed_get_protocol_stats_iscsi(struct qed_dev *cdev,
462f2b2614SMintz, Yuval 				  struct qed_mcp_iscsi_stats *stats);
47fc831825SYuval Mintz #else /* IS_ENABLED(CONFIG_QED_ISCSI) */
483587cb87STomer Tayar static inline int qed_iscsi_alloc(struct qed_hwfn *p_hwfn)
493587cb87STomer Tayar {
503587cb87STomer Tayar 	return -EINVAL;
513587cb87STomer Tayar }
523587cb87STomer Tayar 
533587cb87STomer Tayar static inline void qed_iscsi_setup(struct qed_hwfn *p_hwfn) {}
543587cb87STomer Tayar 
553587cb87STomer Tayar static inline void qed_iscsi_free(struct qed_hwfn *p_hwfn) {}
563587cb87STomer Tayar 
572f2b2614SMintz, Yuval static inline void
582f2b2614SMintz, Yuval qed_get_protocol_stats_iscsi(struct qed_dev *cdev,
592f2b2614SMintz, Yuval 			     struct qed_mcp_iscsi_stats *stats) {}
60fc831825SYuval Mintz #endif /* IS_ENABLED(CONFIG_QED_ISCSI) */
61fc831825SYuval Mintz 
62fc831825SYuval Mintz #endif
63