avmfritz.c (09e79a777a0c9c3de85abc395b5d984bd4bae19d) | avmfritz.c (7206e659f689558b41aa058c3040b081cb281d03) |
---|---|
1/* 2 * avm_fritz.c low level stuff for AVM FRITZ!CARD PCI ISDN cards 3 * Thanks to AVM, Berlin for informations 4 * 5 * Author Karsten Keil <keil@isdn4linux.de> 6 * 7 * Copyright 2009 by Karsten Keil <keil@isdn4linux.de> 8 * --- 390 unchanged lines hidden (view full) --- 399} 400 401static void 402hdlc_empty_fifo(struct bchannel *bch, int count) 403{ 404 u32 *ptr; 405 u8 *p; 406 u32 val, addr; | 1/* 2 * avm_fritz.c low level stuff for AVM FRITZ!CARD PCI ISDN cards 3 * Thanks to AVM, Berlin for informations 4 * 5 * Author Karsten Keil <keil@isdn4linux.de> 6 * 7 * Copyright 2009 by Karsten Keil <keil@isdn4linux.de> 8 * --- 390 unchanged lines hidden (view full) --- 399} 400 401static void 402hdlc_empty_fifo(struct bchannel *bch, int count) 403{ 404 u32 *ptr; 405 u8 *p; 406 u32 val, addr; |
407 int cnt = 0; | 407 int cnt; |
408 struct fritzcard *fc = bch->hw; 409 410 pr_debug("%s: %s %d\n", fc->name, __func__, count); | 408 struct fritzcard *fc = bch->hw; 409 410 pr_debug("%s: %s %d\n", fc->name, __func__, count); |
411 if (!bch->rx_skb) { 412 bch->rx_skb = mI_alloc_skb(bch->maxlen, GFP_ATOMIC); 413 if (!bch->rx_skb) { 414 pr_info("%s: B receive out of memory\n", 415 fc->name); 416 return; 417 } 418 } 419 if ((bch->rx_skb->len + count) > bch->maxlen) { 420 pr_debug("%s: overrun %d\n", fc->name, 421 bch->rx_skb->len + count); | 411 cnt = bchannel_get_rxbuf(bch, count); 412 if (cnt < 0) { 413 pr_warning("%s.B%d: No bufferspace for %d bytes\n", 414 fc->name, bch->nr, count); |
422 return; 423 } 424 p = skb_put(bch->rx_skb, count); 425 ptr = (u32 *)p; 426 if (fc->type == AVM_FRITZ_PCIV2) 427 addr = fc->addr + (bch->nr == 2 ? 428 AVM_HDLC_FIFO_2 : AVM_HDLC_FIFO_1); 429 else { 430 addr = fc->addr + CHIP_WINDOW; 431 outl(bch->nr == 2 ? AVM_HDLC_2 : AVM_HDLC_1, fc->addr); 432 } | 415 return; 416 } 417 p = skb_put(bch->rx_skb, count); 418 ptr = (u32 *)p; 419 if (fc->type == AVM_FRITZ_PCIV2) 420 addr = fc->addr + (bch->nr == 2 ? 421 AVM_HDLC_FIFO_2 : AVM_HDLC_FIFO_1); 422 else { 423 addr = fc->addr + CHIP_WINDOW; 424 outl(bch->nr == 2 ? AVM_HDLC_2 : AVM_HDLC_1, fc->addr); 425 } |
426 cnt = 0; |
|
433 while (cnt < count) { 434 val = le32_to_cpu(inl(addr)); 435 put_unaligned(val, ptr); 436 ptr++; 437 cnt += 4; 438 } 439 if (debug & DEBUG_HW_BFIFO) { 440 snprintf(fc->log, LOG_SIZE, "B%1d-recv %s %d ", --- 718 unchanged lines hidden --- | 427 while (cnt < count) { 428 val = le32_to_cpu(inl(addr)); 429 put_unaligned(val, ptr); 430 ptr++; 431 cnt += 4; 432 } 433 if (debug & DEBUG_HW_BFIFO) { 434 snprintf(fc->log, LOG_SIZE, "B%1d-recv %s %d ", --- 718 unchanged lines hidden --- |