mirror of
https://github.com/torvalds/linux.git
synced 2024-12-19 17:41:29 +00:00
qlge: bugfix: Fix ring length setting for rx ring, large/small
The length field for these rings is 16-bits. If the length is the max supported 65536 then the setting should be zero. Signed-off-by: Ron Mercer <ron.mercer@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
2b72c7849f
commit
459caf5a99
@ -2491,7 +2491,8 @@ static int ql_start_rx_ring(struct ql_adapter *qdev, struct rx_ring *rx_ring)
|
||||
memset((void *)cqicb, 0, sizeof(struct cqicb));
|
||||
cqicb->msix_vect = rx_ring->irq;
|
||||
|
||||
cqicb->len = cpu_to_le16(rx_ring->cq_len | LEN_V | LEN_CPP_CONT);
|
||||
bq_len = (rx_ring->cq_len == 65536) ? 0 : (u16) rx_ring->cq_len;
|
||||
cqicb->len = cpu_to_le16(bq_len | LEN_V | LEN_CPP_CONT);
|
||||
|
||||
cqicb->addr_lo = cpu_to_le32(rx_ring->cq_base_dma);
|
||||
cqicb->addr_hi = cpu_to_le32((u64) rx_ring->cq_base_dma >> 32);
|
||||
@ -2513,8 +2514,11 @@ static int ql_start_rx_ring(struct ql_adapter *qdev, struct rx_ring *rx_ring)
|
||||
cpu_to_le32(rx_ring->lbq_base_indirect_dma);
|
||||
cqicb->lbq_addr_hi =
|
||||
cpu_to_le32((u64) rx_ring->lbq_base_indirect_dma >> 32);
|
||||
cqicb->lbq_buf_size = cpu_to_le32(rx_ring->lbq_buf_size);
|
||||
bq_len = (u16) rx_ring->lbq_len;
|
||||
bq_len = (rx_ring->lbq_buf_size == 65536) ? 0 :
|
||||
(u16) rx_ring->lbq_buf_size;
|
||||
cqicb->lbq_buf_size = cpu_to_le16(bq_len);
|
||||
bq_len = (rx_ring->lbq_len == 65536) ? 0 :
|
||||
(u16) rx_ring->lbq_len;
|
||||
cqicb->lbq_len = cpu_to_le16(bq_len);
|
||||
rx_ring->lbq_prod_idx = rx_ring->lbq_len - 16;
|
||||
rx_ring->lbq_curr_idx = 0;
|
||||
@ -2530,7 +2534,8 @@ static int ql_start_rx_ring(struct ql_adapter *qdev, struct rx_ring *rx_ring)
|
||||
cpu_to_le32((u64) rx_ring->sbq_base_indirect_dma >> 32);
|
||||
cqicb->sbq_buf_size =
|
||||
cpu_to_le16(((rx_ring->sbq_buf_size / 2) + 8) & 0xfffffff8);
|
||||
bq_len = (u16) rx_ring->sbq_len;
|
||||
bq_len = (rx_ring->sbq_len == 65536) ? 0 :
|
||||
(u16) rx_ring->sbq_len;
|
||||
cqicb->sbq_len = cpu_to_le16(bq_len);
|
||||
rx_ring->sbq_prod_idx = rx_ring->sbq_len - 16;
|
||||
rx_ring->sbq_curr_idx = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user