diff options
author | Joe Jin <joe.jin@oracle.com> | 2012-10-21 10:40:36 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-10-22 15:16:07 -0400 |
commit | 8a6e29d6d037de0dd62fe6648ba9b29866db5416 (patch) | |
tree | 95e79bd874ec59510fff079b814f264e1513c5ec /drivers | |
parent | 6f73601efb35c7003f5c58c2bc6fd08f3652169c (diff) |
qla3xxx: Ensure request/response queue addr writes to the registers
Before use the request and response queue addr, make sure it has wrote
to the registers.
Signed-off-by: Joe Jin <joe.jin@oracle.com>
Cc: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>
Cc: Ron Mercer <ron.mercer@qlogic.com>
Acked-by: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/ethernet/qlogic/qla3xxx.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/net/ethernet/qlogic/qla3xxx.c b/drivers/net/ethernet/qlogic/qla3xxx.c index df09b1cb742..6407d0d77e8 100644 --- a/drivers/net/ethernet/qlogic/qla3xxx.c +++ b/drivers/net/ethernet/qlogic/qla3xxx.c | |||
@@ -2525,6 +2525,13 @@ static int ql_alloc_net_req_rsp_queues(struct ql3_adapter *qdev) | |||
2525 | qdev->req_q_size = | 2525 | qdev->req_q_size = |
2526 | (u32) (NUM_REQ_Q_ENTRIES * sizeof(struct ob_mac_iocb_req)); | 2526 | (u32) (NUM_REQ_Q_ENTRIES * sizeof(struct ob_mac_iocb_req)); |
2527 | 2527 | ||
2528 | qdev->rsp_q_size = NUM_RSP_Q_ENTRIES * sizeof(struct net_rsp_iocb); | ||
2529 | |||
2530 | /* The barrier is required to ensure request and response queue | ||
2531 | * addr writes to the registers. | ||
2532 | */ | ||
2533 | wmb(); | ||
2534 | |||
2528 | qdev->req_q_virt_addr = | 2535 | qdev->req_q_virt_addr = |
2529 | pci_alloc_consistent(qdev->pdev, | 2536 | pci_alloc_consistent(qdev->pdev, |
2530 | (size_t) qdev->req_q_size, | 2537 | (size_t) qdev->req_q_size, |
@@ -2536,8 +2543,6 @@ static int ql_alloc_net_req_rsp_queues(struct ql3_adapter *qdev) | |||
2536 | return -ENOMEM; | 2543 | return -ENOMEM; |
2537 | } | 2544 | } |
2538 | 2545 | ||
2539 | qdev->rsp_q_size = NUM_RSP_Q_ENTRIES * sizeof(struct net_rsp_iocb); | ||
2540 | |||
2541 | qdev->rsp_q_virt_addr = | 2546 | qdev->rsp_q_virt_addr = |
2542 | pci_alloc_consistent(qdev->pdev, | 2547 | pci_alloc_consistent(qdev->pdev, |
2543 | (size_t) qdev->rsp_q_size, | 2548 | (size_t) qdev->rsp_q_size, |