Lines Matching refs:skb
54 int capi_conn_req(const char *calledPN, struct sk_buff **skb, int proto) in capi_conn_req() argument
79 if ((*skb = dev_alloc_skb(len)) == NULL) { in capi_conn_req()
86 *((ushort *)skb_put(*skb, 2)) = AppInfoMask; in capi_conn_req()
91 *(skb_put(*skb, 1)) = 3; /* BC0.Length */ in capi_conn_req()
92 *(skb_put(*skb, 1)) = 0x80; /* Speech */ in capi_conn_req()
93 *(skb_put(*skb, 1)) = 0x10; /* Circuit Mode */ in capi_conn_req()
94 *(skb_put(*skb, 1)) = 0x23; /* A-law */ in capi_conn_req()
99 *(skb_put(*skb, 1)) = 2; /* BC0.Length */ in capi_conn_req()
100 *(skb_put(*skb, 1)) = 0x88; /* Digital Information */ in capi_conn_req()
101 *(skb_put(*skb, 1)) = 0x90; /* BC0.Octect4 */ in capi_conn_req()
105 *(skb_put(*skb, 1)) = 0; /* BC1.Length = 0 */ in capi_conn_req()
107 *(skb_put(*skb, 1)) = 1; /* ChannelID.Length = 1 */ in capi_conn_req()
108 *(skb_put(*skb, 1)) = 0x83; /* Basic Interface - Any Channel */ in capi_conn_req()
110 *(skb_put(*skb, 1)) = 0; /* Keypad.Length = 0 */ in capi_conn_req()
113 *(skb_put(*skb, 1)) = 0; /* CallingPN.Length = 0 */ in capi_conn_req()
114 *(skb_put(*skb, 1)) = 0; /* CallingPSA.Length = 0 */ in capi_conn_req()
117 *(skb_put(*skb, 1)) = strlen(calledPN) + 1; in capi_conn_req()
118 *(skb_put(*skb, 1)) = 0x81; in capi_conn_req()
119 memcpy(skb_put(*skb, strlen(calledPN)), calledPN, strlen(calledPN)); in capi_conn_req()
123 *(skb_put(*skb, 1)) = 0; /* CalledPSA.Length = 0 */ in capi_conn_req()
129 memset(skb_put(*skb, 4), 0, 4); in capi_conn_req()
134 int capi_conn_resp(struct pcbit_chan *chan, struct sk_buff **skb) in capi_conn_resp() argument
137 if ((*skb = dev_alloc_skb(5)) == NULL) { in capi_conn_resp()
143 *((ushort *)skb_put(*skb, 2)) = chan->callref; in capi_conn_resp()
144 *(skb_put(*skb, 1)) = 0x01; /* ACCEPT_CALL */ in capi_conn_resp()
145 *(skb_put(*skb, 1)) = 0; in capi_conn_resp()
146 *(skb_put(*skb, 1)) = 0; in capi_conn_resp()
151 int capi_conn_active_req(struct pcbit_chan *chan, struct sk_buff **skb) in capi_conn_active_req() argument
157 if ((*skb = dev_alloc_skb(8)) == NULL) { in capi_conn_active_req()
163 *((ushort *)skb_put(*skb, 2)) = chan->callref; in capi_conn_active_req()
169 *(skb_put(*skb, 1)) = 0; /* BC.Length = 0; */ in capi_conn_active_req()
170 *(skb_put(*skb, 1)) = 0; /* ConnectedPN.Length = 0 */ in capi_conn_active_req()
171 *(skb_put(*skb, 1)) = 0; /* PSA.Length */ in capi_conn_active_req()
172 *(skb_put(*skb, 1)) = 0; /* LLC.Length = 0; */ in capi_conn_active_req()
173 *(skb_put(*skb, 1)) = 0; /* HLC.Length = 0; */ in capi_conn_active_req()
174 *(skb_put(*skb, 1)) = 0; /* UTUS.Length = 0; */ in capi_conn_active_req()
179 int capi_conn_active_resp(struct pcbit_chan *chan, struct sk_buff **skb) in capi_conn_active_resp() argument
185 if ((*skb = dev_alloc_skb(2)) == NULL) { in capi_conn_active_resp()
191 *((ushort *)skb_put(*skb, 2)) = chan->callref; in capi_conn_active_resp()
197 int capi_select_proto_req(struct pcbit_chan *chan, struct sk_buff **skb, in capi_select_proto_req() argument
205 if ((*skb = dev_alloc_skb(18)) == NULL) { in capi_select_proto_req()
211 *((ushort *)skb_put(*skb, 2)) = chan->callref; in capi_select_proto_req()
217 *(skb_put(*skb, 1)) = 0x05; /* LAPB */ in capi_select_proto_req()
220 *(skb_put(*skb, 1)) = 0x02; in capi_select_proto_req()
226 *(skb_put(*skb, 1)) = 0x06; in capi_select_proto_req()
232 *(skb_put(*skb, 1)) = 0x03; in capi_select_proto_req()
236 *(skb_put(*skb, 1)) = (outgoing ? 0x02 : 0x42); /* Don't ask */ in capi_select_proto_req()
237 *(skb_put(*skb, 1)) = 0x00; in capi_select_proto_req()
239 *((ushort *) skb_put(*skb, 2)) = MRU; in capi_select_proto_req()
242 *(skb_put(*skb, 1)) = 0x08; /* Modulo */ in capi_select_proto_req()
243 *(skb_put(*skb, 1)) = 0x07; /* Max Window */ in capi_select_proto_req()
245 *(skb_put(*skb, 1)) = 0x01; /* No Layer3 Protocol */ in capi_select_proto_req()
257 memset(skb_put(*skb, 8), 0, 8); in capi_select_proto_req()
263 int capi_activate_transp_req(struct pcbit_chan *chan, struct sk_buff **skb) in capi_activate_transp_req() argument
266 if ((*skb = dev_alloc_skb(7)) == NULL) { in capi_activate_transp_req()
272 *((ushort *)skb_put(*skb, 2)) = chan->callref; in capi_activate_transp_req()
275 *(skb_put(*skb, 1)) = chan->layer2link; /* Layer2 id */ in capi_activate_transp_req()
276 *(skb_put(*skb, 1)) = 0x00; /* Transmit by default */ in capi_activate_transp_req()
278 *((ushort *) skb_put(*skb, 2)) = MRU; in capi_activate_transp_req()
280 *(skb_put(*skb, 1)) = 0x01; /* Enables reception*/ in capi_activate_transp_req()
285 int capi_tdata_req(struct pcbit_chan *chan, struct sk_buff *skb) in capi_tdata_req() argument
298 data_len = skb->len; in capi_tdata_req()
300 if (skb_headroom(skb) < 10) in capi_tdata_req()
302 printk(KERN_CRIT "No headspace (%u) on headroom %p for capi header\n", skb_headroom(skb), skb); in capi_tdata_req()
306 skb_push(skb, 10); in capi_tdata_req()
309 *((u16 *) (skb->data)) = chan->callref; in capi_tdata_req()
310 skb->data[2] = chan->layer2link; in capi_tdata_req()
311 *((u16 *) (skb->data + 3)) = data_len; in capi_tdata_req()
314 *((u32 *) (skb->data + 5)) = chan->s_refnum; in capi_tdata_req()
316 skb->data[9] = 0; /* HDLC frame number */ in capi_tdata_req()
321 int capi_tdata_resp(struct pcbit_chan *chan, struct sk_buff **skb) in capi_tdata_resp() argument
324 if ((*skb = dev_alloc_skb(4)) == NULL) { in capi_tdata_resp()
330 *((ushort *)skb_put(*skb, 2)) = chan->callref; in capi_tdata_resp()
332 *(skb_put(*skb, 1)) = chan->layer2link; in capi_tdata_resp()
333 *(skb_put(*skb, 1)) = chan->r_refnum; in capi_tdata_resp()
335 return (*skb)->len; in capi_tdata_resp()
338 int capi_disc_req(ushort callref, struct sk_buff **skb, u_char cause) in capi_disc_req() argument
341 if ((*skb = dev_alloc_skb(6)) == NULL) { in capi_disc_req()
347 *((ushort *)skb_put(*skb, 2)) = callref; in capi_disc_req()
349 *(skb_put(*skb, 1)) = 2; /* Cause.Length = 2; */ in capi_disc_req()
350 *(skb_put(*skb, 1)) = 0x80; in capi_disc_req()
351 *(skb_put(*skb, 1)) = 0x80 | cause; in capi_disc_req()
357 *(skb_put(*skb, 1)) = 0; /* UTUS.Length = 0; */ in capi_disc_req()
362 int capi_disc_resp(struct pcbit_chan *chan, struct sk_buff **skb) in capi_disc_resp() argument
364 if ((*skb = dev_alloc_skb(2)) == NULL) { in capi_disc_resp()
370 *((ushort *)skb_put(*skb, 2)) = chan->callref; in capi_disc_resp()
382 struct sk_buff *skb, in capi_decode_conn_ind() argument
388 chan->callref = *((ushort *)skb->data); in capi_decode_conn_ind()
389 skb_pull(skb, 2); in capi_decode_conn_ind()
402 CIlen = skb->data[0]; in capi_decode_conn_ind()
406 if (((skb->data[1]) & 0xFC) == 0x48) in capi_decode_conn_ind()
408 printk(KERN_DEBUG "phyChan = %d\n", skb->data[1] & 0x03); in capi_decode_conn_ind()
413 skb_pull(skb, CIlen + 1); in capi_decode_conn_ind()
418 len = skb->data[0]; in capi_decode_conn_ind()
424 printk(KERN_DEBUG "CPN: Octect 3 %02x\n", skb->data[1]); in capi_decode_conn_ind()
426 if ((skb->data[1] & 0x80) == 0) in capi_decode_conn_ind()
432 skb_copy_from_linear_data_offset(skb, count + 1, in capi_decode_conn_ind()
443 skb_pull(skb, len + 1); in capi_decode_conn_ind()
446 skb_pull(skb, skb->data[0] + 1); in capi_decode_conn_ind()
450 len = skb->data[0]; in capi_decode_conn_ind()
455 if ((skb->data[1] & 0x80) == 0) in capi_decode_conn_ind()
461 skb_copy_from_linear_data_offset(skb, count + 1, in capi_decode_conn_ind()
472 skb_pull(skb, len + 1); in capi_decode_conn_ind()
475 skb_pull(skb, skb->data[0] + 1); in capi_decode_conn_ind()
478 skb_pull(skb, skb->data[0] + 1); in capi_decode_conn_ind()
481 skb_pull(skb, skb->data[0] + 1); in capi_decode_conn_ind()
484 skb_pull(skb, skb->data[0] + 1); in capi_decode_conn_ind()
493 int capi_decode_conn_conf(struct pcbit_chan *chan, struct sk_buff *skb, in capi_decode_conn_conf() argument
498 chan->callref = *((ushort *)skb->data); /* Update CallReference */ in capi_decode_conn_conf()
499 skb_pull(skb, 2); in capi_decode_conn_conf()
501 errcode = *((ushort *) skb->data); /* read errcode */ in capi_decode_conn_conf()
502 skb_pull(skb, 2); in capi_decode_conn_conf()
504 *complete = *(skb->data); in capi_decode_conn_conf()
505 skb_pull(skb, 1); in capi_decode_conn_conf()
517 skb_pull(skb, *(skb->data) + 1); in capi_decode_conn_conf()
520 skb_pull(skb, *(skb->data) + 1); in capi_decode_conn_conf()
523 skb_pull(skb, *(skb->data) + 1); in capi_decode_conn_conf()
528 int capi_decode_conn_actv_ind(struct pcbit_chan *chan, struct sk_buff *skb) in capi_decode_conn_actv_ind() argument
536 skb_pull(skb, *(skb->data) + 1); in capi_decode_conn_actv_ind()
540 len = *(skb->data); in capi_decode_conn_actv_ind()
544 skb_copy_from_linear_data_offset(skb, 2, str, len - 1); in capi_decode_conn_actv_ind()
552 skb_pull(skb, len + 1); in capi_decode_conn_actv_ind()
555 skb_pull(skb, *(skb->data) + 1); in capi_decode_conn_actv_ind()
558 skb_pull(skb, *(skb->data) + 1); in capi_decode_conn_actv_ind()
561 skb_pull(skb, *(skb->data) + 1); in capi_decode_conn_actv_ind()
566 int capi_decode_conn_actv_conf(struct pcbit_chan *chan, struct sk_buff *skb) in capi_decode_conn_actv_conf() argument
570 errcode = *((ushort *)skb->data); in capi_decode_conn_actv_conf()
571 skb_pull(skb, 2); in capi_decode_conn_actv_conf()
580 int capi_decode_sel_proto_conf(struct pcbit_chan *chan, struct sk_buff *skb) in capi_decode_sel_proto_conf() argument
584 chan->layer2link = *(skb->data); in capi_decode_sel_proto_conf()
585 skb_pull(skb, 1); in capi_decode_sel_proto_conf()
587 errcode = *((ushort *)skb->data); in capi_decode_sel_proto_conf()
588 skb_pull(skb, 2); in capi_decode_sel_proto_conf()
593 int capi_decode_actv_trans_conf(struct pcbit_chan *chan, struct sk_buff *skb) in capi_decode_actv_trans_conf() argument
597 if (chan->layer2link != *(skb->data)) in capi_decode_actv_trans_conf()
600 skb_pull(skb, 1); in capi_decode_actv_trans_conf()
602 errcode = *((ushort *)skb->data); in capi_decode_actv_trans_conf()
603 skb_pull(skb, 2); in capi_decode_actv_trans_conf()
608 int capi_decode_disc_ind(struct pcbit_chan *chan, struct sk_buff *skb) in capi_decode_disc_ind() argument
616 len = *(skb->data); in capi_decode_disc_ind()
617 skb_pull(skb, 1); in capi_decode_disc_ind()
623 *(skb->data + i)); in capi_decode_disc_ind()
626 skb_pull(skb, len); in capi_decode_disc_ind()