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
nexedi
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
Show 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.*
...
@@ -7012,6 +7012,7 @@ F: drivers/scsi/pmcraid.*
PMC SIERRA PM8001 DRIVER
PMC SIERRA PM8001 DRIVER
M: xjtuwjp@gmail.com
M: xjtuwjp@gmail.com
M: lindar_liu@usish.com
M: lindar_liu@usish.com
L: pmchba@pmcs.com
L: linux-scsi@vger.kernel.org
L: linux-scsi@vger.kernel.org
S: Supported
S: Supported
F: drivers/scsi/pm8001/
F: drivers/scsi/pm8001/
...
...
drivers/scsi/libiscsi.c
View file @
ae87e8b2
...
@@ -2097,7 +2097,7 @@ static void iscsi_check_transport_timeouts(unsigned long data)
...
@@ -2097,7 +2097,7 @@ static void iscsi_check_transport_timeouts(unsigned long data)
conn
->
ping_timeout
,
conn
->
recv_timeout
,
conn
->
ping_timeout
,
conn
->
recv_timeout
,
last_recv
,
conn
->
last_ping
,
jiffies
);
last_recv
,
conn
->
last_ping
,
jiffies
);
spin_unlock
(
&
session
->
frwd_lock
);
spin_unlock
(
&
session
->
frwd_lock
);
iscsi_conn_failure
(
conn
,
ISCSI_ERR_
CONN_FAILED
);
iscsi_conn_failure
(
conn
,
ISCSI_ERR_
NOP_TIMEDOUT
);
return
;
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)
...
@@ -526,18 +526,19 @@ static int pm8001_set_nvmd(struct pm8001_hba_info *pm8001_ha)
{
{
struct
pm8001_ioctl_payload
*
payload
;
struct
pm8001_ioctl_payload
*
payload
;
DECLARE_COMPLETION_ONSTACK
(
completion
);
DECLARE_COMPLETION_ONSTACK
(
completion
);
u8
*
ioctlbuffer
=
NULL
;
u8
*
ioctlbuffer
;
u32
length
=
0
;
u32
ret
;
u32
ret
=
0
;
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
);
ioctlbuffer
=
kzalloc
(
length
,
GFP_KERNEL
);
if
(
!
ioctlbuffer
)
if
(
!
ioctlbuffer
)
{
pm8001_ha
->
fw_status
=
FAIL_OUT_MEMORY
;
return
-
ENOMEM
;
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
;
payload
=
(
struct
pm8001_ioctl_payload
*
)
ioctlbuffer
;
memcpy
((
u8
*
)
&
payload
->
func_specific
,
(
u8
*
)
pm8001_ha
->
fw_image
->
data
,
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)
...
@@ -547,6 +548,10 @@ static int pm8001_set_nvmd(struct pm8001_hba_info *pm8001_ha)
payload
->
minor_function
=
0x1
;
payload
->
minor_function
=
0x1
;
pm8001_ha
->
nvmd_completion
=
&
completion
;
pm8001_ha
->
nvmd_completion
=
&
completion
;
ret
=
PM8001_CHIP_DISP
->
set_nvmd_req
(
pm8001_ha
,
payload
);
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
);
wait_for_completion
(
&
completion
);
out:
out:
kfree
(
ioctlbuffer
);
kfree
(
ioctlbuffer
);
...
@@ -557,35 +562,31 @@ static int pm8001_update_flash(struct pm8001_hba_info *pm8001_ha)
...
@@ -557,35 +562,31 @@ static int pm8001_update_flash(struct pm8001_hba_info *pm8001_ha)
{
{
struct
pm8001_ioctl_payload
*
payload
;
struct
pm8001_ioctl_payload
*
payload
;
DECLARE_COMPLETION_ONSTACK
(
completion
);
DECLARE_COMPLETION_ONSTACK
(
completion
);
u8
*
ioctlbuffer
=
NULL
;
u8
*
ioctlbuffer
;
u32
length
=
0
;
struct
fw_control_info
*
fwControl
;
struct
fw_control_info
*
fwControl
;
u32
loopNumber
,
loopcount
=
0
;
u32
sizeRead
=
0
;
u32
partitionSize
,
partitionSizeTmp
;
u32
partitionSize
,
partitionSizeTmp
;
u32
ret
=
0
;
u32
loopNumber
,
loopcount
;
u32
partitionNumber
=
0
;
struct
pm8001_fw_image_header
*
image_hdr
;
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
);
ioctlbuffer
=
kzalloc
(
length
,
GFP_KERNEL
);
i
mage_hdr
=
(
struct
pm8001_fw_image_header
*
)
pm8001_ha
->
fw_image
->
data
;
i
f
(
!
ioctlbuffer
)
{
if
(
!
ioctlbuffer
)
pm8001_ha
->
fw_status
=
FAIL_OUT_MEMORY
;
return
-
ENOMEM
;
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
)
{
while
(
sizeRead
<
pm8001_ha
->
fw_image
->
size
)
{
partitionSizeTmp
=
partitionSizeTmp
=
*
(
u32
*
)((
u8
*
)
&
image_hdr
->
image_length
+
sizeRead
);
*
(
u32
*
)((
u8
*
)
&
image_hdr
->
image_length
+
sizeRead
);
partitionSize
=
be32_to_cpu
(
partitionSizeTmp
);
partitionSize
=
be32_to_cpu
(
partitionSizeTmp
);
loopcount
=
(
partitionSize
+
HEADER_LEN
)
/
IOCTL_BUF_SIZE
;
loopcount
=
DIV_ROUND_UP
(
partitionSize
+
HEADER_LEN
,
if
(
loopcount
%
IOCTL_BUF_SIZE
)
IOCTL_BUF_SIZE
);
loopcount
++
;
if
(
loopcount
==
0
)
loopcount
++
;
for
(
loopNumber
=
0
;
loopNumber
<
loopcount
;
loopNumber
++
)
{
for
(
loopNumber
=
0
;
loopNumber
<
loopcount
;
loopNumber
++
)
{
payload
=
(
struct
pm8001_ioctl_payload
*
)
ioctlbuffer
;
payload
=
(
struct
pm8001_ioctl_payload
*
)
ioctlbuffer
;
payload
->
length
=
1024
*
16
;
payload
->
length
=
1024
*
16
;
...
@@ -617,18 +618,18 @@ static int pm8001_update_flash(struct pm8001_hba_info *pm8001_ha)
...
@@ -617,18 +618,18 @@ static int pm8001_update_flash(struct pm8001_hba_info *pm8001_ha)
pm8001_ha
->
nvmd_completion
=
&
completion
;
pm8001_ha
->
nvmd_completion
=
&
completion
;
ret
=
PM8001_CHIP_DISP
->
fw_flash_update_req
(
pm8001_ha
,
payload
);
ret
=
PM8001_CHIP_DISP
->
fw_flash_update_req
(
pm8001_ha
,
payload
);
if
(
ret
)
if
(
ret
)
{
break
;
pm8001_ha
->
fw_status
=
FAIL_OUT_MEMORY
;
goto
out
;
}
wait_for_completion
(
&
completion
);
wait_for_completion
(
&
completion
);
if
(
fwControl
->
retcode
>
FLASH_UPDATE_IN_PROGRESS
)
{
if
(
fwControl
->
retcode
>
FLASH_UPDATE_IN_PROGRESS
)
{
ret
=
fwControl
->
retcode
;
pm8001_ha
->
fw_status
=
fwControl
->
retcode
;
break
;
ret
=
-
EFAULT
;
goto
out
;
}
}
}
}
}
if
(
ret
)
break
;
partitionNumber
++
;
}
out:
out:
kfree
(
ioctlbuffer
);
kfree
(
ioctlbuffer
);
return
ret
;
return
ret
;
...
@@ -643,22 +644,29 @@ static ssize_t pm8001_store_update_fw(struct device *cdev,
...
@@ -643,22 +644,29 @@ static ssize_t pm8001_store_update_fw(struct device *cdev,
char
*
cmd_ptr
,
*
filename_ptr
;
char
*
cmd_ptr
,
*
filename_ptr
;
int
res
,
i
;
int
res
,
i
;
int
flash_command
=
FLASH_CMD_NONE
;
int
flash_command
=
FLASH_CMD_NONE
;
int
err
=
0
;
int
ret
;
if
(
!
capable
(
CAP_SYS_ADMIN
))
if
(
!
capable
(
CAP_SYS_ADMIN
))
return
-
EACCES
;
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
)
{
if
(
!
cmd_ptr
)
{
err
=
FAIL_OUT_MEMORY
;
pm8001_ha
->
fw_status
=
FAIL_OUT_MEMORY
;
goto
out
;
return
-
ENOMEM
;
}
}
filename_ptr
=
cmd_ptr
+
count
;
filename_ptr
=
cmd_ptr
+
count
;
res
=
sscanf
(
buf
,
"%s %s"
,
cmd_ptr
,
filename_ptr
);
res
=
sscanf
(
buf
,
"%s %s"
,
cmd_ptr
,
filename_ptr
);
if
(
res
!=
2
)
{
if
(
res
!=
2
)
{
err
=
FAIL_PARAMETERS
;
pm8001_ha
->
fw_status
=
FAIL_PARAMETERS
;
goto
out1
;
ret
=
-
EINVAL
;
goto
out
;
}
}
for
(
i
=
0
;
flash_command_table
[
i
].
code
!=
FLASH_CMD_NONE
;
i
++
)
{
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,
...
@@ -669,50 +677,38 @@ static ssize_t pm8001_store_update_fw(struct device *cdev,
}
}
}
}
if
(
flash_command
==
FLASH_CMD_NONE
)
{
if
(
flash_command
==
FLASH_CMD_NONE
)
{
err
=
FAIL_PARAMETERS
;
pm8001_ha
->
fw_status
=
FAIL_PARAMETERS
;
goto
out1
;
ret
=
-
EINVAL
;
goto
out
;
}
}
if
(
pm8001_ha
->
fw_status
==
FLASH_IN_PROGRESS
)
{
ret
=
request_firmware
(
&
pm8001_ha
->
fw_image
,
err
=
FLASH_IN_PROGRESS
;
goto
out1
;
}
err
=
request_firmware
(
&
pm8001_ha
->
fw_image
,
filename_ptr
,
filename_ptr
,
pm8001_ha
->
dev
);
pm8001_ha
->
dev
);
if
(
err
)
{
if
(
ret
)
{
PM8001_FAIL_DBG
(
pm8001_ha
,
PM8001_FAIL_DBG
(
pm8001_ha
,
pm8001_printk
(
"Failed to load firmware image file %s,"
pm8001_printk
(
" error %d
\n
"
,
filename_ptr
,
err
));
"Failed to load firmware image file %s, error %d
\n
"
,
err
=
FAIL_OPEN_BIOS_FILE
;
filename_ptr
,
ret
));
goto
out1
;
pm8001_ha
->
fw_status
=
FAIL_OPEN_BIOS_FILE
;
goto
out
;
}
}
switch
(
flash_command
)
{
if
(
FLASH_CMD_UPDATE
==
flash_command
)
case
FLASH_CMD_UPDATE
:
ret
=
pm8001_update_flash
(
pm8001_ha
);
pm8001_ha
->
fw_status
=
FLASH_IN_PROGRESS
;
else
err
=
pm8001_update_flash
(
pm8001_ha
);
ret
=
pm8001_set_nvmd
(
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
;
}
release_firmware
(
pm8001_ha
->
fw_image
);
release_firmware
(
pm8001_ha
->
fw_image
);
out1:
kfree
(
cmd_ptr
);
out:
out:
pm8001_ha
->
fw_status
=
err
;
kfree
(
cmd_ptr
)
;
if
(
!
err
)
if
(
ret
)
return
ret
;
pm8001_ha
->
fw_status
=
FLASH_OK
;
return
count
;
return
count
;
else
return
-
err
;
}
}
static
ssize_t
pm8001_show_update_fw
(
struct
device
*
cdev
,
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,
...
@@ -4824,7 +4824,7 @@ int pm8001_chip_set_nvmd_req(struct pm8001_hba_info *pm8001_ha,
rc
=
pm8001_tag_alloc
(
pm8001_ha
,
&
tag
);
rc
=
pm8001_tag_alloc
(
pm8001_ha
,
&
tag
);
if
(
rc
)
{
if
(
rc
)
{
kfree
(
fw_control_context
);
kfree
(
fw_control_context
);
return
rc
;
return
-
EBUSY
;
}
}
ccb
=
&
pm8001_ha
->
ccb_info
[
tag
];
ccb
=
&
pm8001_ha
->
ccb_info
[
tag
];
ccb
->
fw_control_context
=
fw_control_context
;
ccb
->
fw_control_context
=
fw_control_context
;
...
@@ -4946,7 +4946,7 @@ pm8001_chip_fw_flash_update_req(struct pm8001_hba_info *pm8001_ha,
...
@@ -4946,7 +4946,7 @@ pm8001_chip_fw_flash_update_req(struct pm8001_hba_info *pm8001_ha,
rc
=
pm8001_tag_alloc
(
pm8001_ha
,
&
tag
);
rc
=
pm8001_tag_alloc
(
pm8001_ha
,
&
tag
);
if
(
rc
)
{
if
(
rc
)
{
kfree
(
fw_control_context
);
kfree
(
fw_control_context
);
return
rc
;
return
-
EBUSY
;
}
}
ccb
=
&
pm8001_ha
->
ccb_info
[
tag
];
ccb
=
&
pm8001_ha
->
ccb_info
[
tag
];
ccb
->
fw_control_context
=
fw_control_context
;
ccb
->
fw_control_context
=
fw_control_context
;
...
...
drivers/scsi/pm8001/pm8001_init.c
View file @
ae87e8b2
...
@@ -748,15 +748,16 @@ static u32 pm8001_setup_msix(struct pm8001_hba_info *pm8001_ha)
...
@@ -748,15 +748,16 @@ static u32 pm8001_setup_msix(struct pm8001_hba_info *pm8001_ha)
sizeof
(
pm8001_ha
->
msix_entries
[
0
]);
sizeof
(
pm8001_ha
->
msix_entries
[
0
]);
for
(
i
=
0
;
i
<
max_entry
;
i
++
)
for
(
i
=
0
;
i
<
max_entry
;
i
++
)
pm8001_ha
->
msix_entries
[
i
].
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
);
number_of_intr
);
pm8001_ha
->
number_of_intr
=
number_of_intr
;
pm8001_ha
->
number_of_intr
=
number_of_intr
;
if
(
!
rc
)
{
if
(
rc
)
return
rc
;
PM8001_INIT_DBG
(
pm8001_ha
,
pm8001_printk
(
PM8001_INIT_DBG
(
pm8001_ha
,
pm8001_printk
(
"pci_enable_msix
request ret:%d no of intr %d
\n
"
,
"pci_enable_msix_exact
request ret:%d no of intr %d
\n
"
,
rc
,
pm8001_ha
->
number_of_intr
));
rc
,
pm8001_ha
->
number_of_intr
));
for
(
i
=
0
;
i
<
number_of_intr
;
i
++
)
{
for
(
i
=
0
;
i
<
number_of_intr
;
i
++
)
{
snprintf
(
intr_drvname
[
i
],
sizeof
(
intr_drvname
[
0
]),
snprintf
(
intr_drvname
[
i
],
sizeof
(
intr_drvname
[
0
]),
DRV_NAME
"%d"
,
i
);
DRV_NAME
"%d"
,
i
);
...
@@ -767,15 +768,15 @@ static u32 pm8001_setup_msix(struct pm8001_hba_info *pm8001_ha)
...
@@ -767,15 +768,15 @@ static u32 pm8001_setup_msix(struct pm8001_hba_info *pm8001_ha)
pm8001_interrupt_handler_msix
,
flag
,
pm8001_interrupt_handler_msix
,
flag
,
intr_drvname
[
i
],
&
(
pm8001_ha
->
irq_vector
[
i
]));
intr_drvname
[
i
],
&
(
pm8001_ha
->
irq_vector
[
i
]));
if
(
rc
)
{
if
(
rc
)
{
for
(
j
=
0
;
j
<
i
;
j
++
)
for
(
j
=
0
;
j
<
i
;
j
++
)
{
free_irq
(
free_irq
(
pm8001_ha
->
msix_entries
[
j
].
vector
,
pm8001_ha
->
msix_entries
[
j
].
vector
,
&
(
pm8001_ha
->
irq_vector
[
i
]));
&
(
pm8001_ha
->
irq_vector
[
i
]));
}
pci_disable_msix
(
pm8001_ha
->
pdev
);
pci_disable_msix
(
pm8001_ha
->
pdev
);
break
;
break
;
}
}
}
}
}
return
rc
;
return
rc
;
}
}
#endif
#endif
...
...
drivers/scsi/qla4xxx/ql4_init.c
View file @
ae87e8b2
...
@@ -334,6 +334,12 @@ void qla4xxx_alloc_fw_dump(struct scsi_qla_host *ha)
...
@@ -334,6 +334,12 @@ void qla4xxx_alloc_fw_dump(struct scsi_qla_host *ha)
/* Allocate memory for saving the template */
/* Allocate memory for saving the template */
md_tmp
=
dma_alloc_coherent
(
&
ha
->
pdev
->
dev
,
ha
->
fw_dump_tmplt_size
,
md_tmp
=
dma_alloc_coherent
(
&
ha
->
pdev
->
dev
,
ha
->
fw_dump_tmplt_size
,
&
md_tmp_dma
,
GFP_KERNEL
);
&
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 */
/* Request template */
status
=
qla4xxx_get_minidump_template
(
ha
,
md_tmp_dma
);
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,
...
@@ -1620,8 +1620,8 @@ int qla4xxx_get_chap(struct scsi_qla_host *ha, char *username, char *password,
goto
exit_get_chap
;
goto
exit_get_chap
;
}
}
str
n
cpy
(
password
,
chap_table
->
secret
,
QL4_CHAP_MAX_SECRET_LEN
);
str
l
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
(
username
,
chap_table
->
name
,
QL4_CHAP_MAX_NAME_LEN
);
chap_table
->
cookie
=
__constant_cpu_to_le16
(
CHAP_VALID_COOKIE
);
chap_table
->
cookie
=
__constant_cpu_to_le16
(
CHAP_VALID_COOKIE
);
exit_get_chap:
exit_get_chap:
...
@@ -1663,8 +1663,8 @@ int qla4xxx_set_chap(struct scsi_qla_host *ha, char *username, char *password,
...
@@ -1663,8 +1663,8 @@ int qla4xxx_set_chap(struct scsi_qla_host *ha, char *username, char *password,
else
else
chap_table
->
flags
|=
BIT_7
;
/* local */
chap_table
->
flags
|=
BIT_7
;
/* local */
chap_table
->
secret_len
=
strlen
(
password
);
chap_table
->
secret_len
=
strlen
(
password
);
strncpy
(
chap_table
->
secret
,
password
,
MAX_CHAP_SECRET_LEN
);
strncpy
(
chap_table
->
secret
,
password
,
MAX_CHAP_SECRET_LEN
-
1
);
strncpy
(
chap_table
->
name
,
username
,
MAX_CHAP_NAME_LEN
);
strncpy
(
chap_table
->
name
,
username
,
MAX_CHAP_NAME_LEN
-
1
);
chap_table
->
cookie
=
__constant_cpu_to_le16
(
CHAP_VALID_COOKIE
);
chap_table
->
cookie
=
__constant_cpu_to_le16
(
CHAP_VALID_COOKIE
);
if
(
is_qla40XX
(
ha
))
{
if
(
is_qla40XX
(
ha
))
{
...
@@ -1742,8 +1742,8 @@ int qla4xxx_get_uni_chap_at_index(struct scsi_qla_host *ha, char *username,
...
@@ -1742,8 +1742,8 @@ int qla4xxx_get_uni_chap_at_index(struct scsi_qla_host *ha, char *username,
goto
exit_unlock_uni_chap
;
goto
exit_unlock_uni_chap
;
}
}
str
n
cpy
(
password
,
chap_table
->
secret
,
MAX_CHAP_SECRET_LEN
);
str
l
cpy
(
password
,
chap_table
->
secret
,
MAX_CHAP_SECRET_LEN
);
str
n
cpy
(
username
,
chap_table
->
name
,
MAX_CHAP_NAME_LEN
);
str
l
cpy
(
username
,
chap_table
->
name
,
MAX_CHAP_NAME_LEN
);
rval
=
QLA_SUCCESS
;
rval
=
QLA_SUCCESS
;
...
@@ -2295,7 +2295,7 @@ int qla4_8xxx_set_param(struct scsi_qla_host *ha, int param)
...
@@ -2295,7 +2295,7 @@ int qla4_8xxx_set_param(struct scsi_qla_host *ha, int param)
if
(
param
==
SET_DRVR_VERSION
)
{
if
(
param
==
SET_DRVR_VERSION
)
{
mbox_cmd
[
1
]
=
SET_DRVR_VERSION
;
mbox_cmd
[
1
]
=
SET_DRVR_VERSION
;
strncpy
((
char
*
)
&
mbox_cmd
[
2
],
QLA4XXX_DRIVER_VERSION
,
strncpy
((
char
*
)
&
mbox_cmd
[
2
],
QLA4XXX_DRIVER_VERSION
,
MAX_DRVR_VER_LEN
);
MAX_DRVR_VER_LEN
-
1
);
}
else
{
}
else
{
ql4_printk
(
KERN_ERR
,
ha
,
"%s: invalid parameter 0x%x
\n
"
,
ql4_printk
(
KERN_ERR
,
ha
,
"%s: invalid parameter 0x%x
\n
"
,
__func__
,
param
);
__func__
,
param
);
...
...
drivers/scsi/qla4xxx/ql4_nx.c
View file @
ae87e8b2
...
@@ -4221,7 +4221,7 @@ qla4_8xxx_enable_msix(struct scsi_qla_host *ha)
...
@@ -4221,7 +4221,7 @@ qla4_8xxx_enable_msix(struct scsi_qla_host *ha)
for
(
i
=
0
;
i
<
QLA_MSIX_ENTRIES
;
i
++
)
for
(
i
=
0
;
i
<
QLA_MSIX_ENTRIES
;
i
++
)
entries
[
i
].
entry
=
qla4_8xxx_msix_entries
[
i
].
entry
;
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
)
{
if
(
ret
)
{
ql4_printk
(
KERN_WARNING
,
ha
,
ql4_printk
(
KERN_WARNING
,
ha
,
"MSI-X: Failed to enable support -- %d/%d
\n
"
,
"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,
...
@@ -756,9 +756,9 @@ static int qla4xxx_get_chap_list(struct Scsi_Host *shost, uint16_t chap_tbl_idx,
continue
;
continue
;
chap_rec
->
chap_tbl_idx
=
i
;
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
);
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
);
QL4_CHAP_MAX_SECRET_LEN
);
chap_rec
->
password_length
=
chap_table
->
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)
...
@@ -1050,6 +1050,7 @@ static int qla4xxx_get_host_stats(struct Scsi_Host *shost, char *buf, int len)
if
(
!
ql_iscsi_stats
)
{
if
(
!
ql_iscsi_stats
)
{
ql4_printk
(
KERN_ERR
,
ha
,
ql4_printk
(
KERN_ERR
,
ha
,
"Unable to allocate memory for iscsi stats
\n
"
);
"Unable to allocate memory for iscsi stats
\n
"
);
ret
=
-
ENOMEM
;
goto
exit_host_stats
;
goto
exit_host_stats
;
}
}
...
@@ -1058,6 +1059,7 @@ static int qla4xxx_get_host_stats(struct Scsi_Host *shost, char *buf, int len)
...
@@ -1058,6 +1059,7 @@ static int qla4xxx_get_host_stats(struct Scsi_Host *shost, char *buf, int len)
if
(
ret
!=
QLA_SUCCESS
)
{
if
(
ret
!=
QLA_SUCCESS
)
{
ql4_printk
(
KERN_ERR
,
ha
,
ql4_printk
(
KERN_ERR
,
ha
,
"Unable to retrieve iscsi stats
\n
"
);
"Unable to retrieve iscsi stats
\n
"
);
ret
=
-
EIO
;
goto
exit_host_stats
;
goto
exit_host_stats
;
}
}
host_stats
->
mactx_frames
=
le64_to_cpu
(
ql_iscsi_stats
->
mac_tx_frames
);
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,
...
@@ -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 */
if
(
!
(
chap_table
->
flags
&
BIT_6
))
/* Not BIDI */
continue
;
continue
;
str
n
cpy
(
password
,
chap_table
->
secret
,
QL4_CHAP_MAX_SECRET_LEN
);
str
l
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
(
username
,
chap_table
->
name
,
QL4_CHAP_MAX_NAME_LEN
);
ret
=
0
;
ret
=
0
;
break
;
break
;
}
}
...
@@ -6258,8 +6260,8 @@ static void qla4xxx_get_param_ddb(struct ddb_entry *ddb_entry,
...
@@ -6258,8 +6260,8 @@ static void qla4xxx_get_param_ddb(struct ddb_entry *ddb_entry,
tddb
->
tpgt
=
sess
->
tpgt
;
tddb
->
tpgt
=
sess
->
tpgt
;
tddb
->
port
=
conn
->
persistent_port
;
tddb
->
port
=
conn
->
persistent_port
;
str
n
cpy
(
tddb
->
iscsi_name
,
sess
->
targetname
,
ISCSI_NAME_SIZE
);
str
l
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
->
ip_addr
,
conn
->
persistent_address
,
DDB_IPADDR_LEN
);
}
}
static
void
qla4xxx_convert_param_ddb
(
struct
dev_db_entry
*
fw_ddb_entry
,
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,
...
@@ -7764,7 +7766,7 @@ static int qla4xxx_sysfs_ddb_logout(struct iscsi_bus_flash_session *fnode_sess,
goto
exit_ddb_logout
;
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
);
ISCSI_NAME_SIZE
);
if
(
!
strncmp
(
fnode_sess
->
portal_type
,
PORTAL_TYPE_IPV6
,
4
))
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)
...
@@ -3429,7 +3429,7 @@ iscsi_get_host_stats(struct iscsi_transport *transport, struct nlmsghdr *nlh)
char
*
buf
;
char
*
buf
;
if
(
!
transport
->
get_host_stats
)
if
(
!
transport
->
get_host_stats
)
return
-
E
INVAL
;
return
-
E
NOSYS
;
priv
=
iscsi_if_transport_lookup
(
transport
);
priv
=
iscsi_if_transport_lookup
(
transport
);
if
(
!
priv
)
if
(
!
priv
)
...
@@ -3467,6 +3467,10 @@ iscsi_get_host_stats(struct iscsi_transport *transport, struct nlmsghdr *nlh)
...
@@ -3467,6 +3467,10 @@ iscsi_get_host_stats(struct iscsi_transport *transport, struct nlmsghdr *nlh)
memset
(
buf
,
0
,
host_stats_size
);
memset
(
buf
,
0
,
host_stats_size
);
err
=
transport
->
get_host_stats
(
shost
,
buf
,
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
);
actual_size
=
nlmsg_total_size
(
sizeof
(
*
ev
)
+
host_stats_size
);
skb_trim
(
skbhost_stats
,
NLMSG_ALIGN
(
actual_size
));
skb_trim
(
skbhost_stats
,
NLMSG_ALIGN
(
actual_size
));
...
...
include/scsi/iscsi_if.h
View file @
ae87e8b2
...
@@ -527,6 +527,7 @@ enum iscsi_err {
...
@@ -527,6 +527,7 @@ enum iscsi_err {
ISCSI_ERR_XMIT_FAILED
=
ISCSI_ERR_BASE
+
19
,
ISCSI_ERR_XMIT_FAILED
=
ISCSI_ERR_BASE
+
19
,
ISCSI_ERR_TCP_CONN_CLOSE
=
ISCSI_ERR_BASE
+
20
,
ISCSI_ERR_TCP_CONN_CLOSE
=
ISCSI_ERR_BASE
+
20
,
ISCSI_ERR_SCSI_EH_SESSION_RST
=
ISCSI_ERR_BASE
+
21
,
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