Commit cf992af5 authored by Divy Le Ray's avatar Divy Le Ray Committed by Jeff Garzik

cxgb3 - sge page management

Streamline sge page management.
Fix dma mappings when buffers are recycled.
Signed-off-by: default avatarDivy Le Ray <divy@chelsio.com>
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent 287aa83d
...@@ -71,14 +71,15 @@ enum { /* adapter flags */ ...@@ -71,14 +71,15 @@ enum { /* adapter flags */
QUEUES_BOUND = (1 << 3), QUEUES_BOUND = (1 << 3),
}; };
struct fl_pg_chunk {
struct page *page;
void *va;
unsigned int offset;
};
struct rx_desc; struct rx_desc;
struct rx_sw_desc; struct rx_sw_desc;
struct sge_fl_page {
struct skb_frag_struct frag;
unsigned char *va;
};
struct sge_fl { /* SGE per free-buffer list state */ struct sge_fl { /* SGE per free-buffer list state */
unsigned int buf_size; /* size of each Rx buffer */ unsigned int buf_size; /* size of each Rx buffer */
unsigned int credits; /* # of available Rx buffers */ unsigned int credits; /* # of available Rx buffers */
...@@ -86,11 +87,12 @@ struct sge_fl { /* SGE per free-buffer list state */ ...@@ -86,11 +87,12 @@ struct sge_fl { /* SGE per free-buffer list state */
unsigned int cidx; /* consumer index */ unsigned int cidx; /* consumer index */
unsigned int pidx; /* producer index */ unsigned int pidx; /* producer index */
unsigned int gen; /* free list generation */ unsigned int gen; /* free list generation */
unsigned int cntxt_id; /* SGE context id for the free list */ struct fl_pg_chunk pg_chunk;/* page chunk cache */
struct sge_fl_page page; unsigned int use_pages; /* whether FL uses pages or sk_buffs */
struct rx_desc *desc; /* address of HW Rx descriptor ring */ struct rx_desc *desc; /* address of HW Rx descriptor ring */
struct rx_sw_desc *sdesc; /* address of SW Rx descriptor ring */ struct rx_sw_desc *sdesc; /* address of SW Rx descriptor ring */
dma_addr_t phys_addr; /* physical address of HW ring start */ dma_addr_t phys_addr; /* physical address of HW ring start */
unsigned int cntxt_id; /* SGE context id for the free list */
unsigned long empty; /* # of times queue ran out of buffers */ unsigned long empty; /* # of times queue ran out of buffers */
unsigned long alloc_failed; /* # of times buffer allocation failed */ unsigned long alloc_failed; /* # of times buffer allocation failed */
}; };
......
This diff is collapsed.
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