/* SPDX-License-Identifier: GPL-2.0 */
/*
* These are the public elements of the Linux LAPB module.
*/
#ifndef LAPB_KERNEL_H
#define LAPB_KERNEL_H
#include <linux/skbuff.h>
#include <linux/timer.h>
struct net_device;
#define LAPB_OK 0
#define LAPB_BADTOKEN 1
#define LAPB_INVALUE 2
#define LAPB_CONNECTED 3
#define LAPB_NOTCONNECTED 4
#define LAPB_REFUSED 5
#define LAPB_TIMEDOUT 6
#define LAPB_NOMEM 7
#define LAPB_STANDARD 0x00
#define LAPB_EXTENDED 0x01
#define LAPB_SLP 0x00
#define LAPB_MLP 0x02
#define LAPB_DTE 0x00
#define LAPB_DCE 0x04
struct lapb_register_struct {
void (*connect_confirmation)(struct net_device *dev, int reason);
void (*connect_indication)(struct net_device *dev, int reason);
void (*disconnect_confirmation)(struct net_device *dev, int reason);
void (*disconnect_indication)(struct net_device *dev, int reason);
int (*data_indication)(struct net_device *dev, struct sk_buff *skb);
void (*data_transmit)(struct net_device *dev, struct sk_buff *skb);
};
struct lapb_parms_struct {
unsigned int t1;
unsigned int t1timer;
unsigned int t2;
unsigned int t2timer;
unsigned int n2;
unsigned int n2count;
unsigned int window;
unsigned int state;
unsigned int mode;
};
extern int lapb_register(struct net_device *dev,
const struct lapb_register_struct *callbacks);
extern int lapb_unregister(struct net_device *dev);
extern int lapb_getparms(struct net_device *dev, struct lapb_parms_struct *parms);
extern int lapb_setparms(struct net_device *dev, struct lapb_parms_struct *parms);
extern int lapb_connect_request(struct net_device *dev);
extern int lapb_disconnect_request(struct net_device *dev);
extern int lapb_data_request(struct net_device *dev, struct sk_buff *skb);
extern int lapb_data_received(struct net_device *dev, struct sk_buff *skb);
#endif