cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

qed_nvmetcp.h (2296B)


      1/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) */
      2/* Copyright 2021 Marvell. All rights reserved. */
      3
      4#ifndef _QED_NVMETCP_H
      5#define _QED_NVMETCP_H
      6
      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 0
     23#define QED_TCP_TWO_MSL_TIMER 4000
     24#define QED_TCP_HALF_WAY_CLOSE_TIMEOUT 10
     25#define QED_TCP_MAX_FIN_RT 2
     26#define QED_TCP_SWS_TIMER 5000
     27
     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#endif