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

pep.h (3233B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/*
      3 * File: pep.h
      4 *
      5 * Phonet Pipe End Point sockets definitions
      6 *
      7 * Copyright (C) 2008 Nokia Corporation.
      8 */
      9
     10#ifndef NET_PHONET_PEP_H
     11#define NET_PHONET_PEP_H
     12
     13struct pep_sock {
     14	struct pn_sock		pn_sk;
     15
     16	/* XXX: union-ify listening vs connected stuff ? */
     17	/* Listening socket stuff: */
     18	struct hlist_head	hlist;
     19
     20	/* Connected socket stuff: */
     21	struct sock		*listener;
     22	struct sk_buff_head	ctrlreq_queue;
     23#define PNPIPE_CTRLREQ_MAX	10
     24	atomic_t		tx_credits;
     25	int			ifindex;
     26	u16			peer_type;	/* peer type/subtype */
     27	u8			pipe_handle;
     28
     29	u8			rx_credits;
     30	u8			rx_fc;	/* RX flow control */
     31	u8			tx_fc;	/* TX flow control */
     32	u8			init_enable;	/* auto-enable at creation */
     33	u8			aligned;
     34};
     35
     36static inline struct pep_sock *pep_sk(struct sock *sk)
     37{
     38	return (struct pep_sock *)sk;
     39}
     40
     41extern const struct proto_ops phonet_stream_ops;
     42
     43/* Pipe protocol definitions */
     44struct pnpipehdr {
     45	u8			utid; /* transaction ID */
     46	u8			message_id;
     47	u8			pipe_handle;
     48	union {
     49		u8		state_after_connect;	/* connect request */
     50		u8		state_after_reset;	/* reset request */
     51		u8		error_code;		/* any response */
     52		u8		pep_type;		/* status indication */
     53		u8		data0;			/* anything else */
     54	};
     55	u8			data[];
     56};
     57#define other_pep_type		data[0]
     58
     59static inline struct pnpipehdr *pnp_hdr(struct sk_buff *skb)
     60{
     61	return (struct pnpipehdr *)skb_transport_header(skb);
     62}
     63
     64#define MAX_PNPIPE_HEADER (MAX_PHONET_HEADER + 4)
     65
     66enum {
     67	PNS_PIPE_CREATE_REQ = 0x00,
     68	PNS_PIPE_CREATE_RESP,
     69	PNS_PIPE_REMOVE_REQ,
     70	PNS_PIPE_REMOVE_RESP,
     71
     72	PNS_PIPE_DATA = 0x20,
     73	PNS_PIPE_ALIGNED_DATA,
     74
     75	PNS_PEP_CONNECT_REQ = 0x40,
     76	PNS_PEP_CONNECT_RESP,
     77	PNS_PEP_DISCONNECT_REQ,
     78	PNS_PEP_DISCONNECT_RESP,
     79	PNS_PEP_RESET_REQ,
     80	PNS_PEP_RESET_RESP,
     81	PNS_PEP_ENABLE_REQ,
     82	PNS_PEP_ENABLE_RESP,
     83	PNS_PEP_CTRL_REQ,
     84	PNS_PEP_CTRL_RESP,
     85	PNS_PEP_DISABLE_REQ = 0x4C,
     86	PNS_PEP_DISABLE_RESP,
     87
     88	PNS_PEP_STATUS_IND = 0x60,
     89	PNS_PIPE_CREATED_IND,
     90	PNS_PIPE_RESET_IND = 0x63,
     91	PNS_PIPE_ENABLED_IND,
     92	PNS_PIPE_REDIRECTED_IND,
     93	PNS_PIPE_DISABLED_IND = 0x66,
     94};
     95
     96#define PN_PIPE_INVALID_HANDLE	0xff
     97#define PN_PEP_TYPE_COMMON	0x00
     98
     99/* Phonet pipe status indication */
    100enum {
    101	PN_PEP_IND_FLOW_CONTROL,
    102	PN_PEP_IND_ID_MCFC_GRANT_CREDITS,
    103};
    104
    105/* Phonet pipe error codes */
    106enum {
    107	PN_PIPE_NO_ERROR,
    108	PN_PIPE_ERR_INVALID_PARAM,
    109	PN_PIPE_ERR_INVALID_HANDLE,
    110	PN_PIPE_ERR_INVALID_CTRL_ID,
    111	PN_PIPE_ERR_NOT_ALLOWED,
    112	PN_PIPE_ERR_PEP_IN_USE,
    113	PN_PIPE_ERR_OVERLOAD,
    114	PN_PIPE_ERR_DEV_DISCONNECTED,
    115	PN_PIPE_ERR_TIMEOUT,
    116	PN_PIPE_ERR_ALL_PIPES_IN_USE,
    117	PN_PIPE_ERR_GENERAL,
    118	PN_PIPE_ERR_NOT_SUPPORTED,
    119};
    120
    121/* Phonet pipe states */
    122enum {
    123	PN_PIPE_DISABLE,
    124	PN_PIPE_ENABLE,
    125};
    126
    127/* Phonet pipe sub-block types */
    128enum {
    129	PN_PIPE_SB_CREATE_REQ_PEP_SUB_TYPE,
    130	PN_PIPE_SB_CONNECT_REQ_PEP_SUB_TYPE,
    131	PN_PIPE_SB_REDIRECT_REQ_PEP_SUB_TYPE,
    132	PN_PIPE_SB_NEGOTIATED_FC,
    133	PN_PIPE_SB_REQUIRED_FC_TX,
    134	PN_PIPE_SB_PREFERRED_FC_RX,
    135	PN_PIPE_SB_ALIGNED_DATA,
    136};
    137
    138/* Phonet pipe flow control models */
    139enum {
    140	PN_NO_FLOW_CONTROL,
    141	PN_LEGACY_FLOW_CONTROL,
    142	PN_ONE_CREDIT_FLOW_CONTROL,
    143	PN_MULTI_CREDIT_FLOW_CONTROL,
    144	PN_MAX_FLOW_CONTROL,
    145};
    146
    147#define pn_flow_safe(fc) ((fc) >> 1)
    148
    149/* Phonet pipe flow control states */
    150enum {
    151	PEP_IND_EMPTY,
    152	PEP_IND_BUSY,
    153	PEP_IND_READY,
    154};
    155
    156#endif