Include changes from official kernel
This commit is contained in:
parent
d6da4a3374
commit
0525ffa44d
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue