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

sdma_txreq.h (2412B)


      1/* SPDX-License-Identifier: GPL-2.0 or BSD-3-Clause */
      2/*
      3 * Copyright(c) 2016 Intel Corporation.
      4 */
      5
      6#ifndef HFI1_SDMA_TXREQ_H
      7#define HFI1_SDMA_TXREQ_H
      8
      9/* increased for AHG */
     10#define NUM_DESC 6
     11
     12/*
     13 * struct sdma_desc - canonical fragment descriptor
     14 *
     15 * This is the descriptor carried in the tx request
     16 * corresponding to each fragment.
     17 *
     18 */
     19struct sdma_desc {
     20	/* private:  don't use directly */
     21	u64 qw[2];
     22};
     23
     24/**
     25 * struct sdma_txreq - the sdma_txreq structure (one per packet)
     26 * @list: for use by user and by queuing for wait
     27 *
     28 * This is the representation of a packet which consists of some
     29 * number of fragments.   Storage is provided to within the structure.
     30 * for all fragments.
     31 *
     32 * The storage for the descriptors are automatically extended as needed
     33 * when the currently allocation is exceeded.
     34 *
     35 * The user (Verbs or PSM) may overload this structure with fields
     36 * specific to their use by putting this struct first in their struct.
     37 * The method of allocation of the overloaded structure is user dependent
     38 *
     39 * The list is the only public field in the structure.
     40 *
     41 */
     42
     43#define SDMA_TXREQ_S_OK        0
     44#define SDMA_TXREQ_S_SENDERROR 1
     45#define SDMA_TXREQ_S_ABORTED   2
     46#define SDMA_TXREQ_S_SHUTDOWN  3
     47
     48/* flags bits */
     49#define SDMA_TXREQ_F_URGENT       0x0001
     50#define SDMA_TXREQ_F_AHG_COPY     0x0002
     51#define SDMA_TXREQ_F_USE_AHG      0x0004
     52#define SDMA_TXREQ_F_VIP          0x0010
     53
     54struct sdma_txreq;
     55typedef void (*callback_t)(struct sdma_txreq *, int);
     56
     57struct iowait;
     58struct sdma_txreq {
     59	struct list_head list;
     60	/* private: */
     61	struct sdma_desc *descp;
     62	/* private: */
     63	void *coalesce_buf;
     64	/* private: */
     65	struct iowait *wait;
     66	/* private: */
     67	callback_t                  complete;
     68#ifdef CONFIG_HFI1_DEBUG_SDMA_ORDER
     69	u64 sn;
     70#endif
     71	/* private: - used in coalesce/pad processing */
     72	u16                         packet_len;
     73	/* private: - down-counted to trigger last */
     74	u16                         tlen;
     75	/* private: */
     76	u16                         num_desc;
     77	/* private: */
     78	u16                         desc_limit;
     79	/* private: */
     80	u16                         next_descq_idx;
     81	/* private: */
     82	u16 coalesce_idx;
     83	/* private: flags */
     84	u16                         flags;
     85	/* private: */
     86	struct sdma_desc descs[NUM_DESC];
     87};
     88
     89static inline int sdma_txreq_built(struct sdma_txreq *tx)
     90{
     91	return tx->num_desc;
     92}
     93
     94#endif                          /* HFI1_SDMA_TXREQ_H */