Commit 2c9a0d41 authored by Ron Mercer's avatar Ron Mercer Committed by David S. Miller

qlge: Fix sparse warning regarding rx buffer queues.

Warnings:
drivers/net/qlge/qlge_main.c:909:17: warning: incorrect type in assignment (different base types)
drivers/net/qlge/qlge_main.c:909:17:    expected unsigned int [unsigned] [usertype] addr_lo
drivers/net/qlge/qlge_main.c:909:17:    got restricted unsigned int [usertype] <noident>
drivers/net/qlge/qlge_main.c:911:17: warning: incorrect type in assignment (different base types)
drivers/net/qlge/qlge_main.c:911:17:    expected unsigned int [unsigned] [usertype] addr_hi
drivers/net/qlge/qlge_main.c:911:17:    got restricted unsigned int [usertype] <noident>
drivers/net/qlge/qlge_main.c:974:17: warning: incorrect type in assignment (different base types)
drivers/net/qlge/qlge_main.c:974:17:    expected unsigned int [unsigned] [usertype] addr_lo
drivers/net/qlge/qlge_main.c:974:17:    got restricted unsigned int [usertype] <noident>
drivers/net/qlge/qlge_main.c:975:17: warning: incorrect type in assignment (different base types)
drivers/net/qlge/qlge_main.c:975:17:    expected unsigned int [unsigned] [usertype] addr_hi
drivers/net/qlge/qlge_main.c:975:17:    got restricted unsigned int [usertype] <noident>
drivers/net/qlge/qlge_main.c:2132:16: warning: incorrect type in assignment (different base types)
drivers/net/qlge/qlge_main.c:2132:16:    expected unsigned int [unsigned] [usertype] addr_lo
drivers/net/qlge/qlge_main.c:2132:16:    got restricted unsigned int [usertype] <noident>
drivers/net/qlge/qlge_main.c:2133:16: warning: incorrect type in assignment (different base types)
drivers/net/qlge/qlge_main.c:2133:16:    expected unsigned int [unsigned] [usertype] addr_hi
drivers/net/qlge/qlge_main.c:2133:16:    got restricted unsigned int [usertype] <noident>
drivers/net/qlge/qlge_main.c:2212:15: warning: incorrect type in assignment (different base types)
drivers/net/qlge/qlge_main.c:2212:15:    expected unsigned int [unsigned] [usertype] addr_lo
drivers/net/qlge/qlge_main.c:2212:15:    got restricted unsigned int [usertype] <noident>
drivers/net/qlge/qlge_main.c:2214:15: warning: incorrect type in assignment (different base types)
drivers/net/qlge/qlge_main.c:2214:15:    expected unsigned int [unsigned] [usertype] addr_hi
drivers/net/qlge/qlge_main.c:2214:15:    got restricted unsigned int [usertype] <noident>
Signed-off-by: default avatarRon Mercer <ron.mercer@qlogic.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent fd2df4f7
...@@ -818,15 +818,6 @@ struct tx_doorbell_context { ...@@ -818,15 +818,6 @@ struct tx_doorbell_context {
}; };
/* DATA STRUCTURES SHARED WITH HARDWARE. */ /* DATA STRUCTURES SHARED WITH HARDWARE. */
struct bq_element {
u32 addr_lo;
#define BQ_END 0x00000001
#define BQ_CONT 0x00000002
#define BQ_MASK 0x00000003
u32 addr_hi;
} __attribute((packed));
struct tx_buf_desc { struct tx_buf_desc {
__le64 addr; __le64 addr;
__le32 len; __le32 len;
...@@ -1139,7 +1130,7 @@ struct bq_desc { ...@@ -1139,7 +1130,7 @@ struct bq_desc {
struct page *lbq_page; struct page *lbq_page;
struct sk_buff *skb; struct sk_buff *skb;
} p; } p;
struct bq_element *bq; __le64 *addr;
int index; int index;
DECLARE_PCI_UNMAP_ADDR(mapaddr); DECLARE_PCI_UNMAP_ADDR(mapaddr);
DECLARE_PCI_UNMAP_LEN(maplen); DECLARE_PCI_UNMAP_LEN(maplen);
......
...@@ -874,7 +874,6 @@ static void ql_update_lbq(struct ql_adapter *qdev, struct rx_ring *rx_ring) ...@@ -874,7 +874,6 @@ static void ql_update_lbq(struct ql_adapter *qdev, struct rx_ring *rx_ring)
{ {
int clean_idx = rx_ring->lbq_clean_idx; int clean_idx = rx_ring->lbq_clean_idx;
struct bq_desc *lbq_desc; struct bq_desc *lbq_desc;
struct bq_element *bq;
u64 map; u64 map;
int i; int i;
...@@ -884,7 +883,6 @@ static void ql_update_lbq(struct ql_adapter *qdev, struct rx_ring *rx_ring) ...@@ -884,7 +883,6 @@ static void ql_update_lbq(struct ql_adapter *qdev, struct rx_ring *rx_ring)
"lbq: try cleaning clean_idx = %d.\n", "lbq: try cleaning clean_idx = %d.\n",
clean_idx); clean_idx);
lbq_desc = &rx_ring->lbq[clean_idx]; lbq_desc = &rx_ring->lbq[clean_idx];
bq = lbq_desc->bq;
if (lbq_desc->p.lbq_page == NULL) { if (lbq_desc->p.lbq_page == NULL) {
QPRINTK(qdev, RX_STATUS, DEBUG, QPRINTK(qdev, RX_STATUS, DEBUG,
"lbq: getting new page for index %d.\n", "lbq: getting new page for index %d.\n",
...@@ -906,10 +904,7 @@ static void ql_update_lbq(struct ql_adapter *qdev, struct rx_ring *rx_ring) ...@@ -906,10 +904,7 @@ static void ql_update_lbq(struct ql_adapter *qdev, struct rx_ring *rx_ring)
} }
pci_unmap_addr_set(lbq_desc, mapaddr, map); pci_unmap_addr_set(lbq_desc, mapaddr, map);
pci_unmap_len_set(lbq_desc, maplen, PAGE_SIZE); pci_unmap_len_set(lbq_desc, maplen, PAGE_SIZE);
bq->addr_lo = /*lbq_desc->addr_lo = */ *lbq_desc->addr = cpu_to_le64(map);
cpu_to_le32(map);
bq->addr_hi = /*lbq_desc->addr_hi = */
cpu_to_le32(map >> 32);
} }
clean_idx++; clean_idx++;
if (clean_idx == rx_ring->lbq_len) if (clean_idx == rx_ring->lbq_len)
...@@ -934,7 +929,6 @@ static void ql_update_sbq(struct ql_adapter *qdev, struct rx_ring *rx_ring) ...@@ -934,7 +929,6 @@ static void ql_update_sbq(struct ql_adapter *qdev, struct rx_ring *rx_ring)
{ {
int clean_idx = rx_ring->sbq_clean_idx; int clean_idx = rx_ring->sbq_clean_idx;
struct bq_desc *sbq_desc; struct bq_desc *sbq_desc;
struct bq_element *bq;
u64 map; u64 map;
int i; int i;
...@@ -944,7 +938,6 @@ static void ql_update_sbq(struct ql_adapter *qdev, struct rx_ring *rx_ring) ...@@ -944,7 +938,6 @@ static void ql_update_sbq(struct ql_adapter *qdev, struct rx_ring *rx_ring)
QPRINTK(qdev, RX_STATUS, DEBUG, QPRINTK(qdev, RX_STATUS, DEBUG,
"sbq: try cleaning clean_idx = %d.\n", "sbq: try cleaning clean_idx = %d.\n",
clean_idx); clean_idx);
bq = sbq_desc->bq;
if (sbq_desc->p.skb == NULL) { if (sbq_desc->p.skb == NULL) {
QPRINTK(qdev, RX_STATUS, DEBUG, QPRINTK(qdev, RX_STATUS, DEBUG,
"sbq: getting new skb for index %d.\n", "sbq: getting new skb for index %d.\n",
...@@ -971,8 +964,7 @@ static void ql_update_sbq(struct ql_adapter *qdev, struct rx_ring *rx_ring) ...@@ -971,8 +964,7 @@ static void ql_update_sbq(struct ql_adapter *qdev, struct rx_ring *rx_ring)
pci_unmap_addr_set(sbq_desc, mapaddr, map); pci_unmap_addr_set(sbq_desc, mapaddr, map);
pci_unmap_len_set(sbq_desc, maplen, pci_unmap_len_set(sbq_desc, maplen,
rx_ring->sbq_buf_size / 2); rx_ring->sbq_buf_size / 2);
bq->addr_lo = cpu_to_le32(map); *sbq_desc->addr = cpu_to_le64(map);
bq->addr_hi = cpu_to_le32(map >> 32);
} }
clean_idx++; clean_idx++;
...@@ -1340,7 +1332,7 @@ static struct sk_buff *ql_build_rx_skb(struct ql_adapter *qdev, ...@@ -1340,7 +1332,7 @@ static struct sk_buff *ql_build_rx_skb(struct ql_adapter *qdev,
* eventually be in trouble. * eventually be in trouble.
*/ */
int size, offset, i = 0; int size, offset, i = 0;
struct bq_element *bq, bq_array[8]; __le64 *bq, bq_array[8];
sbq_desc = ql_get_curr_sbuf(rx_ring); sbq_desc = ql_get_curr_sbuf(rx_ring);
pci_unmap_single(qdev->pdev, pci_unmap_single(qdev->pdev,
pci_unmap_addr(sbq_desc, mapaddr), pci_unmap_addr(sbq_desc, mapaddr),
...@@ -1366,16 +1358,10 @@ static struct sk_buff *ql_build_rx_skb(struct ql_adapter *qdev, ...@@ -1366,16 +1358,10 @@ static struct sk_buff *ql_build_rx_skb(struct ql_adapter *qdev,
} else { } else {
QPRINTK(qdev, RX_STATUS, DEBUG, QPRINTK(qdev, RX_STATUS, DEBUG,
"Headers in small, %d bytes of data in chain of large.\n", length); "Headers in small, %d bytes of data in chain of large.\n", length);
bq = (struct bq_element *)sbq_desc->p.skb->data; bq = (__le64 *)sbq_desc->p.skb->data;
} }
while (length > 0) { while (length > 0) {
lbq_desc = ql_get_curr_lbuf(rx_ring); lbq_desc = ql_get_curr_lbuf(rx_ring);
if ((bq->addr_lo & ~BQ_MASK) != lbq_desc->bq->addr_lo) {
QPRINTK(qdev, RX_STATUS, ERR,
"Panic!!! bad large buffer address, expected 0x%.08x, got 0x%.08x.\n",
lbq_desc->bq->addr_lo, bq->addr_lo);
return NULL;
}
pci_unmap_page(qdev->pdev, pci_unmap_page(qdev->pdev,
pci_unmap_addr(lbq_desc, pci_unmap_addr(lbq_desc,
mapaddr), mapaddr),
...@@ -2093,8 +2079,6 @@ static void ql_free_lbq_buffers(struct ql_adapter *qdev, struct rx_ring *rx_ring ...@@ -2093,8 +2079,6 @@ static void ql_free_lbq_buffers(struct ql_adapter *qdev, struct rx_ring *rx_ring
put_page(lbq_desc->p.lbq_page); put_page(lbq_desc->p.lbq_page);
lbq_desc->p.lbq_page = NULL; lbq_desc->p.lbq_page = NULL;
} }
lbq_desc->bq->addr_lo = 0;
lbq_desc->bq->addr_hi = 0;
} }
} }
...@@ -2107,12 +2091,12 @@ static int ql_alloc_lbq_buffers(struct ql_adapter *qdev, ...@@ -2107,12 +2091,12 @@ static int ql_alloc_lbq_buffers(struct ql_adapter *qdev,
int i; int i;
struct bq_desc *lbq_desc; struct bq_desc *lbq_desc;
u64 map; u64 map;
struct bq_element *bq = rx_ring->lbq_base; __le64 *bq = rx_ring->lbq_base;
for (i = 0; i < rx_ring->lbq_len; i++) { for (i = 0; i < rx_ring->lbq_len; i++) {
lbq_desc = &rx_ring->lbq[i]; lbq_desc = &rx_ring->lbq[i];
memset(lbq_desc, 0, sizeof(lbq_desc)); memset(lbq_desc, 0, sizeof(lbq_desc));
lbq_desc->bq = bq; lbq_desc->addr = bq;
lbq_desc->index = i; lbq_desc->index = i;
lbq_desc->p.lbq_page = alloc_page(GFP_ATOMIC); lbq_desc->p.lbq_page = alloc_page(GFP_ATOMIC);
if (unlikely(!lbq_desc->p.lbq_page)) { if (unlikely(!lbq_desc->p.lbq_page)) {
...@@ -2129,8 +2113,7 @@ static int ql_alloc_lbq_buffers(struct ql_adapter *qdev, ...@@ -2129,8 +2113,7 @@ static int ql_alloc_lbq_buffers(struct ql_adapter *qdev,
} }
pci_unmap_addr_set(lbq_desc, mapaddr, map); pci_unmap_addr_set(lbq_desc, mapaddr, map);
pci_unmap_len_set(lbq_desc, maplen, PAGE_SIZE); pci_unmap_len_set(lbq_desc, maplen, PAGE_SIZE);
bq->addr_lo = cpu_to_le32(map); *lbq_desc->addr = cpu_to_le64(map);
bq->addr_hi = cpu_to_le32(map >> 32);
} }
bq++; bq++;
} }
...@@ -2159,13 +2142,6 @@ static void ql_free_sbq_buffers(struct ql_adapter *qdev, struct rx_ring *rx_ring ...@@ -2159,13 +2142,6 @@ static void ql_free_sbq_buffers(struct ql_adapter *qdev, struct rx_ring *rx_ring
dev_kfree_skb(sbq_desc->p.skb); dev_kfree_skb(sbq_desc->p.skb);
sbq_desc->p.skb = NULL; sbq_desc->p.skb = NULL;
} }
if (sbq_desc->bq == NULL) {
QPRINTK(qdev, IFUP, ERR, "sbq_desc->bq %d is NULL.\n",
i);
return;
}
sbq_desc->bq->addr_lo = 0;
sbq_desc->bq->addr_hi = 0;
} }
} }
...@@ -2177,13 +2153,13 @@ static int ql_alloc_sbq_buffers(struct ql_adapter *qdev, ...@@ -2177,13 +2153,13 @@ static int ql_alloc_sbq_buffers(struct ql_adapter *qdev,
struct bq_desc *sbq_desc; struct bq_desc *sbq_desc;
struct sk_buff *skb; struct sk_buff *skb;
u64 map; u64 map;
struct bq_element *bq = rx_ring->sbq_base; __le64 *bq = rx_ring->sbq_base;
for (i = 0; i < rx_ring->sbq_len; i++) { for (i = 0; i < rx_ring->sbq_len; i++) {
sbq_desc = &rx_ring->sbq[i]; sbq_desc = &rx_ring->sbq[i];
memset(sbq_desc, 0, sizeof(sbq_desc)); memset(sbq_desc, 0, sizeof(sbq_desc));
sbq_desc->index = i; sbq_desc->index = i;
sbq_desc->bq = bq; sbq_desc->addr = bq;
skb = netdev_alloc_skb(qdev->ndev, rx_ring->sbq_buf_size); skb = netdev_alloc_skb(qdev->ndev, rx_ring->sbq_buf_size);
if (unlikely(!skb)) { if (unlikely(!skb)) {
/* Better luck next round */ /* Better luck next round */
...@@ -2209,10 +2185,7 @@ static int ql_alloc_sbq_buffers(struct ql_adapter *qdev, ...@@ -2209,10 +2185,7 @@ static int ql_alloc_sbq_buffers(struct ql_adapter *qdev,
} }
pci_unmap_addr_set(sbq_desc, mapaddr, map); pci_unmap_addr_set(sbq_desc, mapaddr, map);
pci_unmap_len_set(sbq_desc, maplen, rx_ring->sbq_buf_size / 2); pci_unmap_len_set(sbq_desc, maplen, rx_ring->sbq_buf_size / 2);
bq->addr_lo = /*sbq_desc->addr_lo = */ *sbq_desc->addr = cpu_to_le64(map);
cpu_to_le32(map);
bq->addr_hi = /*sbq_desc->addr_hi = */
cpu_to_le32(map >> 32);
bq++; bq++;
} }
return 0; return 0;
...@@ -3356,11 +3329,11 @@ static int ql_configure_rings(struct ql_adapter *qdev) ...@@ -3356,11 +3329,11 @@ static int ql_configure_rings(struct ql_adapter *qdev)
rx_ring->cq_len * sizeof(struct ql_net_rsp_iocb); rx_ring->cq_len * sizeof(struct ql_net_rsp_iocb);
rx_ring->lbq_len = NUM_LARGE_BUFFERS; rx_ring->lbq_len = NUM_LARGE_BUFFERS;
rx_ring->lbq_size = rx_ring->lbq_size =
rx_ring->lbq_len * sizeof(struct bq_element); rx_ring->lbq_len * sizeof(__le64);
rx_ring->lbq_buf_size = LARGE_BUFFER_SIZE; rx_ring->lbq_buf_size = LARGE_BUFFER_SIZE;
rx_ring->sbq_len = NUM_SMALL_BUFFERS; rx_ring->sbq_len = NUM_SMALL_BUFFERS;
rx_ring->sbq_size = rx_ring->sbq_size =
rx_ring->sbq_len * sizeof(struct bq_element); rx_ring->sbq_len * sizeof(__le64);
rx_ring->sbq_buf_size = SMALL_BUFFER_SIZE * 2; rx_ring->sbq_buf_size = SMALL_BUFFER_SIZE * 2;
rx_ring->type = DEFAULT_Q; rx_ring->type = DEFAULT_Q;
} else if (i < qdev->rss_ring_first_cq_id) { } else if (i < qdev->rss_ring_first_cq_id) {
...@@ -3387,11 +3360,11 @@ static int ql_configure_rings(struct ql_adapter *qdev) ...@@ -3387,11 +3360,11 @@ static int ql_configure_rings(struct ql_adapter *qdev)
rx_ring->cq_len * sizeof(struct ql_net_rsp_iocb); rx_ring->cq_len * sizeof(struct ql_net_rsp_iocb);
rx_ring->lbq_len = NUM_LARGE_BUFFERS; rx_ring->lbq_len = NUM_LARGE_BUFFERS;
rx_ring->lbq_size = rx_ring->lbq_size =
rx_ring->lbq_len * sizeof(struct bq_element); rx_ring->lbq_len * sizeof(__le64);
rx_ring->lbq_buf_size = LARGE_BUFFER_SIZE; rx_ring->lbq_buf_size = LARGE_BUFFER_SIZE;
rx_ring->sbq_len = NUM_SMALL_BUFFERS; rx_ring->sbq_len = NUM_SMALL_BUFFERS;
rx_ring->sbq_size = rx_ring->sbq_size =
rx_ring->sbq_len * sizeof(struct bq_element); rx_ring->sbq_len * sizeof(__le64);
rx_ring->sbq_buf_size = SMALL_BUFFER_SIZE * 2; rx_ring->sbq_buf_size = SMALL_BUFFER_SIZE * 2;
rx_ring->type = RX_Q; rx_ring->type = RX_Q;
} }
......
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