brintos

brintos / linux-shallow public Read only

0
0
Text · 2.2 KiB · e5e9d07 Raw
104 lines · c
1/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) */2/* Copyright 2021 Marvell. All rights reserved. */3 4#ifndef _QED_NVMETCP_H5#define _QED_NVMETCP_H6 7#include <linux/types.h>8#include <linux/list.h>9#include <linux/slab.h>10#include <linux/spinlock.h>11#include <linux/qed/tcp_common.h>12#include <linux/qed/qed_nvmetcp_if.h>13#include <linux/qed/qed_chain.h>14#include "qed.h"15#include "qed_hsi.h"16#include "qed_mcp.h"17#include "qed_sp.h"18 19#define QED_NVMETCP_FW_CQ_SIZE (4 * 1024)20 21/* tcp parameters */22#define QED_TCP_FLOW_LABEL 023#define QED_TCP_TWO_MSL_TIMER 400024#define QED_TCP_HALF_WAY_CLOSE_TIMEOUT 1025#define QED_TCP_MAX_FIN_RT 226#define QED_TCP_SWS_TIMER 500027 28struct qed_nvmetcp_info {29	spinlock_t lock; /* Connection resources. */30	struct list_head free_list;31	u16 max_num_outstanding_tasks;32	void *event_context;33	nvmetcp_event_cb_t event_cb;34};35 36struct qed_hash_nvmetcp_con {37	struct hlist_node node;38	struct qed_nvmetcp_conn *con;39};40 41struct qed_nvmetcp_conn {42	struct list_head list_entry;43	bool free_on_delete;44	u16 conn_id;45	u32 icid;46	u32 fw_cid;47	u8 layer_code;48	u8 offl_flags;49	u8 connect_mode;50	dma_addr_t sq_pbl_addr;51	struct qed_chain r2tq;52	struct qed_chain xhq;53	struct qed_chain uhq;54	u8 local_mac[6];55	u8 remote_mac[6];56	u8 ip_version;57	u8 ka_max_probe_cnt;58	u16 vlan_id;59	u16 tcp_flags;60	u32 remote_ip[4];61	u32 local_ip[4];62	u32 flow_label;63	u32 ka_timeout;64	u32 ka_interval;65	u32 max_rt_time;66	u8 ttl;67	u8 tos_or_tc;68	u16 remote_port;69	u16 local_port;70	u16 mss;71	u8 rcv_wnd_scale;72	u32 rcv_wnd;73	u32 cwnd;74	u8 update_flag;75	u8 default_cq;76	u8 abortive_dsconnect;77	u32 max_seq_size;78	u32 max_recv_pdu_length;79	u32 max_send_pdu_length;80	u32 first_seq_length;81	u16 physical_q0;82	u16 physical_q1;83	u16 nvmetcp_cccid_max_range;84	dma_addr_t nvmetcp_cccid_itid_table_addr;85};86 87#if IS_ENABLED(CONFIG_QED_NVMETCP)88int qed_nvmetcp_alloc(struct qed_hwfn *p_hwfn);89void qed_nvmetcp_setup(struct qed_hwfn *p_hwfn);90void qed_nvmetcp_free(struct qed_hwfn *p_hwfn);91 92#else /* IS_ENABLED(CONFIG_QED_NVMETCP) */93static inline int qed_nvmetcp_alloc(struct qed_hwfn *p_hwfn)94{95	return -EINVAL;96}97 98static inline void qed_nvmetcp_setup(struct qed_hwfn *p_hwfn) {}99static inline void qed_nvmetcp_free(struct qed_hwfn *p_hwfn) {}100 101#endif /* IS_ENABLED(CONFIG_QED_NVMETCP) */102 103#endif104