By point-to-point, I mean directly connecting "device->HBA->host" and not
"device->switch->HBA->host".
Am trying to think now that my method of scsi programming is depracated. I have
downloaded sg3119.tgz which is said to be sg version 3. After downloading, I unzip and
untar it, it have produced directory: drivers, include... But I don't know what to do
with these files.. i would like to replace the sg that comes with kernel 2.2.14. can
someone show me the steps to take?
After further reading some documents, I think the scsi-programming i used is
SCSI_IOCTL_SEND_COMMAND which did work with qla2100 card(qlogicfc) but does not work
with qla2x00 drivers downloaded from qlogic.
Also, with qla2200 card, kernel version 2.2.14, a device i attached to pc(either via
switch or directly to hba) is not recognized by the system.
-Ana
--
On Thu, 21 Jun 2001 11:09:31
Andrew Patterson wrote:
>In your message on you write:
>> By point-to-point you don't mean a direct attach do you? In this
>> case the BIOS of the HBA would have had its connectivity type set to,
>> parhaps, LOOP ONLY. For the switch connection to work check that the
>> connectivity type in the HBA BIOS is set to POINT TO POINT ONLY. Also,
>> check, in Red Hat, /var/log/messages for what connectivity type the HBA has
>> detected with the switch it should indicate an F Port. The qla2x00 driver
>> will also tell you the targets it has detected on the fabric. If it's not
>> detecting any targets check to insure that the target and the HBA reside in
>> the same zone on the fabric.
>> After the driver has loaded you'll find entries in procfs,
>> /proc/scsi/qla2x00/<HBA target>. You can cat() these files to see what LUNs
>> were detected by the driver. You can also gleen this information from
>> /var/log/messages where you'll also be able to determine which /dev/sd
>> device nodes are attached to which LUNs and the size that LUNs have been
>> detected as.
>> The same driver, qla2x00 is used for both the QLA2100 and QLA2200
>> HBA's. If you are using the qlogicfc or isp drivers, I don't believe either
>> support the QLA2200FC HBA.
>
>This is incorrect. The linux 2.4 kernel qlogicfc driver does indeed support
>the QLA2200FC HBA.
>
>
>>
>> Wayne
>> Sr Attach Engineer
>> EMC Corp
>>
>> email: [EMAIL PROTECTED]
>>
>> "One man can make a difference, and every man should try." - JFK
>>
>>
>> -----Original Message-----
>> From: Ana Yuseepi [mailto:[EMAIL PROTECTED]]
>> Sent: Thursday, June 21, 2001 5:47 AM
>> To: [EMAIL PROTECTED]
>> Subject: ioctl SCC3
>>
>>
>> Good day to all,
>>
>> am trying to send an SCC-3 command to a target device. This command
>> also transfer data to the target device.
>>
>> I'd like to ask how is exactly the placement of the data? am using ioctl in
>> my program,
>>
>> result = ioctl(fd, 1, buffer);
>>
>> where:
>> fd - is the file descriptor
>> data in buffer is:
>> byte 3-0 - size of data to be transferred to device + size of cdblen + 8
>> byte 7-4 - (defaults to 0. I assume that this is length of buffer
>> to receive data FROM the device)
>> byte 19-8 - cdb(12 bytes)
>> byte n - 20 - data to be transferred to the device.
>>
>> my program works fine with qla2100 and the device connected point-to-point.
>>
>> but it doesn't work with qla2200 and switches.
>>
>> any idea on what is wrong?
>>
>> i appreciate any help...
>>
>
>Here is some code I use to do this sort of stuff (Sorry about using C++)
>
>int issueScsiCmd(int fd,
> unsigned char *cmd,
> size_t cmdLen,
> unsigned char *outData,
> size_t outDataLen,
> unsigned char *inData,
> size_t inDataLen,
> unsigned char *scsiSenseKey)
>{
> // fd is assumed to be open before making this call.
>
> ScsiData sdata;
> memset(&sdata, 0, sizeof(sdata));
> *scsiSenseKey = NO_SENSE;
>
> sdata.outLen = outDataLen;
> sdata.inLen = inDataLen;
> memcpy(&sdata.cmd, cmd, cmdLen);
> if (outData != (unsigned char*)NULL)
> memcpy(&sdata.cmd[cmdLen], outData, outDataLen);
> status = ioctl(fd, SCSI_IOCTL_SEND_COMMAND, &sdata);
> if (status < 0)
> {
> // OS error.
> fprintf(stderr, "SCSI cmd %02x on failed - %s",
> cmd[0],
> sys_errlist[errno]));
> return RETURN_ERROR_SYSTEM;
> }
> if (status > 0)
> {
> // SCSI or driver error.
> unsigned char scsiStatus = (status & 0x000000ff) > 1;
>
> // Fill outData with request sense info.
> if (scsiStatus == CHECK_CONDITION)
> {
> *scsiSenseKey = sdata.cmd[2] & 0x0f;
> memcpy(inData, &sdata.cmd[0], SCSI_SENSE_BUFFER_LEN);
> return RETURN_ERROR_SCSI;
> }
> else
> return RETURN_ERROR_SYSTEM;
> // Everything OK, copy data if any.
> if (inData != (unsigned char*)NULL)
> memcpy(inData, &sdata.cmd[0], inDataLen);
>
> return RETURN_OK;
>}
>
>
>I then call this using something like:
>
> // SCSI data structures.
> unsigned char scsiCmd[MAX_SCSI_CMD_LEN];
> unsigned char inScsiData[MAX_SCSI_DATA_LEN];
> unsigned char scsiSenseKey;
> //
> // INQUIRY (standard).
> memset(scsiCmd, 0, MAX_SCSI_CMD_LEN);
> memset(inScsiData, 0, MAX_SCSI_DATA_LEN);
> scsiCmd[0] = INQUIRY;
> scsiCmd[4] = INQUIRY_CMD_IN_DATA_LEN; // Allocation length.
> int ret;
> ret = issueScsiCmd(fd,
> scsiCmd,
> INQUIRY_CMD_LEN,
> (unsigned char *)NULL,
> 0,
> inScsiData,
> INQUIRY_CMD_IN_DATA_LEN,
> &scsiSenseKey);
>
>
>
>Hope this helps.
>
>Andrew Patterson
>
>
>> -Ana
>>
>>
>> Get 250 color business cards for FREE!
>> http://businesscards.lycos.com/vp/fastpath/
>> -
>> To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
>> the body of a message to [EMAIL PROTECTED]
>> -
>> To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
>> the body of a message to [EMAIL PROTECTED]
>
>
>-
>To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
>the body of a message to [EMAIL PROTECTED]
>
Get 250 color business cards for FREE!
http://businesscards.lycos.com/vp/fastpath/
-
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to [EMAIL PROTECTED]