11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * IrNET protocol module : Synchronous PPP over an IrDA socket. 31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Jean II - HPL `00 - <jt@hpl.hp.com> 51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * This file contains all definitions and declarations necessary for the 71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * PPP part of the IrNET module. 81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * This file is a private header, so other modules don't want to know 91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * what's in there... 101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef IRNET_PPP_H 131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define IRNET_PPP_H 141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/***************************** INCLUDES *****************************/ 161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include "irnet.h" /* Module global include */ 181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/************************ CONSTANTS & MACROS ************************/ 201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* /dev/irnet file constants */ 221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define IRNET_MAJOR 10 /* Misc range */ 231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define IRNET_MINOR 187 /* Official allocation */ 241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* IrNET control channel stuff */ 261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define IRNET_MAX_COMMAND 256 /* Max length of a command line */ 271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* PPP hardcore stuff */ 291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* Bits in rbits (PPP flags in irnet struct) */ 311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define SC_RCV_BITS (SC_RCV_B7_1|SC_RCV_B7_0|SC_RCV_ODDP|SC_RCV_EVNP) 321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* Bit numbers in busy */ 341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define XMIT_BUSY 0 351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define RECV_BUSY 1 361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define XMIT_WAKEUP 2 371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define XMIT_FULL 3 381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* Queue management */ 401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define PPPSYNC_MAX_RQLEN 32 /* arbitrary */ 411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/****************************** TYPES ******************************/ 431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/**************************** PROTOTYPES ****************************/ 461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* ----------------------- CONTROL CHANNEL ----------------------- */ 481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline ssize_t 491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds irnet_ctrl_write(irnet_socket *, 501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds const char *, 511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds size_t); 521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline ssize_t 531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds irnet_ctrl_read(irnet_socket *, 541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct file *, 551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds char *, 561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds size_t); 571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline unsigned int 581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds irnet_ctrl_poll(irnet_socket *, 591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct file *, 601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds poll_table *); 611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* ----------------------- CHARACTER DEVICE ----------------------- */ 621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic int 631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds dev_irnet_open(struct inode *, /* fs callback : open */ 641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct file *), 651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds dev_irnet_close(struct inode *, 661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct file *); 671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic ssize_t 681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds dev_irnet_write(struct file *, 691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds const char __user *, 701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds size_t, 711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds loff_t *), 721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds dev_irnet_read(struct file *, 731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds char __user *, 741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds size_t, 751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds loff_t *); 761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic unsigned int 771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds dev_irnet_poll(struct file *, 781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds poll_table *); 7954064600981ab0fe977b0e760732c30f4472d693Alan Coxstatic long 8054064600981ab0fe977b0e760732c30f4472d693Alan Cox dev_irnet_ioctl(struct file *, 811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int, 821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long); 831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* ------------------------ PPP INTERFACE ------------------------ */ 841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline struct sk_buff * 851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds irnet_prepare_skb(irnet_socket *, 861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct sk_buff *); 871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic int 881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ppp_irnet_send(struct ppp_channel *, 891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds struct sk_buff *); 901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic int 911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ppp_irnet_ioctl(struct ppp_channel *, 921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int, 931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long); 941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/**************************** VARIABLES ****************************/ 961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* Filesystem callbacks (to call us) */ 985ca1b998d33c39819fca2b675d80c4469e705f2dStephen Hemmingerstatic const struct file_operations irnet_device_fops = 991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 1001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .owner = THIS_MODULE, 1011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .read = dev_irnet_read, 1021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .write = dev_irnet_write, 1031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .poll = dev_irnet_poll, 10454064600981ab0fe977b0e760732c30f4472d693Alan Cox .unlocked_ioctl = dev_irnet_ioctl, 1051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds .open = dev_irnet_open, 1060a5f1d476aef43916abb2b8634ebff23ef2c05f6Arnd Bergmann .release = dev_irnet_close, 1070a5f1d476aef43916abb2b8634ebff23ef2c05f6Arnd Bergmann .llseek = noop_llseek, 1081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds /* Also : llseek, readdir, mmap, flush, fsync, fasync, lock, readv, writev */ 1091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 1101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* Structure so that the misc major (drivers/char/misc.c) take care of us... */ 1121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic struct miscdevice irnet_misc_device = 1131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 1141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds IRNET_MINOR, 1151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds "irnet", 1161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds &irnet_device_fops 1171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds}; 1181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif /* IRNET_PPP_H */ 120