Include changes from official kernel

This commit is contained in:
Karsten Keil 2000-05-16 20:54:05 +00:00
parent d6da4a3374
commit 0525ffa44d
5 changed files with 49 additions and 41 deletions

View File

@ -304,7 +304,14 @@ int capi_tdata_req(struct pcbit_chan* chan, struct sk_buff *skb)
data_len = skb->len;
skb_push(skb, 10);
if(skb_headroom(skb) < 10)
{
printk(KERN_CRIT "No headspace (%u) on headroom %p for capi header\n", skb_headroom(skb), skb);
}
else
{
skb_push(skb, 10);
}
*((u16 *) (skb->data)) = chan->callref;
skb->data[2] = chan->layer2link;

View File

@ -176,7 +176,7 @@ int pcbit_init_dev(int board, int mem_base, int irq)
dev->send_seq = 0;
dev->unack_seq = 0;
dev->hl_hdrlen = 10;
dev->hl_hdrlen = 16;
dev_if = kmalloc(sizeof(isdn_if), GFP_KERNEL);
@ -202,7 +202,7 @@ int pcbit_init_dev(int board, int mem_base, int irq)
ISDN_FEATURE_L2_HDLC | ISDN_FEATURE_L2_TRANS );
dev_if->writebuf_skb = pcbit_xmit;
dev_if->hl_hdrlen = 10;
dev_if->hl_hdrlen = 16;
dev_if->maxbufsize = MAXBUFSIZE;
dev_if->command = pcbit_command;
@ -538,9 +538,6 @@ void pcbit_l3_receive(struct pcbit_dev * dev, ulong msg,
struct callb_data cbdata;
int complete, err;
isdn_ctrl ictl;
#ifdef DEBUG
struct msg_fmt * fmsg;
#endif
switch(msg) {
@ -769,9 +766,6 @@ void pcbit_l3_receive(struct pcbit_dev * dev, ulong msg,
default:
printk(KERN_DEBUG "pcbit_l3_receive: unknown message %08lx\n",
msg);
fmsg = (struct msg_fmt *) &msg;
printk(KERN_DEBUG "cmd=%02x sub=%02x\n",
fmsg->cmd, fmsg->scmd);
break;
#endif
}

View File

@ -7,6 +7,11 @@
* the GNU Public License, incorporated herein by reference.
*/
/*
* 19991203 - Fernando Carvalho - takion@superbofh.org
* Hacked to compile with egcs and run with current version of isdn modules
*/
/*
* PCBIT-D low-layer interface
*/
@ -205,7 +210,7 @@ pcbit_transmit(struct pcbit_dev *dev)
/* Type 0 frame */
struct msg_fmt *msg;
ulong msg;
if (frame->skb)
totlen = FRAME_HDR_LEN + PREHDR_LEN + frame->skb->len;
@ -214,7 +219,7 @@ pcbit_transmit(struct pcbit_dev *dev)
flen = MIN(totlen, free);
msg = (struct msg_fmt *) &(frame->msg);
msg = frame->msg;
/*
* Board level 2 header
@ -222,9 +227,9 @@ pcbit_transmit(struct pcbit_dev *dev)
pcbit_writew(dev, flen - FRAME_HDR_LEN);
pcbit_writeb(dev, msg->cpu);
pcbit_writeb(dev, GET_MSG_CPU(msg));
pcbit_writeb(dev, msg->proc);
pcbit_writeb(dev, GET_MSG_PROC(msg));
/* TH */
pcbit_writew(dev, frame->hdr_len + PREHDR_LEN);
@ -244,8 +249,8 @@ pcbit_transmit(struct pcbit_dev *dev)
pcbit_writew(dev, 0);
/* C + S */
pcbit_writeb(dev, msg->cmd);
pcbit_writeb(dev, msg->scmd);
pcbit_writeb(dev, GET_MSG_CMD(msg));
pcbit_writeb(dev, GET_MSG_SCMD(msg));
/* NUM */
pcbit_writew(dev, frame->refnum);
@ -312,8 +317,7 @@ void
pcbit_deliver(void *data)
{
struct frame_buf *frame;
unsigned long flags;
struct msg_fmt msg;
unsigned long flags, msg;
struct pcbit_dev *dev = (struct pcbit_dev *) data;
save_flags(flags);
@ -323,10 +327,10 @@ pcbit_deliver(void *data)
dev->read_queue = frame->next;
restore_flags(flags);
msg.cpu = 0;
msg.proc = 0;
msg.cmd = frame->skb->data[2];
msg.scmd = frame->skb->data[3];
SET_MSG_CPU(msg, 0);
SET_MSG_PROC(msg, 0);
SET_MSG_CMD(msg, frame->skb->data[2]);
SET_MSG_SCMD(msg, frame->skb->data[3]);
frame->refnum = *((ushort *) frame->skb->data + 4);
frame->msg = *((ulong *) & msg);

View File

@ -7,6 +7,11 @@
* the GNU Public License, incorporated herein by reference.
*/
/*
* 19991203 - Fernando Carvalho - takion@superbofh.org
* Hacked to compile with egcs and run with current version of isdn modules
*/
/*
* PCBIT-D low-layer interface definitions
*/
@ -84,21 +89,20 @@
Intel 1 2 3 4
*/
struct msg_fmt {
#ifdef __LITTLE_ENDIAN /* Little Endian */
u_char scmd;
u_char cmd;
u_char proc;
u_char cpu;
#ifdef __LITTLE_ENDIAN
#define SET_MSG_SCMD(msg, ch) (msg = (msg & 0xffffff00) | (((ch) & 0xff)))
#define SET_MSG_CMD(msg, ch) (msg = (msg & 0xffff00ff) | (((ch) & 0xff) << 8))
#define SET_MSG_PROC(msg, ch) (msg = (msg & 0xff00ffff) | (((ch) & 0xff) << 16))
#define SET_MSG_CPU(msg, ch) (msg = (msg & 0x00ffffff) | (((ch) & 0xff) << 24))
#define GET_MSG_SCMD(msg) ((msg) & 0xFF)
#define GET_MSG_CMD(msg) ((msg) >> 8 & 0xFF)
#define GET_MSG_PROC(msg) ((msg) >> 16 & 0xFF)
#define GET_MSG_CPU(msg) ((msg) >> 24)
#else
#error "Non-Intel CPU"
u_char cpu;
u_char proc;
u_char cmd;
u_char scmd;
#endif
};
#define MAX_QUEUED 7
@ -107,14 +111,13 @@ struct msg_fmt {
#define SET_RUN_TIMEOUT 2*HZ /* 2 seconds */
struct frame_buf {
ulong msg;
unsigned short refnum;
unsigned short dt_len;
unsigned short hdr_len;
unsigned int refnum;
unsigned int dt_len;
unsigned int hdr_len;
struct sk_buff *skb;
unsigned short copied;
unsigned int copied;
struct frame_buf * next;
};

View File

@ -46,8 +46,8 @@ int pcbit_init(void)
num_boards = 0;
printk(KERN_INFO
"PCBIT-D device driver v 0.5 - "
printk(KERN_NOTICE
"PCBIT-D device driver v 0.5-fjpc0 19991204 - "
"Copyright (C) 1996 Universidade de Lisboa\n");
if (mem[0] || irq[0])
@ -97,7 +97,7 @@ void cleanup_module(void)
for (board = 0; board < num_boards; board++)
pcbit_terminate(board);
printk(KERN_INFO
printk(KERN_NOTICE
"PCBIT-D module unloaded\n");
}