summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 19a2c0c)
raw | patch | inline | side by side (parent: 19a2c0c)
author | Eyal Reizer <eyalr@ti.com> | |
Tue, 5 Mar 2013 15:57:32 +0000 (17:57 +0200) | ||
committer | Victor Goldenshtein <victorg@ti.com> | |
Tue, 19 Mar 2013 13:37:02 +0000 (15:37 +0200) |
Add functionality to support AP A2DP co-existence:
1. Add configuration for enable/disable of CTS protection in AP mode
2. Add indication for completion of connection establishment in ap
mode. This is used by the firmware to change coex parameters
when a station is in the process and connecting to the ap and
change them back after the connection has been established.
Signed-off-by: Eyal Reizer <eyalr@ti.com>
1. Add configuration for enable/disable of CTS protection in AP mode
2. Add indication for completion of connection establishment in ap
mode. This is used by the firmware to change coex parameters
when a station is in the process and connecting to the ap and
change them back after the connection has been established.
Signed-off-by: Eyal Reizer <eyalr@ti.com>
drivers/net/wireless/wl12xx/acx.c | patch | blob | history | |
drivers/net/wireless/wl12xx/acx.h | patch | blob | history | |
drivers/net/wireless/wl12xx/main.c | patch | blob | history |
index 56ec78e1478aad585e188d0104ba6108c153fbbc..0f65f7bc5bdd60e0043f2628236f67879092439b 100644 (file)
kfree(stat_info);
return ret;
}
+
+int wl1271_acx_ap_conn_estab_complete(struct wl1271 *wl)
+{
+ struct acx_header_only_cfg *acx;
+ int ret;
+
+ wl1271_debug(DEBUG_ACX, "Sending AP Connection Establishment complete indication");
+
+ acx = kzalloc(sizeof(*acx), GFP_KERNEL);
+ if (!acx)
+ return -ENOMEM;
+
+ ret = wl1271_cmd_configure(wl, ACX_AP_CONN_ESTAB_COMPLETE,
+ acx, sizeof(*acx));
+ if (ret < 0)
+ wl1271_warning("failed to send Connection Establishment complete indication: %d", ret);
+
+ kfree(acx);
+ return ret;
+}
index a0c90fbc06fd13c9d20972d95c7c12d4da4e7a07..cdc86e18ab55d6bfcc43f1f9e45760b8e686278f 100644 (file)
u8 fields[0];
} __packed;
+struct acx_header_only_cfg {
+ struct acx_header header;
+} __packed;
+
enum {
ACX_WAKE_UP_CONDITIONS = 0x0000,
ACX_MEM_CFG = 0x0001,
ACX_CONFIG_HANGOVER = 0x0042,
ACX_FEATURE_CFG = 0x0043,
ACX_PROTECTION_CFG = 0x0044,
+ ACX_AP_CONN_ESTAB_COMPLETE = 0x0045,
};
struct wl12xx_rx_data_filter *filter);
int wl12xx_acx_sta_get_rssi(struct wl1271 *wl, struct wl12xx_vif *wlvif,
int *rssi);
+int wl1271_acx_ap_conn_estab_complete(struct wl1271 *wl);
#endif /* __WL1271_ACX_H__ */
index 279a7fac91465059a30f00a5e9ee48cec2bb153a..50d4364f8ed5359fb2f8e113a48c15d032b1ed56 100644 (file)
[CONF_SG_RXT] = 1200,
[CONF_SG_TXT] = 1000,
[CONF_SG_ADAPTIVE_RXT_TXT] = 1,
- [CONF_SG_GENERAL_USAGE_BIT_MAP] = 3,
+ [CONF_SG_GENERAL_USAGE_BIT_MAP] = 19,
[CONF_SG_HV3_MAX_SERVED] = 6,
[CONF_SG_PS_POLL_TIMEOUT] = 10,
[CONF_SG_UPSD_TIMEOUT] = 10,
hlid);
if (ret < 0)
return;
+
+ ret = wl1271_acx_ap_conn_estab_complete(wl);
+ if (ret < 0)
+ return;
}
}