static void c4_send_init(avmcard *card) { struct sk_buff *skb; void *p; unsigned long flags; skb = alloc_skb(15, GFP_ATOMIC); if (!skb) { printk(KERN_CRIT "%s: no memory, lost register appl.\n", card->name); return; } p = skb->data; _put_byte(&p, 0); _put_byte(&p, 0); _put_byte(&p, SEND_INIT); _put_word(&p, CAPI_MAXAPPL); _put_word(&p, AVM_NCCI_PER_CHANNEL*30); _put_word(&p, card->cardnr - 1); skb_put(skb, (u8 *)p - (u8 *)skb->data); skb_queue_tail(&card->dma->send_queue, skb); spin_lock_irqsave(&card->lock, flags); c4_dispatch_tx(card); spin_unlock_irqrestore(&card->lock, flags); }
void b1dma_register_appl(struct capi_ctr *ctrl, u16 appl, capi_register_params *rp) { avmctrl_info *cinfo = (avmctrl_info *)(ctrl->driverdata); avmcard *card = cinfo->card; struct sk_buff *skb; int want = rp->level3cnt; int nconn; void *p; if (want > 0) nconn = want; else nconn = ctrl->profile.nbchannel * -want; if (nconn == 0) nconn = ctrl->profile.nbchannel; skb = alloc_skb(23, GFP_ATOMIC); if (!skb) { printk(KERN_CRIT "%s: no memory, lost register appl.\n", card->name); return; } p = skb->data; _put_byte(&p, 0); _put_byte(&p, 0); _put_byte(&p, SEND_REGISTER); _put_word(&p, appl); _put_word(&p, 1024 * (nconn + 1)); _put_word(&p, nconn); _put_word(&p, rp->datablkcnt); _put_word(&p, rp->datablklen); skb_put(skb, (u8 *)p - (u8 *)skb->data); b1dma_queue_tx(card, skb); }
static void b1dma_send_init(avmcard *card) { struct sk_buff *skb; void *p; skb = alloc_skb(15, GFP_ATOMIC); if (!skb) { #ifdef CONFIG_DEBUG_PRINTK printk(KERN_CRIT "%s: no memory, lost register appl.\n", card->name); #else ; #endif return; } p = skb->data; _put_byte(&p, 0); _put_byte(&p, 0); _put_byte(&p, SEND_INIT); _put_word(&p, CAPI_MAXAPPL); _put_word(&p, AVM_NCCI_PER_CHANNEL*30); _put_word(&p, card->cardnr - 1); skb_put(skb, (u8 *)p - (u8 *)skb->data); b1dma_queue_tx(card, skb); }
static void c4_release_appl(struct capi_ctr *ctrl, u16 appl) { avmctrl_info *cinfo = (avmctrl_info *)(ctrl->driverdata); avmcard *card = cinfo->card; unsigned long flags; struct sk_buff *skb; void *p; spin_lock_irqsave(&card->lock, flags); capilib_release_appl(&cinfo->ncci_head, appl); spin_unlock_irqrestore(&card->lock, flags); if (ctrl->cnr == card->cardnr) { skb = alloc_skb(7, GFP_ATOMIC); if (!skb) { printk(KERN_CRIT "%s: no memory, lost release appl.\n", card->name); return; } p = skb->data; _put_byte(&p, 0); _put_byte(&p, 0); _put_byte(&p, SEND_RELEASE); _put_word(&p, appl); skb_put(skb, (u8 *)p - (u8 *)skb->data); skb_queue_tail(&card->dma->send_queue, skb); spin_lock_irqsave(&card->lock, flags); c4_dispatch_tx(card); spin_unlock_irqrestore(&card->lock, flags); } }
static int queue_sendconfigword(avmcard *card, u32 val) { struct sk_buff *skb; unsigned long flags; void *p; skb = alloc_skb(3+4, GFP_ATOMIC); if (!skb) { printk(KERN_CRIT "%s: no memory, send config\n", card->name); return -ENOMEM; } p = skb->data; _put_byte(&p, 0); _put_byte(&p, 0); _put_byte(&p, SEND_CONFIG); _put_word(&p, val); skb_put(skb, (u8 *)p - (u8 *)skb->data); skb_queue_tail(&card->dma->send_queue, skb); spin_lock_irqsave(&card->lock, flags); c4_dispatch_tx(card); spin_unlock_irqrestore(&card->lock, flags); return 0; }
static inline void _put_slice(void **pp, unsigned char *dp, unsigned int len) { unsigned i = len; _put_word(pp, i); while (i-- > 0) _put_byte(pp, *dp++); }
void c4_release_appl(struct capi_ctr *ctrl, __u16 appl) { avmctrl_info *cinfo = (avmctrl_info *)(ctrl->driverdata); avmcard *card = cinfo->card; struct sk_buff *skb; void *p; if (ctrl->cnr == card->cardnr) { skb = alloc_skb(7, GFP_ATOMIC); if (!skb) { printk(KERN_CRIT "%s: no memory, lost release appl.\n", card->name); return; } p = skb->data; _put_byte(&p, 0); _put_byte(&p, 0); _put_byte(&p, SEND_RELEASE); _put_word(&p, appl); skb_put(skb, (__u8 *)p - (__u8 *)skb->data); skb_queue_tail(&card->dma->send_queue, skb); c4_dispatch_tx(card); } }
void b1dma_release_appl(struct capi_ctr *ctrl, u16 appl) { avmctrl_info *cinfo = (avmctrl_info *)(ctrl->driverdata); avmcard *card = cinfo->card; struct sk_buff *skb; void *p; capilib_release_appl(&cinfo->ncci_head, appl); skb = alloc_skb(7, GFP_ATOMIC); if (!skb) { printk(KERN_CRIT "%s: no memory, lost release appl.\n", card->name); return; } p = skb->data; _put_byte(&p, 0); _put_byte(&p, 0); _put_byte(&p, SEND_RELEASE); _put_word(&p, appl); skb_put(skb, (u8 *)p - (u8 *)skb->data); b1dma_queue_tx(card, skb); }
void b1dma_release_appl(struct capi_ctr *ctrl, u16 appl) { avmctrl_info *cinfo = (avmctrl_info *)(ctrl->driverdata); avmcard *card = cinfo->card; struct sk_buff *skb; void *p; unsigned long flags; spin_lock_irqsave(&card->lock, flags); capilib_release_appl(&cinfo->ncci_head, appl); spin_unlock_irqrestore(&card->lock, flags); skb = alloc_skb(7, GFP_ATOMIC); if (!skb) { #ifdef CONFIG_DEBUG_PRINTK printk(KERN_CRIT "%s: no memory, lost release appl.\n", card->name); #else ; #endif return; } p = skb->data; _put_byte(&p, 0); _put_byte(&p, 0); _put_byte(&p, SEND_RELEASE); _put_word(&p, appl); skb_put(skb, (u8 *)p - (u8 *)skb->data); b1dma_queue_tx(card, skb); }
static void c4_register_appl(struct capi_ctr *ctrl, u16 appl, capi_register_params *rp) { avmctrl_info *cinfo = (avmctrl_info *)(ctrl->driverdata); avmcard *card = cinfo->card; struct sk_buff *skb; int want = rp->level3cnt; unsigned long flags; int nconn; void *p; if (ctrl->cnr == card->cardnr) { if (want > 0) nconn = want; else nconn = ctrl->profile.nbchannel * 4 * -want; if (nconn == 0) nconn = ctrl->profile.nbchannel * 4; skb = alloc_skb(23, GFP_ATOMIC); if (!skb) { printk(KERN_CRIT "%s: no memory, lost register appl.\n", card->name); return; } p = skb->data; _put_byte(&p, 0); _put_byte(&p, 0); _put_byte(&p, SEND_REGISTER); _put_word(&p, appl); _put_word(&p, 1024 * (nconn+1)); _put_word(&p, nconn); _put_word(&p, rp->datablkcnt); _put_word(&p, rp->datablklen); skb_put(skb, (u8 *)p - (u8 *)skb->data); skb_queue_tail(&card->dma->send_queue, skb); spin_lock_irqsave(&card->lock, flags); c4_dispatch_tx(card); spin_unlock_irqrestore(&card->lock, flags); } }
static void b1dma_send_init(avmcard *card) { struct sk_buff *skb; void *p; skb = alloc_skb(15, GFP_ATOMIC); if (!skb) { printk(KERN_CRIT "%s: no memory, lost register appl.\n", card->name); return; } p = skb->data; _put_byte(&p, 0); _put_byte(&p, 0); _put_byte(&p, SEND_INIT); _put_word(&p, CAPI_MAXAPPL); _put_word(&p, AVM_NCCI_PER_CHANNEL*30); _put_word(&p, card->cardnr - 1); skb_put(skb, (__u8 *)p - (__u8 *)skb->data); skb_queue_tail(&card->dma->send_queue, skb); b1dma_dispatch_tx(card); }