mirror of https://github.com/hak5/openwrt-owl.git
81 lines
2.2 KiB
Diff
81 lines
2.2 KiB
Diff
|
From a7f268af31dddf763fe3dbe9cbf96ea77e0540e0 Mon Sep 17 00:00:00 2001
|
||
|
From: Gabor Juhos <juhosg@openwrt.org>
|
||
|
Date: Sat, 17 Aug 2013 19:31:41 +0200
|
||
|
Subject: [PATCH] rt2x00: rt2800lib: introduce RT2800_HAS_HIGH_SHARED_MEM flag
|
||
|
|
||
|
Some chipsets have more than 16KB of shared memory.
|
||
|
Introduce a new rt2800 specific flag to indicate that
|
||
|
and add a helper function which helps to check the
|
||
|
presence of the new flag.
|
||
|
|
||
|
Also enable the new flag for the RT3593 chipset which
|
||
|
has 24KB of shared memory. The flag can also be used
|
||
|
for other chipsets, but none of those has been tested
|
||
|
yet.
|
||
|
|
||
|
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||
|
---
|
||
|
Changes since v1:
|
||
|
- don't enable the new flag for RT3071 and RT5592
|
||
|
---
|
||
|
drivers/net/wireless/rt2x00/rt2800lib.c | 4 ++++
|
||
|
drivers/net/wireless/rt2x00/rt2800lib.h | 13 +++++++++++++
|
||
|
2 files changed, 17 insertions(+)
|
||
|
|
||
|
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
|
||
|
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||
|
@@ -7712,6 +7712,7 @@ static int rt2800_probe_rt(struct rt2x00
|
||
|
|
||
|
int rt2800_probe_hw(struct rt2x00_dev *rt2x00dev)
|
||
|
{
|
||
|
+ struct rt2800_drv_data *drv_data = rt2x00dev->drv_data;
|
||
|
int retval;
|
||
|
u32 reg;
|
||
|
|
||
|
@@ -7719,6 +7720,9 @@ int rt2800_probe_hw(struct rt2x00_dev *r
|
||
|
if (retval)
|
||
|
return retval;
|
||
|
|
||
|
+ if (rt2x00_rt(rt2x00dev, RT3593))
|
||
|
+ __set_bit(RT2800_HAS_HIGH_SHARED_MEM, &drv_data->rt2800_flags);
|
||
|
+
|
||
|
/*
|
||
|
* Allocate eeprom data.
|
||
|
*/
|
||
|
--- a/drivers/net/wireless/rt2x00/rt2800lib.h
|
||
|
+++ b/drivers/net/wireless/rt2x00/rt2800lib.h
|
||
|
@@ -20,6 +20,10 @@
|
||
|
#ifndef RT2800LIB_H
|
||
|
#define RT2800LIB_H
|
||
|
|
||
|
+enum rt2800_flag {
|
||
|
+ RT2800_HAS_HIGH_SHARED_MEM,
|
||
|
+};
|
||
|
+
|
||
|
/* RT2800 driver data structure */
|
||
|
struct rt2800_drv_data {
|
||
|
u8 calibration_bw20;
|
||
|
@@ -29,6 +33,8 @@ struct rt2800_drv_data {
|
||
|
u8 txmixer_gain_24g;
|
||
|
u8 txmixer_gain_5g;
|
||
|
unsigned int tbtt_tick;
|
||
|
+
|
||
|
+ unsigned long rt2800_flags;
|
||
|
};
|
||
|
|
||
|
struct rt2800_ops {
|
||
|
@@ -61,6 +67,13 @@ struct rt2800_ops {
|
||
|
__le32 *(*drv_get_txwi)(struct queue_entry *entry);
|
||
|
};
|
||
|
|
||
|
+static inline bool rt2800_has_high_shared_mem(struct rt2x00_dev *rt2x00dev)
|
||
|
+{
|
||
|
+ struct rt2800_drv_data *drv_data = rt2x00dev->drv_data;
|
||
|
+
|
||
|
+ return test_bit(RT2800_HAS_HIGH_SHARED_MEM, &drv_data->rt2800_flags);
|
||
|
+}
|
||
|
+
|
||
|
static inline void rt2800_register_read(struct rt2x00_dev *rt2x00dev,
|
||
|
const unsigned int offset,
|
||
|
u32 *value)
|