I am trying to communicate with a tape drive using ioctl and SCSI_IOCTL_SEND_COMMAND as ioctl(fd, SCSI_IOCTL_SEND_COMMAND, buffer);

I read that the buffer should be of the form :

struct sdata {
    unsigned int inlen;     [i] Length of data written to device
    unsigned int outlen;    [i] Length of data read from device
    unsigned char cmd[x];   [i] SCSI command (6 <= x <= 16)
                            [o] Data read from device starts here
                            [o] On error, sense buffer starts here
    unsigned char wdata[y]; [i] Data written to device starts here
I am not sure what value i should set outlen to as I want my function to be generic. So, I have set it to 255.

However, the Security Protocol out command ( LTO-4 encryption) is failing with SLES 9 32-bit and working with SLES 9 64-bit and SLES 10
Why is this?