Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
ae87e8b2
Commit
ae87e8b2
authored
Aug 06, 2014
by
James Bottomley
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'scsi-queue/drivers-for-3.17' into for-next
parents
653f0c8b
bfb50879
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
123 additions
and
112 deletions
+123
-112
MAINTAINERS
MAINTAINERS
+1
-0
drivers/scsi/libiscsi.c
drivers/scsi/libiscsi.c
+1
-1
drivers/scsi/pm8001/pm8001_ctl.c
drivers/scsi/pm8001/pm8001_ctl.c
+70
-74
drivers/scsi/pm8001/pm8001_hwi.c
drivers/scsi/pm8001/pm8001_hwi.c
+2
-2
drivers/scsi/pm8001/pm8001_init.c
drivers/scsi/pm8001/pm8001_init.c
+20
-19
drivers/scsi/qla4xxx/ql4_init.c
drivers/scsi/qla4xxx/ql4_init.c
+6
-0
drivers/scsi/qla4xxx/ql4_mbx.c
drivers/scsi/qla4xxx/ql4_mbx.c
+7
-7
drivers/scsi/qla4xxx/ql4_nx.c
drivers/scsi/qla4xxx/ql4_nx.c
+1
-1
drivers/scsi/qla4xxx/ql4_os.c
drivers/scsi/qla4xxx/ql4_os.c
+9
-7
drivers/scsi/scsi_transport_iscsi.c
drivers/scsi/scsi_transport_iscsi.c
+5
-1
include/scsi/iscsi_if.h
include/scsi/iscsi_if.h
+1
-0
No files found.
MAINTAINERS
View file @
ae87e8b2
...
...
@@ -7012,6 +7012,7 @@ F: drivers/scsi/pmcraid.*
PMC SIERRA PM8001 DRIVER
M: xjtuwjp@gmail.com
M: lindar_liu@usish.com
L: pmchba@pmcs.com
L: linux-scsi@vger.kernel.org
S: Supported
F: drivers/scsi/pm8001/
...
...
drivers/scsi/libiscsi.c
View file @
ae87e8b2
...
...
@@ -2097,7 +2097,7 @@ static void iscsi_check_transport_timeouts(unsigned long data)
conn
->
ping_timeout
,
conn
->
recv_timeout
,
last_recv
,
conn
->
last_ping
,
jiffies
);
spin_unlock
(
&
session
->
frwd_lock
);
iscsi_conn_failure
(
conn
,
ISCSI_ERR_
CONN_FAILED
);
iscsi_conn_failure
(
conn
,
ISCSI_ERR_
NOP_TIMEDOUT
);
return
;
}
...
...
drivers/scsi/pm8001/pm8001_ctl.c
View file @
ae87e8b2
...
...
@@ -526,18 +526,19 @@ static int pm8001_set_nvmd(struct pm8001_hba_info *pm8001_ha)
{
struct
pm8001_ioctl_payload
*
payload
;
DECLARE_COMPLETION_ONSTACK
(
completion
);
u8
*
ioctlbuffer
=
NULL
;
u32
length
=
0
;
u32
ret
=
0
;
u8
*
ioctlbuffer
;
u32
ret
;
u32
length
=
1024
*
5
+
sizeof
(
*
payload
)
-
1
;
if
(
pm8001_ha
->
fw_image
->
size
>
4096
)
{
pm8001_ha
->
fw_status
=
FAIL_FILE_SIZE
;
return
-
EFAULT
;
}
length
=
1024
*
5
+
sizeof
(
*
payload
)
-
1
;
ioctlbuffer
=
kzalloc
(
length
,
GFP_KERNEL
);
if
(
!
ioctlbuffer
)
if
(
!
ioctlbuffer
)
{
pm8001_ha
->
fw_status
=
FAIL_OUT_MEMORY
;
return
-
ENOMEM
;
if
((
pm8001_ha
->
fw_image
->
size
<=
0
)
||
(
pm8001_ha
->
fw_image
->
size
>
4096
))
{
ret
=
FAIL_FILE_SIZE
;
goto
out
;
}
payload
=
(
struct
pm8001_ioctl_payload
*
)
ioctlbuffer
;
memcpy
((
u8
*
)
&
payload
->
func_specific
,
(
u8
*
)
pm8001_ha
->
fw_image
->
data
,
...
...
@@ -547,6 +548,10 @@ static int pm8001_set_nvmd(struct pm8001_hba_info *pm8001_ha)
payload
->
minor_function
=
0x1
;
pm8001_ha
->
nvmd_completion
=
&
completion
;
ret
=
PM8001_CHIP_DISP
->
set_nvmd_req
(
pm8001_ha
,
payload
);
if
(
ret
)
{
pm8001_ha
->
fw_status
=
FAIL_OUT_MEMORY
;
goto
out
;
}
wait_for_completion
(
&
completion
);
out:
kfree
(
ioctlbuffer
);
...
...
@@ -557,35 +562,31 @@ static int pm8001_update_flash(struct pm8001_hba_info *pm8001_ha)
{
struct
pm8001_ioctl_payload
*
payload
;
DECLARE_COMPLETION_ONSTACK
(
completion
);
u8
*
ioctlbuffer
=
NULL
;
u32
length
=
0
;
u8
*
ioctlbuffer
;
struct
fw_control_info
*
fwControl
;
u32
loopNumber
,
loopcount
=
0
;
u32
sizeRead
=
0
;
u32
partitionSize
,
partitionSizeTmp
;
u32
ret
=
0
;
u32
partitionNumber
=
0
;
u32
loopNumber
,
loopcount
;
struct
pm8001_fw_image_header
*
image_hdr
;
u32
sizeRead
=
0
;
u32
ret
=
0
;
u32
length
=
1024
*
16
+
sizeof
(
*
payload
)
-
1
;
length
=
1024
*
16
+
sizeof
(
*
payload
)
-
1
;
if
(
pm8001_ha
->
fw_image
->
size
<
28
)
{
pm8001_ha
->
fw_status
=
FAIL_FILE_SIZE
;
return
-
EFAULT
;
}
ioctlbuffer
=
kzalloc
(
length
,
GFP_KERNEL
);
i
mage_hdr
=
(
struct
pm8001_fw_image_header
*
)
pm8001_ha
->
fw_image
->
data
;
if
(
!
ioctlbuffer
)
i
f
(
!
ioctlbuffer
)
{
pm8001_ha
->
fw_status
=
FAIL_OUT_MEMORY
;
return
-
ENOMEM
;
if
(
pm8001_ha
->
fw_image
->
size
<
28
)
{
ret
=
FAIL_FILE_SIZE
;
goto
out
;
}
image_hdr
=
(
struct
pm8001_fw_image_header
*
)
pm8001_ha
->
fw_image
->
data
;
while
(
sizeRead
<
pm8001_ha
->
fw_image
->
size
)
{
partitionSizeTmp
=
*
(
u32
*
)((
u8
*
)
&
image_hdr
->
image_length
+
sizeRead
);
partitionSize
=
be32_to_cpu
(
partitionSizeTmp
);
loopcount
=
(
partitionSize
+
HEADER_LEN
)
/
IOCTL_BUF_SIZE
;
if
(
loopcount
%
IOCTL_BUF_SIZE
)
loopcount
++
;
if
(
loopcount
==
0
)
loopcount
++
;
loopcount
=
DIV_ROUND_UP
(
partitionSize
+
HEADER_LEN
,
IOCTL_BUF_SIZE
);
for
(
loopNumber
=
0
;
loopNumber
<
loopcount
;
loopNumber
++
)
{
payload
=
(
struct
pm8001_ioctl_payload
*
)
ioctlbuffer
;
payload
->
length
=
1024
*
16
;
...
...
@@ -617,18 +618,18 @@ static int pm8001_update_flash(struct pm8001_hba_info *pm8001_ha)
pm8001_ha
->
nvmd_completion
=
&
completion
;
ret
=
PM8001_CHIP_DISP
->
fw_flash_update_req
(
pm8001_ha
,
payload
);
if
(
ret
)
break
;
if
(
ret
)
{
pm8001_ha
->
fw_status
=
FAIL_OUT_MEMORY
;
goto
out
;
}
wait_for_completion
(
&
completion
);
if
(
fwControl
->
retcode
>
FLASH_UPDATE_IN_PROGRESS
)
{
ret
=
fwControl
->
retcode
;
break
;
pm8001_ha
->
fw_status
=
fwControl
->
retcode
;
ret
=
-
EFAULT
;
goto
out
;
}
}
}
if
(
ret
)
break
;
partitionNumber
++
;
}
out:
kfree
(
ioctlbuffer
);
return
ret
;
...
...
@@ -643,22 +644,29 @@ static ssize_t pm8001_store_update_fw(struct device *cdev,
char
*
cmd_ptr
,
*
filename_ptr
;
int
res
,
i
;
int
flash_command
=
FLASH_CMD_NONE
;
int
err
=
0
;
int
ret
;
if
(
!
capable
(
CAP_SYS_ADMIN
))
return
-
EACCES
;
cmd_ptr
=
kzalloc
(
count
*
2
,
GFP_KERNEL
);
/* this test protects us from running two flash processes at once,
* so we should start with this test */
if
(
pm8001_ha
->
fw_status
==
FLASH_IN_PROGRESS
)
return
-
EINPROGRESS
;
pm8001_ha
->
fw_status
=
FLASH_IN_PROGRESS
;
cmd_ptr
=
kzalloc
(
count
*
2
,
GFP_KERNEL
);
if
(
!
cmd_ptr
)
{
err
=
FAIL_OUT_MEMORY
;
goto
out
;
pm8001_ha
->
fw_status
=
FAIL_OUT_MEMORY
;
return
-
ENOMEM
;
}
filename_ptr
=
cmd_ptr
+
count
;
res
=
sscanf
(
buf
,
"%s %s"
,
cmd_ptr
,
filename_ptr
);
if
(
res
!=
2
)
{
err
=
FAIL_PARAMETERS
;
goto
out1
;
pm8001_ha
->
fw_status
=
FAIL_PARAMETERS
;
ret
=
-
EINVAL
;
goto
out
;
}
for
(
i
=
0
;
flash_command_table
[
i
].
code
!=
FLASH_CMD_NONE
;
i
++
)
{
...
...
@@ -669,50 +677,38 @@ static ssize_t pm8001_store_update_fw(struct device *cdev,
}
}
if
(
flash_command
==
FLASH_CMD_NONE
)
{
err
=
FAIL_PARAMETERS
;
goto
out1
;
pm8001_ha
->
fw_status
=
FAIL_PARAMETERS
;
ret
=
-
EINVAL
;
goto
out
;
}
if
(
pm8001_ha
->
fw_status
==
FLASH_IN_PROGRESS
)
{
err
=
FLASH_IN_PROGRESS
;
goto
out1
;
}
err
=
request_firmware
(
&
pm8001_ha
->
fw_image
,
ret
=
request_firmware
(
&
pm8001_ha
->
fw_image
,
filename_ptr
,
pm8001_ha
->
dev
);
if
(
err
)
{
if
(
ret
)
{
PM8001_FAIL_DBG
(
pm8001_ha
,
pm8001_printk
(
"Failed to load firmware image file %s,"
" error %d
\n
"
,
filename_ptr
,
err
));
err
=
FAIL_OPEN_BIOS_FILE
;
goto
out1
;
pm8001_printk
(
"Failed to load firmware image file %s, error %d
\n
"
,
filename_ptr
,
ret
));
pm8001_ha
->
fw_status
=
FAIL_OPEN_BIOS_FILE
;
goto
out
;
}
switch
(
flash_command
)
{
case
FLASH_CMD_UPDATE
:
pm8001_ha
->
fw_status
=
FLASH_IN_PROGRESS
;
err
=
pm8001_update_flash
(
pm8001_ha
);
break
;
case
FLASH_CMD_SET_NVMD
:
pm8001_ha
->
fw_status
=
FLASH_IN_PROGRESS
;
err
=
pm8001_set_nvmd
(
pm8001_ha
);
break
;
default:
pm8001_ha
->
fw_status
=
FAIL_PARAMETERS
;
err
=
FAIL_PARAMETERS
;
break
;
}
if
(
FLASH_CMD_UPDATE
==
flash_command
)
ret
=
pm8001_update_flash
(
pm8001_ha
);
else
ret
=
pm8001_set_nvmd
(
pm8001_ha
);
release_firmware
(
pm8001_ha
->
fw_image
);
out1:
kfree
(
cmd_ptr
);
out:
pm8001_ha
->
fw_status
=
err
;
kfree
(
cmd_ptr
)
;
if
(
!
err
)
return
count
;
else
return
-
err
;
if
(
ret
)
return
ret
;
pm8001_ha
->
fw_status
=
FLASH_OK
;
return
count
;
}
static
ssize_t
pm8001_show_update_fw
(
struct
device
*
cdev
,
...
...
drivers/scsi/pm8001/pm8001_hwi.c
View file @
ae87e8b2
...
...
@@ -4824,7 +4824,7 @@ int pm8001_chip_set_nvmd_req(struct pm8001_hba_info *pm8001_ha,
rc
=
pm8001_tag_alloc
(
pm8001_ha
,
&
tag
);
if
(
rc
)
{
kfree
(
fw_control_context
);
return
rc
;
return
-
EBUSY
;
}
ccb
=
&
pm8001_ha
->
ccb_info
[
tag
];
ccb
->
fw_control_context
=
fw_control_context
;
...
...
@@ -4946,7 +4946,7 @@ pm8001_chip_fw_flash_update_req(struct pm8001_hba_info *pm8001_ha,
rc
=
pm8001_tag_alloc
(
pm8001_ha
,
&
tag
);
if
(
rc
)
{
kfree
(
fw_control_context
);
return
rc
;
return
-
EBUSY
;
}
ccb
=
&
pm8001_ha
->
ccb_info
[
tag
];
ccb
->
fw_control_context
=
fw_control_context
;
...
...
drivers/scsi/pm8001/pm8001_init.c
View file @
ae87e8b2
...
...
@@ -748,34 +748,35 @@ static u32 pm8001_setup_msix(struct pm8001_hba_info *pm8001_ha)
sizeof
(
pm8001_ha
->
msix_entries
[
0
]);
for
(
i
=
0
;
i
<
max_entry
;
i
++
)
pm8001_ha
->
msix_entries
[
i
].
entry
=
i
;
rc
=
pci_enable_msix
(
pm8001_ha
->
pdev
,
pm8001_ha
->
msix_entries
,
rc
=
pci_enable_msix
_exact
(
pm8001_ha
->
pdev
,
pm8001_ha
->
msix_entries
,
number_of_intr
);
pm8001_ha
->
number_of_intr
=
number_of_intr
;
if
(
!
rc
)
{
PM8001_INIT_DBG
(
pm8001_ha
,
pm8001_printk
(
"pci_enable_msix request ret:%d no of intr %d
\n
"
,
rc
,
pm8001_ha
->
number_of_intr
));
if
(
rc
)
return
rc
;
PM8001_INIT_DBG
(
pm8001_ha
,
pm8001_printk
(
"pci_enable_msix_exact request ret:%d no of intr %d
\n
"
,
rc
,
pm8001_ha
->
number_of_intr
));
for
(
i
=
0
;
i
<
number_of_intr
;
i
++
)
{
snprintf
(
intr_drvname
[
i
],
sizeof
(
intr_drvname
[
0
]),
DRV_NAME
"%d"
,
i
);
pm8001_ha
->
irq_vector
[
i
].
irq_id
=
i
;
pm8001_ha
->
irq_vector
[
i
].
drv_inst
=
pm8001_ha
;
for
(
i
=
0
;
i
<
number_of_intr
;
i
++
)
{
snprintf
(
intr_drvname
[
i
],
sizeof
(
intr_drvname
[
0
]),
DRV_NAME
"%d"
,
i
);
pm8001_ha
->
irq_vector
[
i
].
irq_id
=
i
;
pm8001_ha
->
irq_vector
[
i
].
drv_inst
=
pm8001_ha
;
rc
=
request_irq
(
pm8001_ha
->
msix_entries
[
i
].
vector
,
pm8001_interrupt_handler_msix
,
flag
,
intr_drvname
[
i
],
&
(
pm8001_ha
->
irq_vector
[
i
]));
if
(
rc
)
{
for
(
j
=
0
;
j
<
i
;
j
++
)
free_irq
(
pm8001_ha
->
msix_entries
[
j
].
vector
,
rc
=
request_irq
(
pm8001_ha
->
msix_entries
[
i
].
vector
,
pm8001_interrupt_handler_msix
,
flag
,
intr_drvname
[
i
],
&
(
pm8001_ha
->
irq_vector
[
i
]));
if
(
rc
)
{
for
(
j
=
0
;
j
<
i
;
j
++
)
{
free_irq
(
pm8001_ha
->
msix_entries
[
j
].
vector
,
&
(
pm8001_ha
->
irq_vector
[
i
]));
pci_disable_msix
(
pm8001_ha
->
pdev
);
break
;
}
pci_disable_msix
(
pm8001_ha
->
pdev
);
break
;
}
}
return
rc
;
}
#endif
...
...
drivers/scsi/qla4xxx/ql4_init.c
View file @
ae87e8b2
...
...
@@ -334,6 +334,12 @@ void qla4xxx_alloc_fw_dump(struct scsi_qla_host *ha)
/* Allocate memory for saving the template */
md_tmp
=
dma_alloc_coherent
(
&
ha
->
pdev
->
dev
,
ha
->
fw_dump_tmplt_size
,
&
md_tmp_dma
,
GFP_KERNEL
);
if
(
!
md_tmp
)
{
ql4_printk
(
KERN_INFO
,
ha
,
"scsi%ld: Failed to allocate DMA memory
\n
"
,
ha
->
host_no
);
return
;
}
/* Request template */
status
=
qla4xxx_get_minidump_template
(
ha
,
md_tmp_dma
);
...
...
drivers/scsi/qla4xxx/ql4_mbx.c
View file @
ae87e8b2
...
...
@@ -1620,8 +1620,8 @@ int qla4xxx_get_chap(struct scsi_qla_host *ha, char *username, char *password,
goto
exit_get_chap
;
}
str
n
cpy
(
password
,
chap_table
->
secret
,
QL4_CHAP_MAX_SECRET_LEN
);
str
n
cpy
(
username
,
chap_table
->
name
,
QL4_CHAP_MAX_NAME_LEN
);
str
l
cpy
(
password
,
chap_table
->
secret
,
QL4_CHAP_MAX_SECRET_LEN
);
str
l
cpy
(
username
,
chap_table
->
name
,
QL4_CHAP_MAX_NAME_LEN
);
chap_table
->
cookie
=
__constant_cpu_to_le16
(
CHAP_VALID_COOKIE
);
exit_get_chap:
...
...
@@ -1663,8 +1663,8 @@ int qla4xxx_set_chap(struct scsi_qla_host *ha, char *username, char *password,
else
chap_table
->
flags
|=
BIT_7
;
/* local */
chap_table
->
secret_len
=
strlen
(
password
);
strncpy
(
chap_table
->
secret
,
password
,
MAX_CHAP_SECRET_LEN
);
strncpy
(
chap_table
->
name
,
username
,
MAX_CHAP_NAME_LEN
);
strncpy
(
chap_table
->
secret
,
password
,
MAX_CHAP_SECRET_LEN
-
1
);
strncpy
(
chap_table
->
name
,
username
,
MAX_CHAP_NAME_LEN
-
1
);
chap_table
->
cookie
=
__constant_cpu_to_le16
(
CHAP_VALID_COOKIE
);
if
(
is_qla40XX
(
ha
))
{
...
...
@@ -1742,8 +1742,8 @@ int qla4xxx_get_uni_chap_at_index(struct scsi_qla_host *ha, char *username,
goto
exit_unlock_uni_chap
;
}
str
n
cpy
(
password
,
chap_table
->
secret
,
MAX_CHAP_SECRET_LEN
);
str
n
cpy
(
username
,
chap_table
->
name
,
MAX_CHAP_NAME_LEN
);
str
l
cpy
(
password
,
chap_table
->
secret
,
MAX_CHAP_SECRET_LEN
);
str
l
cpy
(
username
,
chap_table
->
name
,
MAX_CHAP_NAME_LEN
);
rval
=
QLA_SUCCESS
;
...
...
@@ -2295,7 +2295,7 @@ int qla4_8xxx_set_param(struct scsi_qla_host *ha, int param)
if
(
param
==
SET_DRVR_VERSION
)
{
mbox_cmd
[
1
]
=
SET_DRVR_VERSION
;
strncpy
((
char
*
)
&
mbox_cmd
[
2
],
QLA4XXX_DRIVER_VERSION
,
MAX_DRVR_VER_LEN
);
MAX_DRVR_VER_LEN
-
1
);
}
else
{
ql4_printk
(
KERN_ERR
,
ha
,
"%s: invalid parameter 0x%x
\n
"
,
__func__
,
param
);
...
...
drivers/scsi/qla4xxx/ql4_nx.c
View file @
ae87e8b2
...
...
@@ -4221,7 +4221,7 @@ qla4_8xxx_enable_msix(struct scsi_qla_host *ha)
for
(
i
=
0
;
i
<
QLA_MSIX_ENTRIES
;
i
++
)
entries
[
i
].
entry
=
qla4_8xxx_msix_entries
[
i
].
entry
;
ret
=
pci_enable_msix
(
ha
->
pdev
,
entries
,
ARRAY_SIZE
(
entries
));
ret
=
pci_enable_msix
_exact
(
ha
->
pdev
,
entries
,
ARRAY_SIZE
(
entries
));
if
(
ret
)
{
ql4_printk
(
KERN_WARNING
,
ha
,
"MSI-X: Failed to enable support -- %d/%d
\n
"
,
...
...
drivers/scsi/qla4xxx/ql4_os.c
View file @
ae87e8b2
...
...
@@ -756,9 +756,9 @@ static int qla4xxx_get_chap_list(struct Scsi_Host *shost, uint16_t chap_tbl_idx,
continue
;
chap_rec
->
chap_tbl_idx
=
i
;
str
n
cpy
(
chap_rec
->
username
,
chap_table
->
name
,
str
l
cpy
(
chap_rec
->
username
,
chap_table
->
name
,
ISCSI_CHAP_AUTH_NAME_MAX_LEN
);
str
n
cpy
(
chap_rec
->
password
,
chap_table
->
secret
,
str
l
cpy
(
chap_rec
->
password
,
chap_table
->
secret
,
QL4_CHAP_MAX_SECRET_LEN
);
chap_rec
->
password_length
=
chap_table
->
secret_len
;
...
...
@@ -1050,6 +1050,7 @@ static int qla4xxx_get_host_stats(struct Scsi_Host *shost, char *buf, int len)
if
(
!
ql_iscsi_stats
)
{
ql4_printk
(
KERN_ERR
,
ha
,
"Unable to allocate memory for iscsi stats
\n
"
);
ret
=
-
ENOMEM
;
goto
exit_host_stats
;
}
...
...
@@ -1058,6 +1059,7 @@ static int qla4xxx_get_host_stats(struct Scsi_Host *shost, char *buf, int len)
if
(
ret
!=
QLA_SUCCESS
)
{
ql4_printk
(
KERN_ERR
,
ha
,
"Unable to retrieve iscsi stats
\n
"
);
ret
=
-
EIO
;
goto
exit_host_stats
;
}
host_stats
->
mactx_frames
=
le64_to_cpu
(
ql_iscsi_stats
->
mac_tx_frames
);
...
...
@@ -6027,8 +6029,8 @@ static int qla4xxx_get_bidi_chap(struct scsi_qla_host *ha, char *username,
if
(
!
(
chap_table
->
flags
&
BIT_6
))
/* Not BIDI */
continue
;
str
n
cpy
(
password
,
chap_table
->
secret
,
QL4_CHAP_MAX_SECRET_LEN
);
str
n
cpy
(
username
,
chap_table
->
name
,
QL4_CHAP_MAX_NAME_LEN
);
str
l
cpy
(
password
,
chap_table
->
secret
,
QL4_CHAP_MAX_SECRET_LEN
);
str
l
cpy
(
username
,
chap_table
->
name
,
QL4_CHAP_MAX_NAME_LEN
);
ret
=
0
;
break
;
}
...
...
@@ -6258,8 +6260,8 @@ static void qla4xxx_get_param_ddb(struct ddb_entry *ddb_entry,
tddb
->
tpgt
=
sess
->
tpgt
;
tddb
->
port
=
conn
->
persistent_port
;
str
n
cpy
(
tddb
->
iscsi_name
,
sess
->
targetname
,
ISCSI_NAME_SIZE
);
str
n
cpy
(
tddb
->
ip_addr
,
conn
->
persistent_address
,
DDB_IPADDR_LEN
);
str
l
cpy
(
tddb
->
iscsi_name
,
sess
->
targetname
,
ISCSI_NAME_SIZE
);
str
l
cpy
(
tddb
->
ip_addr
,
conn
->
persistent_address
,
DDB_IPADDR_LEN
);
}
static
void
qla4xxx_convert_param_ddb
(
struct
dev_db_entry
*
fw_ddb_entry
,
...
...
@@ -7764,7 +7766,7 @@ static int qla4xxx_sysfs_ddb_logout(struct iscsi_bus_flash_session *fnode_sess,
goto
exit_ddb_logout
;
}
str
n
cpy
(
flash_tddb
->
iscsi_name
,
fnode_sess
->
targetname
,
str
l
cpy
(
flash_tddb
->
iscsi_name
,
fnode_sess
->
targetname
,
ISCSI_NAME_SIZE
);
if
(
!
strncmp
(
fnode_sess
->
portal_type
,
PORTAL_TYPE_IPV6
,
4
))
...
...
drivers/scsi/scsi_transport_iscsi.c
View file @
ae87e8b2
...
...
@@ -3429,7 +3429,7 @@ iscsi_get_host_stats(struct iscsi_transport *transport, struct nlmsghdr *nlh)
char
*
buf
;
if
(
!
transport
->
get_host_stats
)
return
-
E
INVAL
;
return
-
E
NOSYS
;
priv
=
iscsi_if_transport_lookup
(
transport
);
if
(
!
priv
)
...
...
@@ -3467,6 +3467,10 @@ iscsi_get_host_stats(struct iscsi_transport *transport, struct nlmsghdr *nlh)
memset
(
buf
,
0
,
host_stats_size
);
err
=
transport
->
get_host_stats
(
shost
,
buf
,
host_stats_size
);
if
(
err
)
{
kfree_skb
(
skbhost_stats
);
goto
exit_host_stats
;
}
actual_size
=
nlmsg_total_size
(
sizeof
(
*
ev
)
+
host_stats_size
);
skb_trim
(
skbhost_stats
,
NLMSG_ALIGN
(
actual_size
));
...
...
include/scsi/iscsi_if.h
View file @
ae87e8b2
...
...
@@ -527,6 +527,7 @@ enum iscsi_err {
ISCSI_ERR_XMIT_FAILED
=
ISCSI_ERR_BASE
+
19
,
ISCSI_ERR_TCP_CONN_CLOSE
=
ISCSI_ERR_BASE
+
20
,
ISCSI_ERR_SCSI_EH_SESSION_RST
=
ISCSI_ERR_BASE
+
21
,
ISCSI_ERR_NOP_TIMEDOUT
=
ISCSI_ERR_BASE
+
22
,
};
/*
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment