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 4fc831825SYuval Mintz */ 5fc831825SYuval Mintz 6fc831825SYuval Mintz #ifndef _QED_ISCSI_H 7fc831825SYuval Mintz #define _QED_ISCSI_H 8fc831825SYuval Mintz #include <linux/types.h> 9fc831825SYuval Mintz #include <linux/list.h> 10fc831825SYuval Mintz #include <linux/slab.h> 11fc831825SYuval Mintz #include <linux/spinlock.h> 12fc831825SYuval Mintz #include <linux/qed/tcp_common.h> 13fc831825SYuval Mintz #include <linux/qed/qed_iscsi_if.h> 14fc831825SYuval Mintz #include <linux/qed/qed_chain.h> 15fc831825SYuval Mintz #include "qed.h" 16fc831825SYuval Mintz #include "qed_hsi.h" 17fc831825SYuval Mintz #include "qed_mcp.h" 18fc831825SYuval Mintz #include "qed_sp.h" 19fc831825SYuval Mintz 20fc831825SYuval Mintz struct qed_iscsi_info { 21fc831825SYuval Mintz spinlock_t lock; /* Connection resources. */ 22fc831825SYuval Mintz struct list_head free_list; 23fc831825SYuval Mintz u16 max_num_outstanding_tasks; 24fc831825SYuval Mintz void *event_context; 25fc831825SYuval Mintz iscsi_event_cb_t event_cb; 26fc831825SYuval Mintz }; 27fc831825SYuval Mintz 28fc831825SYuval Mintz #ifdef CONFIG_QED_LL2 29fc831825SYuval Mintz extern const struct qed_ll2_ops qed_ll2_ops_pass; 30fc831825SYuval Mintz #endif 31fc831825SYuval Mintz 32fc831825SYuval Mintz #if IS_ENABLED(CONFIG_QED_ISCSI) 333587cb87STomer Tayar int qed_iscsi_alloc(struct qed_hwfn *p_hwfn); 34fc831825SYuval Mintz 353587cb87STomer Tayar void qed_iscsi_setup(struct qed_hwfn *p_hwfn); 36fc831825SYuval Mintz 373587cb87STomer Tayar void qed_iscsi_free(struct qed_hwfn *p_hwfn); 382f2b2614SMintz, Yuval 392f2b2614SMintz, Yuval /** 402f2b2614SMintz, Yuval * @brief - Fills provided statistics struct with statistics. 412f2b2614SMintz, Yuval * 422f2b2614SMintz, Yuval * @param cdev 432f2b2614SMintz, Yuval * @param stats - points to struct that will be filled with statistics. 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