mISDNipac.c (8bfddfbe2100862fd39b97001d0559ccd4c77f19) | mISDNipac.c (7206e659f689558b41aa058c3040b081cb281d03) |
---|---|
1/* 2 * isac.c ISAC specific routines 3 * 4 * Author Karsten Keil <keil@isdn4linux.de> 5 * 6 * Copyright 2009 by Karsten Keil <keil@isdn4linux.de> 7 * 8 * This program is free software; you can redistribute it and/or modify --- 919 unchanged lines hidden (view full) --- 928 WriteHSCX(hx, IPAC_CMDRB, cmd); 929 } 930} 931 932static void 933hscx_empty_fifo(struct hscx_hw *hscx, u8 count) 934{ 935 u8 *p; | 1/* 2 * isac.c ISAC specific routines 3 * 4 * Author Karsten Keil <keil@isdn4linux.de> 5 * 6 * Copyright 2009 by Karsten Keil <keil@isdn4linux.de> 7 * 8 * This program is free software; you can redistribute it and/or modify --- 919 unchanged lines hidden (view full) --- 928 WriteHSCX(hx, IPAC_CMDRB, cmd); 929 } 930} 931 932static void 933hscx_empty_fifo(struct hscx_hw *hscx, u8 count) 934{ 935 u8 *p; |
936 int maxlen; |
|
936 937 pr_debug("%s: B%1d %d\n", hscx->ip->name, hscx->bch.nr, count); | 937 938 pr_debug("%s: B%1d %d\n", hscx->ip->name, hscx->bch.nr, count); |
938 if (!hscx->bch.rx_skb) { 939 hscx->bch.rx_skb = mI_alloc_skb(hscx->bch.maxlen, GFP_ATOMIC); 940 if (!hscx->bch.rx_skb) { 941 pr_info("%s: B receive out of memory\n", 942 hscx->ip->name); 943 hscx_cmdr(hscx, 0x80); /* RMC */ 944 return; 945 } 946 } 947 if ((hscx->bch.rx_skb->len + count) > hscx->bch.maxlen) { 948 pr_debug("%s: overrun %d\n", hscx->ip->name, 949 hscx->bch.rx_skb->len + count); 950 skb_trim(hscx->bch.rx_skb, 0); | 939 maxlen = bchannel_get_rxbuf(&hscx->bch, count); 940 if (maxlen < 0) { |
951 hscx_cmdr(hscx, 0x80); /* RMC */ | 941 hscx_cmdr(hscx, 0x80); /* RMC */ |
942 if (hscx->bch.rx_skb) 943 skb_trim(hscx->bch.rx_skb, 0); 944 pr_warning("%s.B%d: No bufferspace for %d bytes\n", 945 hscx->ip->name, hscx->bch.nr, count); |
|
952 return; 953 } 954 p = skb_put(hscx->bch.rx_skb, count); 955 956 if (hscx->ip->type & IPAC_TYPE_IPACX) 957 hscx->ip->read_fifo(hscx->ip->hw, 958 hscx->off + IPACX_RFIFOB, p, count); 959 else --- 691 unchanged lines hidden --- | 946 return; 947 } 948 p = skb_put(hscx->bch.rx_skb, count); 949 950 if (hscx->ip->type & IPAC_TYPE_IPACX) 951 hscx->ip->read_fifo(hscx->ip->hw, 952 hscx->off + IPACX_RFIFOB, p, count); 953 else --- 691 unchanged lines hidden --- |