Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

s390/net/ctcm: message cleanup

Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Peter Tiedemann <ptiedem@de.ibm.com>
Signed-off-by: Ursula Braun <ursula.braun@de.ibm.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>

authored by

Peter Tiedemann and committed by
Jeff Garzik
aa3f2cb6 b805da74

+888 -1251
+21 -8
drivers/s390/net/ctcm_dbug.c
··· 7 7 */ 8 8 9 9 #include <linux/stddef.h> 10 + #include <linux/string.h> 10 11 #include <linux/kernel.h> 11 12 #include <linux/errno.h> 12 13 #include <linux/slab.h> ··· 23 22 * Debug Facility Stuff 24 23 */ 25 24 26 - DEFINE_PER_CPU(char[256], ctcm_dbf_txt_buf); 27 - 28 25 struct ctcm_dbf_info ctcm_dbf[CTCM_DBF_INFOS] = { 29 - [CTCM_DBF_SETUP] = {"ctc_setup", 8, 1, 64, 5, NULL}, 30 - [CTCM_DBF_ERROR] = {"ctc_error", 8, 1, 64, 3, NULL}, 31 - [CTCM_DBF_TRACE] = {"ctc_trace", 8, 1, 64, 3, NULL}, 32 - [CTCM_DBF_MPC_SETUP] = {"mpc_setup", 8, 1, 64, 5, NULL}, 33 - [CTCM_DBF_MPC_ERROR] = {"mpc_error", 8, 1, 64, 3, NULL}, 34 - [CTCM_DBF_MPC_TRACE] = {"mpc_trace", 8, 1, 64, 3, NULL}, 26 + [CTCM_DBF_SETUP] = {"ctc_setup", 8, 1, 64, CTC_DBF_INFO, NULL}, 27 + [CTCM_DBF_ERROR] = {"ctc_error", 8, 1, 64, CTC_DBF_ERROR, NULL}, 28 + [CTCM_DBF_TRACE] = {"ctc_trace", 8, 1, 64, CTC_DBF_ERROR, NULL}, 29 + [CTCM_DBF_MPC_SETUP] = {"mpc_setup", 8, 1, 80, CTC_DBF_INFO, NULL}, 30 + [CTCM_DBF_MPC_ERROR] = {"mpc_error", 8, 1, 80, CTC_DBF_ERROR, NULL}, 31 + [CTCM_DBF_MPC_TRACE] = {"mpc_trace", 8, 1, 80, CTC_DBF_ERROR, NULL}, 35 32 }; 36 33 37 34 void ctcm_unregister_dbf_views(void) ··· 62 63 } 63 64 64 65 return 0; 66 + } 67 + 68 + void ctcm_dbf_longtext(enum ctcm_dbf_names dbf_nix, int level, char *fmt, ...) 69 + { 70 + char dbf_txt_buf[64]; 71 + va_list args; 72 + 73 + if (level > (ctcm_dbf[dbf_nix].id)->level) 74 + return; 75 + va_start(args, fmt); 76 + vsnprintf(dbf_txt_buf, sizeof(dbf_txt_buf), fmt, args); 77 + va_end(args); 78 + 79 + debug_text_event(ctcm_dbf[dbf_nix].id, level, dbf_txt_buf); 65 80 } 66 81
+12 -27
drivers/s390/net/ctcm_dbug.h
··· 20 20 #else 21 21 #define do_debug 0 22 22 #endif 23 + #ifdef DEBUGCCW 24 + #define do_debug_ccw 1 25 + #define DEBUGDATA 1 26 + #else 27 + #define do_debug_ccw 0 28 + #endif 23 29 #ifdef DEBUGDATA 24 30 #define do_debug_data 1 25 31 #else 26 32 #define do_debug_data 0 27 - #endif 28 - #ifdef DEBUGCCW 29 - #define do_debug_ccw 1 30 - #else 31 - #define do_debug_ccw 0 32 33 #endif 33 34 34 35 /* define dbf debug levels similar to kernel msg levels */ ··· 42 41 #define CTC_DBF_NOTICE 5 /* normal but significant condition */ 43 42 #define CTC_DBF_INFO 5 /* informational */ 44 43 #define CTC_DBF_DEBUG 6 /* debug-level messages */ 45 - 46 - DECLARE_PER_CPU(char[256], ctcm_dbf_txt_buf); 47 44 48 45 enum ctcm_dbf_names { 49 46 CTCM_DBF_SETUP, ··· 66 67 67 68 int ctcm_register_dbf_views(void); 68 69 void ctcm_unregister_dbf_views(void); 70 + void ctcm_dbf_longtext(enum ctcm_dbf_names dbf_nix, int level, char *text, ...); 69 71 70 72 static inline const char *strtail(const char *s, int n) 71 73 { 72 74 int l = strlen(s); 73 75 return (l > n) ? s + (l - n) : s; 74 - } 75 - 76 - /* sort out levels early to avoid unnecessary sprintfs */ 77 - static inline int ctcm_dbf_passes(debug_info_t *dbf_grp, int level) 78 - { 79 - return (dbf_grp->level >= level); 80 76 } 81 77 82 78 #define CTCM_FUNTAIL strtail((char *)__func__, 16) ··· 88 94 } while (0) 89 95 90 96 #define CTCM_DBF_TEXT_(name, level, text...) \ 91 - do { \ 92 - if (ctcm_dbf_passes(ctcm_dbf[CTCM_DBF_##name].id, level)) { \ 93 - char *ctcm_dbf_txt_buf = \ 94 - get_cpu_var(ctcm_dbf_txt_buf); \ 95 - sprintf(ctcm_dbf_txt_buf, text); \ 96 - debug_text_event(ctcm_dbf[CTCM_DBF_##name].id, \ 97 - level, ctcm_dbf_txt_buf); \ 98 - put_cpu_var(ctcm_dbf_txt_buf); \ 99 - } \ 100 - } while (0) 97 + ctcm_dbf_longtext(CTCM_DBF_##name, level, text) 101 98 102 99 /* 103 100 * cat : one of {setup, mpc_setup, trace, mpc_trace, error, mpc_error}. ··· 97 112 */ 98 113 #define CTCM_DBF_DEV_NAME(cat, dev, text) \ 99 114 do { \ 100 - CTCM_DBF_TEXT_(cat, CTC_DBF_INFO, "%s(%s) : %s", \ 115 + CTCM_DBF_TEXT_(cat, CTC_DBF_INFO, "%s(%s) :- %s", \ 101 116 CTCM_FUNTAIL, dev->name, text); \ 102 117 } while (0) 103 118 104 119 #define MPC_DBF_DEV_NAME(cat, dev, text) \ 105 120 do { \ 106 - CTCM_DBF_TEXT_(MPC_##cat, CTC_DBF_INFO, "%s(%s) : %s", \ 121 + CTCM_DBF_TEXT_(MPC_##cat, CTC_DBF_INFO, "%s(%s) := %s", \ 107 122 CTCM_FUNTAIL, dev->name, text); \ 108 123 } while (0) 109 124 ··· 122 137 */ 123 138 #define CTCM_DBF_DEV(cat, dev, text) \ 124 139 do { \ 125 - CTCM_DBF_TEXT_(cat, CTC_DBF_INFO, "%s(%p) : %s", \ 140 + CTCM_DBF_TEXT_(cat, CTC_DBF_INFO, "%s(%p) :-: %s", \ 126 141 CTCM_FUNTAIL, dev, text); \ 127 142 } while (0) 128 143 129 144 #define MPC_DBF_DEV(cat, dev, text) \ 130 145 do { \ 131 - CTCM_DBF_TEXT_(MPC_##cat, CTC_DBF_INFO, "%s(%p) : %s", \ 146 + CTCM_DBF_TEXT_(MPC_##cat, CTC_DBF_INFO, "%s(%p) :=: %s", \ 132 147 CTCM_FUNTAIL, dev, text); \ 133 148 } while (0) 134 149
+170 -232
drivers/s390/net/ctcm_fsms.c
··· 190 190 void ctcm_ccw_check_rc(struct channel *ch, int rc, char *msg) 191 191 { 192 192 CTCM_DBF_TEXT_(ERROR, CTC_DBF_ERROR, 193 - "ccw error %s (%s): %04x\n", ch->id, msg, rc); 193 + "%s(%s): %s: %04x\n", 194 + CTCM_FUNTAIL, ch->id, msg, rc); 194 195 switch (rc) { 195 196 case -EBUSY: 196 197 ctcm_pr_warn("%s (%s): Busy !\n", ch->id, msg); ··· 213 212 { 214 213 struct sk_buff *skb; 215 214 216 - CTCM_DBF_TEXT(TRACE, 3, __FUNCTION__); 215 + CTCM_DBF_TEXT(TRACE, CTC_DBF_DEBUG, __func__); 217 216 218 217 while ((skb = skb_dequeue(q))) { 219 218 atomic_dec(&skb->users); ··· 252 251 unsigned long duration; 253 252 struct timespec done_stamp = current_kernel_time(); /* xtime */ 254 253 254 + CTCM_PR_DEBUG("%s(%s): %s\n", __func__, ch->id, dev->name); 255 + 255 256 duration = 256 257 (done_stamp.tv_sec - ch->prof.send_stamp.tv_sec) * 1000000 + 257 258 (done_stamp.tv_nsec - ch->prof.send_stamp.tv_nsec) / 1000; ··· 261 258 ch->prof.tx_time = duration; 262 259 263 260 if (ch->irb->scsw.cmd.count != 0) 264 - ctcm_pr_debug("%s: TX not complete, remaining %d bytes\n", 265 - dev->name, ch->irb->scsw.cmd.count); 261 + CTCM_DBF_TEXT_(TRACE, CTC_DBF_DEBUG, 262 + "%s(%s): TX not complete, remaining %d bytes", 263 + CTCM_FUNTAIL, dev->name, ch->irb->scsw.cmd.count); 266 264 fsm_deltimer(&ch->timer); 267 265 while ((skb = skb_dequeue(&ch->io_queue))) { 268 266 priv->stats.tx_packets++; ··· 338 334 struct net_device *dev = ch->netdev; 339 335 struct ctcm_priv *priv = dev->priv; 340 336 341 - CTCM_DBF_TEXT(TRACE, 6, __FUNCTION__); 337 + CTCM_PR_DEBUG("%s(%s): %s\n", __func__, ch->id, dev->name); 338 + 342 339 fsm_deltimer(&ch->timer); 343 340 fsm_newstate(fi, CTC_STATE_TXIDLE); 344 341 fsm_event(priv->fsm, DEV_EVENT_TXUP, ch->netdev); ··· 366 361 367 362 fsm_deltimer(&ch->timer); 368 363 if (len < 8) { 369 - ctcm_pr_debug("%s: got packet with length %d < 8\n", 370 - dev->name, len); 364 + CTCM_DBF_TEXT_(TRACE, CTC_DBF_NOTICE, 365 + "%s(%s): got packet with length %d < 8\n", 366 + CTCM_FUNTAIL, dev->name, len); 371 367 priv->stats.rx_dropped++; 372 368 priv->stats.rx_length_errors++; 373 369 goto again; 374 370 } 375 371 if (len > ch->max_bufsize) { 376 - ctcm_pr_debug("%s: got packet with length %d > %d\n", 377 - dev->name, len, ch->max_bufsize); 372 + CTCM_DBF_TEXT_(TRACE, CTC_DBF_NOTICE, 373 + "%s(%s): got packet with length %d > %d\n", 374 + CTCM_FUNTAIL, dev->name, len, ch->max_bufsize); 378 375 priv->stats.rx_dropped++; 379 376 priv->stats.rx_length_errors++; 380 377 goto again; ··· 395 388 break; 396 389 } 397 390 if ((len < block_len) || (len > check_len)) { 398 - ctcm_pr_debug("%s: got block length %d != rx length %d\n", 399 - dev->name, block_len, len); 391 + CTCM_DBF_TEXT_(TRACE, CTC_DBF_NOTICE, 392 + "%s(%s): got block length %d != rx length %d\n", 393 + CTCM_FUNTAIL, dev->name, block_len, len); 400 394 if (do_debug) 401 395 ctcmpc_dump_skb(skb, 0); 402 396 ··· 433 425 */ 434 426 static void chx_firstio(fsm_instance *fi, int event, void *arg) 435 427 { 436 - struct channel *ch = arg; 437 428 int rc; 429 + struct channel *ch = arg; 430 + int fsmstate = fsm_getstate(fi); 438 431 439 - CTCM_DBF_TEXT(TRACE, 6, __FUNCTION__); 432 + CTCM_DBF_TEXT_(TRACE, CTC_DBF_NOTICE, 433 + "%s(%s) : %02x", 434 + CTCM_FUNTAIL, ch->id, fsmstate); 440 435 441 - if (fsm_getstate(fi) == CTC_STATE_TXIDLE) 442 - ctcm_pr_debug("%s: remote side issued READ?, init.\n", ch->id); 436 + ch->sense_rc = 0; /* reset unit check report control */ 437 + if (fsmstate == CTC_STATE_TXIDLE) 438 + CTCM_DBF_TEXT_(TRACE, CTC_DBF_DEBUG, 439 + "%s(%s): remote side issued READ?, init.\n", 440 + CTCM_FUNTAIL, ch->id); 443 441 fsm_deltimer(&ch->timer); 444 442 if (ctcm_checkalloc_buffer(ch)) 445 443 return; 446 - if ((fsm_getstate(fi) == CTC_STATE_SETUPWAIT) && 444 + if ((fsmstate == CTC_STATE_SETUPWAIT) && 447 445 (ch->protocol == CTCM_PROTO_OS390)) { 448 446 /* OS/390 resp. z/OS */ 449 447 if (CHANNEL_DIRECTION(ch->flags) == READ) { ··· 465 451 } 466 452 return; 467 453 } 468 - 469 454 /* 470 455 * Don't setup a timer for receiving the initial RX frame 471 456 * if in compatibility mode, since VM TCP delays the initial ··· 518 505 __u16 buflen; 519 506 int rc; 520 507 521 - CTCM_DBF_TEXT(TRACE, 6, __FUNCTION__); 522 508 fsm_deltimer(&ch->timer); 523 509 buflen = *((__u16 *)ch->trans_skb->data); 524 - if (do_debug) 525 - ctcm_pr_debug("%s: Initial RX count %d\n", dev->name, buflen); 510 + CTCM_PR_DEBUG("%s: %s: Initial RX count = %d\n", 511 + __func__, dev->name, buflen); 526 512 527 513 if (buflen >= CTCM_INITIAL_BLOCKLEN) { 528 514 if (ctcm_checkalloc_buffer(ch)) ··· 536 524 } else 537 525 fsm_event(priv->fsm, DEV_EVENT_RXUP, dev); 538 526 } else { 539 - if (do_debug) 540 - ctcm_pr_debug("%s: Initial RX count %d not %d\n", 541 - dev->name, buflen, CTCM_INITIAL_BLOCKLEN); 527 + CTCM_PR_DEBUG("%s: %s: Initial RX count %d not %d\n", 528 + __func__, dev->name, 529 + buflen, CTCM_INITIAL_BLOCKLEN); 542 530 chx_firstio(fi, event, arg); 543 531 } 544 532 } ··· 560 548 fsm_deltimer(&ch->timer); 561 549 if (IS_MPC(ch)) { 562 550 timeout = 1500; 563 - if (do_debug) 564 - ctcm_pr_debug("ctcm enter: %s(): cp=%i ch=0x%p id=%s\n", 565 - __FUNCTION__, smp_processor_id(), ch, ch->id); 551 + CTCM_PR_DEBUG("enter %s: cp=%i ch=0x%p id=%s\n", 552 + __func__, smp_processor_id(), ch, ch->id); 566 553 } 567 554 fsm_addtimer(&ch->timer, timeout, CTC_EVENT_TIMER, ch); 568 555 fsm_newstate(fi, CTC_STATE_SETUPWAIT); 569 - if (do_debug_ccw && IS_MPC(ch)) 570 - ctcmpc_dumpit((char *)&ch->ccw[6], sizeof(struct ccw1) * 2); 556 + CTCM_CCW_DUMP((char *)&ch->ccw[6], sizeof(struct ccw1) * 2); 571 557 572 558 if (event == CTC_EVENT_TIMER) /* only for timer not yet locked */ 573 559 spin_lock_irqsave(get_ccwdev_lock(ch->cdev), saveflags); ··· 593 583 */ 594 584 static void ctcm_chx_start(fsm_instance *fi, int event, void *arg) 595 585 { 596 - struct channel *ch = arg; 597 - int rc; 598 - struct net_device *dev; 586 + struct channel *ch = arg; 599 587 unsigned long saveflags; 588 + int rc; 600 589 601 - CTCM_DBF_TEXT(TRACE, 5, __FUNCTION__); 602 - if (ch == NULL) { 603 - ctcm_pr_warn("chx_start ch=NULL\n"); 604 - return; 605 - } 606 - if (ch->netdev == NULL) { 607 - ctcm_pr_warn("chx_start dev=NULL, id=%s\n", ch->id); 608 - return; 609 - } 610 - dev = ch->netdev; 611 - 612 - if (do_debug) 613 - ctcm_pr_debug("%s: %s channel start\n", dev->name, 590 + CTCM_DBF_TEXT_(SETUP, CTC_DBF_INFO, "%s(%s): %s", 591 + CTCM_FUNTAIL, ch->id, 614 592 (CHANNEL_DIRECTION(ch->flags) == READ) ? "RX" : "TX"); 615 593 616 594 if (ch->trans_skb != NULL) { ··· 616 618 ch->ccw[1].count = 0; 617 619 } 618 620 if (ctcm_checkalloc_buffer(ch)) { 619 - ctcm_pr_notice("%s: %s trans_skb allocation delayed " 620 - "until first transfer\n", dev->name, 621 + CTCM_DBF_TEXT_(TRACE, CTC_DBF_DEBUG, 622 + "%s(%s): %s trans_skb alloc delayed " 623 + "until first transfer", 624 + CTCM_FUNTAIL, ch->id, 621 625 (CHANNEL_DIRECTION(ch->flags) == READ) ? "RX" : "TX"); 622 626 } 623 - 624 627 ch->ccw[0].cmd_code = CCW_CMD_PREPARE; 625 628 ch->ccw[0].flags = CCW_FLAG_SLI | CCW_FLAG_CC; 626 629 ch->ccw[0].count = 0; ··· 660 661 int rc; 661 662 int oldstate; 662 663 663 - CTCM_DBF_TEXT(TRACE, 2, __FUNCTION__); 664 664 fsm_deltimer(&ch->timer); 665 665 if (IS_MPC(ch)) 666 666 fsm_deltimer(&ch->sweep_timer); ··· 682 684 fsm_deltimer(&ch->timer); 683 685 if (event != CTC_EVENT_STOP) { 684 686 fsm_newstate(fi, oldstate); 685 - ctcm_ccw_check_rc(ch, rc, (char *)__FUNCTION__); 687 + ctcm_ccw_check_rc(ch, rc, (char *)__func__); 686 688 } 687 689 } 688 690 } ··· 701 703 struct net_device *dev = ch->netdev; 702 704 struct ctcm_priv *priv = dev->priv; 703 705 704 - CTCM_DBF_TEXT(TRACE, 3, __FUNCTION__); 706 + CTCM_DBF_TEXT_(SETUP, CTC_DBF_NOTICE, 707 + "%s(%s): %s[%d]\n", 708 + CTCM_FUNTAIL, dev->name, ch->id, state); 705 709 706 710 fsm_deltimer(&ch->timer); 707 711 if (IS_MPC(ch)) ··· 743 743 */ 744 744 static void ctcm_chx_stopped(fsm_instance *fi, int event, void *arg) 745 745 { 746 - CTCM_DBF_TEXT(TRACE, 3, __FUNCTION__); 747 746 ctcm_chx_cleanup(fi, CTC_STATE_STOPPED, arg); 748 747 } 749 748 ··· 770 771 */ 771 772 static void ctcm_chx_fail(fsm_instance *fi, int event, void *arg) 772 773 { 773 - CTCM_DBF_TEXT(TRACE, 3, __FUNCTION__); 774 774 ctcm_chx_cleanup(fi, CTC_STATE_NOTOP, arg); 775 775 } 776 776 ··· 807 809 } 808 810 809 811 CTCM_DBF_TEXT_(ERROR, CTC_DBF_CRIT, 810 - "%s : %s error during %s channel setup state=%s\n", 811 - dev->name, ctc_ch_event_names[event], 812 + "%s(%s) : %s error during %s channel setup state=%s\n", 813 + CTCM_FUNTAIL, dev->name, ctc_ch_event_names[event], 812 814 (CHANNEL_DIRECTION(ch->flags) == READ) ? "RX" : "TX", 813 815 fsm_getstate_str(fi)); 814 816 ··· 836 838 int oldstate; 837 839 int rc; 838 840 839 - CTCM_DBF_TEXT(TRACE, CTC_DBF_NOTICE, __FUNCTION__); 841 + CTCM_DBF_TEXT_(TRACE, CTC_DBF_NOTICE, 842 + "%s: %s[%d] of %s\n", 843 + CTCM_FUNTAIL, ch->id, event, dev->name); 844 + 840 845 fsm_deltimer(&ch->timer); 841 - ctcm_pr_debug("%s: %s channel restart\n", dev->name, 842 - (CHANNEL_DIRECTION(ch->flags) == READ) ? "RX" : "TX"); 846 + 843 847 fsm_addtimer(&ch->timer, CTCM_TIME_5_SEC, CTC_EVENT_TIMER, ch); 844 848 oldstate = fsm_getstate(fi); 845 849 fsm_newstate(fi, CTC_STATE_STARTWAIT); ··· 876 876 struct net_device *dev = ch->netdev; 877 877 struct ctcm_priv *priv = dev->priv; 878 878 879 - CTCM_DBF_TEXT(SETUP, 3, __FUNCTION__); 880 879 if (event == CTC_EVENT_TIMER) { 881 880 if (!IS_MPCDEV(dev)) 882 881 /* TODO : check if MPC deletes timer somewhere */ 883 882 fsm_deltimer(&ch->timer); 884 - ctcm_pr_debug("%s: Timeout during RX init handshake\n", 885 - dev->name); 886 883 if (ch->retry++ < 3) 887 884 ctcm_chx_restart(fi, event, arg); 888 885 else { ··· 904 907 struct net_device *dev = ch->netdev; 905 908 struct ctcm_priv *priv = dev->priv; 906 909 907 - CTCM_DBF_TEXT(SETUP, 3, __FUNCTION__); 910 + CTCM_DBF_TEXT_(ERROR, CTC_DBF_ERROR, 911 + "%s(%s): RX %s busy, init. fail", 912 + CTCM_FUNTAIL, dev->name, ch->id); 908 913 fsm_newstate(fi, CTC_STATE_RXERR); 909 - ctcm_pr_warn("%s: RX busy. Initialization failed\n", dev->name); 910 914 fsm_event(priv->fsm, DEV_EVENT_RXDOWN, dev); 911 915 } 912 916 ··· 925 927 struct net_device *dev = ch->netdev; 926 928 struct ctcm_priv *priv = dev->priv; 927 929 928 - CTCM_DBF_DEV_NAME(TRACE, dev, "Got remote disconnect, re-initializing"); 930 + CTCM_DBF_TEXT_(TRACE, CTC_DBF_NOTICE, 931 + "%s: %s: remote disconnect - re-init ...", 932 + CTCM_FUNTAIL, dev->name); 929 933 fsm_deltimer(&ch->timer); 930 - if (do_debug) 931 - ctcm_pr_debug("%s: Got remote disconnect, " 932 - "re-initializing ...\n", dev->name); 933 934 /* 934 935 * Notify device statemachine 935 936 */ ··· 958 961 959 962 if (event == CTC_EVENT_TIMER) { 960 963 fsm_deltimer(&ch->timer); 961 - CTCM_DBF_DEV_NAME(ERROR, dev, 962 - "Timeout during TX init handshake"); 963 964 if (ch->retry++ < 3) 964 965 ctcm_chx_restart(fi, event, arg); 965 966 else { ··· 966 971 } 967 972 } else { 968 973 CTCM_DBF_TEXT_(ERROR, CTC_DBF_ERROR, 969 - "%s : %s error during channel setup state=%s", 970 - dev->name, ctc_ch_event_names[event], 971 - fsm_getstate_str(fi)); 974 + "%s(%s): %s in %s", CTCM_FUNTAIL, ch->id, 975 + ctc_ch_event_names[event], fsm_getstate_str(fi)); 972 976 973 977 ctcm_pr_warn("%s: Error during TX init handshake\n", dev->name); 974 978 } ··· 987 993 struct ctcm_priv *priv = dev->priv; 988 994 struct sk_buff *skb; 989 995 990 - if (do_debug) 991 - ctcm_pr_debug("ctcmpc enter: %s(): cp=%i ch=0x%p id=%s\n", 992 - __FUNCTION__, smp_processor_id(), ch, ch->id); 996 + CTCM_PR_DEBUG("Enter: %s: cp=%i ch=0x%p id=%s\n", 997 + __func__, smp_processor_id(), ch, ch->id); 993 998 994 999 fsm_deltimer(&ch->timer); 995 1000 if (ch->retry++ > 3) { 996 1001 struct mpc_group *gptr = priv->mpcg; 997 - ctcm_pr_debug("%s: TX retry failed, restarting channel\n", 998 - dev->name); 1002 + CTCM_DBF_TEXT_(TRACE, CTC_DBF_INFO, 1003 + "%s: %s: retries exceeded", 1004 + CTCM_FUNTAIL, ch->id); 999 1005 fsm_event(priv->fsm, DEV_EVENT_TXDOWN, dev); 1000 1006 /* call restart if not MPC or if MPC and mpcg fsm is ready. 1001 1007 use gptr as mpc indicator */ ··· 1004 1010 goto done; 1005 1011 } 1006 1012 1007 - ctcm_pr_debug("%s: TX retry %d\n", dev->name, ch->retry); 1013 + CTCM_DBF_TEXT_(TRACE, CTC_DBF_DEBUG, 1014 + "%s : %s: retry %d", 1015 + CTCM_FUNTAIL, ch->id, ch->retry); 1008 1016 skb = skb_peek(&ch->io_queue); 1009 1017 if (skb) { 1010 1018 int rc = 0; ··· 1014 1018 clear_normalized_cda(&ch->ccw[4]); 1015 1019 ch->ccw[4].count = skb->len; 1016 1020 if (set_normalized_cda(&ch->ccw[4], skb->data)) { 1017 - ctcm_pr_debug("%s: IDAL alloc failed, chan restart\n", 1018 - dev->name); 1021 + CTCM_DBF_TEXT_(TRACE, CTC_DBF_INFO, 1022 + "%s: %s: IDAL alloc failed", 1023 + CTCM_FUNTAIL, ch->id); 1019 1024 fsm_event(priv->fsm, DEV_EVENT_TXDOWN, dev); 1020 1025 ctcm_chx_restart(fi, event, arg); 1021 1026 goto done; ··· 1058 1061 struct channel *ch = arg; 1059 1062 struct net_device *dev = ch->netdev; 1060 1063 struct ctcm_priv *priv = dev->priv; 1064 + int rd = CHANNEL_DIRECTION(ch->flags); 1061 1065 1062 - CTCM_DBF_TEXT(TRACE, 3, __FUNCTION__); 1063 1066 fsm_deltimer(&ch->timer); 1064 - ctcm_pr_warn("%s %s : unrecoverable channel error\n", 1065 - CTC_DRIVER_NAME, dev->name); 1067 + CTCM_DBF_TEXT_(ERROR, CTC_DBF_ERROR, 1068 + "%s: %s: %s unrecoverable channel error", 1069 + CTCM_FUNTAIL, ch->id, rd == READ ? "RX" : "TX"); 1070 + 1066 1071 if (IS_MPC(ch)) { 1067 1072 priv->stats.tx_dropped++; 1068 1073 priv->stats.tx_errors++; 1069 1074 } 1070 - 1071 - if (CHANNEL_DIRECTION(ch->flags) == READ) { 1072 - ctcm_pr_debug("%s: RX I/O error\n", dev->name); 1075 + if (rd == READ) { 1073 1076 fsm_newstate(fi, CTC_STATE_RXERR); 1074 1077 fsm_event(priv->fsm, DEV_EVENT_RXDOWN, dev); 1075 1078 } else { 1076 - ctcm_pr_debug("%s: TX I/O error\n", dev->name); 1077 1079 fsm_newstate(fi, CTC_STATE_TXERR); 1078 1080 fsm_event(priv->fsm, DEV_EVENT_TXDOWN, dev); 1079 1081 } ··· 1212 1216 struct sk_buff *skb; 1213 1217 int first = 1; 1214 1218 int i; 1215 - struct timespec done_stamp; 1216 1219 __u32 data_space; 1217 1220 unsigned long duration; 1218 1221 struct sk_buff *peekskb; 1219 1222 int rc; 1220 1223 struct th_header *header; 1221 1224 struct pdu *p_header; 1225 + struct timespec done_stamp = current_kernel_time(); /* xtime */ 1222 1226 1223 - if (do_debug) 1224 - ctcm_pr_debug("%s cp:%i enter: %s()\n", 1225 - dev->name, smp_processor_id(), __FUNCTION__); 1227 + CTCM_PR_DEBUG("Enter %s: %s cp:%i\n", 1228 + __func__, dev->name, smp_processor_id()); 1226 1229 1227 - done_stamp = current_kernel_time(); /* xtime */ 1228 - duration = (done_stamp.tv_sec - ch->prof.send_stamp.tv_sec) * 1000000 1229 - + (done_stamp.tv_nsec - ch->prof.send_stamp.tv_nsec) / 1000; 1230 + duration = 1231 + (done_stamp.tv_sec - ch->prof.send_stamp.tv_sec) * 1000000 + 1232 + (done_stamp.tv_nsec - ch->prof.send_stamp.tv_nsec) / 1000; 1230 1233 if (duration > ch->prof.tx_time) 1231 1234 ch->prof.tx_time = duration; 1232 1235 1233 1236 if (ch->irb->scsw.cmd.count != 0) 1234 - ctcm_pr_debug("%s: TX not complete, remaining %d bytes\n", 1235 - dev->name, ch->irb->scsw.cmd.count); 1237 + CTCM_DBF_TEXT_(MPC_TRACE, CTC_DBF_DEBUG, 1238 + "%s(%s): TX not complete, remaining %d bytes", 1239 + CTCM_FUNTAIL, dev->name, ch->irb->scsw.cmd.count); 1236 1240 fsm_deltimer(&ch->timer); 1237 1241 while ((skb = skb_dequeue(&ch->io_queue))) { 1238 1242 priv->stats.tx_packets++; ··· 1246 1250 } 1247 1251 spin_lock(&ch->collect_lock); 1248 1252 clear_normalized_cda(&ch->ccw[4]); 1249 - 1250 1253 if ((ch->collect_len <= 0) || (grp->in_sweep != 0)) { 1251 1254 spin_unlock(&ch->collect_lock); 1252 1255 fsm_newstate(fi, CTC_STATE_TXIDLE); ··· 1264 1269 if (ch->prof.maxcqueue < skb_queue_len(&ch->collect_queue)) 1265 1270 ch->prof.maxcqueue = skb_queue_len(&ch->collect_queue); 1266 1271 i = 0; 1267 - 1268 - if (do_debug_data) 1269 - ctcm_pr_debug("ctcmpc: %s() building " 1270 - "trans_skb from collect_q \n", __FUNCTION__); 1271 - 1272 + p_header = NULL; 1272 1273 data_space = grp->group_max_buflen - TH_HEADER_LENGTH; 1273 1274 1274 - if (do_debug_data) 1275 - ctcm_pr_debug("ctcmpc: %s() building trans_skb from collect_q" 1276 - " data_space:%04x\n", __FUNCTION__, data_space); 1277 - p_header = NULL; 1275 + CTCM_PR_DBGDATA("%s: building trans_skb from collect_q" 1276 + " data_space:%04x\n", 1277 + __func__, data_space); 1278 + 1278 1279 while ((skb = skb_dequeue(&ch->collect_queue))) { 1279 1280 memcpy(skb_put(ch->trans_skb, skb->len), skb->data, skb->len); 1280 1281 p_header = (struct pdu *) ··· 1281 1290 else 1282 1291 p_header->pdu_flag |= 0x20; 1283 1292 1284 - if (do_debug_data) { 1285 - ctcm_pr_debug("ctcmpc: %s()trans_skb len:%04x \n", 1286 - __FUNCTION__, ch->trans_skb->len); 1287 - ctcm_pr_debug("ctcmpc: %s() pdu header and data" 1288 - " for up to 32 bytes sent to vtam\n", 1289 - __FUNCTION__); 1290 - ctcmpc_dumpit((char *)p_header, 1291 - min_t(int, skb->len, 32)); 1292 - } 1293 + CTCM_PR_DBGDATA("%s: trans_skb len:%04x \n", 1294 + __func__, ch->trans_skb->len); 1295 + CTCM_PR_DBGDATA("%s: pdu header and data for up" 1296 + " to 32 bytes sent to vtam\n", __func__); 1297 + CTCM_D3_DUMP((char *)p_header, min_t(int, skb->len, 32)); 1298 + 1293 1299 ch->collect_len -= skb->len; 1294 1300 data_space -= skb->len; 1295 1301 priv->stats.tx_packets++; ··· 1302 1314 if (p_header) 1303 1315 p_header->pdu_flag |= PDU_LAST; /*Say it's the last one*/ 1304 1316 header = kzalloc(TH_HEADER_LENGTH, gfp_type()); 1305 - 1306 1317 if (!header) { 1307 - printk(KERN_WARNING "ctcmpc: OUT OF MEMORY IN %s()" 1308 - ": Data Lost \n", __FUNCTION__); 1309 1318 spin_unlock(&ch->collect_lock); 1310 1319 fsm_event(priv->mpcg->fsm, MPCG_EVENT_INOP, dev); 1311 - goto done; 1320 + goto done; 1312 1321 } 1313 - 1314 1322 header->th_ch_flag = TH_HAS_PDU; /* Normal data */ 1315 1323 ch->th_seq_num++; 1316 1324 header->th_seq_num = ch->th_seq_num; 1317 1325 1318 - if (do_debug_data) 1319 - ctcm_pr_debug("%s: ToVTAM_th_seq= %08x\n" , 1320 - __FUNCTION__, ch->th_seq_num); 1326 + CTCM_PR_DBGDATA("%s: ToVTAM_th_seq= %08x\n" , 1327 + __func__, ch->th_seq_num); 1321 1328 1322 1329 memcpy(skb_push(ch->trans_skb, TH_HEADER_LENGTH), header, 1323 1330 TH_HEADER_LENGTH); /* put the TH on the packet */ 1324 1331 1325 1332 kfree(header); 1326 1333 1327 - if (do_debug_data) { 1328 - ctcm_pr_debug("ctcmpc: %s()trans_skb len:%04x \n", 1329 - __FUNCTION__, ch->trans_skb->len); 1330 - 1331 - ctcm_pr_debug("ctcmpc: %s() up-to-50 bytes of trans_skb " 1332 - "data to vtam from collect_q\n", __FUNCTION__); 1333 - ctcmpc_dumpit((char *)ch->trans_skb->data, 1334 + CTCM_PR_DBGDATA("%s: trans_skb len:%04x \n", 1335 + __func__, ch->trans_skb->len); 1336 + CTCM_PR_DBGDATA("%s: up-to-50 bytes of trans_skb " 1337 + "data to vtam from collect_q\n", __func__); 1338 + CTCM_D3_DUMP((char *)ch->trans_skb->data, 1334 1339 min_t(int, ch->trans_skb->len, 50)); 1335 - } 1336 1340 1337 1341 spin_unlock(&ch->collect_lock); 1338 1342 clear_normalized_cda(&ch->ccw[1]); 1339 1343 if (set_normalized_cda(&ch->ccw[1], ch->trans_skb->data)) { 1340 1344 dev_kfree_skb_any(ch->trans_skb); 1341 1345 ch->trans_skb = NULL; 1342 - printk(KERN_WARNING 1343 - "ctcmpc: %s()CCW failure - data lost\n", 1344 - __FUNCTION__); 1346 + CTCM_DBF_TEXT_(MPC_TRACE, CTC_DBF_ERROR, 1347 + "%s: %s: IDAL alloc failed", 1348 + CTCM_FUNTAIL, ch->id); 1345 1349 fsm_event(priv->mpcg->fsm, MPCG_EVENT_INOP, dev); 1346 1350 return; 1347 1351 } ··· 1353 1373 } 1354 1374 done: 1355 1375 ctcm_clear_busy(dev); 1356 - ctcm_pr_debug("ctcmpc exit: %s %s()\n", dev->name, __FUNCTION__); 1357 1376 return; 1358 1377 } 1359 1378 ··· 1372 1393 struct mpc_group *grp = priv->mpcg; 1373 1394 struct sk_buff *skb = ch->trans_skb; 1374 1395 struct sk_buff *new_skb; 1375 - unsigned long saveflags = 0; /* avoids compiler warning */ 1396 + unsigned long saveflags = 0; /* avoids compiler warning */ 1376 1397 int len = ch->max_bufsize - ch->irb->scsw.cmd.count; 1377 1398 1378 - if (do_debug_data) { 1379 - CTCM_DBF_TEXT_(TRACE, CTC_DBF_DEBUG, "mpc_ch_rx %s cp:%i %s\n", 1380 - dev->name, smp_processor_id(), ch->id); 1381 - CTCM_DBF_TEXT_(TRACE, CTC_DBF_DEBUG, "mpc_ch_rx: maxbuf: %04x " 1382 - "len: %04x\n", ch->max_bufsize, len); 1383 - } 1399 + CTCM_PR_DEBUG("%s: %s: cp:%i %s maxbuf : %04x, len: %04x\n", 1400 + CTCM_FUNTAIL, dev->name, smp_processor_id(), 1401 + ch->id, ch->max_bufsize, len); 1384 1402 fsm_deltimer(&ch->timer); 1385 1403 1386 1404 if (skb == NULL) { 1387 - ctcm_pr_debug("ctcmpc exit: %s() TRANS_SKB = NULL \n", 1388 - __FUNCTION__); 1389 - goto again; 1405 + CTCM_DBF_TEXT_(MPC_ERROR, CTC_DBF_ERROR, 1406 + "%s(%s): TRANS_SKB = NULL", 1407 + CTCM_FUNTAIL, dev->name); 1408 + goto again; 1390 1409 } 1391 1410 1392 1411 if (len < TH_HEADER_LENGTH) { 1393 - ctcm_pr_info("%s: got packet with invalid length %d\n", 1394 - dev->name, len); 1412 + CTCM_DBF_TEXT_(MPC_ERROR, CTC_DBF_ERROR, 1413 + "%s(%s): packet length %d to short", 1414 + CTCM_FUNTAIL, dev->name, len); 1395 1415 priv->stats.rx_dropped++; 1396 1416 priv->stats.rx_length_errors++; 1397 1417 } else { ··· 1400 1422 new_skb = __dev_alloc_skb(ch->max_bufsize, GFP_ATOMIC); 1401 1423 1402 1424 if (new_skb == NULL) { 1403 - printk(KERN_INFO "ctcmpc:%s() NEW_SKB = NULL\n", 1404 - __FUNCTION__); 1405 - printk(KERN_WARNING "ctcmpc: %s() MEMORY ALLOC FAILED" 1406 - " - DATA LOST - MPC FAILED\n", 1407 - __FUNCTION__); 1425 + CTCM_DBF_TEXT_(MPC_ERROR, CTC_DBF_ERROR, 1426 + "%s(%d): skb allocation failed", 1427 + CTCM_FUNTAIL, dev->name); 1408 1428 fsm_event(priv->mpcg->fsm, MPCG_EVENT_INOP, dev); 1409 1429 goto again; 1410 1430 } ··· 1455 1479 break; 1456 1480 } 1457 1481 1458 - if (do_debug) 1459 - ctcm_pr_debug("ctcmpc exit : %s %s(): ch=0x%p id=%s\n", 1460 - dev->name, __FUNCTION__, ch, ch->id); 1482 + CTCM_PR_DEBUG("Exit %s: %s, ch=0x%p, id=%s\n", 1483 + __func__, dev->name, ch, ch->id); 1461 1484 1462 1485 } 1463 1486 ··· 1472 1497 struct channel *ch = arg; 1473 1498 struct net_device *dev = ch->netdev; 1474 1499 struct ctcm_priv *priv = dev->priv; 1500 + struct mpc_group *gptr = priv->mpcg; 1475 1501 1476 - if (do_debug) { 1477 - struct mpc_group *gptr = priv->mpcg; 1478 - ctcm_pr_debug("ctcmpc enter: %s(): ch=0x%p id=%s\n", 1479 - __FUNCTION__, ch, ch->id); 1480 - ctcm_pr_debug("%s() %s chstate:%i grpstate:%i chprotocol:%i\n", 1481 - __FUNCTION__, ch->id, fsm_getstate(fi), 1482 - fsm_getstate(gptr->fsm), ch->protocol); 1483 - } 1502 + CTCM_PR_DEBUG("Enter %s: id=%s, ch=0x%p\n", 1503 + __func__, ch->id, ch); 1504 + 1505 + CTCM_DBF_TEXT_(MPC_TRACE, CTC_DBF_INFO, 1506 + "%s: %s: chstate:%i, grpstate:%i, prot:%i\n", 1507 + CTCM_FUNTAIL, ch->id, fsm_getstate(fi), 1508 + fsm_getstate(gptr->fsm), ch->protocol); 1509 + 1484 1510 if (fsm_getstate(fi) == CTC_STATE_TXIDLE) 1485 1511 MPC_DBF_DEV_NAME(TRACE, dev, "remote side issued READ? "); 1486 1512 ··· 1507 1531 ? CTC_STATE_RXINIT : CTC_STATE_TXINIT); 1508 1532 1509 1533 done: 1510 - if (do_debug) 1511 - ctcm_pr_debug("ctcmpc exit : %s(): ch=0x%p id=%s\n", 1512 - __FUNCTION__, ch, ch->id); 1534 + CTCM_PR_DEBUG("Exit %s: id=%s, ch=0x%p\n", 1535 + __func__, ch->id, ch); 1513 1536 return; 1514 1537 } 1515 1538 ··· 1531 1556 unsigned long saveflags = 0; /* avoids compiler warning */ 1532 1557 1533 1558 fsm_deltimer(&ch->timer); 1534 - ctcm_pr_debug("%s cp:%i enter: %s()\n", 1535 - dev->name, smp_processor_id(), __FUNCTION__); 1536 - if (do_debug) 1537 - ctcm_pr_debug("%s() %s chstate:%i grpstate:%i\n", 1538 - __FUNCTION__, ch->id, 1539 - fsm_getstate(fi), fsm_getstate(grp->fsm)); 1559 + CTCM_PR_DEBUG("%s: %s: %s: cp:%i, chstate:%i grpstate:%i\n", 1560 + __func__, ch->id, dev->name, smp_processor_id(), 1561 + fsm_getstate(fi), fsm_getstate(grp->fsm)); 1540 1562 1541 1563 fsm_newstate(fi, CTC_STATE_RXIDLE); 1542 1564 /* XID processing complete */ ··· 1547 1575 skb_reset_tail_pointer(ch->trans_skb); 1548 1576 ch->trans_skb->len = 0; 1549 1577 ch->ccw[1].count = ch->max_bufsize; 1550 - if (do_debug_ccw) 1551 - ctcmpc_dumpit((char *)&ch->ccw[0], 1552 - sizeof(struct ccw1) * 3); 1578 + CTCM_CCW_DUMP((char *)&ch->ccw[0], sizeof(struct ccw1) * 3); 1553 1579 if (event == CTC_EVENT_START) 1554 1580 /* see remark about conditional locking */ 1555 1581 spin_lock_irqsave(get_ccwdev_lock(ch->cdev), saveflags); ··· 1568 1598 1569 1599 fsm_event(priv->fsm, DEV_EVENT_RXUP, dev); 1570 1600 done: 1571 - if (do_debug) 1572 - ctcm_pr_debug("ctcmpc exit: %s %s()\n", 1573 - dev->name, __FUNCTION__); 1574 1601 return; 1575 1602 } 1576 1603 ··· 1583 1616 struct ctcm_priv *priv = dev->priv; 1584 1617 struct mpc_group *grp = priv->mpcg; 1585 1618 1586 - if (do_debug) { 1587 - ctcm_pr_debug("ctcmpc enter: %s(): cp=%i ch=0x%p id=%s" 1588 - "GrpState:%s ChState:%s\n", 1589 - __FUNCTION__, smp_processor_id(), ch, ch->id, 1590 - fsm_getstate_str(grp->fsm), 1591 - fsm_getstate_str(ch->fsm)); 1592 - } 1619 + CTCM_PR_DEBUG("%s(%s): %s(ch=0x%p), cp=%i, ChStat:%s, GrpStat:%s\n", 1620 + __func__, dev->name, ch->id, ch, smp_processor_id(), 1621 + fsm_getstate_str(ch->fsm), fsm_getstate_str(grp->fsm)); 1593 1622 1594 1623 switch (fsm_getstate(grp->fsm)) { 1595 1624 case MPCG_STATE_XID2INITW: ··· 1627 1664 break; 1628 1665 } 1629 1666 1630 - if (do_debug) 1631 - ctcm_pr_debug("ctcmpc exit : %s(): cp=%i ch=0x%p id=%s\n", 1632 - __FUNCTION__, smp_processor_id(), ch, ch->id); 1633 1667 return; 1634 - 1635 1668 } 1636 1669 1637 1670 /* ··· 1642 1683 struct ctcm_priv *priv = dev->priv; 1643 1684 struct mpc_group *grp = priv->mpcg; 1644 1685 1645 - ctcm_pr_debug("ctcmpc enter: %s %s() %s \nGrpState:%s ChState:%s\n", 1646 - dev->name, 1647 - __FUNCTION__, ch->id, 1648 - fsm_getstate_str(grp->fsm), 1649 - fsm_getstate_str(ch->fsm)); 1686 + CTCM_PR_DEBUG("%s(%s): %s\n ChState:%s GrpState:%s\n", 1687 + __func__, dev->name, ch->id, 1688 + fsm_getstate_str(ch->fsm), fsm_getstate_str(grp->fsm)); 1650 1689 1651 1690 fsm_deltimer(&ch->timer); 1652 1691 ··· 1707 1750 if (ch->in_mpcgroup) 1708 1751 fsm_event(grp->fsm, MPCG_EVENT_XID0DO, ch); 1709 1752 else 1710 - printk(KERN_WARNING "ctcmpc: %s() Not all channels have" 1711 - " been added to group\n", __FUNCTION__); 1753 + CTCM_DBF_TEXT_(MPC_ERROR, CTC_DBF_ERROR, 1754 + "%s(%s): channel %s not added to group", 1755 + CTCM_FUNTAIL, dev->name, ch->id); 1712 1756 1713 1757 done: 1714 - if (do_debug) 1715 - ctcm_pr_debug("ctcmpc exit : %s()%s ch=0x%p id=%s\n", 1716 - __FUNCTION__, dev->name, ch, ch->id); 1717 - 1718 1758 return; 1719 - 1720 1759 } 1721 1760 1722 1761 /* ··· 1727 1774 struct ctcm_priv *priv = dev->priv; 1728 1775 struct mpc_group *grp = priv->mpcg; 1729 1776 1730 - ctcm_pr_debug("ctcmpc enter: %s %s() %s \nGrpState:%s ChState:%s\n", 1731 - dev->name, __FUNCTION__, ch->id, 1732 - fsm_getstate_str(grp->fsm), 1733 - fsm_getstate_str(ch->fsm)); 1734 - 1735 1777 fsm_event(grp->fsm, MPCG_EVENT_XID0DO, ch); 1736 - 1737 1778 return; 1738 1779 } 1739 1780 ··· 1749 1802 int rc = 0; 1750 1803 unsigned long saveflags = 0; 1751 1804 1752 - if (do_debug) 1753 - ctcm_pr_debug("ctcmpc enter: %s(): cp=%i ch=0x%p id=%s\n", 1754 - __FUNCTION__, smp_processor_id(), ach, ach->id); 1805 + CTCM_PR_DEBUG("ctcmpc enter: %s(): cp=%i ch=0x%p id=%s\n", 1806 + __func__, smp_processor_id(), ach, ach->id); 1755 1807 1756 1808 if (grp->in_sweep == 0) 1757 1809 goto done; 1758 1810 1759 - if (do_debug_data) { 1760 - ctcm_pr_debug("ctcmpc: %s() 1: ToVTAM_th_seq= %08x\n" , 1761 - __FUNCTION__, wch->th_seq_num); 1762 - ctcm_pr_debug("ctcmpc: %s() 1: FromVTAM_th_seq= %08x\n" , 1763 - __FUNCTION__, rch->th_seq_num); 1764 - } 1811 + CTCM_PR_DBGDATA("%s: 1: ToVTAM_th_seq= %08x\n" , 1812 + __func__, wch->th_seq_num); 1813 + CTCM_PR_DBGDATA("%s: 1: FromVTAM_th_seq= %08x\n" , 1814 + __func__, rch->th_seq_num); 1765 1815 1766 1816 if (fsm_getstate(wch->fsm) != CTC_STATE_TXIDLE) { 1767 1817 /* give the previous IO time to complete */ ··· 1797 1853 1798 1854 header->sw.th_last_seq = wch->th_seq_num; 1799 1855 1800 - if (do_debug_ccw) 1801 - ctcmpc_dumpit((char *)&wch->ccw[3], sizeof(struct ccw1) * 3); 1802 - 1803 - ctcm_pr_debug("ctcmpc: %s() sweep packet\n", __FUNCTION__); 1804 - ctcmpc_dumpit((char *)header, TH_SWEEP_LENGTH); 1856 + CTCM_CCW_DUMP((char *)&wch->ccw[3], sizeof(struct ccw1) * 3); 1857 + CTCM_PR_DBGDATA("%s: sweep packet\n", __func__); 1858 + CTCM_D3_DUMP((char *)header, TH_SWEEP_LENGTH); 1805 1859 1806 1860 fsm_addtimer(&wch->timer, CTCM_TIME_5_SEC, CTC_EVENT_TIMER, wch); 1807 1861 fsm_newstate(wch->fsm, CTC_STATE_TX); ··· 1818 1876 ctcm_clear_busy_do(dev); 1819 1877 } 1820 1878 1821 - if (do_debug_data) { 1822 - ctcm_pr_debug("ctcmpc: %s()2: ToVTAM_th_seq= %08x\n" , 1823 - __FUNCTION__, wch->th_seq_num); 1824 - ctcm_pr_debug("ctcmpc: %s()2: FromVTAM_th_seq= %08x\n" , 1825 - __FUNCTION__, rch->th_seq_num); 1826 - } 1879 + CTCM_PR_DBGDATA("%s: To-/From-VTAM_th_seq = %08x/%08x\n" , 1880 + __func__, wch->th_seq_num, rch->th_seq_num); 1827 1881 1828 1882 if (rc != 0) 1829 1883 ctcm_ccw_check_rc(wch, rc, "send sweep"); 1830 1884 1831 1885 done: 1832 - if (do_debug) 1833 - ctcm_pr_debug("ctcmpc exit: %s() %s\n", __FUNCTION__, ach->id); 1834 1886 return; 1835 1887 } 1836 1888 ··· 2085 2149 struct channel *ch = priv->channel[direction]; 2086 2150 fsm_event(ch->fsm, CTC_EVENT_STOP, ch); 2087 2151 ch->th_seq_num = 0x00; 2088 - if (do_debug) 2089 - ctcm_pr_debug("ctcm: %s() CH_th_seq= %08x\n", 2090 - __FUNCTION__, ch->th_seq_num); 2152 + CTCM_PR_DEBUG("%s: CH_th_seq= %08x\n", 2153 + __func__, ch->th_seq_num); 2091 2154 } 2092 2155 if (IS_MPC(priv)) 2093 2156 fsm_newstate(priv->mpcg->fsm, MPCG_STATE_RESET); ··· 2134 2199 { 2135 2200 struct net_device *dev = arg; 2136 2201 struct ctcm_priv *priv = dev->priv; 2202 + int dev_stat = fsm_getstate(fi); 2137 2203 2138 - CTCMY_DBF_DEV_NAME(SETUP, dev, ""); 2204 + CTCM_DBF_TEXT_(SETUP, CTC_DBF_NOTICE, 2205 + "%s(%s): priv = %p [%d,%d]\n ", CTCM_FUNTAIL, 2206 + dev->name, dev->priv, dev_stat, event); 2139 2207 2140 2208 switch (fsm_getstate(fi)) { 2141 2209 case DEV_STATE_STARTWAIT_RXTX:
+239 -277
drivers/s390/net/ctcm_main.c
··· 84 84 skb_pull(pskb, LL_HEADER_LENGTH); 85 85 if ((ch->protocol == CTCM_PROTO_S390) && 86 86 (header->type != ETH_P_IP)) { 87 - 88 87 if (!(ch->logflags & LOG_FLAG_ILLEGALPKT)) { 88 + ch->logflags |= LOG_FLAG_ILLEGALPKT; 89 89 /* 90 90 * Check packet type only if we stick strictly 91 91 * to S/390's protocol of OS390. This only 92 92 * supports IP. Otherwise allow any packet 93 93 * type. 94 94 */ 95 - ctcm_pr_warn("%s Illegal packet type 0x%04x " 96 - "received, dropping\n", 97 - dev->name, header->type); 98 - ch->logflags |= LOG_FLAG_ILLEGALPKT; 95 + CTCM_DBF_TEXT_(ERROR, CTC_DBF_ERROR, 96 + "%s(%s): Illegal packet type 0x%04x" 97 + " - dropping", 98 + CTCM_FUNTAIL, dev->name, header->type); 99 99 } 100 - 101 100 priv->stats.rx_dropped++; 102 101 priv->stats.rx_frame_errors++; 103 102 return; ··· 104 105 pskb->protocol = ntohs(header->type); 105 106 if (header->length <= LL_HEADER_LENGTH) { 106 107 if (!(ch->logflags & LOG_FLAG_ILLEGALSIZE)) { 107 - ctcm_pr_warn( 108 - "%s Illegal packet size %d " 109 - "received (MTU=%d blocklen=%d), " 110 - "dropping\n", dev->name, header->length, 111 - dev->mtu, len); 108 + CTCM_DBF_TEXT_(ERROR, CTC_DBF_ERROR, 109 + "%s(%s): Illegal packet size %d(%d,%d)" 110 + "- dropping", 111 + CTCM_FUNTAIL, dev->name, 112 + header->length, dev->mtu, len); 112 113 ch->logflags |= LOG_FLAG_ILLEGALSIZE; 113 114 } 114 115 ··· 121 122 if ((header->length > skb_tailroom(pskb)) || 122 123 (header->length > len)) { 123 124 if (!(ch->logflags & LOG_FLAG_OVERRUN)) { 124 - ctcm_pr_warn( 125 - "%s Illegal packet size %d (beyond the" 126 - " end of received data), dropping\n", 127 - dev->name, header->length); 125 + CTCM_DBF_TEXT_(ERROR, CTC_DBF_ERROR, 126 + "%s(%s): Packet size %d (overrun)" 127 + " - dropping", CTCM_FUNTAIL, 128 + dev->name, header->length); 128 129 ch->logflags |= LOG_FLAG_OVERRUN; 129 130 } 130 131 ··· 138 139 skb = dev_alloc_skb(pskb->len); 139 140 if (!skb) { 140 141 if (!(ch->logflags & LOG_FLAG_NOMEM)) { 141 - ctcm_pr_warn( 142 - "%s Out of memory in ctcm_unpack_skb\n", 143 - dev->name); 142 + CTCM_DBF_TEXT_(ERROR, CTC_DBF_ERROR, 143 + "%s(%s): MEMORY allocation error", 144 + CTCM_FUNTAIL, dev->name); 144 145 ch->logflags |= LOG_FLAG_NOMEM; 145 146 } 146 147 priv->stats.rx_dropped++; ··· 183 184 */ 184 185 static void channel_free(struct channel *ch) 185 186 { 186 - CTCM_DBF_TEXT(TRACE, 2, __FUNCTION__); 187 + CTCM_DBF_TEXT_(SETUP, CTC_DBF_INFO, "%s(%s)", CTCM_FUNTAIL, ch->id); 187 188 ch->flags &= ~CHANNEL_FLAGS_INUSE; 188 189 fsm_newstate(ch->fsm, CTC_STATE_IDLE); 189 190 } ··· 250 251 { 251 252 struct channel *ch = channels; 252 253 253 - if (do_debug) { 254 - char buf[64]; 255 - sprintf(buf, "%s(%d, %s, %d)\n", 256 - CTCM_FUNTAIL, type, id, direction); 257 - CTCM_DBF_TEXT(TRACE, CTC_DBF_INFO, buf); 258 - } 259 254 while (ch && (strncmp(ch->id, id, CTCM_ID_SIZE) || (ch->type != type))) 260 255 ch = ch->next; 261 256 if (!ch) { 262 - char buf[64]; 263 - sprintf(buf, "%s(%d, %s, %d) not found in channel list\n", 257 + CTCM_DBF_TEXT_(ERROR, CTC_DBF_ERROR, 258 + "%s(%d, %s, %d) not found in channel list\n", 264 259 CTCM_FUNTAIL, type, id, direction); 265 - CTCM_DBF_TEXT(ERROR, CTC_DBF_ERROR, buf); 266 260 } else { 267 261 if (ch->flags & CHANNEL_FLAGS_INUSE) 268 262 ch = NULL; ··· 275 283 if (!IS_ERR(irb)) 276 284 return 0; 277 285 278 - CTCM_DBF_TEXT_(ERROR, CTC_DBF_WARN, "irb error %ld on device %s\n", 279 - PTR_ERR(irb), cdev->dev.bus_id); 286 + CTCM_DBF_TEXT_(ERROR, CTC_DBF_WARN, 287 + "irb error %ld on device %s\n", 288 + PTR_ERR(irb), cdev->dev.bus_id); 280 289 281 290 switch (PTR_ERR(irb)) { 282 291 case -EIO: ··· 300 307 * ch The channel, the sense code belongs to. 301 308 * sense The sense code to inspect. 302 309 */ 303 - static inline void ccw_unit_check(struct channel *ch, unsigned char sense) 310 + static inline void ccw_unit_check(struct channel *ch, __u8 sense) 304 311 { 305 - CTCM_DBF_TEXT(TRACE, 5, __FUNCTION__); 312 + CTCM_DBF_TEXT_(TRACE, CTC_DBF_DEBUG, 313 + "%s(%s): %02x", 314 + CTCM_FUNTAIL, ch->id, sense); 315 + 306 316 if (sense & SNS0_INTERVENTION_REQ) { 307 317 if (sense & 0x01) { 308 - ctcm_pr_debug("%s: Interface disc. or Sel. reset " 309 - "(remote)\n", ch->id); 318 + if (ch->sense_rc != 0x01) { 319 + ctcm_pr_debug("%s: Interface disc. or Sel. " 320 + "reset (remote)\n", ch->id); 321 + ch->sense_rc = 0x01; 322 + } 310 323 fsm_event(ch->fsm, CTC_EVENT_UC_RCRESET, ch); 311 324 } else { 312 - ctcm_pr_debug("%s: System reset (remote)\n", ch->id); 325 + if (ch->sense_rc != SNS0_INTERVENTION_REQ) { 326 + ctcm_pr_debug("%s: System reset (remote)\n", 327 + ch->id); 328 + ch->sense_rc = SNS0_INTERVENTION_REQ; 329 + } 313 330 fsm_event(ch->fsm, CTC_EVENT_UC_RSRESET, ch); 314 331 } 315 332 } else if (sense & SNS0_EQUIPMENT_CHECK) { 316 333 if (sense & SNS0_BUS_OUT_CHECK) { 317 - ctcm_pr_warn("%s: Hardware malfunction (remote)\n", 318 - ch->id); 334 + if (ch->sense_rc != SNS0_BUS_OUT_CHECK) { 335 + CTCM_DBF_TEXT_(TRACE, CTC_DBF_WARN, 336 + "%s(%s): remote HW error %02x", 337 + CTCM_FUNTAIL, ch->id, sense); 338 + ch->sense_rc = SNS0_BUS_OUT_CHECK; 339 + } 319 340 fsm_event(ch->fsm, CTC_EVENT_UC_HWFAIL, ch); 320 341 } else { 321 - ctcm_pr_warn("%s: Read-data parity error (remote)\n", 322 - ch->id); 342 + if (ch->sense_rc != SNS0_EQUIPMENT_CHECK) { 343 + CTCM_DBF_TEXT_(TRACE, CTC_DBF_WARN, 344 + "%s(%s): remote read parity error %02x", 345 + CTCM_FUNTAIL, ch->id, sense); 346 + ch->sense_rc = SNS0_EQUIPMENT_CHECK; 347 + } 323 348 fsm_event(ch->fsm, CTC_EVENT_UC_RXPARITY, ch); 324 349 } 325 350 } else if (sense & SNS0_BUS_OUT_CHECK) { 326 - if (sense & 0x04) { 327 - ctcm_pr_warn("%s: Data-streaming timeout)\n", ch->id); 328 - fsm_event(ch->fsm, CTC_EVENT_UC_TXTIMEOUT, ch); 329 - } else { 330 - ctcm_pr_warn("%s: Data-transfer parity error\n", 331 - ch->id); 332 - fsm_event(ch->fsm, CTC_EVENT_UC_TXPARITY, ch); 351 + if (ch->sense_rc != SNS0_BUS_OUT_CHECK) { 352 + CTCM_DBF_TEXT_(TRACE, CTC_DBF_WARN, 353 + "%s(%s): BUS OUT error %02x", 354 + CTCM_FUNTAIL, ch->id, sense); 355 + ch->sense_rc = SNS0_BUS_OUT_CHECK; 333 356 } 357 + if (sense & 0x04) /* data-streaming timeout */ 358 + fsm_event(ch->fsm, CTC_EVENT_UC_TXTIMEOUT, ch); 359 + else /* Data-transfer parity error */ 360 + fsm_event(ch->fsm, CTC_EVENT_UC_TXPARITY, ch); 334 361 } else if (sense & SNS0_CMD_REJECT) { 335 - ctcm_pr_warn("%s: Command reject\n", ch->id); 362 + if (ch->sense_rc != SNS0_CMD_REJECT) { 363 + CTCM_DBF_TEXT_(TRACE, CTC_DBF_WARN, 364 + "%s(%s): Command rejected", 365 + CTCM_FUNTAIL, ch->id); 366 + ch->sense_rc = SNS0_CMD_REJECT; 367 + } 336 368 } else if (sense == 0) { 337 - ctcm_pr_debug("%s: Unit check ZERO\n", ch->id); 369 + CTCM_DBF_TEXT_(TRACE, CTC_DBF_WARN, 370 + "%s(%s): Unit check ZERO", 371 + CTCM_FUNTAIL, ch->id); 338 372 fsm_event(ch->fsm, CTC_EVENT_UC_ZERO, ch); 339 373 } else { 340 - ctcm_pr_warn("%s: Unit Check with sense code: %02x\n", 341 - ch->id, sense); 374 + CTCM_DBF_TEXT_(TRACE, CTC_DBF_WARN, 375 + "%s(%s): Unit check code %02x unknown", 376 + CTCM_FUNTAIL, ch->id, sense); 342 377 fsm_event(ch->fsm, CTC_EVENT_UC_UNKNOWN, ch); 343 378 } 344 379 } 345 380 346 381 int ctcm_ch_alloc_buffer(struct channel *ch) 347 382 { 348 - CTCM_DBF_TEXT(TRACE, 5, __FUNCTION__); 349 - 350 383 clear_normalized_cda(&ch->ccw[1]); 351 384 ch->trans_skb = __dev_alloc_skb(ch->max_bufsize, GFP_ATOMIC | GFP_DMA); 352 385 if (ch->trans_skb == NULL) { 353 - ctcm_pr_warn("%s: Couldn't alloc %s trans_skb\n", 354 - ch->id, 386 + CTCM_DBF_TEXT_(ERROR, CTC_DBF_ERROR, 387 + "%s(%s): %s trans_skb allocation error", 388 + CTCM_FUNTAIL, ch->id, 355 389 (CHANNEL_DIRECTION(ch->flags) == READ) ? "RX" : "TX"); 356 390 return -ENOMEM; 357 391 } ··· 387 367 if (set_normalized_cda(&ch->ccw[1], ch->trans_skb->data)) { 388 368 dev_kfree_skb(ch->trans_skb); 389 369 ch->trans_skb = NULL; 390 - ctcm_pr_warn("%s: set_normalized_cda for %s " 391 - "trans_skb failed, dropping packets\n", 392 - ch->id, 370 + CTCM_DBF_TEXT_(ERROR, CTC_DBF_ERROR, 371 + "%s(%s): %s set norm_cda failed", 372 + CTCM_FUNTAIL, ch->id, 393 373 (CHANNEL_DIRECTION(ch->flags) == READ) ? "RX" : "TX"); 394 374 return -ENOMEM; 395 375 } ··· 536 516 atomic_dec(&skb->users); 537 517 skb_pull(skb, LL_HEADER_LENGTH + 2); 538 518 ctcm_clear_busy(ch->netdev); 539 - return -EBUSY; 519 + return -ENOMEM; 540 520 } 541 521 542 522 skb_reset_tail_pointer(ch->trans_skb); ··· 590 570 struct th_sweep *header; 591 571 struct sk_buff *sweep_skb; 592 572 struct channel *ch; 593 - int rc = 0; 573 + /* int rc = 0; */ 594 574 595 575 priv = dev->priv; 596 576 grp = priv->mpcg; 597 577 ch = priv->channel[WRITE]; 598 - 599 - if (do_debug) 600 - MPC_DBF_DEV_NAME(TRACE, dev, ch->id); 601 578 602 579 /* sweep processing is not complete until response and request */ 603 580 /* has completed for all read channels in group */ ··· 607 590 sweep_skb = __dev_alloc_skb(MPC_BUFSIZE_DEFAULT, GFP_ATOMIC|GFP_DMA); 608 591 609 592 if (sweep_skb == NULL) { 610 - printk(KERN_INFO "Couldn't alloc sweep_skb\n"); 611 - rc = -ENOMEM; 612 - goto done; 593 + /* rc = -ENOMEM; */ 594 + goto nomem; 613 595 } 614 596 615 597 header = kmalloc(TH_SWEEP_LENGTH, gfp_type()); 616 598 617 599 if (!header) { 618 600 dev_kfree_skb_any(sweep_skb); 619 - rc = -ENOMEM; 620 - goto done; 601 + /* rc = -ENOMEM; */ 602 + goto nomem; 621 603 } 622 604 623 605 header->th.th_seg = 0x00 ; ··· 637 621 638 622 return; 639 623 640 - done: 641 - if (rc != 0) { 642 - grp->in_sweep = 0; 643 - ctcm_clear_busy(dev); 644 - fsm_event(grp->fsm, MPCG_EVENT_INOP, dev); 645 - } 624 + nomem: 625 + grp->in_sweep = 0; 626 + ctcm_clear_busy(dev); 627 + fsm_event(grp->fsm, MPCG_EVENT_INOP, dev); 646 628 647 629 return; 648 630 } ··· 662 648 unsigned long saveflags = 0; /* avoids compiler warning */ 663 649 __u16 block_len; 664 650 665 - if (do_debug) 666 - ctcm_pr_debug( 667 - "ctcm enter: %s(): %s cp=%i ch=0x%p id=%s state=%s\n", 668 - __FUNCTION__, dev->name, smp_processor_id(), ch, 669 - ch->id, fsm_getstate_str(ch->fsm)); 651 + CTCM_PR_DEBUG("Enter %s: %s, cp=%i ch=0x%p id=%s state=%s\n", 652 + __func__, dev->name, smp_processor_id(), ch, 653 + ch->id, fsm_getstate_str(ch->fsm)); 670 654 671 655 if ((fsm_getstate(ch->fsm) != CTC_STATE_TXIDLE) || grp->in_sweep) { 672 656 spin_lock_irqsave(&ch->collect_lock, saveflags); ··· 672 660 p_header = kmalloc(PDU_HEADER_LENGTH, gfp_type()); 673 661 674 662 if (!p_header) { 675 - printk(KERN_WARNING "ctcm: OUT OF MEMORY IN %s():" 676 - " Data Lost \n", __FUNCTION__); 677 - 678 - atomic_dec(&skb->users); 679 - dev_kfree_skb_any(skb); 680 663 spin_unlock_irqrestore(&ch->collect_lock, saveflags); 681 - fsm_event(priv->mpcg->fsm, MPCG_EVENT_INOP, dev); 682 - goto done; 664 + goto nomem_exit; 683 665 } 684 666 685 667 p_header->pdu_offset = skb->len; ··· 688 682 memcpy(skb_push(skb, PDU_HEADER_LENGTH), p_header, 689 683 PDU_HEADER_LENGTH); 690 684 691 - if (do_debug_data) { 692 - ctcm_pr_debug("ctcm: %s() Putting on collect_q" 693 - " - skb len: %04x \n", __FUNCTION__, skb->len); 694 - ctcm_pr_debug("ctcm: %s() pdu header and data" 695 - " for up to 32 bytes\n", __FUNCTION__); 696 - ctcmpc_dump32((char *)skb->data, skb->len); 697 - } 685 + CTCM_PR_DEBUG("%s(%s): Put on collect_q - skb len: %04x \n" 686 + "pdu header and data for up to 32 bytes:\n", 687 + __func__, dev->name, skb->len); 688 + CTCM_D3_DUMP((char *)skb->data, min_t(int, 32, skb->len)); 698 689 699 690 skb_queue_tail(&ch->collect_queue, skb); 700 691 ch->collect_len += skb->len; ··· 716 713 if (hi) { 717 714 nskb = __dev_alloc_skb(skb->len, GFP_ATOMIC | GFP_DMA); 718 715 if (!nskb) { 719 - printk(KERN_WARNING "ctcm: %s() OUT OF MEMORY" 720 - "- Data Lost \n", __FUNCTION__); 721 - atomic_dec(&skb->users); 722 - dev_kfree_skb_any(skb); 723 - fsm_event(priv->mpcg->fsm, MPCG_EVENT_INOP, dev); 724 - goto done; 716 + goto nomem_exit; 725 717 } else { 726 718 memcpy(skb_put(nskb, skb->len), skb->data, skb->len); 727 719 atomic_inc(&nskb->users); ··· 728 730 729 731 p_header = kmalloc(PDU_HEADER_LENGTH, gfp_type()); 730 732 731 - if (!p_header) { 732 - printk(KERN_WARNING "ctcm: %s() OUT OF MEMORY" 733 - ": Data Lost \n", __FUNCTION__); 734 - 735 - atomic_dec(&skb->users); 736 - dev_kfree_skb_any(skb); 737 - fsm_event(priv->mpcg->fsm, MPCG_EVENT_INOP, dev); 738 - goto done; 739 - } 733 + if (!p_header) 734 + goto nomem_exit; 740 735 741 736 p_header->pdu_offset = skb->len; 742 737 p_header->pdu_proto = 0x01; ··· 759 768 ch->prof.txlen += skb->len - PDU_HEADER_LENGTH; 760 769 761 770 header = kmalloc(TH_HEADER_LENGTH, gfp_type()); 762 - 763 - if (!header) { 764 - printk(KERN_WARNING "ctcm: %s() OUT OF MEMORY: Data Lost \n", 765 - __FUNCTION__); 766 - atomic_dec(&skb->users); 767 - dev_kfree_skb_any(skb); 768 - fsm_event(priv->mpcg->fsm, MPCG_EVENT_INOP, dev); 769 - goto done; 770 - } 771 + if (!header) 772 + goto nomem_exit; 771 773 772 774 header->th_seg = 0x00; 773 775 header->th_ch_flag = TH_HAS_PDU; /* Normal data */ ··· 769 785 ch->th_seq_num++; 770 786 header->th_seq_num = ch->th_seq_num; 771 787 772 - if (do_debug_data) 773 - ctcm_pr_debug("ctcm: %s() ToVTAM_th_seq= %08x\n" , 774 - __FUNCTION__, ch->th_seq_num); 788 + CTCM_PR_DBGDATA("%s(%s) ToVTAM_th_seq= %08x\n" , 789 + __func__, dev->name, ch->th_seq_num); 775 790 776 791 /* put the TH on the packet */ 777 792 memcpy(skb_push(skb, TH_HEADER_LENGTH), header, TH_HEADER_LENGTH); 778 793 779 794 kfree(header); 780 795 781 - if (do_debug_data) { 782 - ctcm_pr_debug("ctcm: %s(): skb len: %04x \n", 783 - __FUNCTION__, skb->len); 784 - ctcm_pr_debug("ctcm: %s(): pdu header and data for up to 32 " 785 - "bytes sent to vtam\n", __FUNCTION__); 786 - ctcmpc_dump32((char *)skb->data, skb->len); 787 - } 796 + CTCM_PR_DBGDATA("%s(%s): skb len: %04x\n - pdu header and data for " 797 + "up to 32 bytes sent to vtam:\n", 798 + __func__, dev->name, skb->len); 799 + CTCM_D3_DUMP((char *)skb->data, min_t(int, 32, skb->len)); 788 800 789 801 ch->ccw[4].count = skb->len; 790 802 if (set_normalized_cda(&ch->ccw[4], skb->data)) { 791 803 /* 792 - * idal allocation failed, try via copying to 793 - * trans_skb. trans_skb usually has a pre-allocated 794 - * idal. 804 + * idal allocation failed, try via copying to trans_skb. 805 + * trans_skb usually has a pre-allocated idal. 795 806 */ 796 807 if (ctcm_checkalloc_buffer(ch)) { 797 808 /* 798 - * Remove our header. It gets added 799 - * again on retransmit. 809 + * Remove our header. 810 + * It gets added again on retransmit. 800 811 */ 801 - atomic_dec(&skb->users); 802 - dev_kfree_skb_any(skb); 803 - printk(KERN_WARNING "ctcm: %s()OUT OF MEMORY:" 804 - " Data Lost \n", __FUNCTION__); 805 - fsm_event(priv->mpcg->fsm, MPCG_EVENT_INOP, dev); 806 - goto done; 812 + goto nomem_exit; 807 813 } 808 814 809 815 skb_reset_tail_pointer(ch->trans_skb); ··· 803 829 atomic_dec(&skb->users); 804 830 dev_kfree_skb_irq(skb); 805 831 ccw_idx = 0; 806 - if (do_debug_data) { 807 - ctcm_pr_debug("ctcm: %s() TRANS skb len: %d \n", 808 - __FUNCTION__, ch->trans_skb->len); 809 - ctcm_pr_debug("ctcm: %s up to 32 bytes of data" 810 - " sent to vtam\n", __FUNCTION__); 811 - ctcmpc_dump32((char *)ch->trans_skb->data, 812 - ch->trans_skb->len); 813 - } 832 + CTCM_PR_DBGDATA("%s(%s): trans_skb len: %04x\n" 833 + "up to 32 bytes sent to vtam:\n", 834 + __func__, dev->name, ch->trans_skb->len); 835 + CTCM_D3_DUMP((char *)ch->trans_skb->data, 836 + min_t(int, 32, ch->trans_skb->len)); 814 837 } else { 815 838 skb_queue_tail(&ch->io_queue, skb); 816 839 ccw_idx = 3; ··· 836 865 priv->stats.tx_packets++; 837 866 priv->stats.tx_bytes += skb->len - TH_HEADER_LENGTH; 838 867 } 839 - if (ch->th_seq_num > 0xf0000000) /* Chose 4Billion at random. */ 868 + if (ch->th_seq_num > 0xf0000000) /* Chose at random. */ 840 869 ctcmpc_send_sweep_req(ch); 841 870 871 + goto done; 872 + nomem_exit: 873 + CTCM_DBF_TEXT_(MPC_ERROR, CTC_DBF_CRIT, 874 + "%s(%s): MEMORY allocation ERROR\n", 875 + CTCM_FUNTAIL, ch->id); 876 + rc = -ENOMEM; 877 + atomic_dec(&skb->users); 878 + dev_kfree_skb_any(skb); 879 + fsm_event(priv->mpcg->fsm, MPCG_EVENT_INOP, dev); 842 880 done: 843 - if (do_debug) 844 - ctcm_pr_debug("ctcm exit: %s %s()\n", dev->name, __FUNCTION__); 845 - return 0; 881 + CTCM_PR_DEBUG("Exit %s(%s)\n", __func__, dev->name); 882 + return rc; 846 883 } 847 884 848 885 /** ··· 867 888 /* first merge version - leaving both functions separated */ 868 889 static int ctcm_tx(struct sk_buff *skb, struct net_device *dev) 869 890 { 870 - int rc = 0; 871 - struct ctcm_priv *priv; 872 - 873 - CTCM_DBF_TEXT(TRACE, 5, __FUNCTION__); 874 - priv = dev->priv; 891 + struct ctcm_priv *priv = dev->priv; 875 892 876 893 if (skb == NULL) { 877 - ctcm_pr_warn("%s: NULL sk_buff passed\n", dev->name); 894 + CTCM_DBF_TEXT_(ERROR, CTC_DBF_ERROR, 895 + "%s(%s): NULL sk_buff passed", 896 + CTCM_FUNTAIL, dev->name); 878 897 priv->stats.tx_dropped++; 879 898 return 0; 880 899 } 881 900 if (skb_headroom(skb) < (LL_HEADER_LENGTH + 2)) { 882 - ctcm_pr_warn("%s: Got sk_buff with head room < %ld bytes\n", 883 - dev->name, LL_HEADER_LENGTH + 2); 901 + CTCM_DBF_TEXT_(ERROR, CTC_DBF_ERROR, 902 + "%s(%s): Got sk_buff with head room < %ld bytes", 903 + CTCM_FUNTAIL, dev->name, LL_HEADER_LENGTH + 2); 884 904 dev_kfree_skb(skb); 885 905 priv->stats.tx_dropped++; 886 906 return 0; ··· 903 925 904 926 dev->trans_start = jiffies; 905 927 if (ctcm_transmit_skb(priv->channel[WRITE], skb) != 0) 906 - rc = 1; 907 - return rc; 928 + return 1; 929 + return 0; 908 930 } 909 931 910 932 /* unmerged MPC variant of ctcm_tx */ 911 933 static int ctcmpc_tx(struct sk_buff *skb, struct net_device *dev) 912 934 { 913 935 int len = 0; 914 - struct ctcm_priv *priv = NULL; 915 - struct mpc_group *grp = NULL; 936 + struct ctcm_priv *priv = dev->priv; 937 + struct mpc_group *grp = priv->mpcg; 916 938 struct sk_buff *newskb = NULL; 917 939 918 - if (do_debug) 919 - ctcm_pr_debug("ctcmpc enter: %s(): skb:%0lx\n", 920 - __FUNCTION__, (unsigned long)skb); 921 - 922 - CTCM_DBF_TEXT_(MPC_TRACE, CTC_DBF_DEBUG, 923 - "ctcmpc enter: %s(): skb:%0lx\n", 924 - __FUNCTION__, (unsigned long)skb); 925 - 926 - priv = dev->priv; 927 - grp = priv->mpcg; 928 940 /* 929 941 * Some sanity checks ... 930 942 */ 931 943 if (skb == NULL) { 932 - ctcm_pr_warn("ctcmpc: %s: NULL sk_buff passed\n", dev->name); 944 + CTCM_DBF_TEXT_(MPC_ERROR, CTC_DBF_ERROR, 945 + "%s(%s): NULL sk_buff passed", 946 + CTCM_FUNTAIL, dev->name); 933 947 priv->stats.tx_dropped++; 934 948 goto done; 935 949 } 936 950 if (skb_headroom(skb) < (TH_HEADER_LENGTH + PDU_HEADER_LENGTH)) { 937 - CTCM_DBF_TEXT_(MPC_TRACE, CTC_DBF_WARN, 938 - "%s: Got sk_buff with head room < %ld bytes\n", 939 - dev->name, TH_HEADER_LENGTH + PDU_HEADER_LENGTH); 951 + CTCM_DBF_TEXT_(MPC_TRACE, CTC_DBF_ERROR, 952 + "%s(%s): Got sk_buff with head room < %ld bytes", 953 + CTCM_FUNTAIL, dev->name, 954 + TH_HEADER_LENGTH + PDU_HEADER_LENGTH); 940 955 941 - if (do_debug_data) 942 - ctcmpc_dump32((char *)skb->data, skb->len); 956 + CTCM_D3_DUMP((char *)skb->data, min_t(int, 32, skb->len)); 943 957 944 958 len = skb->len + TH_HEADER_LENGTH + PDU_HEADER_LENGTH; 945 959 newskb = __dev_alloc_skb(len, gfp_type() | GFP_DMA); 946 960 947 961 if (!newskb) { 948 - printk(KERN_WARNING "ctcmpc: %s() OUT OF MEMORY-" 949 - "Data Lost\n", 950 - __FUNCTION__); 962 + CTCM_DBF_TEXT_(MPC_TRACE, CTC_DBF_ERROR, 963 + "%s: %s: __dev_alloc_skb failed", 964 + __func__, dev->name); 951 965 952 966 dev_kfree_skb_any(skb); 953 967 priv->stats.tx_dropped++; ··· 963 993 if ((fsm_getstate(priv->fsm) != DEV_STATE_RUNNING) || 964 994 (fsm_getstate(grp->fsm) < MPCG_STATE_XID2INITW)) { 965 995 dev_kfree_skb_any(skb); 966 - printk(KERN_INFO "ctcmpc: %s() DATA RCVD - MPC GROUP " 967 - "NOT ACTIVE - DROPPED\n", 968 - __FUNCTION__); 996 + CTCM_DBF_TEXT_(MPC_ERROR, CTC_DBF_ERROR, 997 + "%s(%s): inactive MPCGROUP - dropped", 998 + CTCM_FUNTAIL, dev->name); 969 999 priv->stats.tx_dropped++; 970 1000 priv->stats.tx_errors++; 971 1001 priv->stats.tx_carrier_errors++; ··· 973 1003 } 974 1004 975 1005 if (ctcm_test_and_set_busy(dev)) { 976 - printk(KERN_WARNING "%s:DEVICE ERR - UNRECOVERABLE DATA LOSS\n", 977 - __FUNCTION__); 1006 + CTCM_DBF_TEXT_(MPC_ERROR, CTC_DBF_ERROR, 1007 + "%s(%s): device busy - dropped", 1008 + CTCM_FUNTAIL, dev->name); 978 1009 dev_kfree_skb_any(skb); 979 1010 priv->stats.tx_dropped++; 980 1011 priv->stats.tx_errors++; ··· 986 1015 987 1016 dev->trans_start = jiffies; 988 1017 if (ctcmpc_transmit_skb(priv->channel[WRITE], skb) != 0) { 989 - printk(KERN_WARNING "ctcmpc: %s() DEVICE ERROR" 990 - ": Data Lost \n", 991 - __FUNCTION__); 992 - printk(KERN_WARNING "ctcmpc: %s() DEVICE ERROR" 993 - " - UNRECOVERABLE DATA LOSS\n", 994 - __FUNCTION__); 1018 + CTCM_DBF_TEXT_(MPC_ERROR, CTC_DBF_ERROR, 1019 + "%s(%s): device error - dropped", 1020 + CTCM_FUNTAIL, dev->name); 995 1021 dev_kfree_skb_any(skb); 996 1022 priv->stats.tx_dropped++; 997 1023 priv->stats.tx_errors++; ··· 1022 1054 struct ctcm_priv *priv; 1023 1055 int max_bufsize; 1024 1056 1025 - CTCM_DBF_TEXT(SETUP, CTC_DBF_INFO, __FUNCTION__); 1026 - 1027 1057 if (new_mtu < 576 || new_mtu > 65527) 1028 1058 return -EINVAL; 1029 1059 ··· 1053 1087 return &((struct ctcm_priv *)dev->priv)->stats; 1054 1088 } 1055 1089 1056 - 1057 - static void ctcm_netdev_unregister(struct net_device *dev) 1058 - { 1059 - CTCM_DBF_TEXT(SETUP, CTC_DBF_INFO, __FUNCTION__); 1060 - if (!dev) 1061 - return; 1062 - unregister_netdev(dev); 1063 - } 1064 - 1065 - static int ctcm_netdev_register(struct net_device *dev) 1066 - { 1067 - CTCM_DBF_TEXT(SETUP, CTC_DBF_INFO, __FUNCTION__); 1068 - return register_netdev(dev); 1069 - } 1070 - 1071 1090 static void ctcm_free_netdevice(struct net_device *dev) 1072 1091 { 1073 1092 struct ctcm_priv *priv; 1074 1093 struct mpc_group *grp; 1075 1094 1076 - CTCM_DBF_TEXT(SETUP, CTC_DBF_INFO, __FUNCTION__); 1077 - 1078 - if (!dev) 1079 - return; 1095 + CTCM_DBF_TEXT_(SETUP, CTC_DBF_INFO, 1096 + "%s(%s)", CTCM_FUNTAIL, dev->name); 1080 1097 priv = dev->priv; 1081 1098 if (priv) { 1082 1099 grp = priv->mpcg; ··· 1120 1171 dev = alloc_netdev(0, CTC_DEVICE_GENE, ctcm_dev_setup); 1121 1172 1122 1173 if (!dev) { 1123 - ctcm_pr_err("%s: Out of memory\n", __FUNCTION__); 1174 + CTCM_DBF_TEXT_(ERROR, CTC_DBF_CRIT, 1175 + "%s: MEMORY allocation ERROR", 1176 + CTCM_FUNTAIL); 1124 1177 return NULL; 1125 1178 } 1126 1179 dev->priv = priv; ··· 1160 1209 } 1161 1210 1162 1211 CTCMY_DBF_DEV(SETUP, dev, "finished"); 1212 + 1163 1213 return dev; 1164 1214 } 1165 1215 ··· 1178 1226 struct net_device *dev; 1179 1227 struct ctcm_priv *priv; 1180 1228 struct ccwgroup_device *cgdev; 1229 + int cstat; 1230 + int dstat; 1181 1231 1182 - CTCM_DBF_TEXT(TRACE, CTC_DBF_DEBUG, __FUNCTION__); 1232 + CTCM_DBF_TEXT_(TRACE, CTC_DBF_DEBUG, 1233 + "Enter %s(%s)", CTCM_FUNTAIL, &cdev->dev.bus_id); 1234 + 1183 1235 if (ctcm_check_irb_error(cdev, irb)) 1184 1236 return; 1185 1237 1186 1238 cgdev = dev_get_drvdata(&cdev->dev); 1187 1239 1240 + cstat = irb->scsw.cmd.cstat; 1241 + dstat = irb->scsw.cmd.dstat; 1242 + 1188 1243 /* Check for unsolicited interrupts. */ 1189 1244 if (cgdev == NULL) { 1190 - ctcm_pr_warn("ctcm: Got unsolicited irq: %s c-%02x d-%02x\n", 1191 - cdev->dev.bus_id, irb->scsw.cmd.cstat, 1192 - irb->scsw.cmd.dstat); 1245 + ctcm_pr_warn("ctcm: Got unsolicited irq: c-%02x d-%02x\n", 1246 + cstat, dstat); 1193 1247 return; 1194 1248 } 1195 1249 ··· 1212 1254 return; 1213 1255 } 1214 1256 1215 - dev = (struct net_device *)(ch->netdev); 1257 + dev = ch->netdev; 1216 1258 if (dev == NULL) { 1217 1259 ctcm_pr_crit("ctcm: %s dev=NULL bus_id=%s, ch=0x%p\n", 1218 - __FUNCTION__, cdev->dev.bus_id, ch); 1260 + __func__, cdev->dev.bus_id, ch); 1219 1261 return; 1220 1262 } 1221 1263 1222 - if (do_debug) 1223 - ctcm_pr_debug("%s: interrupt for device: %s " 1224 - "received c-%02x d-%02x\n", 1225 - dev->name, 1226 - ch->id, 1227 - irb->scsw.cmd.cstat, 1228 - irb->scsw.cmd.dstat); 1264 + CTCM_DBF_TEXT_(TRACE, CTC_DBF_DEBUG, 1265 + "%s(%s): int. for %s: cstat=%02x dstat=%02x", 1266 + CTCM_FUNTAIL, dev->name, ch->id, cstat, dstat); 1229 1267 1230 1268 /* Copy interruption response block. */ 1231 1269 memcpy(ch->irb, irb, sizeof(struct irb)); 1232 1270 1233 - /* Check for good subchannel return code, otherwise error message */ 1234 1271 if (irb->scsw.cmd.cstat) { 1272 + /* Check for good subchannel return code, otherwise error message */ 1235 1273 fsm_event(ch->fsm, CTC_EVENT_SC_UNKNOWN, ch); 1236 1274 ctcm_pr_warn("%s: subchannel check for dev: %s - %02x %02x\n", 1237 1275 dev->name, ch->id, irb->scsw.cmd.cstat, ··· 1237 1283 1238 1284 /* Check the reason-code of a unit check */ 1239 1285 if (irb->scsw.cmd.dstat & DEV_STAT_UNIT_CHECK) { 1286 + if ((irb->ecw[0] & ch->sense_rc) == 0) 1287 + /* print it only once */ 1288 + CTCM_DBF_TEXT_(TRACE, CTC_DBF_INFO, 1289 + "%s(%s): sense=%02x, ds=%02x", 1290 + CTCM_FUNTAIL, ch->id, irb->ecw[0], dstat); 1240 1291 ccw_unit_check(ch, irb->ecw[0]); 1241 1292 return; 1242 1293 } ··· 1279 1320 struct ctcm_priv *priv; 1280 1321 int rc; 1281 1322 1282 - CTCM_DBF_TEXT_(SETUP, CTC_DBF_INFO, "%s %p", __FUNCTION__, cgdev); 1323 + CTCM_DBF_TEXT_(SETUP, CTC_DBF_INFO, 1324 + "%s %p", 1325 + __func__, cgdev); 1283 1326 1284 1327 if (!get_device(&cgdev->dev)) 1285 1328 return -ENODEV; 1286 1329 1287 1330 priv = kzalloc(sizeof(struct ctcm_priv), GFP_KERNEL); 1288 1331 if (!priv) { 1289 - ctcm_pr_err("%s: Out of memory\n", __FUNCTION__); 1332 + CTCM_DBF_TEXT_(ERROR, CTC_DBF_ERROR, 1333 + "%s: memory allocation failure", 1334 + CTCM_FUNTAIL); 1290 1335 put_device(&cgdev->dev); 1291 1336 return -ENOMEM; 1292 1337 } ··· 1327 1364 int ccw_num; 1328 1365 int rc = 0; 1329 1366 1330 - CTCM_DBF_TEXT(TRACE, 2, __FUNCTION__); 1367 + CTCM_DBF_TEXT_(SETUP, CTC_DBF_INFO, 1368 + "%s(%s), type %d, proto %d", 1369 + __func__, cdev->dev.bus_id, type, priv->protocol); 1370 + 1331 1371 ch = kzalloc(sizeof(struct channel), GFP_KERNEL); 1332 1372 if (ch == NULL) 1333 - goto nomem_return; 1373 + return -ENOMEM; 1334 1374 1335 1375 ch->protocol = priv->protocol; 1336 1376 if (IS_MPC(priv)) { ··· 1444 1478 if (*c && (!strncmp((*c)->id, ch->id, CTCM_ID_SIZE))) { 1445 1479 CTCM_DBF_TEXT_(SETUP, CTC_DBF_INFO, 1446 1480 "%s (%s) already in list, using old entry", 1447 - __FUNCTION__, (*c)->id); 1481 + __func__, (*c)->id); 1448 1482 1449 1483 goto free_return; 1450 1484 } ··· 1464 1498 return 0; 1465 1499 1466 1500 nomem_return: 1467 - ctcm_pr_warn("ctcm: Out of memory in %s\n", __FUNCTION__); 1468 1501 rc = -ENOMEM; 1469 1502 1470 1503 free_return: /* note that all channel pointers are 0 or valid */ 1471 - kfree(ch->ccw); /* TODO: check that again */ 1504 + kfree(ch->ccw); 1472 1505 kfree(ch->discontact_th); 1473 1506 kfree_fsm(ch->fsm); 1474 1507 kfree(ch->irb); ··· 1505 1540 enum channel_types type; 1506 1541 struct ctcm_priv *priv; 1507 1542 struct net_device *dev; 1543 + struct ccw_device *cdev0; 1544 + struct ccw_device *cdev1; 1508 1545 int ret; 1509 - 1510 - CTCM_DBF_TEXT(SETUP, CTC_DBF_INFO, __FUNCTION__); 1511 1546 1512 1547 priv = dev_get_drvdata(&cgdev->dev); 1513 1548 if (!priv) 1514 1549 return -ENODEV; 1515 1550 1516 - type = get_channel_type(&cgdev->cdev[0]->id); 1551 + cdev0 = cgdev->cdev[0]; 1552 + cdev1 = cgdev->cdev[1]; 1517 1553 1518 - snprintf(read_id, CTCM_ID_SIZE, "ch-%s", cgdev->cdev[0]->dev.bus_id); 1519 - snprintf(write_id, CTCM_ID_SIZE, "ch-%s", cgdev->cdev[1]->dev.bus_id); 1554 + type = get_channel_type(&cdev0->id); 1520 1555 1521 - ret = add_channel(cgdev->cdev[0], type, priv); 1556 + snprintf(read_id, CTCM_ID_SIZE, "ch-%s", cdev0->dev.bus_id); 1557 + snprintf(write_id, CTCM_ID_SIZE, "ch-%s", cdev1->dev.bus_id); 1558 + 1559 + ret = add_channel(cdev0, type, priv); 1522 1560 if (ret) 1523 1561 return ret; 1524 - ret = add_channel(cgdev->cdev[1], type, priv); 1562 + ret = add_channel(cdev1, type, priv); 1525 1563 if (ret) 1526 1564 return ret; 1527 1565 1528 - ret = ccw_device_set_online(cgdev->cdev[0]); 1566 + ret = ccw_device_set_online(cdev0); 1529 1567 if (ret != 0) { 1530 - CTCM_DBF_TEXT(SETUP, CTC_DBF_WARN, 1531 - "ccw_device_set_online (cdev[0]) failed "); 1532 - ctcm_pr_warn("ccw_device_set_online (cdev[0]) failed " 1533 - "with ret = %d\n", ret); 1568 + /* may be ok to fail now - can be done later */ 1569 + CTCM_DBF_TEXT_(TRACE, CTC_DBF_NOTICE, 1570 + "%s(%s) set_online rc=%d", 1571 + CTCM_FUNTAIL, read_id, ret); 1534 1572 } 1535 1573 1536 - ret = ccw_device_set_online(cgdev->cdev[1]); 1574 + ret = ccw_device_set_online(cdev1); 1537 1575 if (ret != 0) { 1538 - CTCM_DBF_TEXT(SETUP, CTC_DBF_WARN, 1539 - "ccw_device_set_online (cdev[1]) failed "); 1540 - ctcm_pr_warn("ccw_device_set_online (cdev[1]) failed " 1541 - "with ret = %d\n", ret); 1576 + /* may be ok to fail now - can be done later */ 1577 + CTCM_DBF_TEXT_(TRACE, CTC_DBF_NOTICE, 1578 + "%s(%s) set_online rc=%d", 1579 + CTCM_FUNTAIL, write_id, ret); 1542 1580 } 1543 1581 1544 1582 dev = ctcm_init_netdevice(priv); 1545 - 1546 - if (dev == NULL) { 1547 - ctcm_pr_warn("ctcm_init_netdevice failed\n"); 1548 - goto out; 1549 - } 1583 + if (dev == NULL) 1584 + goto out; 1550 1585 1551 1586 for (direction = READ; direction <= WRITE; direction++) { 1552 1587 priv->channel[direction] = ··· 1555 1590 if (priv->channel[direction] == NULL) { 1556 1591 if (direction == WRITE) 1557 1592 channel_free(priv->channel[READ]); 1558 - ctcm_free_netdevice(dev); 1559 - goto out; 1593 + goto out_dev; 1560 1594 } 1561 1595 priv->channel[direction]->netdev = dev; 1562 1596 priv->channel[direction]->protocol = priv->protocol; ··· 1564 1600 /* sysfs magic */ 1565 1601 SET_NETDEV_DEV(dev, &cgdev->dev); 1566 1602 1567 - if (ctcm_netdev_register(dev) != 0) { 1568 - ctcm_free_netdevice(dev); 1569 - goto out; 1570 - } 1603 + if (register_netdev(dev)) 1604 + goto out_dev; 1571 1605 1572 1606 if (ctcm_add_attributes(&cgdev->dev)) { 1573 - ctcm_netdev_unregister(dev); 1574 - /* dev->priv = NULL; why that ???? */ 1575 - ctcm_free_netdevice(dev); 1576 - goto out; 1607 + unregister_netdev(dev); 1608 + goto out_dev; 1577 1609 } 1578 1610 1579 1611 strlcpy(priv->fsm->name, dev->name, sizeof(priv->fsm->name)); 1580 1612 1581 1613 CTCM_DBF_TEXT_(SETUP, CTC_DBF_INFO, 1582 - "setup(%s) ok : r/w = %s / %s, proto : %d", 1583 - dev->name, priv->channel[READ]->id, 1614 + "setup(%s) OK : r/w = %s/%s, protocol : %d", dev->name, 1615 + priv->channel[READ]->id, 1584 1616 priv->channel[WRITE]->id, priv->protocol); 1585 1617 1586 1618 return 0; 1619 + out_dev: 1620 + ctcm_free_netdevice(dev); 1587 1621 out: 1588 1622 ccw_device_set_offline(cgdev->cdev[1]); 1589 1623 ccw_device_set_offline(cgdev->cdev[0]); ··· 1620 1658 channel_free(priv->channel[WRITE]); 1621 1659 1622 1660 if (dev) { 1623 - ctcm_netdev_unregister(dev); 1624 - /* dev->priv = NULL; why that ??? */ 1661 + unregister_netdev(dev); 1625 1662 ctcm_free_netdevice(dev); 1626 1663 } 1627 1664 ··· 1643 1682 1644 1683 static void ctcm_remove_device(struct ccwgroup_device *cgdev) 1645 1684 { 1646 - struct ctcm_priv *priv; 1685 + struct ctcm_priv *priv = dev_get_drvdata(&cgdev->dev); 1647 1686 1648 - CTCM_DBF_TEXT(SETUP, CTC_DBF_ERROR, __FUNCTION__); 1687 + BUG_ON(priv == NULL); 1649 1688 1650 - priv = dev_get_drvdata(&cgdev->dev); 1651 - if (!priv) 1652 - return; 1689 + CTCM_DBF_TEXT_(SETUP, CTC_DBF_INFO, 1690 + "removing device %s, r/w = %s/%s, proto : %d", 1691 + priv->channel[READ]->netdev->name, 1692 + priv->channel[READ]->id, priv->channel[WRITE]->id, 1693 + priv->protocol); 1694 + 1653 1695 if (cgdev->state == CCWGROUP_ONLINE) 1654 1696 ctcm_shutdown_device(cgdev); 1655 1697 ctcm_remove_files(&cgdev->dev); ··· 1712 1748 1713 1749 ret = ctcm_register_dbf_views(); 1714 1750 if (ret) { 1715 - ctcm_pr_crit("ctcm_init failed with ctcm_register_dbf_views " 1716 - "rc = %d\n", ret); 1717 1751 return ret; 1718 1752 } 1719 1753 ret = register_cu3088_discipline(&ctcm_group_driver);
+28 -3
drivers/s390/net/ctcm_main.h
··· 22 22 23 23 #define CTC_DRIVER_NAME "ctcm" 24 24 #define CTC_DEVICE_NAME "ctc" 25 - #define CTC_DEVICE_GENE "ctc%d" 26 25 #define MPC_DEVICE_NAME "mpc" 27 - #define MPC_DEVICE_GENE "mpc%d" 26 + #define CTC_DEVICE_GENE CTC_DEVICE_NAME "%d" 27 + #define MPC_DEVICE_GENE MPC_DEVICE_NAME "%d" 28 28 29 29 #define CHANNEL_FLAGS_READ 0 30 30 #define CHANNEL_FLAGS_WRITE 1 ··· 47 47 #define ctcm_pr_emerg(fmt, arg...) printk(KERN_EMERG fmt, ##arg) 48 48 #define ctcm_pr_err(fmt, arg...) printk(KERN_ERR fmt, ##arg) 49 49 #define ctcm_pr_crit(fmt, arg...) printk(KERN_CRIT fmt, ##arg) 50 + 51 + #define CTCM_PR_DEBUG(fmt, arg...) \ 52 + do { \ 53 + if (do_debug) \ 54 + printk(KERN_DEBUG fmt, ##arg); \ 55 + } while (0) 56 + 57 + #define CTCM_PR_DBGDATA(fmt, arg...) \ 58 + do { \ 59 + if (do_debug_data) \ 60 + printk(KERN_DEBUG fmt, ##arg); \ 61 + } while (0) 62 + 63 + #define CTCM_D3_DUMP(buf, len) \ 64 + do { \ 65 + if (do_debug_data) \ 66 + ctcmpc_dumpit(buf, len); \ 67 + } while (0) 68 + 69 + #define CTCM_CCW_DUMP(buf, len) \ 70 + do { \ 71 + if (do_debug_ccw) \ 72 + ctcmpc_dumpit(buf, len); \ 73 + } while (0) 50 74 51 75 /* 52 76 * CCW commands, used in this driver. ··· 185 161 fsm_instance *fsm; /* finite state machine of this channel */ 186 162 struct net_device *netdev; /* corresponding net_device */ 187 163 struct ctcm_profile prof; 188 - unsigned char *trans_skb_data; 164 + __u8 *trans_skb_data; 189 165 __u16 logflags; 166 + __u8 sense_rc; /* last unit check sense code report control */ 190 167 }; 191 168 192 169 struct ctcm_priv {
+417 -703
drivers/s390/net/ctcm_mpc.c
··· 149 149 for (ct = 0; ct < len; ct++, ptr++, rptr++) { 150 150 if (sw == 0) { 151 151 #if (UTS_MACHINE == s390x) 152 - sprintf(addr, "%16.16lx", (unsigned long)rptr); 152 + sprintf(addr, "%16.16lx", (__u64)rptr); 153 153 #else 154 154 sprintf(addr, "%8.8X", (__u32)rptr); 155 155 #endif ··· 164 164 strcat(bhex, " "); 165 165 166 166 #if (UTS_MACHINE == s390x) 167 - sprintf(tbuf, "%2.2lX", (unsigned long)*ptr); 167 + sprintf(tbuf, "%2.2lX", (__u64)*ptr); 168 168 #else 169 169 sprintf(tbuf, "%2.2X", (__u32)*ptr); 170 170 #endif ··· 179 179 basc[sw+1] = '\0'; 180 180 sw++; 181 181 rm--; 182 - if (sw == 16) { 183 - if ((strcmp(duphex, bhex)) != 0) { 184 - if (dup != 0) { 185 - sprintf(tdup, "Duplicate as above " 186 - "to %s", addr); 187 - printk(KERN_INFO " " 188 - " --- %s ---\n", tdup); 189 - } 190 - printk(KERN_INFO " %s (+%s) : %s [%s]\n", 182 + if (sw != 16) 183 + continue; 184 + if ((strcmp(duphex, bhex)) != 0) { 185 + if (dup != 0) { 186 + sprintf(tdup, 187 + "Duplicate as above to %s", addr); 188 + ctcm_pr_debug(" --- %s ---\n", 189 + tdup); 190 + } 191 + ctcm_pr_debug(" %s (+%s) : %s [%s]\n", 191 192 addr, boff, bhex, basc); 192 - dup = 0; 193 - strcpy(duphex, bhex); 194 - } else 195 - dup++; 193 + dup = 0; 194 + strcpy(duphex, bhex); 195 + } else 196 + dup++; 196 197 197 - sw = 0; 198 - rm = 16; 199 - } 198 + sw = 0; 199 + rm = 16; 200 200 } /* endfor */ 201 201 202 202 if (sw != 0) { ··· 210 210 } 211 211 if (dup != 0) { 212 212 sprintf(tdup, "Duplicate as above to %s", addr); 213 - printk(KERN_INFO " " 214 - " --- %s ---\n", tdup); 213 + ctcm_pr_debug(" --- %s ---\n", tdup); 215 214 } 216 - printk(KERN_INFO " %s (+%s) : %s [%s]\n", 217 - addr, boff, bhex, basc); 215 + ctcm_pr_debug(" %s (+%s) : %s [%s]\n", 216 + addr, boff, bhex, basc); 218 217 } else { 219 218 if (dup >= 1) { 220 219 sprintf(tdup, "Duplicate as above to %s", addr); 221 - printk(KERN_INFO " " 222 - " --- %s ---\n", tdup); 220 + ctcm_pr_debug(" --- %s ---\n", tdup); 223 221 } 224 222 if (dup != 0) { 225 - printk(KERN_INFO " %s (+%s) : %s [%s]\n", 223 + ctcm_pr_debug(" %s (+%s) : %s [%s]\n", 226 224 addr, boff, bhex, basc); 227 225 } 228 226 } ··· 239 241 */ 240 242 void ctcmpc_dump_skb(struct sk_buff *skb, int offset) 241 243 { 242 - unsigned char *p = skb->data; 244 + __u8 *p = skb->data; 243 245 struct th_header *header; 244 246 struct pdu *pheader; 245 247 int bl = skb->len; ··· 251 253 p += offset; 252 254 header = (struct th_header *)p; 253 255 254 - printk(KERN_INFO "dump:\n"); 255 - printk(KERN_INFO "skb len=%d \n", skb->len); 256 + ctcm_pr_debug("dump:\n"); 257 + ctcm_pr_debug("skb len=%d \n", skb->len); 256 258 if (skb->len > 2) { 257 259 switch (header->th_ch_flag) { 258 260 case TH_HAS_PDU: ··· 271 273 } 272 274 273 275 pheader = (struct pdu *)p; 274 - printk(KERN_INFO "pdu->offset: %d hex: %04x\n", 275 - pheader->pdu_offset, pheader->pdu_offset); 276 - printk(KERN_INFO "pdu->flag : %02x\n", pheader->pdu_flag); 277 - printk(KERN_INFO "pdu->proto : %02x\n", pheader->pdu_proto); 278 - printk(KERN_INFO "pdu->seq : %02x\n", pheader->pdu_seq); 276 + ctcm_pr_debug("pdu->offset: %d hex: %04x\n", 277 + pheader->pdu_offset, pheader->pdu_offset); 278 + ctcm_pr_debug("pdu->flag : %02x\n", pheader->pdu_flag); 279 + ctcm_pr_debug("pdu->proto : %02x\n", pheader->pdu_proto); 280 + ctcm_pr_debug("pdu->seq : %02x\n", pheader->pdu_seq); 279 281 goto dumpdata; 280 282 281 283 dumpth: 282 - printk(KERN_INFO "th->seg : %02x\n", header->th_seg); 283 - printk(KERN_INFO "th->ch : %02x\n", header->th_ch_flag); 284 - printk(KERN_INFO "th->blk_flag: %02x\n", header->th_blk_flag); 285 - printk(KERN_INFO "th->type : %s\n", 286 - (header->th_is_xid) ? "DATA" : "XID"); 287 - printk(KERN_INFO "th->seqnum : %04x\n", header->th_seq_num); 284 + ctcm_pr_debug("th->seg : %02x\n", header->th_seg); 285 + ctcm_pr_debug("th->ch : %02x\n", header->th_ch_flag); 286 + ctcm_pr_debug("th->blk_flag: %02x\n", header->th_blk_flag); 287 + ctcm_pr_debug("th->type : %s\n", 288 + (header->th_is_xid) ? "DATA" : "XID"); 289 + ctcm_pr_debug("th->seqnum : %04x\n", header->th_seq_num); 288 290 289 291 } 290 292 dumpdata: 291 293 if (bl > 32) 292 294 bl = 32; 293 - printk(KERN_INFO "data: "); 295 + ctcm_pr_debug("data: "); 294 296 for (i = 0; i < bl; i++) 295 - printk(KERN_INFO "%02x%s", *p++, (i % 16) ? " " : "\n<7>"); 296 - printk(KERN_INFO "\n"); 297 + ctcm_pr_debug("%02x%s", *p++, (i % 16) ? " " : "\n"); 298 + ctcm_pr_debug("\n"); 297 299 } 298 300 #endif 301 + 302 + static struct net_device *ctcmpc_get_dev(int port_num) 303 + { 304 + char device[20]; 305 + struct net_device *dev; 306 + struct ctcm_priv *priv; 307 + 308 + sprintf(device, "%s%i", MPC_DEVICE_NAME, port_num); 309 + 310 + dev = __dev_get_by_name(&init_net, device); 311 + 312 + if (dev == NULL) { 313 + CTCM_DBF_TEXT_(MPC_ERROR, CTC_DBF_ERROR, 314 + "%s: Device not found by name: %s", 315 + CTCM_FUNTAIL, device); 316 + return NULL; 317 + } 318 + priv = dev->priv; 319 + if (priv == NULL) { 320 + CTCM_DBF_TEXT_(MPC_ERROR, CTC_DBF_ERROR, 321 + "%s(%s): dev->priv is NULL", 322 + CTCM_FUNTAIL, device); 323 + return NULL; 324 + } 325 + if (priv->mpcg == NULL) { 326 + CTCM_DBF_TEXT_(MPC_ERROR, CTC_DBF_ERROR, 327 + "%s(%s): priv->mpcg is NULL", 328 + CTCM_FUNTAIL, device); 329 + return NULL; 330 + } 331 + return dev; 332 + } 299 333 300 334 /* 301 335 * ctc_mpc_alloc_channel ··· 338 308 */ 339 309 int ctc_mpc_alloc_channel(int port_num, void (*callback)(int, int)) 340 310 { 341 - char device[20]; 342 311 struct net_device *dev; 343 312 struct mpc_group *grp; 344 313 struct ctcm_priv *priv; 345 314 346 - ctcm_pr_debug("ctcmpc enter: %s()\n", __FUNCTION__); 347 - 348 - sprintf(device, "%s%i", MPC_DEVICE_NAME, port_num); 349 - dev = __dev_get_by_name(&init_net, device); 350 - 351 - if (dev == NULL) { 352 - printk(KERN_INFO "ctc_mpc_alloc_channel %s dev=NULL\n", device); 315 + dev = ctcmpc_get_dev(port_num); 316 + if (dev == NULL) 353 317 return 1; 354 - } 355 - 356 318 priv = dev->priv; 357 319 grp = priv->mpcg; 358 - if (!grp) 359 - return 1; 360 320 361 321 grp->allochanfunc = callback; 362 322 grp->port_num = port_num; 363 323 grp->port_persist = 1; 364 324 365 - ctcm_pr_debug("ctcmpc: %s called for device %s state=%s\n", 366 - __FUNCTION__, 367 - dev->name, 368 - fsm_getstate_str(grp->fsm)); 325 + CTCM_DBF_TEXT_(MPC_SETUP, CTC_DBF_INFO, 326 + "%s(%s): state=%s", 327 + CTCM_FUNTAIL, dev->name, fsm_getstate_str(grp->fsm)); 369 328 370 329 switch (fsm_getstate(grp->fsm)) { 371 330 case MPCG_STATE_INOP: ··· 396 377 grp->allocchan_callback_retries = 0; 397 378 } 398 379 break; 399 - default: 400 - return 0; 401 - 402 380 } 403 381 404 - ctcm_pr_debug("ctcmpc exit: %s()\n", __FUNCTION__); 405 382 return 0; 406 383 } 407 384 EXPORT_SYMBOL(ctc_mpc_alloc_channel); ··· 409 394 void ctc_mpc_establish_connectivity(int port_num, 410 395 void (*callback)(int, int, int)) 411 396 { 412 - char device[20]; 413 397 struct net_device *dev; 414 398 struct mpc_group *grp; 415 399 struct ctcm_priv *priv; 416 400 struct channel *rch, *wch; 417 401 418 - ctcm_pr_debug("ctcmpc enter: %s()\n", __FUNCTION__); 419 - 420 - sprintf(device, "%s%i", MPC_DEVICE_NAME, port_num); 421 - dev = __dev_get_by_name(&init_net, device); 422 - 423 - if (dev == NULL) { 424 - printk(KERN_INFO "ctc_mpc_establish_connectivity " 425 - "%s dev=NULL\n", device); 402 + dev = ctcmpc_get_dev(port_num); 403 + if (dev == NULL) 426 404 return; 427 - } 428 405 priv = dev->priv; 406 + grp = priv->mpcg; 429 407 rch = priv->channel[READ]; 430 408 wch = priv->channel[WRITE]; 431 409 432 - grp = priv->mpcg; 433 - 434 - ctcm_pr_debug("ctcmpc: %s() called for device %s state=%s\n", 435 - __FUNCTION__, dev->name, 436 - fsm_getstate_str(grp->fsm)); 410 + CTCM_DBF_TEXT_(MPC_SETUP, CTC_DBF_INFO, 411 + "%s(%s): state=%s", 412 + CTCM_FUNTAIL, dev->name, fsm_getstate_str(grp->fsm)); 437 413 438 414 grp->estconnfunc = callback; 439 415 grp->port_num = port_num; ··· 452 446 case MPCG_STATE_RESET: 453 447 /* MPC Group is not ready to start XID - min num of */ 454 448 /* 1 read and 1 write channel have not been acquired*/ 455 - printk(KERN_WARNING "ctcmpc: %s() REJECTED ACTIVE XID Req" 456 - "uest - Channel Pair is not Active\n", __FUNCTION__); 449 + 450 + CTCM_DBF_TEXT_(MPC_ERROR, CTC_DBF_ERROR, 451 + "%s(%s): REJECTED - inactive channels", 452 + CTCM_FUNTAIL, dev->name); 457 453 if (grp->estconnfunc) { 458 454 grp->estconnfunc(grp->port_num, -1, 0); 459 455 grp->estconnfunc = NULL; ··· 465 457 /* alloc channel was called but no XID exchange */ 466 458 /* has occurred. initiate xside XID exchange */ 467 459 /* make sure yside XID0 processing has not started */ 460 + 468 461 if ((fsm_getstate(rch->fsm) > CH_XID0_PENDING) || 469 462 (fsm_getstate(wch->fsm) > CH_XID0_PENDING)) { 470 - printk(KERN_WARNING "mpc: %s() ABORT ACTIVE XID" 471 - " Request- PASSIVE XID in process\n" 472 - , __FUNCTION__); 463 + CTCM_DBF_TEXT_(MPC_ERROR, CTC_DBF_ERROR, 464 + "%s(%s): ABORT - PASSIVE XID", 465 + CTCM_FUNTAIL, dev->name); 473 466 break; 474 467 } 475 468 grp->send_qllc_disc = 1; ··· 485 476 (fsm_getstate(rch->fsm) == CH_XID0_PENDING)) 486 477 fsm_event(grp->fsm, MPCG_EVENT_XID0DO, rch); 487 478 else { 488 - printk(KERN_WARNING "mpc: %s() Unable to start" 489 - " ACTIVE XID0 on read channel\n", 490 - __FUNCTION__); 479 + CTCM_DBF_TEXT_(MPC_ERROR, CTC_DBF_ERROR, 480 + "%s(%s): RX-%s not ready for ACTIVE XID0", 481 + CTCM_FUNTAIL, dev->name, rch->id); 491 482 if (grp->estconnfunc) { 492 483 grp->estconnfunc(grp->port_num, -1, 0); 493 484 grp->estconnfunc = NULL; ··· 499 490 (fsm_getstate(wch->fsm) == CH_XID0_PENDING)) 500 491 fsm_event(grp->fsm, MPCG_EVENT_XID0DO, wch); 501 492 else { 502 - printk(KERN_WARNING "mpc: %s() Unable to start" 503 - " ACTIVE XID0 on write channel\n", 504 - __FUNCTION__); 493 + CTCM_DBF_TEXT_(MPC_ERROR, CTC_DBF_ERROR, 494 + "%s(%s): WX-%s not ready for ACTIVE XID0", 495 + CTCM_FUNTAIL, dev->name, wch->id); 505 496 if (grp->estconnfunc) { 506 497 grp->estconnfunc(grp->port_num, -1, 0); 507 498 grp->estconnfunc = NULL; ··· 517 508 } 518 509 519 510 done: 520 - ctcm_pr_debug("ctcmpc exit: %s()\n", __FUNCTION__); 511 + CTCM_PR_DEBUG("Exit %s()\n", __func__); 521 512 return; 522 513 } 523 514 EXPORT_SYMBOL(ctc_mpc_establish_connectivity); ··· 529 520 void ctc_mpc_dealloc_ch(int port_num) 530 521 { 531 522 struct net_device *dev; 532 - char device[20]; 533 523 struct ctcm_priv *priv; 534 524 struct mpc_group *grp; 535 525 536 - ctcm_pr_debug("ctcmpc enter: %s()\n", __FUNCTION__); 537 - sprintf(device, "%s%i", MPC_DEVICE_NAME, port_num); 538 - dev = __dev_get_by_name(&init_net, device); 539 - 540 - if (dev == NULL) { 541 - printk(KERN_INFO "%s() %s dev=NULL\n", __FUNCTION__, device); 542 - goto done; 543 - } 544 - 545 - ctcm_pr_debug("ctcmpc:%s %s() called for device %s refcount=%d\n", 546 - dev->name, __FUNCTION__, 547 - dev->name, atomic_read(&dev->refcnt)); 548 - 526 + dev = ctcmpc_get_dev(port_num); 527 + if (dev == NULL) 528 + return; 549 529 priv = dev->priv; 550 - if (priv == NULL) { 551 - printk(KERN_INFO "%s() %s priv=NULL\n", 552 - __FUNCTION__, device); 553 - goto done; 554 - } 555 - fsm_deltimer(&priv->restart_timer); 556 - 557 530 grp = priv->mpcg; 558 - if (grp == NULL) { 559 - printk(KERN_INFO "%s() %s dev=NULL\n", __FUNCTION__, device); 560 - goto done; 561 - } 531 + 532 + CTCM_DBF_TEXT_(MPC_SETUP, CTC_DBF_DEBUG, 533 + "%s: %s: refcount = %d\n", 534 + CTCM_FUNTAIL, dev->name, atomic_read(&dev->refcnt)); 535 + 536 + fsm_deltimer(&priv->restart_timer); 562 537 grp->channels_terminating = 0; 563 - 564 538 fsm_deltimer(&grp->timer); 565 - 566 539 grp->allochanfunc = NULL; 567 540 grp->estconnfunc = NULL; 568 541 grp->port_persist = 0; ··· 552 561 fsm_event(grp->fsm, MPCG_EVENT_INOP, dev); 553 562 554 563 ctcm_close(dev); 555 - done: 556 - ctcm_pr_debug("ctcmpc exit: %s()\n", __FUNCTION__); 557 564 return; 558 565 } 559 566 EXPORT_SYMBOL(ctc_mpc_dealloc_ch); ··· 562 573 */ 563 574 void ctc_mpc_flow_control(int port_num, int flowc) 564 575 { 565 - char device[20]; 566 576 struct ctcm_priv *priv; 567 577 struct mpc_group *grp; 568 578 struct net_device *dev; 569 579 struct channel *rch; 570 580 int mpcg_state; 571 581 572 - ctcm_pr_debug("ctcmpc enter: %s() %i\n", __FUNCTION__, flowc); 573 - 574 - sprintf(device, "%s%i", MPC_DEVICE_NAME, port_num); 575 - dev = __dev_get_by_name(&init_net, device); 576 - 577 - if (dev == NULL) { 578 - printk(KERN_INFO "ctc_mpc_flow_control %s dev=NULL\n", device); 582 + dev = ctcmpc_get_dev(port_num); 583 + if (dev == NULL) 579 584 return; 580 - } 581 - 582 - ctcm_pr_debug("ctcmpc: %s %s called \n", dev->name, __FUNCTION__); 583 - 584 - priv = dev->priv; 585 - if (priv == NULL) { 586 - printk(KERN_INFO "ctcmpc:%s() %s priv=NULL\n", 587 - __FUNCTION__, device); 588 - return; 589 - } 585 + priv = dev->priv; 590 586 grp = priv->mpcg; 587 + 588 + CTCM_DBF_TEXT_(MPC_TRACE, CTC_DBF_DEBUG, 589 + "%s: %s: flowc = %d", 590 + CTCM_FUNTAIL, dev->name, flowc); 591 + 591 592 rch = priv->channel[READ]; 592 593 593 594 mpcg_state = fsm_getstate(grp->fsm); ··· 608 629 break; 609 630 } 610 631 611 - ctcm_pr_debug("ctcmpc exit: %s() %i\n", __FUNCTION__, flowc); 612 632 } 613 633 EXPORT_SYMBOL(ctc_mpc_flow_control); 614 634 ··· 624 646 struct mpc_group *grp = priv->mpcg; 625 647 struct channel *ch = priv->channel[WRITE]; 626 648 627 - if (do_debug) 628 - ctcm_pr_debug("ctcmpc enter: %s(): ch=0x%p id=%s\n", 629 - __FUNCTION__, ch, ch->id); 630 - 631 - if (do_debug_data) 632 - ctcmpc_dumpit((char *)mpcginfo->sweep, TH_SWEEP_LENGTH); 649 + CTCM_PR_DEBUG("%s: ch=0x%p id=%s\n", __func__, ch, ch->id); 650 + CTCM_D3_DUMP((char *)mpcginfo->sweep, TH_SWEEP_LENGTH); 633 651 634 652 grp->sweep_rsp_pend_num--; 635 653 ··· 658 684 struct sk_buff *sweep_skb; 659 685 struct channel *ch = priv->channel[WRITE]; 660 686 661 - if (do_debug) 662 - ctcm_pr_debug("ctcmpc exit : %s(): ch=0x%p id=%s\n", 663 - __FUNCTION__, rch, rch->id); 687 + CTCM_PR_DEBUG("%s: ch=0x%p id=%s\n", __func__, rch, rch->id); 664 688 665 - sweep_skb = __dev_alloc_skb(MPC_BUFSIZE_DEFAULT, 666 - GFP_ATOMIC|GFP_DMA); 689 + sweep_skb = __dev_alloc_skb(MPC_BUFSIZE_DEFAULT, GFP_ATOMIC | GFP_DMA); 667 690 if (sweep_skb == NULL) { 668 - printk(KERN_INFO "Couldn't alloc sweep_skb\n"); 691 + CTCM_DBF_TEXT_(MPC_ERROR, CTC_DBF_ERROR, 692 + "%s(%s): sweep_skb allocation ERROR\n", 693 + CTCM_FUNTAIL, rch->id); 669 694 rc = -ENOMEM; 670 695 goto done; 671 696 } ··· 719 746 720 747 if (do_debug) 721 748 CTCM_DBF_TEXT_(MPC_TRACE, CTC_DBF_DEBUG, 722 - " %s(): ch=0x%p id=%s\n", __FUNCTION__, ch, ch->id); 749 + " %s(): ch=0x%p id=%s\n", __func__, ch, ch->id); 723 750 724 751 if (grp->in_sweep == 0) { 725 752 grp->in_sweep = 1; ··· 728 755 grp->sweep_rsp_pend_num = grp->active_channels[READ]; 729 756 } 730 757 731 - if (do_debug_data) 732 - ctcmpc_dumpit((char *)mpcginfo->sweep, TH_SWEEP_LENGTH); 758 + CTCM_D3_DUMP((char *)mpcginfo->sweep, TH_SWEEP_LENGTH); 733 759 734 760 grp->sweep_req_pend_num--; 735 761 ctcmpc_send_sweep_resp(ch); ··· 847 875 static void mpc_action_go_ready(fsm_instance *fsm, int event, void *arg) 848 876 { 849 877 struct net_device *dev = arg; 850 - struct ctcm_priv *priv = NULL; 851 - struct mpc_group *grp = NULL; 878 + struct ctcm_priv *priv = dev->priv; 879 + struct mpc_group *grp = priv->mpcg; 852 880 853 - if (dev == NULL) { 854 - printk(KERN_INFO "%s() dev=NULL\n", __FUNCTION__); 855 - return; 856 - } 857 - 858 - ctcm_pr_debug("ctcmpc enter: %s %s()\n", dev->name, __FUNCTION__); 859 - 860 - priv = dev->priv; 861 - if (priv == NULL) { 862 - printk(KERN_INFO "%s() priv=NULL\n", __FUNCTION__); 863 - return; 864 - } 865 - 866 - grp = priv->mpcg; 867 881 if (grp == NULL) { 868 - printk(KERN_INFO "%s() grp=NULL\n", __FUNCTION__); 882 + CTCM_DBF_TEXT_(MPC_ERROR, CTC_DBF_ERROR, 883 + "%s(%s): No MPC group", 884 + CTCM_FUNTAIL, dev->name); 869 885 return; 870 886 } 871 887 ··· 867 907 grp->estconnfunc = NULL; 868 908 } else if (grp->allochanfunc) 869 909 grp->send_qllc_disc = 1; 870 - goto done; 910 + 911 + fsm_event(grp->fsm, MPCG_EVENT_INOP, dev); 912 + CTCM_DBF_TEXT_(MPC_ERROR, CTC_DBF_ERROR, 913 + "%s(%s): fails", 914 + CTCM_FUNTAIL, dev->name); 915 + return; 871 916 } 872 917 873 918 grp->port_persist = 1; ··· 881 916 882 917 tasklet_hi_schedule(&grp->mpc_tasklet2); 883 918 884 - ctcm_pr_debug("ctcmpc exit: %s %s()\n", dev->name, __FUNCTION__); 885 919 return; 886 - 887 - done: 888 - fsm_event(grp->fsm, MPCG_EVENT_INOP, dev); 889 - 890 - 891 - ctcm_pr_info("ctcmpc: %s()failure occurred\n", __FUNCTION__); 892 920 } 893 921 894 922 /* ··· 891 933 void mpc_group_ready(unsigned long adev) 892 934 { 893 935 struct net_device *dev = (struct net_device *)adev; 894 - struct ctcm_priv *priv = NULL; 895 - struct mpc_group *grp = NULL; 936 + struct ctcm_priv *priv = dev->priv; 937 + struct mpc_group *grp = priv->mpcg; 896 938 struct channel *ch = NULL; 897 939 898 - 899 - ctcm_pr_debug("ctcmpc enter: %s()\n", __FUNCTION__); 900 - 901 - if (dev == NULL) { 902 - printk(KERN_INFO "%s() dev=NULL\n", __FUNCTION__); 903 - return; 904 - } 905 - 906 - priv = dev->priv; 907 - if (priv == NULL) { 908 - printk(KERN_INFO "%s() priv=NULL\n", __FUNCTION__); 909 - return; 910 - } 911 - 912 - grp = priv->mpcg; 913 940 if (grp == NULL) { 914 - printk(KERN_INFO "ctcmpc:%s() grp=NULL\n", __FUNCTION__); 941 + CTCM_DBF_TEXT_(MPC_ERROR, CTC_DBF_ERROR, 942 + "%s(%s): No MPC group", 943 + CTCM_FUNTAIL, dev->name); 915 944 return; 916 945 } 917 946 918 - printk(KERN_NOTICE "ctcmpc: %s GROUP TRANSITIONED TO READY" 919 - " maxbuf:%d\n", 920 - dev->name, grp->group_max_buflen); 947 + CTCM_DBF_TEXT_(MPC_SETUP, CTC_DBF_NOTICE, 948 + "%s: %s: GROUP TRANSITIONED TO READY, maxbuf = %d\n", 949 + CTCM_FUNTAIL, dev->name, grp->group_max_buflen); 921 950 922 951 fsm_newstate(grp->fsm, MPCG_STATE_READY); 923 952 924 953 /* Put up a read on the channel */ 925 954 ch = priv->channel[READ]; 926 955 ch->pdu_seq = 0; 927 - if (do_debug_data) 928 - ctcm_pr_debug("ctcmpc: %s() ToDCM_pdu_seq= %08x\n" , 929 - __FUNCTION__, ch->pdu_seq); 956 + CTCM_PR_DBGDATA("ctcmpc: %s() ToDCM_pdu_seq= %08x\n" , 957 + __func__, ch->pdu_seq); 930 958 931 959 ctcmpc_chx_rxidle(ch->fsm, CTC_EVENT_START, ch); 932 960 /* Put the write channel in idle state */ ··· 924 980 spin_unlock(&ch->collect_lock); 925 981 } 926 982 ctcm_chx_txidle(ch->fsm, CTC_EVENT_START, ch); 927 - 928 983 ctcm_clear_busy(dev); 929 984 930 985 if (grp->estconnfunc) { 931 986 grp->estconnfunc(grp->port_num, 0, 932 987 grp->group_max_buflen); 933 988 grp->estconnfunc = NULL; 934 - } else 935 - if (grp->allochanfunc) 936 - grp->allochanfunc(grp->port_num, 937 - grp->group_max_buflen); 989 + } else if (grp->allochanfunc) 990 + grp->allochanfunc(grp->port_num, grp->group_max_buflen); 938 991 939 992 grp->send_qllc_disc = 1; 940 993 grp->changed_side = 0; 941 994 942 - ctcm_pr_debug("ctcmpc exit: %s()\n", __FUNCTION__); 943 995 return; 944 996 945 997 } ··· 944 1004 * Increment the MPC Group Active Channel Counts 945 1005 * helper of dev_action (called from channel fsm) 946 1006 */ 947 - int mpc_channel_action(struct channel *ch, int direction, int action) 1007 + void mpc_channel_action(struct channel *ch, int direction, int action) 948 1008 { 949 - struct net_device *dev = ch->netdev; 950 - struct ctcm_priv *priv; 951 - struct mpc_group *grp = NULL; 952 - int rc = 0; 953 - 954 - if (do_debug) 955 - ctcm_pr_debug("ctcmpc enter: %s(): ch=0x%p id=%s\n", 956 - __FUNCTION__, ch, ch->id); 957 - 958 - if (dev == NULL) { 959 - printk(KERN_INFO "ctcmpc_channel_action %i dev=NULL\n", 960 - action); 961 - rc = 1; 962 - goto done; 963 - } 964 - 965 - priv = dev->priv; 966 - if (priv == NULL) { 967 - printk(KERN_INFO 968 - "ctcmpc_channel_action%i priv=NULL, dev=%s\n", 969 - action, dev->name); 970 - rc = 2; 971 - goto done; 972 - } 973 - 974 - grp = priv->mpcg; 1009 + struct net_device *dev = ch->netdev; 1010 + struct ctcm_priv *priv = dev->priv; 1011 + struct mpc_group *grp = priv->mpcg; 975 1012 976 1013 if (grp == NULL) { 977 - printk(KERN_INFO "ctcmpc: %s()%i mpcgroup=NULL, dev=%s\n", 978 - __FUNCTION__, action, dev->name); 979 - rc = 3; 980 - goto done; 1014 + CTCM_DBF_TEXT_(MPC_ERROR, CTC_DBF_ERROR, 1015 + "%s(%s): No MPC group", 1016 + CTCM_FUNTAIL, dev->name); 1017 + return; 981 1018 } 982 1019 983 - ctcm_pr_info( 984 - "ctcmpc: %s() %i(): Grp:%s total_channel_paths=%i " 985 - "active_channels read=%i, write=%i\n", 986 - __FUNCTION__, 987 - action, 988 - fsm_getstate_str(grp->fsm), 989 - grp->num_channel_paths, 990 - grp->active_channels[READ], 991 - grp->active_channels[WRITE]); 1020 + CTCM_PR_DEBUG("enter %s: ch=0x%p id=%s\n", __func__, ch, ch->id); 1021 + 1022 + CTCM_DBF_TEXT_(MPC_TRACE, CTC_DBF_NOTICE, 1023 + "%s: %i / Grp:%s total_channels=%i, active_channels: " 1024 + "read=%i, write=%i\n", __func__, action, 1025 + fsm_getstate_str(grp->fsm), grp->num_channel_paths, 1026 + grp->active_channels[READ], grp->active_channels[WRITE]); 992 1027 993 1028 if ((action == MPC_CHANNEL_ADD) && (ch->in_mpcgroup == 0)) { 994 1029 grp->num_channel_paths++; ··· 977 1062 ch->xid_skb = __dev_alloc_skb(MPC_BUFSIZE_DEFAULT, 978 1063 GFP_ATOMIC | GFP_DMA); 979 1064 if (ch->xid_skb == NULL) { 980 - printk(KERN_INFO "ctcmpc: %s()" 981 - "Couldn't alloc ch xid_skb\n", __FUNCTION__); 1065 + CTCM_DBF_TEXT_(MPC_ERROR, CTC_DBF_ERROR, 1066 + "%s(%s): Couldn't alloc ch xid_skb\n", 1067 + CTCM_FUNTAIL, dev->name); 982 1068 fsm_event(grp->fsm, MPCG_EVENT_INOP, dev); 983 - return 1; 1069 + return; 984 1070 } 985 1071 ch->xid_skb_data = ch->xid_skb->data; 986 1072 ch->xid_th = (struct th_header *)ch->xid_skb->data; ··· 1013 1097 (grp->active_channels[WRITE] > 0) && 1014 1098 (fsm_getstate(grp->fsm) < MPCG_STATE_XID2INITW)) { 1015 1099 fsm_newstate(grp->fsm, MPCG_STATE_XID2INITW); 1016 - printk(KERN_NOTICE "ctcmpc: %s MPC GROUP " 1017 - "CHANNELS ACTIVE\n", dev->name); 1100 + CTCM_DBF_TEXT_(MPC_SETUP, CTC_DBF_NOTICE, 1101 + "%s: %s: MPC GROUP CHANNELS ACTIVE\n", 1102 + __func__, dev->name); 1018 1103 } 1019 1104 } else if ((action == MPC_CHANNEL_REMOVE) && 1020 1105 (ch->in_mpcgroup == 1)) { ··· 1036 1119 (grp->active_channels[READ] > 0))) 1037 1120 fsm_event(grp->fsm, MPCG_EVENT_INOP, dev); 1038 1121 } 1039 - 1040 1122 done: 1123 + CTCM_DBF_TEXT_(MPC_TRACE, CTC_DBF_DEBUG, 1124 + "exit %s: %i / Grp:%s total_channels=%i, active_channels: " 1125 + "read=%i, write=%i\n", __func__, action, 1126 + fsm_getstate_str(grp->fsm), grp->num_channel_paths, 1127 + grp->active_channels[READ], grp->active_channels[WRITE]); 1041 1128 1042 - if (do_debug) { 1043 - ctcm_pr_debug( 1044 - "ctcmpc: %s() %i Grp:%s ttl_chan_paths=%i " 1045 - "active_chans read=%i, write=%i\n", 1046 - __FUNCTION__, 1047 - action, 1048 - fsm_getstate_str(grp->fsm), 1049 - grp->num_channel_paths, 1050 - grp->active_channels[READ], 1051 - grp->active_channels[WRITE]); 1052 - 1053 - ctcm_pr_debug("ctcmpc exit : %s(): ch=0x%p id=%s\n", 1054 - __FUNCTION__, ch, ch->id); 1055 - } 1056 - return rc; 1057 - 1129 + CTCM_PR_DEBUG("exit %s: ch=0x%p id=%s\n", __func__, ch, ch->id); 1058 1130 } 1059 1131 1060 1132 /** ··· 1069 1163 int skblen; 1070 1164 int sendrc = 0; 1071 1165 1072 - if (do_debug) 1073 - ctcm_pr_debug("ctcmpc enter: %s() %s cp:%i ch:%s\n", 1074 - __FUNCTION__, dev->name, smp_processor_id(), ch->id); 1166 + CTCM_PR_DEBUG("ctcmpc enter: %s() %s cp:%i ch:%s\n", 1167 + __func__, dev->name, smp_processor_id(), ch->id); 1075 1168 1076 1169 header = (struct th_header *)pskb->data; 1077 1170 if ((header->th_seg == 0) && ··· 1079 1174 (header->th_seq_num == 0)) 1080 1175 /* nothing for us */ goto done; 1081 1176 1082 - if (do_debug_data) { 1083 - ctcm_pr_debug("ctcmpc: %s() th_header\n", __FUNCTION__); 1084 - ctcmpc_dumpit((char *)header, TH_HEADER_LENGTH); 1085 - ctcm_pr_debug("ctcmpc: %s() pskb len: %04x \n", 1086 - __FUNCTION__, pskb->len); 1087 - } 1177 + CTCM_PR_DBGDATA("%s: th_header\n", __func__); 1178 + CTCM_D3_DUMP((char *)header, TH_HEADER_LENGTH); 1179 + CTCM_PR_DBGDATA("%s: pskb len: %04x \n", __func__, pskb->len); 1088 1180 1089 1181 pskb->dev = dev; 1090 1182 pskb->ip_summed = CHECKSUM_UNNECESSARY; 1091 1183 skb_pull(pskb, TH_HEADER_LENGTH); 1092 1184 1093 1185 if (likely(header->th_ch_flag == TH_HAS_PDU)) { 1094 - if (do_debug_data) 1095 - ctcm_pr_debug("ctcmpc: %s() came into th_has_pdu\n", 1096 - __FUNCTION__); 1186 + CTCM_PR_DBGDATA("%s: came into th_has_pdu\n", __func__); 1097 1187 if ((fsm_getstate(grp->fsm) == MPCG_STATE_FLOWC) || 1098 1188 ((fsm_getstate(grp->fsm) == MPCG_STATE_READY) && 1099 1189 (header->th_seq_num != ch->th_seq_num + 1) && ··· 1102 1202 grp->out_of_sequence += 1; 1103 1203 __skb_push(pskb, TH_HEADER_LENGTH); 1104 1204 skb_queue_tail(&ch->io_queue, pskb); 1105 - if (do_debug_data) 1106 - ctcm_pr_debug("ctcmpc: %s() th_seq_num " 1107 - "expect:%08x got:%08x\n", __FUNCTION__, 1108 - ch->th_seq_num + 1, header->th_seq_num); 1205 + CTCM_PR_DBGDATA("%s: th_seq_num expect:%08x " 1206 + "got:%08x\n", __func__, 1207 + ch->th_seq_num + 1, header->th_seq_num); 1109 1208 1110 1209 return; 1111 1210 } 1112 1211 grp->out_of_sequence = 0; 1113 1212 ch->th_seq_num = header->th_seq_num; 1114 1213 1115 - if (do_debug_data) 1116 - ctcm_pr_debug("ctcmpc: %s() FromVTAM_th_seq=%08x\n", 1117 - __FUNCTION__, ch->th_seq_num); 1214 + CTCM_PR_DBGDATA("ctcmpc: %s() FromVTAM_th_seq=%08x\n", 1215 + __func__, ch->th_seq_num); 1118 1216 1119 1217 if (unlikely(fsm_getstate(grp->fsm) != MPCG_STATE_READY)) 1120 1218 goto done; 1121 1219 pdu_last_seen = 0; 1122 1220 while ((pskb->len > 0) && !pdu_last_seen) { 1123 1221 curr_pdu = (struct pdu *)pskb->data; 1124 - if (do_debug_data) { 1125 - ctcm_pr_debug("ctcm: %s() pdu_header\n", 1126 - __FUNCTION__); 1127 - ctcmpc_dumpit((char *)pskb->data, 1128 - PDU_HEADER_LENGTH); 1129 - ctcm_pr_debug("ctcm: %s() pskb len: %04x \n", 1130 - __FUNCTION__, pskb->len); 1131 - } 1222 + 1223 + CTCM_PR_DBGDATA("%s: pdu_header\n", __func__); 1224 + CTCM_D3_DUMP((char *)pskb->data, PDU_HEADER_LENGTH); 1225 + CTCM_PR_DBGDATA("%s: pskb len: %04x \n", 1226 + __func__, pskb->len); 1227 + 1132 1228 skb_pull(pskb, PDU_HEADER_LENGTH); 1133 1229 1134 1230 if (curr_pdu->pdu_flag & PDU_LAST) ··· 1135 1239 pskb->protocol = htons(ETH_P_SNA_DIX); 1136 1240 1137 1241 if ((pskb->len <= 0) || (pskb->len > ch->max_bufsize)) { 1138 - printk(KERN_INFO 1139 - "%s Illegal packet size %d " 1140 - "received " 1141 - "dropping\n", dev->name, 1142 - pskb->len); 1242 + CTCM_DBF_TEXT_(MPC_ERROR, CTC_DBF_ERROR, 1243 + "%s(%s): Dropping packet with " 1244 + "illegal siize %d", 1245 + CTCM_FUNTAIL, dev->name, pskb->len); 1246 + 1143 1247 priv->stats.rx_dropped++; 1144 1248 priv->stats.rx_length_errors++; 1145 1249 goto done; 1146 1250 } 1147 1251 skb_reset_mac_header(pskb); 1148 1252 new_len = curr_pdu->pdu_offset; 1149 - if (do_debug_data) 1150 - ctcm_pr_debug("ctcmpc: %s() new_len: %04x \n", 1151 - __FUNCTION__, new_len); 1253 + CTCM_PR_DBGDATA("%s: new_len: %04x \n", 1254 + __func__, new_len); 1152 1255 if ((new_len == 0) || (new_len > pskb->len)) { 1153 1256 /* should never happen */ 1154 1257 /* pskb len must be hosed...bail out */ 1155 - printk(KERN_INFO 1156 - "ctcmpc: %s(): invalid pdu" 1157 - " offset of %04x - data may be" 1158 - "lost\n", __FUNCTION__, new_len); 1159 - goto done; 1258 + CTCM_DBF_TEXT_(MPC_ERROR, CTC_DBF_ERROR, 1259 + "%s(%s): non valid pdu_offset: %04x", 1260 + /* "data may be lost", */ 1261 + CTCM_FUNTAIL, dev->name, new_len); 1262 + goto done; 1160 1263 } 1161 1264 skb = __dev_alloc_skb(new_len+4, GFP_ATOMIC); 1162 1265 1163 1266 if (!skb) { 1164 - printk(KERN_INFO 1165 - "ctcm: %s Out of memory in " 1166 - "%s()- request-len:%04x \n", 1167 - dev->name, 1168 - __FUNCTION__, 1169 - new_len+4); 1267 + CTCM_DBF_TEXT_(MPC_ERROR, CTC_DBF_ERROR, 1268 + "%s(%s): MEMORY allocation error", 1269 + CTCM_FUNTAIL, dev->name); 1170 1270 priv->stats.rx_dropped++; 1171 - fsm_event(grp->fsm, 1172 - MPCG_EVENT_INOP, dev); 1271 + fsm_event(grp->fsm, MPCG_EVENT_INOP, dev); 1173 1272 goto done; 1174 1273 } 1175 - 1176 - memcpy(skb_put(skb, new_len), 1177 - pskb->data, new_len); 1274 + memcpy(skb_put(skb, new_len), pskb->data, new_len); 1178 1275 1179 1276 skb_reset_mac_header(skb); 1180 1277 skb->dev = pskb->dev; ··· 1176 1287 *((__u32 *) skb_push(skb, 4)) = ch->pdu_seq; 1177 1288 ch->pdu_seq++; 1178 1289 1179 - if (do_debug_data) 1180 - ctcm_pr_debug("%s: ToDCM_pdu_seq= %08x\n", 1181 - __FUNCTION__, ch->pdu_seq); 1182 - 1183 - ctcm_pr_debug("ctcm: %s() skb:%0lx " 1184 - "skb len: %d \n", __FUNCTION__, 1185 - (unsigned long)skb, skb->len); 1186 1290 if (do_debug_data) { 1187 - ctcm_pr_debug("ctcmpc: %s() up to 32 bytes" 1188 - " of pdu_data sent\n", 1189 - __FUNCTION__); 1291 + ctcm_pr_debug("%s: ToDCM_pdu_seq= %08x\n", 1292 + __func__, ch->pdu_seq); 1293 + ctcm_pr_debug("%s: skb:%0lx " 1294 + "skb len: %d \n", __func__, 1295 + (unsigned long)skb, skb->len); 1296 + ctcm_pr_debug("%s: up to 32 bytes " 1297 + "of pdu_data sent\n", __func__); 1190 1298 ctcmpc_dump32((char *)skb->data, skb->len); 1191 1299 } 1192 1300 ··· 1202 1316 mpcginfo->ch = ch; 1203 1317 mpcginfo->th = header; 1204 1318 mpcginfo->skb = pskb; 1205 - ctcm_pr_debug("ctcmpc: %s() Not PDU - may be control pkt\n", 1206 - __FUNCTION__); 1319 + CTCM_PR_DEBUG("%s: Not PDU - may be control pkt\n", 1320 + __func__); 1207 1321 /* it's a sweep? */ 1208 1322 sweep = (struct th_sweep *)pskb->data; 1209 1323 mpcginfo->sweep = sweep; ··· 1219 1333 } else if (header->th_blk_flag == TH_DISCONTACT) 1220 1334 fsm_event(grp->fsm, MPCG_EVENT_DISCONC, mpcginfo); 1221 1335 else if (header->th_seq_num != 0) { 1222 - printk(KERN_INFO "%s unexpected packet" 1223 - " expected control pkt\n", dev->name); 1336 + CTCM_DBF_TEXT_(MPC_ERROR, CTC_DBF_ERROR, 1337 + "%s(%s): control pkt expected\n", 1338 + CTCM_FUNTAIL, dev->name); 1224 1339 priv->stats.rx_dropped++; 1225 1340 /* mpcginfo only used for non-data transfers */ 1226 1341 kfree(mpcginfo); ··· 1234 1347 dev_kfree_skb_any(pskb); 1235 1348 if (sendrc == NET_RX_DROP) { 1236 1349 printk(KERN_WARNING "%s %s() NETWORK BACKLOG EXCEEDED" 1237 - " - PACKET DROPPED\n", dev->name, __FUNCTION__); 1350 + " - PACKET DROPPED\n", dev->name, __func__); 1238 1351 fsm_event(grp->fsm, MPCG_EVENT_INOP, dev); 1239 1352 } 1240 1353 1241 - if (do_debug) 1242 - ctcm_pr_debug("ctcmpc exit : %s %s(): ch=0x%p id=%s\n", 1243 - dev->name, __FUNCTION__, ch, ch->id); 1354 + CTCM_PR_DEBUG("exit %s: %s: ch=0x%p id=%s\n", 1355 + __func__, dev->name, ch, ch->id); 1244 1356 } 1245 1357 1246 1358 /** ··· 1252 1366 */ 1253 1367 void ctcmpc_bh(unsigned long thischan) 1254 1368 { 1255 - struct channel *ch = (struct channel *)thischan; 1369 + struct channel *ch = (struct channel *)thischan; 1256 1370 struct sk_buff *skb; 1257 - struct net_device *dev = ch->netdev; 1258 - struct ctcm_priv *priv = dev->priv; 1259 - struct mpc_group *grp = priv->mpcg; 1371 + struct net_device *dev = ch->netdev; 1372 + struct ctcm_priv *priv = dev->priv; 1373 + struct mpc_group *grp = priv->mpcg; 1260 1374 1261 - if (do_debug) 1262 - ctcm_pr_debug("%s cp:%i enter: %s() %s\n", 1263 - dev->name, smp_processor_id(), __FUNCTION__, ch->id); 1375 + CTCM_PR_DEBUG("%s cp:%i enter: %s() %s\n", 1376 + dev->name, smp_processor_id(), __func__, ch->id); 1264 1377 /* caller has requested driver to throttle back */ 1265 1378 while ((fsm_getstate(grp->fsm) != MPCG_STATE_FLOWC) && 1266 1379 (skb = skb_dequeue(&ch->io_queue))) { ··· 1275 1390 if (skb == skb_peek(&ch->io_queue)) 1276 1391 break; 1277 1392 } 1278 - if (do_debug) 1279 - ctcm_pr_debug("ctcmpc exit : %s %s(): ch=0x%p id=%s\n", 1280 - dev->name, __FUNCTION__, ch, ch->id); 1393 + CTCM_PR_DEBUG("exit %s: %s: ch=0x%p id=%s\n", 1394 + __func__, dev->name, ch, ch->id); 1281 1395 return; 1282 1396 } 1283 1397 ··· 1287 1403 { 1288 1404 struct mpc_group *grp; 1289 1405 1290 - CTCM_DBF_TEXT(MPC_SETUP, 3, __FUNCTION__); 1406 + CTCM_DBF_TEXT_(MPC_SETUP, CTC_DBF_INFO, 1407 + "Enter %s(%p)", CTCM_FUNTAIL, priv); 1291 1408 1292 1409 grp = kzalloc(sizeof(struct mpc_group), GFP_KERNEL); 1293 1410 if (grp == NULL) 1294 1411 return NULL; 1295 1412 1296 - grp->fsm = 1297 - init_fsm("mpcg", mpcg_state_names, mpcg_event_names, 1298 - MPCG_NR_STATES, MPCG_NR_EVENTS, mpcg_fsm, 1299 - mpcg_fsm_len, GFP_KERNEL); 1413 + grp->fsm = init_fsm("mpcg", mpcg_state_names, mpcg_event_names, 1414 + MPCG_NR_STATES, MPCG_NR_EVENTS, mpcg_fsm, 1415 + mpcg_fsm_len, GFP_KERNEL); 1300 1416 if (grp->fsm == NULL) { 1301 1417 kfree(grp); 1302 1418 return NULL; ··· 1308 1424 grp->xid_skb = 1309 1425 __dev_alloc_skb(MPC_BUFSIZE_DEFAULT, GFP_ATOMIC | GFP_DMA); 1310 1426 if (grp->xid_skb == NULL) { 1311 - printk(KERN_INFO "Couldn't alloc MPCgroup xid_skb\n"); 1312 1427 kfree_fsm(grp->fsm); 1313 1428 kfree(grp); 1314 1429 return NULL; ··· 1318 1435 memcpy(skb_put(grp->xid_skb, TH_HEADER_LENGTH), 1319 1436 &thnorm, TH_HEADER_LENGTH); 1320 1437 1321 - grp->xid = (struct xid2 *) skb_tail_pointer(grp->xid_skb); 1438 + grp->xid = (struct xid2 *)skb_tail_pointer(grp->xid_skb); 1322 1439 memcpy(skb_put(grp->xid_skb, XID2_LENGTH), &init_xid, XID2_LENGTH); 1323 1440 grp->xid->xid2_adj_id = jiffies | 0xfff00000; 1324 1441 grp->xid->xid2_sender_id = jiffies; ··· 1329 1446 grp->rcvd_xid_skb = 1330 1447 __dev_alloc_skb(MPC_BUFSIZE_DEFAULT, GFP_ATOMIC|GFP_DMA); 1331 1448 if (grp->rcvd_xid_skb == NULL) { 1332 - printk(KERN_INFO "Couldn't alloc MPCgroup rcvd_xid_skb\n"); 1333 1449 kfree_fsm(grp->fsm); 1334 1450 dev_kfree_skb(grp->xid_skb); 1335 1451 kfree(grp); ··· 1374 1492 int rc = 0; 1375 1493 struct channel *wch, *rch; 1376 1494 1377 - if (dev == NULL) { 1378 - printk(KERN_INFO "%s() dev=NULL\n", __FUNCTION__); 1379 - return; 1380 - } 1381 - 1382 - ctcm_pr_debug("ctcmpc enter: %s %s()\n", dev->name, __FUNCTION__); 1495 + BUG_ON(dev == NULL); 1496 + CTCM_PR_DEBUG("Enter %s: %s\n", __func__, dev->name); 1383 1497 1384 1498 priv = dev->priv; 1385 1499 grp = priv->mpcg; 1386 1500 grp->flow_off_called = 0; 1387 - 1388 1501 fsm_deltimer(&grp->timer); 1389 - 1390 1502 if (grp->channels_terminating) 1391 - goto done; 1503 + return; 1392 1504 1393 1505 grp->channels_terminating = 1; 1394 - 1395 1506 grp->saved_state = fsm_getstate(grp->fsm); 1396 1507 fsm_newstate(grp->fsm, MPCG_STATE_INOP); 1397 1508 if (grp->saved_state > MPCG_STATE_XID7INITF) 1398 - printk(KERN_NOTICE "%s:MPC GROUP INOPERATIVE\n", dev->name); 1509 + CTCM_DBF_TEXT_(MPC_TRACE, CTC_DBF_NOTICE, 1510 + "%s(%s): MPC GROUP INOPERATIVE", 1511 + CTCM_FUNTAIL, dev->name); 1399 1512 if ((grp->saved_state != MPCG_STATE_RESET) || 1400 1513 /* dealloc_channel has been called */ 1401 - ((grp->saved_state == MPCG_STATE_RESET) && 1402 - (grp->port_persist == 0))) 1514 + ((grp->saved_state == MPCG_STATE_RESET) && 1515 + (grp->port_persist == 0))) 1403 1516 fsm_deltimer(&priv->restart_timer); 1404 1517 1405 1518 wch = priv->channel[WRITE]; ··· 1444 1567 /* This can result in INOP of VTAM PU due to halting of */ 1445 1568 /* outstanding IO which causes a sense to be returned */ 1446 1569 /* Only about 3 senses are allowed and then IOS/VTAM will*/ 1447 - /* ebcome unreachable without manual intervention */ 1448 - if ((grp->port_persist == 1) || (grp->alloc_called)) { 1570 + /* become unreachable without manual intervention */ 1571 + if ((grp->port_persist == 1) || (grp->alloc_called)) { 1449 1572 grp->alloc_called = 0; 1450 1573 fsm_deltimer(&priv->restart_timer); 1451 - fsm_addtimer(&priv->restart_timer, 1452 - 500, 1453 - DEV_EVENT_RESTART, 1454 - dev); 1574 + fsm_addtimer(&priv->restart_timer, 500, DEV_EVENT_RESTART, dev); 1455 1575 fsm_newstate(grp->fsm, MPCG_STATE_RESET); 1456 1576 if (grp->saved_state > MPCG_STATE_XID7INITF) 1457 - printk(KERN_NOTICE "%s:MPC GROUP RECOVERY SCHEDULED\n", 1458 - dev->name); 1577 + CTCM_DBF_TEXT_(MPC_TRACE, CTC_DBF_ALWAYS, 1578 + "%s(%s): MPC GROUP RECOVERY SCHEDULED", 1579 + CTCM_FUNTAIL, dev->name); 1459 1580 } else { 1460 1581 fsm_deltimer(&priv->restart_timer); 1461 1582 fsm_addtimer(&priv->restart_timer, 500, DEV_EVENT_STOP, dev); 1462 1583 fsm_newstate(grp->fsm, MPCG_STATE_RESET); 1463 - printk(KERN_NOTICE "%s:MPC GROUP RECOVERY NOT ATTEMPTED\n", 1464 - dev->name); 1584 + CTCM_DBF_TEXT_(MPC_TRACE, CTC_DBF_ALWAYS, 1585 + "%s(%s): NO MPC GROUP RECOVERY ATTEMPTED", 1586 + CTCM_FUNTAIL, dev->name); 1465 1587 } 1466 - 1467 - done: 1468 - ctcm_pr_debug("ctcmpc exit:%s %s()\n", dev->name, __FUNCTION__); 1469 - return; 1470 1588 } 1471 1589 1472 1590 /** ··· 1481 1609 struct channel *wch; 1482 1610 struct channel *rch; 1483 1611 1484 - CTCM_DBF_TEXT(MPC_TRACE, 6, __FUNCTION__); 1485 - 1486 - if (dev == NULL) { 1487 - CTCM_DBF_TEXT_(MPC_ERROR, 4, "%s: dev=NULL\n", __FUNCTION__); 1488 - return; 1489 - } 1612 + BUG_ON(dev == NULL); 1490 1613 1491 1614 priv = dev->priv; 1492 1615 grp = priv->mpcg; ··· 1500 1633 fsm_event(grp->fsm, MPCG_EVENT_INOP, dev); 1501 1634 } 1502 1635 1503 - CTCM_DBF_TEXT_(MPC_TRACE, 6, "%s: dev=%s exit", 1504 - __FUNCTION__, dev->name); 1636 + CTCM_DBF_TEXT_(MPC_TRACE, CTC_DBF_DEBUG, 1637 + "%s: dev=%s exit", 1638 + CTCM_FUNTAIL, dev->name); 1505 1639 return; 1506 1640 } 1507 1641 ··· 1514 1646 { 1515 1647 struct mpcg_info *mpcginfo = arg; 1516 1648 struct channel *ch = mpcginfo->ch; 1517 - struct net_device *dev = ch->netdev; 1518 - struct ctcm_priv *priv = dev->priv; 1519 - struct mpc_group *grp = priv->mpcg; 1649 + struct net_device *dev; 1650 + struct ctcm_priv *priv; 1651 + struct mpc_group *grp; 1520 1652 1521 - if (ch == NULL) { 1522 - printk(KERN_INFO "%s() ch=NULL\n", __FUNCTION__); 1523 - return; 1653 + if (ch) { 1654 + dev = ch->netdev; 1655 + if (dev) { 1656 + priv = dev->priv; 1657 + if (priv) { 1658 + CTCM_DBF_TEXT_(MPC_TRACE, CTC_DBF_NOTICE, 1659 + "%s: %s: %s\n", 1660 + CTCM_FUNTAIL, dev->name, ch->id); 1661 + grp = priv->mpcg; 1662 + grp->send_qllc_disc = 1; 1663 + fsm_event(grp->fsm, MPCG_EVENT_INOP, dev); 1664 + } 1665 + } 1524 1666 } 1525 - if (ch->netdev == NULL) { 1526 - printk(KERN_INFO "%s() dev=NULL\n", __FUNCTION__); 1527 - return; 1528 - } 1529 1667 1530 - ctcm_pr_debug("ctcmpc enter: %s %s()\n", dev->name, __FUNCTION__); 1531 - 1532 - grp->send_qllc_disc = 1; 1533 - fsm_event(grp->fsm, MPCG_EVENT_INOP, dev); 1534 - 1535 - ctcm_pr_debug("ctcmpc exit: %s %s()\n", dev->name, __FUNCTION__); 1536 1668 return; 1537 1669 } 1538 1670 ··· 1543 1675 */ 1544 1676 void mpc_action_send_discontact(unsigned long thischan) 1545 1677 { 1546 - struct channel *ch; 1547 - struct net_device *dev; 1548 - struct ctcm_priv *priv; 1549 - struct mpc_group *grp; 1550 - int rc = 0; 1551 - unsigned long saveflags; 1552 - 1553 - ch = (struct channel *)thischan; 1554 - dev = ch->netdev; 1555 - priv = dev->priv; 1556 - grp = priv->mpcg; 1557 - 1558 - ctcm_pr_info("ctcmpc: %s cp:%i enter: %s() GrpState:%s ChState:%s\n", 1559 - dev->name, 1560 - smp_processor_id(), 1561 - __FUNCTION__, 1562 - fsm_getstate_str(grp->fsm), 1563 - fsm_getstate_str(ch->fsm)); 1564 - saveflags = 0; /* avoids compiler warning with 1565 - spin_unlock_irqrestore */ 1678 + int rc; 1679 + struct channel *ch = (struct channel *)thischan; 1680 + unsigned long saveflags = 0; 1566 1681 1567 1682 spin_lock_irqsave(get_ccwdev_lock(ch->cdev), saveflags); 1568 1683 rc = ccw_device_start(ch->cdev, &ch->ccw[15], ··· 1553 1702 spin_unlock_irqrestore(get_ccwdev_lock(ch->cdev), saveflags); 1554 1703 1555 1704 if (rc != 0) { 1556 - ctcm_pr_info("ctcmpc: %s() ch:%s IO failed \n", 1557 - __FUNCTION__, 1558 - ch->id); 1559 - ctcm_ccw_check_rc(ch, rc, "send discontact"); 1560 - /* Not checking return code value here */ 1561 - /* Making best effort to notify partner*/ 1562 - /* that MPC Group is going down */ 1705 + ctcm_ccw_check_rc(ch, rc, (char *)__func__); 1563 1706 } 1564 1707 1565 - ctcm_pr_debug("ctcmpc exit: %s %s()\n", dev->name, __FUNCTION__); 1566 1708 return; 1567 1709 } 1568 1710 ··· 1567 1723 */ 1568 1724 static int mpc_validate_xid(struct mpcg_info *mpcginfo) 1569 1725 { 1570 - struct channel *ch = mpcginfo->ch; 1571 - struct net_device *dev = ch->netdev; 1726 + struct channel *ch = mpcginfo->ch; 1727 + struct net_device *dev = ch->netdev; 1572 1728 struct ctcm_priv *priv = dev->priv; 1573 1729 struct mpc_group *grp = priv->mpcg; 1574 - struct xid2 *xid = mpcginfo->xid; 1575 - int failed = 0; 1576 - int rc = 0; 1577 - __u64 our_id, their_id = 0; 1578 - int len; 1730 + struct xid2 *xid = mpcginfo->xid; 1731 + int rc = 0; 1732 + __u64 our_id = 0; 1733 + __u64 their_id = 0; 1734 + int len = TH_HEADER_LENGTH + PDU_HEADER_LENGTH; 1579 1735 1580 - len = TH_HEADER_LENGTH + PDU_HEADER_LENGTH; 1736 + CTCM_PR_DEBUG("Enter %s: xid=%p\n", __func__, xid); 1581 1737 1582 - ctcm_pr_debug("ctcmpc enter: %s()\n", __FUNCTION__); 1583 - 1584 - if (mpcginfo->xid == NULL) { 1585 - printk(KERN_INFO "%s() xid=NULL\n", __FUNCTION__); 1738 + if (xid == NULL) { 1586 1739 rc = 1; 1587 - goto done; 1740 + /* XID REJECTED: xid == NULL */ 1741 + CTCM_DBF_TEXT_(MPC_ERROR, CTC_DBF_ERROR, 1742 + "%s(%s): xid = NULL", 1743 + CTCM_FUNTAIL, ch->id); 1744 + goto done; 1588 1745 } 1589 1746 1590 - ctcm_pr_debug("ctcmpc : %s xid received()\n", __FUNCTION__); 1591 - ctcmpc_dumpit((char *)mpcginfo->xid, XID2_LENGTH); 1747 + CTCM_D3_DUMP((char *)xid, XID2_LENGTH); 1592 1748 1593 1749 /*the received direction should be the opposite of ours */ 1594 1750 if (((CHANNEL_DIRECTION(ch->flags) == READ) ? XID2_WRITE_SIDE : 1595 1751 XID2_READ_SIDE) != xid->xid2_dlc_type) { 1596 - failed = 1; 1597 - printk(KERN_INFO "ctcmpc:%s() XID REJECTED - READ-WRITE CH " 1598 - "Pairing Invalid \n", __FUNCTION__); 1752 + rc = 2; 1753 + /* XID REJECTED: r/w channel pairing mismatch */ 1754 + CTCM_DBF_TEXT_(MPC_ERROR, CTC_DBF_ERROR, 1755 + "%s(%s): r/w channel pairing mismatch", 1756 + CTCM_FUNTAIL, ch->id); 1757 + goto done; 1599 1758 } 1600 1759 1601 1760 if (xid->xid2_dlc_type == XID2_READ_SIDE) { 1602 - ctcm_pr_debug("ctcmpc: %s(): grpmaxbuf:%d xid2buflen:%d\n", 1603 - __FUNCTION__, grp->group_max_buflen, 1604 - xid->xid2_buf_len); 1761 + CTCM_PR_DEBUG("%s: grpmaxbuf:%d xid2buflen:%d\n", __func__, 1762 + grp->group_max_buflen, xid->xid2_buf_len); 1605 1763 1606 - if (grp->group_max_buflen == 0 || 1607 - grp->group_max_buflen > xid->xid2_buf_len - len) 1764 + if (grp->group_max_buflen == 0 || grp->group_max_buflen > 1765 + xid->xid2_buf_len - len) 1608 1766 grp->group_max_buflen = xid->xid2_buf_len - len; 1609 1767 } 1610 1768 1611 - 1612 - if (grp->saved_xid2 == NULL) { 1769 + if (grp->saved_xid2 == NULL) { 1613 1770 grp->saved_xid2 = 1614 1771 (struct xid2 *)skb_tail_pointer(grp->rcvd_xid_skb); 1615 1772 ··· 1631 1786 /* lower id assume the xside role */ 1632 1787 if (our_id < their_id) { 1633 1788 grp->roll = XSIDE; 1634 - ctcm_pr_debug("ctcmpc :%s() WE HAVE LOW ID-" 1635 - "TAKE XSIDE\n", __FUNCTION__); 1789 + CTCM_DBF_TEXT_(MPC_TRACE, CTC_DBF_NOTICE, 1790 + "%s(%s): WE HAVE LOW ID - TAKE XSIDE", 1791 + CTCM_FUNTAIL, ch->id); 1636 1792 } else { 1637 1793 grp->roll = YSIDE; 1638 - ctcm_pr_debug("ctcmpc :%s() WE HAVE HIGH ID-" 1639 - "TAKE YSIDE\n", __FUNCTION__); 1794 + CTCM_DBF_TEXT_(MPC_TRACE, CTC_DBF_NOTICE, 1795 + "%s(%s): WE HAVE HIGH ID - TAKE YSIDE", 1796 + CTCM_FUNTAIL, ch->id); 1640 1797 } 1641 1798 1642 1799 } else { 1643 1800 if (xid->xid2_flag4 != grp->saved_xid2->xid2_flag4) { 1644 - failed = 1; 1645 - printk(KERN_INFO "%s XID REJECTED - XID Flag Byte4\n", 1646 - __FUNCTION__); 1801 + rc = 3; 1802 + /* XID REJECTED: xid flag byte4 mismatch */ 1803 + CTCM_DBF_TEXT_(MPC_ERROR, CTC_DBF_ERROR, 1804 + "%s(%s): xid flag byte4 mismatch", 1805 + CTCM_FUNTAIL, ch->id); 1647 1806 } 1648 1807 if (xid->xid2_flag2 == 0x40) { 1649 - failed = 1; 1650 - printk(KERN_INFO "%s XID REJECTED - XID NOGOOD\n", 1651 - __FUNCTION__); 1808 + rc = 4; 1809 + /* XID REJECTED - xid NOGOOD */ 1810 + CTCM_DBF_TEXT_(MPC_ERROR, CTC_DBF_ERROR, 1811 + "%s(%s): xid NOGOOD", 1812 + CTCM_FUNTAIL, ch->id); 1652 1813 } 1653 1814 if (xid->xid2_adj_id != grp->saved_xid2->xid2_adj_id) { 1654 - failed = 1; 1655 - printk(KERN_INFO "%s XID REJECTED - " 1656 - "Adjacent Station ID Mismatch\n", 1657 - __FUNCTION__); 1815 + rc = 5; 1816 + /* XID REJECTED - Adjacent Station ID Mismatch */ 1817 + CTCM_DBF_TEXT_(MPC_ERROR, CTC_DBF_ERROR, 1818 + "%s(%s): Adjacent Station ID Mismatch", 1819 + CTCM_FUNTAIL, ch->id); 1658 1820 } 1659 1821 if (xid->xid2_sender_id != grp->saved_xid2->xid2_sender_id) { 1660 - failed = 1; 1661 - printk(KERN_INFO "%s XID REJECTED - " 1662 - "Sender Address Mismatch\n", __FUNCTION__); 1663 - 1822 + rc = 6; 1823 + /* XID REJECTED - Sender Address Mismatch */ 1824 + CTCM_DBF_TEXT_(MPC_ERROR, CTC_DBF_ERROR, 1825 + "%s(%s): Sender Address Mismatch", 1826 + CTCM_FUNTAIL, ch->id); 1664 1827 } 1665 - } 1666 - 1667 - if (failed) { 1668 - ctcm_pr_info("ctcmpc : %s() failed\n", __FUNCTION__); 1669 - priv->xid->xid2_flag2 = 0x40; 1670 - grp->saved_xid2->xid2_flag2 = 0x40; 1671 - rc = 1; 1672 1828 } 1673 1829 1674 1830 done: 1831 + if (rc) { 1832 + ctcm_pr_info("ctcmpc : %s() failed\n", __FUNCTION__); 1833 + priv->xid->xid2_flag2 = 0x40; 1834 + grp->saved_xid2->xid2_flag2 = 0x40; 1835 + } 1675 1836 1676 - ctcm_pr_debug("ctcmpc exit: %s()\n", __FUNCTION__); 1677 1837 return rc; 1678 1838 } 1679 1839 ··· 1689 1839 static void mpc_action_side_xid(fsm_instance *fsm, void *arg, int side) 1690 1840 { 1691 1841 struct channel *ch = arg; 1692 - struct ctcm_priv *priv; 1693 - struct mpc_group *grp = NULL; 1694 - struct net_device *dev = NULL; 1695 1842 int rc = 0; 1696 1843 int gotlock = 0; 1697 1844 unsigned long saveflags = 0; /* avoids compiler warning with 1698 - spin_unlock_irqrestore */ 1845 + spin_unlock_irqrestore */ 1699 1846 1700 - if (ch == NULL) { 1701 - printk(KERN_INFO "%s ch=NULL\n", __FUNCTION__); 1702 - goto done; 1703 - } 1704 - 1705 - if (do_debug) 1706 - ctcm_pr_debug("ctcmpc enter: %s(): cp=%i ch=0x%p id=%s\n", 1707 - __FUNCTION__, smp_processor_id(), ch, ch->id); 1708 - 1709 - dev = ch->netdev; 1710 - if (dev == NULL) { 1711 - printk(KERN_INFO "%s dev=NULL\n", __FUNCTION__); 1712 - goto done; 1713 - } 1714 - 1715 - priv = dev->priv; 1716 - if (priv == NULL) { 1717 - printk(KERN_INFO "%s priv=NULL\n", __FUNCTION__); 1718 - goto done; 1719 - } 1720 - 1721 - grp = priv->mpcg; 1722 - if (grp == NULL) { 1723 - printk(KERN_INFO "%s grp=NULL\n", __FUNCTION__); 1724 - goto done; 1725 - } 1847 + CTCM_PR_DEBUG("Enter %s: cp=%i ch=0x%p id=%s\n", 1848 + __func__, smp_processor_id(), ch, ch->id); 1726 1849 1727 1850 if (ctcm_checkalloc_buffer(ch)) 1728 1851 goto done; 1729 1852 1730 - /* skb data-buffer referencing: */ 1731 - 1853 + /* 1854 + * skb data-buffer referencing: 1855 + */ 1732 1856 ch->trans_skb->data = ch->trans_skb_data; 1733 1857 skb_reset_tail_pointer(ch->trans_skb); 1734 1858 ch->trans_skb->len = 0; ··· 1735 1911 ch->ccw[8].count = 0; 1736 1912 ch->ccw[8].cda = 0x00; 1737 1913 1914 + if (!(ch->xid_th && ch->xid && ch->xid_id)) 1915 + CTCM_DBF_TEXT_(MPC_TRACE, CTC_DBF_INFO, 1916 + "%s(%s): xid_th=%p, xid=%p, xid_id=%p", 1917 + CTCM_FUNTAIL, ch->id, ch->xid_th, ch->xid, ch->xid_id); 1918 + 1738 1919 if (side == XSIDE) { 1739 1920 /* mpc_action_xside_xid */ 1740 - if (ch->xid_th == NULL) { 1741 - printk(KERN_INFO "%s ch->xid_th=NULL\n", __FUNCTION__); 1742 - goto done; 1743 - } 1921 + if (ch->xid_th == NULL) 1922 + goto done; 1744 1923 ch->ccw[9].cmd_code = CCW_CMD_WRITE; 1745 1924 ch->ccw[9].flags = CCW_FLAG_SLI | CCW_FLAG_CC; 1746 1925 ch->ccw[9].count = TH_HEADER_LENGTH; 1747 1926 ch->ccw[9].cda = virt_to_phys(ch->xid_th); 1748 1927 1749 - if (ch->xid == NULL) { 1750 - printk(KERN_INFO "%s ch->xid=NULL\n", __FUNCTION__); 1751 - goto done; 1752 - } 1753 - 1928 + if (ch->xid == NULL) 1929 + goto done; 1754 1930 ch->ccw[10].cmd_code = CCW_CMD_WRITE; 1755 1931 ch->ccw[10].flags = CCW_FLAG_SLI | CCW_FLAG_CC; 1756 1932 ch->ccw[10].count = XID2_LENGTH; ··· 1780 1956 ch->ccw[10].count = XID2_LENGTH; 1781 1957 ch->ccw[10].cda = virt_to_phys(ch->rcvd_xid); 1782 1958 1783 - if (ch->xid_th == NULL) { 1784 - printk(KERN_INFO "%s ch->xid_th=NULL\n", __FUNCTION__); 1785 - goto done; 1786 - } 1959 + if (ch->xid_th == NULL) 1960 + goto done; 1787 1961 ch->ccw[11].cmd_code = CCW_CMD_WRITE; 1788 1962 ch->ccw[11].flags = CCW_FLAG_SLI | CCW_FLAG_CC; 1789 1963 ch->ccw[11].count = TH_HEADER_LENGTH; 1790 1964 ch->ccw[11].cda = virt_to_phys(ch->xid_th); 1791 1965 1792 - if (ch->xid == NULL) { 1793 - printk(KERN_INFO "%s ch->xid=NULL\n", __FUNCTION__); 1794 - goto done; 1795 - } 1966 + if (ch->xid == NULL) 1967 + goto done; 1796 1968 ch->ccw[12].cmd_code = CCW_CMD_WRITE; 1797 1969 ch->ccw[12].flags = CCW_FLAG_SLI | CCW_FLAG_CC; 1798 1970 ch->ccw[12].count = XID2_LENGTH; 1799 1971 ch->ccw[12].cda = virt_to_phys(ch->xid); 1800 1972 1801 - if (ch->xid_id == NULL) { 1802 - printk(KERN_INFO "%s ch->xid_id=NULL\n", __FUNCTION__); 1803 - goto done; 1804 - } 1973 + if (ch->xid_id == NULL) 1974 + goto done; 1805 1975 ch->ccw[13].cmd_code = CCW_CMD_WRITE; 1806 1976 ch->ccw[13].cda = virt_to_phys(ch->xid_id); 1807 1977 ··· 1808 1990 ch->ccw[14].count = 0; 1809 1991 ch->ccw[14].cda = 0; 1810 1992 1811 - if (do_debug_ccw) 1812 - ctcmpc_dumpit((char *)&ch->ccw[8], sizeof(struct ccw1) * 7); 1993 + CTCM_CCW_DUMP((char *)&ch->ccw[8], sizeof(struct ccw1) * 7); 1994 + CTCM_D3_DUMP((char *)ch->xid_th, TH_HEADER_LENGTH); 1995 + CTCM_D3_DUMP((char *)ch->xid, XID2_LENGTH); 1996 + CTCM_D3_DUMP((char *)ch->xid_id, 4); 1813 1997 1814 - ctcmpc_dumpit((char *)ch->xid_th, TH_HEADER_LENGTH); 1815 - ctcmpc_dumpit((char *)ch->xid, XID2_LENGTH); 1816 - ctcmpc_dumpit((char *)ch->xid_id, 4); 1817 1998 if (!in_irq()) { 1818 1999 /* Such conditional locking is a known problem for 1819 2000 * sparse because its static undeterministic. ··· 1829 2012 spin_unlock_irqrestore(get_ccwdev_lock(ch->cdev), saveflags); 1830 2013 1831 2014 if (rc != 0) { 1832 - ctcm_pr_info("ctcmpc: %s() ch:%s IO failed \n", 1833 - __FUNCTION__, ch->id); 1834 2015 ctcm_ccw_check_rc(ch, rc, 1835 2016 (side == XSIDE) ? "x-side XID" : "y-side XID"); 1836 2017 } 1837 2018 1838 2019 done: 1839 - if (do_debug) 1840 - ctcm_pr_debug("ctcmpc exit : %s(): ch=0x%p id=%s\n", 1841 - __FUNCTION__, ch, ch->id); 2020 + CTCM_PR_DEBUG("Exit %s: ch=0x%p id=%s\n", 2021 + __func__, ch, ch->id); 1842 2022 return; 1843 2023 1844 2024 } ··· 1864 2050 */ 1865 2051 static void mpc_action_doxid0(fsm_instance *fsm, int event, void *arg) 1866 2052 { 1867 - struct channel *ch = arg; 1868 - struct ctcm_priv *priv; 1869 - struct mpc_group *grp = NULL; 1870 - struct net_device *dev = NULL; 2053 + struct channel *ch = arg; 2054 + struct net_device *dev = ch->netdev; 2055 + struct ctcm_priv *priv = dev->priv; 2056 + struct mpc_group *grp = priv->mpcg; 1871 2057 1872 - if (do_debug) 1873 - ctcm_pr_debug("ctcmpc enter: %s(): cp=%i ch=0x%p id=%s\n", 1874 - __FUNCTION__, smp_processor_id(), ch, ch->id); 1875 - 1876 - if (ch == NULL) { 1877 - printk(KERN_WARNING "%s ch=NULL\n", __FUNCTION__); 1878 - goto done; 1879 - } 1880 - 1881 - dev = ch->netdev; 1882 - if (dev == NULL) { 1883 - printk(KERN_WARNING "%s dev=NULL\n", __FUNCTION__); 1884 - goto done; 1885 - } 1886 - 1887 - priv = dev->priv; 1888 - if (priv == NULL) { 1889 - printk(KERN_WARNING "%s priv=NULL\n", __FUNCTION__); 1890 - goto done; 1891 - } 1892 - 1893 - grp = priv->mpcg; 1894 - if (grp == NULL) { 1895 - printk(KERN_WARNING "%s grp=NULL\n", __FUNCTION__); 1896 - goto done; 1897 - } 2058 + CTCM_PR_DEBUG("Enter %s: cp=%i ch=0x%p id=%s\n", 2059 + __func__, smp_processor_id(), ch, ch->id); 1898 2060 1899 2061 if (ch->xid == NULL) { 1900 - printk(KERN_WARNING "%s ch-xid=NULL\n", __FUNCTION__); 1901 - goto done; 2062 + CTCM_DBF_TEXT_(MPC_ERROR, CTC_DBF_ERROR, 2063 + "%s(%s): ch->xid == NULL", 2064 + CTCM_FUNTAIL, dev->name); 2065 + return; 1902 2066 } 1903 2067 1904 2068 fsm_newstate(ch->fsm, CH_XID0_INPROGRESS); ··· 1896 2104 1897 2105 fsm_event(grp->fsm, MPCG_EVENT_DOIO, ch); 1898 2106 1899 - done: 1900 - if (do_debug) 1901 - ctcm_pr_debug("ctcmpc exit : %s(): ch=0x%p id=%s\n", 1902 - __FUNCTION__, ch, ch->id); 1903 2107 return; 1904 - 1905 2108 } 1906 2109 1907 2110 /* ··· 1906 2119 static void mpc_action_doxid7(fsm_instance *fsm, int event, void *arg) 1907 2120 { 1908 2121 struct net_device *dev = arg; 1909 - struct ctcm_priv *priv = NULL; 1910 - struct mpc_group *grp = NULL; 2122 + struct ctcm_priv *priv = dev->priv; 2123 + struct mpc_group *grp = NULL; 1911 2124 int direction; 1912 - int rc = 0; 1913 2125 int send = 0; 1914 2126 1915 - ctcm_pr_debug("ctcmpc enter: %s() \n", __FUNCTION__); 1916 - 1917 - if (dev == NULL) { 1918 - printk(KERN_INFO "%s dev=NULL \n", __FUNCTION__); 1919 - rc = 1; 1920 - goto done; 1921 - } 1922 - 1923 - priv = dev->priv; 1924 - if (priv == NULL) { 1925 - printk(KERN_INFO "%s priv=NULL \n", __FUNCTION__); 1926 - rc = 1; 1927 - goto done; 1928 - } 1929 - 1930 - grp = priv->mpcg; 2127 + if (priv) 2128 + grp = priv->mpcg; 1931 2129 if (grp == NULL) { 1932 - printk(KERN_INFO "%s grp=NULL \n", __FUNCTION__); 1933 - rc = 1; 1934 - goto done; 2130 + fsm_event(grp->fsm, MPCG_EVENT_INOP, dev); 2131 + return; 1935 2132 } 1936 2133 1937 2134 for (direction = READ; direction <= WRITE; direction++) { ··· 1970 2199 fsm_event(grp->fsm, MPCG_EVENT_DOIO, ch); 1971 2200 } 1972 2201 1973 - done: 1974 - 1975 - if (rc != 0) 1976 - fsm_event(grp->fsm, MPCG_EVENT_INOP, dev); 1977 - 1978 2202 return; 1979 2203 } 1980 2204 ··· 1980 2214 static void mpc_action_rcvd_xid0(fsm_instance *fsm, int event, void *arg) 1981 2215 { 1982 2216 1983 - struct mpcg_info *mpcginfo = arg; 1984 - struct channel *ch = mpcginfo->ch; 1985 - struct net_device *dev = ch->netdev; 1986 - struct ctcm_priv *priv; 1987 - struct mpc_group *grp; 2217 + struct mpcg_info *mpcginfo = arg; 2218 + struct channel *ch = mpcginfo->ch; 2219 + struct net_device *dev = ch->netdev; 2220 + struct ctcm_priv *priv = dev->priv; 2221 + struct mpc_group *grp = priv->mpcg; 1988 2222 1989 - if (do_debug) 1990 - ctcm_pr_debug("ctcmpc enter: %s(): cp=%i ch=0x%p id=%s\n", 1991 - __FUNCTION__, smp_processor_id(), ch, ch->id); 1992 - 1993 - priv = dev->priv; 1994 - grp = priv->mpcg; 1995 - 1996 - ctcm_pr_debug("ctcmpc in:%s() %s xid2:%i xid7:%i xidt_p2:%i \n", 1997 - __FUNCTION__, ch->id, 1998 - grp->outstanding_xid2, 1999 - grp->outstanding_xid7, 2000 - grp->outstanding_xid7_p2); 2223 + CTCM_PR_DEBUG("%s: ch-id:%s xid2:%i xid7:%i xidt_p2:%i \n", 2224 + __func__, ch->id, grp->outstanding_xid2, 2225 + grp->outstanding_xid7, grp->outstanding_xid7_p2); 2001 2226 2002 2227 if (fsm_getstate(ch->fsm) < CH_XID7_PENDING) 2003 2228 fsm_newstate(ch->fsm, CH_XID7_PENDING); ··· 2025 2268 } 2026 2269 kfree(mpcginfo); 2027 2270 2028 - if (do_debug) { 2029 - ctcm_pr_debug("ctcmpc:%s() %s xid2:%i xid7:%i xidt_p2:%i \n", 2030 - __FUNCTION__, ch->id, 2031 - grp->outstanding_xid2, 2032 - grp->outstanding_xid7, 2033 - grp->outstanding_xid7_p2); 2034 - ctcm_pr_debug("ctcmpc:%s() %s grpstate: %s chanstate: %s \n", 2035 - __FUNCTION__, ch->id, 2036 - fsm_getstate_str(grp->fsm), 2037 - fsm_getstate_str(ch->fsm)); 2038 - } 2271 + CTCM_PR_DEBUG("ctcmpc:%s() %s xid2:%i xid7:%i xidt_p2:%i \n", 2272 + __func__, ch->id, grp->outstanding_xid2, 2273 + grp->outstanding_xid7, grp->outstanding_xid7_p2); 2274 + CTCM_PR_DEBUG("ctcmpc:%s() %s grpstate: %s chanstate: %s \n", 2275 + __func__, ch->id, 2276 + fsm_getstate_str(grp->fsm), fsm_getstate_str(ch->fsm)); 2039 2277 return; 2040 2278 2041 2279 } ··· 2048 2296 struct ctcm_priv *priv = dev->priv; 2049 2297 struct mpc_group *grp = priv->mpcg; 2050 2298 2051 - if (do_debug) { 2052 - ctcm_pr_debug("ctcmpc enter: %s(): cp=%i ch=0x%p id=%s\n", 2053 - __FUNCTION__, smp_processor_id(), ch, ch->id); 2054 - 2055 - ctcm_pr_debug("ctcmpc: outstanding_xid7: %i, " 2056 - " outstanding_xid7_p2: %i\n", 2057 - grp->outstanding_xid7, 2058 - grp->outstanding_xid7_p2); 2059 - } 2299 + CTCM_PR_DEBUG("Enter %s: cp=%i ch=0x%p id=%s\n", 2300 + __func__, smp_processor_id(), ch, ch->id); 2301 + CTCM_PR_DEBUG("%s: outstanding_xid7: %i, outstanding_xid7_p2: %i\n", 2302 + __func__, grp->outstanding_xid7, grp->outstanding_xid7_p2); 2060 2303 2061 2304 grp->outstanding_xid7--; 2062 2305 ch->xid_skb->data = ch->xid_skb_data; ··· 2084 2337 mpc_validate_xid(mpcginfo); 2085 2338 break; 2086 2339 } 2087 - 2088 2340 kfree(mpcginfo); 2089 - 2090 - if (do_debug) 2091 - ctcm_pr_debug("ctcmpc exit: %s(): cp=%i ch=0x%p id=%s\n", 2092 - __FUNCTION__, smp_processor_id(), ch, ch->id); 2093 2341 return; 2094 - 2095 2342 } 2096 2343 2097 2344 /* ··· 2094 2353 */ 2095 2354 static int mpc_send_qllc_discontact(struct net_device *dev) 2096 2355 { 2097 - int rc = 0; 2098 2356 __u32 new_len = 0; 2099 2357 struct sk_buff *skb; 2100 2358 struct qllc *qllcptr; 2101 - struct ctcm_priv *priv; 2102 - struct mpc_group *grp; 2359 + struct ctcm_priv *priv = dev->priv; 2360 + struct mpc_group *grp = priv->mpcg; 2103 2361 2104 - ctcm_pr_debug("ctcmpc enter: %s()\n", __FUNCTION__); 2105 - 2106 - if (dev == NULL) { 2107 - printk(KERN_INFO "%s() dev=NULL\n", __FUNCTION__); 2108 - rc = 1; 2109 - goto done; 2110 - } 2111 - 2112 - priv = dev->priv; 2113 - if (priv == NULL) { 2114 - printk(KERN_INFO "%s() priv=NULL\n", __FUNCTION__); 2115 - rc = 1; 2116 - goto done; 2117 - } 2118 - 2119 - grp = priv->mpcg; 2120 - if (grp == NULL) { 2121 - printk(KERN_INFO "%s() grp=NULL\n", __FUNCTION__); 2122 - rc = 1; 2123 - goto done; 2124 - } 2125 - ctcm_pr_info("ctcmpc: %s() GROUP STATE: %s\n", __FUNCTION__, 2126 - mpcg_state_names[grp->saved_state]); 2362 + CTCM_PR_DEBUG("%s: GROUP STATE: %s\n", 2363 + __func__, mpcg_state_names[grp->saved_state]); 2127 2364 2128 2365 switch (grp->saved_state) { 2129 2366 /* ··· 2127 2408 new_len = sizeof(struct qllc); 2128 2409 qllcptr = kzalloc(new_len, gfp_type() | GFP_DMA); 2129 2410 if (qllcptr == NULL) { 2130 - printk(KERN_INFO 2131 - "ctcmpc: Out of memory in %s()\n", 2132 - dev->name); 2133 - rc = 1; 2134 - goto done; 2411 + CTCM_DBF_TEXT_(MPC_ERROR, CTC_DBF_ERROR, 2412 + "%s(%s): qllcptr allocation error", 2413 + CTCM_FUNTAIL, dev->name); 2414 + return -ENOMEM; 2135 2415 } 2136 2416 2137 2417 qllcptr->qllc_address = 0xcc; ··· 2139 2421 skb = __dev_alloc_skb(new_len, GFP_ATOMIC); 2140 2422 2141 2423 if (skb == NULL) { 2142 - printk(KERN_INFO "%s Out of memory in mpc_send_qllc\n", 2143 - dev->name); 2424 + CTCM_DBF_TEXT_(MPC_ERROR, CTC_DBF_ERROR, 2425 + "%s(%s): skb allocation error", 2426 + CTCM_FUNTAIL, dev->name); 2144 2427 priv->stats.rx_dropped++; 2145 - rc = 1; 2146 2428 kfree(qllcptr); 2147 - goto done; 2429 + return -ENOMEM; 2148 2430 } 2149 2431 2150 2432 memcpy(skb_put(skb, new_len), qllcptr, new_len); 2151 2433 kfree(qllcptr); 2152 2434 2153 2435 if (skb_headroom(skb) < 4) { 2154 - printk(KERN_INFO "ctcmpc: %s() Unable to" 2155 - " build discontact for %s\n", 2156 - __FUNCTION__, dev->name); 2157 - rc = 1; 2436 + CTCM_DBF_TEXT_(MPC_ERROR, CTC_DBF_ERROR, 2437 + "%s(%s): skb_headroom error", 2438 + CTCM_FUNTAIL, dev->name); 2158 2439 dev_kfree_skb_any(skb); 2159 - goto done; 2440 + return -ENOMEM; 2160 2441 } 2161 2442 2162 2443 *((__u32 *)skb_push(skb, 4)) = priv->channel[READ]->pdu_seq; 2163 2444 priv->channel[READ]->pdu_seq++; 2164 - if (do_debug_data) 2165 - ctcm_pr_debug("ctcmpc: %s ToDCM_pdu_seq= %08x\n", 2166 - __FUNCTION__, priv->channel[READ]->pdu_seq); 2445 + CTCM_PR_DBGDATA("ctcmpc: %s ToDCM_pdu_seq= %08x\n", 2446 + __func__, priv->channel[READ]->pdu_seq); 2167 2447 2168 2448 /* receipt of CC03 resets anticipated sequence number on 2169 2449 receiving side */ ··· 2171 2455 skb->protocol = htons(ETH_P_SNAP); 2172 2456 skb->ip_summed = CHECKSUM_UNNECESSARY; 2173 2457 2174 - ctcmpc_dumpit((char *)skb->data, (sizeof(struct qllc) + 4)); 2458 + CTCM_D3_DUMP(skb->data, (sizeof(struct qllc) + 4)); 2175 2459 2176 2460 netif_rx(skb); 2177 2461 break; ··· 2180 2464 2181 2465 } 2182 2466 2183 - done: 2184 - ctcm_pr_debug("ctcmpc exit: %s()\n", __FUNCTION__); 2185 - return rc; 2467 + return 0; 2186 2468 } 2187 2469 /* --- This is the END my friend --- */ 2188 2470
+1 -1
drivers/s390/net/ctcm_mpc.h
··· 231 231 int ctcmpc_open(struct net_device *); 232 232 void ctcm_ccw_check_rc(struct channel *, int, char *); 233 233 void mpc_group_ready(unsigned long adev); 234 - int mpc_channel_action(struct channel *ch, int direction, int action); 234 + void mpc_channel_action(struct channel *ch, int direction, int action); 235 235 void mpc_action_send_discontact(unsigned long thischan); 236 236 void mpc_action_discontact(fsm_instance *fi, int event, void *arg); 237 237 void ctcmpc_bh(unsigned long thischan);