diff options
author | Jiri Slaby <jirislaby@gmail.com> | 2008-04-30 03:53:54 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-04-30 11:29:44 -0400 |
commit | cf1c63c3e68679dcac1cc6a37e619d9106ebc0ca (patch) | |
tree | d34d5ad3a81310fbdcf60b70e4abb1d046544dc6 /drivers/char/ip2/i2lib.c | |
parent | 83e422b7649267067975cbb17a878b5f9dfd2de3 (diff) |
Char: ip2, macros cleanup
- remove i2os.h -- there was only macro to macro renaming or useless
stuff
- remove another uselless stuf (NULLFUNC, NULLPTR, YES, NO)
- use outb/inb directly
- use locking functions directly
- don't define another ROUNDUP, use roundup(x, 2) instead
- some comments and whitespace cleanup
- remove some commented crap
- prepend the rest by I2 prefix to not collide with rest of the world
like in following output (pointed out by akpm)
In file included from drivers/char/ip2/ip2main.c:128:
drivers/char/ip2/i2ellis.h:608:1: warning: "COMPLETE" redefined
In file included from include/net/netns/ipv4.h:8,
from include/net/net_namespace.h:13,
from include/linux/seq_file.h:7,
from include/asm/machdep.h:12,
from include/asm/pci.h:17,
from include/linux/pci.h:951,
from drivers/char/ip2/ip2main.c:95:
include/net/inet_frag.h:28:1: warning: this is the location of the previous definition
Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers/char/ip2/i2lib.c')
-rw-r--r-- | drivers/char/ip2/i2lib.c | 141 |
1 files changed, 73 insertions, 68 deletions
diff --git a/drivers/char/ip2/i2lib.c b/drivers/char/ip2/i2lib.c index 9c25320121ef..938879cc7bcc 100644 --- a/drivers/char/ip2/i2lib.c +++ b/drivers/char/ip2/i2lib.c | |||
@@ -227,17 +227,17 @@ i2InitChannels ( i2eBordStrPtr pB, int nChannels, i2ChanStrPtr pCh) | |||
227 | i2ChanStrPtr *ppCh; | 227 | i2ChanStrPtr *ppCh; |
228 | 228 | ||
229 | if (pB->i2eValid != I2E_MAGIC) { | 229 | if (pB->i2eValid != I2E_MAGIC) { |
230 | COMPLETE(pB, I2EE_BADMAGIC); | 230 | I2_COMPLETE(pB, I2EE_BADMAGIC); |
231 | } | 231 | } |
232 | if (pB->i2eState != II_STATE_STDLOADED) { | 232 | if (pB->i2eState != II_STATE_STDLOADED) { |
233 | COMPLETE(pB, I2EE_BADSTATE); | 233 | I2_COMPLETE(pB, I2EE_BADSTATE); |
234 | } | 234 | } |
235 | 235 | ||
236 | LOCK_INIT(&pB->read_fifo_spinlock); | 236 | rwlock_init(&pB->read_fifo_spinlock); |
237 | LOCK_INIT(&pB->write_fifo_spinlock); | 237 | rwlock_init(&pB->write_fifo_spinlock); |
238 | LOCK_INIT(&pB->Dbuf_spinlock); | 238 | rwlock_init(&pB->Dbuf_spinlock); |
239 | LOCK_INIT(&pB->Bbuf_spinlock); | 239 | rwlock_init(&pB->Bbuf_spinlock); |
240 | LOCK_INIT(&pB->Fbuf_spinlock); | 240 | rwlock_init(&pB->Fbuf_spinlock); |
241 | 241 | ||
242 | // NO LOCK needed yet - this is init | 242 | // NO LOCK needed yet - this is init |
243 | 243 | ||
@@ -259,10 +259,10 @@ i2InitChannels ( i2eBordStrPtr pB, int nChannels, i2ChanStrPtr pCh) | |||
259 | if ( !(pB->i2eChannelMap[index >> 4] & (1 << (index & 0xf)) ) ) { | 259 | if ( !(pB->i2eChannelMap[index >> 4] & (1 << (index & 0xf)) ) ) { |
260 | continue; | 260 | continue; |
261 | } | 261 | } |
262 | LOCK_INIT(&pCh->Ibuf_spinlock); | 262 | rwlock_init(&pCh->Ibuf_spinlock); |
263 | LOCK_INIT(&pCh->Obuf_spinlock); | 263 | rwlock_init(&pCh->Obuf_spinlock); |
264 | LOCK_INIT(&pCh->Cbuf_spinlock); | 264 | rwlock_init(&pCh->Cbuf_spinlock); |
265 | LOCK_INIT(&pCh->Pbuf_spinlock); | 265 | rwlock_init(&pCh->Pbuf_spinlock); |
266 | // NO LOCK needed yet - this is init | 266 | // NO LOCK needed yet - this is init |
267 | // Set up validity flag according to support level | 267 | // Set up validity flag according to support level |
268 | if (pB->i2eGoodMap[index >> 4] & (1 << (index & 0xf)) ) { | 268 | if (pB->i2eGoodMap[index >> 4] & (1 << (index & 0xf)) ) { |
@@ -347,7 +347,7 @@ i2InitChannels ( i2eBordStrPtr pB, int nChannels, i2ChanStrPtr pCh) | |||
347 | } | 347 | } |
348 | // No need to check for wrap here; this is initialization. | 348 | // No need to check for wrap here; this is initialization. |
349 | pB->i2Fbuf_stuff = stuffIndex; | 349 | pB->i2Fbuf_stuff = stuffIndex; |
350 | COMPLETE(pB, I2EE_GOOD); | 350 | I2_COMPLETE(pB, I2EE_GOOD); |
351 | 351 | ||
352 | } | 352 | } |
353 | 353 | ||
@@ -374,7 +374,7 @@ i2DeQueueNeeds(i2eBordStrPtr pB, int type) | |||
374 | 374 | ||
375 | case NEED_INLINE: | 375 | case NEED_INLINE: |
376 | 376 | ||
377 | WRITE_LOCK_IRQSAVE(&pB->Dbuf_spinlock,flags); | 377 | write_lock_irqsave(&pB->Dbuf_spinlock, flags); |
378 | if ( pB->i2Dbuf_stuff != pB->i2Dbuf_strip) | 378 | if ( pB->i2Dbuf_stuff != pB->i2Dbuf_strip) |
379 | { | 379 | { |
380 | queueIndex = pB->i2Dbuf_strip; | 380 | queueIndex = pB->i2Dbuf_strip; |
@@ -386,12 +386,12 @@ i2DeQueueNeeds(i2eBordStrPtr pB, int type) | |||
386 | pB->i2Dbuf_strip = queueIndex; | 386 | pB->i2Dbuf_strip = queueIndex; |
387 | pCh->channelNeeds &= ~NEED_INLINE; | 387 | pCh->channelNeeds &= ~NEED_INLINE; |
388 | } | 388 | } |
389 | WRITE_UNLOCK_IRQRESTORE(&pB->Dbuf_spinlock,flags); | 389 | write_unlock_irqrestore(&pB->Dbuf_spinlock, flags); |
390 | break; | 390 | break; |
391 | 391 | ||
392 | case NEED_BYPASS: | 392 | case NEED_BYPASS: |
393 | 393 | ||
394 | WRITE_LOCK_IRQSAVE(&pB->Bbuf_spinlock,flags); | 394 | write_lock_irqsave(&pB->Bbuf_spinlock, flags); |
395 | if (pB->i2Bbuf_stuff != pB->i2Bbuf_strip) | 395 | if (pB->i2Bbuf_stuff != pB->i2Bbuf_strip) |
396 | { | 396 | { |
397 | queueIndex = pB->i2Bbuf_strip; | 397 | queueIndex = pB->i2Bbuf_strip; |
@@ -403,12 +403,12 @@ i2DeQueueNeeds(i2eBordStrPtr pB, int type) | |||
403 | pB->i2Bbuf_strip = queueIndex; | 403 | pB->i2Bbuf_strip = queueIndex; |
404 | pCh->channelNeeds &= ~NEED_BYPASS; | 404 | pCh->channelNeeds &= ~NEED_BYPASS; |
405 | } | 405 | } |
406 | WRITE_UNLOCK_IRQRESTORE(&pB->Bbuf_spinlock,flags); | 406 | write_unlock_irqrestore(&pB->Bbuf_spinlock, flags); |
407 | break; | 407 | break; |
408 | 408 | ||
409 | case NEED_FLOW: | 409 | case NEED_FLOW: |
410 | 410 | ||
411 | WRITE_LOCK_IRQSAVE(&pB->Fbuf_spinlock,flags); | 411 | write_lock_irqsave(&pB->Fbuf_spinlock, flags); |
412 | if (pB->i2Fbuf_stuff != pB->i2Fbuf_strip) | 412 | if (pB->i2Fbuf_stuff != pB->i2Fbuf_strip) |
413 | { | 413 | { |
414 | queueIndex = pB->i2Fbuf_strip; | 414 | queueIndex = pB->i2Fbuf_strip; |
@@ -420,7 +420,7 @@ i2DeQueueNeeds(i2eBordStrPtr pB, int type) | |||
420 | pB->i2Fbuf_strip = queueIndex; | 420 | pB->i2Fbuf_strip = queueIndex; |
421 | pCh->channelNeeds &= ~NEED_FLOW; | 421 | pCh->channelNeeds &= ~NEED_FLOW; |
422 | } | 422 | } |
423 | WRITE_UNLOCK_IRQRESTORE(&pB->Fbuf_spinlock,flags); | 423 | write_unlock_irqrestore(&pB->Fbuf_spinlock, flags); |
424 | break; | 424 | break; |
425 | default: | 425 | default: |
426 | printk(KERN_ERR "i2DeQueueNeeds called with bad type:%x\n",type); | 426 | printk(KERN_ERR "i2DeQueueNeeds called with bad type:%x\n",type); |
@@ -453,7 +453,7 @@ i2QueueNeeds(i2eBordStrPtr pB, i2ChanStrPtr pCh, int type) | |||
453 | 453 | ||
454 | case NEED_INLINE: | 454 | case NEED_INLINE: |
455 | 455 | ||
456 | WRITE_LOCK_IRQSAVE(&pB->Dbuf_spinlock,flags); | 456 | write_lock_irqsave(&pB->Dbuf_spinlock, flags); |
457 | if ( !(pCh->channelNeeds & NEED_INLINE) ) | 457 | if ( !(pCh->channelNeeds & NEED_INLINE) ) |
458 | { | 458 | { |
459 | pCh->channelNeeds |= NEED_INLINE; | 459 | pCh->channelNeeds |= NEED_INLINE; |
@@ -463,12 +463,12 @@ i2QueueNeeds(i2eBordStrPtr pB, i2ChanStrPtr pCh, int type) | |||
463 | queueIndex = 0; | 463 | queueIndex = 0; |
464 | pB->i2Dbuf_stuff = queueIndex; | 464 | pB->i2Dbuf_stuff = queueIndex; |
465 | } | 465 | } |
466 | WRITE_UNLOCK_IRQRESTORE(&pB->Dbuf_spinlock,flags); | 466 | write_unlock_irqrestore(&pB->Dbuf_spinlock, flags); |
467 | break; | 467 | break; |
468 | 468 | ||
469 | case NEED_BYPASS: | 469 | case NEED_BYPASS: |
470 | 470 | ||
471 | WRITE_LOCK_IRQSAVE(&pB->Bbuf_spinlock,flags); | 471 | write_lock_irqsave(&pB->Bbuf_spinlock, flags); |
472 | if ((type & NEED_BYPASS) && !(pCh->channelNeeds & NEED_BYPASS)) | 472 | if ((type & NEED_BYPASS) && !(pCh->channelNeeds & NEED_BYPASS)) |
473 | { | 473 | { |
474 | pCh->channelNeeds |= NEED_BYPASS; | 474 | pCh->channelNeeds |= NEED_BYPASS; |
@@ -478,12 +478,12 @@ i2QueueNeeds(i2eBordStrPtr pB, i2ChanStrPtr pCh, int type) | |||
478 | queueIndex = 0; | 478 | queueIndex = 0; |
479 | pB->i2Bbuf_stuff = queueIndex; | 479 | pB->i2Bbuf_stuff = queueIndex; |
480 | } | 480 | } |
481 | WRITE_UNLOCK_IRQRESTORE(&pB->Bbuf_spinlock,flags); | 481 | write_unlock_irqrestore(&pB->Bbuf_spinlock, flags); |
482 | break; | 482 | break; |
483 | 483 | ||
484 | case NEED_FLOW: | 484 | case NEED_FLOW: |
485 | 485 | ||
486 | WRITE_LOCK_IRQSAVE(&pB->Fbuf_spinlock,flags); | 486 | write_lock_irqsave(&pB->Fbuf_spinlock, flags); |
487 | if ((type & NEED_FLOW) && !(pCh->channelNeeds & NEED_FLOW)) | 487 | if ((type & NEED_FLOW) && !(pCh->channelNeeds & NEED_FLOW)) |
488 | { | 488 | { |
489 | pCh->channelNeeds |= NEED_FLOW; | 489 | pCh->channelNeeds |= NEED_FLOW; |
@@ -493,7 +493,7 @@ i2QueueNeeds(i2eBordStrPtr pB, i2ChanStrPtr pCh, int type) | |||
493 | queueIndex = 0; | 493 | queueIndex = 0; |
494 | pB->i2Fbuf_stuff = queueIndex; | 494 | pB->i2Fbuf_stuff = queueIndex; |
495 | } | 495 | } |
496 | WRITE_UNLOCK_IRQRESTORE(&pB->Fbuf_spinlock,flags); | 496 | write_unlock_irqrestore(&pB->Fbuf_spinlock, flags); |
497 | break; | 497 | break; |
498 | 498 | ||
499 | case NEED_CREDIT: | 499 | case NEED_CREDIT: |
@@ -562,9 +562,8 @@ i2QueueCommands(int type, i2ChanStrPtr pCh, int timeout, int nCommands, | |||
562 | pB = pCh->pMyBord; | 562 | pB = pCh->pMyBord; |
563 | 563 | ||
564 | // Board must also exist, and THE INTERRUPT COMMAND ALREADY SENT | 564 | // Board must also exist, and THE INTERRUPT COMMAND ALREADY SENT |
565 | if (pB->i2eValid != I2E_MAGIC || pB->i2eUsingIrq == IRQ_UNDEFINED) { | 565 | if (pB->i2eValid != I2E_MAGIC || pB->i2eUsingIrq == I2_IRQ_UNDEFINED) |
566 | return -2; | 566 | return -2; |
567 | } | ||
568 | // If the board has gone fatal, return bad, and also hit the trap routine if | 567 | // If the board has gone fatal, return bad, and also hit the trap routine if |
569 | // it exists. | 568 | // it exists. |
570 | if (pB->i2eFatal) { | 569 | if (pB->i2eFatal) { |
@@ -620,13 +619,13 @@ i2QueueCommands(int type, i2ChanStrPtr pCh, int timeout, int nCommands, | |||
620 | switch(type) { | 619 | switch(type) { |
621 | case PTYPE_INLINE: | 620 | case PTYPE_INLINE: |
622 | lock_var_p = &pCh->Obuf_spinlock; | 621 | lock_var_p = &pCh->Obuf_spinlock; |
623 | WRITE_LOCK_IRQSAVE(lock_var_p,flags); | 622 | write_lock_irqsave(lock_var_p, flags); |
624 | stuffIndex = pCh->Obuf_stuff; | 623 | stuffIndex = pCh->Obuf_stuff; |
625 | bufroom = pCh->Obuf_strip - stuffIndex; | 624 | bufroom = pCh->Obuf_strip - stuffIndex; |
626 | break; | 625 | break; |
627 | case PTYPE_BYPASS: | 626 | case PTYPE_BYPASS: |
628 | lock_var_p = &pCh->Cbuf_spinlock; | 627 | lock_var_p = &pCh->Cbuf_spinlock; |
629 | WRITE_LOCK_IRQSAVE(lock_var_p,flags); | 628 | write_lock_irqsave(lock_var_p, flags); |
630 | stuffIndex = pCh->Cbuf_stuff; | 629 | stuffIndex = pCh->Cbuf_stuff; |
631 | bufroom = pCh->Cbuf_strip - stuffIndex; | 630 | bufroom = pCh->Cbuf_strip - stuffIndex; |
632 | break; | 631 | break; |
@@ -645,7 +644,7 @@ i2QueueCommands(int type, i2ChanStrPtr pCh, int timeout, int nCommands, | |||
645 | break; /* from for()- Enough room: goto proceed */ | 644 | break; /* from for()- Enough room: goto proceed */ |
646 | } | 645 | } |
647 | ip2trace(CHANN, ITRC_QUEUE, 3, 1, totalsize); | 646 | ip2trace(CHANN, ITRC_QUEUE, 3, 1, totalsize); |
648 | WRITE_UNLOCK_IRQRESTORE(lock_var_p, flags); | 647 | write_unlock_irqrestore(lock_var_p, flags); |
649 | } else | 648 | } else |
650 | ip2trace(CHANN, ITRC_QUEUE, 3, 1, totalsize); | 649 | ip2trace(CHANN, ITRC_QUEUE, 3, 1, totalsize); |
651 | 650 | ||
@@ -747,7 +746,7 @@ i2QueueCommands(int type, i2ChanStrPtr pCh, int timeout, int nCommands, | |||
747 | { | 746 | { |
748 | case PTYPE_INLINE: | 747 | case PTYPE_INLINE: |
749 | pCh->Obuf_stuff = stuffIndex; // Store buffer pointer | 748 | pCh->Obuf_stuff = stuffIndex; // Store buffer pointer |
750 | WRITE_UNLOCK_IRQRESTORE(&pCh->Obuf_spinlock,flags); | 749 | write_unlock_irqrestore(&pCh->Obuf_spinlock, flags); |
751 | 750 | ||
752 | pB->debugInlineQueued++; | 751 | pB->debugInlineQueued++; |
753 | // Add the channel pointer to list of channels needing service (first | 752 | // Add the channel pointer to list of channels needing service (first |
@@ -757,7 +756,7 @@ i2QueueCommands(int type, i2ChanStrPtr pCh, int timeout, int nCommands, | |||
757 | 756 | ||
758 | case PTYPE_BYPASS: | 757 | case PTYPE_BYPASS: |
759 | pCh->Cbuf_stuff = stuffIndex; // Store buffer pointer | 758 | pCh->Cbuf_stuff = stuffIndex; // Store buffer pointer |
760 | WRITE_UNLOCK_IRQRESTORE(&pCh->Cbuf_spinlock,flags); | 759 | write_unlock_irqrestore(&pCh->Cbuf_spinlock, flags); |
761 | 760 | ||
762 | pB->debugBypassQueued++; | 761 | pB->debugBypassQueued++; |
763 | // Add the channel pointer to list of channels needing service (first | 762 | // Add the channel pointer to list of channels needing service (first |
@@ -840,7 +839,7 @@ i2Input(i2ChanStrPtr pCh) | |||
840 | count = -1; | 839 | count = -1; |
841 | goto i2Input_exit; | 840 | goto i2Input_exit; |
842 | } | 841 | } |
843 | WRITE_LOCK_IRQSAVE(&pCh->Ibuf_spinlock,flags); | 842 | write_lock_irqsave(&pCh->Ibuf_spinlock, flags); |
844 | 843 | ||
845 | // initialize some accelerators and private copies | 844 | // initialize some accelerators and private copies |
846 | stripIndex = pCh->Ibuf_strip; | 845 | stripIndex = pCh->Ibuf_strip; |
@@ -850,7 +849,7 @@ i2Input(i2ChanStrPtr pCh) | |||
850 | // If buffer is empty or requested data count was 0, (trivial case) return | 849 | // If buffer is empty or requested data count was 0, (trivial case) return |
851 | // without any further thought. | 850 | // without any further thought. |
852 | if ( count == 0 ) { | 851 | if ( count == 0 ) { |
853 | WRITE_UNLOCK_IRQRESTORE(&pCh->Ibuf_spinlock,flags); | 852 | write_unlock_irqrestore(&pCh->Ibuf_spinlock, flags); |
854 | goto i2Input_exit; | 853 | goto i2Input_exit; |
855 | } | 854 | } |
856 | // Adjust for buffer wrap | 855 | // Adjust for buffer wrap |
@@ -891,10 +890,10 @@ i2Input(i2ChanStrPtr pCh) | |||
891 | 890 | ||
892 | if ((pCh->sinceLastFlow += count) >= pCh->whenSendFlow) { | 891 | if ((pCh->sinceLastFlow += count) >= pCh->whenSendFlow) { |
893 | pCh->sinceLastFlow -= pCh->whenSendFlow; | 892 | pCh->sinceLastFlow -= pCh->whenSendFlow; |
894 | WRITE_UNLOCK_IRQRESTORE(&pCh->Ibuf_spinlock,flags); | 893 | write_unlock_irqrestore(&pCh->Ibuf_spinlock, flags); |
895 | i2QueueNeeds(pCh->pMyBord, pCh, NEED_FLOW); | 894 | i2QueueNeeds(pCh->pMyBord, pCh, NEED_FLOW); |
896 | } else { | 895 | } else { |
897 | WRITE_UNLOCK_IRQRESTORE(&pCh->Ibuf_spinlock,flags); | 896 | write_unlock_irqrestore(&pCh->Ibuf_spinlock, flags); |
898 | } | 897 | } |
899 | 898 | ||
900 | i2Input_exit: | 899 | i2Input_exit: |
@@ -926,7 +925,7 @@ i2InputFlush(i2ChanStrPtr pCh) | |||
926 | 925 | ||
927 | ip2trace (CHANN, ITRC_INPUT, 10, 0); | 926 | ip2trace (CHANN, ITRC_INPUT, 10, 0); |
928 | 927 | ||
929 | WRITE_LOCK_IRQSAVE(&pCh->Ibuf_spinlock,flags); | 928 | write_lock_irqsave(&pCh->Ibuf_spinlock, flags); |
930 | count = pCh->Ibuf_stuff - pCh->Ibuf_strip; | 929 | count = pCh->Ibuf_stuff - pCh->Ibuf_strip; |
931 | 930 | ||
932 | // Adjust for buffer wrap | 931 | // Adjust for buffer wrap |
@@ -947,10 +946,10 @@ i2InputFlush(i2ChanStrPtr pCh) | |||
947 | if ( (pCh->sinceLastFlow += count) >= pCh->whenSendFlow ) | 946 | if ( (pCh->sinceLastFlow += count) >= pCh->whenSendFlow ) |
948 | { | 947 | { |
949 | pCh->sinceLastFlow -= pCh->whenSendFlow; | 948 | pCh->sinceLastFlow -= pCh->whenSendFlow; |
950 | WRITE_UNLOCK_IRQRESTORE(&pCh->Ibuf_spinlock,flags); | 949 | write_unlock_irqrestore(&pCh->Ibuf_spinlock, flags); |
951 | i2QueueNeeds(pCh->pMyBord, pCh, NEED_FLOW); | 950 | i2QueueNeeds(pCh->pMyBord, pCh, NEED_FLOW); |
952 | } else { | 951 | } else { |
953 | WRITE_UNLOCK_IRQRESTORE(&pCh->Ibuf_spinlock,flags); | 952 | write_unlock_irqrestore(&pCh->Ibuf_spinlock, flags); |
954 | } | 953 | } |
955 | 954 | ||
956 | ip2trace (CHANN, ITRC_INPUT, 19, 1, count); | 955 | ip2trace (CHANN, ITRC_INPUT, 19, 1, count); |
@@ -979,9 +978,9 @@ i2InputAvailable(i2ChanStrPtr pCh) | |||
979 | 978 | ||
980 | 979 | ||
981 | // initialize some accelerators and private copies | 980 | // initialize some accelerators and private copies |
982 | READ_LOCK_IRQSAVE(&pCh->Ibuf_spinlock,flags); | 981 | read_lock_irqsave(&pCh->Ibuf_spinlock, flags); |
983 | count = pCh->Ibuf_stuff - pCh->Ibuf_strip; | 982 | count = pCh->Ibuf_stuff - pCh->Ibuf_strip; |
984 | READ_UNLOCK_IRQRESTORE(&pCh->Ibuf_spinlock,flags); | 983 | read_unlock_irqrestore(&pCh->Ibuf_spinlock, flags); |
985 | 984 | ||
986 | // Adjust for buffer wrap | 985 | // Adjust for buffer wrap |
987 | if (count < 0) | 986 | if (count < 0) |
@@ -1045,9 +1044,9 @@ i2Output(i2ChanStrPtr pCh, const char *pSource, int count) | |||
1045 | while ( count > 0 ) { | 1044 | while ( count > 0 ) { |
1046 | 1045 | ||
1047 | // How much room in output buffer is there? | 1046 | // How much room in output buffer is there? |
1048 | READ_LOCK_IRQSAVE(&pCh->Obuf_spinlock,flags); | 1047 | read_lock_irqsave(&pCh->Obuf_spinlock, flags); |
1049 | amountToMove = pCh->Obuf_strip - pCh->Obuf_stuff - 1; | 1048 | amountToMove = pCh->Obuf_strip - pCh->Obuf_stuff - 1; |
1050 | READ_UNLOCK_IRQRESTORE(&pCh->Obuf_spinlock,flags); | 1049 | read_unlock_irqrestore(&pCh->Obuf_spinlock, flags); |
1051 | if (amountToMove < 0) { | 1050 | if (amountToMove < 0) { |
1052 | amountToMove += OBUF_SIZE; | 1051 | amountToMove += OBUF_SIZE; |
1053 | } | 1052 | } |
@@ -1075,7 +1074,7 @@ i2Output(i2ChanStrPtr pCh, const char *pSource, int count) | |||
1075 | if ( !(pCh->flush_flags && i2RetryFlushOutput(pCh) ) | 1074 | if ( !(pCh->flush_flags && i2RetryFlushOutput(pCh) ) |
1076 | && amountToMove > 0 ) | 1075 | && amountToMove > 0 ) |
1077 | { | 1076 | { |
1078 | WRITE_LOCK_IRQSAVE(&pCh->Obuf_spinlock,flags); | 1077 | write_lock_irqsave(&pCh->Obuf_spinlock, flags); |
1079 | stuffIndex = pCh->Obuf_stuff; | 1078 | stuffIndex = pCh->Obuf_stuff; |
1080 | 1079 | ||
1081 | // Had room to move some data: don't know whether the block size, | 1080 | // Had room to move some data: don't know whether the block size, |
@@ -1102,7 +1101,7 @@ i2Output(i2ChanStrPtr pCh, const char *pSource, int count) | |||
1102 | } | 1101 | } |
1103 | pCh->Obuf_stuff = stuffIndex; | 1102 | pCh->Obuf_stuff = stuffIndex; |
1104 | 1103 | ||
1105 | WRITE_UNLOCK_IRQRESTORE(&pCh->Obuf_spinlock,flags); | 1104 | write_unlock_irqrestore(&pCh->Obuf_spinlock, flags); |
1106 | 1105 | ||
1107 | ip2trace (CHANN, ITRC_OUTPUT, 13, 1, stuffIndex ); | 1106 | ip2trace (CHANN, ITRC_OUTPUT, 13, 1, stuffIndex ); |
1108 | 1107 | ||
@@ -1352,9 +1351,9 @@ i2OutputFree(i2ChanStrPtr pCh) | |||
1352 | if ( !i2Validate ( pCh ) ) { | 1351 | if ( !i2Validate ( pCh ) ) { |
1353 | return -1; | 1352 | return -1; |
1354 | } | 1353 | } |
1355 | READ_LOCK_IRQSAVE(&pCh->Obuf_spinlock,flags); | 1354 | read_lock_irqsave(&pCh->Obuf_spinlock, flags); |
1356 | amountToMove = pCh->Obuf_strip - pCh->Obuf_stuff - 1; | 1355 | amountToMove = pCh->Obuf_strip - pCh->Obuf_stuff - 1; |
1357 | READ_UNLOCK_IRQRESTORE(&pCh->Obuf_spinlock,flags); | 1356 | read_unlock_irqrestore(&pCh->Obuf_spinlock, flags); |
1358 | 1357 | ||
1359 | if (amountToMove < 0) { | 1358 | if (amountToMove < 0) { |
1360 | amountToMove += OBUF_SIZE; | 1359 | amountToMove += OBUF_SIZE; |
@@ -1464,11 +1463,11 @@ i2StripFifo(i2eBordStrPtr pB) | |||
1464 | 1463 | ||
1465 | // ip2trace (ITRC_NO_PORT, ITRC_SFIFO, ITRC_ENTER, 0 ); | 1464 | // ip2trace (ITRC_NO_PORT, ITRC_SFIFO, ITRC_ENTER, 0 ); |
1466 | 1465 | ||
1467 | while (HAS_INPUT(pB)) { | 1466 | while (I2_HAS_INPUT(pB)) { |
1468 | // ip2trace (ITRC_NO_PORT, ITRC_SFIFO, 2, 0 ); | 1467 | // ip2trace (ITRC_NO_PORT, ITRC_SFIFO, 2, 0 ); |
1469 | 1468 | ||
1470 | // Process packet from fifo a one atomic unit | 1469 | // Process packet from fifo a one atomic unit |
1471 | WRITE_LOCK_IRQSAVE(&pB->read_fifo_spinlock,bflags); | 1470 | write_lock_irqsave(&pB->read_fifo_spinlock, bflags); |
1472 | 1471 | ||
1473 | // The first word (or two bytes) will have channel number and type of | 1472 | // The first word (or two bytes) will have channel number and type of |
1474 | // packet, possibly other information | 1473 | // packet, possibly other information |
@@ -1490,7 +1489,8 @@ i2StripFifo(i2eBordStrPtr pB) | |||
1490 | // sick! | 1489 | // sick! |
1491 | if ( ((unsigned int)count) > IBUF_SIZE ) { | 1490 | if ( ((unsigned int)count) > IBUF_SIZE ) { |
1492 | pB->i2eFatal = 2; | 1491 | pB->i2eFatal = 2; |
1493 | WRITE_UNLOCK_IRQRESTORE(&pB->read_fifo_spinlock,bflags); | 1492 | write_unlock_irqrestore(&pB->read_fifo_spinlock, |
1493 | bflags); | ||
1494 | return; /* Bail out ASAP */ | 1494 | return; /* Bail out ASAP */ |
1495 | } | 1495 | } |
1496 | // Channel is illegally big ? | 1496 | // Channel is illegally big ? |
@@ -1498,7 +1498,8 @@ i2StripFifo(i2eBordStrPtr pB) | |||
1498 | (NULL==(pCh = ((i2ChanStrPtr*)pB->i2eChannelPtr)[channel]))) | 1498 | (NULL==(pCh = ((i2ChanStrPtr*)pB->i2eChannelPtr)[channel]))) |
1499 | { | 1499 | { |
1500 | iiReadBuf(pB, junkBuffer, count); | 1500 | iiReadBuf(pB, junkBuffer, count); |
1501 | WRITE_UNLOCK_IRQRESTORE(&pB->read_fifo_spinlock,bflags); | 1501 | write_unlock_irqrestore(&pB->read_fifo_spinlock, |
1502 | bflags); | ||
1502 | break; /* From switch: ready for next packet */ | 1503 | break; /* From switch: ready for next packet */ |
1503 | } | 1504 | } |
1504 | 1505 | ||
@@ -1512,14 +1513,15 @@ i2StripFifo(i2eBordStrPtr pB) | |||
1512 | if(ID_OF(pB->i2eLeadoffWord) == ID_HOT_KEY) | 1513 | if(ID_OF(pB->i2eLeadoffWord) == ID_HOT_KEY) |
1513 | { | 1514 | { |
1514 | pCh->hotKeyIn = iiReadWord(pB) & 0xff; | 1515 | pCh->hotKeyIn = iiReadWord(pB) & 0xff; |
1515 | WRITE_UNLOCK_IRQRESTORE(&pB->read_fifo_spinlock,bflags); | 1516 | write_unlock_irqrestore(&pB->read_fifo_spinlock, |
1517 | bflags); | ||
1516 | i2QueueCommands(PTYPE_BYPASS, pCh, 0, 1, CMD_HOTACK); | 1518 | i2QueueCommands(PTYPE_BYPASS, pCh, 0, 1, CMD_HOTACK); |
1517 | break; /* From the switch: ready for next packet */ | 1519 | break; /* From the switch: ready for next packet */ |
1518 | } | 1520 | } |
1519 | 1521 | ||
1520 | // Normal data! We crudely assume there is room for the data in our | 1522 | // Normal data! We crudely assume there is room for the data in our |
1521 | // buffer because the board wouldn't have exceeded his credit limit. | 1523 | // buffer because the board wouldn't have exceeded his credit limit. |
1522 | WRITE_LOCK_IRQSAVE(&pCh->Ibuf_spinlock,cflags); | 1524 | write_lock_irqsave(&pCh->Ibuf_spinlock, cflags); |
1523 | // We have 2 locks now | 1525 | // We have 2 locks now |
1524 | stuffIndex = pCh->Ibuf_stuff; | 1526 | stuffIndex = pCh->Ibuf_stuff; |
1525 | amountToRead = IBUF_SIZE - stuffIndex; | 1527 | amountToRead = IBUF_SIZE - stuffIndex; |
@@ -1562,8 +1564,9 @@ i2StripFifo(i2eBordStrPtr pB) | |||
1562 | 1564 | ||
1563 | // Update stuff index | 1565 | // Update stuff index |
1564 | pCh->Ibuf_stuff = stuffIndex; | 1566 | pCh->Ibuf_stuff = stuffIndex; |
1565 | WRITE_UNLOCK_IRQRESTORE(&pCh->Ibuf_spinlock,cflags); | 1567 | write_unlock_irqrestore(&pCh->Ibuf_spinlock, cflags); |
1566 | WRITE_UNLOCK_IRQRESTORE(&pB->read_fifo_spinlock,bflags); | 1568 | write_unlock_irqrestore(&pB->read_fifo_spinlock, |
1569 | bflags); | ||
1567 | 1570 | ||
1568 | #ifdef USE_IQ | 1571 | #ifdef USE_IQ |
1569 | schedule_work(&pCh->tqueue_input); | 1572 | schedule_work(&pCh->tqueue_input); |
@@ -1585,7 +1588,8 @@ i2StripFifo(i2eBordStrPtr pB) | |||
1585 | 1588 | ||
1586 | iiReadBuf(pB, cmdBuffer, count); | 1589 | iiReadBuf(pB, cmdBuffer, count); |
1587 | // We can release early with buffer grab | 1590 | // We can release early with buffer grab |
1588 | WRITE_UNLOCK_IRQRESTORE(&pB->read_fifo_spinlock,bflags); | 1591 | write_unlock_irqrestore(&pB->read_fifo_spinlock, |
1592 | bflags); | ||
1589 | 1593 | ||
1590 | pc = cmdBuffer; | 1594 | pc = cmdBuffer; |
1591 | pcLimit = &(cmdBuffer[count]); | 1595 | pcLimit = &(cmdBuffer[count]); |
@@ -1830,12 +1834,12 @@ i2StripFifo(i2eBordStrPtr pB) | |||
1830 | default: // Neither packet? should be impossible | 1834 | default: // Neither packet? should be impossible |
1831 | ip2trace (ITRC_NO_PORT, ITRC_SFIFO, 5, 1, | 1835 | ip2trace (ITRC_NO_PORT, ITRC_SFIFO, 5, 1, |
1832 | PTYPE_OF(pB->i2eLeadoffWord) ); | 1836 | PTYPE_OF(pB->i2eLeadoffWord) ); |
1833 | WRITE_UNLOCK_IRQRESTORE(&pB->read_fifo_spinlock, | 1837 | write_unlock_irqrestore(&pB->read_fifo_spinlock, |
1834 | bflags); | 1838 | bflags); |
1835 | 1839 | ||
1836 | break; | 1840 | break; |
1837 | } // End of switch on type of packets | 1841 | } // End of switch on type of packets |
1838 | } //while(board HAS_INPUT) | 1842 | } /*while(board I2_HAS_INPUT)*/ |
1839 | 1843 | ||
1840 | ip2trace (ITRC_NO_PORT, ITRC_SFIFO, ITRC_RETURN, 0 ); | 1844 | ip2trace (ITRC_NO_PORT, ITRC_SFIFO, ITRC_RETURN, 0 ); |
1841 | 1845 | ||
@@ -1858,7 +1862,7 @@ i2Write2Fifo(i2eBordStrPtr pB, unsigned char *source, int count,int reserve) | |||
1858 | { | 1862 | { |
1859 | int rc = 0; | 1863 | int rc = 0; |
1860 | unsigned long flags; | 1864 | unsigned long flags; |
1861 | WRITE_LOCK_IRQSAVE(&pB->write_fifo_spinlock,flags); | 1865 | write_lock_irqsave(&pB->write_fifo_spinlock, flags); |
1862 | if (!pB->i2eWaitingForEmptyFifo) { | 1866 | if (!pB->i2eWaitingForEmptyFifo) { |
1863 | if (pB->i2eFifoRemains > (count+reserve)) { | 1867 | if (pB->i2eFifoRemains > (count+reserve)) { |
1864 | pB->i2eFifoRemains -= count; | 1868 | pB->i2eFifoRemains -= count; |
@@ -1867,7 +1871,7 @@ i2Write2Fifo(i2eBordStrPtr pB, unsigned char *source, int count,int reserve) | |||
1867 | rc = count; | 1871 | rc = count; |
1868 | } | 1872 | } |
1869 | } | 1873 | } |
1870 | WRITE_UNLOCK_IRQRESTORE(&pB->write_fifo_spinlock,flags); | 1874 | write_unlock_irqrestore(&pB->write_fifo_spinlock, flags); |
1871 | return rc; | 1875 | return rc; |
1872 | } | 1876 | } |
1873 | //****************************************************************************** | 1877 | //****************************************************************************** |
@@ -1898,7 +1902,7 @@ i2StuffFifoBypass(i2eBordStrPtr pB) | |||
1898 | while ( --bailout && notClogged && | 1902 | while ( --bailout && notClogged && |
1899 | (NULL != (pCh = i2DeQueueNeeds(pB,NEED_BYPASS)))) | 1903 | (NULL != (pCh = i2DeQueueNeeds(pB,NEED_BYPASS)))) |
1900 | { | 1904 | { |
1901 | WRITE_LOCK_IRQSAVE(&pCh->Cbuf_spinlock,flags); | 1905 | write_lock_irqsave(&pCh->Cbuf_spinlock, flags); |
1902 | stripIndex = pCh->Cbuf_strip; | 1906 | stripIndex = pCh->Cbuf_strip; |
1903 | 1907 | ||
1904 | // as long as there are packets for this channel... | 1908 | // as long as there are packets for this channel... |
@@ -1906,7 +1910,7 @@ i2StuffFifoBypass(i2eBordStrPtr pB) | |||
1906 | while (stripIndex != pCh->Cbuf_stuff) { | 1910 | while (stripIndex != pCh->Cbuf_stuff) { |
1907 | pRemove = &(pCh->Cbuf[stripIndex]); | 1911 | pRemove = &(pCh->Cbuf[stripIndex]); |
1908 | packetSize = CMD_COUNT_OF(pRemove) + sizeof(i2CmdHeader); | 1912 | packetSize = CMD_COUNT_OF(pRemove) + sizeof(i2CmdHeader); |
1909 | paddedSize = ROUNDUP(packetSize); | 1913 | paddedSize = roundup(packetSize, 2); |
1910 | 1914 | ||
1911 | if (paddedSize > 0) { | 1915 | if (paddedSize > 0) { |
1912 | if ( 0 == i2Write2Fifo(pB, pRemove, paddedSize,0)) { | 1916 | if ( 0 == i2Write2Fifo(pB, pRemove, paddedSize,0)) { |
@@ -1930,7 +1934,7 @@ WriteDBGBuf("BYPS", pRemove, paddedSize); | |||
1930 | // Done with this channel. Move to next, removing this one from | 1934 | // Done with this channel. Move to next, removing this one from |
1931 | // the queue of channels if we cleaned it out (i.e., didn't get clogged. | 1935 | // the queue of channels if we cleaned it out (i.e., didn't get clogged. |
1932 | pCh->Cbuf_strip = stripIndex; | 1936 | pCh->Cbuf_strip = stripIndex; |
1933 | WRITE_UNLOCK_IRQRESTORE(&pCh->Cbuf_spinlock,flags); | 1937 | write_unlock_irqrestore(&pCh->Cbuf_spinlock, flags); |
1934 | } // Either clogged or finished all the work | 1938 | } // Either clogged or finished all the work |
1935 | 1939 | ||
1936 | #ifdef IP2DEBUG_TRACE | 1940 | #ifdef IP2DEBUG_TRACE |
@@ -1954,7 +1958,7 @@ static inline void | |||
1954 | i2StuffFifoFlow(i2eBordStrPtr pB) | 1958 | i2StuffFifoFlow(i2eBordStrPtr pB) |
1955 | { | 1959 | { |
1956 | i2ChanStrPtr pCh; | 1960 | i2ChanStrPtr pCh; |
1957 | unsigned short paddedSize = ROUNDUP(sizeof(flowIn)); | 1961 | unsigned short paddedSize = roundup(sizeof(flowIn), 2); |
1958 | 1962 | ||
1959 | ip2trace (ITRC_NO_PORT, ITRC_SFLOW, ITRC_ENTER, 2, | 1963 | ip2trace (ITRC_NO_PORT, ITRC_SFLOW, ITRC_ENTER, 2, |
1960 | pB->i2eFifoRemains, paddedSize ); | 1964 | pB->i2eFifoRemains, paddedSize ); |
@@ -2010,7 +2014,7 @@ i2StuffFifoInline(i2eBordStrPtr pB) | |||
2010 | while ( --bailout && notClogged && | 2014 | while ( --bailout && notClogged && |
2011 | (NULL != (pCh = i2DeQueueNeeds(pB,NEED_INLINE))) ) | 2015 | (NULL != (pCh = i2DeQueueNeeds(pB,NEED_INLINE))) ) |
2012 | { | 2016 | { |
2013 | WRITE_LOCK_IRQSAVE(&pCh->Obuf_spinlock,flags); | 2017 | write_lock_irqsave(&pCh->Obuf_spinlock, flags); |
2014 | stripIndex = pCh->Obuf_strip; | 2018 | stripIndex = pCh->Obuf_strip; |
2015 | 2019 | ||
2016 | ip2trace (CHANN, ITRC_SICMD, 3, 2, stripIndex, pCh->Obuf_stuff ); | 2020 | ip2trace (CHANN, ITRC_SICMD, 3, 2, stripIndex, pCh->Obuf_stuff ); |
@@ -2031,7 +2035,7 @@ i2StuffFifoInline(i2eBordStrPtr pB) | |||
2031 | packetSize = flowsize + sizeof(i2CmdHeader); | 2035 | packetSize = flowsize + sizeof(i2CmdHeader); |
2032 | } | 2036 | } |
2033 | flowsize = CREDIT_USAGE(flowsize); | 2037 | flowsize = CREDIT_USAGE(flowsize); |
2034 | paddedSize = ROUNDUP(packetSize); | 2038 | paddedSize = roundup(packetSize, 2); |
2035 | 2039 | ||
2036 | ip2trace (CHANN, ITRC_SICMD, 4, 2, pB->i2eFifoRemains, paddedSize ); | 2040 | ip2trace (CHANN, ITRC_SICMD, 4, 2, pB->i2eFifoRemains, paddedSize ); |
2037 | 2041 | ||
@@ -2086,7 +2090,7 @@ WriteDBGBuf("DATA", pRemove, paddedSize); | |||
2086 | // Done with this channel. Move to next, removing this one from the | 2090 | // Done with this channel. Move to next, removing this one from the |
2087 | // queue of channels if we cleaned it out (i.e., didn't get clogged. | 2091 | // queue of channels if we cleaned it out (i.e., didn't get clogged. |
2088 | pCh->Obuf_strip = stripIndex; | 2092 | pCh->Obuf_strip = stripIndex; |
2089 | WRITE_UNLOCK_IRQRESTORE(&pCh->Obuf_spinlock,flags); | 2093 | write_unlock_irqrestore(&pCh->Obuf_spinlock, flags); |
2090 | if ( notClogged ) | 2094 | if ( notClogged ) |
2091 | { | 2095 | { |
2092 | 2096 | ||
@@ -2190,10 +2194,11 @@ i2ServiceBoard ( i2eBordStrPtr pB ) | |||
2190 | 2194 | ||
2191 | if (inmail & MB_OUT_STRIPPED) { | 2195 | if (inmail & MB_OUT_STRIPPED) { |
2192 | pB->i2eFifoOutInts++; | 2196 | pB->i2eFifoOutInts++; |
2193 | WRITE_LOCK_IRQSAVE(&pB->write_fifo_spinlock,flags); | 2197 | write_lock_irqsave(&pB->write_fifo_spinlock, flags); |
2194 | pB->i2eFifoRemains = pB->i2eFifoSize; | 2198 | pB->i2eFifoRemains = pB->i2eFifoSize; |
2195 | pB->i2eWaitingForEmptyFifo = 0; | 2199 | pB->i2eWaitingForEmptyFifo = 0; |
2196 | WRITE_UNLOCK_IRQRESTORE(&pB->write_fifo_spinlock,flags); | 2200 | write_unlock_irqrestore(&pB->write_fifo_spinlock, |
2201 | flags); | ||
2197 | 2202 | ||
2198 | ip2trace (ITRC_NO_PORT, ITRC_INTR, 30, 1, pB->i2eFifoRemains ); | 2203 | ip2trace (ITRC_NO_PORT, ITRC_INTR, 30, 1, pB->i2eFifoRemains ); |
2199 | 2204 | ||