Commit 568f7a43 authored by Gabor Juhos's avatar Gabor Juhos Committed by John W. Linville

rt2x00: rt2x00queue: add priv_size field to struct data_queue

Add a new field into struct data_queue and store
the size of the per-queue_entry private data in
that. Additionally, use the new field in the
rt2x00queue_alloc_entries function to compute
the size of the queue entries for a given queue.

The patch does not change the current behaviour
but makes it possible to remove the queue_desc
parameter of the rt2x00queue_alloc_entries function.
That will be done by a subsequent patch.
Signed-off-by: default avatarGabor Juhos <juhosg@openwrt.org>
Acked-by: default avatarStanislaw Gruszka <sgruszka@redhat.com>
Acked-by: default avatarGertjan van Wingerde <gwingerde@gmail.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 057c1dd6
...@@ -1173,7 +1173,7 @@ static int rt2x00queue_alloc_entries(struct data_queue *queue, ...@@ -1173,7 +1173,7 @@ static int rt2x00queue_alloc_entries(struct data_queue *queue,
/* /*
* Allocate all queue entries. * Allocate all queue entries.
*/ */
entry_size = sizeof(*entries) + qdesc->priv_size; entry_size = sizeof(*entries) + queue->priv_size;
entries = kcalloc(queue->limit, entry_size, GFP_KERNEL); entries = kcalloc(queue->limit, entry_size, GFP_KERNEL);
if (!entries) if (!entries)
return -ENOMEM; return -ENOMEM;
...@@ -1189,7 +1189,7 @@ static int rt2x00queue_alloc_entries(struct data_queue *queue, ...@@ -1189,7 +1189,7 @@ static int rt2x00queue_alloc_entries(struct data_queue *queue,
entries[i].entry_idx = i; entries[i].entry_idx = i;
entries[i].priv_data = entries[i].priv_data =
QUEUE_ENTRY_PRIV_OFFSET(entries, i, queue->limit, QUEUE_ENTRY_PRIV_OFFSET(entries, i, queue->limit,
sizeof(*entries), qdesc->priv_size); sizeof(*entries), queue->priv_size);
} }
#undef QUEUE_ENTRY_PRIV_OFFSET #undef QUEUE_ENTRY_PRIV_OFFSET
...@@ -1329,6 +1329,7 @@ static void rt2x00queue_init(struct rt2x00_dev *rt2x00dev, ...@@ -1329,6 +1329,7 @@ static void rt2x00queue_init(struct rt2x00_dev *rt2x00dev,
queue->data_size = qdesc->data_size; queue->data_size = qdesc->data_size;
queue->desc_size = qdesc->desc_size; queue->desc_size = qdesc->desc_size;
queue->winfo_size = qdesc->winfo_size; queue->winfo_size = qdesc->winfo_size;
queue->priv_size = qdesc->priv_size;
} }
int rt2x00queue_allocate(struct rt2x00_dev *rt2x00dev) int rt2x00queue_allocate(struct rt2x00_dev *rt2x00dev)
......
...@@ -453,6 +453,7 @@ enum data_queue_flags { ...@@ -453,6 +453,7 @@ enum data_queue_flags {
* @cw_max: The cw max value for outgoing frames (field ignored in RX queue). * @cw_max: The cw max value for outgoing frames (field ignored in RX queue).
* @data_size: Maximum data size for the frames in this queue. * @data_size: Maximum data size for the frames in this queue.
* @desc_size: Hardware descriptor size for the data in this queue. * @desc_size: Hardware descriptor size for the data in this queue.
* @priv_size: Size of per-queue_entry private data.
* @usb_endpoint: Device endpoint used for communication (USB only) * @usb_endpoint: Device endpoint used for communication (USB only)
* @usb_maxpacket: Max packet size for given endpoint (USB only) * @usb_maxpacket: Max packet size for given endpoint (USB only)
*/ */
...@@ -481,6 +482,7 @@ struct data_queue { ...@@ -481,6 +482,7 @@ struct data_queue {
unsigned short data_size; unsigned short data_size;
unsigned char desc_size; unsigned char desc_size;
unsigned char winfo_size; unsigned char winfo_size;
unsigned short priv_size;
unsigned short usb_endpoint; unsigned short usb_endpoint;
unsigned short usb_maxpacket; unsigned short usb_maxpacket;
......
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