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