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 #ifdef CONFIG_QED_LL2
30fc831825SYuval Mintz extern const struct qed_ll2_ops qed_ll2_ops_pass;
31fc831825SYuval Mintz #endif
32fc831825SYuval Mintz 
33fc831825SYuval Mintz #if IS_ENABLED(CONFIG_QED_ISCSI)
343587cb87STomer Tayar int qed_iscsi_alloc(struct qed_hwfn *p_hwfn);
35fc831825SYuval Mintz 
363587cb87STomer Tayar void qed_iscsi_setup(struct qed_hwfn *p_hwfn);
37fc831825SYuval Mintz 
383587cb87STomer Tayar void qed_iscsi_free(struct qed_hwfn *p_hwfn);
392f2b2614SMintz, Yuval 
402f2b2614SMintz, Yuval /**
412f2b2614SMintz, Yuval  * @brief - Fills provided statistics struct with statistics.
422f2b2614SMintz, Yuval  *
432f2b2614SMintz, Yuval  * @param cdev
442f2b2614SMintz, Yuval  * @param stats - points to struct that will be filled with statistics.
452f2b2614SMintz, Yuval  */
462f2b2614SMintz, Yuval void qed_get_protocol_stats_iscsi(struct qed_dev *cdev,
472f2b2614SMintz, Yuval 				  struct qed_mcp_iscsi_stats *stats);
48fc831825SYuval Mintz #else /* IS_ENABLED(CONFIG_QED_ISCSI) */
493587cb87STomer Tayar static inline int qed_iscsi_alloc(struct qed_hwfn *p_hwfn)
503587cb87STomer Tayar {
513587cb87STomer Tayar 	return -EINVAL;
523587cb87STomer Tayar }
533587cb87STomer Tayar 
543587cb87STomer Tayar static inline void qed_iscsi_setup(struct qed_hwfn *p_hwfn) {}
553587cb87STomer Tayar 
563587cb87STomer Tayar static inline void qed_iscsi_free(struct qed_hwfn *p_hwfn) {}
573587cb87STomer Tayar 
582f2b2614SMintz, Yuval static inline void
592f2b2614SMintz, Yuval qed_get_protocol_stats_iscsi(struct qed_dev *cdev,
602f2b2614SMintz, Yuval 			     struct qed_mcp_iscsi_stats *stats) {}
61fc831825SYuval Mintz #endif /* IS_ENABLED(CONFIG_QED_ISCSI) */
62fc831825SYuval Mintz 
63fc831825SYuval Mintz #endif
64