Deleted Added
full compact
isp.c (291499) isp.c (291500)
1/*-
2 * Copyright (c) 1997-2009 by Matthew Jacob
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *

--- 33 unchanged lines hidden (view full) ---

42 */
43#ifdef __NetBSD__
44#include <sys/cdefs.h>
45__KERNEL_RCSID(0, "$NetBSD$");
46#include <dev/ic/isp_netbsd.h>
47#endif
48#ifdef __FreeBSD__
49#include <sys/cdefs.h>
1/*-
2 * Copyright (c) 1997-2009 by Matthew Jacob
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *

--- 33 unchanged lines hidden (view full) ---

42 */
43#ifdef __NetBSD__
44#include <sys/cdefs.h>
45__KERNEL_RCSID(0, "$NetBSD$");
46#include <dev/ic/isp_netbsd.h>
47#endif
48#ifdef __FreeBSD__
49#include <sys/cdefs.h>
50__FBSDID("$FreeBSD: stable/10/sys/dev/isp/isp.c 291499 2015-11-30 21:29:38Z mav $");
50__FBSDID("$FreeBSD: stable/10/sys/dev/isp/isp.c 291500 2015-11-30 21:30:18Z mav $");
51#include <dev/isp/isp_freebsd.h>
52#endif
53#ifdef __OpenBSD__
54#include <dev/ic/isp_openbsd.h>
55#endif
56#ifdef __linux__
57#include "isp_linux.h"
58#endif

--- 2498 unchanged lines hidden (view full) ---

2557{
2558 fcparam *fcp = FCPARAM(isp, chan);
2559 mbreg_t mbs;
2560 union {
2561 isp_pdb_21xx_t fred;
2562 isp_pdb_24xx_t bill;
2563 } un;
2564
51#include <dev/isp/isp_freebsd.h>
52#endif
53#ifdef __OpenBSD__
54#include <dev/ic/isp_openbsd.h>
55#endif
56#ifdef __linux__
57#include "isp_linux.h"
58#endif

--- 2498 unchanged lines hidden (view full) ---

2557{
2558 fcparam *fcp = FCPARAM(isp, chan);
2559 mbreg_t mbs;
2560 union {
2561 isp_pdb_21xx_t fred;
2562 isp_pdb_24xx_t bill;
2563 } un;
2564
2565 MBSINIT(&mbs, MBOX_GET_PORT_DB, MBLOGALL & ~MBOX_COMMAND_PARAM_ERROR, 250000);
2565 MBSINIT(&mbs, MBOX_GET_PORT_DB,
2566 MBLOGALL & ~MBLOGMASK(MBOX_COMMAND_PARAM_ERROR), 250000);
2566 if (IS_24XX(isp)) {
2567 mbs.ibits = (1 << 9)|(1 << 10);
2568 mbs.param[1] = id;
2569 mbs.param[9] = chan;
2570 } else if (ISP_CAP_2KLOGIN(isp)) {
2571 mbs.param[1] = id;
2572 } else {
2573 mbs.param[1] = id << 8;

--- 53 unchanged lines hidden (view full) ---

2627 mbreg_t mbs;
2628 isp_pnhle_21xx_t el1, *elp1;
2629 isp_pnhle_23xx_t el3, *elp3;
2630 isp_pnhle_24xx_t el4, *elp4;
2631 int i, j;
2632 uint32_t p;
2633 uint16_t h;
2634
2567 if (IS_24XX(isp)) {
2568 mbs.ibits = (1 << 9)|(1 << 10);
2569 mbs.param[1] = id;
2570 mbs.param[9] = chan;
2571 } else if (ISP_CAP_2KLOGIN(isp)) {
2572 mbs.param[1] = id;
2573 } else {
2574 mbs.param[1] = id << 8;

--- 53 unchanged lines hidden (view full) ---

2628 mbreg_t mbs;
2629 isp_pnhle_21xx_t el1, *elp1;
2630 isp_pnhle_23xx_t el3, *elp3;
2631 isp_pnhle_24xx_t el4, *elp4;
2632 int i, j;
2633 uint32_t p;
2634 uint16_t h;
2635
2635 MBSINIT(&mbs, MBOX_GET_ID_LIST, MBLOGALL & ~MBOX_COMMAND_PARAM_ERROR, 250000);
2636 MBSINIT(&mbs, MBOX_GET_ID_LIST, MBLOGALL, 250000);
2636 if (IS_24XX(isp)) {
2637 mbs.param[2] = DMA_WD1(fcp->isp_scdma);
2638 mbs.param[3] = DMA_WD0(fcp->isp_scdma);
2639 mbs.param[6] = DMA_WD3(fcp->isp_scdma);
2640 mbs.param[7] = DMA_WD2(fcp->isp_scdma);
2641 mbs.param[8] = ISP_FC_SCRLEN;
2642 mbs.param[9] = chan;
2643 } else {

--- 77 unchanged lines hidden (view full) ---

2721 uint64_t wwn = INI_NONE;
2722 fcparam *fcp = FCPARAM(isp, chan);
2723 mbreg_t mbs;
2724
2725 if (fcp->isp_fwstate < FW_READY ||
2726 fcp->isp_loopstate < LOOP_PDB_RCVD) {
2727 return (wwn);
2728 }
2637 if (IS_24XX(isp)) {
2638 mbs.param[2] = DMA_WD1(fcp->isp_scdma);
2639 mbs.param[3] = DMA_WD0(fcp->isp_scdma);
2640 mbs.param[6] = DMA_WD3(fcp->isp_scdma);
2641 mbs.param[7] = DMA_WD2(fcp->isp_scdma);
2642 mbs.param[8] = ISP_FC_SCRLEN;
2643 mbs.param[9] = chan;
2644 } else {

--- 77 unchanged lines hidden (view full) ---

2722 uint64_t wwn = INI_NONE;
2723 fcparam *fcp = FCPARAM(isp, chan);
2724 mbreg_t mbs;
2725
2726 if (fcp->isp_fwstate < FW_READY ||
2727 fcp->isp_loopstate < LOOP_PDB_RCVD) {
2728 return (wwn);
2729 }
2729 MBSINIT(&mbs, MBOX_GET_PORT_NAME, MBLOGALL & ~MBOX_COMMAND_PARAM_ERROR, 500000);
2730 MBSINIT(&mbs, MBOX_GET_PORT_NAME,
2731 MBLOGALL & ~MBLOGMASK(MBOX_COMMAND_PARAM_ERROR), 500000);
2730 if (ISP_CAP_2KLOGIN(isp)) {
2731 mbs.param[1] = loopid;
2732 if (nodename) {
2733 mbs.param[10] = 1;
2734 }
2735 mbs.param[9] = chan;
2736 } else {
2737 mbs.ibitm = 3;

--- 2177 unchanged lines hidden (view full) ---

4915 }
4916 mbs.param[6] = XS_LUN(xs);
4917 } else {
4918 mbs.param[1] = tgt << 8 | XS_LUN(xs);
4919 }
4920 } else {
4921 mbs.param[1] = (chan << 15) | (tgt << 8) | XS_LUN(xs);
4922 }
2732 if (ISP_CAP_2KLOGIN(isp)) {
2733 mbs.param[1] = loopid;
2734 if (nodename) {
2735 mbs.param[10] = 1;
2736 }
2737 mbs.param[9] = chan;
2738 } else {
2739 mbs.ibitm = 3;

--- 2177 unchanged lines hidden (view full) ---

4917 }
4918 mbs.param[6] = XS_LUN(xs);
4919 } else {
4920 mbs.param[1] = tgt << 8 | XS_LUN(xs);
4921 }
4922 } else {
4923 mbs.param[1] = (chan << 15) | (tgt << 8) | XS_LUN(xs);
4924 }
4923 MBSINIT(&mbs, MBOX_ABORT, MBLOGALL & ~MBOX_COMMAND_ERROR, 0);
4925 MBSINIT(&mbs, MBOX_ABORT,
4926 MBLOGALL & ~MBLOGMASK(MBOX_COMMAND_ERROR), 0);
4924 mbs.param[2] = handle;
4925 isp_mboxcmd(isp, &mbs);
4926 if (mbs.param[0] != MBOX_COMMAND_COMPLETE) {
4927 break;
4928 }
4929 return (0);
4930
4931 case ISPCTL_UPDATE_PARAMS:

--- 2494 unchanged lines hidden (view full) ---

7426 if (nodelay) {
7427 ISP_DELAY(1000);
7428 }
7429}
7430
7431static void
7432isp_mboxcmd(ispsoftc_t *isp, mbreg_t *mbp)
7433{
4927 mbs.param[2] = handle;
4928 isp_mboxcmd(isp, &mbs);
4929 if (mbs.param[0] != MBOX_COMMAND_COMPLETE) {
4930 break;
4931 }
4932 return (0);
4933
4934 case ISPCTL_UPDATE_PARAMS:

--- 2494 unchanged lines hidden (view full) ---

7429 if (nodelay) {
7430 ISP_DELAY(1000);
7431 }
7432}
7433
7434static void
7435isp_mboxcmd(ispsoftc_t *isp, mbreg_t *mbp)
7436{
7434 const char *cname, *xname;
7437 const char *cname, *xname, *sname;
7435 char tname[16], mname[16];
7436 unsigned int ibits, obits, box, opcode;
7437
7438 opcode = mbp->param[0];
7439 if (IS_FC(isp)) {
7440 if (opcode > MAX_FC_OPCODE) {
7441 mbp->param[0] = MBOX_INVALID_COMMAND;
7442 isp_prt(isp, ISP_LOGERR, "Unknown Command 0x%x", opcode);

--- 93 unchanged lines hidden (view full) ---

7536 mbp->param[box] = isp->isp_mboxtmp[box];
7537 isp_prt(isp, ISP_LOGDEBUG3, "OUT mbox %d = 0x%04x", box,
7538 mbp->param[box]);
7539 }
7540 }
7541
7542 isp->isp_mboxbsy = 0;
7543 MBOX_RELEASE(isp);
7438 char tname[16], mname[16];
7439 unsigned int ibits, obits, box, opcode;
7440
7441 opcode = mbp->param[0];
7442 if (IS_FC(isp)) {
7443 if (opcode > MAX_FC_OPCODE) {
7444 mbp->param[0] = MBOX_INVALID_COMMAND;
7445 isp_prt(isp, ISP_LOGERR, "Unknown Command 0x%x", opcode);

--- 93 unchanged lines hidden (view full) ---

7539 mbp->param[box] = isp->isp_mboxtmp[box];
7540 isp_prt(isp, ISP_LOGDEBUG3, "OUT mbox %d = 0x%04x", box,
7541 mbp->param[box]);
7542 }
7543 }
7544
7545 isp->isp_mboxbsy = 0;
7546 MBOX_RELEASE(isp);
7544 out:
7545 if (mbp->logval == 0 || opcode == MBOX_EXEC_FIRMWARE) {
7547out:
7548 if (mbp->logval == 0 || mbp->param[0] == MBOX_COMMAND_COMPLETE)
7546 return;
7549 return;
7547 }
7548
7550
7549 /*
7550 * Just to be chatty here...
7551 */
7551 if ((mbp->param[0] & 0xbfe0) == 0 &&
7552 (mbp->logval & MBLOGMASK(mbp->param[0])) == 0)
7553 return;
7554
7552 xname = NULL;
7555 xname = NULL;
7556 sname = "";
7553 switch (mbp->param[0]) {
7557 switch (mbp->param[0]) {
7554 case MBOX_COMMAND_COMPLETE:
7555 break;
7556 case MBOX_INVALID_COMMAND:
7558 case MBOX_INVALID_COMMAND:
7557 if (mbp->logval & MBLOGMASK(MBOX_COMMAND_COMPLETE)) {
7558 xname = "INVALID COMMAND";
7559 }
7559 xname = "INVALID COMMAND";
7560 break;
7561 case MBOX_HOST_INTERFACE_ERROR:
7560 break;
7561 case MBOX_HOST_INTERFACE_ERROR:
7562 if (mbp->logval & MBLOGMASK(MBOX_HOST_INTERFACE_ERROR)) {
7563 xname = "HOST INTERFACE ERROR";
7564 }
7562 xname = "HOST INTERFACE ERROR";
7565 break;
7566 case MBOX_TEST_FAILED:
7563 break;
7564 case MBOX_TEST_FAILED:
7567 if (mbp->logval & MBLOGMASK(MBOX_TEST_FAILED)) {
7568 xname = "TEST FAILED";
7569 }
7565 xname = "TEST FAILED";
7570 break;
7571 case MBOX_COMMAND_ERROR:
7566 break;
7567 case MBOX_COMMAND_ERROR:
7572 if (mbp->logval & MBLOGMASK(MBOX_COMMAND_ERROR)) {
7573 xname = "COMMAND ERROR";
7574 }
7568 xname = "COMMAND ERROR";
7569 ISP_SNPRINTF(mname, sizeof(mname), " subcode 0x%x",
7570 mbp->param[1]);
7571 sname = mname;
7575 break;
7576 case MBOX_COMMAND_PARAM_ERROR:
7572 break;
7573 case MBOX_COMMAND_PARAM_ERROR:
7577 if (mbp->logval & MBLOGMASK(MBOX_COMMAND_PARAM_ERROR)) {
7578 xname = "COMMAND PARAMETER ERROR";
7579 }
7574 xname = "COMMAND PARAMETER ERROR";
7580 break;
7575 break;
7581 case MBOX_LOOP_ID_USED:
7582 if (mbp->logval & MBLOGMASK(MBOX_LOOP_ID_USED)) {
7583 xname = "LOOP ID ALREADY IN USE";
7584 }
7585 break;
7586 case MBOX_PORT_ID_USED:
7576 case MBOX_PORT_ID_USED:
7587 if (mbp->logval & MBLOGMASK(MBOX_PORT_ID_USED)) {
7588 xname = "PORT ID ALREADY IN USE";
7589 }
7577 xname = "PORT ID ALREADY IN USE";
7590 break;
7578 break;
7579 case MBOX_LOOP_ID_USED:
7580 xname = "LOOP ID ALREADY IN USE";
7581 break;
7591 case MBOX_ALL_IDS_USED:
7582 case MBOX_ALL_IDS_USED:
7592 if (mbp->logval & MBLOGMASK(MBOX_ALL_IDS_USED)) {
7593 xname = "ALL LOOP IDS IN USE";
7594 }
7583 xname = "ALL LOOP IDS IN USE";
7595 break;
7584 break;
7585 case MBOX_NOT_LOGGED_IN:
7586 xname = "NOT LOGGED IN";
7587 break;
7588 case MBOX_LINK_DOWN_ERROR:
7589 xname = "LINK DOWN ERROR";
7590 break;
7591 case MBOX_LOOPBACK_ERROR:
7592 xname = "LOOPBACK ERROR";
7593 break;
7594 case MBOX_CHECKSUM_ERROR:
7595 xname = "CHECKSUM ERROR";
7596 break;
7597 case MBOX_INVALID_PRODUCT_KEY:
7598 xname = "INVALID PRODUCT KEY";
7599 break;
7596 case MBOX_REGS_BUSY:
7597 xname = "REGISTERS BUSY";
7598 break;
7599 case MBOX_TIMEOUT:
7600 xname = "TIMEOUT";
7601 break;
7602 default:
7603 ISP_SNPRINTF(mname, sizeof mname, "error 0x%x", mbp->param[0]);
7604 xname = mname;
7605 break;
7606 }
7607 if (xname) {
7600 case MBOX_REGS_BUSY:
7601 xname = "REGISTERS BUSY";
7602 break;
7603 case MBOX_TIMEOUT:
7604 xname = "TIMEOUT";
7605 break;
7606 default:
7607 ISP_SNPRINTF(mname, sizeof mname, "error 0x%x", mbp->param[0]);
7608 xname = mname;
7609 break;
7610 }
7611 if (xname) {
7608 isp_prt(isp, ISP_LOGALL, "Mailbox Command '%s' failed (%s)",
7609 cname, xname);
7612 isp_prt(isp, ISP_LOGALL, "Mailbox Command '%s' failed (%s%s)",
7613 cname, xname, sname);
7610 }
7611}
7612
7613static void
7614isp_fw_state(ispsoftc_t *isp, int chan)
7615{
7616 if (IS_FC(isp)) {
7617 mbreg_t mbs;

--- 989 unchanged lines hidden ---
7614 }
7615}
7616
7617static void
7618isp_fw_state(ispsoftc_t *isp, int chan)
7619{
7620 if (IS_FC(isp)) {
7621 mbreg_t mbs;

--- 989 unchanged lines hidden ---