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

TOMOYO Linux Cross Reference
Linux/include/net/lapb.h

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ 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 */
  2 #ifndef _LAPB_H
  3 #define _LAPB_H 
  4 #include <linux/lapb.h>
  5 #include <linux/refcount.h>
  6 
  7 #define LAPB_HEADER_LEN 20              /* LAPB over Ethernet + a bit more */
  8 
  9 #define LAPB_ACK_PENDING_CONDITION      0x01
 10 #define LAPB_REJECT_CONDITION           0x02
 11 #define LAPB_PEER_RX_BUSY_CONDITION     0x04
 12 
 13 /* Control field templates */
 14 #define LAPB_I          0x00    /* Information frames */
 15 #define LAPB_S          0x01    /* Supervisory frames */
 16 #define LAPB_U          0x03    /* Unnumbered frames */
 17 
 18 #define LAPB_RR         0x01    /* Receiver ready */
 19 #define LAPB_RNR        0x05    /* Receiver not ready */
 20 #define LAPB_REJ        0x09    /* Reject */
 21 
 22 #define LAPB_SABM       0x2F    /* Set Asynchronous Balanced Mode */
 23 #define LAPB_SABME      0x6F    /* Set Asynchronous Balanced Mode Extended */
 24 #define LAPB_DISC       0x43    /* Disconnect */
 25 #define LAPB_DM         0x0F    /* Disconnected mode */
 26 #define LAPB_UA         0x63    /* Unnumbered acknowledge */
 27 #define LAPB_FRMR       0x87    /* Frame reject */
 28 
 29 #define LAPB_ILLEGAL    0x100   /* Impossible to be a real frame type */
 30 
 31 #define LAPB_SPF        0x10    /* Poll/final bit for standard LAPB */
 32 #define LAPB_EPF        0x01    /* Poll/final bit for extended LAPB */
 33 
 34 #define LAPB_FRMR_W     0x01    /* Control field invalid        */
 35 #define LAPB_FRMR_X     0x02    /* I field invalid              */
 36 #define LAPB_FRMR_Y     0x04    /* I field too long             */
 37 #define LAPB_FRMR_Z     0x08    /* Invalid N(R)                 */
 38 
 39 #define LAPB_POLLOFF    0
 40 #define LAPB_POLLON     1
 41 
 42 /* LAPB C-bit */
 43 #define LAPB_COMMAND    1
 44 #define LAPB_RESPONSE   2
 45 
 46 #define LAPB_ADDR_A     0x03
 47 #define LAPB_ADDR_B     0x01
 48 #define LAPB_ADDR_C     0x0F
 49 #define LAPB_ADDR_D     0x07
 50 
 51 /* Define Link State constants. */
 52 enum {
 53         LAPB_STATE_0,   /* Disconnected State           */
 54         LAPB_STATE_1,   /* Awaiting Connection State    */
 55         LAPB_STATE_2,   /* Awaiting Disconnection State */
 56         LAPB_STATE_3,   /* Data Transfer State          */
 57         LAPB_STATE_4    /* Frame Reject State           */
 58 };
 59 
 60 #define LAPB_DEFAULT_MODE               (LAPB_STANDARD | LAPB_SLP | LAPB_DTE)
 61 #define LAPB_DEFAULT_WINDOW             7               /* Window=7 */
 62 #define LAPB_DEFAULT_T1                 (5 * HZ)        /* T1=5s    */
 63 #define LAPB_DEFAULT_T2                 (1 * HZ)        /* T2=1s    */
 64 #define LAPB_DEFAULT_N2                 20              /* N2=20    */
 65 
 66 #define LAPB_SMODULUS   8
 67 #define LAPB_EMODULUS   128
 68 
 69 /*
 70  *      Information about the current frame.
 71  */
 72 struct lapb_frame {
 73         unsigned short          type;           /* Parsed type          */
 74         unsigned short          nr, ns;         /* N(R), N(S)           */
 75         unsigned char           cr;             /* Command/Response     */
 76         unsigned char           pf;             /* Poll/Final           */
 77         unsigned char           control[2];     /* Original control data*/
 78 };
 79 
 80 /*
 81  *      The per LAPB connection control structure.
 82  */
 83 struct lapb_cb {
 84         struct list_head        node;
 85         struct net_device       *dev;
 86 
 87         /* Link status fields */
 88         unsigned int            mode;
 89         unsigned char           state;
 90         unsigned short          vs, vr, va;
 91         unsigned char           condition;
 92         unsigned short          n2, n2count;
 93         unsigned short          t1, t2;
 94         struct timer_list       t1timer, t2timer;
 95         bool                    t1timer_running, t2timer_running;
 96 
 97         /* Internal control information */
 98         struct sk_buff_head     write_queue;
 99         struct sk_buff_head     ack_queue;
100         unsigned char           window;
101         const struct lapb_register_struct *callbacks;
102 
103         /* FRMR control information */
104         struct lapb_frame       frmr_data;
105         unsigned char           frmr_type;
106 
107         spinlock_t              lock;
108         refcount_t              refcnt;
109 };
110 
111 /* lapb_iface.c */
112 void lapb_connect_confirmation(struct lapb_cb *lapb, int);
113 void lapb_connect_indication(struct lapb_cb *lapb, int);
114 void lapb_disconnect_confirmation(struct lapb_cb *lapb, int);
115 void lapb_disconnect_indication(struct lapb_cb *lapb, int);
116 int lapb_data_indication(struct lapb_cb *lapb, struct sk_buff *);
117 int lapb_data_transmit(struct lapb_cb *lapb, struct sk_buff *);
118 
119 /* lapb_in.c */
120 void lapb_data_input(struct lapb_cb *lapb, struct sk_buff *);
121 
122 /* lapb_out.c */
123 void lapb_kick(struct lapb_cb *lapb);
124 void lapb_transmit_buffer(struct lapb_cb *lapb, struct sk_buff *, int);
125 void lapb_establish_data_link(struct lapb_cb *lapb);
126 void lapb_enquiry_response(struct lapb_cb *lapb);
127 void lapb_timeout_response(struct lapb_cb *lapb);
128 void lapb_check_iframes_acked(struct lapb_cb *lapb, unsigned short);
129 void lapb_check_need_response(struct lapb_cb *lapb, int, int);
130 
131 /* lapb_subr.c */
132 void lapb_clear_queues(struct lapb_cb *lapb);
133 void lapb_frames_acked(struct lapb_cb *lapb, unsigned short);
134 void lapb_requeue_frames(struct lapb_cb *lapb);
135 int lapb_validate_nr(struct lapb_cb *lapb, unsigned short);
136 int lapb_decode(struct lapb_cb *lapb, struct sk_buff *, struct lapb_frame *);
137 void lapb_send_control(struct lapb_cb *lapb, int, int, int);
138 void lapb_transmit_frmr(struct lapb_cb *lapb);
139 
140 /* lapb_timer.c */
141 void lapb_start_t1timer(struct lapb_cb *lapb);
142 void lapb_start_t2timer(struct lapb_cb *lapb);
143 void lapb_stop_t1timer(struct lapb_cb *lapb);
144 void lapb_stop_t2timer(struct lapb_cb *lapb);
145 int lapb_t1timer_running(struct lapb_cb *lapb);
146 
147 /*
148  * Debug levels.
149  *      0 = Off
150  *      1 = State Changes
151  *      2 = Packets I/O and State Changes
152  *      3 = Hex dumps, Packets I/O and State Changes.
153  */
154 #define LAPB_DEBUG      0
155 
156 #define lapb_dbg(level, fmt, ...)                       \
157 do {                                                    \
158         if (level < LAPB_DEBUG)                         \
159                 pr_debug(fmt, ##__VA_ARGS__);           \
160 } while (0)
161 
162 #endif
163 

~ [ 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