2013-06-22 14:32:03

by Gabor Juhos

[permalink] [raw]
Subject: [PATCH 1/2] rt2x00: rt2800pci: don't use TXWI_DESC_SIZE directly

Different chipsets may use different TXWI descriptor
size. Instead of using a hardcoded value, use the
'queue->winfo_size' which holds the correct value for
a given device.

Signed-off-by: Gabor Juhos <[email protected]>
---
drivers/net/wireless/rt2x00/rt2800pci.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wireless/rt2x00/rt2800pci.c b/drivers/net/wireless/rt2x00/rt2800pci.c
index 7c74782..e664918 100644
--- a/drivers/net/wireless/rt2x00/rt2800pci.c
+++ b/drivers/net/wireless/rt2x00/rt2800pci.c
@@ -637,6 +637,7 @@ static void rt2800pci_write_tx_desc(struct queue_entry *entry,
struct queue_entry_priv_mmio *entry_priv = entry->priv_data;
__le32 *txd = entry_priv->desc;
u32 word;
+ const unsigned int txwi_size = entry->queue->winfo_size;

/*
* The buffers pointed by SD_PTR0/SD_LEN0 and SD_PTR1/SD_LEN1
@@ -659,14 +660,14 @@ static void rt2800pci_write_tx_desc(struct queue_entry *entry,
!test_bit(ENTRY_TXD_MORE_FRAG, &txdesc->flags));
rt2x00_set_field32(&word, TXD_W1_BURST,
test_bit(ENTRY_TXD_BURST, &txdesc->flags));
- rt2x00_set_field32(&word, TXD_W1_SD_LEN0, TXWI_DESC_SIZE);
+ rt2x00_set_field32(&word, TXD_W1_SD_LEN0, txwi_size);
rt2x00_set_field32(&word, TXD_W1_LAST_SEC0, 0);
rt2x00_set_field32(&word, TXD_W1_DMA_DONE, 0);
rt2x00_desc_write(txd, 1, word);

word = 0;
rt2x00_set_field32(&word, TXD_W2_SD_PTR1,
- skbdesc->skb_dma + TXWI_DESC_SIZE);
+ skbdesc->skb_dma + txwi_size);
rt2x00_desc_write(txd, 2, word);

word = 0;
--
1.7.10



2013-06-24 17:29:12

by Gertjan van Wingerde

[permalink] [raw]
Subject: Re: [PATCH 1/2] rt2x00: rt2800pci: don't use TXWI_DESC_SIZE directly



Sent from my iPad

On 22 jun. 2013, at 16:31, Gabor Juhos <[email protected]> wrote:

> Different chipsets may use different TXWI descriptor
> size. Instead of using a hardcoded value, use the
> 'queue->winfo_size' which holds the correct value for
> a given device.
>
> Signed-off-by: Gabor Juhos <[email protected]>

Acked-by: Gertjan van Wingerde <[email protected]>

> ---
> drivers/net/wireless/rt2x00/rt2800pci.c | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/wireless/rt2x00/rt2800pci.c b/drivers/net/wireless/rt2x00/rt2800pci.c
> index 7c74782..e664918 100644
> --- a/drivers/net/wireless/rt2x00/rt2800pci.c
> +++ b/drivers/net/wireless/rt2x00/rt2800pci.c
> @@ -637,6 +637,7 @@ static void rt2800pci_write_tx_desc(struct queue_entry *entry,
> struct queue_entry_priv_mmio *entry_priv = entry->priv_data;
> __le32 *txd = entry_priv->desc;
> u32 word;
> + const unsigned int txwi_size = entry->queue->winfo_size;
>
> /*
> * The buffers pointed by SD_PTR0/SD_LEN0 and SD_PTR1/SD_LEN1
> @@ -659,14 +660,14 @@ static void rt2800pci_write_tx_desc(struct queue_entry *entry,
> !test_bit(ENTRY_TXD_MORE_FRAG, &txdesc->flags));
> rt2x00_set_field32(&word, TXD_W1_BURST,
> test_bit(ENTRY_TXD_BURST, &txdesc->flags));
> - rt2x00_set_field32(&word, TXD_W1_SD_LEN0, TXWI_DESC_SIZE);
> + rt2x00_set_field32(&word, TXD_W1_SD_LEN0, txwi_size);
> rt2x00_set_field32(&word, TXD_W1_LAST_SEC0, 0);
> rt2x00_set_field32(&word, TXD_W1_DMA_DONE, 0);
> rt2x00_desc_write(txd, 1, word);
>
> word = 0;
> rt2x00_set_field32(&word, TXD_W2_SD_PTR1,
> - skbdesc->skb_dma + TXWI_DESC_SIZE);
> + skbdesc->skb_dma + txwi_size);
> rt2x00_desc_write(txd, 2, word);
>
> word = 0;
> --
> 1.7.10
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html

2013-06-22 14:32:05

by Gabor Juhos

[permalink] [raw]
Subject: [PATCH 2/2] rt2x00: rt2800: unify [RT]XWI_SIZE defines

Use common names instead of chip specific ones.
The patch contains no functional changes, but
it makes it easier to add support for further
descriptor sizes.

Signed-off-by: Gabor Juhos <[email protected]>
---
drivers/net/wireless/rt2x00/rt2800.h | 10 ++++++----
drivers/net/wireless/rt2x00/rt2800pci.c | 6 +++---
drivers/net/wireless/rt2x00/rt2800usb.c | 8 ++++----
3 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/drivers/net/wireless/rt2x00/rt2800.h b/drivers/net/wireless/rt2x00/rt2800.h
index a7630d5..fe43d01 100644
--- a/drivers/net/wireless/rt2x00/rt2800.h
+++ b/drivers/net/wireless/rt2x00/rt2800.h
@@ -2625,11 +2625,13 @@ struct mac_iveiv_entry {
/*
* DMA descriptor defines.
*/
-#define TXWI_DESC_SIZE (4 * sizeof(__le32))
-#define RXWI_DESC_SIZE (4 * sizeof(__le32))

-#define TXWI_DESC_SIZE_5592 (5 * sizeof(__le32))
-#define RXWI_DESC_SIZE_5592 (6 * sizeof(__le32))
+#define TXWI_DESC_SIZE_4WORDS (4 * sizeof(__le32))
+#define TXWI_DESC_SIZE_5WORDS (5 * sizeof(__le32))
+
+#define RXWI_DESC_SIZE_4WORDS (4 * sizeof(__le32))
+#define RXWI_DESC_SIZE_6WORDS (6 * sizeof(__le32))
+
/*
* TX WI structure
*/
diff --git a/drivers/net/wireless/rt2x00/rt2800pci.c b/drivers/net/wireless/rt2x00/rt2800pci.c
index e664918..0005562 100644
--- a/drivers/net/wireless/rt2x00/rt2800pci.c
+++ b/drivers/net/wireless/rt2x00/rt2800pci.c
@@ -1194,7 +1194,7 @@ static void rt2800pci_queue_init(struct data_queue *queue)
queue->limit = 128;
queue->data_size = AGGREGATION_SIZE;
queue->desc_size = RXD_DESC_SIZE;
- queue->winfo_size = RXWI_DESC_SIZE;
+ queue->winfo_size = RXWI_DESC_SIZE_4WORDS;
queue->priv_size = sizeof(struct queue_entry_priv_mmio);
break;

@@ -1205,7 +1205,7 @@ static void rt2800pci_queue_init(struct data_queue *queue)
queue->limit = 64;
queue->data_size = AGGREGATION_SIZE;
queue->desc_size = TXD_DESC_SIZE;
- queue->winfo_size = TXWI_DESC_SIZE;
+ queue->winfo_size = TXWI_DESC_SIZE_4WORDS;
queue->priv_size = sizeof(struct queue_entry_priv_mmio);
break;

@@ -1213,7 +1213,7 @@ static void rt2800pci_queue_init(struct data_queue *queue)
queue->limit = 8;
queue->data_size = 0; /* No DMA required for beacons */
queue->desc_size = TXD_DESC_SIZE;
- queue->winfo_size = TXWI_DESC_SIZE;
+ queue->winfo_size = TXWI_DESC_SIZE_4WORDS;
queue->priv_size = sizeof(struct queue_entry_priv_mmio);
break;

diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c
index 7edd903..840833b 100644
--- a/drivers/net/wireless/rt2x00/rt2800usb.c
+++ b/drivers/net/wireless/rt2x00/rt2800usb.c
@@ -855,11 +855,11 @@ static void rt2800usb_queue_init(struct data_queue *queue)
unsigned short txwi_size, rxwi_size;

if (rt2x00_rt(rt2x00dev, RT5592)) {
- txwi_size = TXWI_DESC_SIZE_5592;
- rxwi_size = RXWI_DESC_SIZE_5592;
+ txwi_size = TXWI_DESC_SIZE_5WORDS;
+ rxwi_size = RXWI_DESC_SIZE_6WORDS;
} else {
- txwi_size = TXWI_DESC_SIZE;
- rxwi_size = RXWI_DESC_SIZE;
+ txwi_size = TXWI_DESC_SIZE_4WORDS;
+ rxwi_size = RXWI_DESC_SIZE_4WORDS;
}

switch (queue->qid) {
--
1.7.10


2013-06-24 15:46:48

by Stanislaw Gruszka

[permalink] [raw]
Subject: Re: [rt2x00-users] [PATCH 1/2] rt2x00: rt2800pci: don't use TXWI_DESC_SIZE directly

On Sat, Jun 22, 2013 at 04:31:58PM +0200, Gabor Juhos wrote:
> Different chipsets may use different TXWI descriptor
> size. Instead of using a hardcoded value, use the
> 'queue->winfo_size' which holds the correct value for
> a given device.
>
> Signed-off-by: Gabor Juhos <[email protected]>

Acked-by: Stanislaw Gruszka <[email protected]>


2013-06-24 15:47:15

by Stanislaw Gruszka

[permalink] [raw]
Subject: Re: [rt2x00-users] [PATCH 2/2] rt2x00: rt2800: unify [RT]XWI_SIZE defines

On Sat, Jun 22, 2013 at 04:31:59PM +0200, Gabor Juhos wrote:
> Use common names instead of chip specific ones.
> The patch contains no functional changes, but
> it makes it easier to add support for further
> descriptor sizes.
>
> Signed-off-by: Gabor Juhos <[email protected]>

Acked-by: Stanislaw Gruszka <[email protected]>


2013-06-24 17:29:58

by Gertjan van Wingerde

[permalink] [raw]
Subject: Re: [PATCH 2/2] rt2x00: rt2800: unify [RT]XWI_SIZE defines



Sent from my iPad

On 22 jun. 2013, at 16:31, Gabor Juhos <[email protected]> wrote:

> Use common names instead of chip specific ones.
> The patch contains no functional changes, but
> it makes it easier to add support for further
> descriptor sizes.
>
> Signed-off-by: Gabor Juhos <[email protected]>

Acked-by: Gertjan van Wingerde <[email protected]>

> ---
> drivers/net/wireless/rt2x00/rt2800.h | 10 ++++++----
> drivers/net/wireless/rt2x00/rt2800pci.c | 6 +++---
> drivers/net/wireless/rt2x00/rt2800usb.c | 8 ++++----
> 3 files changed, 13 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/net/wireless/rt2x00/rt2800.h b/drivers/net/wireless/rt2x00/rt2800.h
> index a7630d5..fe43d01 100644
> --- a/drivers/net/wireless/rt2x00/rt2800.h
> +++ b/drivers/net/wireless/rt2x00/rt2800.h
> @@ -2625,11 +2625,13 @@ struct mac_iveiv_entry {
> /*
> * DMA descriptor defines.
> */
> -#define TXWI_DESC_SIZE (4 * sizeof(__le32))
> -#define RXWI_DESC_SIZE (4 * sizeof(__le32))
>
> -#define TXWI_DESC_SIZE_5592 (5 * sizeof(__le32))
> -#define RXWI_DESC_SIZE_5592 (6 * sizeof(__le32))
> +#define TXWI_DESC_SIZE_4WORDS (4 * sizeof(__le32))
> +#define TXWI_DESC_SIZE_5WORDS (5 * sizeof(__le32))
> +
> +#define RXWI_DESC_SIZE_4WORDS (4 * sizeof(__le32))
> +#define RXWI_DESC_SIZE_6WORDS (6 * sizeof(__le32))
> +
> /*
> * TX WI structure
> */
> diff --git a/drivers/net/wireless/rt2x00/rt2800pci.c b/drivers/net/wireless/rt2x00/rt2800pci.c
> index e664918..0005562 100644
> --- a/drivers/net/wireless/rt2x00/rt2800pci.c
> +++ b/drivers/net/wireless/rt2x00/rt2800pci.c
> @@ -1194,7 +1194,7 @@ static void rt2800pci_queue_init(struct data_queue *queue)
> queue->limit = 128;
> queue->data_size = AGGREGATION_SIZE;
> queue->desc_size = RXD_DESC_SIZE;
> - queue->winfo_size = RXWI_DESC_SIZE;
> + queue->winfo_size = RXWI_DESC_SIZE_4WORDS;
> queue->priv_size = sizeof(struct queue_entry_priv_mmio);
> break;
>
> @@ -1205,7 +1205,7 @@ static void rt2800pci_queue_init(struct data_queue *queue)
> queue->limit = 64;
> queue->data_size = AGGREGATION_SIZE;
> queue->desc_size = TXD_DESC_SIZE;
> - queue->winfo_size = TXWI_DESC_SIZE;
> + queue->winfo_size = TXWI_DESC_SIZE_4WORDS;
> queue->priv_size = sizeof(struct queue_entry_priv_mmio);
> break;
>
> @@ -1213,7 +1213,7 @@ static void rt2800pci_queue_init(struct data_queue *queue)
> queue->limit = 8;
> queue->data_size = 0; /* No DMA required for beacons */
> queue->desc_size = TXD_DESC_SIZE;
> - queue->winfo_size = TXWI_DESC_SIZE;
> + queue->winfo_size = TXWI_DESC_SIZE_4WORDS;
> queue->priv_size = sizeof(struct queue_entry_priv_mmio);
> break;
>
> diff --git a/drivers/net/wireless/rt2x00/rt2800usb.c b/drivers/net/wireless/rt2x00/rt2800usb.c
> index 7edd903..840833b 100644
> --- a/drivers/net/wireless/rt2x00/rt2800usb.c
> +++ b/drivers/net/wireless/rt2x00/rt2800usb.c
> @@ -855,11 +855,11 @@ static void rt2800usb_queue_init(struct data_queue *queue)
> unsigned short txwi_size, rxwi_size;
>
> if (rt2x00_rt(rt2x00dev, RT5592)) {
> - txwi_size = TXWI_DESC_SIZE_5592;
> - rxwi_size = RXWI_DESC_SIZE_5592;
> + txwi_size = TXWI_DESC_SIZE_5WORDS;
> + rxwi_size = RXWI_DESC_SIZE_6WORDS;
> } else {
> - txwi_size = TXWI_DESC_SIZE;
> - rxwi_size = RXWI_DESC_SIZE;
> + txwi_size = TXWI_DESC_SIZE_4WORDS;
> + rxwi_size = RXWI_DESC_SIZE_4WORDS;
> }
>
> switch (queue->qid) {
> --
> 1.7.10
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html