~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/linux/qed/qed_iscsi_if.h

Version: ~ [ linux-6.11-rc3 ] ~ [ linux-6.10.4 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.45 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.104 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.164 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.223 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.281 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.319 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  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_ISCSI_IF_H
  8 #define _QED_ISCSI_IF_H
  9 #include <linux/types.h>
 10 #include <linux/qed/qed_if.h>
 11 
 12 typedef int (*iscsi_event_cb_t) (void *context,
 13                                  u8 fw_event_code, void *fw_handle);
 14 struct qed_iscsi_stats {
 15         u64 iscsi_rx_bytes_cnt;
 16         u64 iscsi_rx_packet_cnt;
 17         u64 iscsi_rx_new_ooo_isle_events_cnt;
 18         u32 iscsi_cmdq_threshold_cnt;
 19         u32 iscsi_rq_threshold_cnt;
 20         u32 iscsi_immq_threshold_cnt;
 21 
 22         u64 iscsi_rx_dropped_pdus_task_not_valid;
 23 
 24         u64 iscsi_rx_data_pdu_cnt;
 25         u64 iscsi_rx_r2t_pdu_cnt;
 26         u64 iscsi_rx_total_pdu_cnt;
 27 
 28         u64 iscsi_tx_go_to_slow_start_event_cnt;
 29         u64 iscsi_tx_fast_retransmit_event_cnt;
 30 
 31         u64 iscsi_tx_data_pdu_cnt;
 32         u64 iscsi_tx_r2t_pdu_cnt;
 33         u64 iscsi_tx_total_pdu_cnt;
 34 
 35         u64 iscsi_tx_bytes_cnt;
 36         u64 iscsi_tx_packet_cnt;
 37 };
 38 
 39 struct qed_dev_iscsi_info {
 40         struct qed_dev_info common;
 41 
 42         void __iomem *primary_dbq_rq_addr;
 43         void __iomem *secondary_bdq_rq_addr;
 44 
 45         u8 num_cqs;
 46 };
 47 
 48 struct qed_iscsi_id_params {
 49         u8 mac[ETH_ALEN];
 50         u32 ip[4];
 51         u16 port;
 52 };
 53 
 54 struct qed_iscsi_params_offload {
 55         u8 layer_code;
 56         dma_addr_t sq_pbl_addr;
 57         u32 initial_ack;
 58 
 59         struct qed_iscsi_id_params src;
 60         struct qed_iscsi_id_params dst;
 61         u16 vlan_id;
 62         u8 tcp_flags;
 63         u8 ip_version;
 64         u8 default_cq;
 65 
 66         u8 ka_max_probe_cnt;
 67         u8 dup_ack_theshold;
 68         u32 rcv_next;
 69         u32 snd_una;
 70         u32 snd_next;
 71         u32 snd_max;
 72         u32 snd_wnd;
 73         u32 rcv_wnd;
 74         u32 snd_wl1;
 75         u32 cwnd;
 76         u32 ss_thresh;
 77         u16 srtt;
 78         u16 rtt_var;
 79         u32 ts_recent;
 80         u32 ts_recent_age;
 81         u32 total_rt;
 82         u32 ka_timeout_delta;
 83         u32 rt_timeout_delta;
 84         u8 dup_ack_cnt;
 85         u8 snd_wnd_probe_cnt;
 86         u8 ka_probe_cnt;
 87         u8 rt_cnt;
 88         u32 flow_label;
 89         u32 ka_timeout;
 90         u32 ka_interval;
 91         u32 max_rt_time;
 92         u32 initial_rcv_wnd;
 93         u8 ttl;
 94         u8 tos_or_tc;
 95         u16 remote_port;
 96         u16 local_port;
 97         u16 mss;
 98         u8 snd_wnd_scale;
 99         u8 rcv_wnd_scale;
100         u16 da_timeout_value;
101         u8 ack_frequency;
102 };
103 
104 struct qed_iscsi_params_update {
105         u8 update_flag;
106 #define QED_ISCSI_CONN_HD_EN            BIT(0)
107 #define QED_ISCSI_CONN_DD_EN            BIT(1)
108 #define QED_ISCSI_CONN_INITIAL_R2T      BIT(2)
109 #define QED_ISCSI_CONN_IMMEDIATE_DATA   BIT(3)
110 
111         u32 max_seq_size;
112         u32 max_recv_pdu_length;
113         u32 max_send_pdu_length;
114         u32 first_seq_length;
115         u32 exp_stat_sn;
116 };
117 
118 #define MAX_TID_BLOCKS_ISCSI (512)
119 struct qed_iscsi_tid {
120         u32 size;               /* In bytes per task */
121         u32 num_tids_per_block;
122         u8 *blocks[MAX_TID_BLOCKS_ISCSI];
123 };
124 
125 struct qed_iscsi_cb_ops {
126         struct qed_common_cb_ops common;
127 };
128 
129 /**
130  * struct qed_iscsi_ops - qed iSCSI operations.
131  * @common:             common operations pointer
132  * @ll2:                light L2 operations pointer
133  * @fill_dev_info:      fills iSCSI specific information
134  *                      @param cdev
135  *                      @param info
136  *                      @return 0 on success, otherwise error value.
137  * @register_ops:       register iscsi operations
138  *                      @param cdev
139  *                      @param ops - specified using qed_iscsi_cb_ops
140  *                      @param cookie - driver private
141  * @start:              iscsi in FW
142  *                      @param cdev
143  *                      @param tasks - qed will fill information about tasks
144  *                      return 0 on success, otherwise error value.
145  * @stop:               iscsi in FW
146  *                      @param cdev
147  *                      return 0 on success, otherwise error value.
148  * @acquire_conn:       acquire a new iscsi connection
149  *                      @param cdev
150  *                      @param handle - qed will fill handle that should be
151  *                              used henceforth as identifier of the
152  *                              connection.
153  *                      @param p_doorbell - qed will fill the address of the
154  *                              doorbell.
155  *                      @return 0 on success, otherwise error value.
156  * @release_conn:       release a previously acquired iscsi connection
157  *                      @param cdev
158  *                      @param handle - the connection handle.
159  *                      @return 0 on success, otherwise error value.
160  * @offload_conn:       configures an offloaded connection
161  *                      @param cdev
162  *                      @param handle - the connection handle.
163  *                      @param conn_info - the configuration to use for the
164  *                              offload.
165  *                      @return 0 on success, otherwise error value.
166  * @update_conn:        updates an offloaded connection
167  *                      @param cdev
168  *                      @param handle - the connection handle.
169  *                      @param conn_info - the configuration to use for the
170  *                              offload.
171  *                      @return 0 on success, otherwise error value.
172  * @destroy_conn:       stops an offloaded connection
173  *                      @param cdev
174  *                      @param handle - the connection handle.
175  *                      @return 0 on success, otherwise error value.
176  * @clear_sq:           clear all task in sq
177  *                      @param cdev
178  *                      @param handle - the connection handle.
179  *                      @return 0 on success, otherwise error value.
180  * @get_stats:          iSCSI related statistics
181  *                      @param cdev
182  *                      @param stats - pointer to struck that would be filled
183  *                              we stats
184  *                      @return 0 on success, error otherwise.
185  * @change_mac:         Change MAC of interface
186  *                      @param cdev
187  *                      @param handle - the connection handle.
188  *                      @param mac - new MAC to configure.
189  *                      @return 0 on success, otherwise error value.
190  */
191 struct qed_iscsi_ops {
192         const struct qed_common_ops *common;
193 
194         const struct qed_ll2_ops *ll2;
195 
196         int (*fill_dev_info)(struct qed_dev *cdev,
197                              struct qed_dev_iscsi_info *info);
198 
199         void (*register_ops)(struct qed_dev *cdev,
200                              struct qed_iscsi_cb_ops *ops, void *cookie);
201 
202         int (*start)(struct qed_dev *cdev,
203                      struct qed_iscsi_tid *tasks,
204                      void *event_context, iscsi_event_cb_t async_event_cb);
205 
206         int (*stop)(struct qed_dev *cdev);
207 
208         int (*acquire_conn)(struct qed_dev *cdev,
209                             u32 *handle,
210                             u32 *fw_cid, void __iomem **p_doorbell);
211 
212         int (*release_conn)(struct qed_dev *cdev, u32 handle);
213 
214         int (*offload_conn)(struct qed_dev *cdev,
215                             u32 handle,
216                             struct qed_iscsi_params_offload *conn_info);
217 
218         int (*update_conn)(struct qed_dev *cdev,
219                            u32 handle,
220                            struct qed_iscsi_params_update *conn_info);
221 
222         int (*destroy_conn)(struct qed_dev *cdev, u32 handle, u8 abrt_conn);
223 
224         int (*clear_sq)(struct qed_dev *cdev, u32 handle);
225 
226         int (*get_stats)(struct qed_dev *cdev,
227                          struct qed_iscsi_stats *stats);
228 
229         int (*change_mac)(struct qed_dev *cdev, u32 handle, const u8 *mac);
230 };
231 
232 const struct qed_iscsi_ops *qed_get_iscsi_ops(void);
233 void qed_put_iscsi_ops(void);
234 #endif
235 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php