Commit b229487b authored by Rick Farrington's avatar Rick Farrington Committed by David S. Miller

liquidio: remove/replace invalid code

Remove invalid call to dma_sync_single_for_cpu() because previous DMA
allocation was coherent--not streaming.  Remove code that references fields
in struct list_head; replace it with calls to list_empty() and
list_first_entry().  Also, add comment to clarify complicated if statement.
Signed-off-by: default avatarRick Farrington <ricardo.farrington@cavium.com>
Signed-off-by: default avatarFelix Manlunas <felix.manlunas@cavium.com>
Signed-off-by: default avatarDerek Chickles <derek.chickles@cavium.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 5080f39e
...@@ -69,41 +69,35 @@ int lio_process_ordered_list(struct octeon_device *octeon_dev, ...@@ -69,41 +69,35 @@ int lio_process_ordered_list(struct octeon_device *octeon_dev,
int resp_to_process = MAX_ORD_REQS_TO_PROCESS; int resp_to_process = MAX_ORD_REQS_TO_PROCESS;
u32 status; u32 status;
u64 status64; u64 status64;
struct octeon_instr_rdp *rdp;
u64 rptr;
ordered_sc_list = &octeon_dev->response_list[OCTEON_ORDERED_SC_LIST]; ordered_sc_list = &octeon_dev->response_list[OCTEON_ORDERED_SC_LIST];
do { do {
spin_lock_bh(&ordered_sc_list->lock); spin_lock_bh(&ordered_sc_list->lock);
if (ordered_sc_list->head.next == &ordered_sc_list->head) { if (list_empty(&ordered_sc_list->head)) {
spin_unlock_bh(&ordered_sc_list->lock); spin_unlock_bh(&ordered_sc_list->lock);
return 1; return 1;
} }
sc = (struct octeon_soft_command *)ordered_sc_list-> sc = list_first_entry(&ordered_sc_list->head,
head.next; struct octeon_soft_command, node);
if (OCTEON_CN23XX_PF(octeon_dev) ||
OCTEON_CN23XX_VF(octeon_dev)) {
rdp = (struct octeon_instr_rdp *)&sc->cmd.cmd3.rdp;
rptr = sc->cmd.cmd3.rptr;
} else {
rdp = (struct octeon_instr_rdp *)&sc->cmd.cmd2.rdp;
rptr = sc->cmd.cmd2.rptr;
}
status = OCTEON_REQUEST_PENDING; status = OCTEON_REQUEST_PENDING;
/* check if octeon has finished DMA'ing a response /* check if octeon has finished DMA'ing a response
* to where rptr is pointing to * to where rptr is pointing to
*/ */
dma_sync_single_for_cpu(&octeon_dev->pci_dev->dev,
rptr, rdp->rlen,
DMA_FROM_DEVICE);
status64 = *sc->status_word; status64 = *sc->status_word;
if (status64 != COMPLETION_WORD_INIT) { if (status64 != COMPLETION_WORD_INIT) {
/* This logic ensures that all 64b have been written.
* 1. check byte 0 for non-FF
* 2. if non-FF, then swap result from BE to host order
* 3. check byte 7 (swapped to 0) for non-FF
* 4. if non-FF, use the low 32-bit status code
* 5. if either byte 0 or byte 7 is FF, don't use status
*/
if ((status64 & 0xff) != 0xff) { if ((status64 & 0xff) != 0xff) {
octeon_swap_8B_data(&status64, 1); octeon_swap_8B_data(&status64, 1);
if (((status64 & 0xff) != 0xff)) { if (((status64 & 0xff) != 0xff)) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment