1 /* SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) */ 2 /* QLogic qed NIC Driver 3 * Copyright (c) 2015-2017 QLogic Corporation 4 * Copyright (c) 2019-2020 Marvell International Ltd. 5 */ 6 7 #ifndef _QED_FCOE_H 8 #define _QED_FCOE_H 9 #include <linux/types.h> 10 #include <linux/list.h> 11 #include <linux/slab.h> 12 #include <linux/spinlock.h> 13 #include <linux/qed/qed_fcoe_if.h> 14 #include <linux/qed/qed_chain.h> 15 #include "qed.h" 16 #include "qed_hsi.h" 17 #include "qed_mcp.h" 18 #include "qed_sp.h" 19 20 struct qed_fcoe_info { 21 spinlock_t lock; /* Connection resources. */ 22 struct list_head free_list; 23 }; 24 25 #if IS_ENABLED(CONFIG_QED_FCOE) 26 int qed_fcoe_alloc(struct qed_hwfn *p_hwfn); 27 28 void qed_fcoe_setup(struct qed_hwfn *p_hwfn); 29 30 void qed_fcoe_free(struct qed_hwfn *p_hwfn); 31 /** 32 * qed_get_protocol_stats_fcoe(): Fills provided statistics 33 * struct with statistics. 34 * 35 * @cdev: Qed dev pointer. 36 * @stats: Points to struct that will be filled with statistics. 37 * @is_atomic: Hint from the caller - if the func can sleep or not. 38 * 39 * Context: The function should not sleep in case is_atomic == true. 40 * Return: Void. 41 */ 42 void qed_get_protocol_stats_fcoe(struct qed_dev *cdev, 43 struct qed_mcp_fcoe_stats *stats, 44 bool is_atomic); 45 #else /* CONFIG_QED_FCOE */ 46 static inline int qed_fcoe_alloc(struct qed_hwfn *p_hwfn) 47 { 48 return -EINVAL; 49 } 50 51 static inline void qed_fcoe_setup(struct qed_hwfn *p_hwfn) {} 52 static inline void qed_fcoe_free(struct qed_hwfn *p_hwfn) {} 53 54 static inline void qed_get_protocol_stats_fcoe(struct qed_dev *cdev, 55 struct qed_mcp_fcoe_stats *stats, 56 bool is_atomic) 57 { 58 } 59 #endif /* CONFIG_QED_FCOE */ 60 61 #endif /* _QED_FCOE_H */ 62