wcnss: Add API to read WLAN RX buffer count

WLAN driver's RX buffer count is a configurable value; WCNSS platform
driver will expose an API to read this configurable value from device
tree. Using a smaller coount of this buffer will reduce the memory
usage of WLAN driver.

Change-Id: Ida3da258ec1efdc16d37e50f69de8248fd6a26f9
Signed-off-by: Sameer Thalappil <sameert@codeaurora.org>
This commit is contained in:
Sameer Thalappil
2013-05-21 21:50:14 -07:00
parent 3086d236f1
commit d0952f65ef
3 changed files with 23 additions and 0 deletions
@@ -24,6 +24,8 @@ Required properties:
Optional properties:
- qcom,has_autodetect_xo: boolean flag to determine whether Iris XO auto detect
should be performed during boot up.
- qcom,wlan-rx-buff-count: WLAN RX buffer count is a configurable value,
using a smaller count for this buffer will reduce the memory usage.
Example:
+19
View File
@@ -103,6 +103,8 @@ static DEFINE_SPINLOCK(reg_spinlock);
#define CCU_PRONTO_LAST_ADDR1_OFFSET 0x10
#define CCU_PRONTO_LAST_ADDR2_OFFSET 0x14
#define WCNSS_DEF_WLAN_RX_BUFF_COUNT 1024
#define WCNSS_CTRL_CHANNEL "WCNSS_CTRL"
#define WCNSS_MAX_FRAME_SIZE (4*1024)
#define WCNSS_VERSION_LEN 30
@@ -258,6 +260,7 @@ static struct {
const struct dev_pm_ops *pm_ops;
int triggered;
int smd_channel_ready;
u32 wlan_rx_buff_count;
smd_channel_t *smd_ch;
unsigned char wcnss_version[WCNSS_VERSION_LEN];
unsigned char fw_major;
@@ -977,6 +980,17 @@ int fw_cal_data_available(void)
return -ENODEV;
}
u32 wcnss_get_wlan_rx_buff_count(void)
{
if (penv)
return penv->wlan_rx_buff_count;
else
return WCNSS_DEF_WLAN_RX_BUFF_COUNT;
}
EXPORT_SYMBOL(wcnss_get_wlan_rx_buff_count);
static int wcnss_smd_tx(void *data, int len)
{
int ret = 0;
@@ -1498,6 +1512,11 @@ wcnss_trigger_config(struct platform_device *pdev)
int has_pronto_hw = of_property_read_bool(pdev->dev.of_node,
"qcom,has_pronto_hw");
if (of_property_read_u32(pdev->dev.of_node,
"qcom,wlan-rx-buff-count", &penv->wlan_rx_buff_count)) {
penv->wlan_rx_buff_count = WCNSS_DEF_WLAN_RX_BUFF_COUNT;
}
/* make sure we are only triggered once */
if (penv->triggered)
return 0;
+2
View File
@@ -34,6 +34,7 @@ struct wcnss_wlan_config {
#define HAVE_WCNSS_SUSPEND_RESUME_NOTIFY 1
#define HAVE_WCNSS_RESET_INTR 1
#define HAVE_WCNSS_CAL_DOWNLOAD 1
#define HAVE_WCNSS_RX_BUFF_COUNT 1
struct device *wcnss_wlan_get_device(void);
struct resource *wcnss_wlan_get_memory_map(struct device *dev);
@@ -69,6 +70,7 @@ void wcnss_pronto_log_debug_regs(void);
int wcnss_device_ready(void);
void wcnss_riva_dump_pmic_regs(void);
int wcnss_xo_auto_detect_enabled(void);
u32 wcnss_get_wlan_rx_buff_count(void);
#define wcnss_wlan_get_drvdata(dev) dev_get_drvdata(dev)
#define wcnss_wlan_set_drvdata(dev, data) dev_set_drvdata((dev), (data))